openapi: 3.2.0
info:
  title: API-протокол для работы с HEROSMS
  description: >-
    Используете программы для регистрации? HeroSMS совместим с бывшими
    партнерами SMS-Activate.


    1. Выберите любую программу, которая включает SMS-Activate в число своих
    сервисов приема SMS.

    2. Выберите SMS-Activate в качестве сервиса для приема SMS.

    3. В настройках вашей программы замените хост с https://api.sms-activate.ae
    на https://hero-sms.com.

    4. Введите ключ API из вашей учетной записи HeroSMS (запросите его на нашем
    сайте).


    Если у вас возникнут какие-либо трудности, пожалуйста, свяжитесь с нашей
    службой технической поддержки. Мы решим все проблемы.
  version: "1.0"
servers:
  - url: https://hero-sms.com/api/v1
    description: HeroSMS API server
  - url: https://hero-sms.com/stubs/handler_api.php
    description: SMS-Activate API-compatible server
paths:
  /activations/history:
    get:
      tags:
        - Activations
      summary: История активаций
      operationId: 82eacb597b010298c78dacd1f0bdd3ff
      parameters:
        - $ref: "#/components/parameters/fromRequired"
        - $ref: "#/components/parameters/toRequired"
        - $ref: "#/components/parameters/servicesQuery"
        - $ref: "#/components/parameters/countriesQuery"
        - $ref: "#/components/parameters/activationStatusesQuery"
        - $ref: "#/components/parameters/size"
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/sort"
        - $ref: "#/components/parameters/search"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      properties:
                        id:
                          type: integer
                        createDate:
                          description: Дата создания
                          type: string
                          example: 2025-03-18 10:40:37
                        service:
                          $ref: "#/components/schemas/ServiceId"
                        country:
                          $ref: "#/components/schemas/CountryId"
                        phone:
                          $ref: "#/components/schemas/ActivationPhone"
                        moreCodes:
                          description: Пришедшие коды активаций
                          type: string
                          example: 637881 is your verification code
                        cost:
                          $ref: "#/components/schemas/Price"
                        status:
                          $ref: "#/components/schemas/ActivationStatusTypes"
                        phoneCode:
                          type: string
                          example: "+55"
                        currency:
                          $ref: "#/components/schemas/Currency"
                      type: object
                  totals:
                    properties:
                      sum:
                        description: Сумма
                        type: number
                        format: float
                        example: 0.6
                      successCount:
                        description: Количество успешных активаций
                        type: integer
                        example: 1
                    type: object
                  meta:
                    $ref: "#/components/schemas/PaginationMetaData"
                type: object
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
      x-sort-columns:
        - id
        - cost
        - createDate
  /activations/{activationId}/otp/last:
    get:
      tags:
        - Activation OTP
      summary: Получить последнее OTP активной активации
      operationId: getActivationOtpLast
      parameters:
        - $ref: "#/components/parameters/activationPath"
      responses:
        "200":
          $ref: "#/components/responses/ActivationOtpSuccessResponse"
        "400":
          $ref: "#/components/responses/BadRequestResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /activations/{activationId}/otp:
    get:
      tags:
        - Activation OTP
      summary: Получить список OTP активной активации
      operationId: getActivationOtpList
      parameters:
        - $ref: "#/components/parameters/activationPath"
      responses:
        "200":
          $ref: "#/components/responses/ActivationOtpListSuccessResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /activations:
    get:
      tags:
        - Activations
      summary: Получить список активных активаций
      description: Возвращает список активных активаций. В каждую активацию вложен
        полный список OTP.
      operationId: getActiveActivations
      parameters:
        - $ref: "#/components/parameters/size"
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/sort"
        - $ref: "#/components/parameters/search"
        - $ref: "#/components/parameters/verificationTypeQuery"
        - $ref: "#/components/parameters/from"
        - $ref: "#/components/parameters/to"
      responses:
        "200":
          $ref: "#/components/responses/ActivationsSuccessResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
      x-sort-columns:
        - id
    post:
      tags:
        - Activations
      summary: Купить активацию
      operationId: buyActivationBatch
      requestBody:
        $ref: "#/components/requestBodies/BuyActivationRequestBody"
      responses:
        "200":
          $ref: "#/components/responses/ActivationsSuccessResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "403":
          $ref: "#/components/responses/ActivationBannedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /activations/{activationId}:
    delete:
      tags:
        - Activations
      summary: Отменить активацию
      description: Отмена активации и возврат средств. Отмена возможна только если
        активация не получила ни одного OTP или по активации со сроком жизни от
        24 часов прошло менее 20 минут. Иначе вызывайте `POST
        /activations/{activationId}/finish`.
      operationId: cancelActivation
      parameters:
        - $ref: "#/components/parameters/activationPath"
      responses:
        "204":
          $ref: "#/components/responses/NoContentResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /activations/{activationId}/finish:
    post:
      tags:
        - Activations
      summary: Завершить активацию
      description: Успешное завершение активации. Средства не возвращаются.
      operationId: finishActivation
      parameters:
        - $ref: "#/components/parameters/activationPath"
      responses:
        "204":
          $ref: "#/components/responses/NoContentResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /activations/{activationId}/replace:
    post:
      tags:
        - Activations
      summary: Запросить смену номера
      operationId: replaceActivation
      parameters:
        - $ref: "#/components/parameters/activationPath"
      responses:
        "200":
          $ref: "#/components/responses/ActivationsSuccessResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "403":
          $ref: "#/components/responses/ActivationBannedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /activations/{activationId}/reactivate:
    post:
      tags:
        - Activations
      summary: Возобновить работу с номером
      description: Возобновить работу с номером возможно, только если активация была
        завершена успешно.
      operationId: reactivateActivation
      parameters:
        - $ref: "#/components/parameters/activationPath"
      requestBody:
        $ref: "#/components/requestBodies/ReactivateActivationRequestBody"
      responses:
        "200":
          $ref: "#/components/responses/ActivationsSuccessResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /activations/{activationId}/reactivate/options:
    get:
      tags:
        - Activations
      summary: Получить доступные варианты возобновления работы с номером
      operationId: reactivateOptions
      parameters:
        - $ref: "#/components/parameters/activationPath"
      responses:
        "200":
          $ref: "#/components/responses/ActivationExtendOptionsSuccessResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /activations/{activationId}/prolong:
    post:
      tags:
        - Activations
      summary: Продление аренды номера
      operationId: prolongActivation
      parameters:
        - $ref: "#/components/parameters/activationPath"
      requestBody:
        $ref: "#/components/requestBodies/ProlongActivationRequestBody"
      responses:
        "200":
          $ref: "#/components/responses/ActivationsSuccessResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "425":
          $ref: "#/components/responses/TooEarlyRequestResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /activations/{activationId}/prolong/options:
    get:
      tags:
        - Activations
      summary: Получить доступные варианты продления номера
      operationId: prolongOptions
      parameters:
        - $ref: "#/components/parameters/activationPath"
      responses:
        "200":
          $ref: "#/components/responses/ActivationExtendOptionsSuccessResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "425":
          $ref: "#/components/responses/TooEarlyRequestResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /activations/{activationId}/prolong/history:
    get:
      tags:
        - Activations
      summary: Получить историю продления номера
      operationId: prolongActivationHistory
      parameters:
        - $ref: "#/components/parameters/activationPath"
      responses:
        "200":
          $ref: "#/components/responses/ProlongHistorySuccessResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /classifiers/activations/custom-durations:
    get:
      tags:
        - Classifiers
      summary: Справочник позиций с нестандартной продолжительностью жизни активаций
      operationId: customDurations
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                required:
                  - data
                properties:
                  data:
                    description: service
                    type: object
                    additionalProperties:
                      description: country
                      type: object
                      additionalProperties:
                        description: minutes
                        type: integer
                        example: 60
                type: object
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
  /activations/stats:
    get:
      tags:
        - Activations
      summary: Статистика текущего пользователя
      description: Возвращает статистику активаций для текущего авторизованного пользователя
      operationId: getActivationStats
      parameters:
        - name: date
          in: query
          description: Дата, за которую нужна статистика
          required: false
          schema:
            type: string
            format: date
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties:
                      country:
                        properties:
                          service:
                            properties:
                              count:
                                type: integer
                                example: 10
                              success:
                                type: integer
                                example: 5
                              percent:
                                $ref: "#/components/schemas/Percent"
                            type: object
                        type: object
                    type: object
                type: object
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /activations/offers/{verificationType}:
    get:
      tags:
        - Activations
      summary: Получить предложения активаций
      description: Возвращает предложения активаций, сгруппированные по сервисам и
        странам, и метаданные для их отображения
      operationId: getActivationOffers
      parameters:
        - $ref: "#/components/parameters/verificationTypePath"
        - $ref: "#/components/parameters/servicesPath"
        - $ref: "#/components/parameters/countriesPath"
      responses:
        "200":
          $ref: "#/components/responses/ActivationsOffersSuccessResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/OfferNotFoundResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "429":
          $ref: "#/components/responses/TooManyRequestsResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /emails:
    get:
      tags:
        - Emails
      summary: Получить список активных покупок
      operationId: 7f17119e77aad0c154d2f5e600ef092a
      parameters:
        - $ref: "#/components/parameters/search"
        - $ref: "#/components/parameters/size"
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/sort"
        - $ref: "#/components/parameters/emailStatusesQuery"
        - $ref: "#/components/parameters/from"
        - $ref: "#/components/parameters/to"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: "#/components/schemas/EmailActivation"
                type: object
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
      x-sort-columns:
        - id
        - status
        - cost
        - date
    post:
      tags:
        - Emails
      summary: Купить активацию по почте
      operationId: 22164e5067a27560b8fbf28b2ac1f019
      requestBody:
        content:
          application/json:
            schema:
              required:
                - site
                - domain
              properties:
                site:
                  $ref: "#/components/schemas/EmailSite"
                domain:
                  $ref: "#/components/schemas/EmailDomain"
                maxPrice:
                  $ref: "#/components/schemas/EmailMaxPrice"
              type: object
      responses:
        "201":
          $ref: "#/components/responses/EmailActivationSuccessResponse"
        "400":
          $ref: "#/components/responses/BadRequestResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /emails/batch:
    post:
      tags:
        - Emails
      summary: Купить активацию по почте пачками
      operationId: 7892a59d83e6e38d154854fe1f1b065f
      requestBody:
        content:
          application/json:
            schema:
              required:
                - site
                - domain
                - count
              properties:
                site:
                  $ref: "#/components/schemas/EmailSite"
                domain:
                  $ref: "#/components/schemas/EmailDomain"
                count:
                  description: Количество почт для активации (от 1 до 10)
                  type: integer
                  example: 5
                  maximum: 10
                  minimum: 1
                maxPrice:
                  $ref: "#/components/schemas/EmailMaxPrice"
              type: object
      responses:
        "201":
          $ref: "#/components/responses/EmailActivationBatchSuccessResponse"
        "400":
          $ref: "#/components/responses/BadRequestResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /emails/{emailId}:
    get:
      tags:
        - Emails
      summary: Проверить состояние активации по почте
      operationId: c57ebd15edbfa8625b8a60984b76e3c6
      parameters:
        - $ref: "#/components/parameters/emailId"
      responses:
        "200":
          $ref: "#/components/responses/EmailActivationSuccessResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "409":
          $ref: "#/components/responses/RaceConditionResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
    delete:
      tags:
        - Emails
      summary: Отменить покупку активации по почте
      operationId: 20dae8daa691db1282f0d1d268dbac44
      parameters:
        - $ref: "#/components/parameters/emailId"
      responses:
        "204":
          description: OK
        "400":
          $ref: "#/components/responses/EmailCancelBadRequestResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "409":
          $ref: "#/components/responses/EmailCancelConflictResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /emails/{emailId}/reorder:
    post:
      tags:
        - Emails
      summary: Перезаказать активацию по почте
      operationId: bb0d53e0557982f130c1540ed663e831
      parameters:
        - $ref: "#/components/parameters/emailId"
      responses:
        "200":
          $ref: "#/components/responses/EmailActivationSuccessResponse"
        "400":
          $ref: "#/components/responses/EmailReorderBadRequestResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /emails/domains:
    get:
      tags:
        - Emails
      summary: Получить список доступных доменов
      description: Метод устарел. Используйте метод GET emails/offers
      operationId: 59f271906bdbc81b6b2cdd4213b01775
      parameters:
        - name: site
          in: query
          description: Сайт для которого берётся активация
          required: true
          schema:
            type: string
            example: telegram.com
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      properties:
                        name:
                          description: Наименование домена
                          type: string
                        cost:
                          $ref: "#/components/schemas/Price"
                        count:
                          description: Количество доступных почт
                          type: integer
                      type: object
                type: object
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      deprecated: true
      security:
        - apiKeyAuth: []
  /emails/offers:
    get:
      tags:
        - Emails
      summary: Офферы по доменам
      description: "Возвращает ценовые позиции по доменам сайта: внутри домена по
        цене, домены по минимальной цене"
      operationId: f8e545c04e941382450fcc88b14c4e89
      parameters:
        - name: site
          in: query
          required: true
          schema:
            $ref: "#/components/schemas/EmailSite"
        - name: domain
          in: query
          description: Фильтр по домену
          required: false
          schema:
            $ref: "#/components/schemas/EmailDomain"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: "#/components/schemas/EmailOfferDomain"
                type: object
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  /stats/deliverability:
    get:
      tags:
        - Statistics
      summary: Получить статистику доставляемости по странам
      description: Возвращает топ стран по доставляемости для выбранных сервисов
      operationId: 60679e939ef779f9063f3a035599e820
      parameters:
        - $ref: "#/components/parameters/servicesQueryRequired"
        - $ref: "#/components/parameters/countriesQuery"
        - $ref: "#/components/parameters/intervalQuery"
        - $ref: "#/components/parameters/successCountQuery"
        - $ref: "#/components/parameters/size"
        - $ref: "#/components/parameters/withOperatorsQuery"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    description: "Статистика по странам для каждого сервиса: ключ - код сервиса,
                      значение - страны по убыванию доставляемости"
                    type: object
                    additionalProperties:
                      type: array
                      items:
                        required:
                          - country
                          - successRate
                        properties:
                          country:
                            $ref: "#/components/schemas/CountryId"
                          successRate:
                            $ref: "#/components/schemas/SuccessRate"
                          operators:
                            description: Присутствует только если параметр withOperators=true
                            type:
                              - array
                              - "null"
                            items:
                              properties:
                                code:
                                  $ref: "#/components/schemas/OperatorCode"
                                successRate:
                                  $ref: "#/components/schemas/SuccessRate"
                                share:
                                  description: Доля оператора от общего числа успешных покупок по стране, от 1%
                                    (сумма долей может быть меньше 100%)
                                  type: number
                                  format: float
                                  minimum: 1
                              type: object
                        type: object
                  meta:
                    properties:
                      filters:
                        properties:
                          services:
                            type: array
                            items:
                              type: string
                          countries:
                            type: array
                            items:
                              type: integer
                          interval:
                            type: integer
                          successCount:
                            type: string
                            enum:
                              - very_high
                              - high
                              - medium
                              - low
                          withOperators:
                            type: boolean
                        type: object
                      updatedAt:
                        type: string
                        format: date-time
                    type: object
                type: object
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "422":
          $ref: "#/components/responses/UnprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/ServerErrorResponse"
      security:
        - apiKeyAuth: []
  ?action=getBalance:
    get:
      tags:
        - SMS-Activate
      summary: Запросить баланс аккаунта
      description: Возвращает текущий баланс в формате `ACCESS_BALANCE:<сумма>`
      operationId: getBalance
      responses:
        "200":
          description: Результат запроса баланса
          content:
            application/json:
              schema:
                type: string
              examples:
                successfulBalanceExample:
                  $ref: "#/components/examples/successfulBalanceExample"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "404":
          $ref: "#/components/responses/methodNotFoundResponse"
        "422":
          $ref: "#/components/responses/unprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=getNumber:
    get:
      tags:
        - SMS-Activate
      summary: Запросить номер
      description: Запрашивает телефонный номер для указанного сервиса и страны.
        Возвращает строку вида `ACCESS_NUMBER:<id_активации>:<номер>`
      operationId: getNumber
      parameters:
        - $ref: "#/components/parameters/qpSARequiredService"
        - $ref: "#/components/parameters/qpSARequiredCountry"
        - $ref: "#/components/parameters/qpSAOptionalOperator"
        - $ref: "#/components/parameters/qpSAOptionalMaxPrice"
        - $ref: "#/components/parameters/qpSAOptionalFixedPrice"
        - $ref: "#/components/parameters/qpSAOptionalRef"
        - $ref: "#/components/parameters/qpSAOptionalPhoneException"
      responses:
        "200":
          description: Результат запроса номера
          content:
            application/json:
              schema:
                type: string
              examples:
                successfulNumberExample:
                  $ref: "#/components/examples/successfulNumberExample"
                numbersNotFoundExample:
                  $ref: "#/components/examples/numbersNotFoundExample"
        "400":
          $ref: "#/components/responses/getNumberBadRequestResponse"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "402":
          $ref: "#/components/responses/paymentRequiredResponse"
        "403":
          $ref: "#/components/responses/forbiddenResponse"
        "404":
          $ref: "#/components/responses/methodNotFoundResponse"
        "422":
          $ref: "#/components/responses/unprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=getNumberV2:
    get:
      tags:
        - SMS-Activate
      summary: Запросить номер V2
      description: Аналогичен getNumber, но возвращает больше информации об активации
        (JSON-объект)
      operationId: getNumberV2
      parameters:
        - $ref: "#/components/parameters/qpSARequiredService"
        - $ref: "#/components/parameters/qpSARequiredCountry"
        - $ref: "#/components/parameters/qpSAOptionalOperator"
        - $ref: "#/components/parameters/qpSAOptionalMaxPrice"
        - $ref: "#/components/parameters/qpSAOptionalFixedPrice"
        - $ref: "#/components/parameters/qpSAOptionalRef"
        - $ref: "#/components/parameters/qpSAOptionalPhoneException"
      responses:
        "200":
          description: Результат запроса номера (V2)
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/successfulNumberv2Response"
              examples:
                successfulNumberv2Example:
                  $ref: "#/components/examples/successfulNumberv2Example"
                numbersNotFoundExample:
                  $ref: "#/components/examples/numbersNotFoundExample"
        "400":
          $ref: "#/components/responses/getNumberBadRequestResponse"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "402":
          $ref: "#/components/responses/paymentRequiredResponse"
        "403":
          $ref: "#/components/responses/forbiddenResponse"
        "404":
          $ref: "#/components/responses/methodNotFoundResponse"
        "422":
          $ref: "#/components/responses/unprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=setStatus:
    get:
      tags:
        - SMS-Activate
      summary: Изменить статус активации
      description: |-
        Управление жизненным циклом активации.
        Возможные статусы:
        - 3  — запросить повторную отправку SMS
        - 6  — завершить активацию (код получен и подтверждён)
        - 8  — отменить активацию (вернуть деньги)
      operationId: setStatus
      parameters:
        - $ref: "#/components/parameters/qpSARequiredActivationID"
        - $ref: "#/components/parameters/qpSARequiredActivationStatus"
      responses:
        "200":
          description: Результат изменения статуса
          content:
            application/json:
              schema:
                type: string
              examples:
                successfulRetryGetExample:
                  $ref: "#/components/examples/successfulRetryGetExample"
                successfulAccessActivationExample:
                  $ref: "#/components/examples/successfulAccessActivationExample"
                successfulAccessCancelExample:
                  $ref: "#/components/examples/successfulAccessCancelExample"
        "400":
          $ref: "#/components/responses/badRequestResponse"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "403":
          $ref: "#/components/responses/forbiddenResponse"
        "404":
          $ref: "#/components/responses/activationNotFoundResponse"
        "409":
          $ref: "#/components/responses/activationCancelConflictResponse"
        "422":
          $ref: "#/components/responses/unprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=getStatus:
    get:
      tags:
        - SMS-Activate
      summary: Получить статус активации
      description: Возвращает текущий статус активации в текстовом виде
        (STATUS_WAIT_CODE, STATUS_OK и т.д.) + код при наличии
      operationId: getStatus
      parameters:
        - $ref: "#/components/parameters/qpSARequiredActivationID"
      responses:
        "200":
          description: Текущий статус активации
          content:
            application/json:
              schema:
                type: string
              examples:
                successfulWaitCodeExample:
                  $ref: "#/components/examples/successfulWaitCodeExample"
                successfulWaitRetryExample:
                  $ref: "#/components/examples/successfulWaitRetryExample"
                successfulWaitResendExample:
                  $ref: "#/components/examples/successfulWaitResendExample"
                successfulCancelExample:
                  $ref: "#/components/examples/successfulCancelExample"
                successfulOKExample:
                  $ref: "#/components/examples/successfulOKExample"
        "400":
          $ref: "#/components/responses/badRequestResponse"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "402":
          $ref: "#/components/responses/paymentRequiredResponse"
        "403":
          $ref: "#/components/responses/forbiddenResponse"
        "404":
          $ref: "#/components/responses/activationNotFoundResponse"
        "422":
          $ref: "#/components/responses/unprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=getStatusV2:
    get:
      tags:
        - SMS-Activate
      summary: Получить состояние активации V2
      description: Возвращает статус активации в структурированном виде (JSON)
      operationId: getStatusV2
      parameters:
        - $ref: "#/components/parameters/qpSARequiredActivationID"
      responses:
        "200":
          description: Текущий статус активации (V2)
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ActivationStatusV2"
              examples:
                correctActivationStatusExample:
                  $ref: "#/components/examples/successfulActivationV2Example"
                successfulCancelExample:
                  summary: Активация отменена
                  value: STATUS_CANCEL
        "400":
          $ref: "#/components/responses/badRequestResponse"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "402":
          $ref: "#/components/responses/paymentRequiredResponse"
        "403":
          $ref: "#/components/responses/forbiddenResponse"
        "404":
          $ref: "#/components/responses/activationNotFoundResponse"
        "422":
          $ref: "#/components/responses/unprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=getActiveActivations:
    get:
      tags:
        - SMS-Activate
      summary: Получить список активных активации
      description: Возвращает список активных активаций
      operationId: saGetActiveActivations
      parameters:
        - name: start
          in: query
          description: Смещение (по умолчанию 0)
          required: false
          schema:
            type: integer
        - name: limit
          in: query
          description: Лимит записей (макс. 100)
          required: false
          schema:
            type: integer
      responses:
        "200":
          description: Результат получения активных активаций
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ActiveActivations"
              examples:
                activationsSuccessfulExample:
                  $ref: "#/components/examples/activationsSuccessfulExample"
        "400":
          $ref: "#/components/responses/badRequestResponse"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "402":
          $ref: "#/components/responses/paymentRequiredResponse"
        "403":
          $ref: "#/components/responses/forbiddenResponse"
        "404":
          $ref: "#/components/responses/methodNotFoundResponse"
        "422":
          $ref: "#/components/responses/unprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=getHistory:
    get:
      tags:
        - SMS-Activate
      summary: Получить историю активаций
      description: Возвращает историю активаций
      operationId: getHistory
      parameters:
        - name: start
          in: query
          description: Начало периода (Unix Timestamp)
          required: false
          schema:
            type: integer
        - name: end
          in: query
          description: Конец периода (Unix Timestamp)
          required: false
          schema:
            type: integer
        - name: offset
          in: query
          description: Смещение (по умолчанию 0)
          required: false
          schema:
            type: integer
        - name: size
          in: query
          description: Лимит записей (макс. 100)
          required: false
          schema:
            type: integer
      responses:
        "200":
          description: Результат получения истории активаций
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ActivationsHistory"
              examples:
                successfulActivationsHistoryExample:
                  $ref: "#/components/examples/successfulActivationsHistoryExample"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "404":
          $ref: "#/components/responses/methodNotFoundResponse"
        "422":
          $ref: "#/components/responses/unprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=reactivate:
    post:
      tags:
        - SMS-Activate
      summary: Запросить реактивацию номера
      description: Запрашивает успешно использованный телефонный номер
      operationId: reactivate
      parameters:
        - $ref: "#/components/parameters/qpSARequiredActivationID"
        - $ref: "#/components/parameters/qpSADuration"
      responses:
        "200":
          description: Результат реактивации номера
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/successfulNumberv2Response"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "402":
          $ref: "#/components/responses/paymentRequiredResponse"
        "403":
          $ref: "#/components/responses/reactivationForbiddenResponse"
        "404":
          $ref: "#/components/responses/activationNotFoundResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=reactivateOptions:
    get:
      tags:
        - SMS-Activate
      summary: Запросить стоимость реактивации номера
      description: Запрашивает стоимость реактивации номера
      operationId: saReactivateOptions
      parameters:
        - $ref: "#/components/parameters/qpSARequiredActivationID"
      responses:
        "200":
          $ref: "#/components/responses/SaActivationExtendOptionsSuccessResponse"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "403":
          $ref: "#/components/responses/reactivationForbiddenResponse"
        "404":
          $ref: "#/components/responses/activationNotFoundResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=prolong:
    post:
      tags:
        - SMS-Activate
      summary: Продлить номер
      description: Продлевает работу с телефонным номером. Работает только для
        активаций с типом 'Аренда'
      operationId: prolong
      parameters:
        - $ref: "#/components/parameters/qpSARequiredActivationID"
        - $ref: "#/components/parameters/qpSARequiredDuration"
      responses:
        "200":
          description: Результат продления номера
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/successfulNumberv2Response"
        "400":
          $ref: "#/components/responses/prolongationBadRequestResponse"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "402":
          $ref: "#/components/responses/paymentRequiredResponse"
        "404":
          $ref: "#/components/responses/activationNotFoundResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=prolongOptions:
    get:
      tags:
        - SMS-Activate
      summary: Получить стоимость продления номера
      description: Запрашивает стоимость продления номера
      operationId: saProlongOptions
      parameters:
        - $ref: "#/components/parameters/qpSARequiredActivationID"
      responses:
        "200":
          $ref: "#/components/responses/SaActivationExtendOptionsSuccessResponse"
        "400":
          $ref: "#/components/responses/prolongationInfoBadRequestResponse"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "404":
          $ref: "#/components/responses/activationNotFoundResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=prolongHistory:
    get:
      tags:
        - SMS-Activate
      summary: Получить историю продлений номера
      description: Запрашивает историю продлений номера
      operationId: prolongHistory
      parameters:
        - $ref: "#/components/parameters/qpSARequiredActivationID"
      responses:
        "200":
          description: История продлений номера
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/prolongationHistoryListResponse"
        "400":
          $ref: "#/components/responses/prolongationInfoBadRequestResponse"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "404":
          $ref: "#/components/responses/activationNotFoundResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=getCountries:
    get:
      tags:
        - SMS-Activate
      summary: Запросить список стран
      description: Возвращает список стран
      operationId: getCountries
      responses:
        "200":
          description: Результат запроса списка стран
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Country"
              examples:
                successGetCountriesExample:
                  $ref: "#/components/examples/successGetCountriesExample"
                missingKeyExample:
                  $ref: "#/components/examples/missingKeyExample"
                incorrectKeyExample:
                  $ref: "#/components/examples/incorrectKeyExample"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=getServicesList:
    get:
      tags:
        - SMS-Activate
      summary: Запросить список сервисов
      description: Возвращает список сервисов
      operationId: getServicesList
      parameters:
        - $ref: "#/components/parameters/qpSAOptionalCountry"
        - $ref: "#/components/parameters/qpSAOptionalLang"
      responses:
        "200":
          description: Результат запроса списка сервисов
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Service"
              examples:
                successGetServicesListExample:
                  $ref: "#/components/examples/successGetServicesListExample"
                missingKeyExample:
                  $ref: "#/components/examples/missingKeyExample"
                incorrectKeyExample:
                  $ref: "#/components/examples/incorrectKeyExample"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=getOperators:
    get:
      tags:
        - SMS-Activate
      summary: Запросить доступных операторов
      description: Возвращает список операторов
      operationId: getOperators
      parameters:
        - $ref: "#/components/parameters/qpSAOptionalCountry"
      responses:
        "200":
          description: Результат запроса списка операторов
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Operators"
              examples:
                successfulGetOperatorsExample:
                  $ref: "#/components/examples/successfulGetOperatorsExample"
                operatorsNotFoundExample:
                  $ref: "#/components/examples/operatorsNotFoundExample"
                sqlServerErrorExample:
                  $ref: "#/components/examples/sqlServerErrorExample"
                missingKeyExample:
                  $ref: "#/components/examples/missingKeyExample"
                incorrectKeyExample:
                  $ref: "#/components/examples/incorrectKeyExample"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=getPrices:
    get:
      tags:
        - SMS-Activate
      summary: Получить актуальные цены
      description: Метод устарел. Используйте метод GET
        activations/offers/{verificationType}
      operationId: getPrices
      parameters:
        - $ref: "#/components/parameters/qpSAOptionalService"
        - $ref: "#/components/parameters/qpSAOptionalCountry"
      responses:
        "200":
          description: Результат получения актуальных цен
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PricesByCountry"
              examples:
                successGetPrices:
                  $ref: "#/components/examples/successGetPrices"
                incorrectServiceExample:
                  $ref: "#/components/examples/incorrectServiceExample"
                incorrectCountryExample:
                  $ref: "#/components/examples/incorrectCountryExample"
                badActionExample:
                  $ref: "#/components/examples/badActionExample"
                missingKeyExample:
                  $ref: "#/components/examples/missingKeyExample"
                incorrectKeyExample:
                  $ref: "#/components/examples/incorrectKeyExample"
      deprecated: true
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=getTopCountriesByService:
    get:
      tags:
        - SMS-Activate
      summary: Получить топ стран по сервису
      description: Метод устарел. Используйте метод GET
        activations/offers/{verificationType}
      operationId: getTopCountriesByService
      parameters:
        - $ref: "#/components/parameters/qpSAOptionalService"
        - $ref: "#/components/parameters/qpSAOptionalFreePrice"
      responses:
        "200":
          description: Результат получения топа стран по сервису
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TopCountriesByService"
              examples:
                topCountriesAllServicesExample:
                  $ref: "#/components/examples/topCountriesAllServicesExample"
                topCountriesOneServiceExample:
                  $ref: "#/components/examples/topCountriesOneServiceExample"
                missingKeyExample:
                  $ref: "#/components/examples/missingKeyExample"
                incorrectKeyExample:
                  $ref: "#/components/examples/incorrectKeyExample"
      deprecated: true
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=getTopCountriesByServiceRank:
    get:
      tags:
        - SMS-Activate
      summary: Получить топ стран по сервису с учетом ранга пользователя
      description: Метод устарел. Используйте метод GET
        activations/offers/{verificationType}
      operationId: getTopCountriesByServiceRank
      parameters:
        - $ref: "#/components/parameters/qpSAOptionalService"
        - $ref: "#/components/parameters/qpSAOptionalFreePrice"
      responses:
        "200":
          description: Результат получения топа стран по сервису
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TopCountriesByService"
              examples:
                topCountriesAllServicesExample:
                  $ref: "#/components/examples/topCountriesAllServicesExample"
                topCountriesOneServiceExample:
                  $ref: "#/components/examples/topCountriesOneServiceExample"
                missingKeyExample:
                  $ref: "#/components/examples/missingKeyExample"
                incorrectKeyExample:
                  $ref: "#/components/examples/incorrectKeyExample"
      deprecated: true
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=serviceCountRent:
    get:
      tags:
        - SMS-Activate
      summary: Получить актуальные цены и количество по аренде по сервису
      description: Возвращает цены и количество доступных номеров по выбранному
        сервису для аренды
      operationId: serviceCountRent
      parameters:
        - $ref: "#/components/parameters/qpSARequiredService"
        - $ref: "#/components/parameters/qpSAOptionalCountry"
        - $ref: "#/components/parameters/qpSAOptionalOperator"
        - $ref: "#/components/parameters/qpSAOptionalCurrency"
      responses:
        "200":
          description: Результат получения актуальных цен и количества по аренде
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RentCountByService"
              examples:
                Данные успешно получены:
                  $ref: "#/components/examples/successServiceCountRent"
                Данные отсутствуют:
                  $ref: "#/components/examples/emptyServiceCountRent"
        "400":
          $ref: "#/components/responses/rentParamsBadRequestResponse"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=getRentServicesAndCountries:
    get:
      tags:
        - SMS-Activate
      summary: Получить актуальные цены и количество для аренды по стране
      description: Возвращает цены и количество доступных номеров по сервисам, а также
        список операторов
      operationId: getRentServicesAndCountries
      parameters:
        - $ref: "#/components/parameters/qpSARequiredCountry"
        - $ref: "#/components/parameters/qpSARequiredDuration"
      responses:
        "200":
          description: Успешный результат
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/getRentServicesAndCountries"
              examples:
                successGetRentServicesAndCountriesExample:
                  $ref: "#/components/examples/successGetRentServicesAndCountriesExample"
        "400":
          $ref: "#/components/responses/rentParamsBadRequestResponse"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "422":
          $ref: "#/components/responses/unprocessableEntityResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
  ?action=getRentNumber:
    get:
      tags:
        - SMS-Activate
      summary: Запросить номер для аренды
      description: Запрашивает телефонный номер для указанного сервиса и страны на
        заданный срок.
      operationId: getRentNumber
      parameters:
        - $ref: "#/components/parameters/qpSARequiredService"
        - $ref: "#/components/parameters/qpSARequiredCountry"
        - $ref: "#/components/parameters/qpSARequiredDuration"
        - $ref: "#/components/parameters/qpSAOptionalOperator"
        - $ref: "#/components/parameters/qpSAOptionalCurrency"
        - $ref: "#/components/parameters/qpSAOptionalRef"
      responses:
        "200":
          description: Результат запроса аренды номера
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/successfulNumberv2Response"
        "400":
          $ref: "#/components/responses/rentParamsBadRequestResponse"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "402":
          $ref: "#/components/responses/paymentRequiredResponse"
        "403":
          $ref: "#/components/responses/forbiddenResponse"
        "404":
          $ref: "#/components/responses/noNumbersResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=getAllSms:
    get:
      tags:
        - SMS-Activate
      summary: Получить все otp для указанной активации
      description: Запрашивает все otp для указанной активации.
      operationId: getAllSms
      parameters:
        - $ref: "#/components/parameters/qpSARequiredActivationID"
        - $ref: "#/components/parameters/qpSAOptionalSize"
        - $ref: "#/components/parameters/qpSAOptionalPage"
      responses:
        "200":
          description: Результат запроса всех otp
          content:
            application/json:
              schema:
                required:
                  - data
                  - meta
                properties:
                  data:
                    $ref: "#/components/schemas/OtpListResponse"
                  meta:
                    schema: ResponseMeta
                    description: Мета-данные ответа
                    properties:
                      total:
                        description: Общее количество записей
                        type: integer
                        example: 42
                      service:
                        description: Код сервиса
                        type: string
                        example: full
                    type: object
                type: object
        "400":
          $ref: "#/components/responses/badRequestResponse"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "403":
          $ref: "#/components/responses/forbiddenResponse"
        "404":
          $ref: "#/components/responses/activationNotFoundResponse"
        "409":
          $ref: "#/components/responses/activationNotActiveResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=finishActivation:
    get:
      tags:
        - SMS-Activate
      summary: Завершить работу с активацией
      operationId: saFinishActivation
      parameters:
        - $ref: "#/components/parameters/qpSARequiredActivationID"
      responses:
        "204":
          description: OK
        "400":
          $ref: "#/components/responses/badRequestResponse"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "403":
          $ref: "#/components/responses/forbiddenResponse"
        "404":
          $ref: "#/components/responses/activationNotFoundResponse"
        "409":
          $ref: "#/components/responses/activationFinishConflictResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
  ?action=cancelActivation:
    get:
      tags:
        - SMS-Activate
      summary: Отменить покупку активации
      operationId: saCancelActivation
      parameters:
        - $ref: "#/components/parameters/qpSARequiredActivationID"
      responses:
        "204":
          description: OK
        "400":
          $ref: "#/components/responses/badRequestResponse"
        "401":
          $ref: "#/components/responses/unauthorizedResponse"
        "403":
          $ref: "#/components/responses/forbiddenResponse"
        "404":
          $ref: "#/components/responses/activationNotFoundResponse"
        "409":
          $ref: "#/components/responses/activationCancelConflictResponse"
        "500":
          $ref: "#/components/responses/SAServerErrorResponse"
      security:
        - apiKeyQuery: []
      servers:
        - url: https://hero-sms.com/stubs/handler_api.php
          description: SMS-Activate API-compatible server
components:
  schemas:
    ActivationExtendDurationDTO:
      required:
        - unit
        - value
      properties:
        unit:
          type: string
          example: hour
          enum:
            - minute
            - hour
        value:
          type: integer
          example: 24
      type: object
    ActivationExtendOptionDTOSchema:
      required:
        - price
        - duration
      properties:
        price:
          $ref: "#/components/schemas/Price"
        duration:
          $ref: "#/components/schemas/ActivationExtendDurationDTO"
      type: object
    ProlongationHistoryItemSchema:
      properties:
        duration:
          type: integer
          example: 24
        price:
          $ref: "#/components/schemas/Price"
        createdAt:
          $ref: "#/components/schemas/dateISO8601"
      type: object
    ActivationStatusTypes:
      description: Статус активации
      type: integer
      example: 4
      enum:
        - 1
        - 2
        - 3
        - 4
        - 6
        - 7
        - 8
        - 10
    EmailActivationStatus:
      description: Статус email активации
      type: integer
      example: 3
      enum:
        - 3
        - 4
        - 5
        - 6
        - 7
      x-enum-descriptions:
        "3": Ждёт сообщения
        "4": Отменена, сообщение не получено
        "5": Сообщение получено, активна (не завершена)
        "6": Завершена пользователем или по таймауту, сообщение получено
        "7": Вернули деньги
    EmailActivation:
      description: Активация по почте
      required:
        - id
        - status
        - cost
        - currency
        - date
      properties:
        id:
          description: ID
          type: integer
        site:
          $ref: "#/components/schemas/EmailSite"
        email:
          description: Почта
          type: string
        status:
          $ref: "#/components/schemas/EmailActivationStatusView"
        value:
          description: Код
          type:
            - string
            - "null"
        cost:
          $ref: "#/components/schemas/Price"
        currency:
          $ref: "#/components/schemas/Currency"
        date:
          $ref: "#/components/schemas/dateISO8601"
          description: Дата создания
        message:
          description: Полное письмо
          type:
            - string
            - "null"
      type: object
    ActivationOtpSchema:
      properties:
        id:
          type: string
          example: "12345643242"
        smsCode:
          type:
            - string
            - "null"
          example: "123456"
        smsText:
          type:
            - string
            - "null"
          example: Your verification code is 123456
        receivedAt:
          $ref: "#/components/schemas/dateISO8601"
        type:
          $ref: "#/components/schemas/VerificationType"
        phoneFrom:
          type: string
          example: "89854"
        service:
          $ref: "#/components/schemas/ServiceId"
      type: object
    ActivationSchema:
      properties:
        id:
          $ref: "#/components/schemas/ActivationId"
        status:
          $ref: "#/components/schemas/ActivationStatusTypes"
        phone:
          $ref: "#/components/schemas/ActivationPhone"
        service:
          $ref: "#/components/schemas/ServiceId"
        country:
          $ref: "#/components/schemas/CountryId"
        countryPhoneCode:
          type: integer
          example: 7
        operator:
          $ref: "#/components/schemas/OperatorId"
        price:
          $ref: "#/components/schemas/Price"
        createdAt:
          $ref: "#/components/schemas/dateISO8601"
        expiredAt:
          $ref: "#/components/schemas/dateISO8601"
        verificationType:
          $ref: "#/components/schemas/VerificationType"
        subtype:
          $ref: "#/components/schemas/ActivationSubtype"
        otpList:
          type: array
          items:
            $ref: "#/components/schemas/ActivationOtpSchema"
          minItems: 0
      type: object
    SuccessRate:
      description: Процент успешных покупок от количества попыток
      type: number
      format: float
      example: 20
    OperatorCode:
      description: Код оператора
      type: string
      example: any
    ActivationsOffersSchema:
      additionalProperties:
        title: Сервис
        type: object
        additionalProperties:
          title: ID страны
          properties:
            prices:
              properties:
                default:
                  type: number
                  format: float
                  example: 1.1
                retail:
                  type: number
                  format: float
                  example: 1.1
                min:
                  $ref: "#/components/schemas/MinPrice"
              type: object
            counts:
              properties:
                total:
                  type: integer
                  example: 101
                physical:
                  type: integer
                  example: 51
                defaultPrice:
                  type: integer
                  example: 50
              type: object
            map:
              type: object
              additionalProperties:
                title: Цена
                description: Цена -> количество
                type: integer
          type: object
    ActivationsOffersMetaData:
      allOf:
        - $ref: "#/components/schemas/PaginationMetaData"
        - properties:
            order:
              description: Порядок отображения данных для каждого типа сортировки
              properties:
                rate:
                  description: Порядок сервисов и стран по рейтингу
                  type: object
                deliverability:
                  properties:
                    countries:
                      type: array
                      items:
                        type: integer
                  type: object
              type: object
            filters:
              description: Применённые к выборке фильтры
              properties:
                countries:
                  type:
                    - array
                    - "null"
                  items:
                    $ref: "#/components/schemas/CountryId"
                services:
                  type:
                    - array
                    - "null"
                  items:
                    type: string
              type: object
          type: object
    EmailSite:
      description: Сайт для которого берётся активация
      type: string
      example: telegram.com
    EmailDomain:
      description: Домен почты
      type: string
      example: gmail.com
    EmailMaxPrice:
      description: Верхняя граница цены позиции в валюте баланса. Без параметра
        берётся самая дешёвая позиция
      type:
        - number
        - "null"
      format: float
      example: 0.5
      minimum: 0
    EmailOffer:
      description: Ценовая позиция по домену
      required:
        - cost
        - count
      properties:
        cost:
          description: Цена одной почты
          type: number
          format: float
          example: 0.075
        count:
          description: Доступно почт по этой цене
          type: integer
          example: 10
      type: object
    EmailOfferDomain:
      description: Домен и его ценовые позиции, отсортированные по цене
      required:
        - domain
        - offers
      properties:
        domain:
          $ref: "#/components/schemas/EmailDomain"
        offers:
          type: array
          items:
            $ref: "#/components/schemas/EmailOffer"
      type: object
    EmailActivationStatusView:
      description: Статус email активации
      type: string
      example: WAIT
      enum:
        - WAIT
        - CANCEL
        - SUCCESS
      x-enum-descriptions:
        WAIT: Ждёт сообщения
        CANCEL: Отменена или возврат средств
        SUCCESS: Сообщение получено (активна или завершена)
    PaginationMetaData:
      description: Мета данные по пагинации
      required:
        - page
        - size
        - sort
        - total
      properties:
        page:
          description: Номер страницы с данными
          type:
            - integer
            - "null"
          example: 1
        size:
          description: Размер страницы с данными
          type:
            - integer
            - "null"
          example: 10
        sort:
          description: Сортировка данных по нескольким полям
          type: object
          additionalProperties:
            description: Направление сортировки
            type: string
            enum:
              - asc
              - desc
        total:
          description: Общее количество записей
          type:
            - integer
            - "null"
          example: 100
        hasMore:
          description: Существует ли следующая страница
          type: boolean
          example: true
        search:
          description: Строка поиска
          type: string
          example: "8800"
        filters:
          description: Доступные значения фильтров для выборки
          type: object
          example:
            countries:
              - ru
              - ua
            services:
              - go
              - tg
      type: object
    ActivationPhone:
      description: Номер телефона без знака +
      type: integer
      example: 79991234567
    CountryId:
      description: ID страны
      type: integer
      example: 2
      maximum: 999
      minimum: 0
    ServiceId:
      description: Код сервиса
      type: string
      pattern: ^[a-zA-Z]{2,4}$
      example: tg
      maxLength: 4
      minLength: 2
    OperatorId:
      description: Код оператора или несколько кодов через запятую. Если не передан —
        любой оператор
      type: string
      pattern: ^([a-zA-Z0-9!_]{2,},)*[_a-zA-Z0-9!]{2,}$
      example: axis
      default: any
    PhoneException:
      description: "Исключающие префиксы номеров через запятую: до 20 префиксов по 4–7 цифр"
      type:
        - string
        - "null"
      pattern: ^[0-9]{4,7}(,[0-9]{4,7}){0,19}$
      example: 7900,7901234
    MaxPrice:
      description: Максимальная стоимость активации
      type: number
      format: float
      example: 0.4321
      minimum: 0.0067
    Price:
      description: Цена
      type: number
      format: float
      example: 0.4321
    Percent:
      description: Процент
      type: number
      format: float
      example: 50
    FixedPrice:
      description: Покупка строго за переданную максимальную цену. Использовать вместе
        с параметром maxPrice.
      type: boolean
      example: true
    RentDuration:
      description: Продолжительность аренды в часах
      type: integer
      example: 24
      enum:
        - 24
        - 72
        - 168
        - 336
        - 720
        - 1440
        - 2160
        - 4320
    ActivationHistoryStatus:
      description: Статус завершённой активации
      type: integer
      example: 6
      enum:
        - 6
        - 8
        - 10
      x-enum-descriptions:
        "6": Успешно завершена
        "8": Отменена
        "10": Возврат средств
    ResellerUserId:
      description: Идентификатор конечного клиента в системе реселлера
      type: string
      pattern: ^[a-zA-Z0-9_.@-]{1,36}$
      example: "12345"
      maxLength: 36
      minLength: 1
    MinPrice:
      description: Минимально возможная персональная цена
      type: number
      format: float
      example: 0.4321
    ActivationId:
      description: ID активации
      type: integer
      example: 123456
    Currency:
      description: ISO код валюты
      type: integer
      example: 840
      default: 840
      enum:
        - 840
        - 978
        - 156
    SMSText:
      description: SMS Текст
      type:
        - string
        - "null"
      example: Your code is 12345
    SMSCode:
      description: SMS Код
      type:
        - string
        - "null"
      example: "12345"
    VerificationType:
      description: Тип верификации
      type: string
      example: sms
      enum:
        - sms
        - call
    ActivationSubtype:
      description: Подтип активации. 1 - активация, 2 - аренда
      type: integer
      example: 1
      enum:
        - 1
        - 2
    dateISO8601:
      description: Дата в формате ISO 8601
      type: string
      format: date-time
      example: 2025-12-16T10:30:00.000000Z
    dateRFC3339:
      description: Дата в формате RFC3339
      type: string
      format: date-time
      example: 2026-02-19T10:37:46+00:00
    ActivationStatusV2:
      properties:
        verificationType:
          $ref: "#/components/schemas/VerificationType"
        data:
          $ref: "#/components/schemas/OtpItem"
      type: object
    ActiveActivation:
      properties:
        activationId:
          $ref: "#/components/schemas/ActivationId"
        serviceCode:
          $ref: "#/components/schemas/ServiceId"
        phoneNumber:
          $ref: "#/components/schemas/ActivationPhone"
        activationCost:
          description: Стоимость активации
          type: number
          format: float
          example: 15.5
        currency:
          $ref: "#/components/schemas/Currency"
        activationStatus:
          description: Статус активации
          type: integer
          example: 4
        smsCode:
          $ref: "#/components/schemas/SMSCode"
        smsText:
          $ref: "#/components/schemas/SMSText"
        activationTime:
          $ref: "#/components/schemas/dateISO8601"
        countryCode:
          $ref: "#/components/schemas/CountryId"
        countryName:
          type: string
          example: Kazakhstan
        canGetAnotherSms:
          type: string
          example: "1"
        verificationType:
          $ref: "#/components/schemas/VerificationType"
        subtype:
          $ref: "#/components/schemas/ActivationSubtype"
      type: object
    ActiveActivations:
      properties:
        status:
          type: string
        data:
          type: array
          items:
            $ref: "#/components/schemas/ActiveActivation"
          minItems: 0
      type: object
    ActivationsHistory:
      type: array
      items:
        properties:
          id:
            type: string
            example: "635468024"
          date:
            type: string
            format: date-time
            example: 0000-00-00 00:00:00
          phone:
            type: string
            example: 7*********0
          sms:
            type: string
            example: Your code is ****
          cost:
            type: number
            example: 0
          status:
            type: string
            example: "4"
          currency:
            $ref: "#/components/schemas/Currency"
        type: object
    TopCountriesOneService:
      properties:
        physicalTotalCount:
          type: integer
          example: 9405
        physicalCountForDefaultPrice:
          type: integer
          example: 4066
        physicalPriceMap:
          type: object
          additionalProperties:
            type: number
            example: 0.018
        retail_price:
          type: number
          example: 0.2
        country:
          type: integer
          example: 6
        price:
          type: number
          example: 0.045
        count:
          type: integer
          example: 4528
      type: object
    TopCountriesAllServices:
      type: object
      additionalProperties:
        $ref: "#/components/schemas/TopCountriesOneService"
    TopCountriesByService:
      type: object
      additionalProperties:
        oneOf:
          - $ref: "#/components/schemas/TopCountriesAllServices"
          - $ref: "#/components/schemas/TopCountriesOneService"
    PricesByCountry:
      type: object
      additionalProperties:
        type: object
        additionalProperties:
          properties:
            cost:
              type: number
              example: 0.5
            count:
              type: integer
              example: 10
            physicalCount:
              type: integer
              example: 10
          type: object
    RentCountByService:
      type: object
      additionalProperties:
        description: Страна (ключ — числовой идентификатор)
        type: object
        pattern: ^[0-9]+$
        additionalProperties:
          description: Длительность (ключ — числовой идентификатор)
          required:
            - count
            - price
          properties:
            price:
              description: Стоимость аренды
              type: number
              example: 0.5432
            count:
              description: Количество доступных номеров
              type: integer
              example: 10
          type: object
          pattern: ^[0-9]+$
    getRentServicesAndCountries:
      properties:
        operators:
          description: Операторы
          type: object
          additionalProperties:
            type: string
        services:
          description: Сервисы
          type: object
          additionalProperties:
            type: string
            example: tg
            additionalProperties:
              properties:
                quantity:
                  type: number
                  example: 2
                price:
                  type: integer
                  example: 0.6
                retail_price:
                  type: integer
                  example: 0.6
              type: object
      type: object
    Country:
      properties:
        id:
          $ref: "#/components/schemas/CountryId"
        rus:
          description: Название страны на русском
          type: string
          example: Казахстан
        eng:
          description: Название страны на английском
          type: string
          example: Kazakhstan
        chn:
          description: Название страны на китайском
          type: string
          example: Kazakhstan
        visible:
          description: 1 - доступно, 0 - недоступно
          type: integer
          example: 1
          enum:
            - 0
            - 1
        retry:
          description: 1 - доступно, 0 - недоступно
          type: integer
          example: 1
          enum:
            - 0
            - 1
      type: object
    Service:
      properties:
        code:
          description: ID сервиса
          type: string
          example: aoo
        name:
          description: Название сервиса
          type: string
          example: Pegasus Airlines
      type: object
    Operators:
      properties:
        status:
          type: string
        countryOperators:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
      type: object
    AccountBannedInfo:
      required:
        - scope
        - banned_until
        - retry_after_seconds
      properties:
        scope:
          description: "Область блокировки: на всё или на конкретную позицию"
          type: string
          enum:
            - global
            - specific
        banned_until:
          description: Unix Timestamp окончания бана
          type: integer
        retry_after_seconds:
          description: Через сколько секунд можно повторить запрос
          type: integer
        readable_date:
          $ref: "#/components/schemas/dateRFC3339"
      type: object
    successfulNumberv2Response:
      properties:
        activationId:
          $ref: "#/components/schemas/ActivationId"
        serviceCode:
          $ref: "#/components/schemas/ServiceId"
        phoneNumber:
          $ref: "#/components/schemas/ActivationPhone"
        activationCost:
          description: Стоимость активации
          type: number
          format: float
          example: 15.5
        currency:
          $ref: "#/components/schemas/Currency"
        countryCode:
          $ref: "#/components/schemas/CountryId"
        countryPhoneCode:
          description: Телефонный код страны
          type: number
          example: 62
        canGetAnotherSms:
          description: Повторное смс
          type: boolean
          example: true
        activationTime:
          $ref: "#/components/schemas/dateRFC3339"
          description: Дата и время начала
        activationEndTime:
          $ref: "#/components/schemas/dateRFC3339"
          description: Дата и время истечения
        activationOperator:
          $ref: "#/components/schemas/OperatorId"
        verificationType:
          $ref: "#/components/schemas/VerificationType"
        subtype:
          $ref: "#/components/schemas/ActivationSubtype"
        status:
          description: Статус активации
          type: integer
          example: 4
      type: object
      examples:
        successfulNumberv2Example:
          $ref: "#/components/examples/successfulNumberv2Example"
    reactivationPriceResponse:
      required:
        - data
      properties:
        data:
          required:
            - price
          properties:
            price:
              type: number
              format: float
              example: 1.4522
            currency:
              $ref: "#/components/schemas/Currency"
          type: object
      type: object
      examples:
        success:
          $ref: "#/components/examples/successfulReactivationPriceExample"
    prolongationPriceListResponse:
      required:
        - data
      properties:
        data:
          description: "Стоимость продления аренды: часы - цена"
          type: object
          additionalProperties:
            description: Стоимость для указанного кол-ва часов
            type: number
            format: float
            example: 0.2134
      type: object
      examples:
        success:
          $ref: "#/components/examples/successfulProlongationPriceExample"
    prolongationHistoryListResponse:
      required:
        - data
      properties:
        data:
          description: Массив продлений. Может быть пустым.
          type: array
          items:
            required:
              - userPrice
              - hours
              - createDate
              - payerType
            properties:
              userPrice:
                description: Стоимость
                type: number
                format: float
                example: 0.4621
              hours:
                description: Длительность аренды
                type: number
                example: 24
              createDate:
                $ref: "#/components/schemas/dateRFC3339"
                description: Дата создания
              payerType:
                description: Тип продления
                type: string
                example: client
                enum:
                  - client
                  - partner
            type: object
          minItems: 0
      type: object
      examples:
        success:
          $ref: "#/components/examples/successfulProlongationHistoryExample"
    OtpListResponse:
      description: Массив сообщений. Может быть пустым.
      type: array
      items:
        $ref: "#/components/schemas/OtpItem"
      examples:
        successfulOtpListExample:
          $ref: "#/components/examples/successfulOtpListExample"
      minItems: 0
    OtpItem:
      required:
        - id
        - phoneFrom
        - service
        - date
        - type
      properties:
        id:
          description: ID OTP
          type: string
          example: "3416693217"
        phoneFrom:
          description: Источник OTP
          type: string
          example: Telegram
        code:
          $ref: "#/components/schemas/SMSCode"
        text:
          $ref: "#/components/schemas/SMSText"
        service:
          $ref: "#/components/schemas/ServiceId"
        date:
          $ref: "#/components/schemas/dateRFC3339"
          description: Дата создания
        type:
          $ref: "#/components/schemas/VerificationType"
          description: Тип otp
      type: object
    ActivationExtendOptionSchema:
      required:
        - price
        - duration
      properties:
        price:
          type: number
          format: float
          example: 1.4324
        duration:
          $ref: "#/components/schemas/ActivationExtendDurationSchema"
      type: object
    ActivationExtendDurationSchema:
      required:
        - unit
        - value
      properties:
        unit:
          type: string
          example: hour
          enum:
            - minute
            - hour
        value:
          type: integer
          example: 24
      type: object
    BaseErrorResponse:
      description: Базовая структура ответа об ошибке
      required:
        - title
        - details
      properties:
        title:
          description: Код ошибки
          type: string
        details:
          description: Детали ошибки
          type: string
        info:
          description: Расширенная информация
          type: object
          additionalProperties: true
      type: object
  responses:
    ActivationOtpSuccessResponse:
      description: Success response
      content:
        application/json:
          schema:
            required:
              - data
            properties:
              data:
                $ref: "#/components/schemas/ActivationOtpSchema"
            type: object
    ActivationOtpListSuccessResponse:
      description: Success response
      content:
        application/json:
          schema:
            required:
              - data
            properties:
              data:
                type: array
                items:
                  $ref: "#/components/schemas/ActivationOtpSchema"
            type: object
    ActivationsSuccessResponse:
      description: Success response
      content:
        application/json:
          schema:
            required:
              - data
            properties:
              data:
                type: array
                items:
                  $ref: "#/components/schemas/ActivationSchema"
            type: object
            example:
              data:
                - id: 1
                  status: 4
                  phone: "440959999999"
                  service: fb
                  country: 44
                  countryPhoneCode: 7
                  operator: axis
                  price: 1.05
                  otpList: []
                  createdAt: 2025-12-16T10:30:00.000000Z
                  expiredAt: 2025-12-16T10:30:00.000000Z
                  verificationType: sms
                  subtype: 1
    ProlongHistorySuccessResponse:
      description: Success response
      content:
        application/json:
          schema:
            required:
              - data
            properties:
              data:
                type: array
                items:
                  $ref: "#/components/schemas/ProlongationHistoryItemSchema"
            type: object
            example:
              data:
                - duration: 24
                  price: 1.05
                  createdAt: 2025-12-16T10:30:00.000000Z
    ActivationExtendOptionsSuccessResponse:
      description: Success response
      content:
        application/json:
          schema:
            required:
              - data
            properties:
              data:
                required:
                  - options
                properties:
                  options:
                    type: array
                    items:
                      $ref: "#/components/schemas/ActivationExtendOptionDTOSchema"
                type: object
            type: object
            example:
              data:
                options:
                  - duration:
                      value: 2
                      unit: hour
                    price: 0.2145
                  - duration:
                      value: 24
                      unit: hour
                    price: 1.4324
    ActivationsOffersSuccessResponse:
      description: OK
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: "#/components/schemas/ActivationsOffersSchema"
              meta:
                $ref: "#/components/schemas/ActivationsOffersMetaData"
            type: object
          examples:
            Без фильтра:
              $ref: "#/components/examples/ActivationsOffersExample"
            Фильтр по сервисам:
              $ref: "#/components/examples/ActivationsOffersServicesFilterExample"
            Фильтр по странам:
              $ref: "#/components/examples/ActivationsOffersCountriesFilterExample"
            Фильтр по сервисам и странам:
              $ref: "#/components/examples/ActivationsOffersServicesCountriesFiltersExample"
    EmailActivationSuccessResponse:
      description: OK
      content:
        application/json:
          schema:
            required:
              - data
            properties:
              data:
                $ref: "#/components/schemas/EmailActivation"
            type: object
    EmailActivationBatchSuccessResponse:
      description: OK
      content:
        application/json:
          schema:
            properties:
              data:
                type: array
                items:
                  $ref: "#/components/schemas/EmailActivation"
              meta:
                properties:
                  count:
                    type: integer
                    example: 3
                type: object
            type: object
    ServerErrorResponse:
      description: SERVER_ERROR
      content:
        application/json:
          schema:
            required:
              - title
              - details
            properties:
              title:
                description: Код ошибки
                type: string
                enum:
                  - SERVER_ERROR
              details:
                description: Детали ошибки
                type: string
            type: object
    TooManyRequestsResponse:
      description: TOO_MANY_REQUESTS
      headers:
        Retry-After:
          description: Значение в секундах
          schema:
            type: integer
      content:
        application/json:
          schema:
            required:
              - title
              - details
            properties:
              title:
                description: Код ошибки
                type: string
                enum:
                  - RATE_LIMIT
              details:
                description: Детали ошибки
                type: string
            type: object
    UnprocessableEntityResponse:
      description: UNPROCESSABLE_ENTITY
      content:
        application/json:
          schema:
            required:
              - title
              - details
              - errors
            properties:
              title:
                description: Код ошибки
                type: string
              details:
                description: Детали ошибки
                type: string
              errors:
                type: object
                example:
                  parameter1:
                    - The parameter1 is required.
                    - The parameter1 must be a number.
                  parameter2:
                    - The parameter2 must be a number.
                additionalProperties:
                  type: array
                  items:
                    type: string
            type: object
    NotFoundResponse:
      description: NOT_FOUND
      content:
        application/json:
          schema:
            required:
              - title
              - details
            properties:
              title:
                description: Код ошибки
                type: string
              details:
                description: Детали ошибки
                type: string
            type: object
    EmailCancelBadRequestResponse:
      description: BAD_REQUEST
      content:
        application/json:
          schema:
            required:
              - title
              - details
            properties:
              title:
                description: Код ошибки
                type: string
                enum:
                  - EARLY_CANCEL_DENIED
                  - ACTIVATION_CANCELED
              details:
                description: Детали ошибки
                type: string
            type: object
    EmailReorderBadRequestResponse:
      description: BAD_REQUEST
      content:
        application/json:
          schema:
            required:
              - title
              - details
            properties:
              title:
                description: Код ошибки
                type: string
                enum:
                  - STATUS_WAIT_CODE
                  - STATUS_CANCEL
                  - OUT_OF_STOCK
                  - ACTIVATION_CANCELED
              details:
                description: Детали ошибки
                type: string
            type: object
    EmailCancelConflictResponse:
      description: CONFLICT
      content:
        application/json:
          schema:
            required:
              - title
              - details
            properties:
              title:
                description: Код ошибки
                type: string
                enum:
                  - CANCEL_DENIED_MESSAGE_RECEIVED
                  - RACE_CONDITION
              details:
                description: Детали ошибки
                type: string
            type: object
    RaceConditionResponse:
      description: CONFLICT
      content:
        application/json:
          schema:
            required:
              - title
              - details
            properties:
              title:
                description: Код ошибки
                type: string
                enum:
                  - RACE_CONDITION
              details:
                description: Детали ошибки
                type: string
            type: object
    ActivationBannedResponse:
      description: FORBIDDEN
      headers:
        Retry-After:
          description: Значение в секундах
          schema:
            type: integer
      content:
        application/json:
          schema:
            required:
              - title
              - details
            properties:
              title:
                description: Код ошибки
                type: string
                enum:
                  - BANNED_GLOBAL
                  - BANNED_SPECIFIC
              details:
                description: Детали ошибки
                type: string
            type: object
    UnauthorizedResponse:
      description: UNAUTHORIZED
      content:
        application/json:
          schema:
            required:
              - title
              - details
            properties:
              title:
                description: Код ошибки
                type: string
                enum:
                  - Unauthenticated.
              details:
                description: Детали ошибки
                type: string
            type: object
    BadRequestResponse:
      description: BAD_REQUEST
      content:
        application/json:
          schema:
            required:
              - title
              - details
            properties:
              title:
                description: Код ошибки
                type: string
              details:
                description: Детали ошибки
                type: string
            type: object
    OfferNotFoundResponse:
      description: NOT_FOUND
      content:
        application/json:
          schema:
            required:
              - title
              - details
            properties:
              title:
                description: Код ошибки
                type: string
                enum:
                  - OFFER_NOT_FOUND
              details:
                description: Детали ошибки
                type: string
            type: object
    TooEarlyRequestResponse:
      description: TOO_EARLY
      headers:
        Retry-After:
          description: Значение в секундах
          schema:
            type: integer
      content:
        application/json:
          schema:
            required:
              - title
              - details
            properties:
              title:
                description: Код ошибки
                type: string
                enum:
                  - TOO_EARLY
              details:
                description: Детали ошибки
                type: string
            type: object
    NoContentResponse:
      description: NO_CONTENT
    SAServerErrorResponse:
      description: Внутренняя ошибка сервиса
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            SAServerErrorExample:
              $ref: "#/components/examples/SAServerErrorExample"
    methodNotFoundResponse:
      description: Метод не найден
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            methodNotFoundExample:
              $ref: "#/components/examples/methodNotFoundExample"
    activationNotFoundResponse:
      description: Активация не найдена
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            activationNotFoundExample:
              $ref: "#/components/examples/activationNotFoundExample"
            methodNotFoundExample:
              $ref: "#/components/examples/methodNotFoundExample"
    unauthorizedResponse:
      description: Неверный апи-ключ
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            unauthorizedExample:
              $ref: "#/components/examples/unauthorizedExample"
    rentParamsBadRequestResponse:
      description: Неверные параметры запроса
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            badDurationExample:
              $ref: "#/components/examples/badDurationExample"
            wrongCountryIdExample:
              $ref: "#/components/examples/wrongCountryIdExample"
            wrongServiceExample:
              $ref: "#/components/examples/wrongServiceExample"
            wrongCurrencyExample:
              $ref: "#/components/examples/wrongCurrencyExample"
    reactivationForbiddenResponse:
      description: Доступ запрещён
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            serviceUnavailableExample:
              $ref: "#/components/examples/serviceUnavailableExample"
            simOfflineExample:
              $ref: "#/components/examples/simOfflineExample"
            simTemporaryOfflineExample:
              $ref: "#/components/examples/simTemporaryOfflineExample"
    prolongationBadRequestResponse:
      description: Доступ запрещён
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            simOfflineExample:
              $ref: "#/components/examples/simOfflineExample"
            simTemporaryOfflineExample:
              $ref: "#/components/examples/simTemporaryOfflineExample"
            maxHoursExceedExample:
              $ref: "#/components/examples/maxHoursExceedExample"
            badDurationExample:
              $ref: "#/components/examples/badDurationExample"
            activationNotAvailableExample:
              $ref: "#/components/examples/activationNotAvailableExample"
            freezePeriodNotReachedExample:
              $ref: "#/components/examples/freezePeriodNotReachedExample"
    prolongationInfoBadRequestResponse:
      description: Доступ запрещён
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            simOfflineExample:
              $ref: "#/components/examples/simOfflineExample"
            simTemporaryOfflineExample:
              $ref: "#/components/examples/simTemporaryOfflineExample"
            maxHoursExceedExample:
              $ref: "#/components/examples/maxHoursExceedExample"
            activationNotAvailableExample:
              $ref: "#/components/examples/activationNotAvailableExample"
            freezePeriodNotReachedExample:
              $ref: "#/components/examples/freezePeriodNotReachedExample"
    badRequestResponse:
      description: Неверные параметры запроса
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            badStatusExampleJson:
              $ref: "#/components/examples/badStatusExampleJson"
    getNumberBadRequestResponse:
      description: Неверные параметры запроса
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            wrongMaxPriceExampleJson:
              $ref: "#/components/examples/wrongMaxPriceExampleJson"
    unprocessableEntityResponse:
      description: Неверные параметры запроса
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            unprocessableEntityExample:
              $ref: "#/components/examples/unprocessableEntityExample"
    forbiddenResponse:
      description: Доступ запрещён
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            threadsReachedExample:
              $ref: "#/components/examples/threadsReachedExample"
            serviceRestrictedExample:
              $ref: "#/components/examples/serviceRestrictedExample"
            globalBanExample:
              $ref: "#/components/examples/globalBanExample"
            specificBanExample:
              $ref: "#/components/examples/specificBanExample"
            inactiveAccountExample:
              $ref: "#/components/examples/inactiveAccountExample"
    paymentRequiredResponse:
      description: Недостаточно средств
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            paymentRequiredExample:
              $ref: "#/components/examples/paymentRequiredExample"
    noNumbersResponse:
      description: Нет номеров в продаже
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            noNumbersExample:
              $ref: "#/components/examples/noNumbersExample"
    activationNotActiveResponse:
      description: Активация неактивна. Действие невозможно
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            activationNotActiveExample:
              $ref: "#/components/examples/activationNotActiveExample"
    activationFinishConflictResponse:
      description: Невозможно завершить активацию
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            activationNewOtpReceivedExample:
              $ref: "#/components/examples/activationNewOtpReceivedExample"
            activationNotActiveExample:
              $ref: "#/components/examples/activationNotActiveExample"
    activationCancelConflictResponse:
      description: Невозможно отменить активацию
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/BaseErrorResponse"
          examples:
            activationNewOtpReceivedExample:
              $ref: "#/components/examples/activationNewOtpReceivedExample"
            freeCancellationExpiredExample:
              $ref: "#/components/examples/freeCancellationExpiredExample"
            activationOtpReceivedExample:
              $ref: "#/components/examples/activationOtpReceivedExample"
            activationNotActiveExample:
              $ref: "#/components/examples/activationNotActiveExample"
            earlyCancellationExample:
              $ref: "#/components/examples/earlyCancellationExample"
    SaActivationExtendOptionsSuccessResponse:
      description: Success response
      content:
        application/json:
          schema:
            required:
              - data
            properties:
              data:
                required:
                  - options
                properties:
                  options:
                    type: array
                    items:
                      $ref: "#/components/schemas/ActivationExtendOptionSchema"
                    minItems: 0
                type: object
            type: object
            examples:
              success:
                $ref: "#/components/examples/successExtendActivationOptionsExample"
  parameters:
    activationStatusesQuery:
      name: statuses[]
      in: query
      description: Фильтр по статусам завершённых активаций
      required: false
      explode: true
      schema:
        type: array
        items:
          $ref: "#/components/schemas/ActivationHistoryStatus"
    emailId:
      name: emailId
      in: path
      description: ID email активации
      required: true
      schema:
        type: integer
      example: 123456789
    emailStatusesQuery:
      name: status[]
      in: query
      description: Фильтр по статусам email-активаций
      required: false
      explode: true
      schema:
        type: array
        items:
          $ref: "#/components/schemas/EmailActivationStatus"
    intervalQuery:
      name: interval
      in: query
      description: Временной интервал в часах
      required: true
      schema:
        type: integer
        enum:
          - 12
          - 24
    successCountQuery:
      name: successCount
      in: query
      description: Фильтр по количеству успешных активаций
      required: true
      schema:
        type: string
        enum:
          - low
          - medium
          - high
          - very_high
        x-enum-descriptions:
          low: меньше 50
          medium: от 50
          high: от 500
          very_high: от 1000
    withOperatorsQuery:
      name: withOperators
      in: query
      description: Получить подробную статистику по операторам
      schema:
        type: boolean
        example: false
        default: false
    search:
      name: search
      in: query
      description: Строка поиска
      schema:
        type: string
        maxLength: 255
        minLength: 1
    size:
      name: size
      in: query
      description: Размер страницы с данными
      schema:
        type: integer
        maximum: 25
        minimum: 1
    page:
      name: page
      in: query
      description: Номер страницы с данными
      schema:
        type: integer
        minimum: 1
    sort:
      name: sort
      in: query
      description: Сортировка данных по нескольким полям
      required: false
      style: deepObject
      explode: true
      schema:
        properties:
          id:
            description: Направление сортировки
            type: string
            default: desc
            enum:
              - asc
              - desc
        type: object
    from:
      name: from
      in: query
      description: Дата начала периода в формате ISO 8601 YYYY-MM-DDTHH:MM:SSZ
      required: false
      schema:
        type: string
        format: date-time
    to:
      name: to
      in: query
      description: Дата до периода в формате ISO 8601 YYYY-MM-DDTHH:MM:SSZ
      required: false
      schema:
        type: string
        format: date-time
    fromRequired:
      name: from
      in: query
      description: Дата начала периода в формате ISO 8601 YYYY-MM-DDTHH:MM:SSZ
      required: true
      schema:
        type: string
        format: date-time
        example: 2025-10-10T00:00:00Z
    toRequired:
      name: to
      in: query
      description: Дата до периода в формате ISO 8601 YYYY-MM-DDTHH:MM:SSZ
      required: true
      schema:
        type: string
        format: date-time
        example: 2025-10-20T00:00:00Z
    servicesPath:
      name: services
      in: query
      description: Коды сервисов
      schema:
        type: string
        example: tg,go,ig
    countriesPath:
      name: countries
      in: query
      description: ID стран
      schema:
        type: string
        example: 6,33,50
    verificationTypePath:
      name: verificationType
      in: path
      description: Тип верификации
      required: true
      schema:
        $ref: "#/components/schemas/VerificationType"
    verificationTypeQuery:
      name: verificationType
      in: query
      description: Тип верификации
      schema:
        $ref: "#/components/schemas/VerificationType"
    activationPath:
      name: activationId
      in: path
      description: ID активации
      required: true
      schema:
        type: integer
      example: 123456789
    servicesQuery:
      name: services[]
      in: query
      description: Массив идентификаторов сервисов
      explode: true
      schema:
        type: array
        items:
          $ref: "#/components/schemas/ServiceId"
    countriesQuery:
      name: countries[]
      in: query
      description: Массив идентификаторов стран
      explode: true
      schema:
        type: array
        items:
          $ref: "#/components/schemas/CountryId"
    servicesQueryRequired:
      name: services[]
      in: query
      description: Массив идентификаторов сервисов
      required: true
      explode: true
      schema:
        type: array
        items:
          $ref: "#/components/schemas/ServiceId"
        minItems: 1
    qpSARequiredService:
      name: service
      in: query
      description: "[ID
        сервиса](https://hero-sms.com/stubs/handler_api.php?action=getServicesL\
        ist)"
      required: true
      schema:
        type: string
      example: tg
    qpSAOptionalService:
      name: service
      in: query
      description: "[ID
        сервиса](https://hero-sms.com/stubs/handler_api.php?action=getServicesL\
        ist)"
      required: false
      schema:
        type: string
      example: tg
    qpSARequiredCountry:
      name: country
      in: query
      description: "[ID
        страны](https://hero-sms.com/stubs/handler_api.php?action=getCountries)"
      required: true
      schema:
        type: number
      example: 2
    qpSAOptionalCountry:
      name: country
      in: query
      description: "[ID
        страны](https://hero-sms.com/stubs/handler_api.php?action=getCountries)"
      required: false
      schema:
        type: number
      example: 2
    qpSAOptionalFreePrice:
      name: freePrice
      in: query
      description: Использовать FreePrice
      required: false
      schema:
        type: boolean
      example: true
    qpSAOptionalLang:
      name: lang
      in: query
      description: ID языка
      required: false
      schema:
        type: string
        default: en
        enum:
          - en
          - cn
          - es
          - de
          - fr
          - pt
          - ru
          - id
          - vi
          - tr
          - ja
          - ko
          - ar
      example: en
    qpSAOptionalOperator:
      name: operator
      in: query
      description: "[Список](https://hero-sms.com/stubs/handler_api.php?action=getOpe\
        rators) желаемых операторов связи (через запятую без пробелов)"
      required: false
      schema:
        type: string
      example: tele2,beeline
    qpSARequiredDuration:
      name: duration
      in: query
      description: Время аренды в часах
      required: true
      schema:
        type: number
      example: 24
    qpSADuration:
      name: duration
      in: query
      description: Время аренды в часах
      required: false
      schema:
        type: number
      example: 24
    qpSAOptionalCurrency:
      name: currency
      in: query
      description: Валюта отображения
      required: false
      schema:
        type: number
        default: 840
        enum:
          - 643
          - 840
          - 978
          - 156
      example: 840
    qpSAOptionalSize:
      name: size
      in: query
      description: Размер страницы с данными
      schema:
        type: integer
    qpSAOptionalPage:
      name: page
      in: query
      description: Номер страницы с данными
      schema:
        type: integer
    qpSAOptionalMaxPrice:
      name: maxPrice
      in: query
      description: Максимальная цена
      required: false
      schema:
        type: number
      example: 2
    qpSAOptionalFixedPrice:
      name: fixedPrice
      in: query
      description: Покупка строго за переданную максимальную цену. Использовать вместе
        с параметром maxPrice.
      required: false
      schema:
        type: string
      example: "true"
    qpSAOptionalRef:
      name: ref
      in: query
      description: Реферальный идентификатор
      required: false
      schema:
        type: string
      example: "123456789"
    qpSAOptionalPhoneException:
      name: phoneException
      in: query
      description: Исключающие префиксы. Вам не будут выдаваться номера с переданными
        префиксами. Максимум 20 префиксов.
      required: false
      schema:
        type: string
      example: 7934,7900
    qpSARequiredActivationID:
      name: id
      in: query
      description: ID активации
      required: true
      schema:
        type: integer
      example: 123456789
    qpSARequiredActivationStatus:
      name: status
      in: query
      description: Статус активации
      required: true
      schema:
        oneOf:
          - title: Запросить код
            type: integer
            enum:
              - 3
          - title: Завершить активацию
            type: integer
            enum:
              - 6
          - title: Отменить активацию
            type: integer
            enum:
              - 8
        default: 3
      example: 1
  examples:
    ActivationsOffersExample:
      summary: Без фильтра
      value:
        data:
          go:
            "6":
              prices:
                default: 0.03
                retail: 0.03
                min: 0.03
              counts:
                total: 19459
                physical: 10221
                defaultPrice: 13610
              map:
                "0.0300": 1171867
                "0.0589": 3453473
                "0.1510": 3771610
            "48":
              prices:
                default: 0.15
                retail: 0.15
                min: 0.15
              counts:
                total: 10446
                physical: 1821
                defaultPrice: 4654
              map:
                "0.1500": 14460
                "0.1553": 28887
                "0.6143": 670031
            "50":
              prices:
                default: 0.35
                retail: 0.35
                min: 0.35
              counts:
                total: 31871
                physical: 14454
                defaultPrice: 14206
              map:
                "0.3500": 14306
                "0.8226": 612179
                "0.9308": 817343
          ig:
            "6":
              prices:
                default: 0.0334
                retail: 0.0334
                min: 0.0334
              counts:
                total: 39166
                physical: 25787
                defaultPrice: 31838
              map:
                "0.0334": 10184181
                "0.0335": 10976322
                "0.0338": 11802947
            "48":
              prices:
                default: 0.06
                retail: 0.06
                min: 0.06
              counts:
                total: 5266
                physical: 197
                defaultPrice: 1509
              map:
                "0.0600": 7524
                "0.0725": 12963
                "0.2942": 204854
            "50":
              prices:
                default: 0.075
                retail: 0.075
                min: 0.075
              counts:
                total: 36384
                physical: 8404
                defaultPrice: 8211
              map:
                "0.0750": 8211
                "0.0942": 24639
                "0.0948": 49334
          tg:
            "6":
              prices:
                default: 0.15
                retail: 0.15
                min: 0.15
              counts:
                total: 22598
                physical: 12352
                defaultPrice: 4787
              map:
                "0.1500": 286896
                "0.1765": 327454
                "1.7648": 5814269
            "48":
              prices:
                default: 0.9
                retail: 0.9
                min: 0.9
              counts:
                total: 4076
                physical: 896
                defaultPrice: 0
              map:
                "1.0483": 204
                "1.1593": 793
                "2.4831": 46024
            "50":
              prices:
                default: 1
                retail: 1
                min: 1
              counts:
                total: 48641
                physical: 15336
                defaultPrice: 183
              map:
                "1.0000": 183
                "1.2504": 15885
                "2.9412": 1411078
        meta:
          page: null
          size: null
          sort:
            rate: asc
            deliverability: desc
          total: null
          hasMore: false
          order:
            rate:
              services:
                - go
                - ig
                - tg
              countries:
                go:
                  - "6"
                  - "48"
                  - "50"
                ig:
                  - "6"
                  - "48"
                  - "50"
                tg:
                  - "6"
                  - "48"
                  - "50"
            deliverability:
              countries:
                tg:
                  - "48"
                  - "6"
                ig:
                  - "48"
                  - "6"
                  - "50"
                go:
                  - "6"
                  - "48"
          filters:
            countries: []
            services: []
    ActivationsOffersServicesFilterExample:
      summary: Фильтр по сервисам
      value:
        data:
          go:
            "6":
              prices:
                default: 0.03
                retail: 0.03
                min: 0.03
              counts:
                total: 19459
                physical: 10221
                defaultPrice: 13610
              map:
                "0.0300": 1171867
                "0.0589": 3453473
                "0.1510": 3771610
            "48":
              prices:
                default: 0.15
                retail: 0.15
                min: 0.15
              counts:
                total: 10446
                physical: 1821
                defaultPrice: 4654
              map:
                "0.1500": 14460
                "0.1553": 28887
                "0.6143": 670031
            "50":
              prices:
                default: 0.35
                retail: 0.35
                min: 0.35
              counts:
                total: 31871
                physical: 14454
                defaultPrice: 14206
              map:
                "0.3500": 14306
                "0.8226": 612179
                "0.9308": 817343
          tg:
            "6":
              prices:
                default: 0.15
                retail: 0.15
                min: 0.15
              counts:
                total: 22598
                physical: 12352
                defaultPrice: 4787
              map:
                "0.1500": 286896
                "0.1765": 327454
                "1.7648": 5814269
            "48":
              prices:
                default: 0.9
                retail: 0.9
                min: 0.9
              counts:
                total: 4076
                physical: 896
                defaultPrice: 0
              map:
                "1.0483": 204
                "1.1593": 793
                "2.4831": 46024
            "50":
              prices:
                default: 1
                retail: 1
                min: 1
              counts:
                total: 48641
                physical: 15336
                defaultPrice: 183
              map:
                "1.0000": 183
                "1.2504": 15885
                "2.9412": 1411078
        meta:
          page: null
          size: null
          sort:
            rate: asc
            deliverability: desc
          total: null
          hasMore: false
          order:
            rate:
              services:
                - go
                - tg
              countries:
                go:
                  - "6"
                  - "48"
                  - "50"
                tg:
                  - "6"
                  - "48"
                  - "50"
            deliverability:
              countries:
                tg:
                  - "48"
                  - "6"
                go:
                  - "6"
                  - "48"
          filters:
            countries: []
            services:
              - go
              - tg
    ActivationsOffersCountriesFilterExample:
      summary: Фильтр по странам
      value:
        data:
          go:
            "6":
              prices:
                default: 0.03
                retail: 0.03
                min: 0.03
              counts:
                total: 19459
                physical: 10221
                defaultPrice: 13610
              map:
                "0.0300": 1171867
                "0.0589": 3453473
                "0.1510": 3771610
            "48":
              prices:
                default: 0.15
                retail: 0.15
                min: 0.15
              counts:
                total: 10446
                physical: 1821
                defaultPrice: 4654
              map:
                "0.1500": 14460
                "0.1553": 28887
                "0.6143": 670031
          ig:
            "6":
              prices:
                default: 0.0334
                retail: 0.0334
                min: 0.0334
              counts:
                total: 39166
                physical: 25787
                defaultPrice: 31838
              map:
                "0.0334": 10184181
                "0.0335": 10976322
                "0.0338": 11802947
            "48":
              prices:
                default: 0.06
                retail: 0.06
                min: 0.06
              counts:
                total: 5266
                physical: 197
                defaultPrice: 1509
              map:
                "0.0600": 7524
                "0.0725": 12963
                "0.2942": 204854
          tg:
            "6":
              prices:
                default: 0.15
                retail: 0.15
                min: 0.15
              counts:
                total: 22598
                physical: 12352
                defaultPrice: 4787
              map:
                "0.1500": 286896
                "0.1765": 327454
                "1.7648": 5814269
            "48":
              prices:
                default: 0.9
                retail: 0.9
                min: 0.9
              counts:
                total: 4076
                physical: 896
                defaultPrice: 0
              map:
                "1.0483": 204
                "1.1593": 793
                "2.4831": 46024
        meta:
          page: null
          size: null
          sort:
            rate: asc
            deliverability: desc
          total: null
          hasMore: false
          order:
            rate:
              services:
                - go
                - ig
                - tg
              countries:
                go:
                  - "6"
                  - "48"
                ig:
                  - "6"
                  - "48"
                tg:
                  - "6"
                  - "48"
            deliverability:
              countries:
                tg:
                  - "48"
                  - "6"
                ig:
                  - "6"
                  - "48"
                go:
                  - "48"
                  - "6"
          filters:
            countries:
              - "6"
              - "48"
            services: []
    ActivationsOffersServicesCountriesFiltersExample:
      summary: Фильтр по сервисам и странам
      value:
        data:
          ig:
            "6":
              prices:
                default: 0.0334
                retail: 0.0334
                min: 0.0334
              counts:
                total: 39166
                physical: 25787
                defaultPrice: 31838
              map:
                "0.0334": 10184181
                "0.0335": 10976322
                "0.0338": 11802947
            "50":
              prices:
                default: 0.075
                retail: 0.075
                min: 0.075
              counts:
                total: 36384
                physical: 8404
                defaultPrice: 8211
              map:
                "0.0750": 8211
                "0.0942": 24639
                "0.0948": 49334
          tg:
            "6":
              prices:
                default: 0.15
                retail: 0.15
                min: 0.15
              counts:
                total: 22598
                physical: 12352
                defaultPrice: 4787
              map:
                "0.1500": 286896
                "0.1765": 327454
                "1.7648": 5814269
            "48":
              prices:
                default: 0.9
                retail: 0.9
                min: 0.9
              counts:
                total: 4076
                physical: 896
                defaultPrice: 0
              map:
                "1.0483": 204
                "1.1593": 793
                "2.4831": 46024
        meta:
          page: null
          size: null
          sort:
            rate: asc
            deliverability: desc
          total: null
          hasMore: false
          order:
            rate:
              services:
                - ig
                - tg
              countries:
                ig:
                  - "6"
                  - "48"
                tg:
                  - "6"
                  - "48"
            deliverability:
              countries:
                tg:
                  - "48"
                  - "6"
                ig:
                  - "48"
                  - "6"
          filters:
            countries:
              - "6"
              - "48"
            services:
              - ig
              - tg
    badActionExample:
      summary: Неправильно указано действие
      value: BAD_ACTION
    sqlServerErrorExample:
      summary: Ошибка сервера
      value: ERROR_SQL
    bannedExample:
      summary: Пользователь заблокирован до указанной даты
      value: BANNED:'YYYY-m-d H-i-s'
    channelsLimitExample:
      summary: Аккаунт заблокирован
      value: CHANNELS_LIMIT
    missingKeyExample:
      summary: Нет апи-ключа
      value: NO_KEY
    incorrectKeyExample:
      summary: Неправильный апи-ключ
      value: BAD_KEY
    badStatusExample:
      summary: Некорректный статус
      value: BAD_STATUS
    numbersNotFoundExample:
      summary: Номера не найдены
      value: NO_NUMBERS
    badServiceExample:
      summary: Неправильно указан сервис
      value: BAD_SERVICE
    wrongMaxPriceExample:
      summary: Указанное максимальное значение меньше допустимого. В ответе указана
        минимальная цена
      value: WRONG_MAX_PRICE:0.025
    wrongMaxPriceExampleJson:
      summary: Указанное максимальное значение меньше допустимого. В ответе указана
        минимальная цена
      value:
        title: WRONG_MAX_PRICE
        details: The maximum price is less than the permitted price
        info:
          min: 0.1234
    wrongActivationIdExample:
      summary: Неверный ID активации
      value: WRONG_ACTIVATION_ID
    badStatusExampleJson:
      summary: Некорректный статус
      value:
        title: BAD_STATUS
        details: Wrong status code
    unprocessableEntityExample:
      summary: Некорректный запрос
      value:
        title: UNPROCESSABLE_ENTITY
        details: Validation failed
        info:
          field: service
          code: REQUIRED
          message: Param 'service' is required.
    wrongCountryIdExample:
      summary: Неверный ID страны
      value:
        title: WRONG_COUNTRY
        details: ""
    wrongServiceExample:
      summary: Неправильное имя сервиса
      value:
        title: WRONG_SERVICE
        details: Unsupported service
    wrongCurrencyExample:
      summary: Неподдерживаемая валюта
      value:
        title: WRONG_CURRENCY
        details: Unsupported Currency
    globalBanExample:
      summary: Глобальная временная блокировка
      value:
        title: BANNED
        details: Your account is temporarily suspended from making any purchases.
        info:
          scope: global
          banned_until: 1739448000
          retry_after_seconds: 3600
          readable_date: 2026-02-13T12:00:00+00:00
    specificBanExample:
      summary: Временная блокировка на переданную позицию
      value:
        title: BANNED
        details: Account temporarily suspended for this specific country/service pair.
        info:
          scope: specific
          banned_until: 1739448000
          retry_after_seconds: 3600
          readable_date: 2026-02-20T15:00:00+00:00
    successfulAccessReadyExample:
      summary: Готовность номера подтверждена
      value: ACCESS_READY
    successfulRetryGetExample:
      summary: Ожидание нового смс
      value: ACCESS_RETRY_GET
    successfulAccessActivationExample:
      summary: Сервис успешно активирован
      value: ACCESS_ACTIVATION
    successfulAccessCancelExample:
      summary: Активация отменена
      value: ACCESS_CANCEL
    earlyCancelDeniedExample:
      summary: Нельзя отменить номер в первые 2 минуты
      value: EARLY_CANCEL_DENIED
    noActivationExample:
      summary: ID активации не существует
      value: NO_ACTIVATION
    successfulWaitCodeExample:
      summary: Ожидание смс
      value: STATUS_WAIT_CODE
    successfulWaitRetryExample:
      summary: Ожидание уточнения кода
      value: STATUS_WAIT_RETRY:100001
    successfulWaitResendExample:
      summary: Ожидание повторной отправки смс
      value: STATUS_WAIT_RESEND
    successfulCancelExample:
      summary: Активация отменена
      value: STATUS_CANCEL
    successfulOKExample:
      summary: Код получен
      value: STATUS_OK:100001
    incorrectServiceExample:
      summary: Неправильно введен сервис
      value:
        status: "false"
        msg: service is incorrect
    incorrectCountryExample:
      summary: Неправильно введена страна
      value:
        status: "false"
        msg: country is incorrect
    successfulBalanceExample:
      summary: Баланс успешно получен
      value: ACCESS_BALANCE:100.5
    successfulNumberExample:
      summary: Номер успешно получен
      value: ACCESS_NUMBER:123456789:7*********0
    successfulNumberv2Example:
      summary: Номер успешно получен
      value:
        activationId: "635468024"
        phoneNumber: 79584******
        activationCost: 12.5
        currency: 840
        countryCode: 6
        countryPhoneCode: 62
        canGetAnotherSms: true
        activationTime: 2026-02-18T16:11:33+00:00
        activationEndTime: 2026-02-18T18:11:23+00:00
        activationOperator: any
        verificationType: sms
        subtype: 1
        serviceCode: vk
        status: 4
    successfulReactivationPriceExample:
      summary: Стоимость получена успешна
      value:
        data:
          price: 0.1234
    successfulProlongationPriceExample:
      summary: Стоимость получена успешно
      value:
        data:
          "2": 0.1234
          "4": 0.2234
          "24": 1.2234
          "168": 3.6432
    successfulProlongationHistoryExample:
      summary: История продлений получена успешна
      value:
        data:
          - hours: 2
            userPrice: 0.1442
            createDate: 2026-04-01T22:00:58+3:00
            payerType: client
          - hours: 24
            userPrice: 0
            createDate: 2026-04-02T00:00:58+3:00
            payerType: partner
    successfulActivationV2Example:
      summary: Статус активации успешно получен
      value:
        verificationType: sms
        data:
          id: "3416693217"
          phoneFrom: Telegram
          code: "123456"
          text: Telegram code 123456
          service: tg
          date: 2026-02-16T12:36:59+03:00
          type: sms
    activationsSuccessfulExample:
      summary: Список активаций успешно получен
      value:
        status: success
        data:
          - activationId: "635468021"
            serviceCode: vk
            phoneNumber: 79********1
            activationCost: 12.5
            activationStatus: "4"
            smsCode: "12345"
            smsText: Your code is 12345
            activationTime: 2022-06-01 16:59:16
            countryCode: "2"
            countryName: Kazakhstan
            canGetAnotherSms: "1"
            currency: 840
            verificationType: sms
            subtype: 1
    successfulActivationsHistoryExample:
      summary: История активаций успешно получена
      value:
        - id: "635468024"
          date: 0000-00-00 00:00:00
          phone: 7*********0
          sms: Your code is ****
          cost: 0
          status: "4"
          currency: 840
    successGetPrices:
      summary: Актуальные цены успешно получены
      value:
        - baa:
            cost: 0.08
            count: 25370
            physicalCount: 14528
    topCountriesAllServicesExample:
      summary: Топ стран по сервису без указания параметров успешно получен
      value:
        - ig:
            - physicalTotalCount: 7933
              physicalCountForDefaultPrice: 5198
              physicalPriceMap:
                "0.04": 24
                "0.0415": 439
                "0.0419": 3229
              retail_price: 0.2
              country: 6
              price: 0.045
              count: 5477
    topCountriesOneServiceExample:
      summary: Топ стран по сервису с указанием параметра "service" успешно получен
      value:
        - physicalTotalCount: 7933
          physicalCountForDefaultPrice: 5198
          physicalPriceMap:
            "0.04": 24
            "0.0415": 439
            "0.0419": 3229
          retail_price: 0.2
          country: 6
          price: 0.045
          count: 5477
    successServiceCountRent:
      summary: Данные успешно получены
      value:
        "6":
          "2":
            count: 25370
            price: 0.18
            retail_price: 0.18
          "12":
            count: 400
            price: 0.4568
            retail_price: 0.4568
          "48":
            count: 4523
            price: 0.8575
            retail_price: 0.8575
    emptyServiceCountRent:
      summary: Данные отсутствуют
      value: "{}"
    successGetRentServicesAndCountriesExample:
      summary: Данные успешно получены
      value:
        operators:
          "1": tmobile
          "2": three
        services:
          abc:
            quantity: 2
            price: 0.6
            retail_price: 0.6
          tg:
            quantity: 2
            price: 1.2
            retail_price: 1.2
    successExtendActivationOptionsExample:
      summary: Данные успешно получены
      value:
        data:
          options:
            - duration:
                value: 2
                unit: hour
              price: 0.2145
            - duration:
                value: 24
                unit: hour
              price: 1.4324
    successGetCountriesExample:
      summary: Список стран
      value:
        - id: 2
          rus: Казахстан
          eng: Kazakhstan
          chn: 哈萨克斯坦
          visible: 1
          retry: 1
    successGetServicesListExample:
      summary: Список сервисов
      value:
        status: success
        services:
          - code: aoo
            name: Pegasus Airlines
    successfulGetOperatorsExample:
      summary: Список операторов
      value:
        status: success
        countryOperators:
          "175":
            - optus
            - vodafone
            - telstra
            - lebara
    operatorsNotFoundExample:
      summary: Операторы не найдены
      value: OPERATORS_NOT_FOUND
    successfulRentNumberExample:
      summary: Номер для аренды успешно получен
      value:
        id: "635468024"
        phoneNumber: 79584******
        cost: 1.5333
        currency: 840
        lockCancelTime: 120
        endDate: 2022-06-01T22:00:58+03:00
        operator: mtt
    successfulOtpListExample:
      summary: Список otp успешно получен
      value:
        data:
          - id: "3416693217"
            phoneFrom: Telegram
            code: "123456"
            text: Telegram code 123456
            service: tg
            date: 2026-02-16T12:36:59+03:00
            type: sms
          - id: "3416693218"
            phoneFrom: "213421421431"
            code: null
            text: null
            service: tg
            date: 2026-02-16T12:36:59+03:00
            type: call
    badDurationExample:
      summary: Недопустимое время аренды
      value:
        title: BAD_DURATION
        details: Duration must be integer.
        info:
          min: 24
          max: 720
          available_durations:
            - 24
            - 72
            - 168
            - 720
    serviceUnavailableExample:
      summary: Сервис недоступен
      value:
        title: SERVICE_NOT_AVAILABLE
        details: Service not available for sale. Contact the technical support.
    simOfflineExample:
      summary: Номер больше недоступен
      value:
        title: SIM_OFFLINE
        details: Sim offline.
    simTemporaryOfflineExample:
      summary: Номер временно недоступен. Попробуйте позже.
      value:
        title: SIM_TEMPORARY_OFFLINE
        details: Sim temporary offline. Try later.
    maxHoursExceedExample:
      summary: Переданное время продления превышает максимально возможное
      value:
        title: MAX_HOURS_EXCEED
        details: Requested extension duration exceeds the maximum allowed hours.
        info:
          max: 336
    activationNotAvailableExample:
      summary: Действие недоступно для переданной активации
      value:
        title: ACTION_NOT_AVAILABLE
        details: Action not available for this activation. Try '/reactivate' method.
    freezePeriodNotReachedExample:
      summary: Продление недоступно, пока действует период заморозки
      value:
        title: FREEZE_PERIOD_NOT_REACHED
        details: Action not available while freeze period is active.
        info:
          retry_after_seconds: 3600
          readable_date: 2026-01-01T10:00:00+00:00
    threadsReachedExample:
      summary: Ограничение потоков
      value:
        title: CHANNELS_LIMIT
        details: You have reached the maximum number of concurrent threads (purchases)
          allowed for your account. Contact the technical support.
        info:
          current_threads: 0
          max_allowed: -1
    serviceRestrictedExample:
      summary: Позиция недоступна к продаже
      value:
        title: SERVICE_NOT_AVAILABLE
        details: Service not available for sale. Contact the technical support.
    inactiveAccountExample:
      summary: Необходимо подтвердить учётную запись
      value:
        title: ACCOUNT_INACTIVE
        details: Activate your account
    activationFinishedExample:
      summary: Активация завершена
      value:
        title: FINISHED
        details: Activation finished.
    activationRefundedExample:
      summary: Средства за активацию возвращены
      value:
        title: REFUNDED
        details: Activation blocked. Funds refunded.
    activationCanceledExample:
      summary: Активация отменена. Вам возвращены средства.
      value:
        title: CANCELED
        details: Activation canceled.
    freeCancellationExpiredExample:
      summary: Невозможно отменить активацию
      value:
        title: FREE_CANCELLATION_EXPIRED
        details: Cannot terminate activation - time limit exceeded (20 minutes)
    earlyCancellationExample:
      summary: Невозможно отменить активацию
      value:
        title: EARLY_CANCEL_DENIED
        details: Activation cannot be cancelled at this time. Minimum activation period
          must pass.
        info:
          minActivationTime: 120
    activationOtpReceivedExample:
      summary: Невозможно отменить активацию - пришло otp
      value:
        title: OTP_RECEIVED
        details: Cannot terminate activation - OTP has been received on this number
    paymentRequiredExample:
      summary: Недостаточно средств
      value:
        title: NO_BALANCE
        details: Payment Required
    noNumbersExample:
      summary: Нет номеров в продаже
      value:
        title: NO_NUMBERS
        details: Numbers Gone. Try Later
    activationNotActiveExample:
      summary: Активация неактивна
      value:
        title: ACTIVATION_NOT_ACTIVE
        details: Activation is terminated/refunded and Otp cannot be retrieved
    SAServerErrorExample:
      summary: Внутренняя ошибка сервиса
      value:
        title: SERVER_ERROR
        details: Server Gone
    methodNotFoundExample:
      summary: Метод не найден
      value:
        title: BAD_ACTION
        details: Method Not Found
    activationNotFoundExample:
      summary: Активация не найдена
      value:
        title: NOT_FOUND
        details: Activation Not Found
    unauthorizedExample:
      summary: Неверный апи-ключ
      value:
        title: BAD_KEY
        details: Unauthorized
    activationNewOtpReceivedExample:
      summary: Невозможно завершить активацию - пришло otp
      value:
        title: NEW_OTP_RECEIVED
        details: Otp was received on this number. Please confirm termination.
        info:
          data:
            - id: "3416693217"
              phoneFrom: Telegram
              code: "123456"
              text: Telegram code 123456
              service: tg
              date: 2026-02-16T12:36:59+03:00
              type: sms
            - id: "3416693218"
              phoneFrom: "213421421431"
              code: null
              text: null
              service: tg
              date: 2026-02-16T12:36:59+03:00
              type: call
  requestBodies:
    BuyActivationRequestBody:
      content:
        application/json:
          schema:
            schema: BuyActivationRequestBody
            required:
              - service
              - country
              - amount
            properties:
              service:
                $ref: "#/components/schemas/ServiceId"
              country:
                $ref: "#/components/schemas/CountryId"
              amount:
                description: Количество активаций к покупке
                type: integer
                example: 1
                maximum: 10
                minimum: 1
              operator:
                $ref: "#/components/schemas/OperatorId"
              phoneException:
                $ref: "#/components/schemas/PhoneException"
              maxPrice:
                $ref: "#/components/schemas/MaxPrice"
              fixedPrice:
                $ref: "#/components/schemas/FixedPrice"
              duration:
                $ref: "#/components/schemas/RentDuration"
              verificationType:
                $ref: "#/components/schemas/VerificationType"
              resellerUserId:
                $ref: "#/components/schemas/ResellerUserId"
            type: object
    ReactivateActivationRequestBody:
      content:
        application/json:
          schema:
            schema: ReactivateActivationRequestBody
            required: []
            properties:
              duration:
                $ref: "#/components/schemas/RentDuration"
            type: object
    ProlongActivationRequestBody:
      content:
        application/json:
          schema:
            schema: ProlongActivationRequestBody
            required:
              - duration
            properties:
              duration:
                $ref: "#/components/schemas/RentDuration"
            type: object
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      description: "Format: ApiKey {your_token}"
      name: Authorization
      in: header
    apiKeyQuery:
      type: apiKey
      name: api_key
      in: query
tags:
  - name: Activations
    description: Список активных активаций, покупка и текущее предложение
  - name: Activation OTP
    description: Получение OTP по активной активации
  - name: Emails
    description: HeroSMS email activations
  - name: SMS-Activate
    description: API compatible with SMS-Activate
  - name: Classifiers
    description: Справочники
  - name: Statistics
    description: Статистика
  - name: Webhooks
    description: >
      
      ##### Real-time event notification mechanism.

      After a purchase of the number, there is no need to repeatedly request
      activation status to receive incoming SMS messages.

      The service sends SMS content to the specified HTTPS URLs using the POST
      method.


      Up to 3 webhook URLs can be supported simultaneously.

      URLs are specified in the accounts personal information.

      Each webhook call is performed independently for each specified URL.

      - Method: POST

      - Content-Type: application/json

      - Response timeout: 3 seconds

      - If there is no response with code 200, the call is considered
      unsuccessful:
          - Number of retries - 7 times at least
          - Delay between retries - 20–30 seconds
          - Total duration of attempts - 3 minutes at least

      It is strongly recommended to respond with a 200 code even if the SMS has
      already been processed on the recipient's side.


      ##### Source IP addresses of webhook requests

      To ensure correct performance, add the following IP addresses to the
      whitelist:

      - ```84.32.223.53```

      - ```185.138.88.87```
webhooks:
  sms-incoming:
    post:
      tags:
        - Webhooks
      summary: "Webhook: incoming SMS"
      description: The event is sent upon reception of an incoming SMS to the number
        linked to the active activation
      operationId: smsIncoming
      requestBody:
        description: JSON with a data about the received SMS
        required: true
        content:
          application/json:
            schema:
              required:
                - activationId
                - id
                - phoneFrom
                - service
                - text
                - country
                - receivedAt
              properties:
                activationId:
                  $ref: "#/components/schemas/ActivationId"
                phoneFrom:
                  description: Источник OTP
                  type: string
                  example: "89854"
                service:
                  $ref: "#/components/schemas/ServiceId"
                text:
                  $ref: "#/components/schemas/SMSText"
                code:
                  $ref: "#/components/schemas/SMSCode"
                country:
                  $ref: "#/components/schemas/CountryId"
                receivedAt:
                  $ref: "#/components/schemas/dateISO8601"
                  description: SMS arrival time
              type: object
      responses:
        "200":
          description: Webhook successfully received (recommended response)
        default:
          description: Webhook is not accepted, up to 7 retries
