Skip to content

Модель данных и расчётов ​

Владелец данных ​

API-ключ однозначно определяет реселлера и окружение. Передача чужого provider_uuid, UUID клиента или другого Host не переключает контекст. UUID не является доказательством права доступа. Чужой объект обычно скрывается как отсутствующий; не интерпретируйте каждый 404 как удаление объекта в реестре.

РежимКак организовать интеграцию
managedСоздавать отдельных клиентов и передавать их customer_uuid в клиентозависимых операциях. Контакты домена должны принадлежать тому же клиенту.
aggregateВсе услуги принадлежат клиенту, назначенному оператором для реселлера. Обычно customer_uuid опускается. Создание клиентов через API запрещено. Собственных конечных покупателей учитывать в своём биллинге.

Это режим учёта услуг, а не возможность выдать ключ конечному покупателю. Реселлер обязан проверять права своего пользователя до вызова API.

Идентификаторы ​

ПолеНазначение
customer_uuidКлиент внутри платформы, не UUID учётной записи пользователя.
Contact uuidПрофиль доменного контакта. Это не EPP contact ID реестра.
Offering uuidПредложение в каталоге. Не подставлять вместо UUID зоны.
Catalog resource_uuidРесурс предложения, например доменная зона; передаётся в quote.
Order uuidЗаказ, в том числе асинхронная регистрация.
service_uuidОбщая услуга биллинга.
Domain uuid, domain_uuid, domain_service_uuidИдентификатор доменного объекта, используемый в /domains/{domainUuid} и в payload quote для продления. Не равен UUID общей услуги.
Operation uuidАсинхронная операция управления, читается через /operations/{operationUuid}.
external_idИдентификатор соответствующего объекта в вашем биллинге. Заказ и услуга имеют разные external_id.

Сохраняйте соответствия UUID, а не пытайтесь вычислить их из имени домена. external_id уникален в своей области объектов реселлера и окружения; он помогает восстановить связь, но не заменяет Idempotency-Key.

Клиенты, заказы и домены поддерживают поиск по external_id согласно справочнику. Не предполагайте такой фильтр у каждого списка: например, для контактов сохранение UUID обязательно. В managed список контактов требует customer_uuid.

Деньги и quote ​

Денежные поля с суффиксом _minor содержат целое число минимальных денежных единиц. Для KZT 125000 означает 1 250,00 тенге. Валюта передаётся отдельным кодом. Не рассчитывайте списания через float и не считайте, что у всех валют одинаковое число десятичных знаков.

Каталог определяет доступность предложения, операций и периодов. Финальная сумма операции берётся из POST /quotes, а не из устаревшего локального прайса. Quote привязан к реселлеру, окружению, ключу и клиенту; нельзя создавать его одним ключом, а использовать другим. Срок действия по умолчанию 15 минут, фактический срок смотрите в ответе. Quote одноразовый.

Суммы unit_price_minor, subtotal_minor и total_minor в публичном ответе quote являются розничными. Оптовая сумма резерва рассчитывается по правилам реселлера и может отличаться от total_minor; отдельная оптовая цена в этом ответе не возвращается. Финансовый результат сверяйте через закупочный баланс и ledger, не приравнивайте розничную сумму к оптовому списанию. Валюта всей котировки выбирается по первой строке items либо настройке реселлера: передавайте одинаковую валюту во всех строках.

Для регистрации используется operation: register, для продления renew, для переноса transfer, для восстановления restore. Восстановление имеет отдельную цену: нельзя подставлять цену продления, если тариф восстановления не настроен.

Реселлер с собственным биллингом использует согласованный с оператором checkout_mode: external. При платных live-операциях платформа резервирует средства оптового prepaid-баланса. Оплату вашего конечного покупателя и ваш розничный чек ведёт ваш биллинг. Подключение внешней платёжной системы этим API не производится.

ИсходЧто делать в своём биллинге
Операция подтвержденаЗафиксировать оказание услуги; сверить сумму и итоговые данные.
Подтверждённый отказ или ошибка до отправкиПроверить отказ и освобождение резерва; отдельно применить свою политику возврата покупателю.
Неизвестный результат после отправкиНе создавать повторную покупку. Сохранить ожидание/ручную проверку: резерв может оставаться удержанным.

Ни 201, ни 202 не являются доказательством окончательного списания и оказания услуги. Баланс и ledger доступны только live. Не обещайте покупателю автоматический возврат на банковскую карту на основании ошибки регистрации: это отдельный процесс вашего биллинга.

Время, списки и состояния ​

Метки времени ответов содержат ISO 8601 со смещением часового пояса; nullable-поля могут быть null. Календарная дата profile.birth_date возвращается отдельно в формате YYYY-MM-DD, без времени и смещения. Сравнивайте моменты времени, а не строки. Часовой пояс клиента не меняет момент окончания регистрации.

Списки используют курсорную пагинацию. Передавайте полученный next_cursor как непрозрачную строку, сохраняя фильтры. Не используйте page=2 и не вычисляйте курсор самостоятельно. per_page по умолчанию 25, максимум 100; конкретная оболочка meta/links приведена у метода. Отсутствие следующего курсора завершает обход, но не гарантирует согласованный снимок при параллельных изменениях.

У домена раздельны состояние услуги, состояние регистрации и статусы реестра. Подтверждение личности не означает подтверждение образовательной лицензии. Перенос может долго оставаться pending. В локальной модели не сводите всё к одному флагу active.