{
  "type": "record",
  "Aspect": {
    "name": "inviteToken"
  },
  "name": "InviteToken",
  "namespace": "com.linkedin.pegasus2avro.identity",
  "fields": [
    {
      "type": "string",
      "name": "token",
      "doc": "The encrypted invite token."
    },
    {
      "Searchable": {
        "fieldName": "role",
        "fieldType": "KEYWORD",
        "hasValuesFieldName": "hasRole"
      },
      "java": {
        "class": "com.linkedin.pegasus2avro.common.urn.Urn"
      },
      "type": [
        "null",
        "string"
      ],
      "name": "role",
      "default": null,
      "doc": "The role that this invite token may be associated with",
      "Urn": "Urn"
    },
    {
      "Searchable": {
        "fieldName": "tokenType",
        "fieldType": "KEYWORD"
      },
      "type": [
        {
          "type": "enum",
          "symbolDocs": {
            "INDIVIDUAL": "Individual token generated for bulk invitations. Single-use, consumed on signup.",
            "SHARED": "Shared token that admin can copy and share manually. Reusable until admin regenerates."
          },
          "name": "TokenType",
          "namespace": "com.linkedin.pegasus2avro.identity",
          "symbols": [
            "SHARED",
            "INDIVIDUAL"
          ],
          "doc": "Token types for different invitation workflows"
        },
        "null"
      ],
      "name": "tokenType",
      "default": "SHARED",
      "doc": "The type of invite token - shared (admin managed) or individual (single-use)"
    }
  ],
  "doc": "Aspect used to store invite tokens."
}