/* 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 }