go-monobank/api/openapi.yaml
2024-04-10 22:18:44 +03:00

512 lines
22 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

openapi: 3.0.3
info:
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 в якості корпоративного, банк залишає за собою право накласти санкції на компанію.
title: Monobank open API
version: v2303
x-logo:
url: logo.png
altText: logo
servers:
- url: https://api.monobank.ua
tags:
- description: Загальна інформація що надається без авторизації.
name: Публічні дані
- description: "Інформація, що надається тільки за наявстю token-а доступу, який к\
лієнт може отримати в особистому кабінеті https://api.monobank.ua/"
name: Клієнтські персональні дані
paths:
/bank/currency:
get:
description: Отримати базовий перелік курсів валют monobank. Інформація кешується
та оновлюється не частіше 1 разу на 5 хвилин.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/CurrencyInfo'
description: Інформація про курс валют
summary: Отримання курсів валют
tags:
- Публічні дані
/personal/client-info:
get:
description: Отримання інформації про клієнта та переліку його рахунків і банок.
Обмеження на використання функції не частіше ніж 1 раз у 60 секунд.
parameters:
- description: Token для особистого доступу до API
example: u3AulkpZFI1lIuGsik6vuPsVWqN7GoWs6o_MO2sdf301
explode: false
in: header
name: X-Token
required: true
schema:
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/UserInfo'
description: Statement list
summary: Інформація про клієнта
tags:
- Клієнтські персональні дані
/personal/webhook:
post:
description: |-
Встановлення URL користувача:
- Для підтвердження коректності наданої адреси, на неї надсилається GET-запит. Сервер має відповісти строго HTTP статус-кодом 200, і ніяким іншим. Якщо валідацію пройдено, на задану адресу починають надсилатися POST запити з подіями.
- Події надсилаються у наступному вигляді: POST запит на задану адресу у форматі `{type:"StatementItem", data:{account:"...", statementItem:{#StatementItem}}}`. Якщо сервіс користувача не відповість протягом 5с на команду, сервіс повторить спробу ще через 60 та 600 секунд. Якщо на третю спробу відповідь отримана не буде, функція буде вимкнута. Відповідь сервера має строго містити HTTP статус-код 200.
parameters:
- description: Token для особистого доступу до API
explode: false
in: header
name: X-Token
required: true
schema:
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SetWebHook'
required: true
responses:
"200":
description: ok
summary: Встановлення WebHook
tags:
- Клієнтські персональні дані
/personal/statement/{account}/{from}/{to}:
get:
description: |-
Отримання виписки за час від {from} до {to} часу в секундах в форматі Unix time. Максимальний час, за який можливо отримати виписку — 31 доба + 1 година (2682000 секунд).
Обмеження на використання функції — не частіше ніж 1 раз на 60 секунд.
Повертає 500 транзакцій з кінця, тобто від часу to до from. Якщо кількість транзакцій = 500, потрібно зробити ще один запит, зменшивши час to до часу останнього платежу, з відповіді. Якщо знову кількість транзакцій = 500, то виконуєте запити до того часу, поки кількість транзакцій не буде < 500. Відповідно, якщо кількість транзакцій < 500, то вже отримано всі платежі за вказаний період.
parameters:
- description: Token для особистого доступу до API
explode: false
in: header
name: X-Token
required: true
schema:
type: string
style: simple
- description: Ідентифікатор рахунку або банки з переліків Statement list або
0 - дефолтний рахунок.
explode: false
in: path
name: account
required: true
schema:
type: string
style: simple
- description: Початок часу виписки.
example: "1546304461"
explode: false
in: path
name: from
required: true
schema:
type: string
style: simple
- description: "Останній час виписки (якщо відсутній, буде використовуватись\
\ поточний час)."
example: "1546306461"
explode: false
in: path
name: to
required: false
schema:
type: string
style: simple
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/StatementItems'
description: Statement list
summary: Виписка
tags:
- Клієнтські персональні дані
components:
schemas:
SetWebHook:
description: "URL для надсиляння подій по зміні балансу рахунків фізичних ос\
іб, ФОП та банок"
example:
webHookUrl: https://example.com/some_random_data_for_security
properties:
webHookUrl:
example: https://example.com/some_random_data_for_security
type: string
type: object
UserInfo:
description: Опис клієнта та його рахунків і банок.
example:
clientId: 3MSaMMtczs
permissions: psfj
webHookUrl: https://example.com/some_random_data_for_security
name: Мазепа Іван
jars:
- sendId: uHWzqVoZuH
goal: 10000000
balance: 1000000
description: На тепловізор
id: kKGVoZuHWzqVoZuH
title: На тепловізор
currencyCode: 980
- sendId: uHWzqVoZuH
goal: 10000000
balance: 1000000
description: На тепловізор
id: kKGVoZuHWzqVoZuH
title: На тепловізор
currencyCode: 980
accounts:
- sendId: uHWzqVoZuH
balance: 10000000
cashbackType: UAH
maskedPan:
- 537541******1234
iban: UA733220010000026201234567890
creditLimit: 10000000
id: kKGVoZuHWzqVoZuH
type: black
currencyCode: 980
- sendId: uHWzqVoZuH
balance: 10000000
cashbackType: UAH
maskedPan:
- 537541******1234
iban: UA733220010000026201234567890
creditLimit: 10000000
id: kKGVoZuHWzqVoZuH
type: black
currencyCode: 980
properties:
clientId:
description: Ідентифікатор клієнта (збігається з id для send.monobank.ua)
example: 3MSaMMtczs
type: string
name:
description: Ім'я клієнта
example: Мазепа Іван
type: string
webHookUrl:
description: URL для надсиляння подій по зміні балансу рахунку
example: https://example.com/some_random_data_for_security
type: string
permissions:
description: "Перелік прав, які які надає сервіс (1 літера на 1 permission)."
example: psfj
type: string
accounts:
description: Перелік доступних рахунків
items:
$ref: '#/components/schemas/UserInfo_accounts_inner'
type: array
jars:
description: Перелік банок
items:
$ref: '#/components/schemas/UserInfo_jars_inner'
type: array
type: object
StatementItems:
description: Перелік транзакцій за вказанний час
items:
$ref: '#/components/schemas/StatementItems_inner'
type: array
CurrencyInfo:
description: "Перелік курсів. Кожна валютна пара може мати одне і більше пол\
ів з rateSell, rateBuy, rateCross."
items:
$ref: '#/components/schemas/CurrencyInfo_inner'
type: array
Error:
properties:
errorDescription:
description: "Текст помилки для кінцевого користувача, для автоматичного\
\ оброблення потрібно аналізувати HTTP код відповіді (200, 404, 429 та\
\ інші)"
type: string
type: object
UserInfo_accounts_inner:
example:
sendId: uHWzqVoZuH
balance: 10000000
cashbackType: UAH
maskedPan:
- 537541******1234
iban: UA733220010000026201234567890
creditLimit: 10000000
id: kKGVoZuHWzqVoZuH
type: black
currencyCode: 980
properties:
id:
description: Ідентифікатор рахунку
example: kKGVoZuHWzqVoZuH
type: string
sendId:
description: "Ідентифікатор для сервісу https://send.monobank.ua/{sendId}"
example: uHWzqVoZuH
type: string
balance:
description: "Баланс рахунку в мінімальних одиницях валюти (копійках, це\
нтах)"
example: 10000000
format: int64
type: number
creditLimit:
description: Кредитний ліміт
example: 10000000
format: int64
type: number
type:
description: Тип рахунку
enum:
- black
- white
- platinum
- iron
- fop
- yellow
- eAid
example: black
type: string
currencyCode:
description: Код валюти рахунку відповідно ISO 4217
example: 980
format: int32
type: number
cashbackType:
description: Тип кешбеку який нараховується на рахунок
enum:
- None
- UAH
- Miles
example: UAH
type: string
maskedPan:
description: Перелік замаскованних номерів карт (більше одного може бути
у преміальних карт)
example:
- 537541******1234
type: array
iban:
description: IBAN рахунку
example: UA733220010000026201234567890
type: string
type: object
UserInfo_jars_inner:
example:
sendId: uHWzqVoZuH
goal: 10000000
balance: 1000000
description: На тепловізор
id: kKGVoZuHWzqVoZuH
title: На тепловізор
currencyCode: 980
properties:
id:
description: Ідентифікатор банки
example: kKGVoZuHWzqVoZuH
type: string
sendId:
description: "Ідентифікатор для сервісу https://send.monobank.ua/{sendId}"
example: uHWzqVoZuH
type: string
title:
description: Назва банки
example: На тепловізор
type: string
description:
description: Опис банки
example: На тепловізор
type: string
currencyCode:
description: Код валюти банки відповідно ISO 4217
example: 980
format: int32
type: number
balance:
description: "Баланс банки в мінімальних одиницях валюти (копійках, цент\
ах)"
example: 1000000
format: int64
type: number
goal:
description: "Цільова сума для накопичення в банці в мінімальних одиниця\
х валюти (копійках, центах)"
example: 10000000
format: int64
type: number
type: object
StatementItems_inner:
example:
amount: -95000
commissionRate: 0
counterIban: UA898999980000355639201001404
counterEdrpou: "3096889974"
cashbackAmount: 19000
description: Покупка щастя
originalMcc: 7997
mcc: 7997
hold: false
counterName: ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ «ВОРОНА»
balance: 10050000
operationAmount: -95000
comment: За каву
invoiceId: 2103.в.27
id: ZuHWzqkKGVo=
time: 1554466347
currencyCode: 980
receiptId: XXXX-XXXX-XXXX-XXXX
properties:
id:
description: Унікальний id транзакції
example: ZuHWzqkKGVo=
type: string
time:
description: Час транзакції в секундах в форматі Unix time
example: 1554466347
format: int64
type: number
description:
description: Опис транзакцій
example: Покупка щастя
type: string
mcc:
description: "Код типу транзакції (Merchant Category Code), відповідно ISO\
\ 18245"
example: 7997
format: int32
type: number
originalMcc:
description: "Оригінальний код типу транзакції (Merchant Category Code),\
\ відповідно ISO 18245"
example: 7997
format: int32
type: number
hold:
description: "Статус блокування суми (детальніше у [wiki](https://en.wikipedia.org/wiki/Authorization_hold))"
example: false
type: boolean
amount:
description: "Сума у валюті рахунку в мінімальних одиницях валюти (копій\
ках, центах)"
example: -95000
format: int64
type: number
operationAmount:
description: "Сума у валюті транзакції в мінімальних одиницях валюти (ко\
пійках, центах)"
example: -95000
format: int64
type: number
currencyCode:
description: Код валюти рахунку відповідно ISO 4217
example: 980
format: int32
type: number
commissionRate:
description: "Розмір комісії в мінімальних одиницях валюти (копійках, це\
нтах)"
example: 0
format: int64
type: number
cashbackAmount:
description: "Розмір кешбеку в мінімальних одиницях валюти (копійках, це\
нтах)"
example: 19000
format: int64
type: number
balance:
description: "Баланс рахунку в мінімальних одиницях валюти (копійках, це\
нтах)"
example: 10050000
format: int64
type: number
comment:
description: "Коментар до переказу, уведений користувачем. Якщо не вказа\
ний, поле буде відсутнім"
example: За каву
type: string
receiptId:
description: Номер квитанції для check.gov.ua. Поле може бути відсутнім
example: XXXX-XXXX-XXXX-XXXX
type: string
invoiceId:
description: "Номер квитанції ФОПа, приходить у випадку якщо це операція\
\ із зарахуванням коштів"
example: 2103.в.27
type: string
counterEdrpou:
description: "ЄДРПОУ контрагента, присутній лише для елементів виписки р\
ахунків ФОП"
example: "3096889974"
type: string
counterIban:
description: "IBAN контрагента, присутній лише для елементів виписки рах\
унків ФОП"
example: UA898999980000355639201001404
type: string
counterName:
description: Найменування контрагента
example: ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ «ВОРОНА»
type: string
type: object
CurrencyInfo_inner:
example:
date: 1552392228
currencyCodeA: 840
currencyCodeB: 980
rateBuy: 27.2
rateSell: 27
rateCross: 27.1
properties:
currencyCodeA:
description: Код валюти рахунку відповідно ISO 4217
example: 840
format: int32
type: number
currencyCodeB:
description: Код валюти рахунку відповідно ISO 4217
example: 980
format: int32
type: number
date:
description: Час курсу в секундах в форматі Unix time
example: 1552392228
format: int64
type: number
rateSell:
example: 27
format: float
type: number
rateBuy:
example: 27.2
format: float
type: number
rateCross:
example: 27.1
format: float
type: number
type: object