360 lines
17 KiB
Go
360 lines
17 KiB
Go
|
/*
|
|||
|
* Monobank open API
|
|||
|
*
|
|||
|
* 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 в якості корпоративного, банк залишає за собою право накласти санкції на компанію.
|
|||
|
*
|
|||
|
* API version: v2303
|
|||
|
* Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git)
|
|||
|
*/
|
|||
|
package monobank
|
|||
|
|
|||
|
import (
|
|||
|
"context"
|
|||
|
"fmt"
|
|||
|
"io/ioutil"
|
|||
|
"net/http"
|
|||
|
"net/url"
|
|||
|
"strings"
|
|||
|
)
|
|||
|
|
|||
|
// Linger please
|
|||
|
var (
|
|||
|
_ context.Context
|
|||
|
)
|
|||
|
|
|||
|
type ApiService service
|
|||
|
|
|||
|
/*
|
|||
|
ApiService Отримання курсів валют
|
|||
|
Отримати базовий перелік курсів валют monobank. Інформація кешується та оновлюється не частіше 1 разу на 5 хвилин.
|
|||
|
- @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
|||
|
|
|||
|
@return []CurrencyInfoInner
|
|||
|
*/
|
|||
|
func (a *ApiService) BankCurrencyGet(ctx context.Context) ([]CurrencyInfoInner, *http.Response, error) {
|
|||
|
var (
|
|||
|
localVarHttpMethod = strings.ToUpper("Get")
|
|||
|
localVarPostBody interface{}
|
|||
|
localVarFileName string
|
|||
|
localVarFileBytes []byte
|
|||
|
localVarReturnValue []CurrencyInfoInner
|
|||
|
)
|
|||
|
|
|||
|
// create path and map variables
|
|||
|
localVarPath := a.client.cfg.BasePath + "/bank/currency"
|
|||
|
|
|||
|
localVarHeaderParams := make(map[string]string)
|
|||
|
localVarQueryParams := url.Values{}
|
|||
|
localVarFormParams := url.Values{}
|
|||
|
|
|||
|
// to determine the Content-Type header
|
|||
|
localVarHttpContentTypes := []string{}
|
|||
|
|
|||
|
// set Content-Type header
|
|||
|
localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
|
|||
|
if localVarHttpContentType != "" {
|
|||
|
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
|||
|
}
|
|||
|
|
|||
|
// to determine the Accept header
|
|||
|
localVarHttpHeaderAccepts := []string{"application/json"}
|
|||
|
|
|||
|
// set Accept header
|
|||
|
localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
|
|||
|
if localVarHttpHeaderAccept != "" {
|
|||
|
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
|||
|
}
|
|||
|
r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
|
|||
|
if err != nil {
|
|||
|
return localVarReturnValue, nil, err
|
|||
|
}
|
|||
|
|
|||
|
localVarHttpResponse, err := a.client.callAPI(r)
|
|||
|
if err != nil || localVarHttpResponse == nil {
|
|||
|
return localVarReturnValue, localVarHttpResponse, err
|
|||
|
}
|
|||
|
|
|||
|
localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
|
|||
|
localVarHttpResponse.Body.Close()
|
|||
|
if err != nil {
|
|||
|
return localVarReturnValue, localVarHttpResponse, err
|
|||
|
}
|
|||
|
|
|||
|
if localVarHttpResponse.StatusCode < 300 {
|
|||
|
// If we succeed, return the data, otherwise pass on to decode error.
|
|||
|
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
|
|||
|
if err == nil {
|
|||
|
return localVarReturnValue, localVarHttpResponse, err
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if localVarHttpResponse.StatusCode >= 300 {
|
|||
|
newErr := GenericSwaggerError{
|
|||
|
body: localVarBody,
|
|||
|
error: localVarHttpResponse.Status,
|
|||
|
}
|
|||
|
if localVarHttpResponse.StatusCode == 200 {
|
|||
|
var v []CurrencyInfoInner
|
|||
|
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
|
|||
|
if err != nil {
|
|||
|
newErr.error = err.Error()
|
|||
|
return localVarReturnValue, localVarHttpResponse, newErr
|
|||
|
}
|
|||
|
newErr.model = v
|
|||
|
return localVarReturnValue, localVarHttpResponse, newErr
|
|||
|
}
|
|||
|
return localVarReturnValue, localVarHttpResponse, newErr
|
|||
|
}
|
|||
|
|
|||
|
return localVarReturnValue, localVarHttpResponse, nil
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
ApiService Інформація про клієнта
|
|||
|
Отримання інформації про клієнта та переліку його рахунків і банок. Обмеження на використання функції не частіше ніж 1 раз у 60 секунд.
|
|||
|
- @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
|||
|
- @param xToken Token для особистого доступу до API
|
|||
|
|
|||
|
@return UserInfo
|
|||
|
*/
|
|||
|
func (a *ApiService) PersonalClientInfoGet(ctx context.Context, xToken string) (UserInfo, *http.Response, error) {
|
|||
|
var (
|
|||
|
localVarHttpMethod = strings.ToUpper("Get")
|
|||
|
localVarPostBody interface{}
|
|||
|
localVarFileName string
|
|||
|
localVarFileBytes []byte
|
|||
|
localVarReturnValue UserInfo
|
|||
|
)
|
|||
|
|
|||
|
// create path and map variables
|
|||
|
localVarPath := a.client.cfg.BasePath + "/personal/client-info"
|
|||
|
|
|||
|
localVarHeaderParams := make(map[string]string)
|
|||
|
localVarQueryParams := url.Values{}
|
|||
|
localVarFormParams := url.Values{}
|
|||
|
|
|||
|
// to determine the Content-Type header
|
|||
|
localVarHttpContentTypes := []string{}
|
|||
|
|
|||
|
// set Content-Type header
|
|||
|
localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
|
|||
|
if localVarHttpContentType != "" {
|
|||
|
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
|||
|
}
|
|||
|
|
|||
|
// to determine the Accept header
|
|||
|
localVarHttpHeaderAccepts := []string{"application/json"}
|
|||
|
|
|||
|
// set Accept header
|
|||
|
localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
|
|||
|
if localVarHttpHeaderAccept != "" {
|
|||
|
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
|||
|
}
|
|||
|
localVarHeaderParams["X-Token"] = parameterToString(xToken, "")
|
|||
|
r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
|
|||
|
if err != nil {
|
|||
|
return localVarReturnValue, nil, err
|
|||
|
}
|
|||
|
|
|||
|
localVarHttpResponse, err := a.client.callAPI(r)
|
|||
|
if err != nil || localVarHttpResponse == nil {
|
|||
|
return localVarReturnValue, localVarHttpResponse, err
|
|||
|
}
|
|||
|
|
|||
|
localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
|
|||
|
localVarHttpResponse.Body.Close()
|
|||
|
if err != nil {
|
|||
|
return localVarReturnValue, localVarHttpResponse, err
|
|||
|
}
|
|||
|
|
|||
|
if localVarHttpResponse.StatusCode < 300 {
|
|||
|
// If we succeed, return the data, otherwise pass on to decode error.
|
|||
|
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
|
|||
|
if err == nil {
|
|||
|
return localVarReturnValue, localVarHttpResponse, err
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if localVarHttpResponse.StatusCode >= 300 {
|
|||
|
newErr := GenericSwaggerError{
|
|||
|
body: localVarBody,
|
|||
|
error: localVarHttpResponse.Status,
|
|||
|
}
|
|||
|
if localVarHttpResponse.StatusCode == 200 {
|
|||
|
var v UserInfo
|
|||
|
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
|
|||
|
if err != nil {
|
|||
|
newErr.error = err.Error()
|
|||
|
return localVarReturnValue, localVarHttpResponse, newErr
|
|||
|
}
|
|||
|
newErr.model = v
|
|||
|
return localVarReturnValue, localVarHttpResponse, newErr
|
|||
|
}
|
|||
|
return localVarReturnValue, localVarHttpResponse, newErr
|
|||
|
}
|
|||
|
|
|||
|
return localVarReturnValue, localVarHttpResponse, nil
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
ApiService Виписка
|
|||
|
Отримання виписки за час від {from} до {to} часу в секундах в форматі Unix time. Максимальний час, за який можливо отримати виписку — 31 доба + 1 година (2682000 секунд). Обмеження на використання функції — не частіше ніж 1 раз на 60 секунд. Повертає 500 транзакцій з кінця, тобто від часу to до from. Якщо кількість транзакцій = 500, потрібно зробити ще один запит, зменшивши час to до часу останнього платежу, з відповіді. Якщо знову кількість транзакцій = 500, то виконуєте запити до того часу, поки кількість транзакцій не буде < 500. Відповідно, якщо кількість транзакцій < 500, то вже отримано всі платежі за вказаний період.
|
|||
|
- @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
|||
|
- @param xToken Token для особистого доступу до API
|
|||
|
- @param account Ідентифікатор рахунку або банки з переліків Statement list або 0 - дефолтний рахунок.
|
|||
|
- @param from Початок часу виписки.
|
|||
|
- @param to Останній час виписки (якщо відсутній, буде використовуватись поточний час).
|
|||
|
|
|||
|
@return []StatementItemsInner
|
|||
|
*/
|
|||
|
func (a *ApiService) PersonalStatementAccountFromToGet(ctx context.Context, xToken string, account string, from string, to string) ([]StatementItemsInner, *http.Response, error) {
|
|||
|
var (
|
|||
|
localVarHttpMethod = strings.ToUpper("Get")
|
|||
|
localVarPostBody interface{}
|
|||
|
localVarFileName string
|
|||
|
localVarFileBytes []byte
|
|||
|
localVarReturnValue []StatementItemsInner
|
|||
|
)
|
|||
|
|
|||
|
// create path and map variables
|
|||
|
localVarPath := a.client.cfg.BasePath + "/personal/statement/{account}/{from}/{to}"
|
|||
|
localVarPath = strings.Replace(localVarPath, "{"+"account"+"}", fmt.Sprintf("%v", account), -1)
|
|||
|
localVarPath = strings.Replace(localVarPath, "{"+"from"+"}", fmt.Sprintf("%v", from), -1)
|
|||
|
localVarPath = strings.Replace(localVarPath, "{"+"to"+"}", fmt.Sprintf("%v", to), -1)
|
|||
|
|
|||
|
localVarHeaderParams := make(map[string]string)
|
|||
|
localVarQueryParams := url.Values{}
|
|||
|
localVarFormParams := url.Values{}
|
|||
|
|
|||
|
// to determine the Content-Type header
|
|||
|
localVarHttpContentTypes := []string{}
|
|||
|
|
|||
|
// set Content-Type header
|
|||
|
localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
|
|||
|
if localVarHttpContentType != "" {
|
|||
|
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
|||
|
}
|
|||
|
|
|||
|
// to determine the Accept header
|
|||
|
localVarHttpHeaderAccepts := []string{"application/json"}
|
|||
|
|
|||
|
// set Accept header
|
|||
|
localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
|
|||
|
if localVarHttpHeaderAccept != "" {
|
|||
|
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
|||
|
}
|
|||
|
localVarHeaderParams["X-Token"] = parameterToString(xToken, "")
|
|||
|
r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
|
|||
|
if err != nil {
|
|||
|
return localVarReturnValue, nil, err
|
|||
|
}
|
|||
|
|
|||
|
localVarHttpResponse, err := a.client.callAPI(r)
|
|||
|
if err != nil || localVarHttpResponse == nil {
|
|||
|
return localVarReturnValue, localVarHttpResponse, err
|
|||
|
}
|
|||
|
|
|||
|
localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
|
|||
|
localVarHttpResponse.Body.Close()
|
|||
|
if err != nil {
|
|||
|
return localVarReturnValue, localVarHttpResponse, err
|
|||
|
}
|
|||
|
|
|||
|
if localVarHttpResponse.StatusCode < 300 {
|
|||
|
// If we succeed, return the data, otherwise pass on to decode error.
|
|||
|
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
|
|||
|
if err == nil {
|
|||
|
return localVarReturnValue, localVarHttpResponse, err
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if localVarHttpResponse.StatusCode >= 300 {
|
|||
|
newErr := GenericSwaggerError{
|
|||
|
body: localVarBody,
|
|||
|
error: localVarHttpResponse.Status,
|
|||
|
}
|
|||
|
if localVarHttpResponse.StatusCode == 200 {
|
|||
|
var v []StatementItemsInner
|
|||
|
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
|
|||
|
if err != nil {
|
|||
|
newErr.error = err.Error()
|
|||
|
return localVarReturnValue, localVarHttpResponse, newErr
|
|||
|
}
|
|||
|
newErr.model = v
|
|||
|
return localVarReturnValue, localVarHttpResponse, newErr
|
|||
|
}
|
|||
|
return localVarReturnValue, localVarHttpResponse, newErr
|
|||
|
}
|
|||
|
|
|||
|
return localVarReturnValue, localVarHttpResponse, nil
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
ApiService Встановлення WebHook
|
|||
|
Встановлення URL користувача: - Для підтвердження коректності наданої адреси, на неї надсилається GET-запит. Сервер має відповісти строго HTTP статус-кодом 200, і ніяким іншим. Якщо валідацію пройдено, на задану адресу починають надсилатися POST запити з подіями. - Події надсилаються у наступному вигляді: POST запит на задану адресу у форматі `{type:\"StatementItem\", data:{account:\"...\", statementItem:{#StatementItem}}}`. Якщо сервіс користувача не відповість протягом 5с на команду, сервіс повторить спробу ще через 60 та 600 секунд. Якщо на третю спробу відповідь отримана не буде, функція буде вимкнута. Відповідь сервера має строго містити HTTP статус-код 200.
|
|||
|
- @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
|||
|
- @param body
|
|||
|
- @param xToken Token для особистого доступу до API
|
|||
|
*/
|
|||
|
func (a *ApiService) PersonalWebhookPost(ctx context.Context, body SetWebHook, xToken string) (*http.Response, error) {
|
|||
|
var (
|
|||
|
localVarHttpMethod = strings.ToUpper("Post")
|
|||
|
localVarPostBody interface{}
|
|||
|
localVarFileName string
|
|||
|
localVarFileBytes []byte
|
|||
|
)
|
|||
|
|
|||
|
// create path and map variables
|
|||
|
localVarPath := a.client.cfg.BasePath + "/personal/webhook"
|
|||
|
|
|||
|
localVarHeaderParams := make(map[string]string)
|
|||
|
localVarQueryParams := url.Values{}
|
|||
|
localVarFormParams := url.Values{}
|
|||
|
|
|||
|
// to determine the Content-Type header
|
|||
|
localVarHttpContentTypes := []string{"application/json"}
|
|||
|
|
|||
|
// set Content-Type header
|
|||
|
localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
|
|||
|
if localVarHttpContentType != "" {
|
|||
|
localVarHeaderParams["Content-Type"] = localVarHttpContentType
|
|||
|
}
|
|||
|
|
|||
|
// to determine the Accept header
|
|||
|
localVarHttpHeaderAccepts := []string{}
|
|||
|
|
|||
|
// set Accept header
|
|||
|
localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
|
|||
|
if localVarHttpHeaderAccept != "" {
|
|||
|
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
|
|||
|
}
|
|||
|
localVarHeaderParams["X-Token"] = parameterToString(xToken, "")
|
|||
|
// body params
|
|||
|
localVarPostBody = &body
|
|||
|
r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
|
|||
|
if err != nil {
|
|||
|
return nil, err
|
|||
|
}
|
|||
|
|
|||
|
localVarHttpResponse, err := a.client.callAPI(r)
|
|||
|
if err != nil || localVarHttpResponse == nil {
|
|||
|
return localVarHttpResponse, err
|
|||
|
}
|
|||
|
|
|||
|
localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
|
|||
|
localVarHttpResponse.Body.Close()
|
|||
|
if err != nil {
|
|||
|
return localVarHttpResponse, err
|
|||
|
}
|
|||
|
|
|||
|
if localVarHttpResponse.StatusCode >= 300 {
|
|||
|
newErr := GenericSwaggerError{
|
|||
|
body: localVarBody,
|
|||
|
error: localVarHttpResponse.Status,
|
|||
|
}
|
|||
|
return localVarHttpResponse, newErr
|
|||
|
}
|
|||
|
|
|||
|
return localVarHttpResponse, nil
|
|||
|
}
|