Для разработчиков

Хостинг, которым можно управлять из кода

Zinn Digital® — это платформа, созданная по принципу API-first. Тот же API движка, на котором работает наша панель управления, предоставляется и вам — версионированный, основанный на спецификациях и на 100% задокументированный на этапе сборки, с созданными SDK, CLI, провайдером Terraform, подписанными вебхуками и сервером MCP поверх него. Что бы вы ни использовали для работы — терминал, пайплайн, файл состояния или ИИ-агента — платформа отвечает на эти запросы.

Конечная точка API, доставляющая подписанные события нескольким подписанным слушателям.
  • 700 000+сайтов на хостинге по всему миру
  • 1Спецификация OpenAPI, на основе которой создается каждый инструмент
  • 4клиентские SDK — TypeScript, Python, PHP, Go
  • OAuth 2.1ограниченный, отзываемый доступ агента ИИ

Один API. Каждая поверхность опирается на него.

Большинство хостингов прикручивают API к панели управления задним числом, и это заметно — половина возможностей панели так и не выходит наружу. Мы пошли от обратного. Панель управления, консоль администратора, CLI, провайдер Terraform, сервер MCP и ваши собственные интеграции используют один и тот же API движка. Если вы можете сделать это в панели, вы можете сделать это в коде.

Сначала спецификация, а не документирование потом

Спецификация OpenAPI — это единый источник достоверных данных, и ни одна конечная точка не выпускается, если она не описана в спецификации. Именно это единственное правило гарантирует, что общедоступный API полностью документируется на этапе сборки, а не когда-нибудь потом — здесь нет недокументированных уголков, поскольку недокументированная конечная точка просто не может существовать.

Сгенерировано, никогда не поддерживается вручную

Интерактивная справочная документация, четыре клиентских SDK, большая часть CLI и каркас провайдера Terraform генерируются из этой единой спецификации. Один источник, множество артефактов, всегда синхронизированы — вам никогда не придется догонять документацию, которая разошлась с реализацией.

Версионировано с политикой устаревания

Конечные точки находятся в /v1 с опубликованной политикой прекращения поддержки и журналом изменений. О любых изменениях вас уведомляют в письменном виде заранее, а не постфактум из-за сбоя сборки.

Протестировано по контракту в CI

Контрактные тесты на соответствие реализации спецификации и статический анализ OpenAPI запускаются при каждом изменении. Расхождение между кодом и контрактом приводит к сбою сборки — поэтому спецификация, на основе которой вы генерируете своего клиента, полностью соблюдается сервером.

Аутентификация, разграничение областей видимости и подводные камни масштабирования

Два способа входа, за которыми стоит единый принцип. Какой бы из них вы ни использовали, применяются те же проверки разрешений и та же изоляция на уровне базы данных.

Ключи API, по организациям

Ключи имеют вид zdk_<mode>_<prefix>_<secret>. Сохраняется только хэш SHA-256 секретной части — мы не сможем показать вам ключ повторно после создания, как и любой, кто получит доступ к нашей базе данных. Ключи имеют области действия, могут быть отозваны и выдаются для организации, а не для отдельного пользователя.

Рабочий и тестовый режимы, разделенные между собой

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

OIDC для людей

Пользовательские сеансы аутентифицируются с помощью выданных Keycloak токенов JWT, проверяемых по открытому ключу реалма, и преобразуются в тот же объект Principal, что и ключ API. Доступ к конечным точкам ограничивается детальными ключами разрешений, такими как sites.create или apikeys.manage, проверяемыми для каждой организации: разрешение в одной организации не предоставляет доступа к отдельной, несвязанной организации, хотя и применяется к вложенным в нее организациям.

Безопасность на уровне строк внизу

Каждый запрос клиента выполняется в транзакции с областью организации Postgres, установленной из принципала, поэтому изоляция обеспечивается базой данных, а не фильтром ORM, о котором кто-то может забыть. Фильтр queryset по-прежнему присутствует в качестве эшелонированной защиты.

Создано для машин, а не только для демонстраций

Легко сделать так, чтобы API отлично выглядел в файле README, но трудно добиться его стабильной работы под реальной нагрузкой. Именно над этими компонентами мы трудились больше всего, поскольку именно они нарушают работу интеграций в три часа ночи.

Деталь, которую стоит отметить, поскольку она определяет работу массовых операций: ошибка 409 при дублировании домена отвечает любому клиенту на вопрос «размещен ли этот хост здесь?», что представляет собой оракул перечисления и реальный риск деанонимизации для Footprint-Free. Ограничение скорости создания сайтов было бы поверхностным решением и полностью нарушило бы работу продукта массового развертывания. Вместо этого лимит устанавливается только на отклоненные попытки создания дубликатов доменов для каждого субъекта (principal). Успешные операции создания никогда не расходуют этот лимит — поэтому вы можете выполнять массовое развертывание весь день, а попытки зондирования пресекаются практически мгновенно.

  • Единый формат ответа при любой ошибке: код, понятное человеку сообщение, необязательные сведения на уровне полей и request_id, который вы можете сообщить службе поддержки. Ошибки валидации возвращают код 422 с указанием некорректных полей.
  • Ключи идемпотентности для POST с записью воспроизведения, сохраняемой при фиксации (commit), а не в процессе выполнения, — повторная попытка никогда не воспроизведет кэшированный ответ 201, указывающий на строку, которая не была зафиксирована. Неудачный запрос немедленно снимает текущую блокировку, поэтому ошибка 422 не заблокирует вашу исправленную повторную попытку.
  • Курсорная пагинация как набор ключей поверх UUIDv7 — стабильна при одновременных записях, без смещения страниц при вставке строк в процессе сканирования.
  • RateLimit-Remaining в ответах, чтобы сгенерированный клиент мог разумно снижать частоту запросов, а не действовать наугад.
  • Ресурсы вне области видимости возвращают 404 вместо 403 — ошибка 403 подтвердила бы существование ресурса. Фильтрация по организации вне вашей области видимости по той же причине возвращает пустую страницу.
  • Создание сайта — это регистрация, а не инициализация: запрос POST /v1/sites возвращает код 201 со статусом pending и никогда не блокирует сборку. Событие записывается в транзакционный outbox в рамках той же транзакции, что и строка, поэтому сайт существует тогда и только тогда, когда гарантирован запрос на его инициализацию.

SDK, CLI и провайдер Terraform

Три потребителя одной спецификации для трех разных способов работы.

Клиентские SDK

Сгенерировано для TypeScript, Python, PHP и Go с отслеживанием спецификации, благодаря чему новая конечная точка появляется на вашем языке без ожидания написанной вручную обертки.

Zinnector®, интерфейс командной строки (CLI)

Создайте структуру сайта WordPress, запустите его локально, установив только Node, и выполните развертывание. Zinnector® выполняет предварительную проверку вашего проекта на соответствие слоту, в который планируется развертывание (версия PHP, диск, количество файлов), и предупреждает до отправки изменений, а не после. Он также выполняет вход, выводит список сайтов, осуществляет развертывание, управляет доменами и DNS, считывает почтовые службы, создает резервные копии, выполняет разрешенные команды WP-CLI, отслеживает логи в реальном времени и запускает массовые операции. Бесплатно, под лицензией MIT и на базе этого же общедоступного API.

Провайдер Terraform

Управляйте сайтами, доменами, записями DNS, почтовыми ящиками и тарифами по методологии «инфраструктура как код». Команда terraform apply инициализирует хостинг, и ваши окружения становятся воспроизводимыми и подлежащими проверке, а не последовательностью кликов, которую никто не записал.

Интерактивный справочник

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

Вебхуки, которые сохраняются даже при отключении вашей конечной точки

За платформой стоит надежная основа событийной архитектуры: каждое изменение состояния атомарно с изменением в базе данных записывает событие в транзакционный outbox в Postgres, а реле публикует его в NATS JetStream. События типизированы и версионированы — site.deployed, order.paid, invoice.overdue, backup.completed, abuse.flagged, trial.ending и остальные.

Подпишитесь на то, что вам важно

Зарегистрируйте конечную точку в качестве WebhookSubscription и выберите типы событий, которые она получает. Единый поток обеспечивает уведомления, аналитику, автоматизацию и вашу интеграцию — вы используете те же события, что и мы.

Подписано с помощью HMAC

Каждая доставка подписана HMAC, поэтому вы можете убедиться, что она поступила от нас, прежде чем предпринимать какие-либо действия.

Повторено с задержкой и зарегистрировано

Неудачные доставки повторяются с задержкой, и каждая попытка регистрируется как WebhookDelivery. Вы можете проверять и повторно отправлять доставки из панели управления, вместо того чтобы писать в службу поддержки с вопросом о том, что именно было отправлено.

Как минимум один раз, поэтому удаляйте дубликаты по id

Конвейер намеренно спроектирован по принципу «как минимум один раз» (at-least-once), а не притворяется, будто обеспечивает доставку «ровно один раз» (exactly-once). У реле, которое аварийно завершает работу в процессе публикации, истекает срок аренды клейма, и его события публикуются повторно. Выполняйте дедупликацию по envelope id, и ваш потребитель будет корректным по своей конструкции.

Размещение кода на сайте

API — это лишь половина истории разработчика. Вторая половина — это релиз.

  • Подключите GitHub, GitLab или Bitbucket через OAuth, при этом ключи развертывания хранятся в хранилище учетных данных, а не в файле конфигурации.
  • Push запускает конвейер сборки и развертывания с сопоставлением веток и сред (main для production, staging для staging) и шагами сборки для каждого стека для composer и npm.
  • Откатитесь к предыдущему выпуску в случае сбоя при развертывании.
  • Тестовое клонирование и перенос на рабочий сайт, чтобы изменение было проверено в реальных условиях до того, как его увидят посетители.
  • SFTP для каждого сайта с изоляцией CageFS, благодаря чему каждый арендатор видит только свои файлы, а также изолированная (jailed) командная оболочка SSH на общей платформе.
  • wp-cli из терминала панели и по SSH.
  • VS Code в браузере через code-server — полнофункциональный редактор с git, позволяющий напрямую редактировать файлы сайта.
  • Версия PHP для каждого сайта, редактируемые настройки PHP, расширения для каждого сайта, переменные окружения и настоящий cron наряду с WP-cron.

Четыре способа работы с сайтом

API — это одна дверь. Вот остальные четыре, и каждая из них включена в тарифный план, а не продается как отдельный уровень для разработчиков.

Веб-редактор

VS Code в браузере, открытый со страницы сайта в панели управления, редактирует реальные файлы этого сайта со встроенным git и всем редактором внутри той же изоляции CageFS, что и ваш доступ по SFTP. Он редактирует РАБОЧИЙ сайт — промежуточной тестовой копии нет, поэтому сохраненный вами файл становится общедоступным в момент записи, хотя статический файл может продолжать отдаваться из кэша CDN до четырех часов.

Zinnector®, интерфейс командной строки (CLI)

Бесплатно, под лицензией MIT и создано на базе того же общедоступного API. Создайте структуру сайта WordPress, запустите его на собственном компьютере, выполните предварительную проверку на соответствие слоту, в который планируется развертывание — версия PHP, диск, количество файлов — и выполните развертывание. Требуется Node 24 или новее.

Сервер MCP

Единый каталог инструментов, благодаря которому уже используемый вами ИИ-клиент может работать с вашими сайтами через тот же API и с теми же разрешениями, что и панель управления. Тот же сервер, к которому подключается ваш собственный клиент, подключен и к веб-редактору. Только для чтения, пока вы не укажете иное.

Доступ разработчика для каждого сайта

Для работы с клиентами ваш пароль не требуется. Пригласите пользователя по адресу электронной почты, и он получит доступ ровно к одному сайту: он входит под своей учетной записью с ролью читателя, редактора или менеджера, а любой другой сайт возвращает ошибку 404 еще до запуска какого-либо обработчика — это политика безопасности на уровне строк Postgres и защита на уровне запросов, а не единичная проверка. Владелец аккаунта предоставляет и отзывает доступ в один клик, изменения вступают в силу при следующем запросе.

И тот же API, который может использовать ваш ИИ-агент

Мы предоставляем платформу в виде размещенного MCP-сервера: тонкого адаптера протокола поверх API движка, который повторно использует тот же каталог действий, RBAC и журнал аудита. Подключите Claude Code, Cursor, ChatGPT, Claude Desktop или любой клиент с поддержкой MCP один раз, и каждая возможность, которую мы добавляем в API, станет доступна ему автоматически.

Агент получает три элемента: Tools (те же конечные точки API, отсутствие параллельной логики во избежание расхождений), Resources (доступные только для чтения данные о состоянии сайта, конфигурация, последние журналы, метрики, время безотказной работы и статьи базы знаний, что позволяет выполнять диагностику на основе реальных данных перед выполнением действий) и Prompts (опубликованные шаблоны рабочих процессов, такие как «diagnose this site» или «prepare a migration»).

Безопасность строится по тем же принципам, что и аутентификация: OAuth 2.1, токены, привязанные к вашей организации, и разрешения RBAC с принудительной защитой на уровне строк, ограниченные по области действия и отзываемые для каждого инструмента, а также песочница, изолированная от рабочей среды. Деструктивные действия — удаление, приостановка, биллинг, крупные расходы — требуют явного подтверждения или политики утверждения человеком. Ограничения частоты запросов и лимиты расходов сдерживают платные действия, инициируемые ИИ, а каждый вызов MCP регистрируется в журнале аудита с указанием идентификатора, инструмента, аргументов и результата.

Мы поддерживаем протокол, а не интегрируем каждое приложение по отдельности, а значит, ваш выбор инструментов ИИ может меняться без изменения интеграции с хостингом.

Часто задаваемые вопросы

Является ли общедоступный API тем же самым, который использует панель управления?

Да — это тот же API движка, опубликованный и защищённый. Панель управления, консоль администратора, CLI, провайдер Terraform, сервер MCP и вебхуки используют один и тот же интерфейс, поэтому API не отстаёт от панели.

Могу ли я протестировать интеграцию, не тратя денег и не создавая реальные серверы?

Да. Ключи песочницы выдаются отдельно от рабочих ключей и работают в тестовом режиме: без реального выставления счетов и без фактического предоставления ресурсов. Направьте ваш CI на учетные данные песочницы и безопасно протестируйте полный цикл запросов и ответов.

Как предотвратить создание дубликата при повторной попытке?

Отправляйте Idempotency-Key в своем POST-запросе. Запись для повторного воспроизведения создается при фиксации (commit), а не инлайн, поэтому повторная попытка никогда не сможет воспроизвести кэшированный успех для строки, которая на самом деле не была зафиксирована, а завершившийся ошибкой запрос немедленно снимает свою блокировку, чтобы ваша исправленная повторная попытка не задерживалась. Доставка вебхуков по умолчанию осуществляется по принципу at-least-once («как минимум один раз») — выполняйте дедупликацию по envelope id на своей стороне.

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

Не сегодня. Ключи API выдаются для каждой организации отдельно, поэтому интеграция, охватывающая несколько клиентских организаций, содержит ключ для каждой из них. Разрешения также проверяются для каждой организации для субъектов-пользователей: наличие sites.create в одной организации не дает доступа в отдельной, не связанной с ней организации, хотя применяется к организациям, вложенным в нее. Это сделано намеренно — скомпрометированный ключ ограничивается пределами своей организации и ее подчиненных суборганизаций, а не всей платформы.

Что на самом деле позволяет делать встроенная роль «Разработчик»?

Роль dev включает чтение данных организации, управление API-ключами, просмотр и создание сайтов, их перезапуск, очистку их кэша, а также просмотр тикетов и ответы на них. Она намеренно исключает управление счетами и оплатой. Обратите внимание, что права на развертывание и публикацию не входят в нее — если они требуются участнику команды, назначьте роль, которая их предусматривает, а не предполагайте, что «Разработчик» является самой широкой технической ролью.

Что произойдет с моими вебхуками, если моя конечная точка выйдет из строя на один час?

Доставка повторяется с экспоненциальной задержкой (backoff), и каждая попытка фиксируется как WebhookDelivery, которую вы можете проверить. На восходящем уровне (upstream) события записываются в транзакционный outbox в рамках той же транзакции базы данных, что и само изменение, поэтому ничего не теряется, пока потребитель недоступен: отключившийся потребитель лишь отстает, он никогда не нарушает работу поставщика, а после восстановления вы можете повторно запустить доставку из панели управления.

Сколько стоит начать разработку с его помощью?

Начните с 14-дневного пробного периода Footprint-Free хостинга без привязки карты — никаких платежных данных, до 5 сайтов. Платные тарифы Footprint-Free начинаются от $6/мес. за PBN 5. Каждый тарифный план включает 30-дневную гарантию возврата средств, бесплатный перенос сайтов и отсутствие привязки к поставщику услуг.

Прочтите спецификацию, затем создавайте в соответствии с ней

API на основе спецификации, сгенерированные SDK, интерфейс CLI, провайдер Terraform, подписанные вебхуки и сервер MCP — на хостинге, созданном нами для более чем 700 000 сайтов по всему миру. Начните с 14-дневного пробного периода без карты и платежных данных.

Начать бесплатно

Плагины WordPress, с которыми может работать ваш ИИ-агент

Каждый из этих плагинов превращает ваш сайт на WordPress в MCP-сервер, поэтому Claude, Cursor, VS Code и другие ИИ-ассистенты могут выполнять на нем реальную работу от вашего имени и в пределах ваших разрешений.

Вся документация по MCP и API для разработчиков →