> For the complete documentation index, see [llms.txt](https://aloner26.gitbook.io/zc-apiv2-test/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://aloner26.gitbook.io/zc-apiv2-test/reference/zaleycash-api-v.2/metody.md).

# Методы

## 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 %}
