go-monobank/api_.go
2024-04-10 22:18:44 +03:00

472 lines
19 KiB
Go
Raw Permalink 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.

/*
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
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package monobank
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// DefaultApiService DefaultApi service
type DefaultApiService service
type ApiBankCurrencyGetRequest struct {
ctx context.Context
ApiService *DefaultApiService
}
func (r ApiBankCurrencyGetRequest) Execute() ([]CurrencyInfoInner, *http.Response, error) {
return r.ApiService.BankCurrencyGetExecute(r)
}
/*
BankCurrencyGet Отримання курсів валют
Отримати базовий перелік курсів валют monobank. Інформація кешується та оновлюється не частіше 1 разу на 5 хвилин.
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@return ApiBankCurrencyGetRequest
*/
func (a *DefaultApiService) BankCurrencyGet(ctx context.Context) ApiBankCurrencyGetRequest {
return ApiBankCurrencyGetRequest{
ApiService: a,
ctx: ctx,
}
}
// Execute executes the request
// @return []CurrencyInfoInner
func (a *DefaultApiService) BankCurrencyGetExecute(r ApiBankCurrencyGetRequest) ([]CurrencyInfoInner, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue []CurrencyInfoInner
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultApiService.BankCurrencyGet")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/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
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type ApiPersonalClientInfoGetRequest struct {
ctx context.Context
ApiService *DefaultApiService
xToken *string
}
// Token для особистого доступу до API
func (r ApiPersonalClientInfoGetRequest) XToken(xToken string) ApiPersonalClientInfoGetRequest {
r.xToken = &xToken
return r
}
func (r ApiPersonalClientInfoGetRequest) Execute() (*UserInfo, *http.Response, error) {
return r.ApiService.PersonalClientInfoGetExecute(r)
}
/*
PersonalClientInfoGet Інформація про клієнта
Отримання інформації про клієнта та переліку його рахунків і банок. Обмеження на використання функції не частіше ніж 1 раз у 60 секунд.
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@return ApiPersonalClientInfoGetRequest
*/
func (a *DefaultApiService) PersonalClientInfoGet(ctx context.Context) ApiPersonalClientInfoGetRequest {
return ApiPersonalClientInfoGetRequest{
ApiService: a,
ctx: ctx,
}
}
// Execute executes the request
// @return UserInfo
func (a *DefaultApiService) PersonalClientInfoGetExecute(r ApiPersonalClientInfoGetRequest) (*UserInfo, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *UserInfo
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultApiService.PersonalClientInfoGet")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/personal/client-info"
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.xToken == nil {
return localVarReturnValue, nil, reportError("xToken is required and must be specified")
}
// 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
}
parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Token", r.xToken, "")
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type ApiPersonalStatementAccountFromToGetRequest struct {
ctx context.Context
ApiService *DefaultApiService
xToken *string
account string
from string
to string
}
// Token для особистого доступу до API
func (r ApiPersonalStatementAccountFromToGetRequest) XToken(xToken string) ApiPersonalStatementAccountFromToGetRequest {
r.xToken = &xToken
return r
}
func (r ApiPersonalStatementAccountFromToGetRequest) Execute() ([]StatementItemsInner, *http.Response, error) {
return r.ApiService.PersonalStatementAccountFromToGetExecute(r)
}
/*
PersonalStatementAccountFromToGet Виписка
Отримання виписки за час від {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 account Ідентифікатор рахунку або банки з переліків Statement list або 0 - дефолтний рахунок.
@param from Початок часу виписки.
@param to Останній час виписки (якщо відсутній, буде використовуватись поточний час).
@return ApiPersonalStatementAccountFromToGetRequest
*/
func (a *DefaultApiService) PersonalStatementAccountFromToGet(ctx context.Context, account string, from string, to string) ApiPersonalStatementAccountFromToGetRequest {
return ApiPersonalStatementAccountFromToGetRequest{
ApiService: a,
ctx: ctx,
account: account,
from: from,
to: to,
}
}
// Execute executes the request
// @return []StatementItemsInner
func (a *DefaultApiService) PersonalStatementAccountFromToGetExecute(r ApiPersonalStatementAccountFromToGetRequest) ([]StatementItemsInner, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue []StatementItemsInner
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultApiService.PersonalStatementAccountFromToGet")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/personal/statement/{account}/{from}/{to}"
localVarPath = strings.Replace(localVarPath, "{"+"account"+"}", url.PathEscape(parameterValueToString(r.account, "account")), -1)
localVarPath = strings.Replace(localVarPath, "{"+"from"+"}", url.PathEscape(parameterValueToString(r.from, "from")), -1)
localVarPath = strings.Replace(localVarPath, "{"+"to"+"}", url.PathEscape(parameterValueToString(r.to, "to")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.xToken == nil {
return localVarReturnValue, nil, reportError("xToken is required and must be specified")
}
// 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
}
parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Token", r.xToken, "")
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type ApiPersonalWebhookPostRequest struct {
ctx context.Context
ApiService *DefaultApiService
xToken *string
setWebHook *SetWebHook
}
// Token для особистого доступу до API
func (r ApiPersonalWebhookPostRequest) XToken(xToken string) ApiPersonalWebhookPostRequest {
r.xToken = &xToken
return r
}
func (r ApiPersonalWebhookPostRequest) SetWebHook(setWebHook SetWebHook) ApiPersonalWebhookPostRequest {
r.setWebHook = &setWebHook
return r
}
func (r ApiPersonalWebhookPostRequest) Execute() (*http.Response, error) {
return r.ApiService.PersonalWebhookPostExecute(r)
}
/*
PersonalWebhookPost Встановлення 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().
@return ApiPersonalWebhookPostRequest
*/
func (a *DefaultApiService) PersonalWebhookPost(ctx context.Context) ApiPersonalWebhookPostRequest {
return ApiPersonalWebhookPostRequest{
ApiService: a,
ctx: ctx,
}
}
// Execute executes the request
func (a *DefaultApiService) PersonalWebhookPostExecute(r ApiPersonalWebhookPostRequest) (*http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultApiService.PersonalWebhookPost")
if err != nil {
return nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/personal/webhook"
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.xToken == nil {
return nil, reportError("xToken is required and must be specified")
}
if r.setWebHook == nil {
return nil, reportError("setWebHook is required and must be specified")
}
// 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
}
parameterAddToHeaderOrQuery(localVarHeaderParams, "X-Token", r.xToken, "")
// body params
localVarPostBody = r.setWebHook
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
return localVarHTTPResponse, newErr
}
return localVarHTTPResponse, nil
}