first commit

This commit is contained in:
Illya Marchenko 2024-04-10 22:18:44 +03:00
commit 88dd10c967
Signed by: stuzer05
GPG Key ID: A6ABAAA9268F9F4F
32 changed files with 7263 additions and 0 deletions

26
.gitignore vendored Normal file

@ -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

23
.openapi-generator-ignore Normal file

@ -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

29
.openapi-generator/FILES Normal file

@ -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

@ -0,0 +1 @@
7.4.0

8
.travis.yml Normal file

@ -0,0 +1,8 @@
language: go
install:
- go get -d -v .
script:
- go build -v ./

130
README.md Normal file

@ -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

511
api/openapi.yaml Normal file

@ -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

471
api_.go Normal file

@ -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
}

660
client.go Normal file

@ -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<lenIndValue;i++ {
var arrayValue = indValue.Index(i)
parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, arrayValue.Interface(), collectionType)
}
return
case reflect.Map:
var indValue = reflect.ValueOf(obj)
if indValue == reflect.ValueOf(nil) {
return
}
iter := indValue.MapRange()
for iter.Next() {
k,v := iter.Key(), iter.Value()
parameterAddToHeaderOrQuery(headerOrQueryParams, fmt.Sprintf("%s[%s]", keyPrefix, k.String()), v.Interface(), collectionType)
}
return
case reflect.Interface:
fallthrough
case reflect.Ptr:
parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, v.Elem().Interface(), collectionType)
return
case reflect.Int, reflect.Int8, reflect.Int16,
reflect.Int32, reflect.Int64:
value = strconv.FormatInt(v.Int(), 10)
case reflect.Uint, reflect.Uint8, reflect.Uint16,
reflect.Uint32, reflect.Uint64, reflect.Uintptr:
value = strconv.FormatUint(v.Uint(), 10)
case reflect.Float32, reflect.Float64:
value = strconv.FormatFloat(v.Float(), 'g', -1, 32)
case reflect.Bool:
value = strconv.FormatBool(v.Bool())
case reflect.String:
value = v.String()
default:
value = v.Type().String() + " value"
}
}
switch valuesMap := headerOrQueryParams.(type) {
case url.Values:
if collectionType == "csv" && valuesMap.Get(keyPrefix) != "" {
valuesMap.Set(keyPrefix, valuesMap.Get(keyPrefix) + "," + value)
} else {
valuesMap.Add(keyPrefix, value)
}
break
case map[string]string:
valuesMap[keyPrefix] = value
break
}
}
// helper for converting interface{} parameters to json strings
func parameterToJson(obj interface{}) (string, error) {
jsonBuf, err := json.Marshal(obj)
if err != nil {
return "", err
}
return string(jsonBuf), err
}
// callAPI do the request.
func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) {
if c.cfg.Debug {
dump, err := httputil.DumpRequestOut(request, true)
if err != nil {
return nil, err
}
log.Printf("\n%s\n", string(dump))
}
resp, err := c.cfg.HTTPClient.Do(request)
if err != nil {
return resp, err
}
if c.cfg.Debug {
dump, err := httputil.DumpResponse(resp, true)
if err != nil {
return resp, err
}
log.Printf("\n%s\n", string(dump))
}
return resp, err
}
// Allow modification of underlying config for alternate implementations and testing
// Caution: modifying the configuration while live can cause data races and potentially unwanted behavior
func (c *APIClient) GetConfig() *Configuration {
return c.cfg
}
type formFile struct {
fileBytes []byte
fileName string
formFileName string
}
// prepareRequest build the request
func (c *APIClient) prepareRequest(
ctx context.Context,
path string, method string,
postBody interface{},
headerParams map[string]string,
queryParams url.Values,
formParams url.Values,
formFiles []formFile) (localVarRequest *http.Request, err error) {
var body *bytes.Buffer
// Detect postBody type and post.
if postBody != nil {
contentType := headerParams["Content-Type"]
if contentType == "" {
contentType = detectContentType(postBody)
headerParams["Content-Type"] = contentType
}
body, err = setBody(postBody, contentType)
if err != nil {
return nil, err
}
}
// add form parameters and file if available.
if strings.HasPrefix(headerParams["Content-Type"], "multipart/form-data") && len(formParams) > 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))
}

215
configuration.go Normal file

@ -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)
}

186
docs/CurrencyInfoInner.md Normal file

@ -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)

283
docs/DefaultApi.md Normal file

@ -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)

56
docs/Error.md Normal file

@ -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)

56
docs/SetWebHook.md Normal file

@ -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)

498
docs/StatementItemsInner.md Normal file

@ -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)

186
docs/UserInfo.md Normal file

@ -0,0 +1,186 @@
# UserInfo
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**ClientId** | Pointer to **string** | Ідентифікатор клієнта (збігається з id для send.monobank.ua) | [optional]
**Name** | Pointer to **string** | Ім&#39;я клієнта | [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)

@ -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)

212
docs/UserInfoJarsInner.md Normal file

@ -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)

57
git_push.sh Normal file

@ -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'

11
go.mod Normal file

@ -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
)

10
go.sum Normal file

@ -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=

@ -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)
}

127
model_error.go Normal file

@ -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)
}

126
model_set_web_hook.go Normal file

@ -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)
}

@ -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)
}

312
model_user_info.go Normal file

@ -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)
}

@ -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)
}

@ -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)
}

47
response.go Normal file

@ -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
}

498
swagger.json Normal file

@ -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/"
}
]
}

76
test/api__test.go Normal file

@ -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)
})
}

347
utils.go Normal file

@ -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)
}