{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/azure-ad/json-schema/azure-ad-microsoft-graph-on-attribute-collection-external-users-self-service-sign-up-schema.json",
  "title": "microsoft.graph.onAttributeCollectionExternalUsersSelfServiceSignUp",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/azure-ad-identity-authenticationeventsflow-api-openapi.yml#/components/schemas/microsoft.graph.onAttributeCollectionExternalUsersSelfServiceSignUp",
  "allOf": [
    {
      "$ref": "#/$defs/microsoft.graph.onAttributeCollectionHandler"
    },
    {
      "title": "onAttributeCollectionExternalUsersSelfServiceSignUp",
      "type": "object",
      "properties": {
        "attributeCollectionPage": {
          "$ref": "#/$defs/microsoft.graph.authenticationAttributeCollectionPage"
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.identityUserFlowAttribute"
          },
          "x-ms-navigationProperty": true
        }
      },
      "additionalProperties": {
        "type": "object"
      }
    }
  ],
  "$defs": {
    "microsoft.graph.authenticationAttributeCollectionInputConfiguration": {
      "title": "authenticationAttributeCollectionInputConfiguration",
      "type": "object",
      "properties": {
        "attribute": {
          "type": "string",
          "description": "The built-in or custom attribute for which a value is being collected."
        },
        "defaultValue": {
          "type": [
            "string",
            "null"
          ],
          "description": "The default value of the attribute displayed to the end user. The capability to set the default value isn't available through the Microsoft Entra admin center."
        },
        "editable": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Defines whether the attribute is editable by the end user."
        },
        "hidden": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Defines whether the attribute is displayed to the end user. The capability to hide isn't available through the Microsoft Entra admin center."
        },
        "inputType": {
          "$ref": "#/$defs/microsoft.graph.authenticationAttributeCollectionInputType"
        },
        "label": {
          "type": "string",
          "description": "The label of the attribute field that's displayed to end user, unless overridden."
        },
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.authenticationAttributeCollectionOptionConfiguration"
          },
          "description": "The option values for certain multiple-option input types."
        },
        "required": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Defines whether the field is required."
        },
        "validationRegEx": {
          "type": [
            "string",
            "null"
          ],
          "description": "The regex for the value of the field. For more information about the supported regexes, see validationRegEx values for inputType objects. To understand how to specify regexes, see the Regular expressions cheat sheet."
        },
        "writeToDirectory": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Defines whether Microsoft Entra ID stores the value that it collects."
        }
      },
      "additionalProperties": {
        "type": "object"
      }
    },
    "microsoft.graph.authenticationAttributeCollectionInputType": {
      "title": "authenticationAttributeCollectionInputType",
      "enum": [
        "text",
        "radioSingleSelect",
        "checkboxMultiSelect",
        "boolean",
        "unknownFutureValue"
      ],
      "type": "string"
    },
    "microsoft.graph.authenticationAttributeCollectionOptionConfiguration": {
      "title": "authenticationAttributeCollectionOptionConfiguration",
      "type": "object",
      "properties": {
        "label": {
          "type": "string",
          "description": "The label of the option that will be displayed to user, unless overridden."
        },
        "value": {
          "type": "string",
          "description": "The value of the option that will be stored."
        }
      },
      "additionalProperties": {
        "type": "object"
      }
    },
    "microsoft.graph.authenticationAttributeCollectionPage": {
      "title": "authenticationAttributeCollectionPage",
      "type": "object",
      "properties": {
        "views": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.authenticationAttributeCollectionPageViewConfiguration"
          },
          "description": "A collection of displays of the attribute collection page."
        }
      },
      "additionalProperties": {
        "type": "object"
      }
    },
    "microsoft.graph.authenticationAttributeCollectionPageViewConfiguration": {
      "title": "authenticationAttributeCollectionPageViewConfiguration",
      "type": "object",
      "properties": {
        "description": {
          "type": [
            "string",
            "null"
          ],
          "description": "The description of the page."
        },
        "inputs": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.authenticationAttributeCollectionInputConfiguration"
          },
          "description": "The display configuration of attributes being collected on the attribute collection page. You must specify all attributes that you want to retain, otherwise they're removed from the user flow."
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "description": "The title of the attribute collection page."
        }
      },
      "additionalProperties": {
        "type": "object"
      }
    },
    "microsoft.graph.entity": {
      "title": "entity",
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The unique identifier for an entity. Read-only."
        }
      },
      "additionalProperties": {
        "type": "object"
      }
    },
    "microsoft.graph.identityUserFlowAttribute": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "identityUserFlowAttribute",
          "type": "object",
          "properties": {
            "dataType": {
              "$ref": "#/$defs/microsoft.graph.identityUserFlowAttributeDataType"
            },
            "description": {
              "type": [
                "string",
                "null"
              ],
              "description": "The description of the user flow attribute that's shown to the user at the time of sign up."
            },
            "displayName": {
              "type": [
                "string",
                "null"
              ],
              "description": "The display name of the user flow attribute.  Supports $filter (eq, ne)."
            },
            "userFlowAttributeType": {
              "$ref": "#/$defs/microsoft.graph.identityUserFlowAttributeType"
            }
          },
          "additionalProperties": {
            "type": "object"
          }
        }
      ]
    },
    "microsoft.graph.identityUserFlowAttributeDataType": {
      "title": "identityUserFlowAttributeDataType",
      "enum": [
        "string",
        "boolean",
        "int64",
        "stringCollection",
        "dateTime",
        "unknownFutureValue"
      ],
      "type": "string"
    },
    "microsoft.graph.identityUserFlowAttributeType": {
      "title": "identityUserFlowAttributeType",
      "enum": [
        "builtIn",
        "custom",
        "required",
        "unknownFutureValue"
      ],
      "type": "string"
    },
    "microsoft.graph.onAttributeCollectionHandler": {
      "title": "onAttributeCollectionHandler",
      "type": "object",
      "additionalProperties": {
        "type": "object"
      }
    }
  }
}