Dla programistów

Hosting, którym zarządzasz za pomocą kodu

Zinn Digital® to platforma typu API-first. Ten sam interfejs API silnika, który obsługuje nasz panel, jest tym, co otrzymujesz — wersjonowanym, opartym na specyfikacji i w 100% udokumentowanym na etapie kompilacji, z wygenerowanymi pakietami SDK, interfejsem wiersza poleceń CLI, dostawcą Terraform, podpisanymi webhookami oraz serwerem MCP na dokładkę. Cegiełkami, którymi pracujesz — terminalem, potokiem, plikiem stanu czy agentem AI — platforma odpowiada na każde z nich.

  • 650 000+witryny hostowane na całym świecie
  • 1Specyfikacja OpenAPI, z której generowane jest każde narzędzie
  • 4Zestawy SDK dla klientów — TypeScript, Python, PHP, Go
  • OAuth 2.1zakresowy, odwołalny dostęp dla agenta AI

Jedno API. Każda powierzchnia na nim działa.

Większość dostawców hostingu dokłada API do panelu sterowania dopiero po fakcie i to widać – połowa funkcji panelu nigdy do niego nie trafia. My zbudowaliśmy to zupełnie inaczej. Panel użytkownika, konsola administratora, interfejs CLI, dostawca Terraform, serwer MCP i Twoje własne integracje korzystają z tego samego silnika API. Jeśli możesz zrobić coś w panelu, możesz to zrobić również za pomocą kodu.

Najpierw specyfikacja, dokumentacja 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 jedna zasada sprawia, że publiczne API jest w pełni udokumentowane już w momencie kompilacji, a nie dopiero po czasie — nie ma tu nieudokumentowanych zakamarków, ponieważ nieudokumentowany punkt końcowy po prostu nie może istnieć.

Wygenerowano, brak ręcznej konserwacji

Interaktywna dokumentacja referencyjna, cztery zestawy SDK dla klientów, znaczna część interfejsu wiersza poleceń (CLI) oraz struktura dostawcy Terraform są generowane z tej jednej specyfikacji. Jedno źródło, wiele artefaktywów, zawsze w synchronizacji — nigdy nie gonisz za dokumentacją, która rozjechała się z implementacją.

Wersjonowane z zasadą wycofywania

Endpointy działają w katalogu /v1 zgodnie z opublikowaną zasadą wycofywania i dziennikiem zmian. Otrzymujesz powiadomienie przed każdą zmianą na piśmie, zamiast dowiadywać się o niej z nieudanej kompilacji.

Przetestowane kontraktowo w CI

Testy kontraktowe zgodności implementacji ze specyfikacją oraz liting OpenAPI uruchamiają się przy każdej zmianie. Rozbieżność między kodem a kontraktem powoduje niepowodzenie kompilacji — dzięki temu specyfikacja, na podstawie której generujesz klienta, jest tą, którą serwer faktycznie obsługuje.

Uwierzytelnianie, zakresy i problemy, które dają się we znaki na dużą skalę

Dwie drogi wejścia, jedna spójna zasada kryjąca się za nimi. Niezależnie od tego, której użyjesz, obowiązują te same kontrole uprawnień i ta sama izolacja na poziomie bazy danych.

Klucze API, dla organizacji

Klucze mają postać zdk_<mode>_<prefix>_<secret>. Przechowywany jest wyłącznie skrót SHA-256 tego sekretu – nie możemy pokazać Ci klucza ponownie po jego wygenerowaniu i nie może tego zrobić nikt, kto uzyska dostęp do naszej bazy danych. Klucze posiadają zakresy uprawnień, można je unieważniać i są wydawane dla organizacji, a nie dla poszczególnych osób.

Tryby na żywo i testowe, odseparowane

Klucze środowiska testowego (sandbox) są niezależne od kluczy produkcyjnych i działają w trybie testowym: bez prawdziwych rozliczeń i rzeczywistego uruchamiania usług. Twoje testy integracyjne mogą obciążać API bez ponoszenia kosztów i budowania 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 realm, i są rozwiązywane do tego samego obiektu Principal co klucz API. Endpointy zabezpieczają się szczegółowymi kluczami uprawnień, takimi jak sites.create lub apikeys.manage, sprawdzanymi dla każdej organizacji – uprawnienie w jednej organizacji nie daje dostępu w innej, powiązanej z nią organizacji, choć dotyczy organizacji zagnieżdżonych pod nią.

Bezpieczeństwo na poziomie wiersza

Każde żądanie tenanta wykonuje się w transakcji z zakresem organizacji Postgres ustawionym na podstawie podmiotu (principal), więc izolacja jest egzekwowana przez bazę danych, a nie przez filtr ORM, o którym ktoś mógłby zapomnieć. Filtr na queryset nadal tam jest jako dodatkowa warstwa ochrony.

Zaprojektowane dla maszyn, nie tylko do pokazów

API łatwo dobrze zaprezentować w pliku README, ale trudno sprawić, by działała pod wpływem prawdziwego ruchu. Nad tymi elementami pracowaliśmy w pocie czoła, ponieważ to one powodują awarie integracji o trzeciej nad ranem.

Warto zwrócić uwagę na jeden szczegół, ponieważ wpływa on na działanie operacji masowych: błąd 409 w przypadku zduplikowanej domeny odpowiada na pytanie „czy ta nazwa hosta jest tu hostowana?” dla dowolnego tenanta, co stanowi wyrocznię wyliczeniową i realne ryzyko deanimizacji w systemie Footprint-Free. Ograniczenie szybkości tworzenia stron byłoby pójściem na łatwiznę i całkowicie zepsułoby produkt do masowego wdrażania. Zamiast tego budżetowane są wyłącznie odrzucone próby użycia zduplikowanej domeny, w przeliczeniu na podmiot. Udane utworzenia nigdy nie obciążają tego limitu – dzięki temu można dokonywać masowego prowizjonowania przez cały dzień, a próby sondowania są niemal natychmiast blokowane.

  • Spójna koperta błędów dla każdej awarii: kod, komunikat dla człowieka, opcjonalne szczegóły na poziomie pól oraz identyfikator request_id, który możesz podać w zgłoszeniu do pomocy technicznej. Błędy walidacji zwracają kod 422 wraz z nazwami błędnych pól.
  • Klucze idempotentności dla żądań POST, z wpisem powtórzenia zapisywanym w momencie zatwierdzenia transakcji (commit), a nie w linii – dzięki temu ponowna próba nigdy nie odtworzy buforowanego kodu 201 wskazującego wiersz, który nigdy nie został zatwierdzony. Nieudane żądanie natychmiast zwalnia blokadę w trakcie przetwarzania, więc błąd 422 nie blokuje poprawionej ponownej próby.
  • Stronicowanie kursorowe jako zestaw kluczy oparty na UUIDv7 – stabilne przy współbieżnych zapisach, bez przesuwania stron w przypadku wstawiania wierszy w trakcie skanowania.
  • RateLimit-Remaining w odpowiedziach, dzięki czemu wygenerowany klient może inteligentnie ograniczyć zapytania zamiast zgadywać.
  • Zasoby spoza zakresu zwracają kod 404 zamiast 403 – kod 403 potwierdzałby istnienie zasobu. Filtrowanie według organizacji spoza Twojego zakresu zwraca pustą stronę z tego samego powodu.
  • Utworzenie witryny to rejestracja, a nie przygotowanie zasobów: POST /v1/sites zwraca 201 ze statusem pending i nigdy nie blokuje procesu budowania. Zdarzenie jest zapisywane w transakcyjnej tabeli outbox w ramach tej samej transakcji co wiersz, więc witryna istnieje wtedy i tylko wtedy, gdy zagwarantowane jest żądanie jej przygotowania.

Zestawy SDK, interfejs CLI oraz dostawca Terraform

Trzej konsumenci tej samej specyfikacji, do trzech różnych sposobów pracy.

Zestawy SDK dla klientów

Wygenerowano dla języków TypeScript, Python, PHP i Go, śledząc specyfikację, dzięki czemu nowy punkt końcowy trafia do Twojego języka bez oczekiwania na ręcznie pisany wrapper.

Zinnector®, interfejs wiersza poleceń

Przygotuj szkielet witryny WordPress, uruchom ją lokalnie mając zainstalowane tylko Node, a następnie wdróż ją. Zinnector® przeprowadza wstępną weryfikację Twojego projektu względem miejsca docelowego, do którego masz zamiar go wdrożyć – wersji PHP, dysku, liczby plików – i ostrzega przed przesłaniem, a nie po nim. Loguje się również, wyświetla listę witryn, wdraża, zarządza domenami i DNS, odczytuje usługi pocztowe, tworzy kopie zapasowe, uruchamia wpisane na białą listę polecenia WP-CLI, śledzi dzienniki i uruchamia operacje masowe. Bezpłatny, na licencji MIT i zbudowany na tym samym publicznym API.

Dostawca Terraform

Zarządzaj witrynami, domenami, rekordami DNS, skrzynkami pocztowymi i planami jako infrastrukturą jako kod. Polecenie terraform apply konfigurowarka hosting, a Twoje środowiska stają się powtarzalne i podlegające przeglądom zamiast być sekwencją kliknięć, której nikt nie spisał.

Interaktywna odniesienie

Wygenerowana dokumentacja, którą można odczytać i wywołać bezpośrednio z przeglądarki, dokładnie opisująca punkty końcowe implementowane przez serwer – ponieważ oba elementy pochodzą z tej samej specyfikacji.

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

Za platformą stoi niezawodny rdzeń zdarzeń: każda zmiana stanu zapisuje zdarzenie do transakcyjnej tabeli outbox w bazie Postgres, atomowo wraz ze zmianą w bazie danych, a przekaźnik publikuje je w NATS JetStream. Zdarzenia są typowane i posiadają wersje — site.deployed, order.paid, invoice.overdue, backup.completed, abuse.flagged, trial.ending i pozostałe.

Subskrybuj to, na czym Ci zależy

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 dokładnie tych samych zdarzeń, co my.

Podpisano kluczem HMAC

Każde doręczenie jest podpisane za pomocą HMAC, dzięki czemu możesz zweryfikować, czy pochodzi od nas, zanim podejmiesz jakiekolwiek działania.

Ponowiono próbę z wycofaniem wykładniczym i zarejestrowano w dzienniku

Nieudane dostarczenia są ponawiane z narastającym opóźnieniem, a każda próba jest rejestrowana jako WebhookDelivery. Możesz sprawdzać i ponawiać dostarczenia bezpośrednio z pulpitu, zamiast pisać do pomocy technicznej z zapytaniem, co zostało wysłane.

Co najmniej raz, więc usuwanie duplikatów po id

Potok celowo działa w modelu co najmniej raz (at-least-once) zamiast udawać model dokładnie raz (exactly-once). Przekaźnik, który ulegnie awarii w trakcie publikacji, doprowadza do wygaśnięcia dzierżawy roszczenia i ponownej publikacji swoich zdarzeń. Zastosuj deduplikację po identyfikatorze koperty (envelope id), a Twój konsument będzie poprawny z założenia.

Wprowadzanie kodu na stronę

API to dopiero połowa historii dewelopera. Drugą połową jest wdrożenie.

  • Połącz GitHub, GitLab lub Bitbucket przez OAuth, używając kluczy wdrażania przechowywanych w magazynie poświadczeń, a nie w pliku konfiguracyjnym.
  • Zdarzenie push uruchamia potok kompilacji i wdrażania z mapowaniem gałęzi na środowisko (main na produkcyjne, staging na staging) oraz krokami kompilacji dla każdego stosu dla composer i npm.
  • Przywróć poprzednią wersję, gdy wdrożenie się nie powiedzie.
  • Klonowanie środowiska testowego (staging) i wypychanie na produkcję, dzięki czemu każda zmiana jest sprawdzana w rzeczywistych warunkach przed dotarciem do odwiedzających.
  • Więziony SSH, SFTP i FTP dla każdej strony w izolacji CageFS, dzięki czemu każdy abonent widzi tylko własne pliki.
  • wp-cli z poziomu terminala panelu oraz przez SSH.
  • VS Code w przeglądarce przez code-server – pełny edytor z rozszerzeniami, zintegrowanym terminalem i gitem, edytujący pliki witryny bezpośrednio.
  • Wersja PHP dla każdej strony, edytowalne ustawienia PHP, rozszerzenia dla każdej strony, zmienne środowiskowe oraz prawdziwy cron zamiast WP-cron.

To samo API, z którego może korzystać Twój agent AI

Udostępniamy platformę jako hostowany serwer MCP: lekki adapter protokołu działający nad interfejsem API silnika, który wykorzystuje ten sam katalog akcji, mechanizm RBAC oraz ścieżkę audytu. Połącz raz Claude Code, Cursor, ChatGPT, Claude Desktop lub dowolnego klienta obsługującego MCP, a każda funkcja dodana przez nas do interfejsu API stanie się dla niego dostępna automatycznie.

Agent otrzymuje trzy rzeczy: Narzędzia (te same punkty końcowe API, brak równoległej logiki podatnej na rozbieżności), Zasoby (tylko do odczytu: stan witryny, konfiguracja, ostatnie logi, metryki, czas bezawaryjnej pracy oraz artykuły z bazy wiedzy, dzięki czemu diagnozuje na podstawie rzeczywistych danych przed podjęciem działania) oraz Monity (opublikowane szablony przepływów pracy, takie jak „diagnozuj tę witrynę” lub „przygotuj migrację”).

Bezpieczeństwo to ta sama historia co uwierzytelnianie: OAuth 2.1, tokeny powiązane z Twoją organizacją i uprawnienia RBAC z egzekwowanym bezpieczeństwem na poziomie wierszy, o ograniczonym zakresie i odwoływalne dla każdego narzędzia, środowisko piaskownicy odseparowane od produkcji. Działania destrukcyjne — usuwanie, zawieszanie, rozliczenia, duże wydatki — wymagają wyraźnego potwierdzenia lub polityki zatwierdzania przez człowieka. Limity częstotliwości zapytań i limit wydatków ograniczają płatne działania wywoływane przez sztuczną inteligencję, 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 integracji każdej aplikacji z osobna, co oznacza, że możesz zmieniać narzędzia AI bez konieczności zmiany integracji z hostingiem.

Często zadawane pytania

Czy publiczne API jest tym samym, z którego korzysta panel?

Tak — to jest dokładnie ten sam silnik API, opublikowany i sprawdzony w boju. Panel sterowania, konsola administracyjna, CLI, dostawca Terraform, serwer MCP oraz webhooks korzystają z tego samego interfejsu, dlatego API nie pozostaje w tyle za panelem.

Czy mogę przetestować integrację bez wydawania pieniędzy lub stawiania prawdziwych serwerów?

Tak. Klucze piaskownicy są wydawane oddzielnie od kluczy produkcyjnych i działają w trybie testowym: bez prawdziwych rozliczeń i bez faktycznego udostępniania zasobów. Skieruj swój system CI na poświadczenia piaskownicy i bezpiecznie przetestuj cały cykl żądań oraz odpowiedzi.

Jak zatrzymać ponowną próbę, aby nie utworzyła dwóch takich samych elementów?

Prześlij nagłówek Idempotency-Key w swoim żądaniu POST. Rekord powtórzenia jest zapisywany w momencie zatwierdzenia, a nie w linii, dzięki czemu ponowna próba nigdy nie odtworzy zbuforowanego sukcesu dla wiersza, który faktycznie nie został zatwierdzony, a żądanie, które zakończy się niepowodzeniem, natychmiast zwalnia swoją blokadę, aby poprawiona próba nie była wstrzymywana. Dostarczanie webhooków jest domyślnie realizowane w modelu co najmniej raz (at-least-once) — wykonaj deduplikację po identyfikatorze koperty po swojej stronie.

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

Nie dzisiaj. Klucze API są wydawane dla każdej organizacji z osobna, więc integracja obejmująca kilka organizacji klientów posiada klucz dla każdej z nich. Uprawnienia są również sprawdzane dla każdej organizacji w przypadku podmiotów będących użytkownikami: posiadanie uprawnienia sites.create w jednej organizacji nie daje dostępu w innej, niepowiązanej organizacji, choć dotyczy ono organizacji podrzędnych zagnieżdżonych pod nią. Jest to celowe – ogranicza to zagrożenie ze strony skompromitowanego klucza do jego własnej organizacji oraz podlegających jej organizacji podrzędnych, a nie do całej platformy.

Co tak naprawdę umożliwia wbudowana rola dewelopera (Developer)?

Rola programisty obejmuje odczyt organizacji, zarządzanie kluczami API, przeglądanie i tworzenie stron, ich restartowanie, czyszczenie pamięci podręcznej oraz przeglądanie zgłoszeń i odpowiadanie na nie. Rola ta celowo nie obejmuje kontroli nad rozliczeniami. Pamiętaj, że uprawnienia do wdrażania i publikowania zmian nie są jej częścią – jeśli członek zespołu ich potrzebuje, przypisz rolę, która je zawiera, zamiast zakładać, że Programista to najbardziej wszechstronna rola techniczna.

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

Dostawy są ponawiane z użyciem mechanizmu wykładniczego wygaszania (backoff), a każda próba jest rejestrowana jako obiekt WebhookDelivery, który można sprawdzić. Po stronie źródłowej zdarzenia są zapisywane w transakcyjnej tabeli outbox w ramach tej samej transakcji bazy danych co sama zmiana, dzięki czemu nic nie ginie, gdy odbiorca jest niedostępny – niedziałający odbiorca powoduje opóźnienie, ale nigdy nie zawiesza producenta, a po przywróceniu działania możesz ponownie wysłać dostawy z poziomu panelu.

Ile kosztuje rozpoczęcie prac nad tym?

Rozpocznij 14-dniowy okres próbny Footprint-Free Hosting bez karty kredytowej – bez podawania danych płatności, do 5 witryn. Płatne pakiety Footprint-Free zaczynają się od 6 USD miesięcznie dla PBN 5. Każdy plan objęty jest 30-dniową gwarancją zwrotu pieniędzy, darmowymi migracjami i brakiem uzależnienia od dostawcy.

Przeczytaj specyfikację, a następnie zbuduj projekt na jej podstawie

API oparte na specyfikacji, wygenerowane pakiety SDK, interfejs CLI, provider Terraform, podpisywane webhooki oraz serwer MCP — na hostingu, który stworzyliśmy dla ponad 650 000 stron na całym świecie. Rozpocznij 14-dniowy okres próbny bez karty i podawania danych płatniczych.

Rozpocznij za darmo