# Методы

## token

<mark style="color:green;">`POST`</mark> `/api/v2/token`&#x20;

генерация токена для доступа к API ZaleyCash по секретному ключу

#### Request Body

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| access\_token<mark style="color:red;">\*</mark> | String |             |
| expires\_at<mark style="color:red;">\*</mark>   | String |             |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
"code": 200,
"message": "OK",
"response": 
    {
        "access_token":
        "d8bf2fd5f30fe57fa1e97ef39ddf2d3d7025c501c9b4af3ca9757bfbb5b74294",
        "expires_at": 1528378016
    }
}
```

{% endtab %}
{% endtabs %}

## services

<mark style="color:blue;">`GET`</mark> `/api/v2/services`&#x20;

Cписок внешних рекламных сетей (без учета скрытых рекламных сетей). Параметр `need_oauth` указывает,  возможно ли создание аккаунта через метод <mark style="color:green;">POST</mark> `/api/v2/account/create` или нет (если `need_oauth` - yes, то создание аккаунта по API невозможно).

#### Request Body

| Name                                          | Type   | Description |
| --------------------------------------------- | ------ | ----------- |
| name<mark style="color:red;">\*</mark>        | String |             |
| alias<mark style="color:red;">\*</mark>       | String |             |
| need\_oauth<mark style="color:red;">\*</mark> | String |             |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
"code": 200,
"message": "OK",
"response": 
    [
        {
        "name": "Yandex Direct",
        "alias": "direct",
        “need_oauth”: “no”
        }
    ]
}
```

{% endtab %}
{% endtabs %}

## user?email

<mark style="color:blue;">`GET`</mark> `/api/v2/user?email={email}`&#x20;

Получение информации о пользователе по email. Если email не передан, то метод вернет информацию об учетной записи клиента API. Также вернет статус клиента, активен он или нет (is\_active:true/false).

#### Request Body

| Name                                         | Type    | Description |
| -------------------------------------------- | ------- | ----------- |
| id<mark style="color:red;">\*</mark>         | String  |             |
| email<mark style="color:red;">\*</mark>      | String  |             |
| is\_active<mark style="color:red;">\*</mark> | Boolean |             |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
"code": 200,
"message": "OK",
"response": 
    {
    "user":
        {
        "id": 184,
        "email": "user@mail.ru",
        “is_active”: true
        }
    }
}

```

{% endtab %}
{% endtabs %}

## user

<mark style="color:green;">`POST`</mark> `/api/v2/user`&#x20;

Регистрация нового пользователя. Между регистратором и новым пользователем устанавливается связь “родитель - сын”. Также новый пользователь становится рефералом клиента

#### Request Body

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| name<mark style="color:red;">\*</mark>          | String |             |
| email<mark style="color:red;">\*</mark>         | String |             |
| plainPassword<mark style="color:red;">\*</mark> | String |             |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "code": 200,
    "message": "OK",
    "response": 
        {
        "user": 
            {
            "id": 184,
            "email": "user@mail.ru",
            “is_active”: true
            }
        }
}
```

{% endtab %}
{% endtabs %}

## user/balance

<mark style="color:blue;">`GET`</mark> `/api/v2/user/balance`&#x20;

Получение данных финансовых балансов пользователя. `OriginalBalance` подразумевает число, которое пользователь видит в шапке сайта, а `balance` - сумму, доступную к использованию.

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "code": 200,
    "message": "OK",
    "response": 
    {
        "user":
        {
            "id": {id},
            "email": "user@mail.ru",
            “is_active”: true
        },
        "balances":
            [
                {
                "currency": "RUB",
                "balance": 7100.19,
                "creditLimit": 10000,
                "originalBalance": -2899.81
                },
                {
                "currency": "USD",
                "balance": 7100.19,
                "creditLimit": 0,
                "originalBalance": 7100.19
                },
            ]
     }
}
```

{% endtab %}
{% endtabs %}

## user/balance/detailed

<mark style="color:blue;">`GET`</mark> `/api/v2/user/balance/detailed`&#x20;

Получение подробных данных распределения средств по финансовым балансам пользователя. Если счета в списке нет, значит он не существует.

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
"code": 200,
"message": "OK",
"response": {
"user": {
"id": {id},
"email": "user@mail.ru",
“is_active”: true
},
"balances": [
{
“type”: “partner”,
“service”: “luckyshop”,
"currency": "RUB",
"balance": 7100.19,
"creditLimit": 0,
"originalBalance": 7100.19
},
{
“type”: “normal”,
“service”: none,
"currency": "USD",
"balance": 7100.19,
"creditLimit": 0,
"originalBalance": 7100.19
},
{
“type”: “adv”,
“service”: “mytarget”,
"currency": "RUB",
"balance": 7100.19,
"creditLimit": 0,
"originalBalance": 7100.19
}
]
}
}
}
}
```

{% endtab %}
{% endtabs %}

## user/account

<mark style="color:blue;">`GET`</mark> `/api/v2/user/account?id={id}`&#x20;

Получение информации о своем аккаунте. В `id` может быть передан любой из идентификаторов, принадлежащих аккаунту.

`external_id` = `ExternalAccount.external_id` - внешний идентификатор в системе `external_billing_account_id` - `ExternalAccount.external_billing_account_id` - внешний идентификатор счета в системе (релевантно для ВК и Яндекса).

Возможные статусы:&#x20;

`active` Активен&#x20;

`blocked` Заблокирован&#x20;

`deleted` Удален&#x20;

`pending` В обработке

`rejected` Отклонен

`blocked_by_system` Заблокирован системой

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
	"code":200,
        "message":"OK",
        "response":
        {
        	"status":"pending",
                "id":168,
	    	“type”: “Google Ads”
                "login":"account@mail.ru",
	    	“created_at”:"2018-06-15T13:54:22+03:00",
	    	“external_id”: {external_id},
	    	“external_billing_account_id”: {external_billing_account_id},
	    	“balance”: 100.01
        }
}
```

{% endtab %}
{% endtabs %}

## user/children

<mark style="color:green;">`POST`</mark> `/api/v2/user/children`&#x20;

Создание связи между пользователем и пользователем API. Связка позволяет выполнять операции перевода денег

#### Request Body

| Name                                   | Type | Description |
| -------------------------------------- | ---- | ----------- |
| user<mark style="color:red;">\*</mark> | int  |             |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "code": 200,
    "message": "OK",
    "response": {
        "user": {
            "id": 184,
            "email": "user@mail.ru",
	“is_active”: true
        }
    }
}

```

{% endtab %}
{% endtabs %}

## user/accounts/list

<mark style="color:blue;">`GET`</mark> `/api/v2/user/accounts/list?type={account_alias}&id={ids}&user={id}&account=acc@gmail.com&limit={}&offset={}`&#x20;

Получение списка аккаунтов пользователя для заданного сервиса. Список допустимых значений для `account_alias` возвращается методом `/api/v2/services`

Возможна фильтрация аккаунтов по `id` для заданного параметра `type`. В `id` может быть передано несколько идентификаторов разделенных запятой, также в `id` может быть передан любой из идентификаторов принадлежащих аккаунту, однако все они должны быть одинакового типа. Также в методе присутствует пагинация, по умолчанию возвращается 500 первых аккаунтов. Используйте параметр `limit` для выбора количества аккаунтов (не рекомендуем отправлять более 1000) и `offset` для смещения по страницам.

*Например у вас 10 акков 1,2,3,4,5,6,7,8,9,10*

*Вы посылаете `limit=3,offset=0`*

*В ответе придут 3 акка: 1,2,3*

*Вы посылаете `limit=3,offset=3`*

*В ответе придут 3 акка: 4,5,6 (то есть произошло смещение на `offset`)*)

&#x20;

Возможна выборка аккаунтов по полю `account`.

Должен присутствовать или параметр `id` или `account`. Если указан `id`, то `account` будет проигнорирован.

&#x20;

Необязательный параметр `user={id}` - получение списка аккаунтов дочернего пользователя

&#x20;

Для аккаунтов MyTarget и VK выводится `accessToken` для прямого доступа к клиентским методам API MyTarget

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "code": 200,
    "message": "OK",
    "response": [
        {
            "id": 1,
            "account": "account_name1",
            "comment": null,
	“type”: “direct”,   
	“created_at”:"2018-06-15T13:54:22+03:00",
“external_id”: {external_id},
	“external_billing_account_id”: {external_billing_account_id},
	“balance”: 100.01
        },
        {
"id": 3,
"account": "account@mail.ru",
"comment": ””,
“type”: “my_target”,
            “created_at”:"2018-06-15T13:54:22+03:00",
	    “external_id”: {external_id},
	    “external_billing_account_id”: {external_billing_account_id},
	    “balance”: 100.01
“my_target”: {
	“account_id”: “account@mail.ru”, - идентификатор аккаунта в MyTarget
	“accessToken”: <string>, - токен для доступа к клиентским методам API MyTarget
	“expiresIn”: <timestamp>, - время деактивации токена после которого необходимо выполнить обновление для продолжения работы с API MyTarget
}
        },
        {
            "id": 2,
            "account": "account_name2",
            "comment": null,
	“type”: “vk”
“created_at”:"2018-06-15T13:54:22+03:00",
	“external_id”: {external_id},
	“external_billing_account_id”: {external_billing_account_id},
“balance”: 100.01
        }
    ]
}

```

{% endtab %}
{% endtabs %}

## money/transfer

<mark style="color:green;">`POST`</mark> `/api/v2/money/transfer`&#x20;

Перевод средств со счета клиента на аккаунты в **Yandex.Direct**, **MyTarget**, **Google Adwords**, **VK**. Обратите внимание на то, что в запросе присутствуют необязательный параметр “`type`” он означает тип средств отправляемых в сеть (для некоторых сетей доступен отдельный счет с типом `adv`, который является рекламным - с него можно перевести деньги исключительно в данную сеть, получить информацию о статусе данных счетов можно в методе <mark style="color:blue;">GET</mark> `api/v2/user/balance/detailed`), если параметр `type` НЕ передан, то по умолчанию передается `type:normal` - средства будут списываться с обычного счета пользователя. В качестве параметра "`service`" передается `alias` данного сервиса - информацию о сервисах можно получить в <mark style="color:blue;">GET</mark> `api/v2/services`. В ответ на `/transfer` `/transfer internal` и `exchange` приходят статусы "`accepted`" ВСЕГДА, либо код ошибки из начала документа, это означает что транзакция принята сервисом Zaleycash и далее ее статус можно узнать запросив <mark style="color:blue;">GET</mark> `/api/v2/money/transaction?operation_id={string}`. Это связано с тем, что не все транзакции обрабатываются здесь и сейчас, а попадают в очередь.

<mark style="color:red;">NB! Для некоторых площадок существуют лимиты минимально переводимых сумм</mark>

#### Request Body

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| service<mark style="color:red;">\*</mark>       | String |             |
| account\_id<mark style="color:red;">\*</mark>   | int    |             |
| amount<mark style="color:red;">\*</mark>        | int    |             |
| operation\_id<mark style="color:red;">\*</mark> | String |             |
| type                                            | String |             |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "code": 200,
    "message": "OK",
    "response": {
                "transaction": "accepted",
                "operation_id": "extid_123",
            	"external_id":"external_id",
                "external_billing_account_id":"external_billing_account_id”
                }
}

```

{% endtab %}
{% endtabs %}

## money/transfer/internal

<mark style="color:green;">`POST`</mark> `/api/v2/money/transfer/internal`&#x20;

Перевод средств со счета пользователя на счет пользователя .Параметр `currency` используется для внутренних переводов

#### Request Body

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| user\_id<mark style="color:red;">\*</mark>      | int    |             |
| currency<mark style="color:red;">\*</mark>      | String |             |
| amount<mark style="color:red;">\*</mark>        | int    |             |
| operation\_id<mark style="color:red;">\*</mark> | String |             |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "code": 200,
    "message": "OK",
    "response": 
    {
        "transaction": "accepted",
        "operation_id": "extid_123"
    }
}
 
```

{% endtab %}
{% endtabs %}

## money/currencies

<mark style="color:blue;">`GET`</mark> `/api/v2/money/currencies`&#x20;

Возврат список возможных валют, курс валют в системе и значение комиссии за обмен валют на момент запроса.

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "code": 200,
    "message": "OK",
    "response": {
        “comission_rate”: 0.025
        "currencies": [
	{
	“currency”:”RUB”
	“rate”: {
		USD: 0.014
		/*...*/
		},
	{
	“currency”:”USD”
	“rate”: {
		RUB: 72.34
		/*...*/
		},	
      	 /*...*/
	]
    }
}
```

{% endtab %}
{% endtabs %}

## money/exchange?user={id}

<mark style="color:green;">`POST`</mark> `/api/v2/money/exchange?user={id}`&#x20;

Создание операции обмена валюты на пользователе. В ответ придет 3 операции с разными id - списание, начисление, комиссия

#### Request Body

| Name                                             | Type   | Description |
| ------------------------------------------------ | ------ | ----------- |
| from\_currency<mark style="color:red;">\*</mark> | String |             |
| to\_currency<mark style="color:red;">\*</mark>   | String |             |
| amount<mark style="color:red;">\*</mark>         | int    |             |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "code": 200,
    "message": "OK",
    "response": {
        "user": {
            "id": {id},
            "email": "user@mail.ru",
	“is_active”: true
        },
       "transactions": [
            {
                "operation_id": "{string}",
                "type": "exchange",
	    “currency”:”USD”,
                "amount": 1000,
                "created_at": "2018-06-15T13:54:22+03:00",
                "status": "accepted",
                "direction": "out",
	    “rate”: 74.32,
	    “comission_rate”: 0.025
            },
            {
                "operation_id": "{string}",
                "type": "exchange",
	    “currency”:”RUB”
                "amount": 74320,
                "created_at": "2018-06-15T13:54:22+03:00",
                "status": "accepted",
                "direction": "in",
    “rate”: 74.32
	    “comission_rate”: 0.025
               }
   {
                "operation_id": "{string}",
                "type": "comission",
	    “currency”:”RUB”
                "amount": 1858,
                "created_at": "2018-06-15T13:54:22+03:00",
                "status": "accepted",
                "direction": "out",
    “rate”: 74.32
	    “comission_rate”: 0.025
               }

        ]
    }
}
```

{% endtab %}
{% endtabs %}

## money/refund

<mark style="color:green;">`POST`</mark> `/api/v2/money/refund`&#x20;

Возврат средств со счета клиента с аккаунтов в рекламных сетях

#### Request Body

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| service<mark style="color:red;">\*</mark>       | String |             |
| account\_id<mark style="color:red;">\*</mark>   | int    |             |
| amount<mark style="color:red;">\*</mark>        | String |             |
| operation\_id<mark style="color:red;">\*</mark> | int    |             |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "code": 200,
    "message": "OK",
    "response": {
        "transaction": "approved",
        "operation_id": "extid_123"
    }
}
```

{% endtab %}
{% endtabs %}

## money/transaction?operation\_id={string}

<mark style="color:blue;">`GET`</mark> `/api/v2/money/transaction?operation_id={string}`&#x20;

Получение статуса транзакций с номером операции `operation_id`. Типы транзакций в ответе:&#x20;

`non_cash` - безналичный перевод&#x20;

`direct` - перевод средств на аккаунт в Yandex.Direct&#x20;

`internal_transfer` - перевод дочернему пользователю&#x20;

Поле `direction` - направление движения средств: in - пополнение, out - списание&#x20;

Поле `status` - статус обработки транзакции: `approved` - успешное завершение, `pending` - ожидание подтверждения, `blocked` - заблокировано по техническим причинам, `declined` - операция отклонена.

Поле `recipient` - пользователь, которому проведено начисление.

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "code": 200,
    "message": "OK",
    "response": {
        "transactions":[{
    	"operation_id":"test-243",
    	"type":"WRITE_OFF",
    	"amount":5000.0,
    	"created_at":"2020-09-01T01:00:00+03:00",
    	"status":"approved",
    	"direction":"out",
    	"user":{"id":1,"email":"email","is_active":true},
    	"account":{"id":3,"external_id":"external_id","external_billing_account_id":id}
	}]
}
```

{% endtab %}
{% endtabs %}

## user/transactions?date\_from={unix timestamp}\&date\_to={unix timestamp}

<mark style="color:blue;">`GET`</mark> `/api/v2/user/transactions?date_from={unix timestamp}&date_to={unix timestamp}`&#x20;

Получение списка транзакций для пользователя API.

`date_from` - с какой даты получить транзакции (Epoch timestamp)&#x20;

`date_to` - до какой даты получить транзакции. (Epoch timestamp)&#x20;

Если параметры `date_from` и `date_to` не заданы, то метод вернет транзакции с начала текущего месяца.

Поле `recipient` - пользователь, которому проведено начисление.

{% tabs %}
{% tab title="200: OK " %}

```javascript
{  
   "code":200,
   "message":"OK",
  "response":{
	"259":{
    	"operationId":12345,
    	"account":{"id":9,"external_id":"eaid9","external_billing_account_id":"eaid9"},
    	"direction":"in",
    	"status":"approved",
    	"currency":"RUB",
    	"sum":100.0,
    	"created":"2020-10-16T19:10:50.357643+03:00",
    	"handled":"2020-10-16T19:10:50.357657+03:00"
	}
}
      "189357":{  
         "id":189357,
         "type":"event",
         "direction":"in",
         "status":"approved",
         “currency”:”USD”,
         "sum":3000,
         "created":"2019-04-03T16:18:16+03:00",
         "handled":"2019-03-07T16:18:17+03:00"
      }
   }
}
```

{% endtab %}
{% endtabs %}

## countries

<mark style="color:blue;">`GET`</mark> `GET /api/v2/countries`&#x20;

**Возврат списка алиасов стран**

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
	“code”: 200,
	“message”:  “OK”,
	“response”: [
	{“name”: ”Россия”,
	 “alpha2”: “RU”
 “id”:”171”},
	{“name”: “Украина”,
	 “alpha2”: “UA”
 “id”:”217”
},
	...
]
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://aloner26.gitbook.io/zc-apiv2-test/reference/zaleycash-api-v.2/metody.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
