{
  "openapi": "3.1.1",
  "info": {
    "title": "Verbato API",
    "description": "Send recordings, follow them until they are done, and read back their transcripts and the documents their project type writes. Every request carries an API key, as a bearer token in its Authorization header. Each key may make 100 requests a minute and 10,000 a day. A key works only while the account's plan includes the API. On a plan without it, every request the key makes is refused with 403 and the code PLAN_UPGRADE_REQUIRED, and the account's webhooks receive nothing. The key is not revoked: it works again, and the webhooks are called again, once the plan includes the API.",
    "version": "v1",
    "x-rate-limits": {
      "requestsPerMinute": 100,
      "requestsPerDay": 10000
    }
  },
  "paths": {
    "/api/v1/projects/upload-url": {
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Get a URL to upload a file to",
        "description": "Returns a URL to upload one audio or video file to, and the storageKey to create the project with once it is there. Upload the file to the URL with a PUT that carries the Content-Type declared here. The file's size is checked against the plan and its type against the kinds accepted, and the URL expires in 30 minutes.",
        "operationId": "getUploadUrl",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UploadUrlRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadUrlResponseDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects": {
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Create a project",
        "description": "Creates a project from a recording and starts it. The recording is a file sent with the request (multipart/form-data), a file already uploaded to the URL from POST /api/v1/projects/upload-url (storageKey), or a link (sourceUrl). Once the transcript is done, the project's type writes its documents. When the account's hours do not cover the recording, the project is held (status QuotaBlocked) and starts by itself when they do. When as many recordings are running as the account allows, the request is refused with 429: send it again later.",
        "operationId": "createProject",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProjectRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CreateProjectForm"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "List projects",
        "description": "Returns the account's projects, newest first, a page at a time. A project transcribed again is listed once, as its newest version.",
        "operationId": "listProjects",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page, from 1.",
            "schema": {
              "type": "integer",
              "description": "The page, from 1.",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Projects a page, from 1 to 100.",
            "schema": {
              "type": "integer",
              "description": "Projects a page, from 1 to 100.",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Only projects with this status, such as Completed or Failed.",
            "schema": {
              "type": "string",
              "description": "Only projects with this status, such as Completed or Failed."
            }
          },
          {
            "name": "source",
            "in": "query",
            "description": "Only projects from this source: api for those sent with a key.",
            "schema": {
              "type": "string",
              "description": "Only projects from this source: api for those sent with a key."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Only projects whose title contains this text.",
            "schema": {
              "type": "string",
              "description": "Only projects whose title contains this text."
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "es for the Spanish names of the packs' project types. Left out, English.",
            "schema": {
              "type": "string",
              "description": "es for the Spanish names of the packs' project types. Left out, English."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectListDtoApiListResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{id}": {
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "Get a project",
        "description": "Returns a project: its settings, where it stands, why it failed if it did, and the first 50 segments of its transcript.",
        "operationId": "getProject",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "es for the Spanish names of the packs' project types. Left out, English.",
            "schema": {
              "type": "string",
              "description": "es for the Spanish names of the packs' project types. Left out, English."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDetailDtoApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Projects"
        ],
        "summary": "Rename a project",
        "description": "Sets the project's title, from 1 to 500 characters.",
        "operationId": "renameProject",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "es for the Spanish names of the packs' project types. Left out, English.",
            "schema": {
              "type": "string",
              "description": "es for the Spanish names of the packs' project types. Left out, English."
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameProjectRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDetailDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Projects"
        ],
        "summary": "Delete a project",
        "description": "Deletes a project: its recording, transcript and documents are erased and a deletion receipt is written. A row with no title, file name, link or sender stays until the account is deleted.",
        "operationId": "deleteProject",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{id}/transcript": {
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "Download the transcript",
        "description": "Downloads the transcript as it stands, with every edit, as a file: txt, srt, vtt, json, docx or pdf. A project that is not completed has none yet (400).",
        "operationId": "getTranscript",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "format",
            "in": "query",
            "description": "txt, srt, vtt, json, docx or pdf.",
            "schema": {
              "type": "string",
              "description": "txt, srt, vtt, json, docx or pdf.",
              "default": "txt"
            }
          },
          {
            "name": "subtitleStyle",
            "in": "query",
            "description": "For srt and vtt: standard (lines as spoken), social-media (a few words a line), word (one word a line) or custom (maxWords a line).",
            "schema": {
              "type": "string",
              "description": "For srt and vtt: standard (lines as spoken), social-media (a few words a line), word (one word a line) or custom (maxWords a line).",
              "default": "standard"
            }
          },
          {
            "name": "maxWords",
            "in": "query",
            "description": "Words a line, from 1 to 15: needed with custom, and changes social-media's.",
            "schema": {
              "type": "integer",
              "description": "Words a line, from 1 to 15: needed with custom, and changes social-media's.",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{id}/segments": {
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "List the transcript's segments",
        "description": "Returns the transcript segment by segment, with its edits, a page at a time. Filter by speaker, by text, or by time.",
        "operationId": "listSegments",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page, from 1.",
            "schema": {
              "type": "integer",
              "description": "The page, from 1.",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Segments a page, from 1 to 100.",
            "schema": {
              "type": "integer",
              "description": "Segments a page, from 1 to 100.",
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "speaker",
            "in": "query",
            "description": "Only this speaker's segments.",
            "schema": {
              "type": "string",
              "description": "Only this speaker's segments."
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Only segments whose text contains this.",
            "schema": {
              "type": "string",
              "description": "Only segments whose text contains this."
            }
          },
          {
            "name": "from",
            "in": "query",
            "description": "Only segments that start at or after this second.",
            "schema": {
              "type": "number",
              "description": "Only segments that start at or after this second.",
              "format": "double"
            }
          },
          {
            "name": "to",
            "in": "query",
            "description": "Only segments that end at or before this second.",
            "schema": {
              "type": "number",
              "description": "Only segments that end at or before this second.",
              "format": "double"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TranscriptSegmentDtoApiListResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{id}/done": {
      "patch": {
        "tags": [
          "Projects"
        ],
        "summary": "Mark a project done, or back in review",
        "description": "Marks a completed project done, or puts it back in review. Done is the reader's call, not the processing's: a time beside the status, never a status of its own. It changes nothing else: nothing is deleted, hidden or kept longer. Transcribing the project again, or writing a document again, clears it, because what was reviewed is no longer what the project holds.",
        "operationId": "setProjectDone",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetDoneRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDoneDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{id}/retention": {
      "patch": {
        "tags": [
          "Projects"
        ],
        "summary": "Set how long a project is kept",
        "description": "Sets how many days the project is kept, counted from the day it was created: from 1 to the most the plan allows. When the time is up, its recording, transcript and documents are deleted. A project held for hours must be started first (409).",
        "operationId": "setProjectRetention",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetRetentionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RetentionDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{id}/settings": {
      "patch": {
        "tags": [
          "Projects"
        ],
        "summary": "Change a project's settings",
        "description": "Changes the settings that can still change, and answers which were applied and which were already locked. The project type can change until its documents are written; once they exist, the new type applies to the project and nothing already written is rewritten. documents picks which of the type's documents to write: absent leaves it as it is, an empty list means the transcript alone, and a new project type resets it. The language can change until transcription starts, and the speakers while the project is processing or once it is completed. Turning the speakers on for a completed project labels them from the audio it already has; when as many recordings are running as the account allows, that request is refused with 429 and nothing changes: send it again later.",
        "operationId": "applyProjectSettings",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplyProjectSettingsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplyProjectSettingsResultDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{id}/retry": {
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Retry a failed project",
        "description": "Starts a failed project again: its status goes back to Pending. Only a failed project can be retried (400). When as many recordings are running as the account allows, the request is refused with 429 and the project stays as it is: send it again later.",
        "operationId": "retryProject",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{id}/resume": {
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Start a project held for hours",
        "description": "Starts a project that was held because the account's hours did not cover it (status QuotaBlocked). It starts at once when the account has a free slot, and is queued (status Queued) when it has none. Hours already promised to queued or running projects do not count as available: while the hours are still short, the answer is 409 with requiredMinutes and availableMinutes. A held project also starts by itself when hours arrive.",
        "operationId": "resumeProject",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HoursShortResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{id}/download-url": {
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "Get a link to the recording or the first transcript",
        "description": "Returns a link to download the project's original recording (format audio) or its transcript as first written, before any edit (format json). The link expires in 60 minutes. Any other format is refused with 400 and `DOWNLOAD_FORMAT_UNSUPPORTED`: the transcript as it stands, in txt, srt, vtt, docx or pdf, is GET /api/v1/projects/{id}/transcript.",
        "operationId": "getDownloadUrl",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "format",
            "in": "query",
            "description": "audio for the original recording, json for the transcript as first written. Any other format is refused (400).",
            "schema": {
              "type": "string",
              "description": "audio for the original recording, json for the transcript as first written. Any other format is refused (400).",
              "default": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DownloadUrlResponseDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{id}/retranscribe": {
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Transcribe a project again",
        "description": "Creates a new project from the same recording with other settings (language, speakers). It keeps the project's type and document selection, so it writes the documents a first run writes; speakers left out follow the type. The new project is counted against the account's hours like any other, and they are counted first: when they do not cover the recording, the answer is 409 with requiredMinutes and availableMinutes, nothing starts and the original stays as it is. A language the plan does not transcribe, or a plan that cannot transcribe again, is refused with 403; as many recordings running as the account allows, with 429.",
        "operationId": "retranscribeProject",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RetranscribeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RetranscribeResponseDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HoursShortResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{id}/diarize": {
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Add speaker labels",
        "description": "Labels the speakers of a completed project's transcript, from the audio it already has, without transcribing it again. A project that already has speaker labels is refused (400), and so is a plan without them (403). When as many recordings are running as the account allows, the request is refused with 429 and the project stays as it is: send it again later.",
        "operationId": "addSpeakerLabels",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "es for the Spanish names of the packs' project types. Left out, English.",
            "schema": {
              "type": "string",
              "description": "es for the Spanish names of the packs' project types. Left out, English."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDetailDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{id}/exports": {
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "List the transcript's export formats",
        "description": "Lists the transcript's export formats, each with its download path and whether it can be downloaded now: the project must be completed and the format allowed by the plan.",
        "operationId": "listExports",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectExportsDtoApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{id}/share": {
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Create or update a share link",
        "description": "Gives a completed project a link that anyone who has it can open to read its documents, and returns the link. A project already shared keeps its link. includeTranscript sets whether the link shows the transcript too; left out, the setting does not change.",
        "operationId": "shareProject",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateShareRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShareResponseDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Projects"
        ],
        "summary": "Revoke the share link",
        "description": "Removes the share link: it stops working, and sharing the project again makes a new one.",
        "operationId": "unshareProject",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{projectId}/documents": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "List a project's documents",
        "operationId": "listDocuments",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentDtoListApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Write another document",
        "description": "Writes one more document for the project, from a template and instructions the account can see. It is written in the background (202): read it back once its status is Completed. Documents are not counted against the hours. A project may have a limited number of documents written for it; past it, the answer is 429.",
        "operationId": "writeDocument",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateDocumentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{projectId}/documents/{documentId}": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Get a document with its current content and version history",
        "operationId": "getDocument",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentDetailDtoApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Documents"
        ],
        "summary": "Edit a document",
        "description": "Saves the content sent, from 1 to 200,000 characters, as a new version (kind Edited) and makes it current.",
        "operationId": "editDocument",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditDocumentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentDetailDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{projectId}/documents/{documentId}/versions/{versionId}": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Get one version's content",
        "operationId": "getDocumentVersion",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentVersionContentDtoApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{projectId}/documents/{documentId}/correct": {
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Correct a document by saying what is wrong",
        "description": "Applies the correction to this document as a new version (kind Corrected). When the correction is a rule rather than a fact about this recording, Verbato also learns it, for the account to keep or drop in the app. The answer's marginTag says which: structure, tone or term when it was learned, once when it was not. Corrections are held to a lower rate than other requests, and a document takes a limited number of them; past either, the answer is 429.",
        "operationId": "correctDocument",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DocumentCorrectionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentCorrectionResponseApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{projectId}/documents/{documentId}/regenerate": {
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Write a document again",
        "description": "Writes a new version (kind Regenerated) in the background and makes it current; an edited version stays in the history. It counts toward the project's limit of documents written. When the template or the instructions it was written from no longer exist, the answer is 409.",
        "operationId": "rewriteDocument",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{projectId}/documents/{documentId}/export": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Export a document",
        "description": "Exports the current version as a file: md, txt, docx or pdf. Exports are not counted against the hours.",
        "operationId": "exportDocument",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "format",
            "in": "query",
            "description": "md, txt, docx or pdf.",
            "schema": {
              "type": "string",
              "description": "md, txt, docx or pdf.",
              "default": "md"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{projectId}/documents/{documentId}/current-version": {
      "put": {
        "tags": [
          "Documents"
        ],
        "summary": "Make a version current",
        "description": "Makes one of the document's versions current. An export is of the current version.",
        "operationId": "selectDocumentVersion",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SelectVersionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentDetailDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/projects/{id}/segments/{segmentId}": {
      "patch": {
        "tags": [
          "Segments"
        ],
        "summary": "Edit a segment's text",
        "operationId": "editSegment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "segmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSegmentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/projects/{id}/segments/bulk": {
      "patch": {
        "tags": [
          "Segments"
        ],
        "summary": "Find and replace text across the transcript",
        "operationId": "replaceInSegments",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkReplaceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/projects/{id}/speakers/{oldLabel}/rename": {
      "patch": {
        "tags": [
          "Segments"
        ],
        "summary": "Rename a speaker across the transcript",
        "operationId": "renameSpeaker",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "oldLabel",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameSpeakerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/projects/{id}/segments/{segmentId}/speaker": {
      "patch": {
        "tags": [
          "Segments"
        ],
        "summary": "Change one segment's speaker",
        "operationId": "setSegmentSpeaker",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "segmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetSegmentSpeakerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/projects/{id}/segments/{segmentId}/revert": {
      "patch": {
        "tags": [
          "Segments"
        ],
        "summary": "Put a segment back to the text first transcribed",
        "operationId": "revertSegment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "segmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/projects/{id}/segments/{segmentId}/bookmark": {
      "post": {
        "tags": [
          "Segments"
        ],
        "summary": "Bookmark a segment, or remove its bookmark",
        "operationId": "toggleBookmark",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "segmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/projects/{id}/bookmarks": {
      "get": {
        "tags": [
          "Segments"
        ],
        "summary": "List a project's bookmarked segments",
        "operationId": "listBookmarks",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/projects/{id}/segments/{segmentId}/annotation": {
      "post": {
        "tags": [
          "Segments"
        ],
        "summary": "Add or change a segment's note",
        "operationId": "saveAnnotation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "segmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AnnotationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "Segments"
        ],
        "summary": "Delete a segment's note",
        "operationId": "deleteAnnotation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "segmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/projects/{id}/annotations": {
      "get": {
        "tags": [
          "Segments"
        ],
        "summary": "List a project's segments with notes",
        "operationId": "listAnnotations",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/library/templates": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "List templates",
        "description": "The account's own templates and those of its installed packs, Core's included: Core is built in and installed on every account. A pack's template cannot be changed; duplicate it to make one of your own.",
        "operationId": "listTemplates",
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "description": "es for the Spanish text of the packs' objects. Left out, English.",
            "schema": {
              "type": "string",
              "description": "es for the Spanish text of the packs' objects. Left out, English."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateDtoListApiResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Library"
        ],
        "summary": "Create a template",
        "operationId": "createTemplate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTemplateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/templates/{id}": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "Get a template",
        "operationId": "getTemplate",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "es for the Spanish text of the packs' objects. Left out, English.",
            "schema": {
              "type": "string",
              "description": "es for the Spanish text of the packs' objects. Left out, English."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateDtoApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Library"
        ],
        "summary": "Update one of your templates",
        "description": "A null or absent `description` keeps the stored one, and so does a null or absent `outputFormat`. An empty `description` clears it.",
        "operationId": "updateTemplate",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTemplateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Library"
        ],
        "summary": "Delete one of your templates",
        "description": "Refused (409) while a project type uses it.",
        "operationId": "deleteTemplate",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/templates/{id}/section-state": {
      "post": {
        "tags": [
          "Library"
        ],
        "summary": "Switch a section of one of your templates off or on",
        "description": "A section that is off stays in the template, with its name, its guidance and its place, and is not written. Applies from the next generation: documents already written are not touched. At least one section stays on.",
        "operationId": "setSectionState",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SectionStateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateDtoApiResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/templates/{id}/own-section-state": {
      "post": {
        "tags": [
          "Library"
        ],
        "summary": "Switch a section off in your copy of a pack's template",
        "description": "A pack's template is never changed. With no copy of it yet, it is copied into your library with the section off, and the project type that writes it becomes one of your own too (201). With a copy, `copyId` names the one the section goes off in (200). It never replaces a copy and never makes a second one: 409 `COPY_EXISTS` when a copy exists and none was named.",
        "operationId": "setOwnSectionState",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OwnSectionStateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OwnSectionStateResponseApiResponse"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OwnSectionStateResponseApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/templates/{id}/duplicate": {
      "post": {
        "tags": [
          "Library"
        ],
        "summary": "Duplicate a template into your library",
        "operationId": "duplicateTemplate",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateDtoApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/instructions": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "List instructions",
        "description": "The account's own instructions and those of its installed packs, Core's included. A pack's instructions cannot be changed; duplicate them to make your own. Rules for reading a recording are ordinary instructions.",
        "operationId": "listInstructions",
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "description": "es for the Spanish text of the packs' objects. Left out, English.",
            "schema": {
              "type": "string",
              "description": "es for the Spanish text of the packs' objects. Left out, English."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstructionsDtoListApiResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Library"
        ],
        "summary": "Create instructions",
        "operationId": "createInstructions",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInstructionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstructionsDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/instructions/{id}": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "Get instructions",
        "operationId": "getInstructions",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "es for the Spanish text of the packs' objects. Left out, English.",
            "schema": {
              "type": "string",
              "description": "es for the Spanish text of the packs' objects. Left out, English."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstructionsDtoApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Library"
        ],
        "summary": "Update your instructions",
        "description": "A null or absent `description` keeps the stored one. An empty `description` clears it.",
        "operationId": "updateInstructions",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateInstructionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstructionsDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Library"
        ],
        "summary": "Delete your instructions",
        "description": "Refused (409) while a project type uses them.",
        "operationId": "deleteInstructions",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/instructions/{id}/duplicate": {
      "post": {
        "tags": [
          "Library"
        ],
        "summary": "Duplicate instructions into your library",
        "operationId": "duplicateInstructions",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstructionsDtoApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/project-types": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "List project types",
        "description": "The account's own project types and those of its installed packs. A project type is a named set of template and instructions pairs, from none upward: each pair writes one document.",
        "operationId": "listProjectTypes",
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "description": "es for the Spanish text of the packs' objects. Left out, English.",
            "schema": {
              "type": "string",
              "description": "es for the Spanish text of the packs' objects. Left out, English."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectTypeDtoListApiResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Library"
        ],
        "summary": "Create a project type",
        "operationId": "createProjectType",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProjectTypeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectTypeDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/project-types/{id}": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "Get a project type",
        "operationId": "getProjectType",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "es for the Spanish text of the packs' objects. Left out, English.",
            "schema": {
              "type": "string",
              "description": "es for the Spanish text of the packs' objects. Left out, English."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectTypeDtoApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Library"
        ],
        "summary": "Update one of your project types",
        "description": "Replaces its pairs with the ones sent. A null or absent `description` keeps the stored one. An empty `description` clears it.",
        "operationId": "updateProjectType",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProjectTypeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectTypeDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Library"
        ],
        "summary": "Delete one of your project types",
        "description": "Refused (409) while it is the account's default or a channel's.",
        "operationId": "deleteProjectType",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/project-types/{id}/duplicate": {
      "post": {
        "tags": [
          "Library"
        ],
        "summary": "Duplicate a project type, with its pairs, into your library",
        "operationId": "duplicateProjectType",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectTypeDtoApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/default-project-type": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "Get the account's default project type",
        "description": "The account's default, when it has one it can still see; otherwise Core's Transcript + summary. A project created without a type gets this one.",
        "operationId": "getDefaultProjectType",
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "description": "es for the Spanish text of the packs' objects. Left out, English.",
            "schema": {
              "type": "string",
              "description": "es for the Spanish text of the packs' objects. Left out, English."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectTypeDtoApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Library"
        ],
        "summary": "Set the account's default project type",
        "operationId": "setDefaultProjectType",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetDefaultProjectTypeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectTypeDtoApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/packs": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "List packs",
        "description": "Every pack, and whether the account has installed it. Core is built in and installed on every account.",
        "operationId": "listPacks",
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "description": "es for the Spanish text of the packs' objects. Left out, English.",
            "schema": {
              "type": "string",
              "description": "es for the Spanish text of the packs' objects. Left out, English."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PackDtoListApiResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/packs/{key}/contents": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "See what a pack holds",
        "description": "The pack's project types, with the documents each one writes, its templates with their section names, and its specialties, whether the pack is installed or not. With a specialty, only the project types and templates tagged with it or with none.",
        "operationId": "getPackContents",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "description": "es for the Spanish text of the packs' objects. Left out, English.",
            "schema": {
              "type": "string",
              "description": "es for the Spanish text of the packs' objects. Left out, English."
            }
          },
          {
            "name": "specialty",
            "in": "query",
            "description": "A specialty key of the pack: only the project types and templates tagged with it, or tagged with none, are listed. Left out, every one.",
            "schema": {
              "type": "string",
              "description": "A specialty key of the pack: only the project types and templates tagged with it, or tagged with none, are listed. Left out, every one."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PackContentsDtoApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/packs/{key}/install": {
      "post": {
        "tags": [
          "Library"
        ],
        "summary": "Install a pack",
        "description": "Installs the pack: its project types, templates and instructions join the account's. Installing a pack already installed changes nothing.",
        "operationId": "installPack",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "source",
            "in": "query",
            "description": "Where in the app the install was asked from. Leave it out: it changes nothing.",
            "schema": {
              "type": "string",
              "description": "Where in the app the install was asked from. Leave it out: it changes nothing."
            }
          },
          {
            "name": "specialty",
            "in": "query",
            "description": "The specialty the install was asked for, one of the pack's. Leave it out: it changes nothing.",
            "schema": {
              "type": "string",
              "description": "The specialty the install was asked for, one of the pack's. Leave it out: it changes nothing."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PackDtoApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Library"
        ],
        "summary": "Uninstall a pack",
        "description": "Core cannot be uninstalled. A default that names one of the pack's project types is reset; your own duplicates are not touched.",
        "operationId": "uninstallPack",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/usage/hours": {
      "get": {
        "tags": [
          "Usage"
        ],
        "summary": "Get the account's hours",
        "description": "The minutes left in this period's allowance and in top-up packs, the period's dates, the minutes used in it, and the minutes metered past the allowance.",
        "operationId": "getHours",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HourUsageDtoApiResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/usage/dashboard-stats": {
      "get": {
        "tags": [
          "Usage"
        ],
        "summary": "Get the account's statistics",
        "description": "Returns dashboard statistics including project counts (current and previous period for trend), total duration, top export format, and project breakdown by source channel.",
        "operationId": "getUsageStats",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardStatsDtoApiResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/usage": {
      "get": {
        "tags": [
          "Usage"
        ],
        "summary": "Get the account's usage",
        "description": "Returns the account's usage: its projects this period against the plan's limit, their total duration in seconds, the jobs running and the most that may run at once, the plan, the billing period's dates, and whether the account opted out of analytics.",
        "operationId": "getUsage",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsageDtoApiResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/webhooks": {
      "post": {
        "tags": [
          "Webhooks (API)"
        ],
        "summary": "Register a webhook",
        "description": "Registers an https address to call when one of the account's projects completes or fails. The answer carries the webhook's signing secret, the only time it is shown. An account may have 5 webhooks. What is sent, and how to check its signature, is under webhooks. An account whose plan does not include the API cannot register one: 403, with the code PLAN_UPGRADE_REQUIRED.",
        "operationId": "createWebhook",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedWebhookDtoApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Webhooks (API)"
        ],
        "summary": "List webhooks",
        "description": "The account's webhooks: each one's address and events, the start of its secret, whether it is on, when it last delivered, and how many deliveries in a row have failed.",
        "operationId": "listWebhooks",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookDtoListApiResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/webhooks/{id}": {
      "delete": {
        "tags": [
          "Webhooks (API)"
        ],
        "summary": "Delete a webhook",
        "operationId": "deleteWebhook",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AnnotationRequest": {
        "required": [
          "noteText"
        ],
        "type": "object",
        "properties": {
          "noteText": {
            "type": "string",
            "description": "The note's text."
          }
        },
        "additionalProperties": false
      },
      "ApiErrorResponse": {
        "required": [
          "error"
        ],
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          },
          "detail": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "ApiWebhookEvent": {
        "required": [
          "createdAt",
          "data",
          "event",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "A new id for every event. A retry of the same event carries the same id.",
            "format": "uuid"
          },
          "event": {
            "type": "string",
            "description": "What happened: project.completed or project.failed."
          },
          "createdAt": {
            "type": "string",
            "description": "When the event was sent, in UTC.",
            "format": "date-time"
          },
          "data": {
            "$ref": "#/components/schemas/ApiWebhookProject"
          }
        },
        "additionalProperties": false
      },
      "ApiWebhookProject": {
        "required": [
          "createdAt",
          "projectId",
          "status"
        ],
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "description": "The project's id. Read the project with GET /api/v1/projects/{id}.",
            "format": "uuid"
          },
          "title": {
            "type": [
              "null",
              "string"
            ],
            "description": "The project's name."
          },
          "status": {
            "type": "string",
            "description": "Completed or Failed."
          },
          "source": {
            "type": [
              "null",
              "string"
            ],
            "description": "Where the recording came from: api for one sent with a key."
          },
          "errorMessage": {
            "type": [
              "null",
              "string"
            ],
            "description": "Why the project failed, on project.failed. Null on project.completed."
          },
          "createdAt": {
            "type": "string",
            "description": "When the project was created, in UTC.",
            "format": "date-time"
          },
          "completedAt": {
            "type": [
              "null",
              "string"
            ],
            "description": "When the project completed, in UTC. Null on project.failed.",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "ApplyProjectSettingsRequest": {
        "type": "object",
        "properties": {
          "projectTypeId": {
            "type": [
              "null",
              "string"
            ],
            "description": "A new project type, until its documents are written. Left out, unchanged.",
            "format": "uuid"
          },
          "enableDiarization": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Label who speaks when. Left out, unchanged."
          },
          "language": {
            "type": [
              "null",
              "string"
            ],
            "description": "The language spoken, as a code from the languages Verbato transcribes, until transcription starts. An empty string returns it to automatic. Left out, unchanged."
          },
          "documents": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/DocumentSelectionEntry"
            },
            "description": "Which of the type's documents to write, each named by its templateId and instructionsId. Left out, unchanged; an empty list, the transcript alone."
          }
        },
        "additionalProperties": false
      },
      "ApplyProjectSettingsResultDto": {
        "required": [
          "applied",
          "locked"
        ],
        "type": "object",
        "properties": {
          "applied": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "locked": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "ApplyProjectSettingsResultDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ApplyProjectSettingsResultDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "BulkReplaceRequest": {
        "required": [
          "find",
          "replace"
        ],
        "type": "object",
        "properties": {
          "find": {
            "type": "string",
            "description": "The text to find."
          },
          "replace": {
            "type": "string",
            "description": "The text to put in its place."
          },
          "caseSensitive": {
            "type": "boolean",
            "description": "Match upper and lower case exactly. Left out, false."
          },
          "wholeWord": {
            "type": "boolean",
            "description": "Match whole words only. Left out, false: the text is found inside words too."
          }
        },
        "additionalProperties": false
      },
      "CreateInstructionsRequest": {
        "required": [
          "name",
          "rulesText"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "A name, up to 200 characters."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "What the instructions are for. Optional."
          },
          "rulesText": {
            "type": "string",
            "description": "The rules the document is written by, as plain text."
          }
        },
        "additionalProperties": false
      },
      "CreateProjectForm": {
        "required": [
          "file"
        ],
        "type": "object",
        "properties": {
          "file": {
            "type": "string",
            "description": "The recording: one audio or video file.",
            "format": "binary"
          },
          "title": {
            "type": [
              "null",
              "string"
            ],
            "description": "The project's name. Left out, it is made from the file's name or the link."
          },
          "language": {
            "type": [
              "null",
              "string"
            ],
            "description": "The language spoken, as a code from the languages Verbato transcribes (GET /api/v1/usage, supportedLanguages), such as en, es or pt. Left out, it is identified from the recording. Any other code is refused with 400."
          },
          "enableDiarization": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Label who speaks when. Left out, the project type decides."
          },
          "projectTypeId": {
            "type": [
              "null",
              "string"
            ],
            "description": "The project type that writes the documents. Left out, the account's default (GET /api/v1/library/default-project-type).",
            "format": "uuid"
          },
          "retentionDays": {
            "type": [
              "null",
              "integer"
            ],
            "description": "How many days to keep the project, from 1 to the most the plan allows. Left out, the account's default.",
            "format": "int32"
          },
          "documents": {
            "type": [
              "null",
              "string"
            ],
            "description": "The same list as the JSON body's documents, sent as JSON text."
          }
        },
        "additionalProperties": false
      },
      "CreateProjectRequest": {
        "type": "object",
        "properties": {
          "storageKey": {
            "type": [
              "null",
              "string"
            ],
            "description": "The storageKey POST /api/v1/projects/upload-url returned, once the file is uploaded to its URL. Send this or sourceUrl."
          },
          "title": {
            "type": [
              "null",
              "string"
            ],
            "description": "The project's name. Left out, it is made from the file's name or the link."
          },
          "language": {
            "type": [
              "null",
              "string"
            ],
            "description": "The language spoken, as a code from the languages Verbato transcribes (GET /api/v1/usage, supportedLanguages), such as en, es or pt. Left out, it is identified from the recording. Any other code is refused with 400."
          },
          "enableDiarization": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Label who speaks when. Left out, the project type decides."
          },
          "sourceUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "A link to the recording instead of a file: a page of a supported video or audio site, or a file's own address. Send this or storageKey."
          },
          "projectTypeId": {
            "type": [
              "null",
              "string"
            ],
            "description": "The project type that writes the documents. Left out, the account's default (GET /api/v1/library/default-project-type).",
            "format": "uuid"
          },
          "retentionDays": {
            "type": [
              "null",
              "integer"
            ],
            "description": "How many days to keep the project, from 1 to the most the plan allows. Left out, the account's default.",
            "format": "int32"
          },
          "documents": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/DocumentSelectionEntry"
            },
            "description": "Which of the project type's documents to write, each named by its templateId and instructionsId. Left out, all of them; an empty list, the transcript alone."
          }
        },
        "additionalProperties": false
      },
      "CreateProjectTypeRequest": {
        "required": [
          "name",
          "pairs"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "A name, up to 200 characters."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "What the project type is for. Optional."
          },
          "pairs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PairInput"
            },
            "description": "The template and instructions pairs, one per document. May be empty: a project type that writes none, only the transcript."
          }
        },
        "additionalProperties": false
      },
      "CreateShareRequest": {
        "type": "object",
        "properties": {
          "includeTranscript": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Whether the link shows the transcript too. Left out, unchanged."
          }
        },
        "additionalProperties": false
      },
      "CreateTemplateRequest": {
        "required": [
          "name",
          "sections"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "A name for the document the template writes."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "What the template is for. Optional."
          },
          "sections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TemplateSectionDto"
            },
            "description": "The document's sections, in order."
          },
          "outputFormat": {
            "type": [
              "null",
              "string"
            ],
            "description": "markdown or plain. Left out, markdown."
          }
        },
        "additionalProperties": false
      },
      "CreateWebhookRequest": {
        "required": [
          "url"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "An https address of yours that answers POST."
          },
          "events": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "project.completed, project.failed, or both. Left out, both."
          }
        },
        "additionalProperties": false
      },
      "CreatedWebhookDto": {
        "required": [
          "createdAt",
          "events",
          "id",
          "secret",
          "url"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "url": {
            "type": "string"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "secret": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "CreatedWebhookDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CreatedWebhookDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "DashboardStatsDto": {
        "required": [
          "projectCount",
          "projectCountLastMonth",
          "projectsBySource",
          "topExportFormatCount",
          "totalDurationSeconds",
          "totalExportCount"
        ],
        "type": "object",
        "properties": {
          "projectCount": {
            "type": "integer",
            "format": "int32"
          },
          "projectCountLastMonth": {
            "type": "integer",
            "format": "int32"
          },
          "totalDurationSeconds": {
            "type": "number",
            "format": "double"
          },
          "topExportFormat": {
            "type": [
              "null",
              "string"
            ]
          },
          "topExportFormatCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalExportCount": {
            "type": "integer",
            "format": "int32"
          },
          "projectsBySource": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            }
          }
        },
        "additionalProperties": false
      },
      "DashboardStatsDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DashboardStatsDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "DocumentCorrectionRequest": {
        "required": [
          "correction"
        ],
        "type": "object",
        "properties": {
          "correction": {
            "type": "string",
            "description": "What is wrong, in your own words."
          },
          "aboutSection": {
            "type": [
              "null",
              "string"
            ],
            "description": "The name of the section the correction is about, if it is about one: at most 1,000 characters."
          }
        },
        "additionalProperties": false
      },
      "DocumentCorrectionResponse": {
        "required": [
          "content",
          "learnable",
          "marginTag",
          "occurrences",
          "reply",
          "shouldAsk",
          "versionNumber"
        ],
        "type": "object",
        "properties": {
          "content": {
            "type": "string"
          },
          "versionNumber": {
            "type": "integer",
            "format": "int32"
          },
          "reply": {
            "type": "string"
          },
          "marginTag": {
            "type": "string"
          },
          "learnable": {
            "type": "boolean"
          },
          "ruleId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "occurrences": {
            "type": "integer",
            "format": "int32"
          },
          "affectedSection": {
            "type": [
              "null",
              "string"
            ]
          },
          "shouldAsk": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "DocumentCorrectionResponseApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DocumentCorrectionResponse"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "DocumentDetailDto": {
        "required": [
          "createdAt",
          "id",
          "status",
          "title",
          "updatedAt",
          "versions"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "errorMessage": {
            "type": [
              "null",
              "string"
            ]
          },
          "currentVersionId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "currentContent": {
            "type": [
              "null",
              "string"
            ]
          },
          "versions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DocumentVersionDto"
            }
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "sourceCitations": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/SourceCitationDto"
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "errorCode": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "DocumentDetailDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DocumentDetailDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "DocumentDto": {
        "required": [
          "id",
          "status",
          "title",
          "updatedAt",
          "versionCount"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "currentVersionNumber": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "versionCount": {
            "type": "integer",
            "format": "int32"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "preview": {
            "type": [
              "null",
              "string"
            ]
          },
          "templateKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "originTemplateKey": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "DocumentDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DocumentDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "DocumentDtoListApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/DocumentDto"
            }
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "DocumentSelectionEntry": {
        "required": [
          "instructionsId",
          "templateId"
        ],
        "type": "object",
        "properties": {
          "templateId": {
            "type": "string",
            "description": "The template of one of the project type's pairs.",
            "format": "uuid"
          },
          "instructionsId": {
            "type": "string",
            "description": "The instructions paired with it.",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "DocumentVersionContentDto": {
        "required": [
          "content",
          "createdAt",
          "id",
          "kind",
          "versionNumber"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "versionNumber": {
            "type": "integer",
            "format": "int32"
          },
          "kind": {
            "type": "string"
          },
          "content": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "DocumentVersionContentDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DocumentVersionContentDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "DocumentVersionDto": {
        "required": [
          "createdAt",
          "id",
          "isCurrent",
          "kind",
          "versionNumber"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "versionNumber": {
            "type": "integer",
            "format": "int32"
          },
          "kind": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "isCurrent": {
            "type": "boolean"
          },
          "truncated": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "DownloadUrlResponseDto": {
        "required": [
          "downloadUrl",
          "expiresAt"
        ],
        "type": "object",
        "properties": {
          "downloadUrl": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "DownloadUrlResponseDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DownloadUrlResponseDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "EditDocumentRequest": {
        "required": [
          "content"
        ],
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "The document's whole new content."
          }
        },
        "additionalProperties": false
      },
      "ExportOptionDto": {
        "required": [
          "available",
          "format",
          "label",
          "url"
        ],
        "type": "object",
        "properties": {
          "format": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "available": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "GenerateDocumentRequest": {
        "required": [
          "instructionsId",
          "templateId"
        ],
        "type": "object",
        "properties": {
          "templateId": {
            "type": "string",
            "description": "The template the document is written from.",
            "format": "uuid"
          },
          "instructionsId": {
            "type": "string",
            "description": "The instructions it is written with.",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "HourBalance": {
        "required": [
          "consumedThisPeriodMinutes",
          "isMetered",
          "meteredThisPeriodMinutes",
          "monthlyAllowanceMinutes",
          "monthlyRemainingMinutes",
          "packRemainingMinutes",
          "periodEnd",
          "periodStart"
        ],
        "type": "object",
        "properties": {
          "monthlyRemainingMinutes": {
            "type": "integer",
            "format": "int32"
          },
          "packRemainingMinutes": {
            "type": "integer",
            "format": "int32"
          },
          "monthlyAllowanceMinutes": {
            "type": "integer",
            "format": "int32"
          },
          "periodStart": {
            "type": "string",
            "format": "date-time"
          },
          "periodEnd": {
            "type": "string",
            "format": "date-time"
          },
          "consumedThisPeriodMinutes": {
            "type": "integer",
            "format": "int32"
          },
          "meteredThisPeriodMinutes": {
            "type": "integer",
            "format": "int32"
          },
          "isMetered": {
            "type": "boolean"
          },
          "isTrial": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "HourUsageDto": {
        "required": [
          "balance"
        ],
        "type": "object",
        "properties": {
          "balance": {
            "$ref": "#/components/schemas/HourBalance"
          }
        },
        "additionalProperties": false
      },
      "HourUsageDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HourUsageDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "HoursShortResponse": {
        "required": [
          "availableMinutes",
          "detail",
          "error",
          "requiredMinutes"
        ],
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          },
          "requiredMinutes": {
            "type": "integer",
            "format": "int32"
          },
          "availableMinutes": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "InstructionsDto": {
        "required": [
          "id",
          "isOwn",
          "name",
          "rulesText",
          "updatedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "rulesText": {
            "type": "string"
          },
          "systemKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "packKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "isOwn": {
            "type": "boolean"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "hasEs": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "InstructionsDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/InstructionsDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "InstructionsDtoListApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/InstructionsDto"
            }
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "OwnSectionStateRequest": {
        "required": [
          "index",
          "instructionsId",
          "name"
        ],
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "The section's place in the pack's template, from 0.",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Its heading, which must match the section at that place."
          },
          "instructionsId": {
            "type": "string",
            "description": "The instructions the template is paired with.",
            "format": "uuid"
          },
          "copyId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Your copy to switch the section off in. Left out, a copy is made.",
            "format": "uuid"
          },
          "projectTypeId": {
            "type": [
              "null",
              "string"
            ],
            "description": "The project type the template is written under.",
            "format": "uuid"
          },
          "locale": {
            "type": [
              "null",
              "string"
            ],
            "description": "es to make the copy in Spanish. Left out, English."
          }
        },
        "additionalProperties": false
      },
      "OwnSectionStateResponse": {
        "required": [
          "instructionsId",
          "outcome",
          "templateId"
        ],
        "type": "object",
        "properties": {
          "templateId": {
            "type": "string",
            "format": "uuid"
          },
          "instructionsId": {
            "type": "string",
            "format": "uuid"
          },
          "outcome": {
            "type": "string"
          },
          "usualProjectTypeId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "OwnSectionStateResponseApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/OwnSectionStateResponse"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "PackContentsDto": {
        "required": [
          "hasEs",
          "installed",
          "key",
          "name",
          "projectTypes",
          "specialties",
          "templates"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "installed": {
            "type": "boolean"
          },
          "projectTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PackContentsProjectTypeDto"
            }
          },
          "templates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PackContentsTemplateDto"
            }
          },
          "hasEs": {
            "type": "boolean"
          },
          "specialties": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SpecialtyDto"
            }
          },
          "defaultProjectTypeKey": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "PackContentsDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PackContentsDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "PackContentsProjectTypeDto": {
        "required": [
          "documents",
          "id",
          "name",
          "specialties",
          "templateIds"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "systemKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "documents": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "specialties": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "templateIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "additionalProperties": false
      },
      "PackContentsTemplateDto": {
        "required": [
          "id",
          "name",
          "outputFormat",
          "sections",
          "specialties"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "systemKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "name": {
            "type": "string"
          },
          "outputFormat": {
            "type": "string"
          },
          "specialties": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "sections": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "PackDto": {
        "required": [
          "builtin",
          "id",
          "installed",
          "instructionsCount",
          "key",
          "name",
          "projectTypeCount",
          "templateCount",
          "version"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "key": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "version": {
            "type": "integer",
            "format": "int32"
          },
          "installed": {
            "type": "boolean"
          },
          "builtin": {
            "type": "boolean"
          },
          "projectTypeCount": {
            "type": "integer",
            "format": "int32"
          },
          "templateCount": {
            "type": "integer",
            "format": "int32"
          },
          "instructionsCount": {
            "type": "integer",
            "format": "int32"
          },
          "specialtyCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "PackDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PackDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "PackDtoListApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/PackDto"
            }
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "PaginationInfo": {
        "required": [
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "PairInput": {
        "required": [
          "instructionsId",
          "templateId"
        ],
        "type": "object",
        "properties": {
          "templateId": {
            "type": "string",
            "description": "A template the account can see.",
            "format": "uuid"
          },
          "instructionsId": {
            "type": "string",
            "description": "Instructions the account can see, written with it.",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "ProjectDetailDto": {
        "required": [
          "createdAt",
          "enableDiarization",
          "expiresAt",
          "hasWordTimestamps",
          "id",
          "originalFileName",
          "originalFileSize",
          "retryCount",
          "source",
          "status",
          "title"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "enum": [
              "Pending",
              "Preprocessing",
              "Transcribing",
              "Diarizing",
              "Formatting",
              "Completed",
              "Failed",
              "PendingClaim",
              "QuotaBlocked",
              "Queued"
            ],
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "jobId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "languageCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "detectedLanguage": {
            "type": [
              "null",
              "string"
            ]
          },
          "enableDiarization": {
            "type": "boolean"
          },
          "speakerCount": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "durationSeconds": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "originalFileName": {
            "type": "string"
          },
          "originalFileSize": {
            "type": "integer",
            "format": "int64"
          },
          "errorMessage": {
            "type": [
              "null",
              "string"
            ]
          },
          "errorCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "retryCount": {
            "type": "integer",
            "format": "int32"
          },
          "hasWordTimestamps": {
            "type": "boolean"
          },
          "startedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "completedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "previewSegments": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TranscriptSegmentDto"
            }
          },
          "shareToken": {
            "type": [
              "null",
              "string"
            ]
          },
          "progressPercentage": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "progressStage": {
            "type": [
              "null",
              "string"
            ]
          },
          "progressMessage": {
            "type": [
              "null",
              "string"
            ]
          },
          "sourceMedia": {
            "$ref": "#/components/schemas/SourceMedia"
          },
          "projectTypeId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "projectTypeName": {
            "type": [
              "null",
              "string"
            ]
          },
          "folderId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "documentSelection": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/DocumentSelectionEntry"
            }
          },
          "shareIncludesTranscript": {
            "type": "boolean"
          },
          "transcriptEditedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "doneAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "duplicateOfId": {
            "type": [
              "null",
              "string"
            ],
            "description": "On a project refused as a duplicate (errorCode DUPLICATE_FILE or DUPLICATE_IN_PROGRESS), the id of the project that already holds the same audio. Null on any other project.",
            "format": "uuid"
          },
          "duplicateOfTitle": {
            "type": [
              "null",
              "string"
            ],
            "description": "The current title of the project named by duplicateOfId, while that project exists. Null once it is deleted, after which a retry of this project is no longer blocked by it."
          }
        },
        "additionalProperties": false
      },
      "ProjectDetailDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProjectDetailDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "ProjectDoneDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "doneAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "ProjectDoneDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProjectDoneDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "ProjectDto": {
        "required": [
          "createdAt",
          "enableDiarization",
          "id",
          "status",
          "title"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "enum": [
              "Pending",
              "Preprocessing",
              "Transcribing",
              "Diarizing",
              "Formatting",
              "Completed",
              "Failed",
              "PendingClaim",
              "QuotaBlocked",
              "Queued"
            ],
            "type": "string"
          },
          "languageCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "enableDiarization": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "ProjectDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProjectDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "ProjectExportsDto": {
        "required": [
          "transcriptFormats"
        ],
        "type": "object",
        "properties": {
          "transcriptFormats": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExportOptionDto"
            }
          }
        },
        "additionalProperties": false
      },
      "ProjectExportsDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProjectExportsDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "ProjectListDto": {
        "required": [
          "createdAt",
          "enableDiarization",
          "expiresAt",
          "id",
          "source",
          "status",
          "title"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "enum": [
              "Pending",
              "Preprocessing",
              "Transcribing",
              "Diarizing",
              "Formatting",
              "Completed",
              "Failed",
              "PendingClaim",
              "QuotaBlocked",
              "Queued"
            ],
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "durationSeconds": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "languageCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "enableDiarization": {
            "type": "boolean"
          },
          "speakerCount": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "completedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "errorCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "errorMessage": {
            "type": [
              "null",
              "string"
            ]
          },
          "projectTypeId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "projectTypeName": {
            "type": [
              "null",
              "string"
            ]
          },
          "doneAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "progressPercentage": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "progressStage": {
            "type": [
              "null",
              "string"
            ]
          },
          "folderId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "duplicateOfId": {
            "type": [
              "null",
              "string"
            ],
            "description": "On a project refused as a duplicate (errorCode DUPLICATE_FILE or DUPLICATE_IN_PROGRESS), the id of the project that already holds the same audio. Null on any other project.",
            "format": "uuid"
          },
          "duplicateOfTitle": {
            "type": [
              "null",
              "string"
            ],
            "description": "The current title of the project named by duplicateOfId, while that project exists. Null once it is deleted, after which a retry of this project is no longer blocked by it."
          },
          "detectedLanguage": {
            "type": [
              "null",
              "string"
            ],
            "description": "The language the recording was transcribed in, as the engine reported it; null until it is transcribed."
          }
        },
        "additionalProperties": false
      },
      "ProjectListDtoApiListResponse": {
        "required": [
          "data",
          "pagination"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectListDto"
            }
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ProjectTypeDto": {
        "required": [
          "id",
          "isAccountDefault",
          "isOwn",
          "name",
          "pairs",
          "updatedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "pairs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectTypePairDto"
            }
          },
          "systemKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "packKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "isOwn": {
            "type": "boolean"
          },
          "isAccountDefault": {
            "type": "boolean"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "hasEs": {
            "type": "boolean"
          },
          "defaultDiarization": {
            "type": "boolean"
          },
          "originPackKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "specialties": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "ProjectTypeDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProjectTypeDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "ProjectTypeDtoListApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ProjectTypeDto"
            }
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "ProjectTypePairDto": {
        "required": [
          "instructionsId",
          "instructionsName",
          "sortOrder",
          "templateId",
          "templateName"
        ],
        "type": "object",
        "properties": {
          "templateId": {
            "type": "string",
            "format": "uuid"
          },
          "templateName": {
            "type": "string"
          },
          "instructionsId": {
            "type": "string",
            "format": "uuid"
          },
          "instructionsName": {
            "type": "string"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "RenameProjectRequest": {
        "type": "object",
        "properties": {
          "title": {
            "type": [
              "null",
              "string"
            ],
            "description": "The new title, from 1 to 500 characters."
          }
        },
        "additionalProperties": false
      },
      "RenameSpeakerRequest": {
        "required": [
          "newLabel"
        ],
        "type": "object",
        "properties": {
          "newLabel": {
            "type": "string",
            "description": "The speaker's new name, on every segment that had the old one."
          }
        },
        "additionalProperties": false
      },
      "RetentionDto": {
        "required": [
          "expiresAt",
          "retentionDays"
        ],
        "type": "object",
        "properties": {
          "retentionDays": {
            "type": "integer",
            "format": "int32"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "RetentionDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/RetentionDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "RetranscribeRequest": {
        "type": "object",
        "properties": {
          "language": {
            "type": [
              "null",
              "string"
            ],
            "description": "The language spoken, as a code from the languages Verbato transcribes (GET /api/v1/usage, supportedLanguages). Left out, identified from the recording."
          },
          "enableDiarization": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Label who speaks when. Left out, the project type decides."
          }
        },
        "additionalProperties": false
      },
      "RetranscribeResponseDto": {
        "required": [
          "newTranscriptionId",
          "originalTranscriptionId"
        ],
        "type": "object",
        "properties": {
          "newTranscriptionId": {
            "type": "string",
            "format": "uuid"
          },
          "originalTranscriptionId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "RetranscribeResponseDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/RetranscribeResponseDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "SectionStateRequest": {
        "required": [
          "index",
          "name",
          "off"
        ],
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "The section's place in the template, from 0.",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Its heading, which must match the section at that place."
          },
          "off": {
            "type": "boolean",
            "description": "true to switch it off, false to switch it on."
          }
        },
        "additionalProperties": false
      },
      "SelectVersionRequest": {
        "required": [
          "versionId"
        ],
        "type": "object",
        "properties": {
          "versionId": {
            "type": "string",
            "description": "The version to make current, one of the document's.",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "SetDefaultProjectTypeRequest": {
        "required": [
          "projectTypeId"
        ],
        "type": "object",
        "properties": {
          "projectTypeId": {
            "type": "string",
            "description": "A project type the account can see.",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "SetDoneRequest": {
        "required": [
          "done"
        ],
        "type": "object",
        "properties": {
          "done": {
            "type": "boolean",
            "description": "true to mark the project done, false to put it back in review."
          }
        },
        "additionalProperties": false
      },
      "SetRetentionRequest": {
        "required": [
          "days"
        ],
        "type": "object",
        "properties": {
          "days": {
            "type": "integer",
            "description": "Days to keep the project, counted from the day it was created: from 1 to the most the plan allows.",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "SetSegmentSpeakerRequest": {
        "type": "object",
        "properties": {
          "speaker": {
            "type": [
              "null",
              "string"
            ],
            "description": "The speaker of this segment. It cannot be empty."
          }
        },
        "additionalProperties": false
      },
      "ShareResponseDto": {
        "required": [
          "shareToken",
          "shareUrl"
        ],
        "type": "object",
        "properties": {
          "shareToken": {
            "type": "string"
          },
          "shareUrl": {
            "type": "string"
          },
          "includesTranscript": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ShareResponseDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ShareResponseDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "SourceCitationDto": {
        "required": [
          "startSec"
        ],
        "type": "object",
        "properties": {
          "section": {
            "type": [
              "null",
              "string"
            ]
          },
          "item": {
            "type": [
              "null",
              "string"
            ]
          },
          "startSec": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "SourceMedia": {
        "type": "object",
        "properties": {
          "platform": {
            "type": [
              "null",
              "string"
            ]
          },
          "title": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "uploader": {
            "type": [
              "null",
              "string"
            ]
          },
          "uploadDate": {
            "type": [
              "null",
              "string"
            ]
          },
          "thumbnail": {
            "type": [
              "null",
              "string"
            ]
          },
          "sourceUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "durationS": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "SpecialtyDto": {
        "required": [
          "aliases",
          "id",
          "key",
          "name",
          "packKey",
          "projectTypeCount",
          "sortOrder",
          "templateCount"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "key": {
            "type": "string"
          },
          "packKey": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "parentKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "modifier": {
            "type": [
              "null",
              "string"
            ]
          },
          "aliases": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "projectTypeCount": {
            "type": "integer",
            "format": "int32"
          },
          "templateCount": {
            "type": "integer",
            "format": "int32"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32"
          },
          "otherName": {
            "type": [
              "null",
              "string"
            ]
          },
          "defaultProjectTypeKey": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "TemplateDto": {
        "required": [
          "id",
          "isOwn",
          "name",
          "outputFormat",
          "sections",
          "updatedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "sections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TemplateSectionDto"
            }
          },
          "outputFormat": {
            "type": "string"
          },
          "systemKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "packKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "isOwn": {
            "type": "boolean"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "hasEs": {
            "type": "boolean"
          },
          "sourceTemplateId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "specialties": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "TemplateDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/TemplateDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "TemplateDtoListApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TemplateDto"
            }
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "TemplateSectionDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The section's heading."
          },
          "guidance": {
            "type": [
              "null",
              "string"
            ],
            "description": "What to write in it."
          },
          "off": {
            "type": "boolean",
            "description": "true when the section is switched off: it stays in the template and is not written."
          }
        },
        "additionalProperties": false
      },
      "TranscriptSegmentDto": {
        "required": [
          "endTime",
          "id",
          "segmentIndex",
          "startTime",
          "text"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "segmentIndex": {
            "type": "integer",
            "format": "int32"
          },
          "startTime": {
            "type": "number",
            "format": "double"
          },
          "endTime": {
            "type": "number",
            "format": "double"
          },
          "text": {
            "type": "string"
          },
          "speakerLabel": {
            "type": [
              "null",
              "string"
            ]
          },
          "confidence": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "isEdited": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "TranscriptSegmentDtoApiListResponse": {
        "required": [
          "data",
          "pagination"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TranscriptSegmentDto"
            }
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "UpdateInstructionsRequest": {
        "required": [
          "name",
          "rulesText"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "A name, up to 200 characters."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "What the instructions are for. Null or absent keeps the stored one; empty clears it."
          },
          "rulesText": {
            "type": "string",
            "description": "The rules the document is written by, as plain text."
          }
        },
        "additionalProperties": false
      },
      "UpdateProjectTypeRequest": {
        "required": [
          "name",
          "pairs"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "A name, up to 200 characters."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "What the project type is for. Null or absent keeps the stored one; empty clears it."
          },
          "pairs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PairInput"
            },
            "description": "The pairs, which replace the ones it has. May be empty."
          }
        },
        "additionalProperties": false
      },
      "UpdateSegmentRequest": {
        "required": [
          "text"
        ],
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "The segment's new text. It cannot be empty."
          }
        },
        "additionalProperties": false
      },
      "UpdateTemplateRequest": {
        "required": [
          "name",
          "sections"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "A name for the document the template writes."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "What the template is for. Null or absent keeps the stored one; empty clears it."
          },
          "sections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TemplateSectionDto"
            },
            "description": "The document's sections, in order. They replace the ones it has."
          },
          "outputFormat": {
            "type": [
              "null",
              "string"
            ],
            "description": "markdown or plain. Null or absent keeps the stored one."
          }
        },
        "additionalProperties": false
      },
      "UploadUrlRequestDto": {
        "required": [
          "contentType",
          "fileName",
          "fileSizeBytes"
        ],
        "type": "object",
        "properties": {
          "fileName": {
            "type": "string",
            "description": "The file's name, with its extension."
          },
          "contentType": {
            "type": "string",
            "description": "The file's media type, such as audio/mpeg. The upload must carry the same Content-Type."
          },
          "fileSizeBytes": {
            "type": "integer",
            "description": "The file's size in bytes.",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "UploadUrlResponseDto": {
        "required": [
          "expiresAt",
          "storageKey",
          "uploadUrl"
        ],
        "type": "object",
        "properties": {
          "uploadUrl": {
            "type": "string"
          },
          "storageKey": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "UploadUrlResponseDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/UploadUrlResponseDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "UsageDto": {
        "required": [
          "activeJobsCount",
          "currentPlan",
          "dailyTranscriptionCount",
          "maxConcurrentJobs",
          "maxDailyTranscriptionCount",
          "maxTranscriptionCount",
          "periodEnd",
          "periodStart",
          "totalDurationSeconds",
          "transcriptionCount"
        ],
        "type": "object",
        "properties": {
          "transcriptionCount": {
            "type": "integer",
            "format": "int32"
          },
          "maxTranscriptionCount": {
            "type": "integer",
            "format": "int32"
          },
          "dailyTranscriptionCount": {
            "type": "integer",
            "format": "int32"
          },
          "maxDailyTranscriptionCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalDurationSeconds": {
            "type": "number",
            "format": "double"
          },
          "activeJobsCount": {
            "type": "integer",
            "format": "int32"
          },
          "maxConcurrentJobs": {
            "type": "integer",
            "format": "int32"
          },
          "currentPlan": {
            "type": "string"
          },
          "periodStart": {
            "type": "string",
            "format": "date-time"
          },
          "periodEnd": {
            "type": "string",
            "format": "date-time"
          },
          "analyticsExcluded": {
            "type": "boolean"
          },
          "supportedLanguages": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "UsageDtoApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/UsageDto"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "WebhookDto": {
        "required": [
          "createdAt",
          "events",
          "failureCount",
          "id",
          "isActive",
          "secretPrefix",
          "url"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "url": {
            "type": "string"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "isActive": {
            "type": "boolean"
          },
          "secretPrefix": {
            "type": "string"
          },
          "lastSuccessAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "failureCount": {
            "type": "integer",
            "format": "int32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "WebhookDtoListApiResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/WebhookDto"
            }
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "http",
        "description": "An API key, sent as a bearer token: Authorization: Bearer sk_live_…",
        "scheme": "bearer",
        "bearerFormat": "API key"
      }
    }
  },
  "security": [
    {
      "Bearer": [ ]
    }
  ],
  "tags": [
    {
      "name": "Projects"
    },
    {
      "name": "Documents"
    },
    {
      "name": "Segments"
    },
    {
      "name": "Library"
    },
    {
      "name": "Usage"
    },
    {
      "name": "Webhooks (API)"
    }
  ],
  "x-webhook-delivery": {
    "attempts": 4,
    "retryAfterSeconds": [
      2,
      10,
      30
    ],
    "attemptTimeoutSeconds": 15,
    "switchedOffAfterUndeliveredEvents": 10
  },
  "webhooks": {
    "project.completed": {
      "post": {
        "tags": [
          "Webhooks (API)"
        ],
        "summary": "A project completed",
        "description": "Sent to every webhook registered for the event, as a POST with a JSON body. An answer from 200 to 299 within 15 seconds is a delivery. Anything else is tried again after 2 seconds, 10 seconds and 30 seconds: 4 attempts in all, each with the same body. After 10 events in a row are not delivered, the webhook is switched off.",
        "operationId": "projectCompleted",
        "parameters": [
          {
            "name": "X-Verbato-Signature",
            "in": "header",
            "description": "t=<unix time>,v1=<signature>. The signature is the HMAC-SHA256 of \"<t>.<body>\", keyed with the webhook's secret, in lowercase hex. Compute it over the raw body.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Verbato-Event",
            "in": "header",
            "description": "The event, as in the body: project.completed.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiWebhookEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Delivered."
          }
        }
      }
    },
    "project.failed": {
      "post": {
        "tags": [
          "Webhooks (API)"
        ],
        "summary": "A project failed",
        "description": "Sent to every webhook registered for the event, as a POST with a JSON body. An answer from 200 to 299 within 15 seconds is a delivery. Anything else is tried again after 2 seconds, 10 seconds and 30 seconds: 4 attempts in all, each with the same body. After 10 events in a row are not delivered, the webhook is switched off.",
        "operationId": "projectFailed",
        "parameters": [
          {
            "name": "X-Verbato-Signature",
            "in": "header",
            "description": "t=<unix time>,v1=<signature>. The signature is the HMAC-SHA256 of \"<t>.<body>\", keyed with the webhook's secret, in lowercase hex. Compute it over the raw body.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Verbato-Event",
            "in": "header",
            "description": "The event, as in the body: project.failed.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiWebhookEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Delivered."
          }
        }
      }
    }
  }
}