{
"id": "app.bsky.ageassurance.defs",
"defs": {
"event": {
"type": "object",
"required": [
"createdAt",
"status",
"access",
"attemptId",
"countryCode"
],
"properties": {
"email": {
"type": "string",
"description": "The email used for Age Assurance."
},
"access": {
"type": "string",
"description": "The access level granted based on Age Assurance data we've processed.",
"knownValues": [
"unknown",
"none",
"safe",
"full"
]
},
"initIp": {
"type": "string",
"description": "The IP address used when initiating the Age Assurance flow."
},
"initUa": {
"type": "string",
"description": "The user agent used when initiating the Age Assurance flow."
},
"status": {
"type": "string",
"description": "The status of the Age Assurance process.",
"knownValues": [
"unknown",
"pending",
"assured",
"blocked"
]
},
"attemptId": {
"type": "string",
"description": "The unique identifier for this instance of the Age Assurance flow, in UUID format."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "The date and time of this write operation."
},
"completeIp": {
"type": "string",
"description": "The IP address used when completing the Age Assurance flow."
},
"completeUa": {
"type": "string",
"description": "The user agent used when completing the Age Assurance flow."
},
"regionCode": {
"type": "string",
"description": "The ISO 3166-2 region code provided when beginning the Age Assurance flow."
},
"countryCode": {
"type": "string",
"description": "The ISO 3166-1 alpha-2 country code provided when beginning the Age Assurance flow."
}
},
"description": "Object used to store Age Assurance data in stash."
},
"state": {
"type": "object",
"required": [
"status",
"access"
],
"properties": {
"access": {
"ref": "app.bsky.ageassurance.defs#access",
"type": "ref"
},
"status": {
"ref": "app.bsky.ageassurance.defs#status",
"type": "ref"
},
"lastInitiatedAt": {
"type": "string",
"format": "datetime",
"description": "The timestamp when this state was last updated."
}
},
"description": "The user's computed Age Assurance state."
},
"access": {
"type": "string",
"description": "The access level granted based on Age Assurance data we've processed.",
"knownValues": [
"unknown",
"none",
"safe",
"full"
]
},
"config": {
"type": "object",
"required": [
"regions"
],
"properties": {
"regions": {
"type": "array",
"items": {
"ref": "app.bsky.ageassurance.defs#configRegion",
"type": "ref"
},
"description": "The per-region Age Assurance configuration."
}
},
"description": ""
},
"status": {
"type": "string",
"description": "The status of the Age Assurance process.",
"knownValues": [
"unknown",
"pending",
"assured",
"blocked"
]
},
"configRegion": {
"type": "object",
"required": [
"countryCode",
"rules"
],
"properties": {
"rules": {
"type": "array",
"items": {
"refs": [
"#configRegionRuleDefault",
"#configRegionRuleIfDeclaredOverAge",
"#configRegionRuleIfDeclaredUnderAge",
"#configRegionRuleIfAssuredOverAge",
"#configRegionRuleIfAssuredUnderAge",
"#configRegionRuleIfAccountNewerThan",
"#configRegionRuleIfAccountOlderThan"
],
"type": "union"
},
"description": "The ordered list of Age Assurance rules that apply to this region. Rules should be applied in order, and the first matching rule determines the access level granted. The rules array should always include a default rule as the last item."
},
"regionCode": {
"type": "string",
"description": "The ISO 3166-2 region code this configuration applies to. If omitted, the configuration applies to the entire country."
},
"countryCode": {
"type": "string",
"description": "The ISO 3166-1 alpha-2 country code this configuration applies to."
}
},
"description": "The Age Assurance configuration for a specific region."
},
"stateMetadata": {
"type": "object",
"required": [],
"properties": {
"accountCreatedAt": {
"type": "string",
"format": "datetime",
"description": "The account creation timestamp."
}
},
"description": "Additional metadata needed to compute Age Assurance state client-side."
},
"configRegionRuleDefault": {
"type": "object",
"required": [
"access"
],
"properties": {
"access": {
"ref": "app.bsky.ageassurance.defs#access",
"type": "ref"
}
},
"description": "Age Assurance rule that applies by default."
},
"configRegionRuleIfAssuredOverAge": {
"type": "object",
"required": [
"age",
"access"
],
"properties": {
"age": {
"type": "integer",
"description": "The age threshold as a whole integer."
},
"access": {
"ref": "app.bsky.ageassurance.defs#access",
"type": "ref"
}
},
"description": "Age Assurance rule that applies if the user has been assured to be equal-to or over a certain age."
},
"configRegionRuleIfAssuredUnderAge": {
"type": "object",
"required": [
"age",
"access"
],
"properties": {
"age": {
"type": "integer",
"description": "The age threshold as a whole integer."
},
"access": {
"ref": "app.bsky.ageassurance.defs#access",
"type": "ref"
}
},
"description": "Age Assurance rule that applies if the user has been assured to be under a certain age."
},
"configRegionRuleIfDeclaredOverAge": {
"type": "object",
"required": [
"age",
"access"
],
"properties": {
"age": {
"type": "integer",
"description": "The age threshold as a whole integer."
},
"access": {
"ref": "app.bsky.ageassurance.defs#access",
"type": "ref"
}
},
"description": "Age Assurance rule that applies if the user has declared themselves equal-to or over a certain age."
},
"configRegionRuleIfAccountNewerThan": {
"type": "object",
"required": [
"date",
"access"
],
"properties": {
"date": {
"type": "string",
"format": "datetime",
"description": "The date threshold as a datetime string."
},
"access": {
"ref": "app.bsky.ageassurance.defs#access",
"type": "ref"
}
},
"description": "Age Assurance rule that applies if the account is equal-to or newer than a certain date."
},
"configRegionRuleIfAccountOlderThan": {
"type": "object",
"required": [
"date",
"access"
],
"properties": {
"date": {
"type": "string",
"format": "datetime",
"description": "The date threshold as a datetime string."
},
"access": {
"ref": "app.bsky.ageassurance.defs#access",
"type": "ref"
}
},
"description": "Age Assurance rule that applies if the account is older than a certain date."
},
"configRegionRuleIfDeclaredUnderAge": {
"type": "object",
"required": [
"age",
"access"
],
"properties": {
"age": {
"type": "integer",
"description": "The age threshold as a whole integer."
},
"access": {
"ref": "app.bsky.ageassurance.defs#access",
"type": "ref"
}
},
"description": "Age Assurance rule that applies if the user has declared themselves under a certain age."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}