{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/sonetel/main/json-schema/sonetel-call-recording-list-schema.json",
  "title": "Call-recording-list",
  "x-generated": "2026-10-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/sonetel-recorded-calls-openapi.yml#/components/schemas/Call-recording-list",
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "description": "The name of the resource this response is from.",
      "minLength": 1
    },
    "status": {
      "type": "string",
      "description": "The status of the response i.e. success or failed.",
      "minLength": 1
    },
    "response": {
      "type": "array",
      "description": "Response object with the details of the call recordings",
      "minItems": 1,
      "uniqueItems": true,
      "items": {
        "type": "object",
        "properties": {
          "call_recording_id": {
            "type": "string",
            "description": "Unique ID assigned to identify each call recording.",
            "minLength": 1
          },
          "type": {
            "type": "string",
            "description": "The type of call recording. Only `voice_call` supported at the moment.",
            "minLength": 1
          },
          "account_id": {
            "type": "number",
            "description": "Your Sonetel account ID"
          },
          "user_id": {
            "type": "string",
            "description": "If the call recording is assigned to a user, this property lists the user_id."
          },
          "created_date": {
            "type": "string",
            "description": "The timestamp when the call recording was created.",
            "minLength": 1
          },
          "file": {
            "type": "object",
            "description": "Details of the call recording file object such as the size, download URL and so on.",
            "properties": {
              "type": {
                "type": "string",
                "description": "File type such as mp3, etc.",
                "minLength": 1
              },
              "size": {
                "type": "number",
                "description": "File size in bytes."
              },
              "file_id": {
                "type": "string",
                "description": "Unique file ID.",
                "minLength": 1
              },
              "file_access_details": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "Link to download the file.",
                    "minLength": 1
                  },
                  "issued_at": {
                    "type": "string",
                    "description": "Timestamp when the download link was created.",
                    "minLength": 1
                  },
                  "expires_at": {
                    "type": "string",
                    "description": "Timestamp when the download link will expire.",
                    "minLength": 1
                  }
                },
                "required": [
                  "url",
                  "issued_at",
                  "expires_at"
                ]
              }
            },
            "required": [
              "type",
              "size",
              "file_id",
              "file_access_details"
            ]
          },
          "voice_call_details": {
            "type": "object",
            "description": "Details of the call that was recorded.",
            "properties": {
              "from": {
                "type": "string",
                "description": "'The entity that initiated the call. Can be a PSTN number, a user, etc.",
                "minLength": 1
              },
              "to": {
                "type": "string",
                "description": "The entity to which the call was placed.",
                "minLength": 1
              },
              "codec": {
                "type": "string",
                "description": "The codec that was use to connect the call.",
                "minLength": 1
              },
              "usage_record_id": {
                "type": "number",
                "description": "Unique ID assigned to this call record (CDR)"
              },
              "start_time": {
                "type": "string",
                "description": "The time when the call started."
              },
              "end_time": {
                "type": "string",
                "description": "The time when the call ended.",
                "minLength": 1
              },
              "call_length": {
                "type": "number",
                "description": "The duration of the call in seconds."
              },
              "from_type": {
                "type": "string",
                "description": "The type of entity that initiated the call. For example `user`, `phonenumber`.",
                "minLength": 1
              },
              "from_name": {
                "type": "string",
                "description": "If a user initiated the call, their name is listed here otherwise it shows the phone number of the source.",
                "minLength": 1
              },
              "caller_id": {
                "type": "string",
                "description": "The caller ID that was displayed to the recipient.",
                "minLength": 1
              },
              "to_type": {
                "type": "string",
                "description": "The entity that answered the call such as `user`, `phonenumber`, etc.",
                "minLength": 1
              },
              "to_name": {
                "type": "string",
                "description": "A name or phone number identifying the destination.",
                "minLength": 1
              },
              "to_orig": {
                "type": "string",
                "description": "A unique identifier for the destination.",
                "minLength": 1
              }
            },
            "required": [
              "from",
              "to",
              "codec",
              "usage_record_id",
              "start_time",
              "end_time",
              "call_length",
              "from_type",
              "from_name",
              "caller_id",
              "to_type",
              "to_name",
              "to_orig"
            ]
          },
          "summary": {
            "$ref": "#/$defs/Call-summary",
            "description": "The Sonetel AI generated call summary.\r\nIf this object is not included in the response, it indicates that the summary was not requested or possible"
          }
        },
        "required": [
          "call_recording_id",
          "type",
          "account_id",
          "user_id",
          "created_date"
        ]
      }
    }
  },
  "required": [
    "resource",
    "status",
    "response"
  ],
  "$defs": {
    "Call-summary": {
      "type": "object",
      "title": "Call-summary",
      "description": "Call summary generated by Sonetel AI",
      "properties": {
        "text_id": {
          "type": "string",
          "description": "The unique `text_id` of the call summary.\r\nThe text_id can be used to retrieve details of the summary from the [Sonetel Text manager](reference/13_ai_textmanager.yaml)",
          "readOnly": true
        },
        "file_id": {
          "type": "string",
          "description": "The unique `file_id` of the call recording in the [Sonetel file manager](reference/15_ai_filemanager.yaml)\r\nFile_id is used by Sonetel AI services as a reference to the call recording for generating summaries.",
          "readOnly": true
        },
        "about": {
          "type": "string",
          "description": "A short Sonetel AI generated string that identifies what the call is about.",
          "readOnly": true
        },
        "score": {
          "type": "number",
          "description": "A score(1 to 5) assigned by Sonetel AI to the call recording based on an analysis of the call.",
          "format": "float",
          "minimum": 0,
          "maximum": 5,
          "readOnly": true
        },
        "status": {
          "type": "string",
          "enum": [
            "not_requested",
            "in_progress",
            "ready",
            "failed",
            "retry"
          ],
          "description": "The status of the call summary generation\r\n\r\n`not_requested`: The summary has not yet been not_requested\r\n\r\n`in_progress`: The summary generation is in progress\r\n\r\n`ready`: The summary is ready. The summary can be fetched using the `text_id` from the [text manager](reference/13_ai_textmanager.yaml)\r\n\r\n`failed`: The summary was requested and has failed. It is not possible to summarize this recording.\r\n\r\n`retry`: The summary was requested and failed. The summary can be requested again.",
          "readOnly": true
        },
        "error_code": {
          "type": "string",
          "description": "An error code that identifies the last error during summary generation."
        },
        "error_date": {
          "type": "string",
          "description": "The date and time when the last error occured during summary generation",
          "format": "date-time"
        }
      }
    }
  }
}