From 9930a385994f419e7a09e6940823632a972a2e6f Mon Sep 17 00:00:00 2001 From: Demian Parkhomenko <95881717+DemianParkhomenko@users.noreply.github.com> Date: Thu, 16 May 2024 16:27:40 +0300 Subject: [PATCH] Update openapi specifcations --- generated/acquiring.d.ts | 411 ++++++++++++++++++++++++++++++--- generated/acquiring.json | 341 ++++++++++++++++++++++++--- generated/personal.d.ts | 78 ++++++- generated/personal.json | 484 +++++++++++++++++++++++++++++++++++++++ generated/personal.yaml | 352 ---------------------------- package.json | 2 +- 6 files changed, 1232 insertions(+), 436 deletions(-) create mode 100644 generated/personal.json delete mode 100644 generated/personal.yaml diff --git a/generated/acquiring.d.ts b/generated/acquiring.d.ts index b1c7d6e..3455c30 100644 --- a/generated/acquiring.d.ts +++ b/generated/acquiring.d.ts @@ -988,10 +988,80 @@ export interface paths { }; }; }; + '/api/merchant/invoice/sync-payment': { + /** + * Синхронна оплата + * @description Апі для синхронної оплати, доступ до апі надається через підтримку та вимагає наявності певного ряду сертифікатів. Один із обʼєктів `cardData`, `applePay`, `googlePay` є обовʼязковим + */ + post: { + parameters: { + header?: { + /** @description Токен з особистого кабінету https://web.monobank.ua/ або тестовий токен з https://api.monobank.ua/ */ + 'X-Token'?: string; + /** @description Назва CMS, якщо ви розробляєте платіжний модуль для CMS */ + 'X-Cms'?: string; + /** @description Версія CMS, якщо ви розробляєте платіжний модуль для CMS */ + 'X-Cms-Version'?: string; + }; + }; + requestBody?: { + content: { + 'application/json': components['schemas']['InvoiceSyncPaymentRequest']; + }; + }; + responses: { + /** @description Дані результату оплати */ + 200: { + content: { + 'application/json': components['schemas']['InvoiceSyncPaymentResponse']; + }; + }; + /** @description Один із вхідних параметрів невалідний */ + 400: { + content: { + 'application/json': components['schemas']['BadRequestError']; + }; + }; + /** @description Токен невалідний */ + 403: { + content: { + 'application/json': components['schemas']['ForbiddenError']; + }; + }; + /** @description Пошук за одним із параметрів запиту завершився неуспішно */ + 404: { + content: { + 'application/json': components['schemas']['NotFoundError']; + }; + }; + /** @description Http-метод невалідний */ + 405: { + content: { + 'application/json': components['schemas']['MethodNotAllowedError']; + }; + }; + /** @description Занадто багато запитів */ + 429: { + content: { + 'application/json': components['schemas']['TooManyRequestsError']; + }; + }; + /** @description Під час виконання запиту виникла непередбачена помилка */ + 500: { + content: { + 'application/json': components['schemas']['InternalServerError']; + }; + }; + }; + }; + }; '/api/merchant/invoice/payment-info?invoiceId={invoiceId}': { /** - * DEPRECATED — Розширена інформація про успішну оплату\n - * @description **Дані апі застаріле! Слід використовувати Статус рахунку, замість цього апі** \n\nДані про успішну оплату, якщо вона була здійснена\n + * DEPRECATED — Розширена інформація про успішну оплату + * + * @description **Дане апі застаріле! Слід використовувати Статус рахунку, замість цього апі** + * + * Дані про успішну оплату, якщо вона була здійснена */ get: { parameters: { @@ -1058,7 +1128,14 @@ export interface components { schemas: { CancelListItem: { /** - * @description Статус заяви скасування:\n\n `processing` - заява на скасування знаходиться в обробці\n\n `success` - заяву на скасування виконано успішно\n\n `failure` - неуспішне скасування\n + * @description Статус заяви скасування: + * + * `processing` - заява на скасування знаходиться в обробці + * + * `success` - заяву на скасування виконано успішно + * + * `failure` - неуспішне скасування + * * @enum {string} */ status: 'processing' | 'success' | 'failure'; @@ -1112,7 +1189,14 @@ export interface components { */ qrId: string; /** - * @description Тип суми одноразової каси:\n\n `merchant` - суму встановлює мерчант\n\n `client` - суму встановлює клієнт\n\n `fix` - сума фіксована\n + * @description Тип суми одноразової каси: + * + * `merchant` - суму встановлює мерчант + * + * `client` - суму встановлює клієнт + * + * `fix` - сума фіксована + * * @enum {string} */ amountType: 'merchant' | 'client' | 'fix'; @@ -1144,7 +1228,14 @@ export interface components { */ date: string; /** - * @description Схема оплати:\n\n `bnpl_later_30` - bnpl-оплата\n\n `bnpl_parts_4` - платіж 4 частини\n\n `full` - повна оплата\n + * @description Схема оплати: + * + * `bnpl_later_30` - bnpl-оплата + * + * `bnpl_parts_4` - платіж 4 частини + * + * `full` - повна оплата + * * @enum {string} */ paymentScheme: 'bnpl_later_30' | 'bnpl_parts_4' | 'full'; @@ -1247,7 +1338,9 @@ export interface components { */ redirectUrl?: string; /** - * @description Адреса для CallBack (POST) – на цю адресу буде надіслано дані про стан платежу при кожній зміні статусу. Зміст тіла запиту ідентичний відповіді запиту “Статус рахунку”. **Гарантії доставки повідомлень одне за одним не надається. Тобто, може бути ситуація, коли вебхук про успішну оплату (`status=success`) прийде пізніше за вебхук про обробку цієї оплати (`status=processing`). Краще орієнтуватись на поле `modifiedDate` при аналізі поточного статусу рахунку. Вебхук із більшим `modifiedDate` буде актуальним** + * @description Адреса для CallBack (POST) – на цю адресу буде надіслано дані про стан платежу при кожній зміні статусу. Зміст тіла запиту ідентичний відповіді запиту “Статус рахунку”. **Гарантії доставки повідомлень одне за одним не надається. Тобто, може бути ситуація, коли вебхук про успішну оплату (`status=success`) прийде пізніше за вебхук про обробку цієї оплати (`status=processing`). Краще орієнтуватись на поле `modifiedDate` при аналізі поточного статусу рахунку. Вебхук із більшим `modifiedDate` буде актуальним**. + * + * Окрім вебхуків при зміні статусу рахунку, вебхуки також будуть приходити при зміні статусу токенізоваї картки, якщо обʼєкт `saveCardData` було вказано при створенні рахунку * @example https://example.com/mono/acquiring/webhook/maybesomegibberishuniquestringbutnotnecessarily */ webHookUrl?: string; @@ -1269,7 +1362,7 @@ export interface components { */ qrId?: string; /** - * @description Код терміналу субмерчанта, з апі 'Список субмерчантів'. Доступний обмеженому колу мерчантів, які точно знають, що їм це потрібно + * @description Код терміналу субмерчанта, з апі "Список субмерчантів". Доступний обмеженому колу мерчантів, які точно знають, що їм це потрібно * @example 0a8637b3bccb42aa93fdeb791b8b58e9 */ code?: string; @@ -1284,7 +1377,7 @@ export interface components { walletId?: string; }; }; - /** @description Інформаційні дані замовлення, яке буде оплачуватсь. Обовʼязково вказувати при активній звʼязці з ПРРО (звʼязка створюється у веб-кабінеті https://web.monobank.ua) */ + /** @description Інформаційні дані замовлення, яке буде оплачуватись. Обовʼязково вказувати при активній звʼязці з ПРРО (звʼязка створюється у веб-кабінеті https://web.monobank.ua) */ MerchantPaymInfoItem: { /** * @description Номер чека, замовлення, тощо; визначається мерчантом @@ -1353,20 +1446,24 @@ export interface components { /** @description Масив знижок або надбавок, які будуть передані в checkbox для фіскалізації, якщо звʼязку з checkbox активовано */ discounts?: { /** - * @description Тип знижки або надбавки\n`DISCOUNT` — знижка\n`EXTRA_CHARGE` — надбавка\n + * @description Тип знижки або надбавки + * `DISCOUNT` — знижка + * `EXTRA_CHARGE` — надбавка + * * @enum {string} */ type: 'DISCOUNT' | 'EXTRA_CHARGE'; /** - * @description Режим знижки або надбавки\n`PERCENT` — відсоток від basketOrder.sum * basketOrder.qty\n\n`VALUE` — числове значення\n + * @description Режим знижки або надбавки + * `PERCENT` — відсоток від basketOrder.sum * basketOrder.qty + * + * `VALUE` — числове значення + * * @enum {string} */ mode: 'PERCENT' | 'VALUE'; - /** - * @description Значення, яке буде фігурувати в розрахунках - * @enum {number} - */ - value: PERCENT | VALUE; + /** @description Значення, яке буде фігурувати в розрахунках */ + value: number; }[]; }[]; }; @@ -1441,7 +1538,12 @@ export interface components { */ redirectUrl?: string; /** - * @description Тип проведення платежу:\n\n `merchant` - платіж з ініціативи мерчанта, наприклад, регулярний платіж — коли клієнт не бере участі у підтвердженні платежу\n\n `client` - платіж за вимогою клієнта\n + * @description Тип проведення платежу: + * + * `merchant` - платіж з ініціативи мерчанта, наприклад, регулярний платіж — коли клієнт не бере участі у підтвердженні платежу + * + * `client` - платіж за вимогою клієнта + * * @enum {string} */ initiationKind?: 'merchant' | 'client'; @@ -1453,7 +1555,25 @@ export interface components { */ invoiceId: string; /** - * @description Статус операції:\n\n `created` - рахунок створено успішно, очікується оплата\n\n `processing` - платіж обробляється\n\n `hold` - сума заблокована\n\n `success` - успішна оплата\n\n `failure` - неуспішна оплата\n\n `reversed` - оплата повернена після успіху\n\n `expired` - час дії вичерпано\n\n\nУ випадку вебхуків гарантії доставки повідомлень одне за одним не надається. Тобто, може бути ситуація, коли вебхук про успішну оплату (`success`) прийде пізніше за вебхук про обробку цієї оплати (`status=processing`). Краще орієнтуватись на поле `modifiedDate` при аналізі поточного статусу рахунку. Вебхук із більшим `modifiedDate` буде актуальним\n + * @description Статус операції: + * + * `created` - рахунок створено успішно, очікується оплата + * + * `processing` - платіж обробляється + * + * `hold` - сума заблокована + * + * `success` - успішна оплата + * + * `failure` - неуспішна оплата + * + * `reversed` - оплата повернена після успіху + * + * `expired` - час дії вичерпано + * + * + * У випадку вебхуків гарантії доставки повідомлень одне за одним не надається. Тобто, може бути ситуація, коли вебхук про успішну оплату (`success`) прийде пізніше за вебхук про обробку цієї оплати (`status=processing`). Краще орієнтуватись на поле `modifiedDate` при аналізі поточного статусу рахунку. Вебхук із більшим `modifiedDate` буде актуальним + * * @enum {string} */ status: @@ -1470,7 +1590,7 @@ export interface components { */ failureReason?: string; /** - * @description Код помилки, яка виникла під час обробки платежу. Що цей код означає, і куди звернутися можна в розділі 'Помилки в процесі оплати' + * @description Код помилки, яка виникла під час обробки платежу. Що цей код означає, і куди звернутися можна в розділі "Помилки в процесі оплати" * @example 59 */ errCode?: string; @@ -1553,7 +1673,20 @@ export interface components { */ paymentSystem: 'visa' | 'mastercard'; /** - * @description Метод оплати:\n\n `pan` - оплата була здійснена за введеним номером картки\n\n `apple` - оплата була здійснена через apple pay\n\n `google` - оплата була здійснена через google pay\n\n `monobank` - оплата була здійснена через monobank\n\n `wallet` - оплата була здійснена токенізованою карткою\n\n `direct` - оплата була здійснена через апі \'Оплата за реквізитами\' (за умови, що у мерчанта був PCI DSS сертифікат)\n + * @description Метод оплати: + * + * `pan` - оплата була здійснена за введеним номером картки + * + * `apple` - оплата була здійснена через apple pay + * + * `google` - оплата була здійснена через google pay + * + * `monobank` - оплата була здійснена через monobank + * + * `wallet` - оплата була здійснена токенізованою карткою + * + * `direct` - оплата була здійснена через апі 'Оплата за реквізитами' (за умови, що у мерчанта був PCI DSS сертифікат) + * * @enum {string} */ paymentMethod: @@ -1587,7 +1720,14 @@ export interface components { */ walletId: string; /** - * @description Статус токенізації картки:\n\n `new` - прийнято заявку на токенізацію\n\n `created` - картку успішно токенізовано\n\n `failed` - картку не вдалось токенізувати \n + * @description Статус токенізації картки: + * + * `new` - прийнято заявку на токенізацію + * + * `created` - картку успішно токенізовано + * + * `failed` - картку не вдалось токенізувати + * * @enum {string} */ status: 'new' | 'created' | 'failed'; @@ -1610,7 +1750,7 @@ export interface components { * @example 5000 */ amount?: number; - /** @description Список товарів для створення чеку повернення, поле обов\'язкове у випадку активованої опції фіскалізації */ + /** @description Список товарів для створення чеку повернення, поле обов'язкове у випадку активованої опції фіскалізації */ items?: components['schemas']['FiscalizationItem'][]; }; InvoiceRemoveRequest: { @@ -1623,7 +1763,14 @@ export interface components { EmptyResponse: Record; InvoiceCancelResponse: { /** - * @description Статус операції:\n\n `processing` - заява на скасування знаходиться в обробці\n\n `success` - заяву на скасування виконано успішно\n\n `failure` - неуспішне скасування\n + * @description Статус операції: + * + * `processing` - заява на скасування знаходиться в обробці + * + * `success` - заяву на скасування виконано успішно + * + * `failure` - неуспішне скасування + * * @enum {string} */ status: 'processing' | 'success' | 'failure'; @@ -1683,12 +1830,30 @@ export interface components { */ terminal: string; /** - * @description Тип оплати:\n\n `full` - повна оплата при покупці\n\n `bnpl_parts_4` - оплата 4-ма частинами (період платежів 14 днів)\n\n `bnpl_later_30` - оплата на 30-тий день з дня покупки\n + * @description Тип оплати: + * + * `full` - повна оплата при покупці + * + * `bnpl_parts_4` - оплата 4-ма частинами (період платежів 14 днів) + * + * `bnpl_later_30` - оплата на 30-тий день з дня покупки + * * @enum {string} */ paymentScheme: 'full' | 'bnpl_parts_4' | 'bnpl_later_30'; /** - * @description Метод оплати:\n\n `pan` - оплата була здійснена за введеним номером картки\n\n `apple` - оплата була здійснена через apple pay\n\n `google` - оплата була здійснена через google pay\n\n `monobank` - оплата була здійснена через monobank\n \n `wallet` - оплата була здійснена токенізованою карткою\n + * @description Метод оплати: + * + * `pan` - оплата була здійснена за введеним номером картки + * + * `apple` - оплата була здійснена через apple pay + * + * `google` - оплата була здійснена через google pay + * + * `monobank` - оплата була здійснена через monobank + * + * `wallet` - оплата була здійснена токенізованою карткою + * * @enum {string} */ paymentMethod: 'pan' | 'apple' | 'google' | 'monobank' | 'wallet'; @@ -1728,7 +1893,10 @@ export interface components { }; InvoiceFinalizeResponse: { /** - * @description Статус заяви:\n\n `success` - заяву на фіналізацію прийнято\n + * @description Статус заяви: + * + * `success` - заяву на фіналізацію прийнято + * * @enum {string} */ status: 'success'; @@ -1864,7 +2032,12 @@ export interface components { */ webHookUrl?: string; /** - * @description Тип проведення платежу:\n\n `merchant` - платіж з ініціативи мерчанта, наприклад, регулярний платіж — коли клієнт не бере участі у підтвердженні платежу\n\n `client` - платіж за вимогою клієнта, наприклад, клієнт виконує оплату зі збереженої картки\n + * @description Тип проведення платежу: + * + * `merchant` - платіж з ініціативи мерчанта, наприклад, регулярний платіж — коли клієнт не бере участі у підтвердженні платежу + * + * `client` - платіж за вимогою клієнта, наприклад, клієнт виконує оплату зі збереженої картки + * * @enum {string} */ initiationKind: 'merchant' | 'client'; @@ -1976,9 +2149,146 @@ export interface components { fiscalizationSource: 'checkbox' | 'monopay'; }[]; }; + InvoiceSyncPaymentRequest: { + /** + * Format: int64 + * @description Сума оплати у мінімальних одиницях (копійки для гривні) + * @example 4200 + */ + amount: number; + /** + * Format: int32 + * @description ISO 4217 код валюти, за замовчуванням 980 (гривня) + * @example 980 + */ + ccy: number; + /** @description Інформаційні дані замовлення, яке буде оплачуватись */ + merchantPaymInfo?: { + /** + * @description Номер чека, замовлення, тощо, який було вказано мерчантом при створенні рахунку + * @example 84d0070ee4e44667b31371d8f8813947 + */ + reference?: string; + /** + * @description Призначення платежу, визначається продавцем + * @example Покупка щастя + */ + destination?: string; + }; + /** @description Дані для оплати карткою */ + cardData?: { + /** + * @description Номер картки + * @example 4242424242424242 + */ + pan: string; + /** @enum {string} */ + type: 'FPAN' | 'DPAN'; + /** + * @description Термін дії картки у форматі `mmyy` + * @example 0642 + */ + exp: string; + /** + * @description Cvv + * @example 123 + */ + cvv?: string; + /** + * @description Electronic Commerce Indicator, значення результату аутентифікації + * @example 02 + */ + eciIndicator: string; + /** + * @description Cardholder Authentication Verification Value + * @example 123 + */ + cavv?: string; + /** + * @description Token authentication verification value + * @example tavv + */ + tavv?: string; + /** + * @description XID (DSTranID) + * @example 12 + */ + dsTranId?: string; + /** + * @description Token requestor ID + * @example 51 + */ + tReqID?: string; + /** + * @description Merchant Initiated Transaction Indicator + * @example 1 + */ + mit?: string; + /** + * @description Subsequent Transaction + * @example 2 + */ + sst?: number; + /** + * @description Trace Id + * @example 12 + */ + tid?: string; + }; + /** @description Дані з криптоконтейнеру Apple Pay */ + applePay?: { + /** + * @description Токен картки + * @example 4242424242424242 + */ + token: string; + /** + * @description Термін дії картки у форматі `mmyy` + * @example 0642 + */ + exp: string; + /** + * @description Electronic Commerce Indicator, значення результату аутентифікації + * @example 02 + */ + eciIndicator: string; + /** + * @description TAVV криптограма + * @example AQAAAAoAR9qDi9kAAAAAgGpLpoA= + */ + cryptogram?: string; + }; + /** @description Дані з криптоконтейнеру Google Pay */ + googlePay?: { + /** + * @description Токен картки + * @example 4242424242424242 + */ + token: string; + /** + * @description Термін дії картки у форматі `mmyy` + * @example 0642 + */ + exp: string; + /** + * @description Electronic Commerce Indicator, значення результату аутентифікації + * @example 02 + */ + eciIndicator: string; + /** + * @description TAVV криптограма + * @example AQAAAAoAR9qDi9kAAAAAgGpLpoA= + */ + cryptogram?: string; + }; + }; + InvoiceSyncPaymentResponse: components['schemas']['InvoiceStatusResponse']; ForbiddenError: { /** - * @description Код помилки, за яким можна розрізняти види клієнтських помилок:\n \n `FORBIDDEN` - у запиті було надіслано невалідний X-Token \n + * @description Код помилки, за яким можна розрізняти види клієнтських помилок: + * + * `FORBIDDEN` - у запиті було надіслано невалідний X-Token + * * @example FORBIDDEN */ errCode: string; @@ -2007,7 +2317,7 @@ export interface components { */ sum: number; /** - * @description Код товару, обов\'язковий для фіскалізації + * @description Код товару, обов'язковий для фіскалізації * @example d21da1c47f3c45fca10a10c32518bdeb */ code: string; @@ -2036,7 +2346,10 @@ export interface components { }; TooManyRequestsError: { /** - * @description Код помилки, за яким можна розрізняти види клієнтських помилок:\n \n `TMR` - занадто багато запитів, потрібно почекати, перш ніж робити новий запит\n + * @description Код помилки, за яким можна розрізняти види клієнтських помилок: + * + * `TMR` - занадто багато запитів, потрібно почекати, перш ніж робити новий запит + * * @example TMR */ errCode: string; @@ -2048,19 +2361,37 @@ export interface components { }; BadRequestError: { /** - * @description Код помилки, за яким можна розрізняти види клієнтських помилок:\n\n `BAD_REQUEST` - запит некоректний, потрібно виправити параметри запиту та спробувати ще раз;\n \n `1001` - запит некоректний, потрібно виправити параметри запиту та спробувати ще раз; \n\n `INVALID_MERCHANT_PAYM_INFO` - некоректне значення в обʼєкті `merchantPaymInfo`; при створенні рахунку, оплатах за токеном та оплаті за реквізитами;\n \n `ORDER_IN_PROGRESS` - сума, встановлена на qr-касу вже в процесі оплати, тому при спробі видалити суму оплати буде помилка;\n \n `HOLD_INVOICE_NOT_FINALIZED` - рахунок створено з `paymentType=hold`, сплачено, але ще не фіналізовано; повертається при спробі отримати розширену інформацію про успішну оплату;\n \n `WRONG_CANCEL_AMOUNT` - при спробі скасування оплати було вказано невірну суму або цю оплату вже було скасовано;\n \n `TOKEN_NOT_FOUND` - токен картки, який було вказано в запиті, не знайдено;\n + * @description Код помилки, за яким можна розрізняти види клієнтських помилок: + * + * `BAD_REQUEST` - запит некоректний, потрібно виправити параметри запиту та спробувати ще раз; + * + * `1001` - запит некоректний, потрібно виправити параметри запиту та спробувати ще раз; + * + * `INVALID_MERCHANT_PAYM_INFO` - некоректне значення в обʼєкті `merchantPaymInfo`; при створенні рахунку, оплатах за токеном та оплаті за реквізитами; + * + * `ORDER_IN_PROGRESS` - сума, встановлена на qr-касу вже в процесі оплати, тому при спробі видалити суму оплати буде помилка; + * + * `HOLD_INVOICE_NOT_FINALIZED` - рахунок створено з `paymentType=hold`, сплачено, але ще не фіналізовано; повертається при спробі отримати розширену інформацію про успішну оплату; + * + * `WRONG_CANCEL_AMOUNT` - при спробі скасування оплати було вказано невірну суму або цю оплату вже було скасовано; + * + * `TOKEN_NOT_FOUND` - токен картки, який було вказано в запиті, не знайдено; + * * @example BAD_REQUEST */ errCode: string; /** * @description Опис помилки; має виключно інформативну функцію, використовувати його в бізнес-логіці не варто - * @example empty \'invoiceId\' + * @example empty 'invoiceId' */ errText: string; }; MethodNotAllowedError: { /** - * @description Код помилки, за яким можна розрізняти види клієнтських помилок:\n\n `METHOD_NOT_ALLOWED` - некоректний [http-метод](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods);\n + * @description Код помилки, за яким можна розрізняти види клієнтських помилок: + * + * `METHOD_NOT_ALLOWED` - некоректний [http-метод](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods); + * * @example METHOD_NOT_ALLOWED */ errCode: string; @@ -2072,7 +2403,12 @@ export interface components { }; InternalServerError: { /** - * @description Код помилки, за яким можна розрізняти види клієнтських помилок:\n \n `INTERNAL_ERROR` - обробка запиту завершилася непередбаченою помилкою;\n\n `CANCEL_NOT_AVAILABLE` - неможливо скасувати оплату; дана помилка повертається при спробі скасування оплати;\n + * @description Код помилки, за яким можна розрізняти види клієнтських помилок: + * + * `INTERNAL_ERROR` - обробка запиту завершилася непередбаченою помилкою; + * + * `CANCEL_NOT_AVAILABLE` - неможливо скасувати оплату; дана помилка повертається при спробі скасування оплати; + * * @example INTERNAL_ERROR */ errCode: string; @@ -2084,13 +2420,18 @@ export interface components { }; NotFoundError: { /** - * @description Код помилки, за яким можна розрізняти види клієнтських помилок:\n \n `NOT_FOUND` - пошук за одним із параметрів запиту завершився неуспішно;\n \n `1004` - пошук за одним із параметрів запиту завершився неуспішно;\n + * @description Код помилки, за яким можна розрізняти види клієнтських помилок: + * + * `NOT_FOUND` - пошук за одним із параметрів запиту завершився неуспішно; + * + * `1004` - пошук за одним із параметрів запиту завершився неуспішно; + * * @example NOT_FOUND */ errCode: string; /** * @description Опис помилки; має виключно інформативну функцію, використовувати його в бізнес-логіці не варто - * @example invalid \'qrId\' + * @example invalid 'qrId' */ errText: string; }; diff --git a/generated/acquiring.json b/generated/acquiring.json index 21296f8..7930be5 100644 --- a/generated/acquiring.json +++ b/generated/acquiring.json @@ -7,8 +7,8 @@ ], "info": { "title": "Acquiring", - "version": "v2403", - "description": "На кожну зміну статусу рахунку бекенд еквайрингу виконає до 3-х спроб POST запиту, поки у відповідь не отримує http-статус 200 OK. З параметром X-Sign у хідерах. Параметр містить підпис тіла запиту вебхуку по стандарту ECDSA. Приклади верифікації підпису наведено нижче.\\n\\nAPI може працювати в режимі тестового середовища. Для цього потрібно використовувати токен із https://api.monobank.ua/\\n\\nДля тестування не потрібно мати термінал або дозвіл для тестування эквайрингу, тестове середовище доступне всім клієнтам банку. В тестовому середовищі для оплати можна використовувати будь-які номер, дату та cvv картки, навіть якщо вони не є дійсними. Єдина умова: номер картки повинен бути валідним за [алгоритмом Луна](https://uk.wikipedia.org/wiki/Алгоритм_Луна). При використанні даних реальної банківської картки, вона буде прийнята, але фінансова авторизація здійснюватись не буде.", + "version": "v2405", + "description": "На кожну зміну статусу рахунку бекенд еквайрингу виконає до 3-х спроб POST запиту, поки у відповідь не отримує http-статус 200 OK. З параметром X-Sign у хідерах. Параметр містить підпис тіла запиту вебхуку по стандарту ECDSA. Приклади верифікації підпису наведено нижче.\n\nAPI може працювати в режимі тестового середовища. Для цього потрібно використовувати токен із https://api.monobank.ua/\n\nДля тестування не потрібно мати термінал або дозвіл для тестування эквайрингу, тестове середовище доступне всім клієнтам банку. В тестовому середовищі для оплати можна використовувати будь-які номер, дату та cvv картки, навіть якщо вони не є дійсними. Єдина умова: номер картки повинен бути валідним за [алгоритмом Луна](https://uk.wikipedia.org/wiki/Алгоритм_Луна). При використанні даних реальної банківської картки, вона буде прийнята, але фінансова авторизація здійснюватись не буде.", "x-logo": { "url": "logo.png", "altText": "logo" @@ -1590,10 +1590,123 @@ } } }, + "/api/merchant/invoice/sync-payment": { + "post": { + "summary": "Синхронна оплата", + "description": "Апі для синхронної оплати, доступ до апі надається через підтримку та вимагає наявності певного ряду сертифікатів. Один із обʼєктів `cardData`, `applePay`, `googlePay` є обовʼязковим", + "parameters": [ + { + "name": "X-Token", + "in": "header", + "description": "Токен з особистого кабінету https://web.monobank.ua/ або тестовий токен з https://api.monobank.ua/", + "schema": { + "type": "string" + } + }, + { + "name": "X-Cms", + "in": "header", + "description": "Назва CMS, якщо ви розробляєте платіжний модуль для CMS", + "schema": { + "type": "string" + } + }, + { + "name": "X-Cms-Version", + "in": "header", + "description": "Версія CMS, якщо ви розробляєте платіжний модуль для CMS", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InvoiceSyncPaymentRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Дані результату оплати", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InvoiceSyncPaymentResponse" + } + } + } + }, + "400": { + "description": "Один із вхідних параметрів невалідний", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "403": { + "description": "Токен невалідний", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenError" + } + } + } + }, + "404": { + "description": "Пошук за одним із параметрів запиту завершився неуспішно", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + }, + "405": { + "description": "Http-метод невалідний", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MethodNotAllowedError" + } + } + } + }, + "429": { + "description": "Занадто багато запитів", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TooManyRequestsError" + } + } + } + }, + "500": { + "description": "Під час виконання запиту виникла непередбачена помилка", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InternalServerError" + } + } + } + } + } + } + }, "/api/merchant/invoice/payment-info?invoiceId={invoiceId}": { "get": { - "summary": "DEPRECATED — Розширена інформація про успішну оплату\\n", - "description": "**Дані апі застаріле! Слід використовувати Статус рахунку, замість цього апі** \\n\\nДані про успішну оплату, якщо вона була здійснена\\n", + "summary": "DEPRECATED — Розширена інформація про успішну оплату\n", + "description": "**Дане апі застаріле! Слід використовувати Статус рахунку, замість цього апі** \n\nДані про успішну оплату, якщо вона була здійснена\n", "parameters": [ { "name": "X-Token", @@ -1697,7 +1810,7 @@ "status": { "type": "string", "enum": ["processing", "success", "failure"], - "description": "Статус заяви скасування:\\n\\n `processing` - заява на скасування знаходиться в обробці\\n\\n `success` - заяву на скасування виконано успішно\\n\\n `failure` - неуспішне скасування\\n" + "description": "Статус заяви скасування:\n\n `processing` - заява на скасування знаходиться в обробці\n\n `success` - заяву на скасування виконано успішно\n\n `failure` - неуспішне скасування\n" }, "amount": { "type": "integer", @@ -1755,7 +1868,7 @@ "amountType": { "type": "string", "enum": ["merchant", "client", "fix"], - "description": "Тип суми одноразової каси:\\n\\n `merchant` - суму встановлює мерчант\\n\\n `client` - суму встановлює клієнт\\n\\n `fix` - сума фіксована\\n" + "description": "Тип суми одноразової каси:\n\n `merchant` - суму встановлює мерчант\n\n `client` - суму встановлює клієнт\n\n `fix` - сума фіксована\n" }, "pageUrl": { "type": "string", @@ -1800,7 +1913,7 @@ "paymentScheme": { "type": "string", "enum": ["bnpl_later_30", "bnpl_parts_4", "full"], - "description": "Схема оплати:\\n\\n `bnpl_later_30` - bnpl-оплата\\n\\n `bnpl_parts_4` - платіж 4 частини\\n\\n `full` - повна оплата\\n" + "description": "Схема оплати:\n\n `bnpl_later_30` - bnpl-оплата\n\n `bnpl_parts_4` - платіж 4 частини\n\n `full` - повна оплата\n" }, "amount": { "type": "integer", @@ -1915,7 +2028,7 @@ }, "webHookUrl": { "type": "string", - "description": "Адреса для CallBack (POST) – на цю адресу буде надіслано дані про стан платежу при кожній зміні статусу. Зміст тіла запиту ідентичний відповіді запиту “Статус рахунку”. **Гарантії доставки повідомлень одне за одним не надається. Тобто, може бути ситуація, коли вебхук про успішну оплату (`status=success`) прийде пізніше за вебхук про обробку цієї оплати (`status=processing`). Краще орієнтуватись на поле `modifiedDate` при аналізі поточного статусу рахунку. Вебхук із більшим `modifiedDate` буде актуальним**", + "description": "Адреса для CallBack (POST) – на цю адресу буде надіслано дані про стан платежу при кожній зміні статусу. Зміст тіла запиту ідентичний відповіді запиту “Статус рахунку”. **Гарантії доставки повідомлень одне за одним не надається. Тобто, може бути ситуація, коли вебхук про успішну оплату (`status=success`) прийде пізніше за вебхук про обробку цієї оплати (`status=processing`). Краще орієнтуватись на поле `modifiedDate` при аналізі поточного статусу рахунку. Вебхук із більшим `modifiedDate` буде актуальним**.\n\nОкрім вебхуків при зміні статусу рахунку, вебхуки також будуть приходити при зміні статусу токенізоваї картки, якщо обʼєкт `saveCardData` було вказано при створенні рахунку", "example": "https://example.com/mono/acquiring/webhook/maybesomegibberishuniquestringbutnotnecessarily" }, "validity": { @@ -1938,7 +2051,7 @@ "code": { "type": "string", "example": "0a8637b3bccb42aa93fdeb791b8b58e9", - "description": "Код терміналу субмерчанта, з апі 'Список субмерчантів'. Доступний обмеженому колу мерчантів, які точно знають, що їм це потрібно" + "description": "Код терміналу субмерчанта, з апі \"Список субмерчантів\". Доступний обмеженому колу мерчантів, які точно знають, що їм це потрібно" }, "saveCardData": { "type": "object", @@ -1961,7 +2074,7 @@ }, "MerchantPaymInfoItem": { "type": "object", - "description": "Інформаційні дані замовлення, яке буде оплачуватсь. Обовʼязково вказувати при активній звʼязці з ПРРО (звʼязка створюється у веб-кабінеті https://web.monobank.ua)", + "description": "Інформаційні дані замовлення, яке буде оплачуватись. Обовʼязково вказувати при активній звʼязці з ПРРО (звʼязка створюється у веб-кабінеті https://web.monobank.ua)", "properties": { "reference": { "type": "string", @@ -2062,20 +2175,19 @@ "properties": { "type": { "type": "string", - "description": "Тип знижки або надбавки\\n`DISCOUNT` — знижка\\n`EXTRA_CHARGE` — надбавка\\n", + "description": "Тип знижки або надбавки\n`DISCOUNT` — знижка\n`EXTRA_CHARGE` — надбавка\n", "enum": ["DISCOUNT", "EXTRA_CHARGE"] }, "mode": { "type": "string", - "description": "Режим знижки або надбавки\\n`PERCENT` — відсоток від basketOrder.sum * basketOrder.qty\\n\\n`VALUE` — числове значення\\n", + "description": "Режим знижки або надбавки\n`PERCENT` — відсоток від basketOrder.sum * basketOrder.qty\n\n`VALUE` — числове значення\n", "enum": ["PERCENT", "VALUE"] }, "value": { "type": "number", "description": "Значення, яке буде фігурувати в розрахунках", "minimum": 0.01, - "multipleOf": 0.01, - "enum": ["PERCENT", "VALUE"] + "multipleOf": 0.01 } } } @@ -2178,7 +2290,7 @@ "initiationKind": { "type": "string", "enum": ["merchant", "client"], - "description": "Тип проведення платежу:\\n\\n `merchant` - платіж з ініціативи мерчанта, наприклад, регулярний платіж — коли клієнт не бере участі у підтвердженні платежу\\n\\n `client` - платіж за вимогою клієнта\\n" + "description": "Тип проведення платежу:\n\n `merchant` - платіж з ініціативи мерчанта, наприклад, регулярний платіж — коли клієнт не бере участі у підтвердженні платежу\n\n `client` - платіж за вимогою клієнта\n" } } }, @@ -2202,7 +2314,7 @@ "reversed", "expired" ], - "description": "Статус операції:\\n\\n `created` - рахунок створено успішно, очікується оплата\\n\\n `processing` - платіж обробляється\\n\\n `hold` - сума заблокована\\n\\n `success` - успішна оплата\\n\\n `failure` - неуспішна оплата\\n\\n `reversed` - оплата повернена після успіху\\n\\n `expired` - час дії вичерпано\\n\\n\\nУ випадку вебхуків гарантії доставки повідомлень одне за одним не надається. Тобто, може бути ситуація, коли вебхук про успішну оплату (`success`) прийде пізніше за вебхук про обробку цієї оплати (`status=processing`). Краще орієнтуватись на поле `modifiedDate` при аналізі поточного статусу рахунку. Вебхук із більшим `modifiedDate` буде актуальним\\n" + "description": "Статус операції:\n\n `created` - рахунок створено успішно, очікується оплата\n\n `processing` - платіж обробляється\n\n `hold` - сума заблокована\n\n `success` - успішна оплата\n\n `failure` - неуспішна оплата\n\n `reversed` - оплата повернена після успіху\n\n `expired` - час дії вичерпано\n\n\nУ випадку вебхуків гарантії доставки повідомлень одне за одним не надається. Тобто, може бути ситуація, коли вебхук про успішну оплату (`success`) прийде пізніше за вебхук про обробку цієї оплати (`status=processing`). Краще орієнтуватись на поле `modifiedDate` при аналізі поточного статусу рахунку. Вебхук із більшим `modifiedDate` буде актуальним\n" }, "failureReason": { "type": "string", @@ -2212,7 +2324,7 @@ "errCode": { "type": "string", "example": "59", - "description": "Код помилки, яка виникла під час обробки платежу. Що цей код означає, і куди звернутися можна в розділі 'Помилки в процесі оплати'" + "description": "Код помилки, яка виникла під час обробки платежу. Що цей код означає, і куди звернутися можна в розділі \"Помилки в процесі оплати\"" }, "amount": { "type": "integer", @@ -2315,7 +2427,7 @@ "wallet", "direct" ], - "description": "Метод оплати:\\n\\n `pan` - оплата була здійснена за введеним номером картки\\n\\n `apple` - оплата була здійснена через apple pay\\n\\n `google` - оплата була здійснена через google pay\\n\\n `monobank` - оплата була здійснена через monobank\\n\\n `wallet` - оплата була здійснена токенізованою карткою\\n\\n `direct` - оплата була здійснена через апі \\'Оплата за реквізитами\\' (за умови, що у мерчанта був PCI DSS сертифікат)\\n" + "description": "Метод оплати:\n\n `pan` - оплата була здійснена за введеним номером картки\n\n `apple` - оплата була здійснена через apple pay\n\n `google` - оплата була здійснена через google pay\n\n `monobank` - оплата була здійснена через monobank\n\n `wallet` - оплата була здійснена токенізованою карткою\n\n `direct` - оплата була здійснена через апі 'Оплата за реквізитами' (за умови, що у мерчанта був PCI DSS сертифікат)\n" }, "fee": { "type": "integer", @@ -2347,7 +2459,7 @@ "status": { "type": "string", "enum": ["new", "created", "failed"], - "description": "Статус токенізації картки:\\n\\n `new` - прийнято заявку на токенізацію\\n\\n `created` - картку успішно токенізовано\\n\\n `failed` - картку не вдалось токенізувати \\n" + "description": "Статус токенізації картки:\n\n `new` - прийнято заявку на токенізацію\n\n `created` - картку успішно токенізовано\n\n `failed` - картку не вдалось токенізувати \n" } } } @@ -2375,7 +2487,7 @@ }, "items": { "type": "array", - "description": "Список товарів для створення чеку повернення, поле обов\\'язкове у випадку активованої опції фіскалізації", + "description": "Список товарів для створення чеку повернення, поле обов'язкове у випадку активованої опції фіскалізації", "items": { "$ref": "#/components/schemas/FiscalizationItem" } @@ -2403,7 +2515,7 @@ "status": { "type": "string", "enum": ["processing", "success", "failure"], - "description": "Статус операції:\\n\\n `processing` - заява на скасування знаходиться в обробці\\n\\n `success` - заяву на скасування виконано успішно\\n\\n `failure` - неуспішне скасування\\n" + "description": "Статус операції:\n\n `processing` - заява на скасування знаходиться в обробці\n\n `success` - заяву на скасування виконано успішно\n\n `failure` - неуспішне скасування\n" }, "createdDate": { "type": "string", @@ -2479,12 +2591,12 @@ "paymentScheme": { "type": "string", "enum": ["full", "bnpl_parts_4", "bnpl_later_30"], - "description": "Тип оплати:\\n\\n `full` - повна оплата при покупці\\n\\n `bnpl_parts_4` - оплата 4-ма частинами (період платежів 14 днів)\\n\\n `bnpl_later_30` - оплата на 30-тий день з дня покупки\\n" + "description": "Тип оплати:\n\n `full` - повна оплата при покупці\n\n `bnpl_parts_4` - оплата 4-ма частинами (період платежів 14 днів)\n\n `bnpl_later_30` - оплата на 30-тий день з дня покупки\n" }, "paymentMethod": { "type": "string", "enum": ["pan", "apple", "google", "monobank", "wallet"], - "description": "Метод оплати:\\n\\n `pan` - оплата була здійснена за введеним номером картки\\n\\n `apple` - оплата була здійснена через apple pay\\n\\n `google` - оплата була здійснена через google pay\\n\\n `monobank` - оплата була здійснена через monobank\\n \\n `wallet` - оплата була здійснена токенізованою карткою\\n" + "description": "Метод оплати:\n\n `pan` - оплата була здійснена за введеним номером картки\n\n `apple` - оплата була здійснена через apple pay\n\n `google` - оплата була здійснена через google pay\n\n `monobank` - оплата була здійснена через monobank\n\n `wallet` - оплата була здійснена токенізованою карткою\n" }, "fee": { "type": "integer", @@ -2542,7 +2654,7 @@ "status": { "type": "string", "enum": ["success"], - "description": "Статус заяви:\\n\\n `success` - заяву на фіналізацію прийнято\\n" + "description": "Статус заяви:\n\n `success` - заяву на фіналізацію прийнято\n" } } }, @@ -2731,7 +2843,7 @@ "initiationKind": { "type": "string", "enum": ["merchant", "client"], - "description": "Тип проведення платежу:\\n\\n `merchant` - платіж з ініціативи мерчанта, наприклад, регулярний платіж — коли клієнт не бере участі у підтвердженні платежу\\n\\n `client` - платіж за вимогою клієнта, наприклад, клієнт виконує оплату зі збереженої картки\\n" + "description": "Тип проведення платежу:\n\n `merchant` - платіж з ініціативи мерчанта, наприклад, регулярний платіж — коли клієнт не бере участі у підтвердженні платежу\n\n `client` - платіж за вимогою клієнта, наприклад, клієнт виконує оплату зі збереженої картки\n" }, "merchantPaymInfo": { "$ref": "#/components/schemas/MerchantPaymInfoItem" @@ -2875,6 +2987,163 @@ } } }, + "InvoiceSyncPaymentRequest": { + "type": "object", + "required": ["amount", "ccy"], + "properties": { + "amount": { + "type": "integer", + "format": "int64", + "example": 4200, + "description": "Сума оплати у мінімальних одиницях (копійки для гривні)" + }, + "ccy": { + "type": "integer", + "format": "int32", + "example": 980, + "description": "ISO 4217 код валюти, за замовчуванням 980 (гривня)" + }, + "merchantPaymInfo": { + "type": "object", + "description": "Інформаційні дані замовлення, яке буде оплачуватись", + "properties": { + "reference": { + "type": "string", + "example": "84d0070ee4e44667b31371d8f8813947", + "description": "Номер чека, замовлення, тощо, який було вказано мерчантом при створенні рахунку" + }, + "destination": { + "type": "string", + "description": "Призначення платежу, визначається продавцем", + "example": "Покупка щастя" + } + } + }, + "cardData": { + "type": "object", + "description": "Дані для оплати карткою", + "required": ["pan", "type", "exp", "eciIndicator"], + "properties": { + "pan": { + "type": "string", + "description": "Номер картки", + "example": "4242424242424242" + }, + "type": { + "type": "string", + "enum": ["FPAN", "DPAN"] + }, + "exp": { + "type": "string", + "description": "Термін дії картки у форматі `mmyy`", + "example": "0642" + }, + "cvv": { + "type": "string", + "description": "Cvv", + "example": "123" + }, + "eciIndicator": { + "type": "string", + "description": "Electronic Commerce Indicator, значення результату аутентифікації", + "example": "02" + }, + "cavv": { + "type": "string", + "description": "Cardholder Authentication Verification Value", + "example": "123" + }, + "tavv": { + "type": "string", + "description": "Token authentication verification value", + "example": "tavv" + }, + "dsTranId": { + "type": "string", + "description": "XID (DSTranID)", + "example": "12" + }, + "tReqID": { + "type": "string", + "description": "Token requestor ID", + "example": "51" + }, + "mit": { + "type": "string", + "description": "Merchant Initiated Transaction Indicator", + "example": "1" + }, + "sst": { + "type": "number", + "description": "Subsequent Transaction", + "example": "2" + }, + "tid": { + "type": "string", + "description": "Trace Id", + "example": "12" + } + } + }, + "applePay": { + "type": "object", + "description": "Дані з криптоконтейнеру Apple Pay", + "required": ["token", "exp", "eciIndicator"], + "properties": { + "token": { + "type": "string", + "description": "Токен картки", + "example": "4242424242424242" + }, + "exp": { + "type": "string", + "description": "Термін дії картки у форматі `mmyy`", + "example": "0642" + }, + "eciIndicator": { + "type": "string", + "description": "Electronic Commerce Indicator, значення результату аутентифікації", + "example": "02" + }, + "cryptogram": { + "type": "string", + "description": "TAVV криптограма", + "example": "AQAAAAoAR9qDi9kAAAAAgGpLpoA=" + } + } + }, + "googlePay": { + "type": "object", + "description": "Дані з криптоконтейнеру Google Pay", + "required": ["token", "exp", "eciIndicator"], + "properties": { + "token": { + "type": "string", + "description": "Токен картки", + "example": "4242424242424242" + }, + "exp": { + "type": "string", + "description": "Термін дії картки у форматі `mmyy`", + "example": "0642" + }, + "eciIndicator": { + "type": "string", + "description": "Electronic Commerce Indicator, значення результату аутентифікації", + "example": "02" + }, + "cryptogram": { + "type": "string", + "description": "TAVV криптограма", + "example": "AQAAAAoAR9qDi9kAAAAAgGpLpoA=" + } + } + } + } + }, + "InvoiceSyncPaymentResponse": { + "$ref": "#/components/schemas/InvoiceStatusResponse" + }, "ForbiddenError": { "type": "object", "required": ["errCode", "errText"], @@ -2882,7 +3151,7 @@ "errCode": { "type": "string", "example": "FORBIDDEN", - "description": "Код помилки, за яким можна розрізняти види клієнтських помилок:\\n \\n `FORBIDDEN` - у запиті було надіслано невалідний X-Token \\n" + "description": "Код помилки, за яким можна розрізняти види клієнтських помилок:\n\n `FORBIDDEN` - у запиті було надіслано невалідний X-Token \n" }, "errText": { "type": "string", @@ -2914,7 +3183,7 @@ }, "code": { "type": "string", - "description": "Код товару, обов\\'язковий для фіскалізації", + "description": "Код товару, обов'язковий для фіскалізації", "example": "d21da1c47f3c45fca10a10c32518bdeb" }, "barcode": { @@ -2953,7 +3222,7 @@ "errCode": { "type": "string", "example": "TMR", - "description": "Код помилки, за яким можна розрізняти види клієнтських помилок:\\n \\n `TMR` - занадто багато запитів, потрібно почекати, перш ніж робити новий запит\\n" + "description": "Код помилки, за яким можна розрізняти види клієнтських помилок:\n\n `TMR` - занадто багато запитів, потрібно почекати, перш ніж робити новий запит\n" }, "errText": { "type": "string", @@ -2969,11 +3238,11 @@ "errCode": { "type": "string", "example": "BAD_REQUEST", - "description": "Код помилки, за яким можна розрізняти види клієнтських помилок:\\n\\n `BAD_REQUEST` - запит некоректний, потрібно виправити параметри запиту та спробувати ще раз;\\n \\n `1001` - запит некоректний, потрібно виправити параметри запиту та спробувати ще раз; \\n\\n `INVALID_MERCHANT_PAYM_INFO` - некоректне значення в обʼєкті `merchantPaymInfo`; при створенні рахунку, оплатах за токеном та оплаті за реквізитами;\\n \\n `ORDER_IN_PROGRESS` - сума, встановлена на qr-касу вже в процесі оплати, тому при спробі видалити суму оплати буде помилка;\\n \\n `HOLD_INVOICE_NOT_FINALIZED` - рахунок створено з `paymentType=hold`, сплачено, але ще не фіналізовано; повертається при спробі отримати розширену інформацію про успішну оплату;\\n \\n `WRONG_CANCEL_AMOUNT` - при спробі скасування оплати було вказано невірну суму або цю оплату вже було скасовано;\\n \\n `TOKEN_NOT_FOUND` - токен картки, який було вказано в запиті, не знайдено;\\n" + "description": "Код помилки, за яким можна розрізняти види клієнтських помилок:\n\n `BAD_REQUEST` - запит некоректний, потрібно виправити параметри запиту та спробувати ще раз;\n\n `1001` - запит некоректний, потрібно виправити параметри запиту та спробувати ще раз; \n\n `INVALID_MERCHANT_PAYM_INFO` - некоректне значення в обʼєкті `merchantPaymInfo`; при створенні рахунку, оплатах за токеном та оплаті за реквізитами;\n\n `ORDER_IN_PROGRESS` - сума, встановлена на qr-касу вже в процесі оплати, тому при спробі видалити суму оплати буде помилка;\n\n `HOLD_INVOICE_NOT_FINALIZED` - рахунок створено з `paymentType=hold`, сплачено, але ще не фіналізовано; повертається при спробі отримати розширену інформацію про успішну оплату;\n\n `WRONG_CANCEL_AMOUNT` - при спробі скасування оплати було вказано невірну суму або цю оплату вже було скасовано;\n\n `TOKEN_NOT_FOUND` - токен картки, який було вказано в запиті, не знайдено;\n" }, "errText": { "type": "string", - "example": "empty \\'invoiceId\\'", + "example": "empty 'invoiceId'", "description": "Опис помилки; має виключно інформативну функцію, використовувати його в бізнес-логіці не варто" } } @@ -2985,7 +3254,7 @@ "errCode": { "type": "string", "example": "METHOD_NOT_ALLOWED", - "description": "Код помилки, за яким можна розрізняти види клієнтських помилок:\\n\\n `METHOD_NOT_ALLOWED` - некоректний [http-метод](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods);\\n" + "description": "Код помилки, за яким можна розрізняти види клієнтських помилок:\n\n `METHOD_NOT_ALLOWED` - некоректний [http-метод](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods);\n" }, "errText": { "type": "string", @@ -3001,7 +3270,7 @@ "errCode": { "type": "string", "example": "INTERNAL_ERROR", - "description": "Код помилки, за яким можна розрізняти види клієнтських помилок:\\n \\n `INTERNAL_ERROR` - обробка запиту завершилася непередбаченою помилкою;\\n\\n `CANCEL_NOT_AVAILABLE` - неможливо скасувати оплату; дана помилка повертається при спробі скасування оплати;\\n" + "description": "Код помилки, за яким можна розрізняти види клієнтських помилок:\n\n `INTERNAL_ERROR` - обробка запиту завершилася непередбаченою помилкою;\n\n `CANCEL_NOT_AVAILABLE` - неможливо скасувати оплату; дана помилка повертається при спробі скасування оплати;\n" }, "errText": { "type": "string", @@ -3017,11 +3286,11 @@ "errCode": { "type": "string", "example": "NOT_FOUND", - "description": "Код помилки, за яким можна розрізняти види клієнтських помилок:\\n \\n `NOT_FOUND` - пошук за одним із параметрів запиту завершився неуспішно;\\n \\n `1004` - пошук за одним із параметрів запиту завершився неуспішно;\\n" + "description": "Код помилки, за яким можна розрізняти види клієнтських помилок:\n\n `NOT_FOUND` - пошук за одним із параметрів запиту завершився неуспішно;\n\n `1004` - пошук за одним із параметрів запиту завершився неуспішно;\n" }, "errText": { "type": "string", - "example": "invalid \\'qrId\\'", + "example": "invalid 'qrId'", "description": "Опис помилки; має виключно інформативну функцію, використовувати його в бізнес-логіці не варто" } } @@ -3031,11 +3300,11 @@ "tags": [ { "name": "Приклади верифікації підпису webhook", - "description": "
\\n Go\\n\\n ```go\\n\\n package main\\n\\n import (\\n 'crypto/ecdsa'\\n 'crypto/sha256'\\n 'crypto/x509'\\n 'encoding/base64'\\n 'encoding/pem'\\n 'log'\\n )\\n\\n var (\\n // example pubkey, you should receive one at https://api.monobank.ua/api/merchant/pubkey\\n pubKeyBase64 = `LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQUc1LzZ3NnZubGJZb0ZmRHlYWE4vS29CbVVjTgo3NWJSUWg4MFBhaEdldnJoanFCQnI3OXNSS0JSbnpHODFUZVQ5OEFOakU1c0R3RmZ5Znhub0ZJcmZBPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==`\\n\\n // value from X-Sign header in webhook request\\n xSignBase64 = `MEUCIQC/mVKhi8FKoayul2Mim3E2oaIOCNJk5dEXxTqbkeJSOQIgOM0hsW0qcP2H8iXy1aQYpmY0SJWEaWur7nQXlKDCFxA=`\\n\\n // webhook request body bytes\\n bodyBytes = []byte(`{\\n 'invoiceId': 'p2_9ZgpZVsl3',\\n 'status': 'created',\\n 'failureReason': 'string',\\n 'amount': 4200,\\n 'ccy': 980,\\n 'finalAmount': 4200,\\n 'createdDate': '2019-08-24T14:15:22Z',\\n 'modifiedDate': '2019-08-24T14:15:22Z',\\n 'reference': '84d0070ee4e44667b31371d8f8813947',\\n 'cancelList': [\\n {\\n 'status': 'processing',\\n 'amount': 4200,\\n 'ccy': 980,\\n 'createdDate': '2019-08-24T14:15:22Z',\\n 'modifiedDate': '2019-08-24T14:15:22Z',\\n 'approvalCode': '662476',\\n 'rrn': '060189181768',\\n 'extRef': '635ace02599849e981b2cd7a65f417fe'\\n }\\n ]\\n }`)\\n )\\n\\n func main() {\\n pubKeyBytes, err := base64.StdEncoding.DecodeString(pubKeyBase64)\\n if err != nil {\\n panic(err)\\n\\n }\\n\\n signatureBytes, err := base64.StdEncoding.DecodeString(xSignBase64)\\n if err != nil {\\n panic(err)\\n }\\n\\n block, _ := pem.Decode(pubKeyBytes)\\n if block == nil {\\n panic('invalid pem')\\n }\\n\\n genericPubKey, err := x509.ParsePKIXPublicKey(block.Bytes)\\n if err != nil {\\n panic(err)\\n }\\n\\n pubKey, ok := genericPubKey.(*ecdsa.PublicKey)\\n if !ok {\\n panic('invalid key')\\n }\\n\\n hash := sha256.Sum256(bodyBytes)\\n\\n ok = ecdsa.VerifyASN1(pubKey, hash[:], signatureBytes)\\n if !ok {\\n panic('invalid X-Sign')\\n }\\n\\n log.Println('OK')\\n } \\n ```\\n
\\n
\\n Python\\n\\n ```python\\n\\n import base64\\n import hashlib\\n\\n import ecdsa\\n\\n # example pubkey, you should receive one at https://api.monobank.ua/api/merchant/pubkey\\n pub_key_base64 = 'LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQUc1LzZ3NnZubGJZb0ZmRHlYWE4vS29CbVVjTgo3NWJSUWg4MFBhaEdldnJoanFCQnI3OXNSS0JSbnpHODFUZVQ5OEFOakU1c0R3RmZ5Znhub0ZJcmZBPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg=='\\n\\n # value from X-Sign header in webhook request\\n x_sign_base64 = 'MEUCIQC/mVKhi8FKoayul2Mim3E2oaIOCNJk5dEXxTqbkeJSOQIgOM0hsW0qcP2H8iXy1aQYpmY0SJWEaWur7nQXlKDCFxA='\\n\\n # webhook request body bytes\\n body_bytes = b\\'\\'\\'{\\n 'invoiceId': 'p2_9ZgpZVsl3',\\n 'status': 'created',\\n 'failureReason': 'string',\\n 'amount': 4200,\\n 'ccy': 980,\\n 'finalAmount': 4200,\\n 'createdDate': '2019-08-24T14:15:22Z',\\n 'modifiedDate': '2019-08-24T14:15:22Z',\\n 'reference': '84d0070ee4e44667b31371d8f8813947',\\n 'cancelList': [\\n {\\n 'status': 'processing',\\n 'amount': 4200,\\n 'ccy': 980,\\n 'createdDate': '2019-08-24T14:15:22Z',\\n 'modifiedDate': '2019-08-24T14:15:22Z',\\n 'approvalCode': '662476',\\n 'rrn': '060189181768',\\n 'extRef': '635ace02599849e981b2cd7a65f417fe'\\n }\\n ]\\n }\\'\\'\\'\\n\\n if __name__ == \\'__main__\\':\\n pub_key_bytes = base64.b64decode(pub_key_base64)\\n signature_bytes = base64.b64decode(x_sign_base64)\\n pub_key = ecdsa.VerifyingKey.from_pem(pub_key_bytes.decode())\\n\\n ok = pub_key.verify(signature_bytes, body_bytes, sigdecode=ecdsa.util.sigdecode_der, hashfunc=hashlib.sha256)\\n if ok:\\n print('OK')\\n else:\\n print('NOT OK')\\n ```\\n
\\n
\\n Php\\n\\n ```php\\n\\n \\n
\\n NodeJs\\n\\n ```javascript\\n\\n const crypto = require(\\'crypto\\');\\n\\n // example pubkey, you should receive one at https://api.monobank.ua/api/merchant/pubkey\\n let pubKeyBase64 = 'LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQUc1LzZ3NnZubGJZb0ZmRHlYWE4vS29CbVVjTgo3NWJSUWg4MFBhaEdldnJoanFCQnI3OXNSS0JSbnpHODFUZVQ5OEFOakU1c0R3RmZ5Znhub0ZJcmZBPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==';\\n\\n // value from X-Sign header in webhook request\\n let xSignBase64 = 'MEUCIQC/mVKhi8FKoayul2Mim3E2oaIOCNJk5dEXxTqbkeJSOQIgOM0hsW0qcP2H8iXy1aQYpmY0SJWEaWur7nQXlKDCFxA=';\\n\\n let message = `{\\n 'invoiceId': 'p2_9ZgpZVsl3',\\n 'status': 'created',\\n 'failureReason': 'string',\\n 'amount': 4200,\\n 'ccy': 980,\\n 'finalAmount': 4200,\\n 'createdDate': '2019-08-24T14:15:22Z',\\n 'modifiedDate': '2019-08-24T14:15:22Z',\\n 'reference': '84d0070ee4e44667b31371d8f8813947',\\n 'cancelList': [\\n {\\n 'status': 'processing',\\n 'amount': 4200,\\n 'ccy': 980,\\n 'createdDate': '2019-08-24T14:15:22Z',\\n 'modifiedDate': '2019-08-24T14:15:22Z',\\n 'approvalCode': '662476',\\n 'rrn': '060189181768',\\n 'extRef': '635ace02599849e981b2cd7a65f417fe'\\n }\\n ]\\n }`\\n\\n let signatureBuf = Buffer.from(xSignBase64, \\'base64\\');\\n let publicKeyBuf = Buffer.from(pubKeyBase64, \\'base64\\');\\n\\n let verify = crypto.createVerify(\\'SHA256\\');\\n\\n verify.write(message);\\n verify.end();\\n\\n let result = verify.verify(publicKeyBuf, signatureBuf);\\n\\n console.log(result === true ? 'OK' : 'NOT OK');\\n ```\\n
\\n" + "description": "
\n Go\n\n ```go\n\n package main\n\n import (\n \"crypto/ecdsa\"\n \"crypto/sha256\"\n \"crypto/x509\"\n \"encoding/base64\"\n \"encoding/pem\"\n \"log\"\n )\n\n var (\n // example pubkey, you should receive one at https://api.monobank.ua/api/merchant/pubkey\n pubKeyBase64 = `LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQUc1LzZ3NnZubGJZb0ZmRHlYWE4vS29CbVVjTgo3NWJSUWg4MFBhaEdldnJoanFCQnI3OXNSS0JSbnpHODFUZVQ5OEFOakU1c0R3RmZ5Znhub0ZJcmZBPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==`\n\n // value from X-Sign header in webhook request\n xSignBase64 = `MEUCIQC/mVKhi8FKoayul2Mim3E2oaIOCNJk5dEXxTqbkeJSOQIgOM0hsW0qcP2H8iXy1aQYpmY0SJWEaWur7nQXlKDCFxA=`\n\n // webhook request body bytes\n bodyBytes = []byte(`{\n \"invoiceId\": \"p2_9ZgpZVsl3\",\n \"status\": \"created\",\n \"failureReason\": \"string\",\n \"amount\": 4200,\n \"ccy\": 980,\n \"finalAmount\": 4200,\n \"createdDate\": \"2019-08-24T14:15:22Z\",\n \"modifiedDate\": \"2019-08-24T14:15:22Z\",\n \"reference\": \"84d0070ee4e44667b31371d8f8813947\",\n \"cancelList\": [\n {\n \"status\": \"processing\",\n \"amount\": 4200,\n \"ccy\": 980,\n \"createdDate\": \"2019-08-24T14:15:22Z\",\n \"modifiedDate\": \"2019-08-24T14:15:22Z\",\n \"approvalCode\": \"662476\",\n \"rrn\": \"060189181768\",\n \"extRef\": \"635ace02599849e981b2cd7a65f417fe\"\n }\n ]\n }`)\n )\n\n func main() {\n pubKeyBytes, err := base64.StdEncoding.DecodeString(pubKeyBase64)\n if err != nil {\n panic(err)\n\n }\n\n signatureBytes, err := base64.StdEncoding.DecodeString(xSignBase64)\n if err != nil {\n panic(err)\n }\n\n block, _ := pem.Decode(pubKeyBytes)\n if block == nil {\n panic(\"invalid pem\")\n }\n\n genericPubKey, err := x509.ParsePKIXPublicKey(block.Bytes)\n if err != nil {\n panic(err)\n }\n\n pubKey, ok := genericPubKey.(*ecdsa.PublicKey)\n if !ok {\n panic(\"invalid key\")\n }\n\n hash := sha256.Sum256(bodyBytes)\n\n ok = ecdsa.VerifyASN1(pubKey, hash[:], signatureBytes)\n if !ok {\n panic(\"invalid X-Sign\")\n }\n\n log.Println(\"OK\")\n } \n ```\n
\n
\n Python\n\n ```python\n\n import base64\n import hashlib\n\n import ecdsa\n\n # example pubkey, you should receive one at https://api.monobank.ua/api/merchant/pubkey\n pub_key_base64 = \"LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQUc1LzZ3NnZubGJZb0ZmRHlYWE4vS29CbVVjTgo3NWJSUWg4MFBhaEdldnJoanFCQnI3OXNSS0JSbnpHODFUZVQ5OEFOakU1c0R3RmZ5Znhub0ZJcmZBPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==\"\n\n # value from X-Sign header in webhook request\n x_sign_base64 = \"MEUCIQC/mVKhi8FKoayul2Mim3E2oaIOCNJk5dEXxTqbkeJSOQIgOM0hsW0qcP2H8iXy1aQYpmY0SJWEaWur7nQXlKDCFxA=\"\n\n # webhook request body bytes\n body_bytes = b'''{\n \"invoiceId\": \"p2_9ZgpZVsl3\",\n \"status\": \"created\",\n \"failureReason\": \"string\",\n \"amount\": 4200,\n \"ccy\": 980,\n \"finalAmount\": 4200,\n \"createdDate\": \"2019-08-24T14:15:22Z\",\n \"modifiedDate\": \"2019-08-24T14:15:22Z\",\n \"reference\": \"84d0070ee4e44667b31371d8f8813947\",\n \"cancelList\": [\n {\n \"status\": \"processing\",\n \"amount\": 4200,\n \"ccy\": 980,\n \"createdDate\": \"2019-08-24T14:15:22Z\",\n \"modifiedDate\": \"2019-08-24T14:15:22Z\",\n \"approvalCode\": \"662476\",\n \"rrn\": \"060189181768\",\n \"extRef\": \"635ace02599849e981b2cd7a65f417fe\"\n }\n ]\n }'''\n\n if __name__ == '__main__':\n pub_key_bytes = base64.b64decode(pub_key_base64)\n signature_bytes = base64.b64decode(x_sign_base64)\n pub_key = ecdsa.VerifyingKey.from_pem(pub_key_bytes.decode())\n\n ok = pub_key.verify(signature_bytes, body_bytes, sigdecode=ecdsa.util.sigdecode_der, hashfunc=hashlib.sha256)\n if ok:\n print(\"OK\")\n else:\n print(\"NOT OK\")\n ```\n
\n
\n Php\n\n ```php\n\n \n
\n NodeJs\n\n ```javascript\n\n const crypto = require('crypto');\n\n // example pubkey, you should receive one at https://api.monobank.ua/api/merchant/pubkey\n let pubKeyBase64 = \"LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQUc1LzZ3NnZubGJZb0ZmRHlYWE4vS29CbVVjTgo3NWJSUWg4MFBhaEdldnJoanFCQnI3OXNSS0JSbnpHODFUZVQ5OEFOakU1c0R3RmZ5Znhub0ZJcmZBPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==\";\n\n // value from X-Sign header in webhook request\n let xSignBase64 = \"MEUCIQC/mVKhi8FKoayul2Mim3E2oaIOCNJk5dEXxTqbkeJSOQIgOM0hsW0qcP2H8iXy1aQYpmY0SJWEaWur7nQXlKDCFxA=\";\n\n let message = `{\n \"invoiceId\": \"p2_9ZgpZVsl3\",\n \"status\": \"created\",\n \"failureReason\": \"string\",\n \"amount\": 4200,\n \"ccy\": 980,\n \"finalAmount\": 4200,\n \"createdDate\": \"2019-08-24T14:15:22Z\",\n \"modifiedDate\": \"2019-08-24T14:15:22Z\",\n \"reference\": \"84d0070ee4e44667b31371d8f8813947\",\n \"cancelList\": [\n {\n \"status\": \"processing\",\n \"amount\": 4200,\n \"ccy\": 980,\n \"createdDate\": \"2019-08-24T14:15:22Z\",\n \"modifiedDate\": \"2019-08-24T14:15:22Z\",\n \"approvalCode\": \"662476\",\n \"rrn\": \"060189181768\",\n \"extRef\": \"635ace02599849e981b2cd7a65f417fe\"\n }\n ]\n }`\n\n let signatureBuf = Buffer.from(xSignBase64, 'base64');\n let publicKeyBuf = Buffer.from(pubKeyBase64, 'base64');\n\n let verify = crypto.createVerify('SHA256');\n\n verify.write(message);\n verify.end();\n\n let result = verify.verify(publicKeyBuf, signatureBuf);\n\n console.log(result === true ? \"OK\" : \"NOT OK\");\n ```\n
\n" }, { "name": "Помилки в процесі оплати", - "description": "
\\n Помилки в процесі оплати\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
errCode з вебхуку або Статусу рахункуТекст помилкиКуди звернутися
6Операцію заблоковано банком-емітентомбанк, який випустив картку
40Карта втрачена. Витрати обмеженібанк, який випустив картку
41Карта втрачена. Витрати обмеженібанк, який випустив картку
50Витрати по карті обмеженібанк, який випустив картку
51У картки, з якої ви намагаєтеся зробити переказ, закінчився строк діїбанк, який випустив картку
51У картки, з якої ви намагаєтеся зробити переказ, закінчився строк діїбанк, який випустив картку
52Номер картки вказано невірнобанк, який випустив картку
54Стався технічний збійбанк, який випустив картку
55Помилка налаштувань торгівельної точкиmonobank
56Тип карти не підтримує подібні оплатибанк, який випустив картку
57Транзакція не підтримуєтьсябанк, який випустив картку
57Помилка налаштувань торгівельної точкиmonobank
58Витрати по карті обмежені на покупкубанк, який випустив картку
58Витрати по карті обмеженібанк, який випустив картку
59На картці недостатньо коштів для завершення покупки)банк, який випустив картку
60На картці перевищено ліміт кількості видаткових операційбанк, який випустив картку
61На картці перевищено інтернет-лімітбанк, який випустив картку
62Досягнуто або перевищено ліміт на кількість неправильних вводів PIN-кодубанк, який випустив картку
63На картці перевищено інтернет-лімітбанк, який випустив картку
67Помилка налаштувань торгівельної точкиmonobank
68Відмова в проведені операції з боку МПСбанк, який випустив картку
71Операцію заблоковано банком-емітентомбанк, який випустив картку
72Операцію заблоковано банком-емітентомбанк, який випустив картку
73Помилка маршрутизаціїmonobank
74Помилка налаштувань торгівельної точки. )monobank
75Операцію заблоковано банком-емітентомбанк, який випустив картку
80Неправильний CVV код (3 цифри на звороті картки)банк, який випустив картку
81Неправильний CVV2 код (3 цифри на звороті картки)банк, який випустив картку
82Транзакція не дозволена з такими умовами проведеннябанк, який випустив картку
82Транзакція не дозволена з такими умовами проведеннябанк, який випустив картку
82Помилка налаштувань торгівельної точкиmonobank
83Перевищені ліміти спроб оплати з картбанк, який випустив картку
84Неправильне значення перевірочного числа 3D Secure Cardholder Authentication Verification Valuemonobank
98Помилка налаштувань торгівельної точкиmonobank
1000Здається, наш кіт облажавсяmonobank
1005Здається, наш кіт облажавсяmonobank
1010Здається, наш кіт облажавсяmonobank
1014Для проведення оплати потрібно вказати повні реквізити картипокупець
10343-D Secure перевірку не пройденобанк, який випустив картку
10353-D Secure перевірку не пройденобанк, який випустив картку
1036Здається, наш кіт облажавсяmonobank
1044Помилка налаштувань торгівельної точкиmonobank
10453-D Secure перевірку не пройденобанк, який випустив картку
1053Помилка налаштувань торгівельної точкиmonobank
10543-D Secure перевірку не пройденоmonobank
1056Переказ можливий тільки на картку українського банкуmonobank
1064Оплата можлива лише з використанням карток Mastercard або Visaбанк, який випустив картку
1066Помилка налаштувань торгівельної точкиmonobank
1077Сума оплати менша ніж допустима сума (налаштування МПС)API
1080Термін дії карти вказаний невірнобанк, який випустив картку
1090Інформація про клієнта не знайденаmonobank
1115Помилка налаштувань торгівельної точкиmonobank
1121Помилка налаштувань торгівельної точкиmonobank
1145Мінімальна сума переказуmonobank
1165Операцію заблоковано банком-емітентомбанк, який випустив картку
1187Треба вказати імя отримувача API
1193Операцію заблоковано банком-емітентомбанк, який випустив картку
1194Цей спосіб поповнення працює тільки з картами інших банківmonobank
1200Обов\\'язкова наявність CVV коду (3 цифри на звороті картки)банк, який випустив картку
1405Платіжна система обмежила переказибанк, який випустив картку
1406Карта заблокована риск-менеджемнтомбанк, який випустив картку
1407Операцію заблоковано ризик-менеджментомmonobank
1408Операцію заблоковано банком-емітентомбанк, який випустив картку
1411Цей вид операцій з гривневих карток тимчасово обмеженийmonobank
1413Операцію заблоковано банком-емітентомбанк, який випустив картку
1419Термін дії карти вказаний невірнобанк, який випустив картку
1420Здається, наш кіт облажавсяmonobank
14213-D Secure перевірку не пройденобанк, який випустив картку
1422Виникла помилка на етапі 3-D Secure)банк, який випустив картку
1425Виникла помилка на етапі 3-D Secure)банк, який випустив картку
1428Операцію заблоковано банком-емітентомбанк, який випустив картку
14293-D Secure перевірку не пройденобанк, який випустив картку
1433Перевірте імʼя та прізвище отримувача. У випадку зазначення недостовірних даних, банк може відхилити переказmonobank
1436Кацапське гівно не обслуговуємоmonobank
1439Недопустима операція для використання за програмою єВідновленняmonobank
1458Операция відхилена на кроці 3DSбанк, який випустив картку
8001Минув термін дії посилання на оплатупокупець
8002Клієнт відмінив оплатупокупець
8003Стався технічний збійmonobank
8004Проблеми з проведенням 3-D Secure банк, який випустив картку
8005Ой, ой, перевищено ліміти на прийом оплатmonobank
8006Ой, ой, перевищено ліміти на прийом оплатmonobank
\\n
\\n" + "description": "
\n Помилки в процесі оплати\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
errCode з вебхуку або Статусу рахункуТекст помилкиКуди звернутися
6Операцію заблоковано банком-емітентомбанк, який випустив картку
40Карта втрачена. Витрати обмеженібанк, який випустив картку
41Карта втрачена. Витрати обмеженібанк, який випустив картку
50Витрати по карті обмеженібанк, який випустив картку
51У картки, з якої ви намагаєтеся зробити переказ, закінчився строк діїбанк, який випустив картку
51У картки, з якої ви намагаєтеся зробити переказ, закінчився строк діїбанк, який випустив картку
52Номер картки вказано невірнобанк, який випустив картку
54Стався технічний збійбанк, який випустив картку
55Помилка налаштувань торгівельної точкиmonobank
56Тип карти не підтримує подібні оплатибанк, який випустив картку
57Транзакція не підтримуєтьсябанк, який випустив картку
57Помилка налаштувань торгівельної точкиmonobank
58Витрати по карті обмежені на покупкубанк, який випустив картку
58Витрати по карті обмеженібанк, який випустив картку
59На картці недостатньо коштів для завершення покупки)банк, який випустив картку
60На картці перевищено ліміт кількості видаткових операційбанк, який випустив картку
61На картці перевищено інтернет-лімітбанк, який випустив картку
62Досягнуто або перевищено ліміт на кількість неправильних вводів PIN-кодубанк, який випустив картку
63На картці перевищено інтернет-лімітбанк, який випустив картку
67Помилка налаштувань торгівельної точкиmonobank
68Відмова в проведені операції з боку МПСбанк, який випустив картку
71Операцію заблоковано банком-емітентомбанк, який випустив картку
72Операцію заблоковано банком-емітентомбанк, який випустив картку
73Помилка маршрутизаціїmonobank
74Помилка налаштувань торгівельної точки. )monobank
75Операцію заблоковано банком-емітентомбанк, який випустив картку
80Неправильний CVV код (3 цифри на звороті картки)банк, який випустив картку
81Неправильний CVV2 код (3 цифри на звороті картки)банк, який випустив картку
82Транзакція не дозволена з такими умовами проведеннябанк, який випустив картку
82Транзакція не дозволена з такими умовами проведеннябанк, який випустив картку
82Помилка налаштувань торгівельної точкиmonobank
83Перевищені ліміти спроб оплати з картбанк, який випустив картку
84Неправильне значення перевірочного числа 3D Secure Cardholder Authentication Verification Valuemonobank
98Помилка налаштувань торгівельної точкиmonobank
1000Здається, наш кіт облажавсяmonobank
1005Здається, наш кіт облажавсяmonobank
1010Здається, наш кіт облажавсяmonobank
1014Для проведення оплати потрібно вказати повні реквізити картипокупець
10343-D Secure перевірку не пройденобанк, який випустив картку
10353-D Secure перевірку не пройденобанк, який випустив картку
1036Здається, наш кіт облажавсяmonobank
1044Помилка налаштувань торгівельної точкиmonobank
10453-D Secure перевірку не пройденобанк, який випустив картку
1053Помилка налаштувань торгівельної точкиmonobank
10543-D Secure перевірку не пройденоmonobank
1056Переказ можливий тільки на картку українського банкуmonobank
1064Оплата можлива лише з використанням карток Mastercard або Visaбанк, який випустив картку
1066Помилка налаштувань торгівельної точкиmonobank
1077Сума оплати менша ніж допустима сума (налаштування МПС)API
1080Термін дії карти вказаний невірнобанк, який випустив картку
1090Інформація про клієнта не знайденаmonobank
1115Помилка налаштувань торгівельної точкиmonobank
1121Помилка налаштувань торгівельної точкиmonobank
1145Мінімальна сума переказуmonobank
1165Операцію заблоковано банком-емітентомбанк, який випустив картку
1187Треба вказати імя отримувача API
1193Операцію заблоковано банком-емітентомбанк, який випустив картку
1194Цей спосіб поповнення працює тільки з картами інших банківmonobank
1200Обов'язкова наявність CVV коду (3 цифри на звороті картки)банк, який випустив картку
1405Платіжна система обмежила переказибанк, який випустив картку
1406Карта заблокована риск-менеджемнтомбанк, який випустив картку
1407Операцію заблоковано ризик-менеджментомmonobank
1408Операцію заблоковано банком-емітентомбанк, який випустив картку
1411Цей вид операцій з гривневих карток тимчасово обмеженийmonobank
1413Операцію заблоковано банком-емітентомбанк, який випустив картку
1419Термін дії карти вказаний невірнобанк, який випустив картку
1420Здається, наш кіт облажавсяmonobank
14213-D Secure перевірку не пройденобанк, який випустив картку
1422Виникла помилка на етапі 3-D Secure)банк, який випустив картку
1425Виникла помилка на етапі 3-D Secure)банк, який випустив картку
1428Операцію заблоковано банком-емітентомбанк, який випустив картку
14293-D Secure перевірку не пройденобанк, який випустив картку
1433Перевірте імʼя та прізвище отримувача. У випадку зазначення недостовірних даних, банк може відхилити переказmonobank
1436Кацапське гівно не обслуговуємоmonobank
1439Недопустима операція для використання за програмою єВідновленняmonobank
1458Операция відхилена на кроці 3DSбанк, який випустив картку
8001Минув термін дії посилання на оплатупокупець
8002Клієнт відмінив оплатупокупець
8003Стався технічний збійmonobank
8004Проблеми з проведенням 3-D Secure банк, який випустив картку
8005Ой, ой, перевищено ліміти на прийом оплатmonobank
8006Ой, ой, перевищено ліміти на прийом оплатmonobank
\n
\n" } ] } diff --git a/generated/personal.d.ts b/generated/personal.d.ts index 1fd6a2e..7457188 100644 --- a/generated/personal.d.ts +++ b/generated/personal.d.ts @@ -23,7 +23,7 @@ export interface paths { '/personal/client-info': { /** * Інформація про клієнта - * @description Отримання інформації про клієнта та переліку його рахунків. Обмеження на використання функції не частіше ніж 1 раз у 60 секунд. + * @description Отримання інформації про клієнта та переліку його рахунків і банок. Обмеження на використання функції не частіше ніж 1 раз у 60 секунд. */ get: { parameters: { @@ -50,7 +50,7 @@ export interface paths { * Встановлення WebHook * @description Встановлення URL користувача: * - Для підтвердження коректності наданої адреси, на неї надсилається GET-запит. Сервер має відповісти строго HTTP статус-кодом 200, і ніяким іншим. Якщо валідацію пройдено, на задану адресу починають надсилатися POST запити з подіями. - * - Події надсилаються у наступному вигляді: POST запит на задану адресу у форматі `{type:"StatementItem", data:{account:"...", statementItem:{#StatementItem}}}`. Якщо сервіс користувача не відповість протягом 5с на команду, сервіс повторить спробу ще через 60 та 600 секунд. Якщо на третью спробу відповідь отримана не буде, функція буде вимкнута. Відповідь сервера має строго містити HTTP статус-код 200. + * - Події надсилаються у наступному вигляді: POST запит на задану адресу у форматі `{type:"StatementItem", data:{account:"...", statementItem:{#StatementItem}}}`. Якщо сервіс користувача не відповість протягом 5с на команду, сервіс повторить спробу ще через 60 та 600 секунд. Якщо на третю спробу відповідь отримана не буде, функція буде вимкнута. Відповідь сервера має строго містити HTTP статус-код 200. */ post: { parameters: { @@ -59,7 +59,6 @@ export interface paths { 'X-Token': string; }; }; - /** @description Optional description in *Markdown* */ requestBody: { content: { 'application/json': components['schemas']['SetWebHook']; @@ -76,7 +75,11 @@ export interface paths { '/personal/statement/{account}/{from}/{to}': { /** * Виписка - * @description Отримання виписки за час від {from} до {to} часу в секундах в форматі Unix time Максимальний час за який можливо отримувати виписку 31 доба + 1 година (2682000 секунд) Обмеження на використання функції не частіше ніж 1 раз у 60 секунд. + * @description Отримання виписки за час від {from} до {to} часу в секундах в форматі Unix time. Максимальний час, за який можливо отримати виписку — 31 доба + 1 година (2682000 секунд). + * + * Обмеження на використання функції — не частіше ніж 1 раз на 60 секунд. + * + * Повертає 500 транзакцій з кінця, тобто від часу to до from. Якщо кількість транзакцій = 500, потрібно зробити ще один запит, зменшивши час to до часу останнього платежу, з відповіді. Якщо знову кількість транзакцій = 500, то виконуєте запити до того часу, поки кількість транзакцій не буде < 500. Відповідно, якщо кількість транзакцій < 500, то вже отримано всі платежі за вказаний період. */ get: { parameters: { @@ -85,7 +88,7 @@ export interface paths { 'X-Token': string; }; path: { - /** @description Ідентифікатор рахунку з переліку Statement list або 0 - дефолтний рахунок. */ + /** @description Ідентифікатор рахунку або банки з переліків Statement list або 0 - дефолтний рахунок. */ account: string; /** * @description Початок часу виписки. @@ -115,15 +118,15 @@ export type webhooks = Record; export interface components { schemas: { - /** @description URL для надсиляння подій по зміні балансу рахунку */ + /** @description URL для надсиляння подій по зміні балансу рахунків фізичних осіб, ФОП та банок */ SetWebHook: { - /** @example https://mysomesite.copm/some_random_data_for_security */ + /** @example https://example.com/some_random_data_for_security */ webHookUrl?: string; }; - /** @description Опис клієнта та його рахунків. */ + /** @description Опис клієнта та його рахунків і банок. */ UserInfo: { /** - * @description Ідентифікатор клієнта (зівпадає з id для send.monobank.ua) + * @description Ідентифікатор клієнта (збігається з id для send.monobank.ua) * @example 3MSaMMtczs */ clientId?: string; @@ -134,12 +137,12 @@ export interface components { name?: string; /** * @description URL для надсиляння подій по зміні балансу рахунку - * @example https://mysomesite.copm/some_random_data_for_security + * @example https://example.com/some_random_data_for_security */ webHookUrl?: string; /** * @description Перелік прав, які які надає сервіс (1 літера на 1 permission). - * @example psf + * @example psfj */ permissions?: string; /** @description Перелік доступних рахунків */ @@ -204,6 +207,47 @@ export interface components { */ iban?: string; }[]; + /** @description Перелік банок */ + jars?: { + /** + * @description Ідентифікатор банки + * @example kKGVoZuHWzqVoZuH + */ + id?: string; + /** + * @description Ідентифікатор для сервісу https://send.monobank.ua/{sendId} + * @example uHWzqVoZuH + */ + sendId?: string; + /** + * @description Назва банки + * @example На тепловізор + */ + title?: string; + /** + * @description Опис банки + * @example На тепловізор + */ + description?: string; + /** + * Format: int32 + * @description Код валюти банки відповідно ISO 4217 + * @example 980 + */ + currencyCode?: number; + /** + * Format: int64 + * @description Баланс банки в мінімальних одиницях валюти (копійках, центах) + * @example 1000000 + */ + balance?: number; + /** + * Format: int64 + * @description Цільова сума для накопичення в банці в мінімальних одиницях валюти (копійках, центах) + * @example 10000000 + */ + goal?: number; + }[]; }; /** @description Перелік транзакцій за вказанний час */ StatementItems: { @@ -282,10 +326,15 @@ export interface components { */ comment?: string; /** - * @description Номер квитанции для check.gov.ua. Поле може бути відсутнім + * @description Номер квитанції для check.gov.ua. Поле може бути відсутнім * @example XXXX-XXXX-XXXX-XXXX */ receiptId?: string; + /** + * @description Номер квитанції ФОПа, приходить у випадку якщо це операція із зарахуванням коштів + * @example 2103.в.27 + */ + invoiceId?: string; /** * @description ЄДРПОУ контрагента, присутній лише для елементів виписки рахунків ФОП * @example 3096889974 @@ -296,6 +345,11 @@ export interface components { * @example UA898999980000355639201001404 */ counterIban?: string; + /** + * @description Найменування контрагента + * @example ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ «ВОРОНА» + */ + counterName?: string; }[]; /** @description Перелік курсів. Кожна валютна пара може мати одне і більше полів з rateSell, rateBuy, rateCross. */ CurrencyInfo: { diff --git a/generated/personal.json b/generated/personal.json new file mode 100644 index 0000000..20e991a --- /dev/null +++ b/generated/personal.json @@ -0,0 +1,484 @@ +{ + "openapi": "3.0.3", + "servers": [ + { + "url": "https://api.monobank.ua" + } + ], + "info": { + "title": "Monobank open API", + "version": "v2303", + "description": "API для отримання інформації про виписки та стан особистого рахунку та рахунків ФОП. Для надання доступу потрібно пройти авторизацію у особистому кабінеті https://api.monobank.ua/ та отримати токен для персонального використання.\n\nЯкщо у вас є запитання щодо роботи API, запрошуємо до ком'юніті у [Telegram-групі](https://t.me/joinchat/FiAEWhDf-QzTqM4wzEtffw).\nAPI недоступне для клієнтів до 16 років, дані за дитячими рахунками доступні з батьківського акаунту.\nЯкщо у вас є сервіс і ви хочете централізовано приєднатися до API для надання послуг клієнтам, потрібно підключитися до [API для провайдерів послуг](/docs/corporate.html), що має більше можливостей. Якщо дані клієнтів не будуть надходити на ваші сервери або ви робите сервіс для своєї родини, використання корпоративного API необов'язкове. Розробка бібліотек або програм, які будуть використовувати клієнти особисто (дані клієнта не будуть проходити черeз вузли розробника), також не потребують використання корпоративного API.\n\nЦе надасть змогу клієнтам monobank авторизуватись у вашому сервісі (наприклад, у фінансовому менеджері) для надання інформації про стан рахунку або виписки.\n\nУ разі виявлення експлуатації цього API в якості корпоративного, банк залишає за собою право накласти санкції на компанію.", + "x-logo": { + "url": "logo.png", + "altText": "logo" + } + }, + "paths": { + "/bank/currency": { + "get": { + "tags": ["Публічні дані"], + "summary": "Отримання курсів валют", + "description": "Отримати базовий перелік курсів валют monobank. Інформація кешується та оновлюється не частіше 1 разу на 5 хвилин.", + "responses": { + "200": { + "description": "Інформація про курс валют", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CurrencyInfo" + } + } + } + } + } + } + }, + "/personal/client-info": { + "get": { + "tags": ["Клієнтські персональні дані"], + "summary": "Інформація про клієнта", + "description": "Отримання інформації про клієнта та переліку його рахунків і банок. Обмеження на використання функції не частіше ніж 1 раз у 60 секунд.", + "parameters": [ + { + "name": "X-Token", + "in": "header", + "schema": { + "type": "string" + }, + "required": true, + "example": "u3AulkpZFI1lIuGsik6vuPsVWqN7GoWs6o_MO2sdf301", + "description": "Token для особистого доступу до API" + } + ], + "responses": { + "200": { + "description": "Statement list", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserInfo" + } + } + } + } + } + } + }, + "/personal/webhook": { + "post": { + "tags": ["Клієнтські персональні дані"], + "summary": "Встановлення WebHook", + "description": "Встановлення URL користувача:\n- Для підтвердження коректності наданої адреси, на неї надсилається GET-запит. Сервер має відповісти строго HTTP статус-кодом 200, і ніяким іншим. Якщо валідацію пройдено, на задану адресу починають надсилатися POST запити з подіями.\n- Події надсилаються у наступному вигляді: POST запит на задану адресу у форматі `{type:\"StatementItem\", data:{account:\"...\", statementItem:{#StatementItem}}}`. Якщо сервіс користувача не відповість протягом 5с на команду, сервіс повторить спробу ще через 60 та 600 секунд. Якщо на третю спробу відповідь отримана не буде, функція буде вимкнута. Відповідь сервера має строго містити HTTP статус-код 200.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetWebHook" + } + } + } + }, + "parameters": [ + { + "name": "X-Token", + "in": "header", + "schema": { + "type": "string" + }, + "required": true, + "description": "Token для особистого доступу до API" + } + ], + "responses": { + "200": { + "description": "ok" + } + } + } + }, + "/personal/statement/{account}/{from}/{to}": { + "get": { + "tags": ["Клієнтські персональні дані"], + "summary": "Виписка", + "description": "Отримання виписки за час від {from} до {to} часу в секундах в форматі Unix time. Максимальний час, за який можливо отримати виписку — 31 доба + 1 година (2682000 секунд).\n\nОбмеження на використання функції — не частіше ніж 1 раз на 60 секунд.\n\nПовертає 500 транзакцій з кінця, тобто від часу to до from. Якщо кількість транзакцій = 500, потрібно зробити ще один запит, зменшивши час to до часу останнього платежу, з відповіді. Якщо знову кількість транзакцій = 500, то виконуєте запити до того часу, поки кількість транзакцій не буде < 500. Відповідно, якщо кількість транзакцій < 500, то вже отримано всі платежі за вказаний період.", + "parameters": [ + { + "name": "X-Token", + "in": "header", + "schema": { + "type": "string" + }, + "required": true, + "description": "Token для особистого доступу до API" + }, + { + "name": "account", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "Ідентифікатор рахунку або банки з переліків Statement list або 0 - дефолтний рахунок." + }, + { + "name": "from", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "example": "1546304461", + "description": "Початок часу виписки." + }, + { + "name": "to", + "in": "path", + "schema": { + "type": "string" + }, + "required": false, + "example": "1546306461", + "description": "Останній час виписки (якщо відсутній, буде використовуватись поточний час)." + } + ], + "responses": { + "200": { + "description": "Statement list", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StatementItems" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "SetWebHook": { + "type": "object", + "description": "URL для надсиляння подій по зміні балансу рахунків фізичних осіб, ФОП та банок", + "properties": { + "webHookUrl": { + "example": "https://example.com/some_random_data_for_security", + "type": "string" + } + } + }, + "UserInfo": { + "type": "object", + "description": "Опис клієнта та його рахунків і банок.", + "properties": { + "clientId": { + "description": "Ідентифікатор клієнта (збігається з id для send.monobank.ua)", + "type": "string", + "example": "3MSaMMtczs" + }, + "name": { + "description": "Ім'я клієнта", + "type": "string", + "example": "Мазепа Іван" + }, + "webHookUrl": { + "description": "URL для надсиляння подій по зміні балансу рахунку", + "type": "string", + "example": "https://example.com/some_random_data_for_security" + }, + "permissions": { + "description": "Перелік прав, які які надає сервіс (1 літера на 1 permission).", + "type": "string", + "example": "psfj" + }, + "accounts": { + "type": "array", + "description": "Перелік доступних рахунків", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Ідентифікатор рахунку", + "example": "kKGVoZuHWzqVoZuH" + }, + "sendId": { + "type": "string", + "description": "Ідентифікатор для сервісу https://send.monobank.ua/{sendId}", + "example": "uHWzqVoZuH" + }, + "balance": { + "type": "number", + "format": "int64", + "description": "Баланс рахунку в мінімальних одиницях валюти (копійках, центах)", + "example": 10000000 + }, + "creditLimit": { + "type": "number", + "format": "int64", + "description": "Кредитний ліміт", + "example": 10000000 + }, + "type": { + "type": "string", + "description": "Тип рахунку", + "enum": [ + "black", + "white", + "platinum", + "iron", + "fop", + "yellow", + "eAid" + ], + "example": "black" + }, + "currencyCode": { + "type": "number", + "format": "int32", + "description": "Код валюти рахунку відповідно ISO 4217", + "example": 980 + }, + "cashbackType": { + "type": "string", + "description": "Тип кешбеку який нараховується на рахунок", + "enum": ["None", "UAH", "Miles"], + "example": "UAH" + }, + "maskedPan": { + "type": "array", + "description": "Перелік замаскованних номерів карт (більше одного може бути у преміальних карт)", + "example": ["537541******1234"] + }, + "iban": { + "type": "string", + "description": "IBAN рахунку", + "example": "UA733220010000026201234567890" + } + } + } + }, + "jars": { + "type": "array", + "description": "Перелік банок", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Ідентифікатор банки", + "example": "kKGVoZuHWzqVoZuH" + }, + "sendId": { + "type": "string", + "description": "Ідентифікатор для сервісу https://send.monobank.ua/{sendId}", + "example": "uHWzqVoZuH" + }, + "title": { + "type": "string", + "description": "Назва банки", + "example": "На тепловізор" + }, + "description": { + "type": "string", + "description": "Опис банки", + "example": "На тепловізор" + }, + "currencyCode": { + "type": "number", + "format": "int32", + "example": 980, + "description": "Код валюти банки відповідно ISO 4217" + }, + "balance": { + "type": "number", + "format": "int64", + "description": "Баланс банки в мінімальних одиницях валюти (копійках, центах)", + "example": 1000000 + }, + "goal": { + "type": "number", + "format": "int64", + "description": "Цільова сума для накопичення в банці в мінімальних одиницях валюти (копійках, центах)", + "example": 10000000 + } + } + } + } + } + }, + "StatementItems": { + "type": "array", + "description": "Перелік транзакцій за вказанний час", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "ZuHWzqkKGVo=", + "description": "Унікальний id транзакції" + }, + "time": { + "type": "number", + "format": "int64", + "example": 1554466347, + "description": "Час транзакції в секундах в форматі Unix time" + }, + "description": { + "type": "string", + "example": "Покупка щастя", + "description": "Опис транзакцій" + }, + "mcc": { + "type": "number", + "format": "int32", + "example": 7997, + "description": "Код типу транзакції (Merchant Category Code), відповідно ISO 18245" + }, + "originalMcc": { + "type": "number", + "format": "int32", + "example": 7997, + "description": "Оригінальний код типу транзакції (Merchant Category Code), відповідно ISO 18245" + }, + "hold": { + "type": "boolean", + "example": false, + "description": "Статус блокування суми (детальніше у [wiki](https://en.wikipedia.org/wiki/Authorization_hold))" + }, + "amount": { + "type": "number", + "format": "int64", + "example": -95000, + "description": "Сума у валюті рахунку в мінімальних одиницях валюти (копійках, центах)" + }, + "operationAmount": { + "type": "number", + "format": "int64", + "example": -95000, + "description": "Сума у валюті транзакції в мінімальних одиницях валюти (копійках, центах)" + }, + "currencyCode": { + "type": "number", + "format": "int32", + "example": 980, + "description": "Код валюти рахунку відповідно ISO 4217" + }, + "commissionRate": { + "type": "number", + "format": "int64", + "example": 0, + "description": "Розмір комісії в мінімальних одиницях валюти (копійках, центах)" + }, + "cashbackAmount": { + "type": "number", + "format": "int64", + "example": 19000, + "description": "Розмір кешбеку в мінімальних одиницях валюти (копійках, центах)" + }, + "balance": { + "type": "number", + "format": "int64", + "example": 10050000, + "description": "Баланс рахунку в мінімальних одиницях валюти (копійках, центах)" + }, + "comment": { + "type": "string", + "example": "За каву", + "description": "Коментар до переказу, уведений користувачем. Якщо не вказаний, поле буде відсутнім" + }, + "receiptId": { + "type": "string", + "example": "XXXX-XXXX-XXXX-XXXX", + "description": "Номер квитанції для check.gov.ua. Поле може бути відсутнім" + }, + "invoiceId": { + "type": "string", + "example": "2103.в.27", + "description": "Номер квитанції ФОПа, приходить у випадку якщо це операція із зарахуванням коштів" + }, + "counterEdrpou": { + "type": "string", + "example": "3096889974", + "description": "ЄДРПОУ контрагента, присутній лише для елементів виписки рахунків ФОП" + }, + "counterIban": { + "type": "string", + "example": "UA898999980000355639201001404", + "description": "IBAN контрагента, присутній лише для елементів виписки рахунків ФОП" + }, + "counterName": { + "type": "string", + "example": "ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ «ВОРОНА»", + "description": "Найменування контрагента" + } + } + } + }, + "CurrencyInfo": { + "type": "array", + "description": "Перелік курсів. Кожна валютна пара може мати одне і більше полів з rateSell, rateBuy, rateCross.", + "items": { + "type": "object", + "properties": { + "currencyCodeA": { + "type": "number", + "format": "int32", + "example": 840, + "description": "Код валюти рахунку відповідно ISO 4217" + }, + "currencyCodeB": { + "type": "number", + "format": "int32", + "example": 980, + "description": "Код валюти рахунку відповідно ISO 4217" + }, + "date": { + "type": "number", + "format": "int64", + "example": 1552392228, + "description": "Час курсу в секундах в форматі Unix time" + }, + "rateSell": { + "type": "number", + "format": "float", + "example": 27 + }, + "rateBuy": { + "type": "number", + "format": "float", + "example": 27.2 + }, + "rateCross": { + "type": "number", + "format": "float", + "example": 27.1 + } + } + } + }, + "Error": { + "type": "object", + "properties": { + "errorDescription": { + "type": "string", + "description": "Текст помилки для кінцевого користувача, для автоматичного оброблення потрібно аналізувати HTTP код відповіді (200, 404, 429 та інші)" + } + } + } + } + }, + "tags": [ + { + "name": "Публічні дані", + "description": "Загальна інформація що надається без авторизації." + }, + { + "name": "Клієнтські персональні дані", + "description": "Інформація, що надається тільки за наявстю token-а доступу, який клієнт може отримати в особистому кабінеті https://api.monobank.ua/" + } + ] +} diff --git a/generated/personal.yaml b/generated/personal.yaml deleted file mode 100644 index f2dbcfd..0000000 --- a/generated/personal.yaml +++ /dev/null @@ -1,352 +0,0 @@ -openapi: 3.0.3 -servers: - - url: https://api.monobank.ua -info: - title: Monobank open API - version: v2112 - description: - API для отримання інформації про виписки та стан особистого рахунку. - Для надання доступу потрібно пройти авторизацію у особистому кабінеті https://api.monobank.ua/ - та отримати токен для персонального використання. - - - Якщо у вас є запитання щодо роботи API, запрошуємо до ком'юніті у - [Telegram-групі](https://t.me/joinchat/FiAEWhDf-QzTqM4wzEtffw). - - API недоступне для клієнтів до 16 років, дані за дитячими рахунами доступні з батьківського акаунту. - - Якщо у вас є сервіс і ви хочете централізовано приєднатися до API для надання послуг клієнтам, - потрібно підключитися до [корпоративного API](/docs/corporate.html), що має більше можливостей. - Якщо дані клієнтів не будуть надходити на ваші сервери або ви робите сервіс для своєї родини, - використання корпоративного API необов'язкове. Розробка бібліотек або програм, які будуть - використовувати клієнти особисто (дані клієнта не будуть проходити черeз вузли розробника), - також не потребують використання корпоративного API. - - - Це надасть змогу клієнтам monobank авторизуватись у вашому сервісі (наприклад, у фінансовому менеджері) - для надання інформації про стан рахунку або виписки. - - - У разі виявлення експлуатації цього API в якості корпоративного, банк залишає за собою право накласти санкції на компанію. - x-logo: - url: 'logo.png' - altText: logo -paths: - /bank/currency: - get: - tags: - - Публічні дані - summary: Отримання курсів валют - description: Отримати базовий перелік курсів валют monobank. Інформація кешується та оновлюється не частіше 1 разу на 5 хвилин. - responses: - 200: - description: Інформація про курс валют - content: - application/json: - schema: - $ref: '#/components/schemas/CurrencyInfo' - - /personal/client-info: - get: - tags: - - Клієнтські персональні дані - summary: Інформація про клієнта - description: Отримання інформації про клієнта та переліку його рахунків. Обмеження на використання функції не частіше ніж 1 раз у 60 секунд. - parameters: - - name: X-Token - in: header - schema: - type: string - required: true - example: 'u3AulkpZFI1lIuGsik6vuPsVWqN7GoWs6o_MO2sdf301' - description: Token для особистого доступу до API - - responses: - 200: - description: Statement list - content: - application/json: - schema: - $ref: '#/components/schemas/UserInfo' - - /personal/webhook: - post: - tags: - - Клієнтські персональні дані - summary: Встановлення WebHook - description: 'Встановлення URL користувача: - - - Для підтвердження коректності наданої адреси, на неї надсилається GET-запит. - Сервер має відповісти строго HTTP статус-кодом 200, і ніяким іншим. - Якщо валідацію пройдено, на задану адресу починають надсилатися POST запити з подіями. - - - Події надсилаються у наступному вигляді: POST запит на задану адресу у форматі - `{type:"StatementItem", data:{account:"...", statementItem:{#StatementItem}}}`. - Якщо сервіс користувача не відповість протягом 5с на команду, сервіс повторить - спробу ще через 60 та 600 секунд. Якщо на третью спробу відповідь - отримана не буде, функція буде вимкнута. Відповідь сервера має строго містити - HTTP статус-код 200.' - requestBody: - description: Optional description in *Markdown* - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/SetWebHook' - parameters: - - name: X-Token - in: header - schema: - type: string - required: true - description: Token для особистого доступу до API - responses: - 200: - description: ok - - /personal/statement/{account}/{from}/{to}: - get: - tags: - - Клієнтські персональні дані - summary: Виписка - description: - Отримання виписки за час від {from} до {to} часу в секундах в форматі Unix time - Максимальний час за який можливо отримувати виписку 31 доба + 1 година (2682000 секунд) - Обмеження на використання функції не частіше ніж 1 раз у 60 секунд. - parameters: - - name: X-Token - in: header - schema: - type: string - required: true - description: Token для особистого доступу до API - - name: account - in: path - schema: - type: string - required: true - description: Ідентифікатор рахунку з переліку Statement list або 0 - дефолтний рахунок. - - name: from - in: path - schema: - type: string - required: true - example: '1546304461' - description: Початок часу виписки. - - name: to - in: path - schema: - type: string - required: false - example: '1546306461' - description: Останній час виписки (якщо відсутній, буде використовуватись поточний час). - responses: - 200: - description: Statement list - content: - application/json: - schema: - $ref: '#/components/schemas/StatementItems' -components: - schemas: - SetWebHook: - type: object - description: URL для надсиляння подій по зміні балансу рахунку - properties: - webHookUrl: - example: 'https://mysomesite.copm/some_random_data_for_security' - type: string - UserInfo: - type: object - description: Опис клієнта та його рахунків. - properties: - clientId: - description: Ідентифікатор клієнта (зівпадає з id для send.monobank.ua) - type: string - example: 3MSaMMtczs - name: - description: Ім'я клієнта - type: string - example: Мазепа Іван - webHookUrl: - description: URL для надсиляння подій по зміні балансу рахунку - type: string - example: https://mysomesite.copm/some_random_data_for_security - permissions: - description: Перелік прав, які які надає сервіс (1 літера на 1 permission). - type: string - example: 'psf' - accounts: - type: array - description: Перелік доступних рахунків - items: - type: object - properties: - id: - type: string - description: Ідентифікатор рахунку - example: kKGVoZuHWzqVoZuH - sendId: - type: string - description: Ідентифікатор для сервісу https://send.monobank.ua/{sendId} - example: uHWzqVoZuH - balance: - type: number - format: int64 - description: Баланс рахунку в мінімальних одиницях валюти (копійках, центах) - example: 10000000 - creditLimit: - type: number - format: int64 - description: Кредитний ліміт - example: 10000000 - type: - type: string - description: Тип рахунку - enum: [black, white, platinum, iron, fop, yellow, eAid] - example: black - currencyCode: - type: number - format: int32 - description: Код валюти рахунку відповідно ISO 4217 - example: 980 - cashbackType: - type: string - description: Тип кешбеку який нараховується на рахунок - enum: [None, UAH, Miles] - example: UAH - maskedPan: - type: array - description: Перелік замаскованних номерів карт (більше одного може бути у преміальних карт) - example: ['537541******1234'] - iban: - type: string - description: IBAN рахунку - example: UA733220010000026201234567890 - StatementItems: - type: array - description: Перелік транзакцій за вказанний час - items: - type: object - properties: - id: - type: string - example: ZuHWzqkKGVo= - description: Унікальний id транзакції - time: - type: number - format: int64 - example: 1554466347 - description: Час транзакції в секундах в форматі Unix time - description: - type: string - example: Покупка щастя - description: Опис транзакцій - mcc: - type: number - format: int32 - example: 7997 - description: Код типу транзакції (Merchant Category Code), відповідно ISO 18245 - originalMcc: - type: number - format: int32 - example: 7997 - description: Оригінальний код типу транзакції (Merchant Category Code), відповідно ISO 18245 - hold: - type: boolean - example: false - description: Статус блокування суми (детальніше у [wiki](https://en.wikipedia.org/wiki/Authorization_hold)) - amount: - type: number - format: int64 - example: -95000 - description: Сума у валюті рахунку в мінімальних одиницях валюти (копійках, центах) - operationAmount: - type: number - format: int64 - example: -95000 - description: Сума у валюті транзакції в мінімальних одиницях валюти (копійках, центах) - currencyCode: - type: number - format: int32 - example: 980 - description: Код валюти рахунку відповідно ISO 4217 - commissionRate: - type: number - format: int64 - example: 0 - description: Розмір комісії в мінімальних одиницях валюти (копійках, центах) - cashbackAmount: - type: number - format: int64 - example: 19000 - description: Розмір кешбеку в мінімальних одиницях валюти (копійках, центах) - balance: - type: number - format: int64 - example: 10050000 - description: Баланс рахунку в мінімальних одиницях валюти (копійках, центах) - comment: - type: string - example: За каву - description: Коментар до переказу, уведений користувачем. Якщо не вказаний, поле буде відсутнім - receiptId: - type: string - example: XXXX-XXXX-XXXX-XXXX - description: Номер квитанции для check.gov.ua. Поле може бути відсутнім - counterEdrpou: - type: string - example: '3096889974' - description: ЄДРПОУ контрагента, присутній лише для елементів виписки рахунків ФОП - counterIban: - type: string - example: UA898999980000355639201001404 - description: IBAN контрагента, присутній лише для елементів виписки рахунків ФОП - - CurrencyInfo: - type: array - description: Перелік курсів. Кожна валютна пара може мати одне і більше полів з rateSell, rateBuy, rateCross. - items: - type: object - properties: - currencyCodeA: - type: number - format: int32 - example: 840 - description: Код валюти рахунку відповідно ISO 4217 - currencyCodeB: - type: number - format: int32 - example: 980 - description: Код валюти рахунку відповідно ISO 4217 - date: - type: number - format: int64 - example: 1552392228 - description: Час курсу в секундах в форматі Unix time - rateSell: - type: number - format: float - example: 27.0 - rateBuy: - type: number - format: float - example: 27.2 - rateCross: - type: number - format: float - example: 27.1 - Error: - type: object - properties: - errorDescription: - type: string - description: - Текст помилки для кінцевого користувача, для автоматичного - оброблення потрібно аналізувати HTTP код відповіді (200, 404, 429 та інші) - -tags: - - name: Публічні дані - description: Загальна інформація що надається без авторизації. - - name: Клієнтські персональні дані - description: Інформація, що надається тільки за наявстю token-а доступу, який клієнт може отримати в особистому кабінеті https://api.monobank.ua/ diff --git a/package.json b/package.json index 2673c2b..1c692f6 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ }, "type": "module", "types": "lib/index.d.ts", - "version": "2.2.2", + "version": "3.0.0", "lint-staged": { "*.js": "eslint --cache --fix", "*.{js,css,md}": "prettier --write"