> For the complete documentation index, see [llms.txt](https://legacy-docs.seven.tech/v1/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://legacy-docs.seven.tech/v1/http/imsi.md).

# Отслеживание событий смены IMSI

**IMSI** *—* уникальный идентификатор **SIM-карты**, международный идентификатор мобильного абонента. Сервис позволяет получить значение **IMSI** по номеру телефона абонента, а так же отследить событие смены **IMSI**.

## Запуск сервиса

Для запуска сервиса **IMSI** в рамках протокола **HTTP** партнеру необходимо получить реквизиты доступа к **API**:

* **serviceid**  — уникальный идентификатор сервиса;
* **pass** — пароль.

{% hint style="warning" %}
Во всех случаях сервис возвращает хэшированное значение **IMSI**, которое отличается от реальной нумерации **SIM-карт**, это обусловлено политикой операторов сотовой связи. Данная особенность не влияет на отслеживание смены значения **IMSI**.
{% endhint %}

## Подписаться на получения событий смены IMSI

<mark style="color:blue;">`GET`</mark> `https://api.seven.tech/imsi/sync-imsi`

Метод позволяет получить значение **IMSI** по заданному абоненту и одномоментно выполнить подписку для дальнейшего отслеживания изменения **IMSI** для него.

#### Path Parameters

| Name      | Type    | Description                                                    |
| --------- | ------- | -------------------------------------------------------------- |
| serviceid | integer | Идентификатор сервиса от которого происходит запрос            |
| pass      | string  | Пароль для доступа к сервису                                   |
| phone     | integer | Номер абонента в международном формате. Пример **79031234567** |

{% tabs %}
{% tab title="200 Ответы сервиса" %}
{% tabs %}
{% tab title="COMPLETE" %}

```markup
/* Успешный статус транзакции: возврат значения IMSI, абонент подписан */
<Response>
<Id>16777216</Id>
<Code>200</Code>
<Text>OK</Text>
<Payload>
  <State>COMPLETE</State>
  <IMSI>9641f70524a01757c47c6b10fe7f1c97c36f877ec9b8f7c73e010416540183da</IMSI>
  <Date>2019-02-22 10:57:10 +0300</Date>
</Payload>
</Response>
```

{% endtab %}

{% tab title="NOT\_SUPPORTED" %}

```markup
/* Получение IMSI для данного абонента невозможна */
<Response>
<Id>16777216</Id>
<Code>200</Code>
<Text>OK</Text>
<Payload>
  <State>NOT_SUPPORTED</State>
</Payload>
</Response>
```

{% endtab %}

{% tab title="NOT\_REGISTERED" %}

```markup
/* IMSI для данного номера не зарегистрирован */
<Response>
<Id>16777216</Id>
<Code>200</Code>
<Text>OK</Text>
<Payload>
  <State>NOT_REGISTERED</State>
</Payload>
</Response>
```

{% endtab %}

{% tab title="400" %}

```markup
/* Отсутствуют или неверно заданы обязательные параметры */
<Response>
<Code>400</Code>
<Text>parameter 'phone' must be a number</Text>
</Response>
```

{% endtab %}

{% tab title="403" %}

```markup
/* Передано неверное сочетание пары serviceId и pass /
<Response>
<Code>403</Code>
<Text>invalid login or password</Text>
</Response>
```

{% endtab %}

{% tab title=" " %}

```markup
```

{% endtab %}

{% tab title=" " %}

```markup
```

{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="500 Сервис временно недоступен." %}

```
```

{% endtab %}
{% endtabs %}

## Отписаться от получений событий смены IMSI

<mark style="color:blue;">`GET`</mark> `https://api.seven.tech/imsi/unsubscribe`

Метод позволяет выполнить отписку от событий изменения **IMSI** для заданного абонента.

#### Path Parameters

| Name      | Type    | Description                                                    |
| --------- | ------- | -------------------------------------------------------------- |
| serviceid | integer | Идентификатор сервиса от которого происходит запрос            |
| pass      | string  | Пароль для доступа к сервису                                   |
| phone     | integer | Номер абонента в международном формате. Пример **79031234567** |

{% tabs %}
{% tab title="200 Ответы сервиса" %}
{% tabs %}
{% tab title="COMPLETE" %}

```markup
/* Абонент отписан */
<Response>
<Id>16777216</Id>
<Code>200</Code>
<Text>OK</Text>
<Payload>
  <State>COMPLETE</State>
  <Date>2019-02-22 10:57:10 +0300</Date>
</Payload>
</Response>
```

{% endtab %}

{% tab title="NOT\_REGISTERED" %}

```markup
/* Номер не был в подписке */
<Response>
<Id>16777216</Id>
<Code>200</Code>
<Text>OK</Text>
<Payload>
  <State>NOT_REGISTERED</State>
</Payload>
</Response>
```

{% endtab %}

{% tab title="NOT\_SUPPORTED" %}

```markup
/* Получение IMSI для данного абонента невозможна */
<Response>
<Id>16777216</Id>
<Code>200</Code>
<Text>OK</Text>
<Payload>
  <State>NOT_SUPPORTED</State>
</Payload>
</Response>
```

{% endtab %}

{% tab title="400" %}

```markup
/* Отсутствуют или неверно заданы обязательные параметры */
<Response>
<Code>400</Code>
<Text>parameter 'phone' must be a number</Text>
</Response>
```

{% endtab %}

{% tab title="403" %}

```markup
/* Передано неверное сочетание пары serviceId и pass /
<Response>
<Code>403</Code>
<Text>invalid login or password</Text>
</Response>
```

{% endtab %}

{% tab title=" " %}

```markup
```

{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="500 Сервис временно недоступен." %}

```
```

{% endtab %}
{% endtabs %}

## Запрос статуса подписки

<mark style="color:blue;">`GET`</mark> `https://api.seven.tech/imsi/sub-status`

Метод позволяет получить информацию о статусе подписки для заданного абонента

#### Path Parameters

| Name      | Type    | Description                                                    |
| --------- | ------- | -------------------------------------------------------------- |
| serviceid | integer | Идентификатор сервиса от которого происходит запрос            |
| pass      | string  | Пароль для доступа к сервису                                   |
| phone     | integer | Номер абонента в международном формате. Пример **79031234567** |

{% tabs %}
{% tab title="200 Ответы сервиса" %}
{% tabs %}
{% tab title="SUBSCRIBED" %}

```markup
/* абонент подписан */
<Response>
<Id>16777216</Id>
<Code>200</Code>
<Text>OK</Text>
<Payload>
  <State>SUBSCRIBED</State>
  <Date>2019-02-22 10:57:10 +0300</Date>
</Payload>
</Response>
```

{% endtab %}

{% tab title="NOT\_REGISTERED" %}

```markup
/* Номер не подписан */
<Response>
<Id>16777216</Id>
<Code>200</Code>
<Text>OK</Text>
<Payload>
  <State>NOT_REGISTERED</State>
</Payload>
</Response>
```

{% endtab %}

{% tab title="NOT\_SUPPORTED" %}

```markup
/* Получение IMSI для данного абонента невозможна */
<Response>
<Id>16777216</Id>
<Code>200</Code>
<Text>OK</Text>
<Payload>
  <State>NOT_SUPPORTED</State>
</Payload>
</Response>
```

{% endtab %}

{% tab title="400" %}

```markup
/* Отсутствуют или неверно заданы обязательные параметры */
<Response>
<Code>400</Code>
<Text>parameter 'phone' must be a number</Text>
</Response>
```

{% endtab %}

{% tab title="403" %}

```markup
/* Передано неверное сочетание пары serviceId и pass /
<Response>
<Code>403</Code>
<Text>invalid login or password</Text>
</Response>
```

{% endtab %}

{% tab title=" " %}

```markup
```

{% endtab %}

{% tab title=" " %}

```
```

{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="500 Сервис временно недоступен" %}

```
```

{% endtab %}
{% endtabs %}

#### Примеры вызовов

{% tabs %}
{% tab title="sync-imsi (подписать)" %}

```
https://api.seven.tech/imsi/sync-imsi?serviceid=65535&pass=passme123&phone=79031234567
```

{% endtab %}

{% tab title="unsubscribe (отписать)" %}

```
https://api.danytech.ru/imsi/unsubscribe?serviceid=65535&pass=passme123&phone=79031234567
```

{% endtab %}

{% tab title="sub-status (статус подписки)" %}

```
https://api.danytech.ru/imsi/sub-status?serviceid=65535&pass=passme123&phone=79031234567
```

{% endtab %}
{% endtabs %}

#### Ответ сервиса

В случае успешной обработки запроса любого из методов возвращается ответ в формате **XML** с корневым элементом **Response**, который может содержать следующие параметры:

| Имя  | Тип данных  | Описание                 |
| ---- | ----------- | ------------------------ |
| Id   | big integer | Идентификатор транзакции |
| Code | integer     | Код ответа               |
| Text | string      | Описание кода ответа     |

Вложенный элемент **Payload** содержит следующие параметры:

| Имя   | Тип данных | Описание                             |
| ----- | ---------- | ------------------------------------ |
| State | string     | Статус запроса                       |
| IMSI  | string     | Хэшированное значение IMSI           |
| Date  | datetime   | Дата в формате YYYY-mm-dd HH:MM:SS Z |

#### Коды ответов

| Code | Text                               | Описание                                                                       |
| ---- | ---------------------------------- | ------------------------------------------------------------------------------ |
| 200  | OK                                 | Успешное выполнения запроса                                                    |
| 400  | parameter 'phone' must be a number | Отсутствуют обязательные параметры или заданы некорректные значения параметров |
| 403  | invalid login or password          | Передана неверная пара serviceId и pass                                        |

#### Пример ответа

```markup
<Response>
<Id>16777216</Id>
<Code>200</Code>
<Text>OK</Text>
<Payload>
  <State>COMPLETE</State>
  <IMSI>9641f70524a01757c47c6b10fe7f1c97c36f877ec9b8f7c73e010416540183da</IMSI>
  <Date>2019-02-22 10:57:10 +0300</Date>
</Payload>
</Response>
```

## Получение событий смены IMSI

<mark style="color:blue;">`GET`</mark> `https://online-finace-company.ru/imsi`

Метод передает информацию о событии смены **IMSI** абонентом.\
\
Платформа **SevenTech** инициирует запрос в сторону партнера. Партнеру необходимо реализовать обработчик на своей стороне и сообщить **URL**.

#### Path Parameters

| Name  | Type    | Description                                                    |
| ----- | ------- | -------------------------------------------------------------- |
| phone | integer | Номер абонента в международном формате. Пример **79031234567** |
| imsi  | string  | Хэшированное значение IMSI                                     |

{% tabs %}
{% tab title="200 Успешный прием запроса" %}

```
OK
```

{% endtab %}

{% tab title="500 Технические проблемы на стороне партнера" %}

```
System error
```

{% endtab %}
{% endtabs %}

#### Пример вызова

```
https://online-finace-company.ru/imsi?phone=79031234567&imsi=9641f70524a01757c47c6b10fe7f1c97c36f877ec9b8f7c73e010416540183da
```

Абонент **79031234567** сменил **IMSI**.
