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: 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.'