openapi: 3.0.1
info:
  title: SaluteSpeech REST API
  version: 1.0.0
  description: >
    Используйте REST API сервиса SaluteSpeech для внедрения синтеза и распознавания речи в свои приложения.

    При использовании SaluteSpeech максимальная нагрузка на сервис:

    * для юридических лиц — не более 10 параллельных потоков;
    * для физических лиц — не более 5 параллельных потоков.
  contact:
    name: SaluteSpeech API
servers:
  - url: https://smartspeech.sber.ru/rest/v1
paths:
  /oauth:
    post:
      tags:
        - Авторизация
      servers:
        - url: https://ngw.devices.sberbank.ru:9443/api/v2
      parameters:
        - name: RqUID
          in: header
          description: |
            Уникальный идентификатор запроса. Соответствует формату [`uuid4`](https://www.uuidgenerator.net/version4).

            Параметр для журналирования входящих вызовов и разбора инцидентов.
            Для создания уникального идентификатора можно использовать стандартные библиотеки и классы для генерации UUID и GUID.

            Пример: `6f0b1291-c7f3-43c6-bb2e-9f3efb2dc98e`.
          required: true
          schema:
            type: string
            format: uuid
            pattern: (([0-9a-fA-F-])36)
            example: 6f0b1291-c7f3-43c6-bb2e-9f3efb2dc98e
      requestBody:
         content:
            'application/x-www-form-urlencoded':
              schema:
               type: object
               properties:
                  scope: 
                    description: |
                      Версия API. Возможные значения:

                      * `SALUTE_SPEECH_PERS` — доступ для физических лиц.
                      * `SALUTE_SPEECH_CORP` — доступ для юридических лиц.
                      * `SBER_SPEECH` — устаревшее значение для юридических лиц.
                    type: string
                    enum:
                      - SALUTE_SPEECH_PERS
                      - SALUTE_SPEECH_CORP
                    example: SALUTE_SPEECH_PERS
               required:
                 - scope
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token'
          description: OK
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      security:
        - Базовая аутентификация: [client_id, client_secret]
      operationId: postToken
      summary: Получить токен доступа
      description: |
        Возвращает токен доступа для авторизации запросов к API.
        Токен доступа действителен в течение 30 минут.

        В заголовке `Authorization` нужно передать авторизационные данные — строку, полученную в результате кодирования в base64 идентификатора (Client ID) и клиентского ключа (Client Secret) API.

        Консоль запросов автоматически кодирует заданные идентификатор и клиентский ключ.

        :::note

        Используйте полученный токен для авторизации запросов на синтез и распознавание речи (синхронный или асинхронный).

        :::
  /speech:recognize:
    post:
      requestBody:
        content:
          audio/mpeg:
            schema:
              type: object
          audio/flac:
            schema:
              type: object
          audio/ogg;codecs=opus:
            schema:
              type: object
          audio/x-pcm;bit=16;rate=8000:
            schema:
              type: object
          audio/x-pcm;bit=16;rate=16000:
            schema:
              type: object    
          audio/pcma;rate=8000:
            schema:
              type: object
          audio/pcma;rate=16000:
            schema:
              type: object    
          audio/pcmu;rate=8000:
            schema:
              type: object
          audio/pcmu;rate=16000:
            schema:
              type: object    
        required: true
      tags:
        -  Recognition
      parameters:
        - name: language
          description: Язык для распознавания речи.
          example: ru-RU
          schema:
            type: string
            enum:
              - ru-RU
              - en-US
              - kk-KZ
          in: query
        - name: enable_profanity_filter
          description: Включить/выключить фильтр обсценной лексики
          example: false
          schema:
            type: boolean
          in: query
        - name: model
          description: Название модели для распознавания речи
          example: general
          schema:
            type: string
            enum:
              - general
              - callcenter
          in: query
        - name: sample_rate 
          example: 16000
          description: Частота дискретизации
          schema:
            type: integer
          in: query  
        - name: channels_count
          example: 2
          description: Количество каналов в многоканальном аудио
          schema:
            type: integer
          in: query  
        - $ref: '#/components/parameters/requestId'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecognizeRS'
          description: OK
        '400':
          $ref: '#/components/responses/BadRequestFormat'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/ModelDetermination'
        '413':
          $ref: '#/components/responses/PayloadLarge'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - Токен доступа: []  
      description: >
        Возвращает результат распознавания речи после обработки всей аудиозаписи.

        Максимальный размер аудио – 2 Мб, максимальная длина – одна минута.

        Для многоканального аудио распознается только первый канал.
      summary: Распознать речь в аудио файле
      operationId: post-speech-recognition
  /text:synthesize:
    post:
      requestBody:
        content:
          application/text:
            schema: 
              type: string
              description: Текст для синтеза в формате UTF-8.
              maxLength: 4000
            example: Привет из 1984!
          application/ssml:
            schema:
              type: string
              description: |
                Текст для синтеза с SSML-разметкой.
                
                Подробнее о разметке — в разделе [Как улучшить синтез](/ru/salutespeech/synthesis/ssml).
              maxLength: 4000
              example: <speak>За'мок на замке</speak>
      tags: 
        - Synthesis 
      parameters:
        - name: format
          description: |
            Формат синтезируемого аудио.
          schema:
            type: string
            enum: 
              - wav16
              - pcm16
              - opus
              - pcm16
            default: wav16
          in: query  
        - name: voice
          description: |
            Код голоса, первая часть означает диктора, вторая - частоту дискретизации аудио.
            
            Модели с частотой 8000 Гц предназначены для использования в телефонии.
            
            Вы можете выбрать голос из раздела [Примеры голосов для синтеза](/ru/salutespeech/synthesis/voices) или использовать уникальный брендированный голос с помощью сервиса [YourVoice](https://developers.sber.ru/portal/products/smartspeech-yourvoice).
          schema:
            type: string 
            example: Nec_24000
          in: query
        - name: rebuild_cache
          description: Пересоздать кэш. Если true, то сервис  перегенерит запись и перезапишет по ней кэш даже если кэш был. По умолчанию false
          schema:
            type: boolean
          example: false  
          in: query  
        - name: bypass_cache
          description: Запрет использования кэша. Если true, то сервис не будет использовать существующих кэш. По умолчанию false
          schema:
            type: boolean
          example: false  
          in: query  
        - $ref: "#/components/parameters/requestId"
      responses:
        '200':
          content:
            audio/x-wav:
              schema:
                type: string
                format: binary
            audio/x-pcm;bit=16;rate=8000:
              schema:
                type: string
                format: binary
            audio/x-pcm;bit=16;rate=24000:
              schema:
                type: string
                format: binary    
            audio/ogg; codecs=opus:
              schema:
                type: string
                format: binary
          description: Возвращает бинарное представление синтезированного звука      
        '400':
          $ref: '#/components/responses/BadRequestFormat'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - Токен доступа: []      
      description: |
        Возвращает бинарное представление синтезированного звука в запрошенном формате.


      summary: Синтезировать речь 
      operationId: post-speech-synthesis
  /speech:async_recognize:
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AsyncRecRq' 
      tags: 
        - Recognition      
      parameters: 
        - $ref: '#/components/parameters/requestId'
      responses:
        '200':
          content:
            application/json:
              schema:
               $ref: '#/components/schemas/AsyncRs'
          description: Возвращает идентификатор созданной задачи на распознавание.
        '400':
          $ref: '#/components/responses/BadRequestFormat'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '413':
          $ref: '#/components/responses/PayloadLarge'
        '500':
          $ref: '#/components/responses/InternalError'   
      security:
        - Токен доступа: []   
      summary: Создать задачу на распознавание
      description: >
            Возвращает идентификатор созданной задачи на распознавание.

            В запросе нужно передать идентификатор [загруженного файла](/ru/salutespeech/api/reference/rest/post-data-upload), а также параметры распознавания.

            :::note

            Подробнее — в разделе [Асинхронное распознавание речи](/ru/salutespeech/recognition/recognition-async-http).

            :::
      operationId: post-async-speech-recognition
  /text:async_synthesize:
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AsyncSynRq'
        description: Возвращает идентификатор задачи на синтез
      tags: 
        - Synthesis
      parameters: 
        - $ref: '#/components/parameters/requestId'
      responses: 
        '200':
          content:
            application/json:
              schema:
               $ref: '#/components/schemas/AsyncRs'
          description: Идентификатор созданной задачи на синтез.
        '400':
          $ref: '#/components/responses/BadRequestFormat'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '413':
          $ref: '#/components/responses/PayloadLarge'
        '500':
          $ref: '#/components/responses/InternalError'   
      security:
        - Токен доступа: []
      summary: Создать задачу на синтез 
      description: >
            Возвращает идентификатор созданной задачи на синтез.

            В запросе нужно передать идентификатор [загруженного файла](/ru/salutespeech/api/reference/rest/post-data-upload), а также параметры распознавания.

            :::note

            Подробнее — в разделе [Асинхронный синтез речи](/ru/salutespeech/synthesis/synthesis-async-http).

            :::
      operationId: post-async-speech-synthesis
  /text:sync_synthesize:
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SyncRq'
        description: Возвращает идентификатор задачи на синтез
      tags: 
        - Synthesis
      parameters: 
        - $ref: '#/components/parameters/requestId'
      responses: 
        '200':
          content:
            application/json:
              schema:
               $ref: '#/components/schemas/SyncRq'
          description: Идентификатор созданной задачи на синтез.
        '400':
          $ref: '#/components/responses/BadRequestFormat'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '413':
          $ref: '#/components/responses/PayloadLarge'
        '500':
          $ref: '#/components/responses/InternalError'   
      security:
        - Токен доступа: []
      summary: Создать задачу на синтез 
      description: >
            Возвращает идентификатор созданной задачи на синтез.
      operationId: post-sync-speech-synthesis
  /data:upload:  
   post:
    requestBody:
      content:
          audio/mpeg:
            schema:
              type: string
          audio/flac:
            schema:
              type: string
          audio/ogg;codecs=opus:
            schema:
              type: string
          audio/x-pcm;bit=16;rate=8000:
            schema:
              type: string
          audio/x-pcm;bit=16;rate=16000:
            schema:
              type: string    
          audio/pcma;rate=8000:
            schema:
              type: string
          audio/pcma;rate=16000:
            schema:
              type: string    
          audio/pcmu;rate=8000:
            schema:
              type: string
          audio/pcmu;rate=16000:
            schema:
              type: string    
          text/plain:
            schema:
              type: string
          application/ssml:
            schema:
              type: string
    tags:
      - Files
    parameters:
      - $ref: '#/components/parameters/requestId'
    responses:
      '200':
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FileUpload'
        description: Возвращает идентификатор загруженного файла   
    summary: Загрузить файл
    description: >
      Возвращает идентификатор загруженного файла.
      
      В теле запроса передается текстовый или аудиофайл.
      
      Идентификатор загруженного файла используется для создания задачи на [асинхронный синтез](/ru/salutespeech/api/reference/rest/post-async-speech-synthesis) или [распознавание речи](/ru/salutespeech/api/reference/rest/post-async-speech-recognition).

      :::note

      Подробнее о работе в асинхронном режиме в разделах [Асинхронный синтез речи](/ru/salutespeech/synthesis/synthesis-async-http) и [Асинхронное распознавание речи](/ru/salutespeech/recognition/recognition-async-http).

      :::
    operationId: post-data-upload
    security:
      - Токен доступа: [] 
  /task:get:
    get:
      tags:
        - Tasks
      parameters:
        - name: id
          description: Идентификатор созданной задачи
          schema:
            type: string
          in: query  
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncStatus'
          description: Возвращает статус задачи
      security:
        - Токен доступа: []  
      summary: Получить статус задачи 
      description: >
        Возвращает статус задачи.
        Используется для синтеза и распознавания речи в асинхронном режиме.

        :::note

        Подробнее о работе в асинхронном режиме в разделах [Асинхронный синтез речи](/ru/salutespeech/synthesis/synthesis-async-http) и [Асинхронное распознавание речи](/ru/salutespeech/recognition/recognition-async-http).

        :::
      operationId: get-async-task
  /data:download: 
    get:
      tags:
        - Files
      parameters:
        - name: response_file_id  
          description: Идентификатор загруженного файла
          schema:
            type: string
          in: query
          required: true
      responses:
        '200':
          content:
            application/octet-stream:
              schema:
                format: string
                type: string
          description: Возвращает файл  
        '400':
          $ref: '#/components/responses/BadRequestFormat'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '413':
          $ref: '#/components/responses/PayloadLarge'
        '500':
          $ref: '#/components/responses/InternalError' 
      security:
        - Токен доступа: []    
      summary: Скачать файл c результатом  
      description: >
        Результат выполнения задачи на асинхронный синтез или распознавание речи.
        В зависимости от задачи возвращает:

        * бинарное содержимое файла, если была поствалена задача на синтез речи.
        
        * JSON-файл с текстом, если была поставлена задача на распознавание речи.

        :::note

        Подробнее о работе в асинхронном режиме в разделах [Асинхронный синтез речи](/ru/salutespeech/synthesis/synthesis-async-http) и [Асинхронное распознавание речи](/ru/salutespeech/recognition/recognition-async-http).

        :::
      operationId: get-data-download
components:
  parameters:
    requestId:
      name: X-Request-ID
      description: Уникальный ID запроса, который используется для поиска запроса в логах. Если ID не задан явно, то сервер сгенерирует его автоматически.
      schema:
        type: string
        format: uuid
        pattern: (([0-9a-fA-F-])36)
        example: 22345200-abe8-4f60-90c8-0d43c5f6c0f6
      in: header    
  schemas:
    SyncRq:
      type: object
      properties:
        request_file_id:
          description: Идентификатор загруженного файла.
          type: string
          format: uuid
          pattern: (([0-9a-fA-F-])36)
        audio_encoding:
          description: |
            Аудиокодек.

            Подробнее — в разделе [Доступные форматы аудио](/ru/salutespeech/recognition/encodings).
          type: string
          
          enum:
            - wav16
            - pcm16
            - opus
            - alaw
        voice:
          description: |
            Код голоса, первая часть означает диктора, вторая - частоту дискретизации аудио.
            
            Возможные значения смотрите в разделе [Примеры голосов](/ru/salutespeech/synthesis/voices).
          type: string
          example: Nec_24000
      required:
        - request_file_id
        - audio_encoding
        - voice
    AsyncSynRq:
      type: object
      properties:
        request_file_id:
          description: Идентификатор загруженного файла.
          type: string
          format: uuid
          pattern: (([0-9a-fA-F-])36)
        audio_encoding:
          description: |
            Аудиокодек.

            Единственное возможное значение — `opus`.

            Подробнее — в разделе [Доступные форматы аудио](/ru/salutespeech/recognition/encodings).
          type: string
          enum:
            - Opus
            - MP3
            - PCM_S16LE
            - FLAC
            - ALAW
            - MULAW
        voice:
          description: |
            Код голоса для озвучивания.
            
            Возможные значения смотрите в разделе [Примеры голосов](/ru/salutespeech/synthesis/voices).
          type: string
          example: Ost_24000
      required:
        - request_file_id
        - audio_encoding
        - voice
    RecognizeRS:
      type: object
      properties:
        result:
          description: Массив строк — предложений распознанного текста.
          type: array
          items:
            type: string
          example:
            - Предложение №1
            - Предложение №2
            - Предложение №n
        emotions:
          description: Массив эмоций, распознанных в записи.
          type: array
          items:
            $ref: '#/components/schemas/Emotions'
        status:
          description: HTTP-код ответа.
          type: integer
          example: 200
    FileUpload:
      type: object
      properties:
        status:
          description: HTTP-код ответа.
          type: integer
          example: 200 
        result:
          $ref: '#/components/schemas/ResultFileUpload'
    Options:
      type: object
      required: 
        - audio_encoding
      properties:
        model:
          description: Название модели для распознавания речи
          example: general
          type: string
          enum:
            - general

            - callcenter
        audio_encoding:
          description: Аудио-кодек
          type: string
          enum: 
            - PCM_S16LE
            - OPUS
            - MP3
            - FLAC
            - ALAW
            - MULAW
        sample_rate:
          description: |
            Частота дискретизации. Зависит от значения `audio_encoding`NormalizationOptions.enable
            
            Подробнее о частоте дискретизации — в разделе [Доступные форматы аудио](/ru/salutespeech/recognition/encodings).
          type: integer 
          example: 16000
        language:
          description: |
            Язык для распознавания речи.

            Доступные языки: 
            
            * `ru-RU` — русский;
            * `en-US` — английский;
            * `kk-KZ` — казахский. Доступно по отдельной заявке, напишите на почту SaluteSpeech@sberbank.ru.
          example: ru-RU
          default: ru-RU
          type: string
          enum:
            - ru-RU
            - en-US
            - kk-KZ
        enable_profanity_filter:
          description: Фильтр обсценной лексики.
          type: boolean
          example: true
          default: false
        hypotheses_count:
          description: Количество сообщаемых альтернативных гипотез распознанной речи.
          type: integer
          minimum: 0
          maximum: 10
          default: 1
        no_speech_timeout:
          description: Интервал ожидания речи пользователя.
          format: duration
          type: number
          minimum: 2
          maximum: 20
          default: 7
          example: 2
        max_speech_timeout:
          description: Определение максимальной длины высказывания до форсированного EOU. По умолчанию стоит 20 секунд. 
          format: duration
          type: number
          minimum: 0.5
          maximum: 20
          default: 20
          example: 2
        hints:
          $ref: '#/components/schemas/Hints'
        channels_count:
          description: Количество каналов в многоканальном аудио. Подробнее об ограничениях — в разделе [Доступные форматы аудио](/ru/salutespeech/recognition/encodings).
          type: integer
          minimum: 1
          maximum: 10
          example: 1
          default: 1
        speaker_separation_options:
          $ref: '#/components/schemas/SpeakerSeparationOptions'
        insight_models:
          description: |
            Оценка удовлетворенности клиента по аудио с использованием моделей Insights.

            Работает только для двухканальных аудио.

            Возможные значения:
            - `csi`;
            - `call_features`;
            - `csi, call_features`.

            Подробнее — в разделе [Insights модели](/ru/salutespeech/recognition/insights-models).
          type: array
          items:
            type: string
          example: 
            - csi
            - call_features
    AsyncRecRq:
      description: Параметры запроса
      type: object
      properties:
        options:
          $ref: '#/components/schemas/Options'
        request_file_id:
          description: Идентификатор загруженного файла.
          type: string
          format: uuid
          pattern: (([0-9a-fA-F-])36)
          example: 2b325f72-1fa2-498c-aa2f-f7f3e88882dс
      required: 
        - options  
        - request_file_id
    AsyncRs:
      description: Возвращает уникальный идентификатор и основные параметры задачи 
      type: object
      required:
        - status
        - result
      properties:
        status:
          description: HTTP-код ответа.
          type: integer
          example: 200
        result:
          $ref: '#/components/schemas/ResultAsyncRs'
    AsyncStatus:
      description: Возвращает статус задачи
      type: object
      required:
        - status
        - result
      properties:
        status:
          description: HTTP-код ответа.
          type: integer
          example: 200
        result:
          $ref: '#/components/schemas/ResultAsyncStatus'
    ResultAsyncStatus:
      description: Результат выполнения задачи
      type: object 
      properties:
        id:
          description: Идентификатор задачи
          type: string
          example: 5f5c6e6eed15b23b357852d52d3c979f
        created_at:
          description: Дата создания задачи
          type: string
          format: date-time
          example: 2017-10-10T10:00:00.000+03:00
        updated_at:
          description: Дата обновления статуса задачи
          type: string
          format: date-time
          example: 2021-01-01T00:00:00.000+03:00
        status:
          description: Статус задачи
          type: string
          enum: 
            - NEW
            - RUNNING
            - CANCELED
            - DONE
            - ERROR
          example: NEW  
        response_file_id:
          description: Идентификатор файла
          type: string
          example: 2b325f72-1fa2-498c-aa2f-f7f3e88882dс
    ResultAsyncRs:
      description: Результат создания задачи 
      type: object 
      properties:
        id:
          description: Идентификатор задачи 
          type: string
          example: 5f5c6e6eed15b23b357852d52d3c979f
        created_at:
          description: Дата создания задачи
          type: string
          format: date-time
          example: 2017-10-10T10:00:00.000+03:00
        updated_at:
          description: Дата обновления статуса задачи
          type: string
          format: date-time
          example: 2021-01-01T00:00:00.000+03:00
        status:
          description: Статус задачи
          type: string
          enum: 
            - NEW
            - RUNNING
            - CANCELED
            - DONE
            - ERROR
          example: NEW  
    SpeakerSeparationOptions:
      description: Параметры разделения спикеров для фрагментов одновременной речи.
      type: object
      properties:
        enable:
          description: Включение функции разделения спикеров.
          type: boolean
          example: false 
          default: false
        enable_only_main_speaker:
          description: Возвращение только главного спикера. Главный находится по `max(main_speaker_confidence)`.
          type: boolean
          example: false
          default: false
        count:
          description: Максимальное число спикеров.
          type: integer
          minimum: 1
          maximum: 10 
          example: 1
    Hints:
      description: Подсказки
      type: object
      properties:
        words:
          description: Список слов или фраз, распознавание которых мы хотим усилить. Здесь можно перечислить слова, которые с высокой вероятностью будет произносить пользователь
          type: array
          items:
            type: string
          example: 
            - карту
            - гуакамоле
        enable_letters:
          description: Модель коротких фраз, улучшающая распознавание отдельных букв и коротких слов.
          type: boolean 
          example: false
          default: false
        eou_timeout:
          description: Настройка распознавания конца фразы (End of Utterance - eou). Такое распознавание будет ожидаться после конца фразы столько секунд, сколько установлено в этом параметре. По умолчанию распознавание конца фразы срабатывает после 1 секунды
          format: duration
          type: number
          minimum: 0.5
          maximum: 5 
          example: 1
          default: 1
    Emotions:
      description: |
        Список эмоций для каждой строки распознанного текста с соответствующим индексом. Например, `emotions[8]` соответствует `result[8]`.
        
        Значения эмоциональной окраски речи приходят в виде коэффициентов в диапазоне от 0 до 1, где 1 — наиболее вероятная эмоция ответа, а 0 — наименее вероятная
      type: object
      properties:
        neutral:
          format: float
          description: Вероятность нейтральной эмоциональной окраски речи.
          minimum: 0
          maximum: 1
          type: number
          example: 1.0
        positive:
          format: float
          description: Вероятность позитивной эмоциональной окраски речи.
          minimum: 0
          maximum: 1
          type: number
          example: 0.19889654
        negative:
          format: float
          description: Вероятность негативной эмоциональной окраски речи.
          minimum: 0
          maximum: 1
          type: number
          example: 0.5878547645
        neutral_a:
          format: float
          description: нейтральная окраска звука
          type: number
          example: 0.98964
        positive_a:
          format: float
          description: позитивная окраска звука
          type: number
          example: 0.1
        negative_a:
          format: float
          description: негативная окраска звука
          type: number
          example: 0.1567795
        neutral_t:
          format: float
          description: нейтральная окраска распознанного текста
          type: number
          example: 1.0
        positive_t:
          format: float
          description: позитивная окраска распознанного текста
          type: number
          example: 0.197864
        negative_t:
          format: float
          description: негативная окраска распознанного текста
          type: number
          example: 0.656345487
    ResultFileUpload:
      description: Индентификатор загруженного файла
      type: object
      properties:
        request_file_id:
          description: Идентификатор загруженного файла. Выдается в результате успешного выполнения задачи на распознавание.
          type: string
          format: uuid
          pattern: (([0-9a-fA-F-])36)
          example: 8c5f10d8-9ce7-44ee-a574-eefc5d17c1c4
    Token:
      type: object
      properties:
        Токен доступа:
          type: string
          description: Токен для авторизации запросов.
          example: >-
            eyJhbGci3iJkaXIiLCJlbmMiOiJBMTI4R0NNIiwidHlwIjoiSldUIn0..Dx7iF7cCxL8SSTKx.Uu9bPK3tPe_crdhOJqU3fmgJo_Ffvt4UsbTG6Nn0CHghuZgA4mD9qiUiSVC--okoGFkjO77W.vjYrk3T7vGM6SoxytPkDJw
        expires_at:
          format: int64
          description: Дата и время истечения действия токена в формате Unix time.
          type: integer
          example: 1679471442
      
  responses:
    UnauthorizedError:
      description: Unauthorized
    TokenExpired:
      description: Token has expired
    ModelDetermination:
      description: Model determination error
    InternalError:
      description: Internal Server Error
    BadRequestFormat:
      description: Bad request format
    TooManyRequests:
      description: Too many requests
    ValidationError:
      description: Validation error
    PayloadLarge:
      description: Payload too large        
  securitySchemes:
    Базовая аутентификация:
      description: |
        Базовая (Basic) аутентификация с помощью авторизационных данных — строки, полученной в результате кодирования в base64 идентификатора (Client ID) и клиентского ключа (Client Secret) API.

        Авторизационные данные передаются в заголовке `Authorization`, в запросе на [получение токена доступа](/ru/salutespeech/api/reference/rest/post-token).
      scheme: basic
      type: http
    Токен доступа:
      description: Аутентификация с помощью токена доступа. Используется во всех запросах к SaluteSpeech REST API, кроме запроса на [получение токена доступа](/ru/salutespeech/api/reference/rest/post-token).
      type: http
      scheme: bearer
      bearerFormat: JWT

# Powered by APIStudio