{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "An attestation by a verifier that a subject atproto account is linked to an identity, community, or role in an external service. Paired with a matching agency.portable.membership record on the subject's PDS.",
      "key": "any",
      "record": {
        "properties": {
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "revokedAt": {
            "description": "If present, indicates when this attestation was revoked (e.g. the subject lost the role). Absence means the attestation is currently active.",
            "format": "datetime",
            "type": "string"
          },
          "role": {
            "description": "Optional role, rank, or status within the service or community (e.g. 'admin', 'maintainer', 'fascinator').",
            "type": "string"
          },
          "service": {
            "ref": "#service",
            "type": "ref"
          },
          "subject": {
            "description": "DID of the atproto account this attestation is about.",
            "format": "did",
            "type": "string"
          }
        },
        "required": [
          "subject",
          "service",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "service": {
      "description": "Identifies an external service and, optionally, a specific community and identity within it.",
      "properties": {
        "community": {
          "description": "Optional identifier for a specific group, server, workspace, or organization within the service (e.g. a Discord guild ID, a GitHub org slug).",
          "type": "string"
        },
        "identifier": {
          "description": "Optional external identity within the service (e.g. a user ID or handle). Include when proving platform identity; may be omitted when only proving community or role membership.",
          "type": "string"
        },
        "type": {
          "description": "External service identifier (e.g. 'discord', 'github', 'slack').",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "id": "agency.portable.attestation",
  "lexicon": 1
}
