prro-cloud Webhooks API

The webhooks API from prro-cloud — 4 operation(s) for webhooks.

Operations 6

GET /v1/webhooks Вебхуки клієнта без секретів #
POST /v1/webhooks Зареєструвати вебхук #
PATCH /v1/webhooks/{id} Змінити URL, події або активність вебхука #
DELETE /v1/webhooks/{id} Видалити вебхук #
GET /v1/webhooks/{id}/deliveries Історія доставок вебхука #
POST /v1/webhooks/{id}/deliveries/{deliveryId}/replay Повторити доставку #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/prro-cloud:prro-cloud-webhooks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

prro-cloud-webhooks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: prro-service Webhooks API
  description: 'REST API сервісу фіскалізації. Шляхи вказано від базової адреси.


    Каса — програмний реєстратор розрахункових операцій (ПРРО). Документ — будь-який документ, який сервіс надсилає до ДПС: чек, Z-звіт, документ зміни, документ офлайн-сесії. Чек — документ типу sale, return, storno, service_in або service_out.


    Автентифікація: Bearer JWT. Токен створюють у кабінеті. Цей документ не описує вхід у кабінет.'
  version: 0.9.0
tags:
- name: Webhooks
paths:
  /v1/webhooks:
    get:
      operationId: listWebhooks
      summary: Вебхуки клієнта без секретів
      tags:
      - Webhooks
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Вебхуки клієнта.
          content:
            application/json:
              schema:
                type: object
                required:
                - webhooks
                - limit
                - used
                properties:
                  webhooks:
                    description: Вебхуки клієнта. Відповідь не містить секретів.
                    type: array
                    items:
                      $ref: '#/components/schemas/WebhookEndpoint'
                  limit:
                    type: integer
                    description: 'Максимальна кількість вебхуків: кількість кас клієнта плюс один.'
                  used:
                    type: integer
                    description: Кількість зареєстрованих вебхуків, разом із призупиненими.
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createWebhook
      summary: Зареєструвати вебхук
      description: 'Сервіс доставляє подію запитом POST. Тіло запиту: {delivery_id, event, attempt, sequence, occurred_at, data}. Заголовок X-Signature має вигляд "sha256=". Сервіс обчислює підпис із секретом цього вебхука.


        Сервіс гарантує доставку «щонайменше один раз». Приймач має відкидати повторні доставки за delivery_id.


        Сервіс доставляє події однієї каси по одній і за порядком. Якщо приймач не прийняв подію, сервіс доставляє наступні події без затримки. Після повторної спроби або replay ця подія може надійти пізніше за наступні. Упорядковуйте події каси за sequence. sequence — номер події в межах каси. Номер зростає, але може мати пропуски. Поточний стан каси: GET /v1/cash-registers/{id}.'
      tags:
      - Webhooks
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - url
              properties:
                url:
                  type: string
                  description: Абсолютний http(s)-URL приймача.
                events:
                  type: array
                  items:
                    $ref: '#/components/schemas/WebhookEvent'
                  description: Події, на які підписано вебхук. Порожній список означає всі події. Якщо поля немає, вебхук підписано на всі події.
                secret:
                  type: string
                  description: Секрет HMAC. Якщо поля немає, сервіс створює секрет.
      responses:
        '201':
          description: Вебхук створено. Сервіс повертає секрет лише один раз.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/WebhookEndpoint'
                - type: object
                  required:
                  - secret
                  properties:
                    secret:
                      type: string
                      description: Сервіс не повертає секрет повторно.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '409':
          description: Кількість вебхуків досягла максимуму (код webhook_limit_reached). Максимум — кількість кас клієнта плюс один. Призупинені вебхуки входять у цю кількість. Поле details містить limit і used.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          $ref: '#/components/responses/Error'
  /v1/webhooks/{id}:
    parameters:
    - name: id
      in: path
      required: true
      schema:
        type: string
        format: uuid
      description: Ідентифікатор вебхука.
    patch:
      operationId: updateWebhook
      summary: Змінити URL, події або активність вебхука
      tags:
      - Webhooks
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  description: Новий абсолютний http(s)-URL приймача.
                events:
                  description: Новий перелік подій. Порожній список означає всі події.
                  type: array
                  items:
                    $ref: '#/components/schemas/WebhookEvent'
                active:
                  type: boolean
                  description: 'false: сервіс призупиняє доставку. Черга доставок зберігається.'
      responses:
        '200':
          description: Вебхук змінено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookEndpoint'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/Error'
        '422':
          $ref: '#/components/responses/Error'
    delete:
      operationId: deleteWebhook
      summary: Видалити вебхук
      tags:
      - Webhooks
      security:
      - bearerAuth: []
      responses:
        '204':
          description: Вебхук видалено. Сервіс переводить недоставлені події в статус dead.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/Error'
  /v1/webhooks/{id}/deliveries:
    get:
      operationId: listWebhookDeliveries
      summary: Історія доставок вебхука
      description: Сервіс зберігає доставки зі статусом delivered 30 днів, доставки зі статусом dead — 14 днів від останньої спроби. Потім сервіс видаляє доставки з історії.
      tags:
      - Webhooks
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Ідентифікатор вебхука.
      - name: status
        in: query
        schema:
          type: string
          enum:
          - pending
          - delivering
          - delivered
          - failed
          - dead
        description: Лише доставки з цим статусом.
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 200
          default: 50
        description: 'Кількість доставок у відповіді: 1–200, типово 50.'
      responses:
        '200':
          description: Доставки.
          content:
            application/json:
              schema:
                type: object
                required:
                - deliveries
                properties:
                  deliveries:
                    description: Доставки, від найновішої.
                    type: array
                    items:
                      $ref: '#/components/schemas/WebhookDelivery'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/Error'
        '422':
          $ref: '#/components/responses/Error'
  /v1/webhooks/{id}/deliveries/{deliveryId}/replay:
    post:
      operationId: replayWebhookDelivery
      summary: Повторити доставку
      description: Сервіс повертає доставку в чергу з новою кількістю спроб. Зазвичай це доставка зі статусом dead. Операція доступна, поки доставка є в історії. Доставка зі статусом dead є в історії 14 днів від останньої спроби.
      tags:
      - Webhooks
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Ідентифікатор вебхука.
      - name: deliveryId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Ідентифікатор доставки з історії.
      responses:
        '200':
          description: Доставку повернуто в чергу. Сервіс виконує спробу одразу. Сервіс не повторює події, які доставив за цей час. Ця подія надійде після них.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookDelivery'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/Error'
        '409':
          description: Спроба доставки виконується зараз.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    WebhookEndpoint:
      description: 'Вебхук: URL приймача і події, які сервіс доставляє.'
      type: object
      required:
      - id
      - url
      - events
      - active
      - created_at
      - updated_at
      properties:
        id:
          type: string
          format: uuid
          description: Ідентифікатор вебхука.
        url:
          type: string
          description: Абсолютний http(s)-URL приймача.
        events:
          type: array
          items:
            $ref: '#/components/schemas/WebhookEvent'
          description: Порожній список означає підписку на всі події.
        active:
          type: boolean
          description: 'Доставка ввімкнена. false: сервіс призупиняє доставку, черга доставок зберігається.'
        created_at:
          type: string
          format: date-time
          description: Час створення вебхука.
        updated_at:
          type: string
          format: date-time
          description: Час останньої зміни вебхука.
    WebhookEvent:
      type: string
      enum:
      - task.completed
      - task.failed
      - shift.opened
      - shift.closed
      - key.expiring
      - register.offline
      - register.online
      - register.offline_limit
      - register.offline_abandoned
      - register.remediated
      - register.needs_attention
      - client.balance_low
      - receipt.registered
      description: "- `task.completed` — завдання завершилося успішно.\n- `task.failed` — завдання завершилося помилкою.\n- `shift.opened`, `shift.closed` — зміну відкрито або закрито. Дані:\n  ShiftEventData.\n- `key.expiring` — строк дії сертифіката ключа закінчується протягом\n  30 днів. Сервіс надсилає цю подію раз на добу.\n- `register.offline` — каса перейшла в офлайн-режим.\n- `register.online` — каса повернулася в онлайн-режим.\n- `register.offline_limit` — каса досягла законодавчої межі\n  офлайн-режиму (36 годин на офлайн-сесію, 168 годин на місяць).\n  Якщо межі знято, дані містять `limits_lifted: true`, і сервіс не\n  відхиляє документи через межі.\n- `register.offline_abandoned` — від офлайн-сесії відмовилися. Подія\n  містить перелік документів, яких ДПС не отримала.\n- `register.remediated` — сервіс автоматично виправив розбіжність із\n  ДПС.\n- `register.needs_attention` — сервіс не може виправити розбіжності\n  автоматично. Потрібне рішення людини.\n- `client.balance_low` — баланс наближається до порога. Коли баланс\n  стане нижчим за поріг, сервіс відхилятиме чеки з 402.\n- `receipt.registered` — сервіс зареєстрував чек будь-якого типу.\n  Подія містить повний вміст чека. Дані: ReceiptRegisteredData."
    Error:
      description: 'Конверт помилки: машинний код, текст для людини і подробиці, якщо вони є.'
      type: object
      required:
      - code
      - message
      properties:
        code:
          type: string
          examples:
          - unauthorized
          - validation_failed
          description: Стабільний машинний код помилки. Програма клієнта обробляє помилку за цим кодом.
        message:
          type: string
          description: Текст для людини. Не використовуйте цей текст у логіці програми.
        details:
          description: 'Подробиці помилки, якщо вони є. Приклад: перелік полів, які не пройшли валідацію.'
    WebhookDelivery:
      description: Одна доставка події та її статус.
      type: object
      required:
      - id
      - event
      - status
      - attempts
      - created_at
      - data
      properties:
        id:
          type: string
          format: uuid
          description: Ідентифікатор доставки. Це значення вказують у шляху replay.
        event:
          type: string
          description: 'Тип події. Крім значень WebhookEvent, доставка може мати зарезервовані типи без підписки: webhook.ping (тестова доставка) і system.dps_* (події доступності ДПС).'
        status:
          type: string
          enum:
          - pending
          - delivering
          - delivered
          - failed
          - dead
          description: '- `pending` — доставка в черзі

            - `delivering` — спроба виконується

            - `delivered` — подію доставлено

            - `failed` — спроба невдала, сервіс виконає повторну спробу

            - `dead` — спроби закінчилися'
        attempts:
          type: integer
          description: Кількість виконаних спроб.
        cash_register_id:
          type: string
          format: uuid
          description: Каса події. Поля немає для подій рівня клієнта.
        sequence:
          type: integer
          format: int64
          description: Номер події в межах каси (поле sequence конверта). За цим номером упорядковують події. Поля немає для подій рівня клієнта.
        data:
          description: Дані події (поле data конверта).
        last_error:
          type: string
          description: 'Результат останньої невдалої спроби: код і початок відповіді приймача або причина помилки з''єднання (наприклад, TLS).'
        next_attempt_at:
          type: string
          format: date-time
          description: Час наступної спроби. Поля немає, якщо спроб більше не буде.
        created_at:
          type: string
          format: date-time
          description: Час, коли сервіс поставив подію в чергу.
        delivered_at:
          type: string
          format: date-time
          description: Час, коли приймач повернув успішну відповідь.
  responses:
    Error:
      description: Конверт помилки.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Токена немає, токен недійсний, строк дії токена закінчився або токен відкликано.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'Машинний JWT із довгим строком дії. Токен створюють у кабінеті. Необмежений токен діє на всі каси клієнта, поточні й майбутні.


        Обмежений токен діє лише на каси зі свого переліку. Для інших кас операції з касою повертають 404, і сервіс не повідомляє, чи існує каса. Ресурси рівня клієнта (тарифікація, вебхуки) повертають 403.'