{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-graph/json-schema/microsoft-graph-microsoft-graph-attendance-record-schema.json",
  "title": "microsoft.graph.attendanceRecord",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/microsoft-graph-communications-onlinemeeting-api-openapi.yml#/components/schemas/microsoft.graph.attendanceRecord",
  "allOf": [
    {
      "$ref": "#/$defs/microsoft.graph.entity"
    },
    {
      "title": "attendanceRecord",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "attendanceIntervals": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.attendanceInterval"
          },
          "description": "List of time periods between joining and leaving a meeting."
        },
        "emailAddress": {
          "type": [
            "string",
            "null"
          ],
          "description": "Email address of the user associated with this attendance record."
        },
        "externalRegistrationInformation": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.virtualEventExternalRegistrationInformation"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The external information for a virtualEventRegistration."
        },
        "identity": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.identity"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The identity of the user associated with this attendance record. The specific type is one of the following derived types of identity, depending on the user type: communicationsUserIdentity, azureCommunicationServicesUserIdentity."
        },
        "registrationId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Unique identifier of a virtualEventRegistration that is available to all participants registered for the virtualEventWebinar."
        },
        "role": {
          "type": [
            "string",
            "null"
          ],
          "description": "Role of the attendee. The possible values are: None, Attendee, Presenter, and Organizer."
        },
        "totalAttendanceInSeconds": {
          "maximum": 2147483647,
          "minimum": -2147483648,
          "type": [
            "number",
            "null"
          ],
          "description": "Total duration of the attendances in seconds.",
          "format": "int32"
        },
        "@odata.type": {
          "type": "string"
        }
      }
    }
  ],
  "x-ms-discriminator-value": "#microsoft.graph.attendanceRecord",
  "$defs": {
    "microsoft.graph.attendanceInterval": {
      "title": "attendanceInterval",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "durationInSeconds": {
          "maximum": 2147483647,
          "minimum": -2147483648,
          "type": [
            "number",
            "null"
          ],
          "description": "Duration of the meeting interval in seconds; that is, the difference between joinDateTime and leaveDateTime.",
          "format": "int32"
        },
        "joinDateTime": {
          "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
          "type": [
            "string",
            "null"
          ],
          "description": "The time the attendee joined in UTC.",
          "format": "date-time"
        },
        "leaveDateTime": {
          "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
          "type": [
            "string",
            "null"
          ],
          "description": "The time the attendee left in UTC.",
          "format": "date-time"
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.entity": {
      "title": "entity",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The unique identifier for an entity. Read-only."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.identity": {
      "title": "identity",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "displayName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The display name of the identity.For drive items, the display name might not always be available or up to date. For example, if a user changes their display name the API might show the new value in a future response, but the items associated with the user don't show up as changed when using delta."
        },
        "id": {
          "type": [
            "string",
            "null"
          ],
          "description": "Unique identifier for the identity or actor. For example, in the access reviews decisions API, this property might record the id of the principal, that is, the group, user, or application that's subject to review."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.virtualEventExternalRegistrationInformation": {
      "title": "virtualEventExternalRegistrationInformation",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "referrer": {
          "type": [
            "string",
            "null"
          ],
          "description": "A URL or string that represents the location from which the registrant registered. Optional."
        },
        "registrationId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The identifier for a virtualEventExternalRegistrationInformation object. Optional. If set, the maximum supported length is 256 characters."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    }
  }
}