{
    "$schema": "http://json-schema.org/draft-07/schema",
    "$id": "http://example.com/example.json",
    "type": "object",
    "title": "authentik Blueprint schema",
    "default": {},
    "required": [
        "version",
        "entries"
    ],
    "properties": {
        "version": {
            "$id": "#/properties/version",
            "type": "integer",
            "title": "Blueprint version",
            "default": 1
        },
        "metadata": {
            "$id": "#/properties/metadata",
            "type": "object",
            "required": [
                "name"
            ],
            "properties": {
                "name": {
                    "type": "string"
                },
                "labels": {
                    "type": "object"
                }
            }
        },
        "context": {
            "$id": "#/properties/context",
            "type": "object",
            "additionalProperties": true
        },
        "entries": {
            "type": "array",
            "items": {
                "$id": "#entry",
                "type": "object",
                "required": [
                    "model"
                ],
                "properties": {
                    "model": {
                        "type": "string",
                        "enum": [
                            "authentik_blueprints.blueprintinstance",
                            "authentik_blueprints.metaapplyblueprint",
                            "authentik_core.application",
                            "authentik_core.group",
                            "authentik_core.token",
                            "authentik_core.user",
                            "authentik_crypto.certificatekeypair",
                            "authentik_events.event",
                            "authentik_events.notification",
                            "authentik_events.notificationrule",
                            "authentik_events.notificationtransport",
                            "authentik_events.notificationwebhookmapping",
                            "authentik_flows.flow",
                            "authentik_flows.flowstagebinding",
                            "authentik_outposts.dockerserviceconnection",
                            "authentik_outposts.kubernetesserviceconnection",
                            "authentik_outposts.outpost",
                            "authentik_policies.policybinding",
                            "authentik_policies_dummy.dummypolicy",
                            "authentik_policies_event_matcher.eventmatcherpolicy",
                            "authentik_policies_expiry.passwordexpirypolicy",
                            "authentik_policies_expression.expressionpolicy",
                            "authentik_policies_hibp.haveibeenpwendpolicy",
                            "authentik_policies_password.passwordpolicy",
                            "authentik_policies_reputation.reputation",
                            "authentik_policies_reputation.reputationpolicy",
                            "authentik_providers_ldap.ldapprovider",
                            "authentik_providers_oauth2.authorizationcode",
                            "authentik_providers_oauth2.oauth2provider",
                            "authentik_providers_oauth2.refreshtoken",
                            "authentik_providers_oauth2.scopemapping",
                            "authentik_providers_proxy.proxyprovider",
                            "authentik_providers_saml.samlpropertymapping",
                            "authentik_providers_saml.samlprovider",
                            "authentik_sources_ldap.ldappropertymapping",
                            "authentik_sources_ldap.ldapsource",
                            "authentik_sources_oauth.oauthsource",
                            "authentik_sources_oauth.useroauthsourceconnection",
                            "authentik_sources_plex.plexsource",
                            "authentik_sources_plex.plexsourceconnection",
                            "authentik_sources_saml.samlsource",
                            "authentik_sources_saml.usersamlsourceconnection",
                            "authentik_stages_authenticator_duo.authenticatorduostage",
                            "authentik_stages_authenticator_duo.duodevice",
                            "authentik_stages_authenticator_sms.authenticatorsmsstage",
                            "authentik_stages_authenticator_sms.smsdevice",
                            "authentik_stages_authenticator_static.authenticatorstaticstage",
                            "authentik_stages_authenticator_totp.authenticatortotpstage",
                            "authentik_stages_authenticator_validate.authenticatorvalidatestage",
                            "authentik_stages_authenticator_webauthn.authenticatewebauthnstage",
                            "authentik_stages_authenticator_webauthn.webauthndevice",
                            "authentik_stages_captcha.captchastage",
                            "authentik_stages_consent.consentstage",
                            "authentik_stages_consent.userconsent",
                            "authentik_stages_deny.denystage",
                            "authentik_stages_dummy.dummystage",
                            "authentik_stages_email.emailstage",
                            "authentik_stages_identification.identificationstage",
                            "authentik_stages_invitation.invitation",
                            "authentik_stages_invitation.invitationstage",
                            "authentik_stages_password.passwordstage",
                            "authentik_stages_prompt.prompt",
                            "authentik_stages_prompt.promptstage",
                            "authentik_stages_user_delete.userdeletestage",
                            "authentik_stages_user_login.userloginstage",
                            "authentik_stages_user_logout.userlogoutstage",
                            "authentik_stages_user_write.userwritestage",
                            "authentik_tenants.tenant"
                        ]
                    },
                    "id": {
                        "type": "string"
                    },
                    "state": {
                        "type": "string",
                        "enum": [
                            "absent",
                            "present",
                            "created"
                        ],
                        "default": "present"
                    },
                    "conditions": {
                        "type": "array",
                        "items": {
                            "type": "boolean"
                        }
                    },
                    "attrs": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "type": "string",
                                "description": "Commonly available field, may not exist on all models"
                            }
                        },
                        "default": {},
                        "additionalProperties": true
                    },
                    "identifiers": {
                        "type": "object",
                        "default": {},
                        "properties": {
                            "pk": {
                                "description": "Commonly available field, may not exist on all models",
                                "anyOf": [
                                    {
                                        "type": "number"
                                    },
                                    {
                                        "type": "string",
                                        "format": "uuid"
                                    }
                                ]
                            }
                        },
                        "additionalProperties": true
                    }
                }
            }
        }
    }
}