commit 88dd10c9677f349e1f3bcfb9c33c1311a78811db Author: stuzer05 Date: Wed Apr 10 22:18:44 2024 +0300 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..59610b5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof + +.idea \ No newline at end of file diff --git a/.openapi-generator-ignore b/.openapi-generator-ignore new file mode 100644 index 0000000..7484ee5 --- /dev/null +++ b/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES new file mode 100644 index 0000000..c6e3be2 --- /dev/null +++ b/.openapi-generator/FILES @@ -0,0 +1,29 @@ +.gitignore +.openapi-generator-ignore +.travis.yml +README.md +api/openapi.yaml +api_.go +client.go +configuration.go +docs/CurrencyInfoInner.md +docs/DefaultApi.md +docs/Error.md +docs/SetWebHook.md +docs/StatementItemsInner.md +docs/UserInfo.md +docs/UserInfoAccountsInner.md +docs/UserInfoJarsInner.md +git_push.sh +go.mod +go.sum +model_currency_info_inner.go +model_error.go +model_set_web_hook.go +model_statement_items_inner.go +model_user_info.go +model_user_info_accounts_inner.go +model_user_info_jars_inner.go +response.go +test/api__test.go +utils.go diff --git a/.openapi-generator/VERSION b/.openapi-generator/VERSION new file mode 100644 index 0000000..ba7f754 --- /dev/null +++ b/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.4.0 diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..f5cb2ce --- /dev/null +++ b/.travis.yml @@ -0,0 +1,8 @@ +language: go + +install: + - go get -d -v . + +script: + - go build -v ./ + diff --git a/README.md b/README.md new file mode 100644 index 0000000..3f7e8cb --- /dev/null +++ b/README.md @@ -0,0 +1,130 @@ +# Go API client for openapi + +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 в якості корпоративного, банк залишає за собою право накласти санкції на компанію. + +## Overview +This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [OpenAPI-spec](https://www.openapis.org/) from a remote server, you can easily generate an API client. + +- API version: v2303 +- Package version: 1.0.0 +- Generator version: 7.4.0 +- Build package: org.openapitools.codegen.languages.GoClientCodegen + +## Installation + +Install the following dependencies: + +```sh +go get github.com/stretchr/testify/assert +go get golang.org/x/net/context +``` + +Put the package under your project folder and add the following in import: + +```go +import monobank "gitea.stuzer.link/stuzer05/go-monobank" +``` + +To use a proxy, set the environment variable `HTTP_PROXY`: + +```go +os.Setenv("HTTP_PROXY", "http://proxy_name:proxy_port") +``` + +## Configuration of Server URL + +Default configuration comes with `Servers` field that contains server objects as defined in the OpenAPI specification. + +### Select Server Configuration + +For using other server than the one defined on index 0 set context value `openapi.ContextServerIndex` of type `int`. + +```go +ctx := context.WithValue(context.Background(), openapi.ContextServerIndex, 1) +``` + +### Templated Server URL + +Templated server URL is formatted using default variables from configuration or from context value `openapi.ContextServerVariables` of type `map[string]string`. + +```go +ctx := context.WithValue(context.Background(), openapi.ContextServerVariables, map[string]string{ + "basePath": "v2", +}) +``` + +Note, enum values are always validated and all unused variables are silently ignored. + +### URLs Configuration per Operation + +Each operation can use different server URL defined using `OperationServers` map in the `Configuration`. +An operation is uniquely identified by `"{classname}Service.{nickname}"` string. +Similar rules for overriding default operation server index and variables applies by using `openapi.ContextOperationServerIndices` and `openapi.ContextOperationServerVariables` context maps. + +```go +ctx := context.WithValue(context.Background(), openapi.ContextOperationServerIndices, map[string]int{ + "{classname}Service.{nickname}": 2, +}) +ctx = context.WithValue(context.Background(), openapi.ContextOperationServerVariables, map[string]map[string]string{ + "{classname}Service.{nickname}": { + "port": "8443", + }, +}) +``` + +## Documentation for API Endpoints + +All URIs are relative to *https://api.monobank.ua* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*DefaultApi* | [**BankCurrencyGet**](docs/DefaultApi.md#bankcurrencyget) | **Get** /bank/currency | Отримання курсів валют +*DefaultApi* | [**PersonalClientInfoGet**](docs/DefaultApi.md#personalclientinfoget) | **Get** /personal/client-info | Інформація про клієнта +*DefaultApi* | [**PersonalStatementAccountFromToGet**](docs/DefaultApi.md#personalstatementaccountfromtoget) | **Get** /personal/statement/{account}/{from}/{to} | Виписка +*DefaultApi* | [**PersonalWebhookPost**](docs/DefaultApi.md#personalwebhookpost) | **Post** /personal/webhook | Встановлення WebHook + + +## Documentation For Models + + - [CurrencyInfoInner](docs/CurrencyInfoInner.md) + - [Error](docs/Error.md) + - [SetWebHook](docs/SetWebHook.md) + - [StatementItemsInner](docs/StatementItemsInner.md) + - [UserInfo](docs/UserInfo.md) + - [UserInfoAccountsInner](docs/UserInfoAccountsInner.md) + - [UserInfoJarsInner](docs/UserInfoJarsInner.md) + + +## Documentation For Authorization + +Endpoints do not require authorization. + + +## Documentation for Utility Methods + +Due to the fact that model structure members are all pointers, this package contains +a number of utility functions to easily obtain pointers to values of basic types. +Each of these functions takes a value of the given basic type and returns a pointer to it: + +* `PtrBool` +* `PtrInt` +* `PtrInt32` +* `PtrInt64` +* `PtrFloat` +* `PtrFloat32` +* `PtrFloat64` +* `PtrString` +* `PtrTime` + +## Author + + + diff --git a/api/openapi.yaml b/api/openapi.yaml new file mode 100644 index 0000000..c3aa14d --- /dev/null +++ b/api/openapi.yaml @@ -0,0 +1,511 @@ +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 diff --git a/api_.go b/api_.go new file mode 100644 index 0000000..2eb598f --- /dev/null +++ b/api_.go @@ -0,0 +1,471 @@ +/* +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 +} diff --git a/client.go b/client.go new file mode 100644 index 0000000..1a390d8 --- /dev/null +++ b/client.go @@ -0,0 +1,660 @@ +/* +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" + "encoding/json" + "encoding/xml" + "errors" + "fmt" + "io" + "log" + "mime/multipart" + "net/http" + "net/http/httputil" + "net/url" + "os" + "path/filepath" + "reflect" + "regexp" + "strconv" + "strings" + "time" + "unicode/utf8" + +) + +var ( + JsonCheck = regexp.MustCompile(`(?i:(?:application|text)/(?:[^;]+\+)?json)`) + XmlCheck = regexp.MustCompile(`(?i:(?:application|text)/(?:[^;]+\+)?xml)`) + queryParamSplit = regexp.MustCompile(`(^|&)([^&]+)`) + queryDescape = strings.NewReplacer( "%5B", "[", "%5D", "]" ) +) + +// APIClient manages communication with the Monobank open API API vv2303 +// In most cases there should be only one, shared, APIClient. +type APIClient struct { + cfg *Configuration + common service // Reuse a single struct instead of allocating one for each service on the heap. + + // API Services + + DefaultApi *DefaultApiService +} + +type service struct { + client *APIClient +} + +// NewAPIClient creates a new API client. Requires a userAgent string describing your application. +// optionally a custom http.Client to allow for advanced features such as caching. +func NewAPIClient(cfg *Configuration) *APIClient { + if cfg.HTTPClient == nil { + cfg.HTTPClient = http.DefaultClient + } + + c := &APIClient{} + c.cfg = cfg + c.common.client = c + + // API Services + c.DefaultApi = (*DefaultApiService)(&c.common) + + return c +} + +func atoi(in string) (int, error) { + return strconv.Atoi(in) +} + +// selectHeaderContentType select a content type from the available list. +func selectHeaderContentType(contentTypes []string) string { + if len(contentTypes) == 0 { + return "" + } + if contains(contentTypes, "application/json") { + return "application/json" + } + return contentTypes[0] // use the first content type specified in 'consumes' +} + +// selectHeaderAccept join all accept types and return +func selectHeaderAccept(accepts []string) string { + if len(accepts) == 0 { + return "" + } + + if contains(accepts, "application/json") { + return "application/json" + } + + return strings.Join(accepts, ",") +} + +// contains is a case insensitive match, finding needle in a haystack +func contains(haystack []string, needle string) bool { + for _, a := range haystack { + if strings.EqualFold(a, needle) { + return true + } + } + return false +} + +// Verify optional parameters are of the correct type. +func typeCheckParameter(obj interface{}, expected string, name string) error { + // Make sure there is an object. + if obj == nil { + return nil + } + + // Check the type is as expected. + if reflect.TypeOf(obj).String() != expected { + return fmt.Errorf("expected %s to be of type %s but received %s", name, expected, reflect.TypeOf(obj).String()) + } + return nil +} + +func parameterValueToString( obj interface{}, key string ) string { + if reflect.TypeOf(obj).Kind() != reflect.Ptr { + return fmt.Sprintf("%v", obj) + } + var param,ok = obj.(MappedNullable) + if !ok { + return "" + } + dataMap,err := param.ToMap() + if err != nil { + return "" + } + return fmt.Sprintf("%v", dataMap[key]) +} + +// parameterAddToHeaderOrQuery adds the provided object to the request header or url query +// supporting deep object syntax +func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix string, obj interface{}, collectionType string) { + var v = reflect.ValueOf(obj) + var value = "" + if v == reflect.ValueOf(nil) { + value = "null" + } else { + switch v.Kind() { + case reflect.Invalid: + value = "invalid" + + case reflect.Struct: + if t,ok := obj.(MappedNullable); ok { + dataMap,err := t.ToMap() + if err != nil { + return + } + parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, dataMap, collectionType) + return + } + if t, ok := obj.(time.Time); ok { + parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, t.Format(time.RFC3339), collectionType) + return + } + value = v.Type().String() + " value" + case reflect.Slice: + var indValue = reflect.ValueOf(obj) + if indValue == reflect.ValueOf(nil) { + return + } + var lenIndValue = indValue.Len() + for i:=0;i 0 || (len(formFiles) > 0) { + if body != nil { + return nil, errors.New("Cannot specify postBody and multipart form at the same time.") + } + body = &bytes.Buffer{} + w := multipart.NewWriter(body) + + for k, v := range formParams { + for _, iv := range v { + if strings.HasPrefix(k, "@") { // file + err = addFile(w, k[1:], iv) + if err != nil { + return nil, err + } + } else { // form value + w.WriteField(k, iv) + } + } + } + for _, formFile := range formFiles { + if len(formFile.fileBytes) > 0 && formFile.fileName != "" { + w.Boundary() + part, err := w.CreateFormFile(formFile.formFileName, filepath.Base(formFile.fileName)) + if err != nil { + return nil, err + } + _, err = part.Write(formFile.fileBytes) + if err != nil { + return nil, err + } + } + } + + // Set the Boundary in the Content-Type + headerParams["Content-Type"] = w.FormDataContentType() + + // Set Content-Length + headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len()) + w.Close() + } + + if strings.HasPrefix(headerParams["Content-Type"], "application/x-www-form-urlencoded") && len(formParams) > 0 { + if body != nil { + return nil, errors.New("Cannot specify postBody and x-www-form-urlencoded form at the same time.") + } + body = &bytes.Buffer{} + body.WriteString(formParams.Encode()) + // Set Content-Length + headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len()) + } + + // Setup path and query parameters + url, err := url.Parse(path) + if err != nil { + return nil, err + } + + // Override request host, if applicable + if c.cfg.Host != "" { + url.Host = c.cfg.Host + } + + // Override request scheme, if applicable + if c.cfg.Scheme != "" { + url.Scheme = c.cfg.Scheme + } + + // Adding Query Param + query := url.Query() + for k, v := range queryParams { + for _, iv := range v { + query.Add(k, iv) + } + } + + // Encode the parameters. + url.RawQuery = queryParamSplit.ReplaceAllStringFunc(query.Encode(), func(s string) string { + pieces := strings.Split(s, "=") + pieces[0] = queryDescape.Replace(pieces[0]) + return strings.Join(pieces, "=") + }) + + // Generate a new request + if body != nil { + localVarRequest, err = http.NewRequest(method, url.String(), body) + } else { + localVarRequest, err = http.NewRequest(method, url.String(), nil) + } + if err != nil { + return nil, err + } + + // add header parameters, if any + if len(headerParams) > 0 { + headers := http.Header{} + for h, v := range headerParams { + headers[h] = []string{v} + } + localVarRequest.Header = headers + } + + // Add the user agent to the request. + localVarRequest.Header.Add("User-Agent", c.cfg.UserAgent) + + if ctx != nil { + // add context to the request + localVarRequest = localVarRequest.WithContext(ctx) + + // Walk through any authentication. + + } + + for header, value := range c.cfg.DefaultHeader { + localVarRequest.Header.Add(header, value) + } + return localVarRequest, nil +} + +func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err error) { + if len(b) == 0 { + return nil + } + if s, ok := v.(*string); ok { + *s = string(b) + return nil + } + if f, ok := v.(*os.File); ok { + f, err = os.CreateTemp("", "HttpClientFile") + if err != nil { + return + } + _, err = f.Write(b) + if err != nil { + return + } + _, err = f.Seek(0, io.SeekStart) + return + } + if f, ok := v.(**os.File); ok { + *f, err = os.CreateTemp("", "HttpClientFile") + if err != nil { + return + } + _, err = (*f).Write(b) + if err != nil { + return + } + _, err = (*f).Seek(0, io.SeekStart) + return + } + if XmlCheck.MatchString(contentType) { + if err = xml.Unmarshal(b, v); err != nil { + return err + } + return nil + } + if JsonCheck.MatchString(contentType) { + if actualObj, ok := v.(interface{ GetActualInstance() interface{} }); ok { // oneOf, anyOf schemas + if unmarshalObj, ok := actualObj.(interface{ UnmarshalJSON([]byte) error }); ok { // make sure it has UnmarshalJSON defined + if err = unmarshalObj.UnmarshalJSON(b); err != nil { + return err + } + } else { + return errors.New("Unknown type with GetActualInstance but no unmarshalObj.UnmarshalJSON defined") + } + } else if err = json.Unmarshal(b, v); err != nil { // simple model + return err + } + return nil + } + return errors.New("undefined response type") +} + +// Add a file to the multipart request +func addFile(w *multipart.Writer, fieldName, path string) error { + file, err := os.Open(filepath.Clean(path)) + if err != nil { + return err + } + err = file.Close() + if err != nil { + return err + } + + part, err := w.CreateFormFile(fieldName, filepath.Base(path)) + if err != nil { + return err + } + _, err = io.Copy(part, file) + + return err +} + +// Prevent trying to import "fmt" +func reportError(format string, a ...interface{}) error { + return fmt.Errorf(format, a...) +} + +// A wrapper for strict JSON decoding +func newStrictDecoder(data []byte) *json.Decoder { + dec := json.NewDecoder(bytes.NewBuffer(data)) + dec.DisallowUnknownFields() + return dec +} + +// Set request body from an interface{} +func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err error) { + if bodyBuf == nil { + bodyBuf = &bytes.Buffer{} + } + + if reader, ok := body.(io.Reader); ok { + _, err = bodyBuf.ReadFrom(reader) + } else if fp, ok := body.(*os.File); ok { + _, err = bodyBuf.ReadFrom(fp) + } else if b, ok := body.([]byte); ok { + _, err = bodyBuf.Write(b) + } else if s, ok := body.(string); ok { + _, err = bodyBuf.WriteString(s) + } else if s, ok := body.(*string); ok { + _, err = bodyBuf.WriteString(*s) + } else if JsonCheck.MatchString(contentType) { + err = json.NewEncoder(bodyBuf).Encode(body) + } else if XmlCheck.MatchString(contentType) { + var bs []byte + bs, err = xml.Marshal(body) + if err == nil { + bodyBuf.Write(bs) + } + } + + if err != nil { + return nil, err + } + + if bodyBuf.Len() == 0 { + err = fmt.Errorf("invalid body type %s\n", contentType) + return nil, err + } + return bodyBuf, nil +} + +// detectContentType method is used to figure out `Request.Body` content type for request header +func detectContentType(body interface{}) string { + contentType := "text/plain; charset=utf-8" + kind := reflect.TypeOf(body).Kind() + + switch kind { + case reflect.Struct, reflect.Map, reflect.Ptr: + contentType = "application/json; charset=utf-8" + case reflect.String: + contentType = "text/plain; charset=utf-8" + default: + if b, ok := body.([]byte); ok { + contentType = http.DetectContentType(b) + } else if kind == reflect.Slice { + contentType = "application/json; charset=utf-8" + } + } + + return contentType +} + +// Ripped from https://github.com/gregjones/httpcache/blob/master/httpcache.go +type cacheControl map[string]string + +func parseCacheControl(headers http.Header) cacheControl { + cc := cacheControl{} + ccHeader := headers.Get("Cache-Control") + for _, part := range strings.Split(ccHeader, ",") { + part = strings.Trim(part, " ") + if part == "" { + continue + } + if strings.ContainsRune(part, '=') { + keyval := strings.Split(part, "=") + cc[strings.Trim(keyval[0], " ")] = strings.Trim(keyval[1], ",") + } else { + cc[part] = "" + } + } + return cc +} + +// CacheExpires helper function to determine remaining time before repeating a request. +func CacheExpires(r *http.Response) time.Time { + // Figure out when the cache expires. + var expires time.Time + now, err := time.Parse(time.RFC1123, r.Header.Get("date")) + if err != nil { + return time.Now() + } + respCacheControl := parseCacheControl(r.Header) + + if maxAge, ok := respCacheControl["max-age"]; ok { + lifetime, err := time.ParseDuration(maxAge + "s") + if err != nil { + expires = now + } else { + expires = now.Add(lifetime) + } + } else { + expiresHeader := r.Header.Get("Expires") + if expiresHeader != "" { + expires, err = time.Parse(time.RFC1123, expiresHeader) + if err != nil { + expires = now + } + } + } + return expires +} + +func strlen(s string) int { + return utf8.RuneCountInString(s) +} + +// GenericOpenAPIError Provides access to the body, error and model on returned errors. +type GenericOpenAPIError struct { + body []byte + error string + model interface{} +} + +// Error returns non-empty string if there was an error. +func (e GenericOpenAPIError) Error() string { + return e.error +} + +// Body returns the raw bytes of the response +func (e GenericOpenAPIError) Body() []byte { + return e.body +} + +// Model returns the unpacked model of the error +func (e GenericOpenAPIError) Model() interface{} { + return e.model +} + +// format error message using title and detail when model implements rfc7807 +func formatErrorMessage(status string, v interface{}) string { + str := "" + metaValue := reflect.ValueOf(v).Elem() + + if metaValue.Kind() == reflect.Struct { + field := metaValue.FieldByName("Title") + if field != (reflect.Value{}) { + str = fmt.Sprintf("%s", field.Interface()) + } + + field = metaValue.FieldByName("Detail") + if field != (reflect.Value{}) { + str = fmt.Sprintf("%s (%s)", str, field.Interface()) + } + } + + return strings.TrimSpace(fmt.Sprintf("%s %s", status, str)) +} diff --git a/configuration.go b/configuration.go new file mode 100644 index 0000000..dfec7cd --- /dev/null +++ b/configuration.go @@ -0,0 +1,215 @@ +/* +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 ( + "context" + "fmt" + "net/http" + "strings" +) + +// contextKeys are used to identify the type of value in the context. +// Since these are string, it is possible to get a short description of the +// context key for logging and debugging using key.String(). + +type contextKey string + +func (c contextKey) String() string { + return "auth " + string(c) +} + +var ( + // ContextServerIndex uses a server configuration from the index. + ContextServerIndex = contextKey("serverIndex") + + // ContextOperationServerIndices uses a server configuration from the index mapping. + ContextOperationServerIndices = contextKey("serverOperationIndices") + + // ContextServerVariables overrides a server configuration variables. + ContextServerVariables = contextKey("serverVariables") + + // ContextOperationServerVariables overrides a server configuration variables using operation specific values. + ContextOperationServerVariables = contextKey("serverOperationVariables") +) + +// BasicAuth provides basic http authentication to a request passed via context using ContextBasicAuth +type BasicAuth struct { + UserName string `json:"userName,omitempty"` + Password string `json:"password,omitempty"` +} + +// APIKey provides API key based authentication to a request passed via context using ContextAPIKey +type APIKey struct { + Key string + Prefix string +} + +// ServerVariable stores the information about a server variable +type ServerVariable struct { + Description string + DefaultValue string + EnumValues []string +} + +// ServerConfiguration stores the information about a server +type ServerConfiguration struct { + URL string + Description string + Variables map[string]ServerVariable +} + +// ServerConfigurations stores multiple ServerConfiguration items +type ServerConfigurations []ServerConfiguration + +// Configuration stores the configuration of the API client +type Configuration struct { + Host string `json:"host,omitempty"` + Scheme string `json:"scheme,omitempty"` + DefaultHeader map[string]string `json:"defaultHeader,omitempty"` + UserAgent string `json:"userAgent,omitempty"` + Debug bool `json:"debug,omitempty"` + Servers ServerConfigurations + OperationServers map[string]ServerConfigurations + HTTPClient *http.Client +} + +// NewConfiguration returns a new Configuration object +func NewConfiguration() *Configuration { + cfg := &Configuration{ + DefaultHeader: make(map[string]string), + UserAgent: "OpenAPI-Generator/1.0.0/go", + Debug: false, + Servers: ServerConfigurations{ + { + URL: "https://api.monobank.ua", + Description: "No description provided", + }, + }, + OperationServers: map[string]ServerConfigurations{ + }, + } + return cfg +} + +// AddDefaultHeader adds a new HTTP header to the default header in the request +func (c *Configuration) AddDefaultHeader(key string, value string) { + c.DefaultHeader[key] = value +} + +// URL formats template on a index using given variables +func (sc ServerConfigurations) URL(index int, variables map[string]string) (string, error) { + if index < 0 || len(sc) <= index { + return "", fmt.Errorf("index %v out of range %v", index, len(sc)-1) + } + server := sc[index] + url := server.URL + + // go through variables and replace placeholders + for name, variable := range server.Variables { + if value, ok := variables[name]; ok { + found := bool(len(variable.EnumValues) == 0) + for _, enumValue := range variable.EnumValues { + if value == enumValue { + found = true + } + } + if !found { + return "", fmt.Errorf("the variable %s in the server URL has invalid value %v. Must be %v", name, value, variable.EnumValues) + } + url = strings.Replace(url, "{"+name+"}", value, -1) + } else { + url = strings.Replace(url, "{"+name+"}", variable.DefaultValue, -1) + } + } + return url, nil +} + +// ServerURL returns URL based on server settings +func (c *Configuration) ServerURL(index int, variables map[string]string) (string, error) { + return c.Servers.URL(index, variables) +} + +func getServerIndex(ctx context.Context) (int, error) { + si := ctx.Value(ContextServerIndex) + if si != nil { + if index, ok := si.(int); ok { + return index, nil + } + return 0, reportError("Invalid type %T should be int", si) + } + return 0, nil +} + +func getServerOperationIndex(ctx context.Context, endpoint string) (int, error) { + osi := ctx.Value(ContextOperationServerIndices) + if osi != nil { + if operationIndices, ok := osi.(map[string]int); !ok { + return 0, reportError("Invalid type %T should be map[string]int", osi) + } else { + index, ok := operationIndices[endpoint] + if ok { + return index, nil + } + } + } + return getServerIndex(ctx) +} + +func getServerVariables(ctx context.Context) (map[string]string, error) { + sv := ctx.Value(ContextServerVariables) + if sv != nil { + if variables, ok := sv.(map[string]string); ok { + return variables, nil + } + return nil, reportError("ctx value of ContextServerVariables has invalid type %T should be map[string]string", sv) + } + return nil, nil +} + +func getServerOperationVariables(ctx context.Context, endpoint string) (map[string]string, error) { + osv := ctx.Value(ContextOperationServerVariables) + if osv != nil { + if operationVariables, ok := osv.(map[string]map[string]string); !ok { + return nil, reportError("ctx value of ContextOperationServerVariables has invalid type %T should be map[string]map[string]string", osv) + } else { + variables, ok := operationVariables[endpoint] + if ok { + return variables, nil + } + } + } + return getServerVariables(ctx) +} + +// ServerURLWithContext returns a new server URL given an endpoint +func (c *Configuration) ServerURLWithContext(ctx context.Context, endpoint string) (string, error) { + sc, ok := c.OperationServers[endpoint] + if !ok { + sc = c.Servers + } + + if ctx == nil { + return sc.URL(0, nil) + } + + index, err := getServerOperationIndex(ctx, endpoint) + if err != nil { + return "", err + } + + variables, err := getServerOperationVariables(ctx, endpoint) + if err != nil { + return "", err + } + + return sc.URL(index, variables) +} diff --git a/docs/CurrencyInfoInner.md b/docs/CurrencyInfoInner.md new file mode 100644 index 0000000..1091e19 --- /dev/null +++ b/docs/CurrencyInfoInner.md @@ -0,0 +1,186 @@ +# CurrencyInfoInner + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**CurrencyCodeA** | Pointer to **float32** | Код валюти рахунку відповідно ISO 4217 | [optional] +**CurrencyCodeB** | Pointer to **float32** | Код валюти рахунку відповідно ISO 4217 | [optional] +**Date** | Pointer to **float32** | Час курсу в секундах в форматі Unix time | [optional] +**RateSell** | Pointer to **float32** | | [optional] +**RateBuy** | Pointer to **float32** | | [optional] +**RateCross** | Pointer to **float32** | | [optional] + +## Methods + +### NewCurrencyInfoInner + +`func NewCurrencyInfoInner() *CurrencyInfoInner` + +NewCurrencyInfoInner instantiates a new CurrencyInfoInner object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewCurrencyInfoInnerWithDefaults + +`func NewCurrencyInfoInnerWithDefaults() *CurrencyInfoInner` + +NewCurrencyInfoInnerWithDefaults instantiates a new CurrencyInfoInner object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetCurrencyCodeA + +`func (o *CurrencyInfoInner) GetCurrencyCodeA() float32` + +GetCurrencyCodeA returns the CurrencyCodeA field if non-nil, zero value otherwise. + +### GetCurrencyCodeAOk + +`func (o *CurrencyInfoInner) GetCurrencyCodeAOk() (*float32, bool)` + +GetCurrencyCodeAOk returns a tuple with the CurrencyCodeA field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCurrencyCodeA + +`func (o *CurrencyInfoInner) SetCurrencyCodeA(v float32)` + +SetCurrencyCodeA sets CurrencyCodeA field to given value. + +### HasCurrencyCodeA + +`func (o *CurrencyInfoInner) HasCurrencyCodeA() bool` + +HasCurrencyCodeA returns a boolean if a field has been set. + +### GetCurrencyCodeB + +`func (o *CurrencyInfoInner) GetCurrencyCodeB() float32` + +GetCurrencyCodeB returns the CurrencyCodeB field if non-nil, zero value otherwise. + +### GetCurrencyCodeBOk + +`func (o *CurrencyInfoInner) GetCurrencyCodeBOk() (*float32, bool)` + +GetCurrencyCodeBOk returns a tuple with the CurrencyCodeB field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCurrencyCodeB + +`func (o *CurrencyInfoInner) SetCurrencyCodeB(v float32)` + +SetCurrencyCodeB sets CurrencyCodeB field to given value. + +### HasCurrencyCodeB + +`func (o *CurrencyInfoInner) HasCurrencyCodeB() bool` + +HasCurrencyCodeB returns a boolean if a field has been set. + +### GetDate + +`func (o *CurrencyInfoInner) GetDate() float32` + +GetDate returns the Date field if non-nil, zero value otherwise. + +### GetDateOk + +`func (o *CurrencyInfoInner) GetDateOk() (*float32, bool)` + +GetDateOk returns a tuple with the Date field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDate + +`func (o *CurrencyInfoInner) SetDate(v float32)` + +SetDate sets Date field to given value. + +### HasDate + +`func (o *CurrencyInfoInner) HasDate() bool` + +HasDate returns a boolean if a field has been set. + +### GetRateSell + +`func (o *CurrencyInfoInner) GetRateSell() float32` + +GetRateSell returns the RateSell field if non-nil, zero value otherwise. + +### GetRateSellOk + +`func (o *CurrencyInfoInner) GetRateSellOk() (*float32, bool)` + +GetRateSellOk returns a tuple with the RateSell field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRateSell + +`func (o *CurrencyInfoInner) SetRateSell(v float32)` + +SetRateSell sets RateSell field to given value. + +### HasRateSell + +`func (o *CurrencyInfoInner) HasRateSell() bool` + +HasRateSell returns a boolean if a field has been set. + +### GetRateBuy + +`func (o *CurrencyInfoInner) GetRateBuy() float32` + +GetRateBuy returns the RateBuy field if non-nil, zero value otherwise. + +### GetRateBuyOk + +`func (o *CurrencyInfoInner) GetRateBuyOk() (*float32, bool)` + +GetRateBuyOk returns a tuple with the RateBuy field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRateBuy + +`func (o *CurrencyInfoInner) SetRateBuy(v float32)` + +SetRateBuy sets RateBuy field to given value. + +### HasRateBuy + +`func (o *CurrencyInfoInner) HasRateBuy() bool` + +HasRateBuy returns a boolean if a field has been set. + +### GetRateCross + +`func (o *CurrencyInfoInner) GetRateCross() float32` + +GetRateCross returns the RateCross field if non-nil, zero value otherwise. + +### GetRateCrossOk + +`func (o *CurrencyInfoInner) GetRateCrossOk() (*float32, bool)` + +GetRateCrossOk returns a tuple with the RateCross field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetRateCross + +`func (o *CurrencyInfoInner) SetRateCross(v float32)` + +SetRateCross sets RateCross field to given value. + +### HasRateCross + +`func (o *CurrencyInfoInner) HasRateCross() bool` + +HasRateCross returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/DefaultApi.md b/docs/DefaultApi.md new file mode 100644 index 0000000..3131b2c --- /dev/null +++ b/docs/DefaultApi.md @@ -0,0 +1,283 @@ +# \DefaultApi + +All URIs are relative to *https://api.monobank.ua* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**BankCurrencyGet**](DefaultApi.md#BankCurrencyGet) | **Get** /bank/currency | Отримання курсів валют +[**PersonalClientInfoGet**](DefaultApi.md#PersonalClientInfoGet) | **Get** /personal/client-info | Інформація про клієнта +[**PersonalStatementAccountFromToGet**](DefaultApi.md#PersonalStatementAccountFromToGet) | **Get** /personal/statement/{account}/{from}/{to} | Виписка +[**PersonalWebhookPost**](DefaultApi.md#PersonalWebhookPost) | **Post** /personal/webhook | Встановлення WebHook + + + +## BankCurrencyGet + +> []CurrencyInfoInner BankCurrencyGet(ctx).Execute() + +Отримання курсів валют + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "gitea.stuzer.link/stuzer05/go-monobank" +) + +func main() { + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.DefaultApi.BankCurrencyGet(context.Background()).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `DefaultApi.BankCurrencyGet``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `BankCurrencyGet`: []CurrencyInfoInner + fmt.Fprintf(os.Stdout, "Response from `DefaultApi.BankCurrencyGet`: %v\n", resp) +} +``` + +### Path Parameters + +This endpoint does not need any parameter. + +### Other Parameters + +Other parameters are passed through a pointer to a apiBankCurrencyGetRequest struct via the builder pattern + + +### Return type + +[**[]CurrencyInfoInner**](CurrencyInfoInner.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## PersonalClientInfoGet + +> UserInfo PersonalClientInfoGet(ctx).XToken(xToken).Execute() + +Інформація про клієнта + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "gitea.stuzer.link/stuzer05/go-monobank" +) + +func main() { + xToken := "u3AulkpZFI1lIuGsik6vuPsVWqN7GoWs6o_MO2sdf301" // string | Token для особистого доступу до API + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.DefaultApi.PersonalClientInfoGet(context.Background()).XToken(xToken).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `DefaultApi.PersonalClientInfoGet``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `PersonalClientInfoGet`: UserInfo + fmt.Fprintf(os.Stdout, "Response from `DefaultApi.PersonalClientInfoGet`: %v\n", resp) +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiPersonalClientInfoGetRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **xToken** | **string** | Token для особистого доступу до API | + +### Return type + +[**UserInfo**](UserInfo.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## PersonalStatementAccountFromToGet + +> []StatementItemsInner PersonalStatementAccountFromToGet(ctx, account, from, to).XToken(xToken).Execute() + +Виписка + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "gitea.stuzer.link/stuzer05/go-monobank" +) + +func main() { + xToken := "xToken_example" // string | Token для особистого доступу до API + account := "account_example" // string | Ідентифікатор рахунку або банки з переліків Statement list або 0 - дефолтний рахунок. + from := "1546304461" // string | Початок часу виписки. + to := "1546306461" // string | Останній час виписки (якщо відсутній, буде використовуватись поточний час). (optional) + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + resp, r, err := apiClient.DefaultApi.PersonalStatementAccountFromToGet(context.Background(), account, from, to).XToken(xToken).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `DefaultApi.PersonalStatementAccountFromToGet``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + // response from `PersonalStatementAccountFromToGet`: []StatementItemsInner + fmt.Fprintf(os.Stdout, "Response from `DefaultApi.PersonalStatementAccountFromToGet`: %v\n", resp) +} +``` + +### Path Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- +**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. +**account** | **string** | Ідентифікатор рахунку або банки з переліків Statement list або 0 - дефолтний рахунок. | +**from** | **string** | Початок часу виписки. | +**to** | **string** | Останній час виписки (якщо відсутній, буде використовуватись поточний час). | + +### Other Parameters + +Other parameters are passed through a pointer to a apiPersonalStatementAccountFromToGetRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **xToken** | **string** | Token для особистого доступу до API | + + + + +### Return type + +[**[]StatementItemsInner**](StatementItemsInner.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + +## PersonalWebhookPost + +> PersonalWebhookPost(ctx).XToken(xToken).SetWebHook(setWebHook).Execute() + +Встановлення WebHook + + + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "gitea.stuzer.link/stuzer05/go-monobank" +) + +func main() { + xToken := "xToken_example" // string | Token для особистого доступу до API + setWebHook := *openapiclient.NewSetWebHook() // SetWebHook | + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + r, err := apiClient.DefaultApi.PersonalWebhookPost(context.Background()).XToken(xToken).SetWebHook(setWebHook).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `DefaultApi.PersonalWebhookPost``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiPersonalWebhookPostRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **xToken** | **string** | Token для особистого доступу до API | + **setWebHook** | [**SetWebHook**](SetWebHook.md) | | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + diff --git a/docs/Error.md b/docs/Error.md new file mode 100644 index 0000000..c612ffc --- /dev/null +++ b/docs/Error.md @@ -0,0 +1,56 @@ +# Error + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ErrorDescription** | Pointer to **string** | Текст помилки для кінцевого користувача, для автоматичного оброблення потрібно аналізувати HTTP код відповіді (200, 404, 429 та інші) | [optional] + +## Methods + +### NewError + +`func NewError() *Error` + +NewError instantiates a new Error object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewErrorWithDefaults + +`func NewErrorWithDefaults() *Error` + +NewErrorWithDefaults instantiates a new Error object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetErrorDescription + +`func (o *Error) GetErrorDescription() string` + +GetErrorDescription returns the ErrorDescription field if non-nil, zero value otherwise. + +### GetErrorDescriptionOk + +`func (o *Error) GetErrorDescriptionOk() (*string, bool)` + +GetErrorDescriptionOk returns a tuple with the ErrorDescription field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetErrorDescription + +`func (o *Error) SetErrorDescription(v string)` + +SetErrorDescription sets ErrorDescription field to given value. + +### HasErrorDescription + +`func (o *Error) HasErrorDescription() bool` + +HasErrorDescription returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/SetWebHook.md b/docs/SetWebHook.md new file mode 100644 index 0000000..cceba92 --- /dev/null +++ b/docs/SetWebHook.md @@ -0,0 +1,56 @@ +# SetWebHook + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**WebHookUrl** | Pointer to **string** | | [optional] + +## Methods + +### NewSetWebHook + +`func NewSetWebHook() *SetWebHook` + +NewSetWebHook instantiates a new SetWebHook object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewSetWebHookWithDefaults + +`func NewSetWebHookWithDefaults() *SetWebHook` + +NewSetWebHookWithDefaults instantiates a new SetWebHook object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetWebHookUrl + +`func (o *SetWebHook) GetWebHookUrl() string` + +GetWebHookUrl returns the WebHookUrl field if non-nil, zero value otherwise. + +### GetWebHookUrlOk + +`func (o *SetWebHook) GetWebHookUrlOk() (*string, bool)` + +GetWebHookUrlOk returns a tuple with the WebHookUrl field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetWebHookUrl + +`func (o *SetWebHook) SetWebHookUrl(v string)` + +SetWebHookUrl sets WebHookUrl field to given value. + +### HasWebHookUrl + +`func (o *SetWebHook) HasWebHookUrl() bool` + +HasWebHookUrl returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/StatementItemsInner.md b/docs/StatementItemsInner.md new file mode 100644 index 0000000..8a13cda --- /dev/null +++ b/docs/StatementItemsInner.md @@ -0,0 +1,498 @@ +# StatementItemsInner + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | Pointer to **string** | Унікальний id транзакції | [optional] +**Time** | Pointer to **float32** | Час транзакції в секундах в форматі Unix time | [optional] +**Description** | Pointer to **string** | Опис транзакцій | [optional] +**Mcc** | Pointer to **float32** | Код типу транзакції (Merchant Category Code), відповідно ISO 18245 | [optional] +**OriginalMcc** | Pointer to **float32** | Оригінальний код типу транзакції (Merchant Category Code), відповідно ISO 18245 | [optional] +**Hold** | Pointer to **bool** | Статус блокування суми (детальніше у [wiki](https://en.wikipedia.org/wiki/Authorization_hold)) | [optional] +**Amount** | Pointer to **float32** | Сума у валюті рахунку в мінімальних одиницях валюти (копійках, центах) | [optional] +**OperationAmount** | Pointer to **float32** | Сума у валюті транзакції в мінімальних одиницях валюти (копійках, центах) | [optional] +**CurrencyCode** | Pointer to **float32** | Код валюти рахунку відповідно ISO 4217 | [optional] +**CommissionRate** | Pointer to **float32** | Розмір комісії в мінімальних одиницях валюти (копійках, центах) | [optional] +**CashbackAmount** | Pointer to **float32** | Розмір кешбеку в мінімальних одиницях валюти (копійках, центах) | [optional] +**Balance** | Pointer to **float32** | Баланс рахунку в мінімальних одиницях валюти (копійках, центах) | [optional] +**Comment** | Pointer to **string** | Коментар до переказу, уведений користувачем. Якщо не вказаний, поле буде відсутнім | [optional] +**ReceiptId** | Pointer to **string** | Номер квитанції для check.gov.ua. Поле може бути відсутнім | [optional] +**InvoiceId** | Pointer to **string** | Номер квитанції ФОПа, приходить у випадку якщо це операція із зарахуванням коштів | [optional] +**CounterEdrpou** | Pointer to **string** | ЄДРПОУ контрагента, присутній лише для елементів виписки рахунків ФОП | [optional] +**CounterIban** | Pointer to **string** | IBAN контрагента, присутній лише для елементів виписки рахунків ФОП | [optional] +**CounterName** | Pointer to **string** | Найменування контрагента | [optional] + +## Methods + +### NewStatementItemsInner + +`func NewStatementItemsInner() *StatementItemsInner` + +NewStatementItemsInner instantiates a new StatementItemsInner object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewStatementItemsInnerWithDefaults + +`func NewStatementItemsInnerWithDefaults() *StatementItemsInner` + +NewStatementItemsInnerWithDefaults instantiates a new StatementItemsInner object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetId + +`func (o *StatementItemsInner) GetId() string` + +GetId returns the Id field if non-nil, zero value otherwise. + +### GetIdOk + +`func (o *StatementItemsInner) GetIdOk() (*string, bool)` + +GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetId + +`func (o *StatementItemsInner) SetId(v string)` + +SetId sets Id field to given value. + +### HasId + +`func (o *StatementItemsInner) HasId() bool` + +HasId returns a boolean if a field has been set. + +### GetTime + +`func (o *StatementItemsInner) GetTime() float32` + +GetTime returns the Time field if non-nil, zero value otherwise. + +### GetTimeOk + +`func (o *StatementItemsInner) GetTimeOk() (*float32, bool)` + +GetTimeOk returns a tuple with the Time field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetTime + +`func (o *StatementItemsInner) SetTime(v float32)` + +SetTime sets Time field to given value. + +### HasTime + +`func (o *StatementItemsInner) HasTime() bool` + +HasTime returns a boolean if a field has been set. + +### GetDescription + +`func (o *StatementItemsInner) GetDescription() string` + +GetDescription returns the Description field if non-nil, zero value otherwise. + +### GetDescriptionOk + +`func (o *StatementItemsInner) GetDescriptionOk() (*string, bool)` + +GetDescriptionOk returns a tuple with the Description field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDescription + +`func (o *StatementItemsInner) SetDescription(v string)` + +SetDescription sets Description field to given value. + +### HasDescription + +`func (o *StatementItemsInner) HasDescription() bool` + +HasDescription returns a boolean if a field has been set. + +### GetMcc + +`func (o *StatementItemsInner) GetMcc() float32` + +GetMcc returns the Mcc field if non-nil, zero value otherwise. + +### GetMccOk + +`func (o *StatementItemsInner) GetMccOk() (*float32, bool)` + +GetMccOk returns a tuple with the Mcc field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMcc + +`func (o *StatementItemsInner) SetMcc(v float32)` + +SetMcc sets Mcc field to given value. + +### HasMcc + +`func (o *StatementItemsInner) HasMcc() bool` + +HasMcc returns a boolean if a field has been set. + +### GetOriginalMcc + +`func (o *StatementItemsInner) GetOriginalMcc() float32` + +GetOriginalMcc returns the OriginalMcc field if non-nil, zero value otherwise. + +### GetOriginalMccOk + +`func (o *StatementItemsInner) GetOriginalMccOk() (*float32, bool)` + +GetOriginalMccOk returns a tuple with the OriginalMcc field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetOriginalMcc + +`func (o *StatementItemsInner) SetOriginalMcc(v float32)` + +SetOriginalMcc sets OriginalMcc field to given value. + +### HasOriginalMcc + +`func (o *StatementItemsInner) HasOriginalMcc() bool` + +HasOriginalMcc returns a boolean if a field has been set. + +### GetHold + +`func (o *StatementItemsInner) GetHold() bool` + +GetHold returns the Hold field if non-nil, zero value otherwise. + +### GetHoldOk + +`func (o *StatementItemsInner) GetHoldOk() (*bool, bool)` + +GetHoldOk returns a tuple with the Hold field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetHold + +`func (o *StatementItemsInner) SetHold(v bool)` + +SetHold sets Hold field to given value. + +### HasHold + +`func (o *StatementItemsInner) HasHold() bool` + +HasHold returns a boolean if a field has been set. + +### GetAmount + +`func (o *StatementItemsInner) GetAmount() float32` + +GetAmount returns the Amount field if non-nil, zero value otherwise. + +### GetAmountOk + +`func (o *StatementItemsInner) GetAmountOk() (*float32, bool)` + +GetAmountOk returns a tuple with the Amount field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetAmount + +`func (o *StatementItemsInner) SetAmount(v float32)` + +SetAmount sets Amount field to given value. + +### HasAmount + +`func (o *StatementItemsInner) HasAmount() bool` + +HasAmount returns a boolean if a field has been set. + +### GetOperationAmount + +`func (o *StatementItemsInner) GetOperationAmount() float32` + +GetOperationAmount returns the OperationAmount field if non-nil, zero value otherwise. + +### GetOperationAmountOk + +`func (o *StatementItemsInner) GetOperationAmountOk() (*float32, bool)` + +GetOperationAmountOk returns a tuple with the OperationAmount field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetOperationAmount + +`func (o *StatementItemsInner) SetOperationAmount(v float32)` + +SetOperationAmount sets OperationAmount field to given value. + +### HasOperationAmount + +`func (o *StatementItemsInner) HasOperationAmount() bool` + +HasOperationAmount returns a boolean if a field has been set. + +### GetCurrencyCode + +`func (o *StatementItemsInner) GetCurrencyCode() float32` + +GetCurrencyCode returns the CurrencyCode field if non-nil, zero value otherwise. + +### GetCurrencyCodeOk + +`func (o *StatementItemsInner) GetCurrencyCodeOk() (*float32, bool)` + +GetCurrencyCodeOk returns a tuple with the CurrencyCode field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCurrencyCode + +`func (o *StatementItemsInner) SetCurrencyCode(v float32)` + +SetCurrencyCode sets CurrencyCode field to given value. + +### HasCurrencyCode + +`func (o *StatementItemsInner) HasCurrencyCode() bool` + +HasCurrencyCode returns a boolean if a field has been set. + +### GetCommissionRate + +`func (o *StatementItemsInner) GetCommissionRate() float32` + +GetCommissionRate returns the CommissionRate field if non-nil, zero value otherwise. + +### GetCommissionRateOk + +`func (o *StatementItemsInner) GetCommissionRateOk() (*float32, bool)` + +GetCommissionRateOk returns a tuple with the CommissionRate field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCommissionRate + +`func (o *StatementItemsInner) SetCommissionRate(v float32)` + +SetCommissionRate sets CommissionRate field to given value. + +### HasCommissionRate + +`func (o *StatementItemsInner) HasCommissionRate() bool` + +HasCommissionRate returns a boolean if a field has been set. + +### GetCashbackAmount + +`func (o *StatementItemsInner) GetCashbackAmount() float32` + +GetCashbackAmount returns the CashbackAmount field if non-nil, zero value otherwise. + +### GetCashbackAmountOk + +`func (o *StatementItemsInner) GetCashbackAmountOk() (*float32, bool)` + +GetCashbackAmountOk returns a tuple with the CashbackAmount field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCashbackAmount + +`func (o *StatementItemsInner) SetCashbackAmount(v float32)` + +SetCashbackAmount sets CashbackAmount field to given value. + +### HasCashbackAmount + +`func (o *StatementItemsInner) HasCashbackAmount() bool` + +HasCashbackAmount returns a boolean if a field has been set. + +### GetBalance + +`func (o *StatementItemsInner) GetBalance() float32` + +GetBalance returns the Balance field if non-nil, zero value otherwise. + +### GetBalanceOk + +`func (o *StatementItemsInner) GetBalanceOk() (*float32, bool)` + +GetBalanceOk returns a tuple with the Balance field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetBalance + +`func (o *StatementItemsInner) SetBalance(v float32)` + +SetBalance sets Balance field to given value. + +### HasBalance + +`func (o *StatementItemsInner) HasBalance() bool` + +HasBalance returns a boolean if a field has been set. + +### GetComment + +`func (o *StatementItemsInner) GetComment() string` + +GetComment returns the Comment field if non-nil, zero value otherwise. + +### GetCommentOk + +`func (o *StatementItemsInner) GetCommentOk() (*string, bool)` + +GetCommentOk returns a tuple with the Comment field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetComment + +`func (o *StatementItemsInner) SetComment(v string)` + +SetComment sets Comment field to given value. + +### HasComment + +`func (o *StatementItemsInner) HasComment() bool` + +HasComment returns a boolean if a field has been set. + +### GetReceiptId + +`func (o *StatementItemsInner) GetReceiptId() string` + +GetReceiptId returns the ReceiptId field if non-nil, zero value otherwise. + +### GetReceiptIdOk + +`func (o *StatementItemsInner) GetReceiptIdOk() (*string, bool)` + +GetReceiptIdOk returns a tuple with the ReceiptId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReceiptId + +`func (o *StatementItemsInner) SetReceiptId(v string)` + +SetReceiptId sets ReceiptId field to given value. + +### HasReceiptId + +`func (o *StatementItemsInner) HasReceiptId() bool` + +HasReceiptId returns a boolean if a field has been set. + +### GetInvoiceId + +`func (o *StatementItemsInner) GetInvoiceId() string` + +GetInvoiceId returns the InvoiceId field if non-nil, zero value otherwise. + +### GetInvoiceIdOk + +`func (o *StatementItemsInner) GetInvoiceIdOk() (*string, bool)` + +GetInvoiceIdOk returns a tuple with the InvoiceId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetInvoiceId + +`func (o *StatementItemsInner) SetInvoiceId(v string)` + +SetInvoiceId sets InvoiceId field to given value. + +### HasInvoiceId + +`func (o *StatementItemsInner) HasInvoiceId() bool` + +HasInvoiceId returns a boolean if a field has been set. + +### GetCounterEdrpou + +`func (o *StatementItemsInner) GetCounterEdrpou() string` + +GetCounterEdrpou returns the CounterEdrpou field if non-nil, zero value otherwise. + +### GetCounterEdrpouOk + +`func (o *StatementItemsInner) GetCounterEdrpouOk() (*string, bool)` + +GetCounterEdrpouOk returns a tuple with the CounterEdrpou field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCounterEdrpou + +`func (o *StatementItemsInner) SetCounterEdrpou(v string)` + +SetCounterEdrpou sets CounterEdrpou field to given value. + +### HasCounterEdrpou + +`func (o *StatementItemsInner) HasCounterEdrpou() bool` + +HasCounterEdrpou returns a boolean if a field has been set. + +### GetCounterIban + +`func (o *StatementItemsInner) GetCounterIban() string` + +GetCounterIban returns the CounterIban field if non-nil, zero value otherwise. + +### GetCounterIbanOk + +`func (o *StatementItemsInner) GetCounterIbanOk() (*string, bool)` + +GetCounterIbanOk returns a tuple with the CounterIban field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCounterIban + +`func (o *StatementItemsInner) SetCounterIban(v string)` + +SetCounterIban sets CounterIban field to given value. + +### HasCounterIban + +`func (o *StatementItemsInner) HasCounterIban() bool` + +HasCounterIban returns a boolean if a field has been set. + +### GetCounterName + +`func (o *StatementItemsInner) GetCounterName() string` + +GetCounterName returns the CounterName field if non-nil, zero value otherwise. + +### GetCounterNameOk + +`func (o *StatementItemsInner) GetCounterNameOk() (*string, bool)` + +GetCounterNameOk returns a tuple with the CounterName field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCounterName + +`func (o *StatementItemsInner) SetCounterName(v string)` + +SetCounterName sets CounterName field to given value. + +### HasCounterName + +`func (o *StatementItemsInner) HasCounterName() bool` + +HasCounterName returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/UserInfo.md b/docs/UserInfo.md new file mode 100644 index 0000000..cf31286 --- /dev/null +++ b/docs/UserInfo.md @@ -0,0 +1,186 @@ +# UserInfo + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ClientId** | Pointer to **string** | Ідентифікатор клієнта (збігається з id для send.monobank.ua) | [optional] +**Name** | Pointer to **string** | Ім'я клієнта | [optional] +**WebHookUrl** | Pointer to **string** | URL для надсиляння подій по зміні балансу рахунку | [optional] +**Permissions** | Pointer to **string** | Перелік прав, які які надає сервіс (1 літера на 1 permission). | [optional] +**Accounts** | Pointer to [**[]UserInfoAccountsInner**](UserInfoAccountsInner.md) | Перелік доступних рахунків | [optional] +**Jars** | Pointer to [**[]UserInfoJarsInner**](UserInfoJarsInner.md) | Перелік банок | [optional] + +## Methods + +### NewUserInfo + +`func NewUserInfo() *UserInfo` + +NewUserInfo instantiates a new UserInfo object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewUserInfoWithDefaults + +`func NewUserInfoWithDefaults() *UserInfo` + +NewUserInfoWithDefaults instantiates a new UserInfo object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetClientId + +`func (o *UserInfo) GetClientId() string` + +GetClientId returns the ClientId field if non-nil, zero value otherwise. + +### GetClientIdOk + +`func (o *UserInfo) GetClientIdOk() (*string, bool)` + +GetClientIdOk returns a tuple with the ClientId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetClientId + +`func (o *UserInfo) SetClientId(v string)` + +SetClientId sets ClientId field to given value. + +### HasClientId + +`func (o *UserInfo) HasClientId() bool` + +HasClientId returns a boolean if a field has been set. + +### GetName + +`func (o *UserInfo) GetName() string` + +GetName returns the Name field if non-nil, zero value otherwise. + +### GetNameOk + +`func (o *UserInfo) GetNameOk() (*string, bool)` + +GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetName + +`func (o *UserInfo) SetName(v string)` + +SetName sets Name field to given value. + +### HasName + +`func (o *UserInfo) HasName() bool` + +HasName returns a boolean if a field has been set. + +### GetWebHookUrl + +`func (o *UserInfo) GetWebHookUrl() string` + +GetWebHookUrl returns the WebHookUrl field if non-nil, zero value otherwise. + +### GetWebHookUrlOk + +`func (o *UserInfo) GetWebHookUrlOk() (*string, bool)` + +GetWebHookUrlOk returns a tuple with the WebHookUrl field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetWebHookUrl + +`func (o *UserInfo) SetWebHookUrl(v string)` + +SetWebHookUrl sets WebHookUrl field to given value. + +### HasWebHookUrl + +`func (o *UserInfo) HasWebHookUrl() bool` + +HasWebHookUrl returns a boolean if a field has been set. + +### GetPermissions + +`func (o *UserInfo) GetPermissions() string` + +GetPermissions returns the Permissions field if non-nil, zero value otherwise. + +### GetPermissionsOk + +`func (o *UserInfo) GetPermissionsOk() (*string, bool)` + +GetPermissionsOk returns a tuple with the Permissions field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetPermissions + +`func (o *UserInfo) SetPermissions(v string)` + +SetPermissions sets Permissions field to given value. + +### HasPermissions + +`func (o *UserInfo) HasPermissions() bool` + +HasPermissions returns a boolean if a field has been set. + +### GetAccounts + +`func (o *UserInfo) GetAccounts() []UserInfoAccountsInner` + +GetAccounts returns the Accounts field if non-nil, zero value otherwise. + +### GetAccountsOk + +`func (o *UserInfo) GetAccountsOk() (*[]UserInfoAccountsInner, bool)` + +GetAccountsOk returns a tuple with the Accounts field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetAccounts + +`func (o *UserInfo) SetAccounts(v []UserInfoAccountsInner)` + +SetAccounts sets Accounts field to given value. + +### HasAccounts + +`func (o *UserInfo) HasAccounts() bool` + +HasAccounts returns a boolean if a field has been set. + +### GetJars + +`func (o *UserInfo) GetJars() []UserInfoJarsInner` + +GetJars returns the Jars field if non-nil, zero value otherwise. + +### GetJarsOk + +`func (o *UserInfo) GetJarsOk() (*[]UserInfoJarsInner, bool)` + +GetJarsOk returns a tuple with the Jars field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetJars + +`func (o *UserInfo) SetJars(v []UserInfoJarsInner)` + +SetJars sets Jars field to given value. + +### HasJars + +`func (o *UserInfo) HasJars() bool` + +HasJars returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/UserInfoAccountsInner.md b/docs/UserInfoAccountsInner.md new file mode 100644 index 0000000..059a9f7 --- /dev/null +++ b/docs/UserInfoAccountsInner.md @@ -0,0 +1,264 @@ +# UserInfoAccountsInner + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | Pointer to **string** | Ідентифікатор рахунку | [optional] +**SendId** | Pointer to **string** | Ідентифікатор для сервісу https://send.monobank.ua/{sendId} | [optional] +**Balance** | Pointer to **float32** | Баланс рахунку в мінімальних одиницях валюти (копійках, центах) | [optional] +**CreditLimit** | Pointer to **float32** | Кредитний ліміт | [optional] +**Type** | Pointer to **string** | Тип рахунку | [optional] +**CurrencyCode** | Pointer to **float32** | Код валюти рахунку відповідно ISO 4217 | [optional] +**CashbackType** | Pointer to **string** | Тип кешбеку який нараховується на рахунок | [optional] +**MaskedPan** | Pointer to [**Array**](array.md) | Перелік замаскованних номерів карт (більше одного може бути у преміальних карт) | [optional] +**Iban** | Pointer to **string** | IBAN рахунку | [optional] + +## Methods + +### NewUserInfoAccountsInner + +`func NewUserInfoAccountsInner() *UserInfoAccountsInner` + +NewUserInfoAccountsInner instantiates a new UserInfoAccountsInner object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewUserInfoAccountsInnerWithDefaults + +`func NewUserInfoAccountsInnerWithDefaults() *UserInfoAccountsInner` + +NewUserInfoAccountsInnerWithDefaults instantiates a new UserInfoAccountsInner object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetId + +`func (o *UserInfoAccountsInner) GetId() string` + +GetId returns the Id field if non-nil, zero value otherwise. + +### GetIdOk + +`func (o *UserInfoAccountsInner) GetIdOk() (*string, bool)` + +GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetId + +`func (o *UserInfoAccountsInner) SetId(v string)` + +SetId sets Id field to given value. + +### HasId + +`func (o *UserInfoAccountsInner) HasId() bool` + +HasId returns a boolean if a field has been set. + +### GetSendId + +`func (o *UserInfoAccountsInner) GetSendId() string` + +GetSendId returns the SendId field if non-nil, zero value otherwise. + +### GetSendIdOk + +`func (o *UserInfoAccountsInner) GetSendIdOk() (*string, bool)` + +GetSendIdOk returns a tuple with the SendId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetSendId + +`func (o *UserInfoAccountsInner) SetSendId(v string)` + +SetSendId sets SendId field to given value. + +### HasSendId + +`func (o *UserInfoAccountsInner) HasSendId() bool` + +HasSendId returns a boolean if a field has been set. + +### GetBalance + +`func (o *UserInfoAccountsInner) GetBalance() float32` + +GetBalance returns the Balance field if non-nil, zero value otherwise. + +### GetBalanceOk + +`func (o *UserInfoAccountsInner) GetBalanceOk() (*float32, bool)` + +GetBalanceOk returns a tuple with the Balance field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetBalance + +`func (o *UserInfoAccountsInner) SetBalance(v float32)` + +SetBalance sets Balance field to given value. + +### HasBalance + +`func (o *UserInfoAccountsInner) HasBalance() bool` + +HasBalance returns a boolean if a field has been set. + +### GetCreditLimit + +`func (o *UserInfoAccountsInner) GetCreditLimit() float32` + +GetCreditLimit returns the CreditLimit field if non-nil, zero value otherwise. + +### GetCreditLimitOk + +`func (o *UserInfoAccountsInner) GetCreditLimitOk() (*float32, bool)` + +GetCreditLimitOk returns a tuple with the CreditLimit field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCreditLimit + +`func (o *UserInfoAccountsInner) SetCreditLimit(v float32)` + +SetCreditLimit sets CreditLimit field to given value. + +### HasCreditLimit + +`func (o *UserInfoAccountsInner) HasCreditLimit() bool` + +HasCreditLimit returns a boolean if a field has been set. + +### GetType + +`func (o *UserInfoAccountsInner) GetType() string` + +GetType returns the Type field if non-nil, zero value otherwise. + +### GetTypeOk + +`func (o *UserInfoAccountsInner) GetTypeOk() (*string, bool)` + +GetTypeOk returns a tuple with the Type field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetType + +`func (o *UserInfoAccountsInner) SetType(v string)` + +SetType sets Type field to given value. + +### HasType + +`func (o *UserInfoAccountsInner) HasType() bool` + +HasType returns a boolean if a field has been set. + +### GetCurrencyCode + +`func (o *UserInfoAccountsInner) GetCurrencyCode() float32` + +GetCurrencyCode returns the CurrencyCode field if non-nil, zero value otherwise. + +### GetCurrencyCodeOk + +`func (o *UserInfoAccountsInner) GetCurrencyCodeOk() (*float32, bool)` + +GetCurrencyCodeOk returns a tuple with the CurrencyCode field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCurrencyCode + +`func (o *UserInfoAccountsInner) SetCurrencyCode(v float32)` + +SetCurrencyCode sets CurrencyCode field to given value. + +### HasCurrencyCode + +`func (o *UserInfoAccountsInner) HasCurrencyCode() bool` + +HasCurrencyCode returns a boolean if a field has been set. + +### GetCashbackType + +`func (o *UserInfoAccountsInner) GetCashbackType() string` + +GetCashbackType returns the CashbackType field if non-nil, zero value otherwise. + +### GetCashbackTypeOk + +`func (o *UserInfoAccountsInner) GetCashbackTypeOk() (*string, bool)` + +GetCashbackTypeOk returns a tuple with the CashbackType field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCashbackType + +`func (o *UserInfoAccountsInner) SetCashbackType(v string)` + +SetCashbackType sets CashbackType field to given value. + +### HasCashbackType + +`func (o *UserInfoAccountsInner) HasCashbackType() bool` + +HasCashbackType returns a boolean if a field has been set. + +### GetMaskedPan + +`func (o *UserInfoAccountsInner) GetMaskedPan() Array` + +GetMaskedPan returns the MaskedPan field if non-nil, zero value otherwise. + +### GetMaskedPanOk + +`func (o *UserInfoAccountsInner) GetMaskedPanOk() (*Array, bool)` + +GetMaskedPanOk returns a tuple with the MaskedPan field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetMaskedPan + +`func (o *UserInfoAccountsInner) SetMaskedPan(v Array)` + +SetMaskedPan sets MaskedPan field to given value. + +### HasMaskedPan + +`func (o *UserInfoAccountsInner) HasMaskedPan() bool` + +HasMaskedPan returns a boolean if a field has been set. + +### GetIban + +`func (o *UserInfoAccountsInner) GetIban() string` + +GetIban returns the Iban field if non-nil, zero value otherwise. + +### GetIbanOk + +`func (o *UserInfoAccountsInner) GetIbanOk() (*string, bool)` + +GetIbanOk returns a tuple with the Iban field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetIban + +`func (o *UserInfoAccountsInner) SetIban(v string)` + +SetIban sets Iban field to given value. + +### HasIban + +`func (o *UserInfoAccountsInner) HasIban() bool` + +HasIban returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/UserInfoJarsInner.md b/docs/UserInfoJarsInner.md new file mode 100644 index 0000000..d679ac9 --- /dev/null +++ b/docs/UserInfoJarsInner.md @@ -0,0 +1,212 @@ +# UserInfoJarsInner + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | Pointer to **string** | Ідентифікатор банки | [optional] +**SendId** | Pointer to **string** | Ідентифікатор для сервісу https://send.monobank.ua/{sendId} | [optional] +**Title** | Pointer to **string** | Назва банки | [optional] +**Description** | Pointer to **string** | Опис банки | [optional] +**CurrencyCode** | Pointer to **float32** | Код валюти банки відповідно ISO 4217 | [optional] +**Balance** | Pointer to **float32** | Баланс банки в мінімальних одиницях валюти (копійках, центах) | [optional] +**Goal** | Pointer to **float32** | Цільова сума для накопичення в банці в мінімальних одиницях валюти (копійках, центах) | [optional] + +## Methods + +### NewUserInfoJarsInner + +`func NewUserInfoJarsInner() *UserInfoJarsInner` + +NewUserInfoJarsInner instantiates a new UserInfoJarsInner object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewUserInfoJarsInnerWithDefaults + +`func NewUserInfoJarsInnerWithDefaults() *UserInfoJarsInner` + +NewUserInfoJarsInnerWithDefaults instantiates a new UserInfoJarsInner object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetId + +`func (o *UserInfoJarsInner) GetId() string` + +GetId returns the Id field if non-nil, zero value otherwise. + +### GetIdOk + +`func (o *UserInfoJarsInner) GetIdOk() (*string, bool)` + +GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetId + +`func (o *UserInfoJarsInner) SetId(v string)` + +SetId sets Id field to given value. + +### HasId + +`func (o *UserInfoJarsInner) HasId() bool` + +HasId returns a boolean if a field has been set. + +### GetSendId + +`func (o *UserInfoJarsInner) GetSendId() string` + +GetSendId returns the SendId field if non-nil, zero value otherwise. + +### GetSendIdOk + +`func (o *UserInfoJarsInner) GetSendIdOk() (*string, bool)` + +GetSendIdOk returns a tuple with the SendId field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetSendId + +`func (o *UserInfoJarsInner) SetSendId(v string)` + +SetSendId sets SendId field to given value. + +### HasSendId + +`func (o *UserInfoJarsInner) HasSendId() bool` + +HasSendId returns a boolean if a field has been set. + +### GetTitle + +`func (o *UserInfoJarsInner) GetTitle() string` + +GetTitle returns the Title field if non-nil, zero value otherwise. + +### GetTitleOk + +`func (o *UserInfoJarsInner) GetTitleOk() (*string, bool)` + +GetTitleOk returns a tuple with the Title field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetTitle + +`func (o *UserInfoJarsInner) SetTitle(v string)` + +SetTitle sets Title field to given value. + +### HasTitle + +`func (o *UserInfoJarsInner) HasTitle() bool` + +HasTitle returns a boolean if a field has been set. + +### GetDescription + +`func (o *UserInfoJarsInner) GetDescription() string` + +GetDescription returns the Description field if non-nil, zero value otherwise. + +### GetDescriptionOk + +`func (o *UserInfoJarsInner) GetDescriptionOk() (*string, bool)` + +GetDescriptionOk returns a tuple with the Description field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDescription + +`func (o *UserInfoJarsInner) SetDescription(v string)` + +SetDescription sets Description field to given value. + +### HasDescription + +`func (o *UserInfoJarsInner) HasDescription() bool` + +HasDescription returns a boolean if a field has been set. + +### GetCurrencyCode + +`func (o *UserInfoJarsInner) GetCurrencyCode() float32` + +GetCurrencyCode returns the CurrencyCode field if non-nil, zero value otherwise. + +### GetCurrencyCodeOk + +`func (o *UserInfoJarsInner) GetCurrencyCodeOk() (*float32, bool)` + +GetCurrencyCodeOk returns a tuple with the CurrencyCode field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetCurrencyCode + +`func (o *UserInfoJarsInner) SetCurrencyCode(v float32)` + +SetCurrencyCode sets CurrencyCode field to given value. + +### HasCurrencyCode + +`func (o *UserInfoJarsInner) HasCurrencyCode() bool` + +HasCurrencyCode returns a boolean if a field has been set. + +### GetBalance + +`func (o *UserInfoJarsInner) GetBalance() float32` + +GetBalance returns the Balance field if non-nil, zero value otherwise. + +### GetBalanceOk + +`func (o *UserInfoJarsInner) GetBalanceOk() (*float32, bool)` + +GetBalanceOk returns a tuple with the Balance field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetBalance + +`func (o *UserInfoJarsInner) SetBalance(v float32)` + +SetBalance sets Balance field to given value. + +### HasBalance + +`func (o *UserInfoJarsInner) HasBalance() bool` + +HasBalance returns a boolean if a field has been set. + +### GetGoal + +`func (o *UserInfoJarsInner) GetGoal() float32` + +GetGoal returns the Goal field if non-nil, zero value otherwise. + +### GetGoalOk + +`func (o *UserInfoJarsInner) GetGoalOk() (*float32, bool)` + +GetGoalOk returns a tuple with the Goal field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetGoal + +`func (o *UserInfoJarsInner) SetGoal(v float32)` + +SetGoal sets Goal field to given value. + +### HasGoal + +`func (o *UserInfoJarsInner) HasGoal() bool` + +HasGoal returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/git_push.sh b/git_push.sh new file mode 100644 index 0000000..f53a75d --- /dev/null +++ b/git_push.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=$(git remote) +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..087e484 --- /dev/null +++ b/go.mod @@ -0,0 +1,11 @@ +module gitea.stuzer.link/stuzer05/go-monobank + +go 1.18 + +require github.com/stretchr/testify v1.9.0 + +require ( + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..60ce688 --- /dev/null +++ b/go.sum @@ -0,0 +1,10 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/model_currency_info_inner.go b/model_currency_info_inner.go new file mode 100644 index 0000000..9a54bdd --- /dev/null +++ b/model_currency_info_inner.go @@ -0,0 +1,309 @@ +/* +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 ( + "encoding/json" +) + +// checks if the CurrencyInfoInner type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &CurrencyInfoInner{} + +// CurrencyInfoInner struct for CurrencyInfoInner +type CurrencyInfoInner struct { + // Код валюти рахунку відповідно ISO 4217 + CurrencyCodeA *float32 `json:"currencyCodeA,omitempty"` + // Код валюти рахунку відповідно ISO 4217 + CurrencyCodeB *float32 `json:"currencyCodeB,omitempty"` + // Час курсу в секундах в форматі Unix time + Date *float32 `json:"date,omitempty"` + RateSell *float32 `json:"rateSell,omitempty"` + RateBuy *float32 `json:"rateBuy,omitempty"` + RateCross *float32 `json:"rateCross,omitempty"` +} + +// NewCurrencyInfoInner instantiates a new CurrencyInfoInner object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewCurrencyInfoInner() *CurrencyInfoInner { + this := CurrencyInfoInner{} + return &this +} + +// NewCurrencyInfoInnerWithDefaults instantiates a new CurrencyInfoInner object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewCurrencyInfoInnerWithDefaults() *CurrencyInfoInner { + this := CurrencyInfoInner{} + return &this +} + +// GetCurrencyCodeA returns the CurrencyCodeA field value if set, zero value otherwise. +func (o *CurrencyInfoInner) GetCurrencyCodeA() float32 { + if o == nil || IsNil(o.CurrencyCodeA) { + var ret float32 + return ret + } + return *o.CurrencyCodeA +} + +// GetCurrencyCodeAOk returns a tuple with the CurrencyCodeA field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CurrencyInfoInner) GetCurrencyCodeAOk() (*float32, bool) { + if o == nil || IsNil(o.CurrencyCodeA) { + return nil, false + } + return o.CurrencyCodeA, true +} + +// HasCurrencyCodeA returns a boolean if a field has been set. +func (o *CurrencyInfoInner) HasCurrencyCodeA() bool { + if o != nil && !IsNil(o.CurrencyCodeA) { + return true + } + + return false +} + +// SetCurrencyCodeA gets a reference to the given float32 and assigns it to the CurrencyCodeA field. +func (o *CurrencyInfoInner) SetCurrencyCodeA(v float32) { + o.CurrencyCodeA = &v +} + +// GetCurrencyCodeB returns the CurrencyCodeB field value if set, zero value otherwise. +func (o *CurrencyInfoInner) GetCurrencyCodeB() float32 { + if o == nil || IsNil(o.CurrencyCodeB) { + var ret float32 + return ret + } + return *o.CurrencyCodeB +} + +// GetCurrencyCodeBOk returns a tuple with the CurrencyCodeB field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CurrencyInfoInner) GetCurrencyCodeBOk() (*float32, bool) { + if o == nil || IsNil(o.CurrencyCodeB) { + return nil, false + } + return o.CurrencyCodeB, true +} + +// HasCurrencyCodeB returns a boolean if a field has been set. +func (o *CurrencyInfoInner) HasCurrencyCodeB() bool { + if o != nil && !IsNil(o.CurrencyCodeB) { + return true + } + + return false +} + +// SetCurrencyCodeB gets a reference to the given float32 and assigns it to the CurrencyCodeB field. +func (o *CurrencyInfoInner) SetCurrencyCodeB(v float32) { + o.CurrencyCodeB = &v +} + +// GetDate returns the Date field value if set, zero value otherwise. +func (o *CurrencyInfoInner) GetDate() float32 { + if o == nil || IsNil(o.Date) { + var ret float32 + return ret + } + return *o.Date +} + +// GetDateOk returns a tuple with the Date field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CurrencyInfoInner) GetDateOk() (*float32, bool) { + if o == nil || IsNil(o.Date) { + return nil, false + } + return o.Date, true +} + +// HasDate returns a boolean if a field has been set. +func (o *CurrencyInfoInner) HasDate() bool { + if o != nil && !IsNil(o.Date) { + return true + } + + return false +} + +// SetDate gets a reference to the given float32 and assigns it to the Date field. +func (o *CurrencyInfoInner) SetDate(v float32) { + o.Date = &v +} + +// GetRateSell returns the RateSell field value if set, zero value otherwise. +func (o *CurrencyInfoInner) GetRateSell() float32 { + if o == nil || IsNil(o.RateSell) { + var ret float32 + return ret + } + return *o.RateSell +} + +// GetRateSellOk returns a tuple with the RateSell field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CurrencyInfoInner) GetRateSellOk() (*float32, bool) { + if o == nil || IsNil(o.RateSell) { + return nil, false + } + return o.RateSell, true +} + +// HasRateSell returns a boolean if a field has been set. +func (o *CurrencyInfoInner) HasRateSell() bool { + if o != nil && !IsNil(o.RateSell) { + return true + } + + return false +} + +// SetRateSell gets a reference to the given float32 and assigns it to the RateSell field. +func (o *CurrencyInfoInner) SetRateSell(v float32) { + o.RateSell = &v +} + +// GetRateBuy returns the RateBuy field value if set, zero value otherwise. +func (o *CurrencyInfoInner) GetRateBuy() float32 { + if o == nil || IsNil(o.RateBuy) { + var ret float32 + return ret + } + return *o.RateBuy +} + +// GetRateBuyOk returns a tuple with the RateBuy field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CurrencyInfoInner) GetRateBuyOk() (*float32, bool) { + if o == nil || IsNil(o.RateBuy) { + return nil, false + } + return o.RateBuy, true +} + +// HasRateBuy returns a boolean if a field has been set. +func (o *CurrencyInfoInner) HasRateBuy() bool { + if o != nil && !IsNil(o.RateBuy) { + return true + } + + return false +} + +// SetRateBuy gets a reference to the given float32 and assigns it to the RateBuy field. +func (o *CurrencyInfoInner) SetRateBuy(v float32) { + o.RateBuy = &v +} + +// GetRateCross returns the RateCross field value if set, zero value otherwise. +func (o *CurrencyInfoInner) GetRateCross() float32 { + if o == nil || IsNil(o.RateCross) { + var ret float32 + return ret + } + return *o.RateCross +} + +// GetRateCrossOk returns a tuple with the RateCross field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CurrencyInfoInner) GetRateCrossOk() (*float32, bool) { + if o == nil || IsNil(o.RateCross) { + return nil, false + } + return o.RateCross, true +} + +// HasRateCross returns a boolean if a field has been set. +func (o *CurrencyInfoInner) HasRateCross() bool { + if o != nil && !IsNil(o.RateCross) { + return true + } + + return false +} + +// SetRateCross gets a reference to the given float32 and assigns it to the RateCross field. +func (o *CurrencyInfoInner) SetRateCross(v float32) { + o.RateCross = &v +} + +func (o CurrencyInfoInner) MarshalJSON() ([]byte, error) { + toSerialize,err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o CurrencyInfoInner) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.CurrencyCodeA) { + toSerialize["currencyCodeA"] = o.CurrencyCodeA + } + if !IsNil(o.CurrencyCodeB) { + toSerialize["currencyCodeB"] = o.CurrencyCodeB + } + if !IsNil(o.Date) { + toSerialize["date"] = o.Date + } + if !IsNil(o.RateSell) { + toSerialize["rateSell"] = o.RateSell + } + if !IsNil(o.RateBuy) { + toSerialize["rateBuy"] = o.RateBuy + } + if !IsNil(o.RateCross) { + toSerialize["rateCross"] = o.RateCross + } + return toSerialize, nil +} + +type NullableCurrencyInfoInner struct { + value *CurrencyInfoInner + isSet bool +} + +func (v NullableCurrencyInfoInner) Get() *CurrencyInfoInner { + return v.value +} + +func (v *NullableCurrencyInfoInner) Set(val *CurrencyInfoInner) { + v.value = val + v.isSet = true +} + +func (v NullableCurrencyInfoInner) IsSet() bool { + return v.isSet +} + +func (v *NullableCurrencyInfoInner) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableCurrencyInfoInner(val *CurrencyInfoInner) *NullableCurrencyInfoInner { + return &NullableCurrencyInfoInner{value: val, isSet: true} +} + +func (v NullableCurrencyInfoInner) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableCurrencyInfoInner) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + diff --git a/model_error.go b/model_error.go new file mode 100644 index 0000000..d4caa9f --- /dev/null +++ b/model_error.go @@ -0,0 +1,127 @@ +/* +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 ( + "encoding/json" +) + +// checks if the Error type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &Error{} + +// Error struct for Error +type Error struct { + // Текст помилки для кінцевого користувача, для автоматичного оброблення потрібно аналізувати HTTP код відповіді (200, 404, 429 та інші) + ErrorDescription *string `json:"errorDescription,omitempty"` +} + +// NewError instantiates a new Error object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewError() *Error { + this := Error{} + return &this +} + +// NewErrorWithDefaults instantiates a new Error object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewErrorWithDefaults() *Error { + this := Error{} + return &this +} + +// GetErrorDescription returns the ErrorDescription field value if set, zero value otherwise. +func (o *Error) GetErrorDescription() string { + if o == nil || IsNil(o.ErrorDescription) { + var ret string + return ret + } + return *o.ErrorDescription +} + +// GetErrorDescriptionOk returns a tuple with the ErrorDescription field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Error) GetErrorDescriptionOk() (*string, bool) { + if o == nil || IsNil(o.ErrorDescription) { + return nil, false + } + return o.ErrorDescription, true +} + +// HasErrorDescription returns a boolean if a field has been set. +func (o *Error) HasErrorDescription() bool { + if o != nil && !IsNil(o.ErrorDescription) { + return true + } + + return false +} + +// SetErrorDescription gets a reference to the given string and assigns it to the ErrorDescription field. +func (o *Error) SetErrorDescription(v string) { + o.ErrorDescription = &v +} + +func (o Error) MarshalJSON() ([]byte, error) { + toSerialize,err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o Error) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.ErrorDescription) { + toSerialize["errorDescription"] = o.ErrorDescription + } + return toSerialize, nil +} + +type NullableError struct { + value *Error + isSet bool +} + +func (v NullableError) Get() *Error { + return v.value +} + +func (v *NullableError) Set(val *Error) { + v.value = val + v.isSet = true +} + +func (v NullableError) IsSet() bool { + return v.isSet +} + +func (v *NullableError) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableError(val *Error) *NullableError { + return &NullableError{value: val, isSet: true} +} + +func (v NullableError) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableError) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + diff --git a/model_set_web_hook.go b/model_set_web_hook.go new file mode 100644 index 0000000..c6e5f74 --- /dev/null +++ b/model_set_web_hook.go @@ -0,0 +1,126 @@ +/* +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 ( + "encoding/json" +) + +// checks if the SetWebHook type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &SetWebHook{} + +// SetWebHook URL для надсиляння подій по зміні балансу рахунків фізичних осіб, ФОП та банок +type SetWebHook struct { + WebHookUrl *string `json:"webHookUrl,omitempty"` +} + +// NewSetWebHook instantiates a new SetWebHook object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewSetWebHook() *SetWebHook { + this := SetWebHook{} + return &this +} + +// NewSetWebHookWithDefaults instantiates a new SetWebHook object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewSetWebHookWithDefaults() *SetWebHook { + this := SetWebHook{} + return &this +} + +// GetWebHookUrl returns the WebHookUrl field value if set, zero value otherwise. +func (o *SetWebHook) GetWebHookUrl() string { + if o == nil || IsNil(o.WebHookUrl) { + var ret string + return ret + } + return *o.WebHookUrl +} + +// GetWebHookUrlOk returns a tuple with the WebHookUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SetWebHook) GetWebHookUrlOk() (*string, bool) { + if o == nil || IsNil(o.WebHookUrl) { + return nil, false + } + return o.WebHookUrl, true +} + +// HasWebHookUrl returns a boolean if a field has been set. +func (o *SetWebHook) HasWebHookUrl() bool { + if o != nil && !IsNil(o.WebHookUrl) { + return true + } + + return false +} + +// SetWebHookUrl gets a reference to the given string and assigns it to the WebHookUrl field. +func (o *SetWebHook) SetWebHookUrl(v string) { + o.WebHookUrl = &v +} + +func (o SetWebHook) MarshalJSON() ([]byte, error) { + toSerialize,err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o SetWebHook) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.WebHookUrl) { + toSerialize["webHookUrl"] = o.WebHookUrl + } + return toSerialize, nil +} + +type NullableSetWebHook struct { + value *SetWebHook + isSet bool +} + +func (v NullableSetWebHook) Get() *SetWebHook { + return v.value +} + +func (v *NullableSetWebHook) Set(val *SetWebHook) { + v.value = val + v.isSet = true +} + +func (v NullableSetWebHook) IsSet() bool { + return v.isSet +} + +func (v *NullableSetWebHook) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableSetWebHook(val *SetWebHook) *NullableSetWebHook { + return &NullableSetWebHook{value: val, isSet: true} +} + +func (v NullableSetWebHook) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableSetWebHook) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + diff --git a/model_statement_items_inner.go b/model_statement_items_inner.go new file mode 100644 index 0000000..a0f357a --- /dev/null +++ b/model_statement_items_inner.go @@ -0,0 +1,756 @@ +/* +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 ( + "encoding/json" +) + +// checks if the StatementItemsInner type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &StatementItemsInner{} + +// StatementItemsInner struct for StatementItemsInner +type StatementItemsInner struct { + // Унікальний id транзакції + Id *string `json:"id,omitempty"` + // Час транзакції в секундах в форматі Unix time + Time *float32 `json:"time,omitempty"` + // Опис транзакцій + Description *string `json:"description,omitempty"` + // Код типу транзакції (Merchant Category Code), відповідно ISO 18245 + Mcc *float32 `json:"mcc,omitempty"` + // Оригінальний код типу транзакції (Merchant Category Code), відповідно ISO 18245 + OriginalMcc *float32 `json:"originalMcc,omitempty"` + // Статус блокування суми (детальніше у [wiki](https://en.wikipedia.org/wiki/Authorization_hold)) + Hold *bool `json:"hold,omitempty"` + // Сума у валюті рахунку в мінімальних одиницях валюти (копійках, центах) + Amount *float32 `json:"amount,omitempty"` + // Сума у валюті транзакції в мінімальних одиницях валюти (копійках, центах) + OperationAmount *float32 `json:"operationAmount,omitempty"` + // Код валюти рахунку відповідно ISO 4217 + CurrencyCode *float32 `json:"currencyCode,omitempty"` + // Розмір комісії в мінімальних одиницях валюти (копійках, центах) + CommissionRate *float32 `json:"commissionRate,omitempty"` + // Розмір кешбеку в мінімальних одиницях валюти (копійках, центах) + CashbackAmount *float32 `json:"cashbackAmount,omitempty"` + // Баланс рахунку в мінімальних одиницях валюти (копійках, центах) + Balance *float32 `json:"balance,omitempty"` + // Коментар до переказу, уведений користувачем. Якщо не вказаний, поле буде відсутнім + Comment *string `json:"comment,omitempty"` + // Номер квитанції для check.gov.ua. Поле може бути відсутнім + ReceiptId *string `json:"receiptId,omitempty"` + // Номер квитанції ФОПа, приходить у випадку якщо це операція із зарахуванням коштів + InvoiceId *string `json:"invoiceId,omitempty"` + // ЄДРПОУ контрагента, присутній лише для елементів виписки рахунків ФОП + CounterEdrpou *string `json:"counterEdrpou,omitempty"` + // IBAN контрагента, присутній лише для елементів виписки рахунків ФОП + CounterIban *string `json:"counterIban,omitempty"` + // Найменування контрагента + CounterName *string `json:"counterName,omitempty"` +} + +// NewStatementItemsInner instantiates a new StatementItemsInner object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewStatementItemsInner() *StatementItemsInner { + this := StatementItemsInner{} + return &this +} + +// NewStatementItemsInnerWithDefaults instantiates a new StatementItemsInner object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewStatementItemsInnerWithDefaults() *StatementItemsInner { + this := StatementItemsInner{} + return &this +} + +// GetId returns the Id field value if set, zero value otherwise. +func (o *StatementItemsInner) GetId() string { + if o == nil || IsNil(o.Id) { + var ret string + return ret + } + return *o.Id +} + +// GetIdOk returns a tuple with the Id field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetIdOk() (*string, bool) { + if o == nil || IsNil(o.Id) { + return nil, false + } + return o.Id, true +} + +// HasId returns a boolean if a field has been set. +func (o *StatementItemsInner) HasId() bool { + if o != nil && !IsNil(o.Id) { + return true + } + + return false +} + +// SetId gets a reference to the given string and assigns it to the Id field. +func (o *StatementItemsInner) SetId(v string) { + o.Id = &v +} + +// GetTime returns the Time field value if set, zero value otherwise. +func (o *StatementItemsInner) GetTime() float32 { + if o == nil || IsNil(o.Time) { + var ret float32 + return ret + } + return *o.Time +} + +// GetTimeOk returns a tuple with the Time field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetTimeOk() (*float32, bool) { + if o == nil || IsNil(o.Time) { + return nil, false + } + return o.Time, true +} + +// HasTime returns a boolean if a field has been set. +func (o *StatementItemsInner) HasTime() bool { + if o != nil && !IsNil(o.Time) { + return true + } + + return false +} + +// SetTime gets a reference to the given float32 and assigns it to the Time field. +func (o *StatementItemsInner) SetTime(v float32) { + o.Time = &v +} + +// GetDescription returns the Description field value if set, zero value otherwise. +func (o *StatementItemsInner) GetDescription() string { + if o == nil || IsNil(o.Description) { + var ret string + return ret + } + return *o.Description +} + +// GetDescriptionOk returns a tuple with the Description field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetDescriptionOk() (*string, bool) { + if o == nil || IsNil(o.Description) { + return nil, false + } + return o.Description, true +} + +// HasDescription returns a boolean if a field has been set. +func (o *StatementItemsInner) HasDescription() bool { + if o != nil && !IsNil(o.Description) { + return true + } + + return false +} + +// SetDescription gets a reference to the given string and assigns it to the Description field. +func (o *StatementItemsInner) SetDescription(v string) { + o.Description = &v +} + +// GetMcc returns the Mcc field value if set, zero value otherwise. +func (o *StatementItemsInner) GetMcc() float32 { + if o == nil || IsNil(o.Mcc) { + var ret float32 + return ret + } + return *o.Mcc +} + +// GetMccOk returns a tuple with the Mcc field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetMccOk() (*float32, bool) { + if o == nil || IsNil(o.Mcc) { + return nil, false + } + return o.Mcc, true +} + +// HasMcc returns a boolean if a field has been set. +func (o *StatementItemsInner) HasMcc() bool { + if o != nil && !IsNil(o.Mcc) { + return true + } + + return false +} + +// SetMcc gets a reference to the given float32 and assigns it to the Mcc field. +func (o *StatementItemsInner) SetMcc(v float32) { + o.Mcc = &v +} + +// GetOriginalMcc returns the OriginalMcc field value if set, zero value otherwise. +func (o *StatementItemsInner) GetOriginalMcc() float32 { + if o == nil || IsNil(o.OriginalMcc) { + var ret float32 + return ret + } + return *o.OriginalMcc +} + +// GetOriginalMccOk returns a tuple with the OriginalMcc field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetOriginalMccOk() (*float32, bool) { + if o == nil || IsNil(o.OriginalMcc) { + return nil, false + } + return o.OriginalMcc, true +} + +// HasOriginalMcc returns a boolean if a field has been set. +func (o *StatementItemsInner) HasOriginalMcc() bool { + if o != nil && !IsNil(o.OriginalMcc) { + return true + } + + return false +} + +// SetOriginalMcc gets a reference to the given float32 and assigns it to the OriginalMcc field. +func (o *StatementItemsInner) SetOriginalMcc(v float32) { + o.OriginalMcc = &v +} + +// GetHold returns the Hold field value if set, zero value otherwise. +func (o *StatementItemsInner) GetHold() bool { + if o == nil || IsNil(o.Hold) { + var ret bool + return ret + } + return *o.Hold +} + +// GetHoldOk returns a tuple with the Hold field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetHoldOk() (*bool, bool) { + if o == nil || IsNil(o.Hold) { + return nil, false + } + return o.Hold, true +} + +// HasHold returns a boolean if a field has been set. +func (o *StatementItemsInner) HasHold() bool { + if o != nil && !IsNil(o.Hold) { + return true + } + + return false +} + +// SetHold gets a reference to the given bool and assigns it to the Hold field. +func (o *StatementItemsInner) SetHold(v bool) { + o.Hold = &v +} + +// GetAmount returns the Amount field value if set, zero value otherwise. +func (o *StatementItemsInner) GetAmount() float32 { + if o == nil || IsNil(o.Amount) { + var ret float32 + return ret + } + return *o.Amount +} + +// GetAmountOk returns a tuple with the Amount field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetAmountOk() (*float32, bool) { + if o == nil || IsNil(o.Amount) { + return nil, false + } + return o.Amount, true +} + +// HasAmount returns a boolean if a field has been set. +func (o *StatementItemsInner) HasAmount() bool { + if o != nil && !IsNil(o.Amount) { + return true + } + + return false +} + +// SetAmount gets a reference to the given float32 and assigns it to the Amount field. +func (o *StatementItemsInner) SetAmount(v float32) { + o.Amount = &v +} + +// GetOperationAmount returns the OperationAmount field value if set, zero value otherwise. +func (o *StatementItemsInner) GetOperationAmount() float32 { + if o == nil || IsNil(o.OperationAmount) { + var ret float32 + return ret + } + return *o.OperationAmount +} + +// GetOperationAmountOk returns a tuple with the OperationAmount field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetOperationAmountOk() (*float32, bool) { + if o == nil || IsNil(o.OperationAmount) { + return nil, false + } + return o.OperationAmount, true +} + +// HasOperationAmount returns a boolean if a field has been set. +func (o *StatementItemsInner) HasOperationAmount() bool { + if o != nil && !IsNil(o.OperationAmount) { + return true + } + + return false +} + +// SetOperationAmount gets a reference to the given float32 and assigns it to the OperationAmount field. +func (o *StatementItemsInner) SetOperationAmount(v float32) { + o.OperationAmount = &v +} + +// GetCurrencyCode returns the CurrencyCode field value if set, zero value otherwise. +func (o *StatementItemsInner) GetCurrencyCode() float32 { + if o == nil || IsNil(o.CurrencyCode) { + var ret float32 + return ret + } + return *o.CurrencyCode +} + +// GetCurrencyCodeOk returns a tuple with the CurrencyCode field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetCurrencyCodeOk() (*float32, bool) { + if o == nil || IsNil(o.CurrencyCode) { + return nil, false + } + return o.CurrencyCode, true +} + +// HasCurrencyCode returns a boolean if a field has been set. +func (o *StatementItemsInner) HasCurrencyCode() bool { + if o != nil && !IsNil(o.CurrencyCode) { + return true + } + + return false +} + +// SetCurrencyCode gets a reference to the given float32 and assigns it to the CurrencyCode field. +func (o *StatementItemsInner) SetCurrencyCode(v float32) { + o.CurrencyCode = &v +} + +// GetCommissionRate returns the CommissionRate field value if set, zero value otherwise. +func (o *StatementItemsInner) GetCommissionRate() float32 { + if o == nil || IsNil(o.CommissionRate) { + var ret float32 + return ret + } + return *o.CommissionRate +} + +// GetCommissionRateOk returns a tuple with the CommissionRate field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetCommissionRateOk() (*float32, bool) { + if o == nil || IsNil(o.CommissionRate) { + return nil, false + } + return o.CommissionRate, true +} + +// HasCommissionRate returns a boolean if a field has been set. +func (o *StatementItemsInner) HasCommissionRate() bool { + if o != nil && !IsNil(o.CommissionRate) { + return true + } + + return false +} + +// SetCommissionRate gets a reference to the given float32 and assigns it to the CommissionRate field. +func (o *StatementItemsInner) SetCommissionRate(v float32) { + o.CommissionRate = &v +} + +// GetCashbackAmount returns the CashbackAmount field value if set, zero value otherwise. +func (o *StatementItemsInner) GetCashbackAmount() float32 { + if o == nil || IsNil(o.CashbackAmount) { + var ret float32 + return ret + } + return *o.CashbackAmount +} + +// GetCashbackAmountOk returns a tuple with the CashbackAmount field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetCashbackAmountOk() (*float32, bool) { + if o == nil || IsNil(o.CashbackAmount) { + return nil, false + } + return o.CashbackAmount, true +} + +// HasCashbackAmount returns a boolean if a field has been set. +func (o *StatementItemsInner) HasCashbackAmount() bool { + if o != nil && !IsNil(o.CashbackAmount) { + return true + } + + return false +} + +// SetCashbackAmount gets a reference to the given float32 and assigns it to the CashbackAmount field. +func (o *StatementItemsInner) SetCashbackAmount(v float32) { + o.CashbackAmount = &v +} + +// GetBalance returns the Balance field value if set, zero value otherwise. +func (o *StatementItemsInner) GetBalance() float32 { + if o == nil || IsNil(o.Balance) { + var ret float32 + return ret + } + return *o.Balance +} + +// GetBalanceOk returns a tuple with the Balance field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetBalanceOk() (*float32, bool) { + if o == nil || IsNil(o.Balance) { + return nil, false + } + return o.Balance, true +} + +// HasBalance returns a boolean if a field has been set. +func (o *StatementItemsInner) HasBalance() bool { + if o != nil && !IsNil(o.Balance) { + return true + } + + return false +} + +// SetBalance gets a reference to the given float32 and assigns it to the Balance field. +func (o *StatementItemsInner) SetBalance(v float32) { + o.Balance = &v +} + +// GetComment returns the Comment field value if set, zero value otherwise. +func (o *StatementItemsInner) GetComment() string { + if o == nil || IsNil(o.Comment) { + var ret string + return ret + } + return *o.Comment +} + +// GetCommentOk returns a tuple with the Comment field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetCommentOk() (*string, bool) { + if o == nil || IsNil(o.Comment) { + return nil, false + } + return o.Comment, true +} + +// HasComment returns a boolean if a field has been set. +func (o *StatementItemsInner) HasComment() bool { + if o != nil && !IsNil(o.Comment) { + return true + } + + return false +} + +// SetComment gets a reference to the given string and assigns it to the Comment field. +func (o *StatementItemsInner) SetComment(v string) { + o.Comment = &v +} + +// GetReceiptId returns the ReceiptId field value if set, zero value otherwise. +func (o *StatementItemsInner) GetReceiptId() string { + if o == nil || IsNil(o.ReceiptId) { + var ret string + return ret + } + return *o.ReceiptId +} + +// GetReceiptIdOk returns a tuple with the ReceiptId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetReceiptIdOk() (*string, bool) { + if o == nil || IsNil(o.ReceiptId) { + return nil, false + } + return o.ReceiptId, true +} + +// HasReceiptId returns a boolean if a field has been set. +func (o *StatementItemsInner) HasReceiptId() bool { + if o != nil && !IsNil(o.ReceiptId) { + return true + } + + return false +} + +// SetReceiptId gets a reference to the given string and assigns it to the ReceiptId field. +func (o *StatementItemsInner) SetReceiptId(v string) { + o.ReceiptId = &v +} + +// GetInvoiceId returns the InvoiceId field value if set, zero value otherwise. +func (o *StatementItemsInner) GetInvoiceId() string { + if o == nil || IsNil(o.InvoiceId) { + var ret string + return ret + } + return *o.InvoiceId +} + +// GetInvoiceIdOk returns a tuple with the InvoiceId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetInvoiceIdOk() (*string, bool) { + if o == nil || IsNil(o.InvoiceId) { + return nil, false + } + return o.InvoiceId, true +} + +// HasInvoiceId returns a boolean if a field has been set. +func (o *StatementItemsInner) HasInvoiceId() bool { + if o != nil && !IsNil(o.InvoiceId) { + return true + } + + return false +} + +// SetInvoiceId gets a reference to the given string and assigns it to the InvoiceId field. +func (o *StatementItemsInner) SetInvoiceId(v string) { + o.InvoiceId = &v +} + +// GetCounterEdrpou returns the CounterEdrpou field value if set, zero value otherwise. +func (o *StatementItemsInner) GetCounterEdrpou() string { + if o == nil || IsNil(o.CounterEdrpou) { + var ret string + return ret + } + return *o.CounterEdrpou +} + +// GetCounterEdrpouOk returns a tuple with the CounterEdrpou field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetCounterEdrpouOk() (*string, bool) { + if o == nil || IsNil(o.CounterEdrpou) { + return nil, false + } + return o.CounterEdrpou, true +} + +// HasCounterEdrpou returns a boolean if a field has been set. +func (o *StatementItemsInner) HasCounterEdrpou() bool { + if o != nil && !IsNil(o.CounterEdrpou) { + return true + } + + return false +} + +// SetCounterEdrpou gets a reference to the given string and assigns it to the CounterEdrpou field. +func (o *StatementItemsInner) SetCounterEdrpou(v string) { + o.CounterEdrpou = &v +} + +// GetCounterIban returns the CounterIban field value if set, zero value otherwise. +func (o *StatementItemsInner) GetCounterIban() string { + if o == nil || IsNil(o.CounterIban) { + var ret string + return ret + } + return *o.CounterIban +} + +// GetCounterIbanOk returns a tuple with the CounterIban field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetCounterIbanOk() (*string, bool) { + if o == nil || IsNil(o.CounterIban) { + return nil, false + } + return o.CounterIban, true +} + +// HasCounterIban returns a boolean if a field has been set. +func (o *StatementItemsInner) HasCounterIban() bool { + if o != nil && !IsNil(o.CounterIban) { + return true + } + + return false +} + +// SetCounterIban gets a reference to the given string and assigns it to the CounterIban field. +func (o *StatementItemsInner) SetCounterIban(v string) { + o.CounterIban = &v +} + +// GetCounterName returns the CounterName field value if set, zero value otherwise. +func (o *StatementItemsInner) GetCounterName() string { + if o == nil || IsNil(o.CounterName) { + var ret string + return ret + } + return *o.CounterName +} + +// GetCounterNameOk returns a tuple with the CounterName field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *StatementItemsInner) GetCounterNameOk() (*string, bool) { + if o == nil || IsNil(o.CounterName) { + return nil, false + } + return o.CounterName, true +} + +// HasCounterName returns a boolean if a field has been set. +func (o *StatementItemsInner) HasCounterName() bool { + if o != nil && !IsNil(o.CounterName) { + return true + } + + return false +} + +// SetCounterName gets a reference to the given string and assigns it to the CounterName field. +func (o *StatementItemsInner) SetCounterName(v string) { + o.CounterName = &v +} + +func (o StatementItemsInner) MarshalJSON() ([]byte, error) { + toSerialize,err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o StatementItemsInner) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Id) { + toSerialize["id"] = o.Id + } + if !IsNil(o.Time) { + toSerialize["time"] = o.Time + } + if !IsNil(o.Description) { + toSerialize["description"] = o.Description + } + if !IsNil(o.Mcc) { + toSerialize["mcc"] = o.Mcc + } + if !IsNil(o.OriginalMcc) { + toSerialize["originalMcc"] = o.OriginalMcc + } + if !IsNil(o.Hold) { + toSerialize["hold"] = o.Hold + } + if !IsNil(o.Amount) { + toSerialize["amount"] = o.Amount + } + if !IsNil(o.OperationAmount) { + toSerialize["operationAmount"] = o.OperationAmount + } + if !IsNil(o.CurrencyCode) { + toSerialize["currencyCode"] = o.CurrencyCode + } + if !IsNil(o.CommissionRate) { + toSerialize["commissionRate"] = o.CommissionRate + } + if !IsNil(o.CashbackAmount) { + toSerialize["cashbackAmount"] = o.CashbackAmount + } + if !IsNil(o.Balance) { + toSerialize["balance"] = o.Balance + } + if !IsNil(o.Comment) { + toSerialize["comment"] = o.Comment + } + if !IsNil(o.ReceiptId) { + toSerialize["receiptId"] = o.ReceiptId + } + if !IsNil(o.InvoiceId) { + toSerialize["invoiceId"] = o.InvoiceId + } + if !IsNil(o.CounterEdrpou) { + toSerialize["counterEdrpou"] = o.CounterEdrpou + } + if !IsNil(o.CounterIban) { + toSerialize["counterIban"] = o.CounterIban + } + if !IsNil(o.CounterName) { + toSerialize["counterName"] = o.CounterName + } + return toSerialize, nil +} + +type NullableStatementItemsInner struct { + value *StatementItemsInner + isSet bool +} + +func (v NullableStatementItemsInner) Get() *StatementItemsInner { + return v.value +} + +func (v *NullableStatementItemsInner) Set(val *StatementItemsInner) { + v.value = val + v.isSet = true +} + +func (v NullableStatementItemsInner) IsSet() bool { + return v.isSet +} + +func (v *NullableStatementItemsInner) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableStatementItemsInner(val *StatementItemsInner) *NullableStatementItemsInner { + return &NullableStatementItemsInner{value: val, isSet: true} +} + +func (v NullableStatementItemsInner) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableStatementItemsInner) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + diff --git a/model_user_info.go b/model_user_info.go new file mode 100644 index 0000000..a17dfc6 --- /dev/null +++ b/model_user_info.go @@ -0,0 +1,312 @@ +/* +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 ( + "encoding/json" +) + +// checks if the UserInfo type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &UserInfo{} + +// UserInfo Опис клієнта та його рахунків і банок. +type UserInfo struct { + // Ідентифікатор клієнта (збігається з id для send.monobank.ua) + ClientId *string `json:"clientId,omitempty"` + // Ім'я клієнта + Name *string `json:"name,omitempty"` + // URL для надсиляння подій по зміні балансу рахунку + WebHookUrl *string `json:"webHookUrl,omitempty"` + // Перелік прав, які які надає сервіс (1 літера на 1 permission). + Permissions *string `json:"permissions,omitempty"` + // Перелік доступних рахунків + Accounts []UserInfoAccountsInner `json:"accounts,omitempty"` + // Перелік банок + Jars []UserInfoJarsInner `json:"jars,omitempty"` +} + +// NewUserInfo instantiates a new UserInfo object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewUserInfo() *UserInfo { + this := UserInfo{} + return &this +} + +// NewUserInfoWithDefaults instantiates a new UserInfo object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewUserInfoWithDefaults() *UserInfo { + this := UserInfo{} + return &this +} + +// GetClientId returns the ClientId field value if set, zero value otherwise. +func (o *UserInfo) GetClientId() string { + if o == nil || IsNil(o.ClientId) { + var ret string + return ret + } + return *o.ClientId +} + +// GetClientIdOk returns a tuple with the ClientId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfo) GetClientIdOk() (*string, bool) { + if o == nil || IsNil(o.ClientId) { + return nil, false + } + return o.ClientId, true +} + +// HasClientId returns a boolean if a field has been set. +func (o *UserInfo) HasClientId() bool { + if o != nil && !IsNil(o.ClientId) { + return true + } + + return false +} + +// SetClientId gets a reference to the given string and assigns it to the ClientId field. +func (o *UserInfo) SetClientId(v string) { + o.ClientId = &v +} + +// GetName returns the Name field value if set, zero value otherwise. +func (o *UserInfo) GetName() string { + if o == nil || IsNil(o.Name) { + var ret string + return ret + } + return *o.Name +} + +// GetNameOk returns a tuple with the Name field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfo) GetNameOk() (*string, bool) { + if o == nil || IsNil(o.Name) { + return nil, false + } + return o.Name, true +} + +// HasName returns a boolean if a field has been set. +func (o *UserInfo) HasName() bool { + if o != nil && !IsNil(o.Name) { + return true + } + + return false +} + +// SetName gets a reference to the given string and assigns it to the Name field. +func (o *UserInfo) SetName(v string) { + o.Name = &v +} + +// GetWebHookUrl returns the WebHookUrl field value if set, zero value otherwise. +func (o *UserInfo) GetWebHookUrl() string { + if o == nil || IsNil(o.WebHookUrl) { + var ret string + return ret + } + return *o.WebHookUrl +} + +// GetWebHookUrlOk returns a tuple with the WebHookUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfo) GetWebHookUrlOk() (*string, bool) { + if o == nil || IsNil(o.WebHookUrl) { + return nil, false + } + return o.WebHookUrl, true +} + +// HasWebHookUrl returns a boolean if a field has been set. +func (o *UserInfo) HasWebHookUrl() bool { + if o != nil && !IsNil(o.WebHookUrl) { + return true + } + + return false +} + +// SetWebHookUrl gets a reference to the given string and assigns it to the WebHookUrl field. +func (o *UserInfo) SetWebHookUrl(v string) { + o.WebHookUrl = &v +} + +// GetPermissions returns the Permissions field value if set, zero value otherwise. +func (o *UserInfo) GetPermissions() string { + if o == nil || IsNil(o.Permissions) { + var ret string + return ret + } + return *o.Permissions +} + +// GetPermissionsOk returns a tuple with the Permissions field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfo) GetPermissionsOk() (*string, bool) { + if o == nil || IsNil(o.Permissions) { + return nil, false + } + return o.Permissions, true +} + +// HasPermissions returns a boolean if a field has been set. +func (o *UserInfo) HasPermissions() bool { + if o != nil && !IsNil(o.Permissions) { + return true + } + + return false +} + +// SetPermissions gets a reference to the given string and assigns it to the Permissions field. +func (o *UserInfo) SetPermissions(v string) { + o.Permissions = &v +} + +// GetAccounts returns the Accounts field value if set, zero value otherwise. +func (o *UserInfo) GetAccounts() []UserInfoAccountsInner { + if o == nil || IsNil(o.Accounts) { + var ret []UserInfoAccountsInner + return ret + } + return o.Accounts +} + +// GetAccountsOk returns a tuple with the Accounts field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfo) GetAccountsOk() ([]UserInfoAccountsInner, bool) { + if o == nil || IsNil(o.Accounts) { + return nil, false + } + return o.Accounts, true +} + +// HasAccounts returns a boolean if a field has been set. +func (o *UserInfo) HasAccounts() bool { + if o != nil && !IsNil(o.Accounts) { + return true + } + + return false +} + +// SetAccounts gets a reference to the given []UserInfoAccountsInner and assigns it to the Accounts field. +func (o *UserInfo) SetAccounts(v []UserInfoAccountsInner) { + o.Accounts = v +} + +// GetJars returns the Jars field value if set, zero value otherwise. +func (o *UserInfo) GetJars() []UserInfoJarsInner { + if o == nil || IsNil(o.Jars) { + var ret []UserInfoJarsInner + return ret + } + return o.Jars +} + +// GetJarsOk returns a tuple with the Jars field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfo) GetJarsOk() ([]UserInfoJarsInner, bool) { + if o == nil || IsNil(o.Jars) { + return nil, false + } + return o.Jars, true +} + +// HasJars returns a boolean if a field has been set. +func (o *UserInfo) HasJars() bool { + if o != nil && !IsNil(o.Jars) { + return true + } + + return false +} + +// SetJars gets a reference to the given []UserInfoJarsInner and assigns it to the Jars field. +func (o *UserInfo) SetJars(v []UserInfoJarsInner) { + o.Jars = v +} + +func (o UserInfo) MarshalJSON() ([]byte, error) { + toSerialize,err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o UserInfo) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.ClientId) { + toSerialize["clientId"] = o.ClientId + } + if !IsNil(o.Name) { + toSerialize["name"] = o.Name + } + if !IsNil(o.WebHookUrl) { + toSerialize["webHookUrl"] = o.WebHookUrl + } + if !IsNil(o.Permissions) { + toSerialize["permissions"] = o.Permissions + } + if !IsNil(o.Accounts) { + toSerialize["accounts"] = o.Accounts + } + if !IsNil(o.Jars) { + toSerialize["jars"] = o.Jars + } + return toSerialize, nil +} + +type NullableUserInfo struct { + value *UserInfo + isSet bool +} + +func (v NullableUserInfo) Get() *UserInfo { + return v.value +} + +func (v *NullableUserInfo) Set(val *UserInfo) { + v.value = val + v.isSet = true +} + +func (v NullableUserInfo) IsSet() bool { + return v.isSet +} + +func (v *NullableUserInfo) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableUserInfo(val *UserInfo) *NullableUserInfo { + return &NullableUserInfo{value: val, isSet: true} +} + +func (v NullableUserInfo) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableUserInfo) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + diff --git a/model_user_info_accounts_inner.go b/model_user_info_accounts_inner.go new file mode 100644 index 0000000..4deb70f --- /dev/null +++ b/model_user_info_accounts_inner.go @@ -0,0 +1,423 @@ +/* +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 ( + "encoding/json" +) + +// checks if the UserInfoAccountsInner type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &UserInfoAccountsInner{} + +// UserInfoAccountsInner struct for UserInfoAccountsInner +type UserInfoAccountsInner struct { + // Ідентифікатор рахунку + Id *string `json:"id,omitempty"` + // Ідентифікатор для сервісу https://send.monobank.ua/{sendId} + SendId *string `json:"sendId,omitempty"` + // Баланс рахунку в мінімальних одиницях валюти (копійках, центах) + Balance *float32 `json:"balance,omitempty"` + // Кредитний ліміт + CreditLimit *float32 `json:"creditLimit,omitempty"` + // Тип рахунку + Type *string `json:"type,omitempty"` + // Код валюти рахунку відповідно ISO 4217 + CurrencyCode *float32 `json:"currencyCode,omitempty"` + // Тип кешбеку який нараховується на рахунок + CashbackType *string `json:"cashbackType,omitempty"` + // Перелік замаскованних номерів карт (більше одного може бути у преміальних карт) + MaskedPan *Array `json:"maskedPan,omitempty"` + // IBAN рахунку + Iban *string `json:"iban,omitempty"` +} + +// NewUserInfoAccountsInner instantiates a new UserInfoAccountsInner object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewUserInfoAccountsInner() *UserInfoAccountsInner { + this := UserInfoAccountsInner{} + return &this +} + +// NewUserInfoAccountsInnerWithDefaults instantiates a new UserInfoAccountsInner object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewUserInfoAccountsInnerWithDefaults() *UserInfoAccountsInner { + this := UserInfoAccountsInner{} + return &this +} + +// GetId returns the Id field value if set, zero value otherwise. +func (o *UserInfoAccountsInner) GetId() string { + if o == nil || IsNil(o.Id) { + var ret string + return ret + } + return *o.Id +} + +// GetIdOk returns a tuple with the Id field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfoAccountsInner) GetIdOk() (*string, bool) { + if o == nil || IsNil(o.Id) { + return nil, false + } + return o.Id, true +} + +// HasId returns a boolean if a field has been set. +func (o *UserInfoAccountsInner) HasId() bool { + if o != nil && !IsNil(o.Id) { + return true + } + + return false +} + +// SetId gets a reference to the given string and assigns it to the Id field. +func (o *UserInfoAccountsInner) SetId(v string) { + o.Id = &v +} + +// GetSendId returns the SendId field value if set, zero value otherwise. +func (o *UserInfoAccountsInner) GetSendId() string { + if o == nil || IsNil(o.SendId) { + var ret string + return ret + } + return *o.SendId +} + +// GetSendIdOk returns a tuple with the SendId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfoAccountsInner) GetSendIdOk() (*string, bool) { + if o == nil || IsNil(o.SendId) { + return nil, false + } + return o.SendId, true +} + +// HasSendId returns a boolean if a field has been set. +func (o *UserInfoAccountsInner) HasSendId() bool { + if o != nil && !IsNil(o.SendId) { + return true + } + + return false +} + +// SetSendId gets a reference to the given string and assigns it to the SendId field. +func (o *UserInfoAccountsInner) SetSendId(v string) { + o.SendId = &v +} + +// GetBalance returns the Balance field value if set, zero value otherwise. +func (o *UserInfoAccountsInner) GetBalance() float32 { + if o == nil || IsNil(o.Balance) { + var ret float32 + return ret + } + return *o.Balance +} + +// GetBalanceOk returns a tuple with the Balance field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfoAccountsInner) GetBalanceOk() (*float32, bool) { + if o == nil || IsNil(o.Balance) { + return nil, false + } + return o.Balance, true +} + +// HasBalance returns a boolean if a field has been set. +func (o *UserInfoAccountsInner) HasBalance() bool { + if o != nil && !IsNil(o.Balance) { + return true + } + + return false +} + +// SetBalance gets a reference to the given float32 and assigns it to the Balance field. +func (o *UserInfoAccountsInner) SetBalance(v float32) { + o.Balance = &v +} + +// GetCreditLimit returns the CreditLimit field value if set, zero value otherwise. +func (o *UserInfoAccountsInner) GetCreditLimit() float32 { + if o == nil || IsNil(o.CreditLimit) { + var ret float32 + return ret + } + return *o.CreditLimit +} + +// GetCreditLimitOk returns a tuple with the CreditLimit field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfoAccountsInner) GetCreditLimitOk() (*float32, bool) { + if o == nil || IsNil(o.CreditLimit) { + return nil, false + } + return o.CreditLimit, true +} + +// HasCreditLimit returns a boolean if a field has been set. +func (o *UserInfoAccountsInner) HasCreditLimit() bool { + if o != nil && !IsNil(o.CreditLimit) { + return true + } + + return false +} + +// SetCreditLimit gets a reference to the given float32 and assigns it to the CreditLimit field. +func (o *UserInfoAccountsInner) SetCreditLimit(v float32) { + o.CreditLimit = &v +} + +// GetType returns the Type field value if set, zero value otherwise. +func (o *UserInfoAccountsInner) GetType() string { + if o == nil || IsNil(o.Type) { + var ret string + return ret + } + return *o.Type +} + +// GetTypeOk returns a tuple with the Type field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfoAccountsInner) GetTypeOk() (*string, bool) { + if o == nil || IsNil(o.Type) { + return nil, false + } + return o.Type, true +} + +// HasType returns a boolean if a field has been set. +func (o *UserInfoAccountsInner) HasType() bool { + if o != nil && !IsNil(o.Type) { + return true + } + + return false +} + +// SetType gets a reference to the given string and assigns it to the Type field. +func (o *UserInfoAccountsInner) SetType(v string) { + o.Type = &v +} + +// GetCurrencyCode returns the CurrencyCode field value if set, zero value otherwise. +func (o *UserInfoAccountsInner) GetCurrencyCode() float32 { + if o == nil || IsNil(o.CurrencyCode) { + var ret float32 + return ret + } + return *o.CurrencyCode +} + +// GetCurrencyCodeOk returns a tuple with the CurrencyCode field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfoAccountsInner) GetCurrencyCodeOk() (*float32, bool) { + if o == nil || IsNil(o.CurrencyCode) { + return nil, false + } + return o.CurrencyCode, true +} + +// HasCurrencyCode returns a boolean if a field has been set. +func (o *UserInfoAccountsInner) HasCurrencyCode() bool { + if o != nil && !IsNil(o.CurrencyCode) { + return true + } + + return false +} + +// SetCurrencyCode gets a reference to the given float32 and assigns it to the CurrencyCode field. +func (o *UserInfoAccountsInner) SetCurrencyCode(v float32) { + o.CurrencyCode = &v +} + +// GetCashbackType returns the CashbackType field value if set, zero value otherwise. +func (o *UserInfoAccountsInner) GetCashbackType() string { + if o == nil || IsNil(o.CashbackType) { + var ret string + return ret + } + return *o.CashbackType +} + +// GetCashbackTypeOk returns a tuple with the CashbackType field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfoAccountsInner) GetCashbackTypeOk() (*string, bool) { + if o == nil || IsNil(o.CashbackType) { + return nil, false + } + return o.CashbackType, true +} + +// HasCashbackType returns a boolean if a field has been set. +func (o *UserInfoAccountsInner) HasCashbackType() bool { + if o != nil && !IsNil(o.CashbackType) { + return true + } + + return false +} + +// SetCashbackType gets a reference to the given string and assigns it to the CashbackType field. +func (o *UserInfoAccountsInner) SetCashbackType(v string) { + o.CashbackType = &v +} + +// GetMaskedPan returns the MaskedPan field value if set, zero value otherwise. +func (o *UserInfoAccountsInner) GetMaskedPan() Array { + if o == nil || IsNil(o.MaskedPan) { + var ret Array + return ret + } + return *o.MaskedPan +} + +// GetMaskedPanOk returns a tuple with the MaskedPan field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfoAccountsInner) GetMaskedPanOk() (*Array, bool) { + if o == nil || IsNil(o.MaskedPan) { + return nil, false + } + return o.MaskedPan, true +} + +// HasMaskedPan returns a boolean if a field has been set. +func (o *UserInfoAccountsInner) HasMaskedPan() bool { + if o != nil && !IsNil(o.MaskedPan) { + return true + } + + return false +} + +// SetMaskedPan gets a reference to the given Array and assigns it to the MaskedPan field. +func (o *UserInfoAccountsInner) SetMaskedPan(v Array) { + o.MaskedPan = &v +} + +// GetIban returns the Iban field value if set, zero value otherwise. +func (o *UserInfoAccountsInner) GetIban() string { + if o == nil || IsNil(o.Iban) { + var ret string + return ret + } + return *o.Iban +} + +// GetIbanOk returns a tuple with the Iban field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfoAccountsInner) GetIbanOk() (*string, bool) { + if o == nil || IsNil(o.Iban) { + return nil, false + } + return o.Iban, true +} + +// HasIban returns a boolean if a field has been set. +func (o *UserInfoAccountsInner) HasIban() bool { + if o != nil && !IsNil(o.Iban) { + return true + } + + return false +} + +// SetIban gets a reference to the given string and assigns it to the Iban field. +func (o *UserInfoAccountsInner) SetIban(v string) { + o.Iban = &v +} + +func (o UserInfoAccountsInner) MarshalJSON() ([]byte, error) { + toSerialize,err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o UserInfoAccountsInner) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Id) { + toSerialize["id"] = o.Id + } + if !IsNil(o.SendId) { + toSerialize["sendId"] = o.SendId + } + if !IsNil(o.Balance) { + toSerialize["balance"] = o.Balance + } + if !IsNil(o.CreditLimit) { + toSerialize["creditLimit"] = o.CreditLimit + } + if !IsNil(o.Type) { + toSerialize["type"] = o.Type + } + if !IsNil(o.CurrencyCode) { + toSerialize["currencyCode"] = o.CurrencyCode + } + if !IsNil(o.CashbackType) { + toSerialize["cashbackType"] = o.CashbackType + } + if !IsNil(o.MaskedPan) { + toSerialize["maskedPan"] = o.MaskedPan + } + if !IsNil(o.Iban) { + toSerialize["iban"] = o.Iban + } + return toSerialize, nil +} + +type NullableUserInfoAccountsInner struct { + value *UserInfoAccountsInner + isSet bool +} + +func (v NullableUserInfoAccountsInner) Get() *UserInfoAccountsInner { + return v.value +} + +func (v *NullableUserInfoAccountsInner) Set(val *UserInfoAccountsInner) { + v.value = val + v.isSet = true +} + +func (v NullableUserInfoAccountsInner) IsSet() bool { + return v.isSet +} + +func (v *NullableUserInfoAccountsInner) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableUserInfoAccountsInner(val *UserInfoAccountsInner) *NullableUserInfoAccountsInner { + return &NullableUserInfoAccountsInner{value: val, isSet: true} +} + +func (v NullableUserInfoAccountsInner) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableUserInfoAccountsInner) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + diff --git a/model_user_info_jars_inner.go b/model_user_info_jars_inner.go new file mode 100644 index 0000000..b46af0b --- /dev/null +++ b/model_user_info_jars_inner.go @@ -0,0 +1,349 @@ +/* +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 ( + "encoding/json" +) + +// checks if the UserInfoJarsInner type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &UserInfoJarsInner{} + +// UserInfoJarsInner struct for UserInfoJarsInner +type UserInfoJarsInner struct { + // Ідентифікатор банки + Id *string `json:"id,omitempty"` + // Ідентифікатор для сервісу https://send.monobank.ua/{sendId} + SendId *string `json:"sendId,omitempty"` + // Назва банки + Title *string `json:"title,omitempty"` + // Опис банки + Description *string `json:"description,omitempty"` + // Код валюти банки відповідно ISO 4217 + CurrencyCode *float32 `json:"currencyCode,omitempty"` + // Баланс банки в мінімальних одиницях валюти (копійках, центах) + Balance *float32 `json:"balance,omitempty"` + // Цільова сума для накопичення в банці в мінімальних одиницях валюти (копійках, центах) + Goal *float32 `json:"goal,omitempty"` +} + +// NewUserInfoJarsInner instantiates a new UserInfoJarsInner object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewUserInfoJarsInner() *UserInfoJarsInner { + this := UserInfoJarsInner{} + return &this +} + +// NewUserInfoJarsInnerWithDefaults instantiates a new UserInfoJarsInner object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewUserInfoJarsInnerWithDefaults() *UserInfoJarsInner { + this := UserInfoJarsInner{} + return &this +} + +// GetId returns the Id field value if set, zero value otherwise. +func (o *UserInfoJarsInner) GetId() string { + if o == nil || IsNil(o.Id) { + var ret string + return ret + } + return *o.Id +} + +// GetIdOk returns a tuple with the Id field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfoJarsInner) GetIdOk() (*string, bool) { + if o == nil || IsNil(o.Id) { + return nil, false + } + return o.Id, true +} + +// HasId returns a boolean if a field has been set. +func (o *UserInfoJarsInner) HasId() bool { + if o != nil && !IsNil(o.Id) { + return true + } + + return false +} + +// SetId gets a reference to the given string and assigns it to the Id field. +func (o *UserInfoJarsInner) SetId(v string) { + o.Id = &v +} + +// GetSendId returns the SendId field value if set, zero value otherwise. +func (o *UserInfoJarsInner) GetSendId() string { + if o == nil || IsNil(o.SendId) { + var ret string + return ret + } + return *o.SendId +} + +// GetSendIdOk returns a tuple with the SendId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfoJarsInner) GetSendIdOk() (*string, bool) { + if o == nil || IsNil(o.SendId) { + return nil, false + } + return o.SendId, true +} + +// HasSendId returns a boolean if a field has been set. +func (o *UserInfoJarsInner) HasSendId() bool { + if o != nil && !IsNil(o.SendId) { + return true + } + + return false +} + +// SetSendId gets a reference to the given string and assigns it to the SendId field. +func (o *UserInfoJarsInner) SetSendId(v string) { + o.SendId = &v +} + +// GetTitle returns the Title field value if set, zero value otherwise. +func (o *UserInfoJarsInner) GetTitle() string { + if o == nil || IsNil(o.Title) { + var ret string + return ret + } + return *o.Title +} + +// GetTitleOk returns a tuple with the Title field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfoJarsInner) GetTitleOk() (*string, bool) { + if o == nil || IsNil(o.Title) { + return nil, false + } + return o.Title, true +} + +// HasTitle returns a boolean if a field has been set. +func (o *UserInfoJarsInner) HasTitle() bool { + if o != nil && !IsNil(o.Title) { + return true + } + + return false +} + +// SetTitle gets a reference to the given string and assigns it to the Title field. +func (o *UserInfoJarsInner) SetTitle(v string) { + o.Title = &v +} + +// GetDescription returns the Description field value if set, zero value otherwise. +func (o *UserInfoJarsInner) GetDescription() string { + if o == nil || IsNil(o.Description) { + var ret string + return ret + } + return *o.Description +} + +// GetDescriptionOk returns a tuple with the Description field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfoJarsInner) GetDescriptionOk() (*string, bool) { + if o == nil || IsNil(o.Description) { + return nil, false + } + return o.Description, true +} + +// HasDescription returns a boolean if a field has been set. +func (o *UserInfoJarsInner) HasDescription() bool { + if o != nil && !IsNil(o.Description) { + return true + } + + return false +} + +// SetDescription gets a reference to the given string and assigns it to the Description field. +func (o *UserInfoJarsInner) SetDescription(v string) { + o.Description = &v +} + +// GetCurrencyCode returns the CurrencyCode field value if set, zero value otherwise. +func (o *UserInfoJarsInner) GetCurrencyCode() float32 { + if o == nil || IsNil(o.CurrencyCode) { + var ret float32 + return ret + } + return *o.CurrencyCode +} + +// GetCurrencyCodeOk returns a tuple with the CurrencyCode field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfoJarsInner) GetCurrencyCodeOk() (*float32, bool) { + if o == nil || IsNil(o.CurrencyCode) { + return nil, false + } + return o.CurrencyCode, true +} + +// HasCurrencyCode returns a boolean if a field has been set. +func (o *UserInfoJarsInner) HasCurrencyCode() bool { + if o != nil && !IsNil(o.CurrencyCode) { + return true + } + + return false +} + +// SetCurrencyCode gets a reference to the given float32 and assigns it to the CurrencyCode field. +func (o *UserInfoJarsInner) SetCurrencyCode(v float32) { + o.CurrencyCode = &v +} + +// GetBalance returns the Balance field value if set, zero value otherwise. +func (o *UserInfoJarsInner) GetBalance() float32 { + if o == nil || IsNil(o.Balance) { + var ret float32 + return ret + } + return *o.Balance +} + +// GetBalanceOk returns a tuple with the Balance field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfoJarsInner) GetBalanceOk() (*float32, bool) { + if o == nil || IsNil(o.Balance) { + return nil, false + } + return o.Balance, true +} + +// HasBalance returns a boolean if a field has been set. +func (o *UserInfoJarsInner) HasBalance() bool { + if o != nil && !IsNil(o.Balance) { + return true + } + + return false +} + +// SetBalance gets a reference to the given float32 and assigns it to the Balance field. +func (o *UserInfoJarsInner) SetBalance(v float32) { + o.Balance = &v +} + +// GetGoal returns the Goal field value if set, zero value otherwise. +func (o *UserInfoJarsInner) GetGoal() float32 { + if o == nil || IsNil(o.Goal) { + var ret float32 + return ret + } + return *o.Goal +} + +// GetGoalOk returns a tuple with the Goal field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserInfoJarsInner) GetGoalOk() (*float32, bool) { + if o == nil || IsNil(o.Goal) { + return nil, false + } + return o.Goal, true +} + +// HasGoal returns a boolean if a field has been set. +func (o *UserInfoJarsInner) HasGoal() bool { + if o != nil && !IsNil(o.Goal) { + return true + } + + return false +} + +// SetGoal gets a reference to the given float32 and assigns it to the Goal field. +func (o *UserInfoJarsInner) SetGoal(v float32) { + o.Goal = &v +} + +func (o UserInfoJarsInner) MarshalJSON() ([]byte, error) { + toSerialize,err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o UserInfoJarsInner) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Id) { + toSerialize["id"] = o.Id + } + if !IsNil(o.SendId) { + toSerialize["sendId"] = o.SendId + } + if !IsNil(o.Title) { + toSerialize["title"] = o.Title + } + if !IsNil(o.Description) { + toSerialize["description"] = o.Description + } + if !IsNil(o.CurrencyCode) { + toSerialize["currencyCode"] = o.CurrencyCode + } + if !IsNil(o.Balance) { + toSerialize["balance"] = o.Balance + } + if !IsNil(o.Goal) { + toSerialize["goal"] = o.Goal + } + return toSerialize, nil +} + +type NullableUserInfoJarsInner struct { + value *UserInfoJarsInner + isSet bool +} + +func (v NullableUserInfoJarsInner) Get() *UserInfoJarsInner { + return v.value +} + +func (v *NullableUserInfoJarsInner) Set(val *UserInfoJarsInner) { + v.value = val + v.isSet = true +} + +func (v NullableUserInfoJarsInner) IsSet() bool { + return v.isSet +} + +func (v *NullableUserInfoJarsInner) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableUserInfoJarsInner(val *UserInfoJarsInner) *NullableUserInfoJarsInner { + return &NullableUserInfoJarsInner{value: val, isSet: true} +} + +func (v NullableUserInfoJarsInner) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableUserInfoJarsInner) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + + diff --git a/response.go b/response.go new file mode 100644 index 0000000..19166ab --- /dev/null +++ b/response.go @@ -0,0 +1,47 @@ +/* +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 ( + "net/http" +) + +// APIResponse stores the API response returned by the server. +type APIResponse struct { + *http.Response `json:"-"` + Message string `json:"message,omitempty"` + // Operation is the name of the OpenAPI operation. + Operation string `json:"operation,omitempty"` + // RequestURL is the request URL. This value is always available, even if the + // embedded *http.Response is nil. + RequestURL string `json:"url,omitempty"` + // Method is the HTTP method used for the request. This value is always + // available, even if the embedded *http.Response is nil. + Method string `json:"method,omitempty"` + // Payload holds the contents of the response body (which may be nil or empty). + // This is provided here as the raw response.Body() reader will have already + // been drained. + Payload []byte `json:"-"` +} + +// NewAPIResponse returns a new APIResponse object. +func NewAPIResponse(r *http.Response) *APIResponse { + + response := &APIResponse{Response: r} + return response +} + +// NewAPIResponseWithError returns a new APIResponse object with the provided error message. +func NewAPIResponseWithError(errorMessage string) *APIResponse { + + response := &APIResponse{Message: errorMessage} + return response +} diff --git a/swagger.json b/swagger.json new file mode 100644 index 0000000..65052f8 --- /dev/null +++ b/swagger.json @@ -0,0 +1,498 @@ +{ + "openapi": "3.0.3", + "servers": [ + { + "url": "https://api.monobank.ua" + } + ], + "info": { + "title": "Monobank open API", + "version": "v2303", + "description": "API для отримання інформації про виписки та стан особистого рахунку та рахунків ФОП. Для надання доступу потрібно пройти авторизацію у особистому кабінеті https://api.monobank.ua/ та отримати токен для персонального використання.\n\nЯкщо у вас є запитання щодо роботи API, запрошуємо до ком'юніті у [Telegram-групі](https://t.me/joinchat/FiAEWhDf-QzTqM4wzEtffw).\nAPI недоступне для клієнтів до 16 років, дані за дитячими рахунками доступні з батьківського акаунту.\nЯкщо у вас є сервіс і ви хочете централізовано приєднатися до API для надання послуг клієнтам, потрібно підключитися до [API для провайдерів послуг](/docs/corporate.html), що має більше можливостей. Якщо дані клієнтів не будуть надходити на ваші сервери або ви робите сервіс для своєї родини, використання корпоративного API необов'язкове. Розробка бібліотек або програм, які будуть використовувати клієнти особисто (дані клієнта не будуть проходити черeз вузли розробника), також не потребують використання корпоративного API.\n\nЦе надасть змогу клієнтам monobank авторизуватись у вашому сервісі (наприклад, у фінансовому менеджері) для надання інформації про стан рахунку або виписки.\n\nУ разі виявлення експлуатації цього API в якості корпоративного, банк залишає за собою право накласти санкції на компанію.", + "x-logo": { + "url": "logo.png", + "altText": "logo" + } + }, + "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", + "schema": { + "type": "string" + }, + "required": true, + "example": "u3AulkpZFI1lIuGsik6vuPsVWqN7GoWs6o_MO2sdf301", + "description": "Token для особистого доступу до API" + } + ], + "responses": { + "200": { + "description": "Statement list", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserInfo" + } + } + } + } + } + } + }, + "/personal/webhook": { + "post": { + "tags": [ + "Клієнтські персональні дані" + ], + "summary": "Встановлення WebHook", + "description": "Встановлення URL користувача:\n- Для підтвердження коректності наданої адреси, на неї надсилається GET-запит. Сервер має відповісти строго HTTP статус-кодом 200, і ніяким іншим. Якщо валідацію пройдено, на задану адресу починають надсилатися POST запити з подіями.\n- Події надсилаються у наступному вигляді: POST запит на задану адресу у форматі `{type:\"StatementItem\", data:{account:\"...\", statementItem:{#StatementItem}}}`. Якщо сервіс користувача не відповість протягом 5с на команду, сервіс повторить спробу ще через 60 та 600 секунд. Якщо на третю спробу відповідь отримана не буде, функція буде вимкнута. Відповідь сервера має строго містити HTTP статус-код 200.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetWebHook" + } + } + } + }, + "parameters": [ + { + "name": "X-Token", + "in": "header", + "schema": { + "type": "string" + }, + "required": true, + "description": "Token для особистого доступу до API" + } + ], + "responses": { + "200": { + "description": "ok" + } + } + } + }, + "/personal/statement/{account}/{from}/{to}": { + "get": { + "tags": [ + "Клієнтські персональні дані" + ], + "summary": "Виписка", + "description": "Отримання виписки за час від {from} до {to} часу в секундах в форматі Unix time. Максимальний час, за який можливо отримати виписку — 31 доба + 1 година (2682000 секунд).\n\nОбмеження на використання функції — не частіше ніж 1 раз на 60 секунд.\n\nПовертає 500 транзакцій з кінця, тобто від часу to до from. Якщо кількість транзакцій = 500, потрібно зробити ще один запит, зменшивши час to до часу останнього платежу, з відповіді. Якщо знову кількість транзакцій = 500, то виконуєте запити до того часу, поки кількість транзакцій не буде < 500. Відповідно, якщо кількість транзакцій < 500, то вже отримано всі платежі за вказаний період.", + "parameters": [ + { + "name": "X-Token", + "in": "header", + "schema": { + "type": "string" + }, + "required": true, + "description": "Token для особистого доступу до API" + }, + { + "name": "account", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "description": "Ідентифікатор рахунку або банки з переліків Statement list або 0 - дефолтний рахунок." + }, + { + "name": "from", + "in": "path", + "schema": { + "type": "string" + }, + "required": true, + "example": "1546304461", + "description": "Початок часу виписки." + }, + { + "name": "to", + "in": "path", + "schema": { + "type": "string" + }, + "required": false, + "example": "1546306461", + "description": "Останній час виписки (якщо відсутній, буде використовуватись поточний час)." + } + ], + "responses": { + "200": { + "description": "Statement list", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StatementItems" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "SetWebHook": { + "type": "object", + "description": "URL для надсиляння подій по зміні балансу рахунків фізичних осіб, ФОП та банок", + "properties": { + "webHookUrl": { + "example": "https://example.com/some_random_data_for_security", + "type": "string" + } + } + }, + "UserInfo": { + "type": "object", + "description": "Опис клієнта та його рахунків і банок.", + "properties": { + "clientId": { + "description": "Ідентифікатор клієнта (збігається з id для send.monobank.ua)", + "type": "string", + "example": "3MSaMMtczs" + }, + "name": { + "description": "Ім'я клієнта", + "type": "string", + "example": "Мазепа Іван" + }, + "webHookUrl": { + "description": "URL для надсиляння подій по зміні балансу рахунку", + "type": "string", + "example": "https://example.com/some_random_data_for_security" + }, + "permissions": { + "description": "Перелік прав, які які надає сервіс (1 літера на 1 permission).", + "type": "string", + "example": "psfj" + }, + "accounts": { + "type": "array", + "description": "Перелік доступних рахунків", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Ідентифікатор рахунку", + "example": "kKGVoZuHWzqVoZuH" + }, + "sendId": { + "type": "string", + "description": "Ідентифікатор для сервісу https://send.monobank.ua/{sendId}", + "example": "uHWzqVoZuH" + }, + "balance": { + "type": "number", + "format": "int64", + "description": "Баланс рахунку в мінімальних одиницях валюти (копійках, центах)", + "example": 10000000 + }, + "creditLimit": { + "type": "number", + "format": "int64", + "description": "Кредитний ліміт", + "example": 10000000 + }, + "type": { + "type": "string", + "description": "Тип рахунку", + "enum": [ + "black", + "white", + "platinum", + "iron", + "fop", + "yellow", + "eAid" + ], + "example": "black" + }, + "currencyCode": { + "type": "number", + "format": "int32", + "description": "Код валюти рахунку відповідно ISO 4217", + "example": 980 + }, + "cashbackType": { + "type": "string", + "description": "Тип кешбеку який нараховується на рахунок", + "enum": [ + "None", + "UAH", + "Miles" + ], + "example": "UAH" + }, + "maskedPan": { + "type": "array", + "description": "Перелік замаскованних номерів карт (більше одного може бути у преміальних карт)", + "example": [ + "537541******1234" + ] + }, + "iban": { + "type": "string", + "description": "IBAN рахунку", + "example": "UA733220010000026201234567890" + } + } + } + }, + "jars": { + "type": "array", + "description": "Перелік банок", + "items": { + "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", + "format": "int32", + "example": 980, + "description": "Код валюти банки відповідно ISO 4217" + }, + "balance": { + "type": "number", + "format": "int64", + "description": "Баланс банки в мінімальних одиницях валюти (копійках, центах)", + "example": 1000000 + }, + "goal": { + "type": "number", + "format": "int64", + "description": "Цільова сума для накопичення в банці в мінімальних одиницях валюти (копійках, центах)", + "example": 10000000 + } + } + } + } + } + }, + "StatementItems": { + "type": "array", + "description": "Перелік транзакцій за вказанний час", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "ZuHWzqkKGVo=", + "description": "Унікальний id транзакції" + }, + "time": { + "type": "number", + "format": "int64", + "example": 1554466347, + "description": "Час транзакції в секундах в форматі Unix time" + }, + "description": { + "type": "string", + "example": "Покупка щастя", + "description": "Опис транзакцій" + }, + "mcc": { + "type": "number", + "format": "int32", + "example": 7997, + "description": "Код типу транзакції (Merchant Category Code), відповідно ISO 18245" + }, + "originalMcc": { + "type": "number", + "format": "int32", + "example": 7997, + "description": "Оригінальний код типу транзакції (Merchant Category Code), відповідно ISO 18245" + }, + "hold": { + "type": "boolean", + "example": false, + "description": "Статус блокування суми (детальніше у [wiki](https://en.wikipedia.org/wiki/Authorization_hold))" + }, + "amount": { + "type": "number", + "format": "int64", + "example": -95000, + "description": "Сума у валюті рахунку в мінімальних одиницях валюти (копійках, центах)" + }, + "operationAmount": { + "type": "number", + "format": "int64", + "example": -95000, + "description": "Сума у валюті транзакції в мінімальних одиницях валюти (копійках, центах)" + }, + "currencyCode": { + "type": "number", + "format": "int32", + "example": 980, + "description": "Код валюти рахунку відповідно ISO 4217" + }, + "commissionRate": { + "type": "number", + "format": "int64", + "example": 0, + "description": "Розмір комісії в мінімальних одиницях валюти (копійках, центах)" + }, + "cashbackAmount": { + "type": "number", + "format": "int64", + "example": 19000, + "description": "Розмір кешбеку в мінімальних одиницях валюти (копійках, центах)" + }, + "balance": { + "type": "number", + "format": "int64", + "example": 10050000, + "description": "Баланс рахунку в мінімальних одиницях валюти (копійках, центах)" + }, + "comment": { + "type": "string", + "example": "За каву", + "description": "Коментар до переказу, уведений користувачем. Якщо не вказаний, поле буде відсутнім" + }, + "receiptId": { + "type": "string", + "example": "XXXX-XXXX-XXXX-XXXX", + "description": "Номер квитанції для check.gov.ua. Поле може бути відсутнім" + }, + "invoiceId": { + "type": "string", + "example": "2103.в.27", + "description": "Номер квитанції ФОПа, приходить у випадку якщо це операція із зарахуванням коштів" + }, + "counterEdrpou": { + "type": "string", + "example": "3096889974", + "description": "ЄДРПОУ контрагента, присутній лише для елементів виписки рахунків ФОП" + }, + "counterIban": { + "type": "string", + "example": "UA898999980000355639201001404", + "description": "IBAN контрагента, присутній лише для елементів виписки рахунків ФОП" + }, + "counterName": { + "type": "string", + "example": "ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ «ВОРОНА»", + "description": "Найменування контрагента" + } + } + } + }, + "CurrencyInfo": { + "type": "array", + "description": "Перелік курсів. Кожна валютна пара може мати одне і більше полів з rateSell, rateBuy, rateCross.", + "items": { + "type": "object", + "properties": { + "currencyCodeA": { + "type": "number", + "format": "int32", + "example": 840, + "description": "Код валюти рахунку відповідно ISO 4217" + }, + "currencyCodeB": { + "type": "number", + "format": "int32", + "example": 980, + "description": "Код валюти рахунку відповідно ISO 4217" + }, + "date": { + "type": "number", + "format": "int64", + "example": 1552392228, + "description": "Час курсу в секундах в форматі Unix time" + }, + "rateSell": { + "type": "number", + "format": "float", + "example": 27 + }, + "rateBuy": { + "type": "number", + "format": "float", + "example": 27.2 + }, + "rateCross": { + "type": "number", + "format": "float", + "example": 27.1 + } + } + } + }, + "Error": { + "type": "object", + "properties": { + "errorDescription": { + "type": "string", + "description": "Текст помилки для кінцевого користувача, для автоматичного оброблення потрібно аналізувати HTTP код відповіді (200, 404, 429 та інші)" + } + } + } + } + }, + "tags": [ + { + "name": "Публічні дані", + "description": "Загальна інформація що надається без авторизації." + }, + { + "name": "Клієнтські персональні дані", + "description": "Інформація, що надається тільки за наявстю token-а доступу, який клієнт може отримати в особистому кабінеті https://api.monobank.ua/" + } + ] +} diff --git a/test/api__test.go b/test/api__test.go new file mode 100644 index 0000000..9bc13d8 --- /dev/null +++ b/test/api__test.go @@ -0,0 +1,76 @@ +/* +Monobank open API + +Testing DefaultApiService + +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); + +package monobank + +import ( + "context" + openapiclient "gitea.stuzer.link/stuzer05/go-monobank" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "testing" +) + +func Test_openapi_DefaultApiService(t *testing.T) { + + configuration := openapiclient.NewConfiguration() + apiClient := openapiclient.NewAPIClient(configuration) + + t.Run("Test DefaultApiService BankCurrencyGet", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + resp, httpRes, err := apiClient.DefaultApi.BankCurrencyGet(context.Background()).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test DefaultApiService PersonalClientInfoGet", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + resp, httpRes, err := apiClient.DefaultApi.PersonalClientInfoGet(context.Background()).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test DefaultApiService PersonalStatementAccountFromToGet", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + var account string + var from string + var to string + + resp, httpRes, err := apiClient.DefaultApi.PersonalStatementAccountFromToGet(context.Background(), account, from, to).Execute() + + require.Nil(t, err) + require.NotNil(t, resp) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + + t.Run("Test DefaultApiService PersonalWebhookPost", func(t *testing.T) { + + t.Skip("skip test") // remove to run test + + httpRes, err := apiClient.DefaultApi.PersonalWebhookPost(context.Background()).Execute() + + require.Nil(t, err) + assert.Equal(t, 200, httpRes.StatusCode) + + }) + +} diff --git a/utils.go b/utils.go new file mode 100644 index 0000000..efa96af --- /dev/null +++ b/utils.go @@ -0,0 +1,347 @@ +/* +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 ( + "encoding/json" + "reflect" + "time" +) + +// PtrBool is a helper routine that returns a pointer to given boolean value. +func PtrBool(v bool) *bool { return &v } + +// PtrInt is a helper routine that returns a pointer to given integer value. +func PtrInt(v int) *int { return &v } + +// PtrInt32 is a helper routine that returns a pointer to given integer value. +func PtrInt32(v int32) *int32 { return &v } + +// PtrInt64 is a helper routine that returns a pointer to given integer value. +func PtrInt64(v int64) *int64 { return &v } + +// PtrFloat32 is a helper routine that returns a pointer to given float value. +func PtrFloat32(v float32) *float32 { return &v } + +// PtrFloat64 is a helper routine that returns a pointer to given float value. +func PtrFloat64(v float64) *float64 { return &v } + +// PtrString is a helper routine that returns a pointer to given string value. +func PtrString(v string) *string { return &v } + +// PtrTime is helper routine that returns a pointer to given Time value. +func PtrTime(v time.Time) *time.Time { return &v } + +type NullableBool struct { + value *bool + isSet bool +} + +func (v NullableBool) Get() *bool { + return v.value +} + +func (v *NullableBool) Set(val *bool) { + v.value = val + v.isSet = true +} + +func (v NullableBool) IsSet() bool { + return v.isSet +} + +func (v *NullableBool) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableBool(val *bool) *NullableBool { + return &NullableBool{value: val, isSet: true} +} + +func (v NullableBool) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableBool) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableInt struct { + value *int + isSet bool +} + +func (v NullableInt) Get() *int { + return v.value +} + +func (v *NullableInt) Set(val *int) { + v.value = val + v.isSet = true +} + +func (v NullableInt) IsSet() bool { + return v.isSet +} + +func (v *NullableInt) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInt(val *int) *NullableInt { + return &NullableInt{value: val, isSet: true} +} + +func (v NullableInt) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInt) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableInt32 struct { + value *int32 + isSet bool +} + +func (v NullableInt32) Get() *int32 { + return v.value +} + +func (v *NullableInt32) Set(val *int32) { + v.value = val + v.isSet = true +} + +func (v NullableInt32) IsSet() bool { + return v.isSet +} + +func (v *NullableInt32) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInt32(val *int32) *NullableInt32 { + return &NullableInt32{value: val, isSet: true} +} + +func (v NullableInt32) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInt32) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableInt64 struct { + value *int64 + isSet bool +} + +func (v NullableInt64) Get() *int64 { + return v.value +} + +func (v *NullableInt64) Set(val *int64) { + v.value = val + v.isSet = true +} + +func (v NullableInt64) IsSet() bool { + return v.isSet +} + +func (v *NullableInt64) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInt64(val *int64) *NullableInt64 { + return &NullableInt64{value: val, isSet: true} +} + +func (v NullableInt64) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInt64) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableFloat32 struct { + value *float32 + isSet bool +} + +func (v NullableFloat32) Get() *float32 { + return v.value +} + +func (v *NullableFloat32) Set(val *float32) { + v.value = val + v.isSet = true +} + +func (v NullableFloat32) IsSet() bool { + return v.isSet +} + +func (v *NullableFloat32) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFloat32(val *float32) *NullableFloat32 { + return &NullableFloat32{value: val, isSet: true} +} + +func (v NullableFloat32) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFloat32) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableFloat64 struct { + value *float64 + isSet bool +} + +func (v NullableFloat64) Get() *float64 { + return v.value +} + +func (v *NullableFloat64) Set(val *float64) { + v.value = val + v.isSet = true +} + +func (v NullableFloat64) IsSet() bool { + return v.isSet +} + +func (v *NullableFloat64) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFloat64(val *float64) *NullableFloat64 { + return &NullableFloat64{value: val, isSet: true} +} + +func (v NullableFloat64) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFloat64) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableString struct { + value *string + isSet bool +} + +func (v NullableString) Get() *string { + return v.value +} + +func (v *NullableString) Set(val *string) { + v.value = val + v.isSet = true +} + +func (v NullableString) IsSet() bool { + return v.isSet +} + +func (v *NullableString) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableString(val *string) *NullableString { + return &NullableString{value: val, isSet: true} +} + +func (v NullableString) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableString) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableTime struct { + value *time.Time + isSet bool +} + +func (v NullableTime) Get() *time.Time { + return v.value +} + +func (v *NullableTime) Set(val *time.Time) { + v.value = val + v.isSet = true +} + +func (v NullableTime) IsSet() bool { + return v.isSet +} + +func (v *NullableTime) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableTime(val *time.Time) *NullableTime { + return &NullableTime{value: val, isSet: true} +} + +func (v NullableTime) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableTime) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +// IsNil checks if an input is nil +func IsNil(i interface{}) bool { + if i == nil { + return true + } + switch reflect.TypeOf(i).Kind() { + case reflect.Chan, reflect.Func, reflect.Map, reflect.Ptr, reflect.UnsafePointer, reflect.Interface, reflect.Slice: + return reflect.ValueOf(i).IsNil() + case reflect.Array: + return reflect.ValueOf(i).IsZero() + } + return false +} + +type MappedNullable interface { + ToMap() (map[string]interface{}, error) +}