За програмере

Хостинг којим можете управљати из кода

Zinn Digital® је API-first платформа. Исти онај API покретача који покреће нашу контролну таблу је онај који и Ви добијате — верзионисан, spec-first и 100% документован у време израде, са генерисаним SDK-овима, CLI-јем, Terraform провајдером, потписаним веб-кукама (webhooks) и MCP сервером преко тога. Шта год да користите за рад — терминал, цевовод (pipeline), фајл стања или AI агента — платформа одговара на то.

API крајња тачка која испоручује потписане догађаје неколицини претплаћених слушалаца.
  • 700.000+сајтова хостовано широм света
  • 1OpenAPI спецификација на основу које се генерише свака алатка
  • 4клијентски SDK-ови — TypeScript, Python, PHP, Go
  • OAuth 2.1ограничен, опозив приступ за AI агенте

Један API. Свака површина га користи.

Већина хостинг провајдера накнадно надогради API на контролни панел, и то се види — половина функција панела никада не постане доступна. Ми смо градили у супротном смеру. Контролна табла, администраторска конзола, CLI, Terraform добављач, MCP сервер и Ваше сопствене интеграције користе исти основни API. Ако то можете да урадите у панелу, можете то да урадите и у коду.

Прво спецификација, а не документација касније

OpenAPI спецификација представља једини извор истине и ниједна крајња тачка се не пушта у рад уколико се не налази у спецификацији. То једно правило омогућава да јавни API буде у потпуности документован већ током израде, а не тек касније — нема недокументованих делова, јер недокументована крајња тачка не може ни да постоји.

Генерисано, никада ручно одржавано

Интерактивна референтна документација, четири клијентска SDK-а, већи део CLI-ја и костур Terraform провајдера генеришу се из те једне спецификације. Један извор, много артефаката, увек усклађено — никада не јурите документацију која се разишла са имплементацијом.

Верзионисано са смерницама за застаревање

Крајње тачке се налазе под /v1 уз објављену политику застаревања и дневник промена. Бићете обавештени пре него што се нешто промени, у писаној форми, уместо да то сазнате из неуспелог билда.

Тестирано уговором у CI-ју

Тестови уговора који упоређују имплементацију са спецификацијом и OpenAPI анализа (linting) покрећу се при свакој промени. Одступање између кода и уговора доводи до неуспеха израде — тако да је спецификација на основу које генеришете свог клијента управо она спецификација коју сервер заиста поштује.

Аутентификација, дефинисање опсега и проблеми који настају при великом обиму

Два начина приступа, један јединствени принцип иза њих. Који год да користите, примењују се исте провере дозвола и иста изолација на нивоу базе података.

API кључеви, по организацији

Кључеви изгледају као zdk_<mode>_<prefix>_<secret>. Чува се само SHA-256 хеш тајног дела — не можемо вам поново приказати кључ након издавања, а то не може ни било ко ко приступи нашој бази података. Кључеви садрже опсеге права (scopes), могу се опозвати и издају се по организацији, а не по особи.

Продукциони и тестни режими, потпуно одвојени

Sandbox кључеви су одвојени од продукционих кључева и раде у sandbox режиму: нема стварне наплате, нема стварног покретања услуга. Ваши интеграциони тестови могу интензивно оптерећивати API без трошења новца или креирања сервера.

OIDC за људе

Корисничке сесије се аутентификују помоћу JWT-ова које издаје Keycloak, верификованих према јавном кључу домена (realm), и разрешавају се у исти Principal објекат као и API кључ. Крајње тачке ограничавају приступ на основу детаљних кључева дозвола као што су sites.create или apikeys.manage, који се проверавају по организацији — дозвола у једној организацији не даје приступ у засебној, неповезаној организацији, иако се примењује на организације угнежђене испод ње.

Безбедност на нивоу редова испод

Сваки захтев закупца извршава се унутар трансакције са Postgres опсегом организације који је постављен на основу идентификатора корисника, тако да изолацију спроводи база података, а не ORM филтер који би неко могао да заборави. Филтер скупа упита је и даље ту као додатни ниво заштите.

Направљено за машине, не само за демонстрације

Лако је учинити да API изгледа добро у датотеци README, а тешко га је натерати да се правилно понаша под стварним саобраћајем. Ово су делови око којих смо се највише мучили, јер управо они кваре интеграције у три сата ујутру.

Један детаљ вредан истицања, јер утиче на понашање масовног рада: грешка 409 при покушају коришћења већ постојећег домена даје одговор на питање „да ли се овај хост хостује овде?“ за било ког корисника система, што представља оракул за енумерацију и стваран ризик од деанонимизације у односу на Footprint-Free. Ограничавање брзине креирања сајтова било би лењо решење и потпуно би онемогућило производ за масовно креирање. Уместо тога, ограничавају се само одбијени покушаји коришћења дуплираних домена, по кориснику. Успешна креирања се никада не урачунавају у тај лимит — тако да можете масовно креирати сајтове цео дан, док покушаји испитивања бивају готово одмах прекинути.

  • Уједначен оквир за грешке при сваком неуспеху: код, порука разумљива људима, опциони детаљи на нивоу поља и request_id који можете навести подршци. Грешке при валидацији враћају 422 са наведеним спорним пољима.
  • Кључеви за идемпотентност при POST захтевима, при чему се запис за поновно извршавање уписује приликом усаглашавања (commit), а не непосредно (inline) — тако да поновни покушај никада не може поновити кеширани одговор 201 који наводи ред који никада није усаглашен. Неуспели захтев одмах отпушта своје активно закључавање, тако да статус 422 не блокира ваш исправљени поновни покушај.
  • Пагинација помоћу курсора као скуп кључева (keyset) преко 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 и остали.

Претплатите се на оно што вас занима

Региструјте крајњу тачку (endpoint) као WebhookSubscription и изаберите типове догађаја које она прима. Један ток истовремено напаја обавештења, аналитику, аутоматизације и вашу интеграцију — користите исте догађаје као и ми.

Потписано помоћу HMAC-а

Свака испорука је HMAC-потписана како бисте могли да потврдите да потиче од нас пре него што поступите по њој.

Поново покушано са одлагањем и забележено у дневник

Неуспеле испоруке се поново покушавају уз експоненцијално одлагање и сваки покушај се бележи као WebhookDelivery. Можете прегледати и поново покренути испоруке са контролне табле уместо да шаљете имејл подршци са питањем шта смо послали.

Барем једном, па дедупликујте према параметру id

Пајплајн намерно функционише по принципу „барем једном” (at-least-once) уместо да се претвара да испоручује „тачно једном” (exactly-once). Релеју који прекине рад усред објављивања истиче закуп права преузимања, а његови догађаји се поново објављују. Извршите дедупликацију на основу ID-ја омота (envelope id) и ваш потрошач ће по самој својој конструкцији бити исправан.

Постављање кода на веб-сајт

API је само пола приче за програмере. Друга половина је испорука.

  • Повежите GitHub, GitLab или Bitbucket преко OAuth протокола, са кључевима за диплојмент који се чувају у складишту акредитива — а не у конфигурационој датотеци.
  • Слање кода (push) покреће радни ток за прављење и дистрибуцију (build-and-deploy), са мапирањем грана на окружења (main на продукцију, 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 приступ. Он уређује сајт УЖИВО — између нема припремне (staging) копије, па је датотека коју сачувате јавно доступна оног тренутка када се запише, мада се статичка датотека може наставити испоручивати из кеша CDN мреже до четири сата.

Zinnector®, CLI

Бесплатно, под MIT лиценцом и изграђено на овом истом јавном API-ју. Направите почетну структуру WordPress сајта, покрените га на сопственом рачунару, проверите га пре слања у односу на слот на који га отпремате — PHP верзија, диск, број датотека — и отпремите га. Захтева Node 24 или новији.

MCP сервер

Један каталог алата, тако да AI клијент који већ користите може да ради на вашим сајтовима путем истог API-ја и истих дозвола које користи контролна табла. Исти сервер са којим се повезује ваш сопствени клијент јесте онај који је повезан са веб-уређивачем. Само за читање док не одредите другачије.

Приступ програмера по сајту

За рад са клијентима није потребна ваша лозинка. Позовите некога путем имејл адресе и он добија тачно један сајт: пријављује се као он сам, са улогом прегледача, уредника или менаџера, а сваки други сајт одговара са 404 пре покретања било ког руковаоца — сигурносна политика на нивоу реда у бази Postgres и заштита на нивоу захтева, а не једна провера. Власник налога то одобрава и опозива једним кликом, што ступа на снагу при њиховом следећем захтеву.

И исти API који ваш AI агент може да користи

Платформу излажемо као хостовани MCP сервер: танак адаптер протокола преко API-ја механизма који поново користи идентичан каталог акција, RBAC и евиденцију ревизије. Повежите Claude Code, Cursor, ChatGPT, Claude Desktop или било који клијент који подржава MCP једном, и свака могућност коју додамо у API постаје му аутоматски доступна.

Агент добија три ствари: Алатке (исте API крајње тачке, без паралелне логике која би одступала), Ресурсе (здравствено стање сајта само за читање, конфигурацију, недавне евиденције, метрике, време непрекидног рада и чланке базе знања, како би дијагностиковао користећи стварне податке пре предузимања радњи) и Упите (објављене шаблоне радних токова као што су „дијагностикуј овај сајт“ или „припреми миграцију“).

Безбедност је иста прича као и аутентификација: OAuth 2.1, токени везани за вашу организацију и RBAC дозволе уз принудно спроведену безбедност на нивоу редова, са дефинисаним опсегом и могућношћу опозива по алату, окружење за тестирање (sandbox) одвојено од продукције. Деструктивне радње — брисање, суспензија, наплата, велика потрошња — захтевају изричиту потврду или смернице за људско одобрење. Ограничења учесталости и лимити потрошње ограничавају плаћене радње покренуте од стране AI-ја, а сваки MCP позив се евидентира у ревизорском дневнику са идентитетом, алатом, аргументима и резултатом.

Подржавамо протокол уместо да интегришемо сваку апликацију појединачно, што значи да се Ваш избор AI алата може променити, а да се интеграција са хостингом не мора мењати заједно са њим.

Често постављана питања

Да ли је јавни API исти онај који користи контролна табла?

Да — то је исти API енџина, објављен и ојачан. Контролна табла, администраторска конзола, CLI, Terraform добављач, MCP сервер и веб-хукови су сви корисници једне површине, због чега API не заостаје за панелом.

Могу ли да тестирам интеграцију без трошења новца или прављења правих сервера?

Да. Кључеви за sandbox се издају одвојено од продукционих кључева и раде у тестном режиму: нема стварне наплате нити стварног покретања ресурса. Усмерите свој CI на sandbox акредитиве и безбедно испробајте комплетан циклус захтева и одговора.

Како да спречим да поновни покушај направи дупликат?

Пошаљите Idempotency-Key у свом POST захтеву. Запис о поновном извршавању се уписује приликом усаглашавања (commit), а не у самом току извршавања, тако да поновни покушај никада не може поновити кеширани успех за ред који заправо није потврђен, а захтев који не успе одмах ослобађа своје закључавање како се ваш исправљени поновни покушај не би задржавао. Испорука веб-куке (webhook) је по дизајну барем једном (at-least-once) — извршите дедупликацију на основу ID-ја омотача на својој страни.

Могу ли једном API кључу дати приступ свим својим организацијама клијената?

Не данас. API кључеви се издају по организацији, тако да интеграција која обухвата више организација клијената садржи кључ за сваку од њих. Дозволе се такође проверавају по организацији за корисничке субјекте: поседовање дозволе sites.create у једној организацији не даје никакав приступ у засебној, неповезаној организацији, иако се примењује на организације угњеждене испод ње. То је намерно тако — тиме се компромитовани кључ ограничава на сопствену организацију и подорганизације испод ње, а не на целу платформу.

Шта уграђена улога Developer заправо омогућава?

Улога програмера (dev) обухвата читање података о организацији, управљање API кључевима, прегледање и креирање сајтова, њихово поновно покретање, брисање кеша, као и прегледање и одговарање на тикете. Она намерно искључује контролу наплате. Имајте на уму да дозволе за дислоцирање (deploy) и објављивање уживо (push-to-live) нису њен део — ако су оне потребне члану тима, доделите му улогу која их садржи уместо да претпоставите да је Developer најшира техничка улога.

Шта се дешава са мојим веб-кукама (webhooks) ако моја крајња тачка (endpoint) падне на сат времена?

Испоруке се поново покушавају уз експоненцијално одлагање и сваки покушај се бележи као WebhookDelivery који можете прегледати. Узводно, догађаји се уписују у трансакциони outbox у оквиру исте трансакције базе података као и сама промена, тако да се ништа не губи док је конзумент недоступан — конзумент који није у функцији само касни, никада не прекида рад произвођача, а испоруке можете поново покренути са контролне табле чим поново будете доступни.

Колико кошта почетак израде на основу тога?

Започните бесплатни пробни период од 14 дана без платне картице за Footprint-Free хостинг — без података о плаћању, до 5 сајтова. Плаћени Footprint-Free пакети почињу од 6 $/мес за PBN 5. Сваки план укључује 30-дневну гаранцију повраћаја новца, бесплатне миграције и одсуство везивања за провајдера.

Прочитајте спецификацију, а затим развијајте у складу са њом

Spec-first API, генерисани SDK-ови, CLI, Terraform провајдер, потписани вебхукови и MCP сервер — на хостингу који смо изградили за више од 700.000 сајтова широм света. Започните бесплатни пробни период од 14 дана без картице и без уноса података за плаћање.

Започните бесплатно

WordPress прикључци са којима ваш AI агент може да ради

Сваки од ових прикључака претвара ваш WordPress веб-сајт у MCP сервер, тако да Claude, Cursor, VS Code и други AI помоћници могу да обављају прави посао на њему, пријављени као ви и ограничени на оно што вам је дозвољено да радите.

Сва MCP и API документација за програмере →