Dla programistów

Hosting, którym mogą Państwo sterować za pomocą kodu

Zinn Digital® to platforma typu API-first. To samo API silnika, które zasila nasz pulpit nawigacyjny, jest udostępniane Państwu — wersjonowane, oparte na specyfikacji i w 100% udokumentowane na etapie kompilacji, z wygenerowanymi pakietami SDK, interfejsem CLI, dostawcą Terraform, podpisanymi webhookami oraz serwerem MCP. Bez względu na to, czego używają Państwo do pracy — terminala, potoku, pliku stanu czy agenta AI — platforma na to odpowiada.

Punkt końcowy interfejsu API dostarczający podpisane zdarzenia do kilku subskrybowanych odbiorników.
  • 700 000+witryny hostowane na całym świecie
  • 1Specyfikacja OpenAPI, z której generowane jest każde narzędzie
  • 4pakiety SDK klienta — TypeScript, Python, PHP, Go
  • OAuth 2.1ograniczony zakresem, odwoływalny dostęp agenta AI

Jedno API. Każda powierzchnia na nim bazuje.

Większość dostawców hostingu dodaje API do panelu sterowania dopiero po fakcie i to widać — połowa funkcji panelu nigdy nie zostaje udostępniona. My zbudowaliśmy to zupełnie odwrotnie. Pulpit nawigacyjny, konsola administratora, CLI, dostawca Terraform, serwer MCP oraz Państwa własne integracje korzystają z tego samego API silnika. Jeśli mogą Państwo coś zrobić w panelu, mogą to Państwo zrobić w kodzie.

Najpierw specyfikacja, nie dokumentowane później

Specyfikacja OpenAPI jest jedynym źródłem prawdy i żaden punkt końcowy nie jest wdrażany, jeśli nie znajduje się w specyfikacji. Ta pojedyncza zasada sprawia, že publiczne API jest w pełni udokumentowane już na etapie kompilacji, a nie dopiero z czasem — nie ma żadnych nieudokumentowanych zakamarków, ponieważ nieudokumentowany punkt końcowy po prostu nie może istnieć.

Wygenerowano, nigdy nie modyfikowane ręcznie

Interaktywna dokumentacja referencyjna, cztery pakiety SDK klienta, znaczna część interfejsu CLI oraz szkielet dostawcy Terraform są generowane na podstawie tej jednej specyfikacji. Jedno źródło, wiele artefaktów, zawsze zsynchronizowane — nigdy nie muszą Państwo gonić za dokumentacją, która odbiegła od implementacji.

Wersjonowane z zasadami wycofywania

Punkty końcowe znajdują się w ścieżce /v1 wraz z opublikowanymi zasadami wycofywania i dziennikiem zmian. O wszelkich zmianach zostaną Państwo powiadomieni na piśmie z wyprzedzeniem, zamiast dowiadywać się o nich z nieudanej kompilacji.

Przetestowano na podstawie kontraktu w CI

Testy kontraktowe weryfikujące implementację ze specyfikacją oraz linting OpenAPI są uruchamiane przy każdej zmianie. Rozbieżność między kodem a kontraktem powoduje niepowodzenie kompilacji — dzięki temu specyfikacja, na podstawie której generują Państwo swojego klienta, jest specyfikacją rzeczywiście obsługiwaną przez serwer.

Uwierzytelnianie, określanie zakresu i pułapki skalowania

Dwa sposoby dostępu, za którymi stoi jedna jednolita zasada. Niezależnie od tego, którego z nich Państwo używają, obowiązują te same kontrole uprawnień i ta sama izolacja na poziomie bazy danych.

Klucze API, na organizację

Klucze mają postać zdk_<mode>_<prefix>_<secret>. Przechowywany jest wyłącznie skrót SHA-256 części tajnej — po wygenerowaniu nie możemy ponownie wyświetlić Państwu klucza, podobnie jak nikt, kto uzyska dostęp do naszej bazy danych. Klucze posiadają zakresy uprawnień, mogą zostać unieważnione i są wydawane dla organizacji, a nie dla poszczególnych osób.

Tryb produkcyjny i testowy, całkowicie rozdzielone

Klucze środowiska sandbox są oddzielone od kluczy produkcyjnych i działają w trybie sandbox: brak rzeczywistych opłat, brak rzeczywistego aprowizowania. Testy integracyjne mogą intensywnie obciążać interfejs API bez ponoszenia kosztów i tworzenia serwerów.

OIDC dla ludzi

Sesje użytkowników uwierzytelniają się za pomocą tokenów JWT wydanych przez Keycloak, weryfikowanych przy użyciu klucza publicznego obszaru (realm), i są rozpoznawane jako ten sam obiekt Principal, co w przypadku klucza API. Punkty końcowe są chronione szczegółowymi kluczami uprawnień, takimi jak sites.create lub apikeys.manage, sprawdzanymi dla każdej organizacji — uprawnienie w jednej organizacji nie przyznaje dostępu w osobnej, niepowiązanej organizacji, chociaż ma zastosowanie do organizacji w niej zagnieżdżonych.

Zabezpieczenia na poziomie wierszy poniżej

Każde żądanie dzierżawcy jest wykonywane w ramach transakcji z zakresem organizacji Postgres ustawionym na podstawie podmiotu zabezpieczeń (principal), dzięki czemu izolacja jest wymuszana przez bazę danych, a nie przez filtr ORM, o którym ktoś mógłby zapomnieć. Filtr queryset nadal tam jest jako dodatkowa linia obrony (defense in depth).

Stworzone dla maszyn, nie tylko do celów demonstracyjnych

Łatwo jest sprawić, by interfejs API wyglądał dobrze w pliku README, ale trudno zapewnić jego stabilne działanie pod realnym obciążeniem. To właśnie nad tymi elementami pracowaliśmy najciężej, ponieważ to one zawodzą integracje o trzeciej nad ranem.

Szczegół, o którym warto wspomnieć, ponieważ wpływa na działanie operacji masowych: błąd 409 przy zduplikowanej domenie odpowiada dowolnemu dzierżawcy na pytanie „czy ta nazwa hosta jest tu hostowana?”, co stanowi wyrocznię wyliczającą (enumeration oracle) oraz realne ryzyko deanomizacji w odniesieniu do Footprint-Free. Ograniczanie przepustowości (throttling) tworzenia witryn byłoby pójściem na łatwiznę i całkowicie zepsułoby produkt do masowego wdrażania (bulk provisioning). Zamiast tego limitowane są wyłącznie odrzucone próby użycia zduplikowanej domeny, na poziomie danego podmiotu (principal). Pomyślnie utworzone witryny nie uszczuplają tego limitu — mogą więc Państwo wdrażać masowo przez cały dzień, a próby sondowania są dławione niemal natychmiast.

  • Spójna powłoka błędu przy każdym niepowodzeniu: kod, zrozumiały komunikat, opcjonalne szczegóły na poziomie pól oraz request_id, który można przekazać zespołowi wsparcia. Błędy walidacji zwracają 422 z podaniem nazw nieprawidłowych pól.
  • Klucze idempotencji dla POST, z zapisem rekordu odtworzenia przy zatwierdzaniu (commit), a nie w trakcie przetwarzania (inline) — dzięki czemu ponowna próba nigdy nie odtworzy zbuforowanego 201 wskazującego na wiersz, który nigdy nie został zatwierdzony. Nieudane żądanie natychmiast zwalnia aktywną blokadę, więc błąd 422 nie blokuje Państwa poprawionej ponownej próby.
  • Paginacja kursorowa jako keyset na UUIDv7 — stabilna przy równoczesnych zapisach, bez efektu przesuwania się stron przy wstawianiu wierszy w trakcie skanowania.
  • RateLimit-Remaining w odpowiedziach, dzięki czemu wygenerowany klient może inteligentnie ograniczyć częstotliwość żądań zamiast zgadywać.
  • Zasoby spoza zakresu zwracają błąd 404 zamiast 403 — kod 403 potwierdziłby istnienie zasobu. Filtrowanie według organizacji spoza twojego zakresu zwraca pustą stronę z tego samego powodu.
  • Tworzenie witryny to rejestracja, a nie aprowizacja: POST /v1/sites zwraca 201 ze stanem pending i nigdy nie blokuje procesu kompilacji. Zdarzenie jest zapisywane w transakcyjnej skrzynce nadawczej w tej samej transakcji co wiersz, więc witryna istnieje wtedy i tylko wtedy, gdy żądanie jej aprowizacji jest gwarantowane.

Pakiety SDK, interfejs CLI oraz dostawca Terraform

Trzech odbiorców tej samej specyfikacji dla trzech różnych sposobów pracy.

Pakiety SDK klienta

Wygenerowano dla języków TypeScript, Python, PHP i Go, ze śledzeniem specyfikacji, dzięki czemu nowy punkt końcowy trafia do Państwa języka bez czekania na ręcznie napisany wrapper.

Zinnector®, interfejs wiersza poleceń (CLI)

Wygeneruj szkielet witryny WordPress, uruchom ją lokalnie mając zainstalowane jedynie środowisko Node i wdróż ją. Zinnector® wstępnie weryfikuje twój projekt pod kątem slotu, do którego zamierzasz go wdrożyć — wersję PHP, dysk, liczbę plików — i ostrzega przed wysłaniem zmian, a nie po fakcie. Ponadto loguje się, wyświetla witryny, wdraża, zarządza domenami oraz DNS, odczytuje usługi pocztowe, tworzy kopie zapasowe, uruchamia dozwolone polecenia WP-CLI, śledzi dzienniki w czasie rzeczywistym i uruchamia operacje masowe. Bezpłatny, na licencji MIT i oparty na tym samym publicznym API.

Dostawca Terraform

Zarządzaj witrynami, domenami, rekordami DNS, skrzynkami pocztowymi i planami jako infrastrukturą w postaci kodu. Polecenie terraform apply wdraża hosting, a Państwa środowiska stają się powtarzalne i weryfikowalne, zamiast być sekwencją kliknięć, której nikt nie zapisał.

Interaktywny przewodnik

Wygenerowana dokumentacja, którą można czytać i wywoływać z poziomu przeglądarki, dokładnie opisująca punkty końcowe zaimplementowane przez serwer — ponieważ oba elementy pochodzą z tej samej specyfikacji.

Webhooki, które przetrwają awarię twojego punktu końcowego

Za platformą stoi trwały szkielet zdarzeń: każda zmiana stanu zapisuje zdarzenie do transakcyjnego outboxa w Postgres, atomowo ze zmianą w bazie danych, a przekaźnik publikuje je w NATS JetStream. Zdarzenia są typowane i wersjonowane — site.deployed, order.paid, invoice.overdue, backup.completed, abuse.flagged, trial.ending i pozostałe.

Subskrybuj to, co cię interesuje

Zarejestruj punkt końcowy jako WebhookSubscription i wybierz typy zdarzeń, które ma odbierać. Jeden strumień zasila powiadomienia, analitykę, automatyzacje oraz twoją integrację — korzystasz z tych samych zdarzeń co my.

Podpisano za pomocą HMAC

Każde doręczenie jest podpisane za pomocą HMAC, dzięki czemu mogą Państwo zweryfikować, że pochodzi od nas, zanim podejmą Państwo jakiekolwiek działania.

Ponowiono próbę z opóźnieniem i zarejestrowano

Nieudane doręczenia są ponawiane z rosnącym odstępem czasu, a każda próba jest rejestrowana jako WebhookDelivery. Zamiast wysyłać wiadomość e-mail do działu pomocy technicznej z pytaniem o wysłane dane, można sprawdzić i ponownie uruchomić doręczenia bezpośrednio z panelu.

Co najmniej raz, więc usuń duplikaty na podstawie id

Potok celowo działa w trybie „co najmniej raz” (at-least-once), zamiast udawać tryb „dokładnie raz” (exactly-once). W przypadku przekaźnika, który ulegnie awarii w trakcie publikowania, jego dzierżawa wygasa, a zdarzenia są publikowane ponownie. Zastosuj deduplikację według envelope id, a twój konsument będzie poprawny z założenia.

Wprowadzanie kodu na stronę

Interfejs API to tylko połowa historii programisty. Druga połowa to wdrożenie.

  • Połącz GitHub, GitLab lub Bitbucket przez OAuth, przechowując klucze wdrażania w magazynie poświadczeń — nie w pliku konfiguracyjnym.
  • Push uruchamia potok kompilacji i wdrażania z mapowaniem gałęzi na środowiska (main na production, staging na staging) oraz krokami kompilacji dla każdego stosu dla composer i npm.
  • Przywróć poprzednie wydanie, gdy wdrożenie zakończy się niepowodzeniem.
  • Klonowanie testowe i wdrażanie na żywo, dzięki czemu zmiana jest sprawdzana w rzeczywistym środowisku, zanim trafi do odwiedzających.
  • SFTP dla każdej witryny w ramach izolacji CageFS, dzięki czemu każdy najemca widzi tylko swoje własne pliki, a także odizolowana (jailed) powłoka SSH na współdzielonej platformie.
  • wp-cli z terminala w panelu oraz przez SSH.
  • VS Code w przeglądarce za pośrednictwem code-server — pełny edytor z git, umożliwiający bezpośrednią edycję plików witryny.
  • Wersja PHP dla każdej witryny, edytowalne ustawienia PHP, rozszerzenia dla każdej witryny, zmienne środowiskowe oraz prawdziwy cron obok WP-cron.

Cztery sposoby pracy nad witryną

Interfejs API to jedne drzwi. Oto pozostałe cztery, a każde z nich wchodzi w skład planu, zamiast być sprzedawane jako poziom deweloperski.

Edytor stron

VS Code w przeglądarce, otwierany ze strony witryny w panelu nawigacyjnym, edytuje rzeczywiste pliki tej witryny z wbudowanym systemem git, a cały edytor znajduje się w tym samym odizolowanym środowisku CageFS, co twój dostęp SFTP. Edytuje on witrynę NA ŻYWO — nie ma po drodze żadnej kopii przejściowej (staging), więc zapisany plik staje się publiczny w momencie jego zapisania, chociaż plik statyczny może być nadal serwowany z pamięci podręcznej CDN przez maksymalnie cztery godziny.

Zinnector®, interfejs CLI

Bezpłatne, na licencji MIT i oparte na tym samym publicznym API. Wygeneruj szkielet witryny WordPress, uruchom ją na własnym komputerze, sprawdź przed wdrożeniem pod kątem slotu docelowego — wersja PHP, dysk, liczba plików — i wdróż. Wymaga Node w wersji 24 lub nowszej.

Serwer MCP

Jeden katalog narzędzi, dzięki czemu klient AI, z którego już Państwo korzystają, może pracować na Państwa witrynach za pośrednictwem tego samego API i tych samych uprawnień, których używa pulpit nawigacyjny. Ten sam serwer, z którym łączy się Państwa klient, jest połączony z edytorem internetowym. Tylko do odczytu, dopóki nie zdecydują Państwo inaczej.

Dostęp programisty dla poszczególnych witryn

Praca dla klientów nie wymaga podawania Państwa hasła. Wystarczy zaprosić kogoś za pomocą adresu e-mail, aby uzyskał dostęp do dokładnie jednej witryny: loguje się jako on sam, z rolą przeglądającego, edytora lub menedżera, a każda inna witryna zwraca błąd 404, zanim uruchomi się jakikolwiek program obsługi — to zasada bezpieczeństwa na poziomie wiersza w Postgres i zapora na poziomie żądania, a nie pojedyncza weryfikacja. Właściciel konta przyznaje i cofa te uprawnienia jednym kliknięciem, ze skutkiem od następnego żądania.

I to samo API, z którego może korzystać Państwa agent AI

Udostępniamy platformę jako hostowany serwer MCP: cienki adapter protokołu nad interfejsem API silnika, który wykorzystuje ten sam katalog działań, RBAC oraz ścieżkę audytu. Wystarczy raz podłączyć Claude Code, Cursor, ChatGPT, Claude Desktop lub dowolnego klienta obsługującego MCP, a każda nowo dodana przez nas funkcja API stanie się dla niego automatycznie dostępna.

Agent otrzymuje trzy elementy: Tools (te same punkty końcowe API, brak równoległej logiki podatnej na rozbieżności), Resources (stan witryny tylko do odczytu, konfiguracja, ostatnie dzienniki, metryki, czas bezawaryjnej pracy i artykuły bazy wiedzy, dzięki czemu diagnozuje na podstawie rzeczywistych danych przed podjęciem działań) oraz Prompts (opublikowane szablony przepływu pracy, takie jak „diagnose this site” lub „prepare a migration”).

Bezpieczeństwo opiera się na tych samych zasadach co uwierzytelnianie: OAuth 2.1, tokeny powiązane z Państwa organizacją oraz uprawnienia RBAC z wymuszonym zabezpieczeniem na poziomie wierszy, ograniczone zakresem i odwoływalne dla poszczególnych narzędzi, ze środowiskiem piaskownicy odizolowanym od produkcji. Działania destrukcyjne — usuwanie, zawieszanie, rozliczenia, wysokie wydatki — wymagają jednoznacznego potwierdzenia lub zasad zatwierdzania przez człowieka. Limity stawek i limity wydatków ograniczają płatne działania inicjowane przez AI, a każde wywołanie MCP jest rejestrowane w dzienniku audytu wraz z tożsamością, narzędziem, argumentami i wynikiem.

Obsługujemy protokół zamiast integrować każdą aplikację z osobna, co oznacza, że wybór narzędzi AI może ulec zmianie bez konieczności zmiany integracji z hostingiem.

Często zadawane pytania

Czy publiczny interfejs API jest tym samym, z którego korzysta panel kontrolny?

Tak — to to samo API silnika, opublikowane i zabezpieczone. Panel nawigacyjny, konsola administracyjna, interfejs CLI, dostawca Terraform, serwer MCP i webhooki korzystają z tego samego interfejsu, dlatego API nie pozostaje w tyle za panelem.

Czy mogę przetestować integrację bez wydawania pieniędzy i bez budowania rzeczywistych serwerów?

Tak. Klucze Sandbox są wydawane oddzielnie od kluczy produkcyjnych i działają w trybie testowym: bez rzeczywistego naliczania opłat i bez rzeczywistego aprowizowania. Proszę skierować swoje CI na dane uwierzytelniające sandbox i bezpiecznie przetestować pełny cykl żądania i odpowiedzi.

Jak zapobiec tworzeniu duplikatu przez ponowną próbę?

Proszę przesłać Idempotency-Key w żądaniu POST. Rekord powtórzenia jest zapisywany podczas zatwierdzania (commit), a nie w trybie inline, dzięki czemu ponowna próba nigdy nie odtworzy sukcesu z pamięci podręcznej dla wiersza, który w rzeczywistości nie został zatwierdzony, a żądanie, które zakończy się niepowodzeniem, natychmiast zwalnia swoją blokadę, więc poprawiona ponowna próba nie zostanie wstrzymana. Dostarczanie webhooków jest domyślnie realizowane na zasadzie at-least-once — prosimy o deduplikację po envelope id po swojej stronie.

Czy mogę przyznać jednemu kluczowi API dostęp do wszystkich organizacji moich klientów?

Nie dzisiaj. Klucze API są wydawane dla poszczególnych organizacji, więc integracja obejmująca kilka organizacji klienckich posiada klucz dla każdej z nich. Uprawnienia są również sprawdzane dla poszczególnych organizacji w przypadku podmiotów użytkowników: posiadanie sites.create w jednej organizacji nie daje dostępu w innej, niepowiązanej organizacji, chociaż ma zastosowanie do organizacji zagnieżdżonych poniżej niej. Jest to zamierzone — ogranicza naruszony klucz do jego własnej organizacji i podległych jej podorganizacji, a nie do całej platformy.

Na co w rzeczywistości pozwala wbudowana rola Dewelopera?

Rola dev obejmuje odczyt organizacji, zarządzanie kluczami API, wyświetlanie i tworzenie witryn, ich restartowanie, czyszczenie pamięci podręcznej oraz przeglądanie zgłoszeń i odpowiadanie na nie. Celowo wyklucza kontrolę nad rozliczeniami. Należy pamiętać, że uprawnienia do wdrażania (deploy) oraz publikowania na środowisku produkcyjnym (push-to-live) nie wchodzą w jej zakres — jeśli członek zespołu ich potrzebuje, należy przypisać rolę, która je zawiera, zamiast zakładać, że Developer to najszersza rola techniczna.

Co stanie się z moimi webhookami, jeśli mój punkt końcowy przestanie działać na godzinę?

Próby dostarczenia są ponawiane z mechanizmem backoff, a każda próba jest rejestrowana jako WebhookDelivery, którą można sprawdzić. Na wcześniejszym etapie (upstream) zdarzenia są zapisywane w transakcyjnej skrzynce nadawczej (outbox) w ramach tej samej transakcji bazy danych co sama zmiana, dzięki czemu nic nie zostaje utracone, gdy odbiorca jest niedostępny — niedziałający odbiorca ma jedynie opóźnienia, nigdy nie zakłóca pracy nadawcy, a po powrocie można ponownie uruchomić dostarczenia z poziomu pulpitu nawigacyjnego.

Ile kosztuje rozpoczęcie tworzenia na jego bazie?

Rozpocznij od 14-dniowego okresu próbnego hostingu Footprint-Free bez karty — brak danych płatności, do 5 witryn. Płatne pakiety Footprint-Free zaczynają się od 6 USD/mies. za PBN 5. Każdy plan obejmuje 30-dniową gwarancję zwrotu pieniędzy, bezpłatne migracje i brak uzależnienia od dostawcy.

Przeczytaj specyfikację, a następnie buduj zgodnie z nią

API oparte na specyfikacji, generowane pakiety SDK, interfejs CLI, dostawca Terraform, podpisane webhooki i serwer MCP — na hostingu, który stworzyliśmy dla ponad 700 000 witryn na całym świecie. Rozpocznij 14-dniowy okres próbny bez karty i bez podawania danych płatniczych.

Rozpocznij za darmo

Wtyczki WordPress, z którymi twój agent AI może współpracować

Każda z tych wtyczek zamienia twoją witrynę WordPress w serwer MCP, dzięki czemu Claude, Cursor, VS Code iowni inni asystenci AI mogą wykonywać na niej rzeczywistą pracę, będąc zalogowanym jako ty i mając ograniczenia do tego, co masz prawo robić.

Wszystka dokumentacja MCP i API dla deweloperów →