{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/webex/json-schema/webex-recording-object-with-direct-download-links-schema.json",
  "title": "RecordingObjectWithDirectDownloadLinks",
  "description": "Recording details by ID",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/webex-converged-recordings-api-openapi.yml#/components/schemas/RecordingObjectWithDirectDownloadLinks",
  "type": "object",
  "required": [
    "id",
    "topic",
    "createTime",
    "timeRecorded",
    "format",
    "serviceType",
    "durationSeconds",
    "sizeBytes",
    "status",
    "ownerId",
    "ownerEmail",
    "ownerType",
    "storageRegion"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "A unique identifier for recording."
    },
    "topic": {
      "type": "string",
      "description": "The recording's topic."
    },
    "createTime": {
      "type": "string",
      "description": "The date and time recording was created in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. Please note that it's not the time the record button was clicked in meeting but the time the recording file was generated offline."
    },
    "timeRecorded": {
      "type": "string",
      "description": "The date and time recording started in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. It indicates when the record button was clicked in the meeting."
    },
    "format": {
      "type": "string",
      "enum": [
        "MP3"
      ],
      "description": " * `MP3` - Recording file format is MP3.\n"
    },
    "serviceType": {
      "type": "string",
      "enum": [
        "calling",
        "customerAssist"
      ],
      "description": " * `calling` - Recording service-type is calling.\n * `customerAssist` - Call Recordings of a Customer Assist Queue.\n"
    },
    "durationSeconds": {
      "type": "number",
      "description": "The duration of the recording in seconds."
    },
    "sizeBytes": {
      "type": "number",
      "description": "The size of the recording file in bytes."
    },
    "temporaryDirectDownloadLinks": {
      "type": "object",
      "properties": {
        "audioDownloadLink": {
          "type": "string",
          "description": "The download link for recording audio file without HTML page rendering in browser or HTTP redirect.  Expires 3 hours after the API request."
        },
        "transcriptDownloadLink": {
          "type": "string",
          "description": "The download link for recording transcript file without HTML page rendering in browser or HTTP redirect.  Expires 3 hours after the API request."
        },
        "suggestedNotesDownloadLink": {
          "type": "string",
          "description": "The download API for recording notes. The user access token is required to download the recording notes. Expires 3 hours after the API request."
        },
        "shortNotesDownloadLink": {
          "type": "string",
          "description": "The download API for recording short notes. The user access token is required to download the recording short notes. Expires 3 hours after the API request."
        },
        "actionItemsDownloadLink": {
          "type": "string",
          "description": "The download API for recording action items. The user access token is required to download the recording action items. Expires 3 hours after the API request."
        },
        "expiration": {
          "type": "string",
          "description": "The date and time when `recordingDownloadLink`, `audioDownloadLink`, `transcriptDownloadLink`, `suggestedNotesDownloadLink`, `shortNotesDownloadLink` and `actionItemsDownloadLink` expire in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."
        }
      },
      "description": "The download links for the MP3 audio of the recordings without rendering an HTML page in a browser or an HTTP redirect. This attribute is available only for authorized users or a [Compliance Officer](/docs/compliance#compliance). This attribute is not available if the user is an admin with scope `spark-admin:recordings_read` or if **Prevent Downloading** has been turned on for the recording being requested."
    },
    "status": {
      "type": "string",
      "enum": [
        "available",
        "deleted",
        "purged"
      ],
      "description": " * `available` - Recording is available.\n * `deleted` - Recording has been moved to the recycle bin.\n * `purged` - Recording has been purged from the recycle bin. Please note that only a compliance officer can access recordings with a `purged` status.\n"
    },
    "ownerId": {
      "type": "string",
      "description": "Webex UUID for recording owner/host."
    },
    "ownerEmail": {
      "type": "string",
      "description": "Webex email for recording owner/host."
    },
    "ownerType": {
      "type": "string",
      "enum": [
        "user",
        "place",
        "virtualLine",
        "callQueue"
      ],
      "description": " * `user` - Recording belongs to a user.\n * `place` - Recording belongs to a workspace device.\n * `virtualLine` - Recording belongs to a workspace device.\n"
    },
    "storageRegion": {
      "type": "string",
      "description": "Storage location for recording within Webex datacenters."
    },
    "serviceData": {
      "type": "object",
      "properties": {
        "locationId": {
          "type": "string",
          "description": "Webex calling location for recording user."
        },
        "callSessionId": {
          "type": "string",
          "description": "Call ID for which recording was done."
        }
      },
      "description": "Fields relevant to each service Type."
    }
  }
}