# Отслеживание событий смены 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**.


---

# 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://legacy-docs.seven.tech/v1/http/imsi.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.
