# Models Some models behave differently and allow for access to different API fields when created via blueprint. ## `authentik_core.token` ### `key` Via the standard API, a token's key cannot be changed, it can only be rotated. This is to ensure a high entropy in its key, and to prevent insecure data from being used. However, when provisioning tokens via a blueprint, it may be required to set a token to an existing value. With blueprints, the field `key` can be set, to set the token's key to any value. For example: ```yaml # [...] - model: authentik_core.token state: present identifiers: identifier: my-token attrs: key: this-should-be-a-long-value user: !KeyOf my-user intent: api ``` ## `authentik_core.user` ### `password` Via the standard API, a user's password can only be set via the separate `/api/v3/core/users//set_password/` endpoint. In blueprints, the password of a user can be set using the `password` field. Keep in mind that if an LDAP Source is configured and the user maps to an LDAP user, this password change will be propagated to the LDAP server. For example: ```yaml # [...] - model: authentik_core.user state: present identifiers: username: test-user attrs: name: test user password: this-should-be-a-long-value ``` ### `permissions` The `permissions` field can be used to set global permissions for a user. A full list of possible permissions is included in the JSON schema for blueprints. For example: ```yaml # [...] - model: authentik_core.user identifiers: username: test-user attrs: permissions: - authentik_blueprints.view_blueprintinstance ``` ## `authentik_core.application` ### `icon` Application icons can be directly set to URLs with the `icon` field. For example: ```yaml # [...] - model: authentik_core.application identifiers: slug: my-app attrs: name: My App icon: https://goauthentik.io/img/icon.png ``` ## `authentik_sources_oauth.oauthsource`, `authentik_sources_saml.samlsource`, `authentik_sources_plex.plexsource` ### `icon` Source icons can be directly set to URLs with the `icon` field. For example: ```yaml # [...] - model: authentik_sources_oauth.oauthsource identifiers: slug: my-source attrs: name: My source icon: https://goauthentik.io/img/icon.png ``` ## `authentik_flows.flow` ### `icon` Flow backgrounds can be directly set to URLs with the `background` field. For example: ```yaml # [...] - model: authentik_flows.flow identifiers: slug: my-flow attrs: name: my-flow title: My flow designation: authentication background: https://goauthentik.io/img/icon.png ``` ## `authentik_rbac.role` ### `permissions` The `permissions` field can be used to set global permissions for a role. A full list of possible permissions is included in the JSON schema for blueprints. For example: ```yaml # [...] - model: authentik_rbac.role identifiers: name: test-role attrs: permissions: - authentik_blueprints.view_blueprintinstance ``` ## `authentik_stages_invitation.invitation`:ak-version[2025.12] The `created_by` field can be set to a user. If no value is given, the internal hidden anonymous user is used. For example: ```yaml # [...] - model: authentik_stages_invitation.invitation identifiers: name: test-invitation attrs: created_by: !Find [authentik_core.user, [username, "my-admin-user"]] ``` ## `authentik_policies.policybinding` ### Required fields Each PolicyBinding entry must have **exactly one** of the following set in `attrs`: - `policy`: Reference to a Policy object - `group`: Reference to a Group object - `user`: Reference to a User object Setting none or multiple in a single binding will cause validation errors. However, you can create multiple separate bindings to the same target with different `order` values. Example with multiple bindings to the same application: ```yaml # Bind a policy - model: authentik_policies.policybinding identifiers: target: !Find [authentik_core.application, [slug, my-app]] order: 0 attrs: policy: !Find [authentik_policies.expression.expressionpolicy, [name, my-policy]] # Bind a group to the same application - model: authentik_policies.policybinding identifiers: target: !Find [authentik_core.application, [slug, my-app]] order: 1 attrs: group: !Find [authentik_core.group, [name, admins]] ``` ## `authentik_endpoints_connectors_agent.enrollmenttoken` ### `key` Via the standard API, a token's key cannot be changed, it can only be rotated. This is to ensure a high entropy in its key, and to prevent insecure data from being used. However, when provisioning enrollment tokens via a blueprint, it may be required to set a token to an existing value. With blueprints, the field `key` can be set, to set the enrollment token's key to any value. For example: ```yaml # [...] - model: authentik_endpoints_connectors_agent.enrollmenttoken state: present identifiers: name: my-token attrs: key: this-should-be-a-long-value connector: !KeyOf connector ```