Для розробників

Хостинг, яким можна керувати за допомогою коду

Zinn Digital® — це API-first платформа. Та сама специфікація двигуна API, яка керує нашою панеллю керування, доступна і вам — версіонована, побудована за принципом spec-first та повністю задокументована на етапі збирання, із згенерованими SDK, CLI, провайдером Terraform, підписаними вебхуками та MCP-сервером поверх неї. Чим би ви не користувалися для роботи — терміналом, конвеєром, файлом стану чи AI-агентом — платформа реагує на це.

  • 650 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. Обмеження швидкості створення сайтів було б лінивим рішенням і повністю зламало б продукт для масового надання ресурсів. Натомість до бюджету зараховуються лише відхилені спроби дублювання доменів для кожного принципала. Успішні створення ніколи не списуються з нього — тож ви можете здійснювати масове надання ресурсів цілий день, а зондування припиняється майже миттєво.

  • Стандартизований блок помилок для кожного збою: код, зрозуміле людині повідомлення, додаткові деталі щодо конкретних полів та request_id, який ви можете надати службі підтримки. Помилки валідації повертають статус 422 із зазначенням проблемних полів.
  • Ключі ідемпотентності для POST із записом результату повтору під час фіксації транзакції, а не одразу, тому повторна спроба ніколи не відтворить кешований статус 201 із посиланням на рядок, який так і не був зафіксований. Невдалий запит одразу звільнює своє блокування в процесі виконання, тож помилка 422 не заблокує вашу виправлену повторну спробу.
  • Курсорна пагінація за ключовим набором на основі UUIDv7 — стабільна при паралельних записах, без зміщення сторінок при вставці рядків під час сканування.
  • Залишок ліміту запитів у відповідях, щоб згенерований клієнт міг розумно зменшувати частоту запитів замість вгадування.
  • Ресурси поза межами досяжності повертають 404 замість 403, оскільки 403 підтвердила б існування ресурсу. Фільтрація за організацією поза межами вашої досяжності повертає порожню сторінку з тієї самої причини.
  • Створення сайту — це реєстрація, а не підготовка ресурсів: POST /v1/sites повертає 201 зі статусом pending і ніколи не блокує виконання під час зборки. Подія записується в транзакційну скриньку вихідних повідомлень у межах тієї ж транзакції, що й рядок, тому сайт існує тоді й тільки тоді, коли гарантовано надіслано запит на його підготовку.

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), а не як симуляцію «строго один раз». У ретранслятора, який завершив роботу посеред публікації, закінчується термін дії оренди вимоги, і його події публікуються повторно. Здійснюйте дедуплікацію за ідентифікатором конверта, і ваш споживач буде коректним за визначенням.

Додавання коду на сайт

API — це лише половина історії розробника. Друга половина — це запуск.

  • Підключіть GitHub, GitLab або Bitbucket через OAuth із ключами розгортання, що зберігаються у сховищі облікових даних, а не у файл конфігурації.
  • Пуш запускає конвеєр збирання та розгортання з прив'язкою гілок до середовищ (main до production, staging до staging) і кроками збирання для кожного стека для composer та npm.
  • Поверніться до попередньої версії, якщо розгортання піде не так.
  • Клонування стейджингу та розгортання в один клік (push-to-live), щоб перевірити зміни в реальних умовах, перш ніж їх побачать відвідувачі.
  • Ізольовані SSH, SFTP та FTP для кожного сайту завдяки CageFS, щоб кожен користувач бачив лише власні файли.
  • wp-cli з термінала панелі та через SSH.
  • VS Code у браузері через code-server — повноцінний редактор з розширеннями, інтегрованим терміналом та git для безпосереднього редагування файлів сайту.
  • Версія PHP для кожного сайту, редаговані параметри PHP, розширення для кожного сайту, змінні середовища та справжній cron разом із WP-cron.

І той самий API, який може використовувати ваш штучний інтелект

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

Агент отримує три речі: Інструменти (ті самі кінцеві точки API, без паралельної логіки, яка може розсинхронізуватися), Ресурси (стан сайту лише для читання, конфігурацію, останні логи, метрики, час безперебійної роботи та статті бази значень, щоб він міг ставити діагноз на основі реальних даних перед здійсненням дій) та Промпти (опубліковані шаблони робочих процесів, наприклад «діагностувати цей сайт» або «підготувати міграцію»).

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

Ми підтримуємо сам протокол, а не інтегруємо кожну програму по черзі, що означає, що ви можете змінювати свої інструменти штучного інтелекту без необхідності змінювати інтеграцію з хостингом.

Поширені запитання

Чи публічний API такий самий, який використовує панель керування?

Так — це той самий двірець API, опублікований і випробуваний. Панель керування, консоль адміністратора, CLI, провайдер Terraform, сервер MCP та вебхуки є споживачами однієї поверхні, саме тому API не відстає від панелі.

Чи можу я протестувати інтеграцію без витрат грошей чи створення реальних серверів?

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

Як зупинити повторну спробу, щоб вона не створювала дві копії чогось?

Надсилайте заголовок Idempotency-Key у вашому запиті POST. Запис повтору створюється під час фіксації (commit), а не в процесі виконання, тому повторна спроба ніколи не відтворить кешований успішний результат для рядка, який насправді не було зафіксовано, а запит, що зазнав невдачі, одразу звільняє своє блокування, щоб виправлена повторна спроба не затримувалася. Доставка вебхуків за архітектурним задумом є гарантовано мінімум одноразовою — виконуйте дедуплікацію за ідентифікатором конверта на вашому боці.

Чи можу я надати одному ключу API доступ до всіх моїх клієнтських організацій?

Не сьогодні. API-ключі видаються для кожної організації окремо, тому інтеграція, що охоплює кілька клієнтських організацій, містить ключ для кожної з них. Права доступу також перевіряються для кожної організації окремо для облікових записів користувачів: наявність дозволу sites.create в одній організації не надає доступу в іншій, сторонній організації, хоча він поширюється на організації, вкладені під нею. Це зроблено свідомо — це обмежує поширення скомпрометованого ключа лише його власною організацією та вкладеними в неї підорганізаціями, а не всією платформою.

Що насправді дозволяє вбудована роль розробника?

Роль розробника охоплює читання даних організації, керування ключами API, перегляд і створення сайтів, їх перезапуск, очищення кешу, а також перегляд тікетів і відповіді на них. Вона свідомо виключає контроль над білінгом. Зауважте, що дозволи на розгортання та перенесення сайту на робочий сервер (push-to-live) сюди не входять — якщо вони потрібні члену команди, призначте роль, яка їх містить, замість того щоб вважати роль розробника найширшою технічною роллю.

Що станеться з моїми веб-хуками, якщо моя кінцева точка не працюватиме протягом години?

Доставка повторюється з експоненційним затримкою, і кожна спроба записується як WebhookDelivery, яку ви можете перевірити. На виході події записуються до транзакційної черги вихідних повідомлень у межах тієї ж транзакції бази даних, що й самі зміни, тому нічого не втрачається, поки споживач недоступний: непрацюючий споживач лише відстає, але ніколи не ламає видавця, і ви можете повторити доставку з панелі керування, коли все знову запрацює.

Скільки коштує почати роботу з цим?

Почніть 14-денний безплатний пробний період Footprint-Free Hosting без прив'язки картки та для кількості сайтів до 5. Платні тарифні плани Footprint-Free починаються від $6/міс для PBN 5. Кожен план має 30-денну гарантію повернення коштів, безплатні міграції та відсутність прив'язки до постачальника.

Ознайомтеся зі специфікацією, а потім розробляйте відповідно до неї

Специфікація як основа API, згенеровані SDK, інтерфейс командного рядка (CLI), провайдер Terraform, підписані вебхуки та MCP-сервер — на хостингу, який ми створили для понад 650 000 сайтів по всьому світу. Почніть 14-денну пробну версію без введення даних картки та потреби в оплаті.

Почати безплатно