Доступ к учётной записи и проекту
Используйте активную учётную запись API и подключайтесь по HTTPS с разрешённого IP-адреса. Проект должен принадлежать этой учётной записи и не должен быть удалён. Используйте уникальный идентификатор проекта из процесса оформления заявки на перенос, а не числовой идентификатор из базы данных или телефонный номер. При формировании запроса применяйте URL-кодирование к идентификатору проекта.
Запрос
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/v3/lnp/project/$PROJECT_ID"Обращайтесь с этим ответом как с конфиденциальными данными
Полный ответ содержит платёжные сведения для оператора, от которого переносятся номера, включая сохранённое значение billing_pin, данные платёжного счёта, телефона, адреса, компании и уполномоченного контактного лица. API не маскирует эти поля. Запрашивайте только статус или список номеров, если для вашего рабочего процесса этого достаточно. Не сохраняйте полный ответ с подробными сведениями в хранилище браузера, системах аналитики, общедоступных журналах или на снимках экрана для службы поддержки; показывайте только те поля, которые нужны клиенту с соответствующими правами доступа.
Структура ответа
Вымышленный пример с избранными полями; в ответе могут возвращаться дополнительные поля.
{
"status": {
"code": 200,
"msg": "Project Detail"
},
"response": {
"project": {
"id": 11,
"uniqueid": "PROJECT_EXAMPLE",
"project_name": "Example transfer",
"location": "US",
"status": 0,
"status_str": "Pending"
},
"counts": {
"total": 0,
"pending": 0,
"in_progress": 0,
"completed": 0,
"rejected": 0
},
"numbers": [],
"events": [],
"uploads": []
}
}В этом намеренно неполном примере опущены все платёжные реквизиты для проверки доступа и личные контактные данные. Их отсутствие в примере не означает, что они скрываются в реальном ответе.
| Раздел | Содержимое |
|---|---|
| project | Числовой идентификатор строки, уникальный идентификатор проекта, название проекта, местоположение, сохранённые платёжные и контактные данные и адрес, время создания и вычисляемый статус. Устаревшее поле оператора, от которого переносятся номера, имеет имя loosing_carrier. |
| counts | Общее количество строк с номерами и счётчики статусов Pending, In Progress, Completed и Rejected. |
| numbers | Тот же состав данных о номерах, что и у конечной точки списка номеров проекта, включая комментарии клиента и сохранённые значения планирования. |
| events | Сохранённые строки событий и поля полезной нагрузки в исходном и разобранном виде с учётом ограничений видимости и формата конечной точки событий. |
| uploads | Метаданные документов: числовой идентификатор, upload_type, file_name, file_extension, date_created и относительный адрес download_url. Для доступа по этому URL по-прежнему требуется аутентификация учётной записи. |
Как понимать сводку и метаданные
При вычислении статуса приоритет имеет In Progress, затем Pending, затем Completed, затем Rejected; если ни один вариант не подходит, используется Pending. Сводный статус Completed возможен и при наличии номеров, перенос которых отклонён. Проверяйте счётчики и статусы номеров, а не предполагайте, что перенос каждого номера завершён.
Ответ содержит метаданные документов, а не байты файлов. В нём нет постраничной выдачи или курсора для последовательного получения изменений. Запросы подробных сведений и списков выполняют отдельные операции чтения и не образуют единый снимок с гарантированной транзакционной согласованностью. Даты возвращаются в сохранённом виде; преобразование часового пояса не задокументировано. Для маршрутов проекта используйте uniqueid; числовой идентификатор проекта не может его заменить.
Ошибки и ограничения
Проверяйте как ответ HTTP, так и status.code/status.msg. Если проект отсутствует, удалён или не принадлежит учётной записи, возвращается код API 404 с сообщением о том, что проект не найден. Также действуют требования аутентификации и ограничения по исходному IP-адресу. Примеры не выполняют реальный запрос, а успешный ответ не доказывает, что оператор принял заявку на перенос или завершил перенос.
Последствия вызова и рабочий процесс
Это канонический маршрут подробных сведений, который используется в представлении заявки на перенос в текущем портале. Портал сопоставляет поля со своим интерфейсом и формирует собственный набор данных для клиента; не предполагайте, что исходный ответ API совпадает с JSON портала или отображаемыми в нём данными. Проверенный обработчик подробных сведений не изменяет проект и напрямую не инициирует запрос оператору или списание средств.