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