{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-graph/json-schema/microsoft-graph-microsoft-graph-call-records-direct-routing-log-row-schema.json",
  "title": "directRoutingLogRow",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/microsoft-graph-communications-callrecord-api-openapi.yml#/components/schemas/microsoft.graph.callRecords.directRoutingLogRow",
  "required": [
    "@odata.type"
  ],
  "type": "object",
  "properties": {
    "calleeNumber": {
      "type": [
        "string",
        "null"
      ],
      "description": "Number of the user or bot who received the call. E.164 format, but might include other data."
    },
    "callEndSubReason": {
      "maximum": 2147483647,
      "minimum": -2147483648,
      "type": [
        "number",
        "null"
      ],
      "description": "In addition to the SIP codes, Microsoft has subcodes that indicate the specific issue.",
      "format": "int32"
    },
    "callerNumber": {
      "type": [
        "string",
        "null"
      ],
      "description": "Number of the user or bot who made the call. E.164 format, but might include other data."
    },
    "callType": {
      "type": [
        "string",
        "null"
      ],
      "description": "Call type and direction."
    },
    "correlationId": {
      "type": [
        "string",
        "null"
      ],
      "description": "Identifier for the call that you can use when calling Microsoft Support. GUID."
    },
    "duration": {
      "maximum": 2147483647,
      "minimum": -2147483648,
      "type": [
        "number",
        "null"
      ],
      "description": "Duration of the call in seconds.",
      "format": "int32"
    },
    "endDateTime": {
      "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": "Only exists for successful (fully established) calls. Time when call ended.",
      "format": "date-time"
    },
    "failureDateTime": {
      "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": "Only exists for failed (not fully established) calls.",
      "format": "date-time"
    },
    "finalSipCode": {
      "maximum": 2147483647,
      "minimum": -2147483648,
      "type": [
        "number",
        "null"
      ],
      "description": "The final response code with which the call ended. For more information, see RFC 3261.",
      "format": "int32"
    },
    "finalSipCodePhrase": {
      "type": [
        "string",
        "null"
      ],
      "description": "Description of the SIP code and Microsoft subcode."
    },
    "id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Unique call identifier. GUID."
    },
    "inviteDateTime": {
      "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 date and time when the initial invite was sent.",
      "format": "date-time"
    },
    "mediaBypassEnabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Indicates whether the trunk was enabled for media bypass."
    },
    "mediaPathLocation": {
      "type": [
        "string",
        "null"
      ],
      "description": "The datacenter used for media path in a nonbypass call."
    },
    "signalingLocation": {
      "type": [
        "string",
        "null"
      ],
      "description": "The datacenter used for signaling for both bypass and nonbypass calls."
    },
    "startDateTime": {
      "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": "Call start time.For failed and unanswered calls, this value can be equal to the invite or failure time.",
      "format": "date-time"
    },
    "successfulCall": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Success or attempt."
    },
    "trunkFullyQualifiedDomainName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Fully qualified domain name of the session border controller."
    },
    "userDisplayName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Display name of the user."
    },
    "userId": {
      "type": [
        "string",
        "null"
      ],
      "description": "Calling user's ID in Microsoft Graph. This and other user information is null/empty for bot call types. GUID."
    },
    "userPrincipalName": {
      "type": [
        "string",
        "null"
      ],
      "description": "UserPrincipalName (sign-in name) in Microsoft Entra ID. This value is usually the same as the user's SIP Address, and can be the same as the user's email address."
    },
    "@odata.type": {
      "type": "string"
    }
  }
}