Untuk pembangun

Pengehosan yang boleh anda kawal daripada kod

Zinn Digital® ialah platform yang diutamakan API. API enjin sama yang menguasakan papan pemuka kami ialah apa yang anda peroleh — mempunyai versi, diutamakan spesifikasi dan didokumenkan 100% semasa masa binaan, dengan SDK dijana, CLI, penyedia Terraform, webhook ditandatangani dan pelayan MCP di atasnya. Apa jua yang anda gunakan untuk bekerja — terminal, saluran paip, fail keadaan atau ejen AI — platform ini menyokongnya.

  • 650,000+laman web dihoskan di seluruh dunia
  • 1Spesifikasi OpenAPI yang dijana daripada setiap alat
  • 4SDK klien — TypeScript, Python, PHP, Go
  • OAuth 2.1akses ejen AI berskop dan boleh ditarik balik

Satu API. Setiap permukaan menggunakannya.

Kebanyakan hos memasang API pada panel kawalan selepas itu, dan ia terbukti — separuh daripada ciri panel tidak pernah disertakan. Kami membina dengan cara sebaliknya. Papan pemuka, konsol pentadbir, CLI, penyedia Terraform, pelayan MCP dan integrasi anda sendiri semuanya menggunakan enjin API yang sama. Jika anda boleh melakukannya di dalam panel, anda boleh melakukannya melalui kod.

Diutamakan spesifikasi, bukan didokumenkan kemudian

Spesifikasi OpenAPI adalah sumber kebenaran, dan tiada titik akhir yang dilancarkan melainkan ia berada dalam spesifikasi tersebut. Peraturan tunggal itulah yang menjadikan API awam didokumenkan sepenuhnya semasa masa binaan berbanding pada masa akan datang — tiada sudut yang tidak didokumenkan, kerana titik akhir yang tidak didokumenkan tidak boleh wujud.

Dijana, bukan diselenggara manual

Dokumentasi rujukan interaktif, keempat-empat SDK pelanggan, sebahagian besar CLI dan kerangka penyedia Terraform semuanya dijana daripada spesifikasi tunggal itu. Satu sumber, pelbagai artefak, sentiasa selari — anda tidak akan lagi mengejar dokumentasi yang terpesong daripada pelaksanaan.

Berversi dengan dasar susut nilai

Titik akhir terletak di bawah /v1 dengan dasar penamatan yang diterbitkan dan log perubahan. Anda akan dimaklumkan sebelum sesuatu berubah, secara bertulis, berbanding mengetahuinya daripada binaan yang gagal.

Diuji-kontrak dalam CI

Ujian kontrak pelaksanaan berbanding spesifikasi dan pemantauan OpenAPI dijalankan pada setiap perubahan. Perbezaan antara kod dan kontrak akan menggagalkan binaan — jadi spesifikasi yang anda guna untuk menjana klien anda ialah spesifikasi yang benar-benar dipatuhi oleh pelayan.

Pengesahan, skop dan masalah yang timbul pada skala besar

Dua laluan masuk, satu prinsip seragam di sebaliknya. Mana-mana yang anda guna, semakan kebenaran dan pengasingan peringkat pangkalan data yang sama tetap terpakai.

Kunci API, mengikut organisasi

Kunci kelihatan seperti zdk_<mode>_<prefix>_<secret>. Hanya cincangan SHA-256 bagi rahsia itu yang disimpan — kami tidak boleh menunjukkan kunci kepada anda semula selepas dikeluarkan, begitu juga sesiapa sahaja yang mengakses pangkalan data kami. Kunci membawa skop, boleh ditarik balik, dan dikeluarkan mengikut organisasi dan bukannya mengikut individu.

Mod ujian dan langsung, diasingkan

Kunci sandbox adalah berasingan daripada kunci pengeluaran dan berjalan melawan mod sandbox: tiada pengebilan sebenar, tiada peruntukan sebenar. Ujian integrasi anda boleh menguji API tersebut tanpa membelanjakan wang atau membina pelayan.

OIDC untuk manusia

Sesi pengguna mengesah tulen dengan JWT terbitan Keycloak, disahkan terhadap kunci awam realm, dan diselesaikan kepada objek Principal yang sama seperti kunci API. Titik akhir mengawal kebenaran pada kunci kebenaran berbutir halus seperti sites.create atau apikeys.manage, disemak mengikut organisasi — kebenaran dalam satu organisasi tidak memberikan akses dalam organisasi lain yang berasingan dan tiada kaitan, walaupun ia terpakai pada organisasi yang bersarang di bawahnya.

Keselamatan peringkat baris di bawah

Setiap permintaan penyewa dijalankan dalam transaksi dengan skop org Postgres ditetapkan daripada prinsipal, jadi pengasingan dikuatkuasakan oleh pangkalan data, bukan oleh penapis ORM yang mungkin dilupakan oleh seseorang. Penapis queryset masih ada sebagai pertahanan mendalam.

Dibina untuk mesin, bukan sekadar untuk demo

Satu API mudah kelihatan bagus dalam fail README tetapi sukar untuk berfungsi di bawah trafik sebenar. Ini adalah bahagian-bahagian yang kami titikberatkan, kerana bahagian inilah yang sering merosakkan integrasi pada pukul tiga pagi.

Satu perincian yang wajar disebut, kerana ia membentuk cara kerja pukal berfungsi: ralat 409 pada domain duplikasi menjawab "adakah nama hos ini dihoskan di sini?" untuk mana-mana penyewa, yang merupakan ramalan penumeratan dan risiko nyahanonim sebenar terhadap Footprint-Free. Mengehadkan penciptaan tapak adalah penyelesaian mudah yang akan merosakkan produk peruntukan pukal sepenuhnya. Sebaliknya, hanya percubaan domain duplikasi yang ditolak yang dibelanjakan, mengikut prinsip. Penciptaan yang berjaya tidak pernah dikenakan caj terhadapnya — jadi anda boleh memperuntukkan secara pukal sepanjang hari, dan pengintipan mati serta-merta.

  • Amplop ralat yang konsisten pada setiap kegagalan: kod, mesej manusia, butiran peringkat medan pilihan dan request_id yang boleh anda sebutkan kepada sokongan. Ralat pengesahan mengembalikan 422 dengan medan yang melanggar dinamakan.
  • Kunci idempotensi pada POST, dengan rekod ulangan ditulis semasa pengesahan (commit) dan bukannya secara sebaris — jadi percubaan semula tidak boleh memainkan semula 201 tercache yang menamakan baris yang tidak pernah disahkan. Permintaan yang gagal melepaskan kunci dalam-penerbangan serta-merta, jadi ralat 422 tidak menyekat percubaan semula anda yang telah pembetulkan.
  • Paginasi kursor sebagai set kekunci ke atas UUIDv7 — stabil di bawah penulisan serentak, tanpa hanyutan halaman apabila baris dimasukkan semasa pertengahan imbasan.
  • RateLimit-Remaining pada respons, supaya klien yang dihasilkan boleh mengundur dengan bijak dan bukannya meneka.
  • Sumber di luar skop mengembalikan 404 dan bukannya 403 — kod 403 akan mengesahkan bahawa sumber tersebut wujud. Penapisan mengikut organisasi di luar skop anda mengembalikan halaman kosong atas sebab yang sama.
  • Penciptaan tapak ialah pendaftaran, bukan peruntukan: POST /v1/sites mengembalikan 201 dengan status pending dan tidak sekali-kali menyekat binaan tersebut. Peristiwa itu ditulis pada outbox transaksi dalam transaksi yang sama seperti baris, jadi sesebuah tapak wujud jika dan hanya jika peruntukannya dijamin untuk diminta.

SDK, CLI dan pembekal Terraform

Tiga pengguna dengan spesifikasi yang sama, untuk tiga cara kerja yang berbeza.

SDK Pelanggan

Dijana untuk TypeScript, Python, PHP dan Go, menjejaki spesifikasi supaya titik akhir baharu tiba dalam bahasa anda tanpa perlu menunggu pembungkus bertulis tangan.

Zinnector®, CLI

Bina struktur asas bagi tapak WordPress, jalankan ia secara lokal dengan hanya Node terpasang, dan buat atur geraknya. Zinnector® melakukan pemeriksaan awal (pre-flight) pada projek anda terhadap slot yang bakal anda atur gerak — versi PHP, cakera, bilangan fail — dan memberi amaran sebelum anda melakukan dorongan (push) dan bukannya selepas. Ia juga log masuk, menyenaraikan tapak, mengatur gerak, mengurus domain dan DNS, membaca perkhidmatan mel, mengambil sandaran, menjalankan WP-CLI yang disenarai-putih (allow-listed), memantau log (tail logs) dan melaksanakan operasi pukal. Percuma, berlesen MIT, dan dibina berdasarkan API awam yang sama ini.

Penyedia Terraform

Urus tapak, domain, rekod DNS, mel-b kotak dan pelan sebagai infrastruktur sebagai kod. terraform apply memperuntukkan pengehosan, dan persekitaran anda menjadi boleh dihasilkan semula dan boleh disemak dan bukannya urutan klik yang tiada siapa catatkan.

Rujukan interaktif

Dokumen yang dijana boleh anda baca dan panggil dari pelayar, menerangkan dengan tepat titik akhir yang dilaksanakan oleh pelayan — kerana kedua-duanya terhasil daripada spesifikasi yang sama.

Webhook yang kekal berfungsi walaupun titik akhir anda tergendala

Di sebalik platform ini terdapat tulang belakang acara yang tahan lasak: setiap perubahan keadaan menulis acara ke peti keluar transaksional dalam Postgres, secara atomik dengan perubahan pangkalan data, dan geganti menerbitkannya ke NATS JetStream. Acara ditaip dan versi—site.deployed, order.paid, invoice.overdue, backup.completed, abuse.flagged, trial.ending dan seterusnya.

Langgan perkara yang anda minati

Daftarkan endpoint sebagai WebhookSubscription dan pilih jenis acara yang diterimanya. Satu strim menyuap pemberitahuan, analitik, automasi dan integrasi anda — anda menggunakan acara yang sama seperti kami.

Ditandatangani dengan HMAC

Setiap penghantaran ditandatangani HMAC supaya anda boleh mengesahkan ia datang daripada kami sebelum anda mengambil sebarang tindakan mengenainya.

Dicuba semula dengan backoff, dan dilogkan

Penghantaran yang gagal akan dicuba semula secara berperingkat dan setiap percubaan direkodkan sebagai WebhookDelivery. Anda boleh memeriksa dan memainkan semula penghantaran dari papan pemuka berbanding menghantar e-mel kepada sokongan untuk bertanya perkara yang telah kami hantar.

Sekurang-kurangnya sekali, jadi lakukan penyahduplikatan pada id

Saluran paip ini direka sengaja sebagai sekurang-kurangnya-sekali dan bukannya berpura-pura menjadi tepat-sekali. Geganti yang mati di tengah-tengah penerbitan akan tamat tempoh pajakan tuntutannya dan acara perutusannya diterbitkan semula. Lakukan penyahduplikatan pada id sampul surat dan pengguna anda akan betul secara binaan.

Memasukkan kod ke dalam tapak web

API hanyalah separuh daripada kisah pembangun. Separuh lagi ialah penghantaran.

  • Sambungkan GitHub, GitLab atau Bitbucket melalui OAuth, dengan kunci laluan (deploy keys) yang disimpan dalam storan kelayakan — bukannya dalam fail konfigurasi.
  • Tindakan push mencetuskan saluran paip bina-dan-lancar, dengan pemetaan cawangan kepada persekitaran (main kepada production, staging kepada staging) dan langkah binaan setiap tindanan untuk composer dan npm.
  • Kembali ke keluaran terdahulu apabila pelancaran mengalami masalah.
  • Klon staging dan tolak ke langsung, supaya perubahan terbukti di tempat sebenar sebelum ia sampai kepada pelawat.
  • SSH, SFTP dan FTP terpenjarakan bagi setiap tapak di bawah pengasingan CageFS, supaya setiap penyewa hanya melihat fail mereka sendiri.
  • wp-cli dari terminal panel dan melalui SSH.
  • VS Code di pelayar melalui code-server — penyunting penuh dengan sambungan, terminal bersepadu dan git, menyunting fail tapak secara langsung.
  • Versi PHP setiap tapak, tetapan PHP yang boleh disunting, pelanjutan setiap tapak, pembolehubah persekitaran dan cron sebenar di samping WP-cron.

Dan API yang sama boleh digunakan oleh ejen AI anda

Kami mendedahkan platform ini sebagai pelayan MCP yang dihoskan: penyesuaian protokol tipis pada API enjin yang menggunakan semula katalog tindakan, RBAC dan jejak audit yang seiras. Sambungkan Claude Code, Cursor, ChatGPT, Claude Desktop atau mana-mana klien yang menyokong MCP sekali sahaja, dan setiap keupayaan yang kami tambahkan pada API akan tersedia kepadanya secara automatik.

Ejen tersebut mendapat tiga perkara: Alat (titik akhir API yang sama, tiada logik selari untuk terpesong), Sumber (kesihatan tapak baca sahaja, konfigurasi, log terkini, metrik, masa aktif dan artikel KB, supaya ia mendiagnosis dengan data sebenar sebelum bertindak) dan Promosi (templat alur kerja yang diterbitkan seperti "diagnosis tapak ini" atau "sediakan migrasi").

Keselamatan adalah cerita yang sama seperti pengesahan: OAuth 2.1, token yang terikat pada org anda dan kebenaran RBAC dengan keselamatan peringkat baris dikuatkuasakan, dskop dan boleh ditarik balik setiap alat, persekitaran ujian (sandbox) diasingkan daripada pengeluaran. Tindakan merosakkan — padam, gantung, pengebilan, perbelanjaan besar — memerlukan pengesahan jelas atau polisi kelulusan manusia. Had kadar dan had perbelanjaan mengikat tindakan berbayar yang dicetuskan oleh AI, dan setiap panggilan MCP dilog audit dengan identiti, alat, hujah dan hasil.

Kami menyokong protokol tersebut berbanding menyepadukan setiap apl satu persatu, yang bermaksud pilihan alat AI anda boleh berubah tanpa integrasi pengehosan anda perlu berubah bersama-samanya.

Soalan Lazim

Adakah API awam itu sama dengan yang digunakan oleh papan pemuka?

Ya — ia adalah API enjin yang sama, diterbitkan dan dikukuhkan. Papan pemuka, konsol pentadbir, CLI, penyedia Terraform, pelayan MCP dan webhooks semuanya adalah pengguna kepada satu antara muka, sebab itulah API tidak ketinggalan di belakang panel.

Bolehkah saya menguji integrasi tanpa membelanjakan wang atau membina pelayan sebenar?

Ya. Kunci kotak pasir dikeluarkan secara berasingan daripada kunci pengeluaran dan berjalan dalam mod ujian: tiada pengebilan sebenar dan tiada peruntukan sebenar. Hala CI anda kepada kelayakan kotak pasir dan jalankan kitaran permintaan dan tindak balas penuh dengan selamat.

Bagaimanakah saya boleh menghentikan percubaan semula (retry) daripada mencipta dua entiti yang sama?

Hantar Idempotency-Key pada POST anda. Rekod ulangan ditulis semasa komit dan bukan secara sebaris, jadi percubaan semula tidak boleh memainkan semula kejayaan yang didcache untuk baris yang sebenarnya tidak dikomit, dan permintaan yang gagal akan melepaskan kunci serta-merta supaya percubaan semula anda yang betul tidak tertangguh. Penghantaran webhook direka bentuk sekurang-kurangnya sekali — lakukan nyahpendua pada id sampul di penghujung anda.

Bolehkah saya memberikan satu kunci API akses kepada semua organisasi pelanggan saya?

Bukan hari ini. Kunci API dikeluarkan mengikut organisasi, jadi integrasi yang merangkumi beberapa org pelanggan memegang kunci untuk setiap satu. Kebenaran juga disemak mengikut organisasi untuk prinsipal pengguna: memegang sites.create dalam satu org tidak memberikan akses dalam org lain yang berasingan dan tiada kaitan, walaupun ia terpakai pada org yang bersarang di bawah org tersebut. Itu disengajakan — ia mengehadkan kunci yang dikompromi kepada organisasinya sendiri dan sub-org di bawahnya, bukan seluruh platform.

Apakah yang sebenarnya dibenarkan oleh peranan Pembangun terbina dalam?

Peranan pembangun merangkumi bacaan organisasi, pengurusan kunci API, melihat dan mencipta tapak, memulakannya semula, membersihkan cache mereka, serta melihat dan membalas tiket. Ia sengaja mengecualikan kawalan pengebilan. Perhatikan bahawa kebenaran e-depo dan tolak ke langsung bukanlah sebahagian daripadanya — jika ahli pasukan memerlukan perkara tersebut, tetapkan peranan yang mempunyainya daripada menganggap Pembangun sebagai peranan teknikal yang paling luas.

Apakah yang berlaku kepada webhook saya jika titik akhir saya tergendala selama sejam?

Penghantaran semula dicuba dengan peningkatan jurang masa dan setiap cubaan direkodkan sebagai WebhookDelivery yang boleh anda periksa. Di peringkat hulu, peristiwa ditulis pada outbox transaksional dalam transaksi pangkalan data yang sama seperti perubahan itu sendiri, jadi tiada apa yang hilang semasa pengguna tidak tersedia — pengguna yang tergendala mengalami kelewatan tetapi tidak sesekali merosakkan pembekal, dan anda boleh memainkan semula penghantaran daripada papan pemuka sebaik sahaja anda kembali.

Berapakah kos untuk mula membangunkannya?

Mulakan percubaan 14 hari tanpa kad untuk Footprint-Free Hosting — tiada butiran pembayaran diperlukan, sehingga 5 tapak. Peringkat berbayar Footprint-Free bermula pada $6/bln untuk PBN 5. Setiap pelan dilengkapi jaminan wang dikembalikan selama 30 hari, migrasi percuma dan tiada sekatan vendor.

Baca spesifikasi, kemudian bina mengikutnya

API berasaskan spesifikasi, SDK yang dijana, CLI, pembekal Terraform, webhook bertandatangan dan pelayan MCP — pada pengehosan yang kami bina untuk lebih 650,000 tapak di seluruh dunia. Mulakan percubaan 14 hari tanpa kad, tiada butiran pembayaran diperlukan.

Mula secara percuma