{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-graph/json-schema/microsoft-graph-microsoft-graph-call-records-pstn-call-log-row-schema.json",
  "title": "pstnCallLogRow",
  "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.pstnCallLogRow",
  "required": [
    "@odata.type"
  ],
  "type": "object",
  "properties": {
    "callDurationSource": {
      "anyOf": [
        {
          "$ref": "#/$defs/microsoft.graph.callRecords.pstnCallDurationSource"
        },
        {
          "type": [
            "object",
            "null"
          ]
        }
      ],
      "description": "The source of the call duration data. If the call uses a third-party telecommunications operator via the Operator Connect Program, the operator can provide their own call duration data. In this case, the property value is operator. Otherwise, the value is microsoft."
    },
    "calleeNumber": {
      "type": [
        "string",
        "null"
      ],
      "description": "Number dialed in E.164 format."
    },
    "callerNumber": {
      "type": [
        "string",
        "null"
      ],
      "description": "Number that received the call for inbound calls or the number dialed for outbound calls. E.164 format."
    },
    "callId": {
      "type": [
        "string",
        "null"
      ],
      "description": "Call identifier. Not guaranteed to be unique."
    },
    "callType": {
      "type": [
        "string",
        "null"
      ],
      "description": "Indicates whether the call was a PSTN outbound or inbound call and the type of call, such as a call placed by a user or an audio conference."
    },
    "charge": {
      "type": [
        "number",
        "null"
      ],
      "description": "Amount of money or cost of the call that is charged to your account.",
      "format": "decimal"
    },
    "conferenceId": {
      "type": [
        "string",
        "null"
      ],
      "description": "ID of the audio conference."
    },
    "connectionCharge": {
      "type": [
        "number",
        "null"
      ],
      "description": "Connection fee price.",
      "format": "decimal"
    },
    "currency": {
      "type": [
        "string",
        "null"
      ],
      "description": "Type of currency used to calculate the cost of the call. For details, see (ISO 4217."
    },
    "destinationContext": {
      "type": [
        "string",
        "null"
      ],
      "description": "Whether the call was domestic (within a country or region) or international (outside a country or region), based on the user's location."
    },
    "destinationName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Country or region dialed."
    },
    "duration": {
      "maximum": 2147483647,
      "minimum": -2147483648,
      "type": [
        "number",
        "null"
      ],
      "description": "How long the call was connected, 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": "Call end time.",
      "format": "date-time"
    },
    "id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Unique call identifier. GUID."
    },
    "inventoryType": {
      "type": [
        "string",
        "null"
      ],
      "description": "User's phone number type, such as a service of toll-free number."
    },
    "licenseCapability": {
      "type": [
        "string",
        "null"
      ],
      "description": "The license used for the call."
    },
    "operator": {
      "type": [
        "string",
        "null"
      ],
      "description": "The telecommunications operator which provided PSTN services for this call. This might be Microsoft, or it might be a third-party operator via the Operator Connect Program."
    },
    "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.",
      "format": "date-time"
    },
    "tenantCountryCode": {
      "type": [
        "string",
        "null"
      ],
      "description": "Country code of the tenant. For details, see ISO 3166-1 alpha-2."
    },
    "usageCountryCode": {
      "type": [
        "string",
        "null"
      ],
      "description": "Country code of the user. For details, see ISO 3166-1 alpha-2."
    },
    "userDisplayName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Display name of the user."
    },
    "userId": {
      "type": [
        "string",
        "null"
      ],
      "description": "Calling user's ID in Microsoft Graph. GUID. This and other user info will be null/empty for bot call types (ucapin, ucapout)."
    },
    "userPrincipalName": {
      "type": [
        "string",
        "null"
      ],
      "description": "The user principal name (sign-in name) in Microsoft Entra ID. This 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"
    }
  },
  "$defs": {
    "microsoft.graph.callRecords.pstnCallDurationSource": {
      "title": "pstnCallDurationSource",
      "enum": [
        "microsoft",
        "operator"
      ],
      "type": "string"
    }
  }
}