Për zhvilluesit

Akomodim që mund ta menaxhosh përmes kodit

Zinn Digital® është një platformë e orientuar nga API. I njëjti API i motorit që fuqizon panelin tonë të kontrollit është ai që ju merrni — i versionuar, i orientuar nga specifikimet dhe i dokumentuar 100% gjatë kohës së ndërtimit, me SDK të gjeneruara, një CLI, një ofrues Terraform, webhook të nënshkruara dhe një server MCP sipër tij. Çfarëdo që të përdorni për të punuar — një terminal, një linjë montimi (pipeline), një skedar gjendjeje ose një agjent të inteligjencës artificiale — platforma u përgjigjet atyre.

  • 650.000+faqë të hostuara në mbarë botën
  • 1Specifikim OpenAPI nga i cili gjenerohet çdo mjet
  • 4SDK-të e klientit — TypeScript, Python, PHP, Go
  • OAuth 2.1qasje e agjentit të AI e kufizuar dhe e revokueshme

Një API. Çdo sipërfaqe funksionon me të.

Shumë ofrues të pritjes (hosting) shtojnë një API në panelin e kontrollit pas ndërtimit, dhe kjo duket qartë – gjysma e veçorive të panelit nuk dalin kurrë në dritë. Ne e ndërtuam në drejtimin e kundërt. Paneli i kontrollit, konsola e administratorit, CLI, ofruesi i Terraform, serveri MCP dhe integrimet tuaja konsumojnë të gjithë të njëjtin motor API. Nëse mund ta bëni në panel, mund ta bëni edhe me kod.

Specifikimi në radhë të parë, jo i dokumentuar më vonë

Specifikimi OpenAPI është burimi i së vërtetës dhe asnjë pikë përfundimi nuk lansohet nëse nuk ndodhet në specifikim. Ajo rregull e vetme është ajo që e bën API-në publike të dokumentuar plotësisht në kohën e ndërtimit dhe jo me vonesë — nuk ka asnjë cep të padokumentuar, sepse një pikë përfundimi e padokumentuar nuk mund të ekzistojë.

Gjeneruar, kurrë nuk mirëmbahet dorëazi

Dokumentacioni referues ndërveprues, katër SDK-të e klientit, pjesa më e madhe e CLI dhe struktura e ofruesit të Terraform gjenerohen të gjitha nga ai specifikim i vetëm. Një burim, shumë artefakte, gjithmonë të sinkronizuara — ju kurrë nuk ndiqni një dokument që ka devijuar nga zbatimi.

Versionuar me një politikë zhvlerësimi

Pikat e skajshme ndodhen nën /v1 me një politikë të botuar për vjetërsimin dhe një regjistrues ndryshimesh. Njoftoheni para se të ndryshojë diçka, me shkrim, në vend që ta zbuloni nga një ndërtim që dështon.

Testuar me kontratë në CI

Testet e kontratës zbatim-kundër-specifikim dhe kontrolli i OpenAPI ekzekutohen në çdo ndryshim. Devijimi midis kodit dhe kontratës dështon në ndërtim — kështu që specifikimi nga i cili gjeneroni klientin tuaj është specifikimi që serveri respekton realisht.

Autentifikimi, kufizimi i fushëveprimit dhe sfidat në shkallë të gjerë

Dy rrugë hyrjeje, por një parim i vetëm uniform pas tyre. Cilëndo që të përdorni, zbatohen të njëjtat kontrolle lejesh dhe e njëjta izolim në nivel databaze.

Çelësat API, për organizatë

Çelësat duken si zdk_<mode>_<prefix>_<secret>. Ruhet vetëm një hash SHA-256 i sekretit — ne nuk mund t'ju tregojmë përsëri një çelës pas lëshimit, dhe askush tjetër që arrin në bazën tonë të të dhënave nuk mundet. Çelësat mbajnë fusha veprimi, mund të revokohen dhe lëshohen për organizatë dhe jo për person.

Modalitetet live dhe test, të mbajtura të ndara

Çelësat e sandbox janë të ndarë nga çelësat e prodhimit dhe funksionojnë në modalitetin sandbox: pa faturim real, pa sigurim real të shërbimeve. Testet e integrimit tuaj mund të ngarkojnë API-në pa shpenzuar para dhe pa krijuar serverë.

OIDC për njerëzit

Sesionet e përdoruesve autentikohen me JWT të lëshuara nga Keycloak, të verifikuara kundrejt çelësit publik të realm-it, dhe zgjidhen në të njëjtin objekt Principal që bën një çelës API. Pikat përfundimtare kufizojnë aksesin me çelësa lejesh të imta si sites.create ose apikeys.manage, të kontrolluara për çdo organizatë — një leje në një organizatë nuk jep akses në një organizatë tjetër të veçantë dhe të palidhur, megjithëse zbatohet për organizatat e vendosura brenda saj.

Siguria në nivel rreshti në sfond

Çdo kërkesë e qiramarrësit ekzekutohet në një transaksion me skopin e organizatës në Postgres të caktuar nga parimi, kështu që izolimi sigurohet nga baza e të dhënave dhe jo nga një filtër ORM që dikush mund ta harrojë. Filtri i queryset-it është ende aty si mbrojtje në thellësi.

Ndërtuar për makineritë, jo vetëm për demonstrime

Një API është e lehtë të duket bukur në një README dhe e vështirë të sillet mirë nën trafik real. Këto janë pjesët për të cilat jemi munduar, sepse janë pjesët që prishin integrimet në orën tre të mëngjesit.

Një detaj vlen të theksohet, pasi përcakton se si sillet puna në masë: një 409 për domen të dyfishtë përgjigjet "a strehohet ky emër hosti këtu?" për çdo qiramarrës, gjë që përbën një orakul enumeracioni dhe një rrezik real çanonymizimi ndaj Footprint-Free. Kufizimi i krijimit të faqeve do të kishte qenë zgjidhja më e lehtë dhe do të kishte prishur plotësisht produktin e sigurimit në masë. Në vend të kësaj, vetëm tentativat e refuzuara për dome G të dyfishta tatohen në buxhet, sipas parimit. Krijimet e suksesshme nuk ngarkohen kurrë kundrejt tij — kështu që ju mund të siguroni në masë gjithë ditën, dhe sondazhi vdes pothuajse menjëherë.

  • Një strukturë gabimi e qëndrueshme në çdo dështim: një kod, një mesazh njerëzor, detaje opsionale në nivel fushe dhe një request_id që mund t'ia jepni mbështetjes. Gabimet e vërtetimit kthejnë 422 me fushat problematike të emërtuara.
  • Çelësat e idempotencës në POST, me regjistrimin e riluajtjes të shkruar në kryerje në vend të atij të drejtpërdrejtë — kështu që një rifillim nuk mund të riluajë kurrë një 201 të fshehur në memorie që emërton një rresht i cili nuk u krye kurrë. Një kërkesë e dështuar lëshon menjëherë kyçin e saj në fluturim, kështu që një 422 nuk e bllokon rifillimin tuaj të korrigjuar.
  • Pagination me kursor si çelës mbi UUIDv7 — e qëndrueshme ndaj shkrimeve të njëkohshme, pa zhvendosje faqesh kur rreshtat futen gjatë skanimit.
  • RateLimit-Remaining në përgjigje, kështu që një klient i gjeneruar mund të tërhiqet me mençuri në vend që të minojë.
  • Burimet jashtë fushëveprimit kthejnë 404 në vend të 403 — një 403 do të konfirmonte se burimi ekziston. Filtrami sipas një organizate jashtë fushëveprimit tuaj kthen një faqe boshe për të njëjtën arsye.
  • Krijimi i faqes është regjistrim, jo sigurim: POST /v1/sites kthen 201 me status në pritje dhe nuk bllokon kurrë gjatë ndërtimit. Ngjarja shkruhet në kutinë e daljeve transaksionale në të njëjtin transaksion si rreshti, kështu që një faqe ekziston nëse dhe vetëm nëse sigurimi i saj garantohet të kërkohet.

SDK-të, një CLI dhe një ofrues Terraform

Tre konsumatorë të së njëjtës specifikë, për tri mënyra të ndryshme pune.

SDK-të e Klientit

Gjeneruar për TypeScript, Python, PHP dhe Go, duke ndjekur specifikimin në mënyrë që një pikë përfundimtare e re të mbërrijë në gjuhën tuaj pa pritur një mbështjellës të shkruar me dorë.

Zinnector®, CLI

Ndërtoni një faqe WordPress, ekzekutojeni atë në lokal pa instaluar asgjë tjetër veç Node, dhe vendoseni në prodhim. Zinnector® kontrollon paraprakisht projektin tuaj në lidhje me slotin ku jeni gati ta vendosni — versionin e PHP-së, diskun, numrin e skedarëve — dhe ju paralajmëron para se ta dërgoni sesa pas tij. Ai gjithashtu identifikohet, liston faqet, vendos në prodhim, menaxhon domenet dhe DNS-në, lexon shërbimet e postës elektronike, bën kopje sigurie, ekzekuton WP-CLI në listën e lejuar, ndjek regjistrat (logs) dhe ekzekuton operacione masive. Falas, me licencë MIT, dhe i ndërtuar mbi këtë të njëjtë API publike.

Ofruesi i Terraform

Menaxhoni faqet, domenet, regjistrat DNS, kutitë postare dhe planet si infrastrukturë si kod. `terraform apply` siguron strehimin dhe mjediset tuaja bëhen të riprodhueshme dhe të rishikueshme në vend të një sërë klikimesh që askush nuk i ka shënuar.

Referenca ndërvepruese

Dokumente të gjeneruara që mund t'i lexoni dhe t'i thirrni nga shfletuesi, duke përshkruar saktësisht pikat e skajshme që zbaton serveri — sepse të dyja vijnë nga e njëjta specifikim.

Webhooks që mbijetojnë kur pika juaj e skajshme nuk është në linjë

Pas platformës qëndron një shtyllë kurrizore e qëndrueshme ngjarjesh: çdo ndryshim gjendjeje shkruan një ngjarje në një kuti dalëse transaksionale në Postgres, në mënyrë atomike me ndryshimin e bazës së të dhënave, dhe një transmetues e publikon atë në NATS JetStream. Ngjarjet janë të tipizuara dhe të versionuara — site.deployed, order.paid, invoice.overdue, backup.completed, abuse.flagged, trial.ending dhe të tjerat.

Abonohu në atë që të intereson

Regjistroni një pikë përfundimi si WebhookSubscription dhe zgjidhni llojet e ngjarjeve që ajo merr. Një transmetim ushqen njoftimet, analitikën, automatizimet dhe integrimin tuaj njësoj — ju po konsumoni të njëjtat ngjarje që konsumojmë edhe ne.

Nënshkruar me HMAC

Çdo dërgesë është e nënshkruar me HMAC, kështu që ju mund të verifikoni se vjen prej nesh përpara se të veproni mbi të.

U provua përsëri me vonesë rritëse dhe u regjistrua në regjistër

Dërgesat e dështuara riprovohen me intervale shtrënguese në rritje dhe çdo tentativë regjistrohet si WebhookDelivery. Mund t'i kontrolloni dhe riluani dërgesat nga paneli i kontrollit në vend që t'i dërgoni email mbështetjes duke pyetur se çfarë kemi dërguar.

Të paktën një herë, kështu që hiqni dublikatet në bazë të id

Tubacioni është qëllimisht të paktën-njëherë në vend që të pretendojë të jetë saktësisht-njëherë. Një përsëritës që dështon në mes të publikimit e ka skaduar qiranë e kërkesës dhe ngjarjet e tij ripublikohen. Bëni deduplikim në ID-në e zarfit dhe konsumatori juaj është i saktë nga ndërtimi.

Vendosja e kodit në sajt

Një API është vetëm gjysma e historisë së një zhvilluesi. Gjysma tjetër është dërgimi.

  • Lidhni GitHub, GitLab ose Bitbucket përmes OAuth, me çelësat e vendosjes të ruajtur në depon e kredencialeve – jo në një skedar konfigurimi.
  • Push-u aktivizon një tubacion ndërtimi dhe vendosjeje, me hartëzim të degës në mjedis (main në production, staging në staging) dhe hapa ndërtimi për çdo stack për composer dhe npm.
  • Kthehu te një version i mëparshëm kur një shpërndarje shkon keq.
  • Klonimi në mjedisin staging dhe kalimi drejtpërdrejt në live, në mënyrë që çdo ndryshim të provohet diku real para se t'u shfaqet vizitorëve.
  • SSH, SFTP dhe FTP i izoluar për çdo faqe nën izolimin e CageFS, kështu që çdo qiramarrës sheh vetëm skedarët e vet.
  • wp-cli nga terminali i panelit dhe përmes SSH.
  • VS Code në shfletues përmes code-server — një editor i plotë me shtojca, një terminal të integruar dhe git, duke redaktuar skedarët e faqes direkt.
  • Versioni PHP për çdo sajt, cilësimet e PHP-së të ndryshueshme, shtesat për çdo sajt, ndryshorët e mjedisit dhe cron i vërtetë krahas WP-cron.

Dhe i njëjti API që agjenti juaj i AI mund të përdorë

Platformën e ekspozojmë si një server MCP të strehuar: një përshtatës protokolli të hollë mbi API-në e motorit që ripërdor katalogun identik të veprimeve, RBAC dhe gjurmën e auditimit. Lidhni Claude Code, Cursor, ChatGPT, Claude Desktop ose çdo klient të aftë për MCP një herë, dhe çdo funksionalitet që i shtojmë API-së bëhet i disponueshëm për të automatikisht.

Agjenti merr tri gjëra: Mjete (të njëjtët pika skajore të API-së, pa logjikë paralele që mund të devijojë), Burime (shëndetin e faqes vetëm për lexim, konfigurimin, regjistrat e fundit, metrikat, kohën e funksionimit dhe artikujt e bazës së njohurive, kështu që ai diagnostikon me të dhëna reale përpara se të veprojë) dhe Kërkesa (modele të publikuara të rrjedhës së punës si "diagnostiko këtë faqe" ose "përgatit një migrim").

Siguria është e njëjta histori si autentifikimi: OAuth 2.1, tokenë të lidhur me organizatën tuaj dhe leje RBAC me siguri në nivel rreshti të zbatuar, të kufizuara dhe të revokueshme për çdo mjet, sandbox i ndarë nga prodhimi. Veprimet shkatërruese — fshirja, pezullimi, faturimi, shpenzimet e mëdha — kërkojnë konfirmim eksplicit ose një politikë miratimi nga njeriu. Kufijtë e shpejtësisë dhe kufijtë e shpenzimeve lidhin veprimet me pagesë të nisura nga AI, dhe çdo thirrje MCP regjistrohet në auditim me identitetin, mjetin, argumentet dhe rezultatin.

Ne mbështesim protokollin në vend që të integrojmë secilin aplikacion një nga një, çka do të thotë se zgjedhja juaj e mjeteve të AI-së mund të ndryshojë pa qenë nevoja që të ndryshojë edhe integrimi juaj i pritjes (hosting).

Pyetjet e shpeshta

A është API-ja publike e njëjta që përdor paneli i kontrollit?

Po — është i njëjti API i motorit, i publikuar dhe i fortifikuar. Paneli i kontrollit, konsola e administratorit, CLI, ofruesi i Terraform, serveri MCP dhe webhook-ët janë të gjithë konsumues të një sipërfaqeje të vetme, prandaj API-ja nuk mbetet pas panelit.

A mund të testoj një integrim pa shpenzuar para ose pa krijuar serverë të vërtetë?

Po. Çelësat e sandbox-it lëshohen ndaras nga çelësat e prodhimit dhe funksionojnë në modalitetin e testimit: pa faturim real dhe pa sigurim burimesh real. Drejtoni CI-në tuaj te kredencialet e sandbox-it dhe provoni ciklin e plotë të kërkesë-përgjigjes në mënyrë të sigurt.

Si ta ndaloj një provë të dytë që të mos krijojë dy kopje të diçkaje?

Drgoni një Idempotency-Key në kërkesën tuaj POST. Regjistrimi i riluajtjes shkruhet gjatë konfirmimit (commit) e jo në linjë, kështu që një rifillim nuk mund të riluajë kurrë një sukses të ruajtur në cache për një rresht që në fakt nuk është konfirmuar, dhe një kërkesë që dështon liron bllokimin e saj menjëherë, kështu që rifillimi juaj i korrigjuar nuk mbahet peng. Dorëzimi i Webhook-ut është të paktën një herë si dizajn — bëni deduplikimin në ID-në e zarfit në anën tuaj.

A mund t'i jap një çelësi API qasje në të gjitha organizatat e klientëve të meje?

Jo sot. Çelësat e API-së lëshohen për çdo organizatë, kështu që një integrim që përfshin disa organizata klientësh mban nga një çelës për secilën. Lejet kontrollohen gjithashtu për çdo organizatë për parimet e përdoruesit: mbajtja e sites.create në një organizatë nuk jep akses në një organizatë tjetër të palidhur, megjithëse zbatohet për organizatat e vendosura nën atë. Kjo është e qëllimshme — ajo kufizon një çelës të kompromentuar vetëm në organizatën e tij dhe nën-organizatat poshtë tij, jo në të gjithë platformën.

Çfarë lejon saktësisht roli i integruar i Zhvilluesit?

Roli i zhvilluesit përfshin leximin e organizimit, menaxhimin e çelësave API, shikimin dhe krijimin e faqeve, rinisjen e tyre, pastrimin e caches së tyre, si dhe shikimin dhe përgjigjen ndaj biletave. Ai përjashton me qëllim kontrollin e faturimit. Vini re se lejet e vendosjes në prodhim dhe të dërgimit direkt nuk janë pjesë e tij — nëse një anëtar i ekipit ka nevojë për to, caktoni një rol që i përfshin ato në vend që të presupozoni se Zhvilluesi është roli më i gjerë teknik.

Çfarë u ndodh webhooks-ve të mia nëse pika ime përfundimtare ndalet për një orë?

Dërgesat riprovohen me backoff dhe çdo përpjekje regjistrohet si një WebhookDelivery që mund ta kontrolloni. Në rrjedhën e sipërme, ngjarjet shkruhen në një outbox transaksional brenda të njëjtit transaksion të bazës datave si vetë ndryshimi, kështu që asgjë nuk humbet ndërsa një konsumator nuk është i disponueshëm — një konsumator jashtë funksionit vonohet, ai kurrë nuk e prish prodhuesin, dhe ju mund të riluani dërgesat nga paneli sapo të ktheheni.

Sa kushton të fillosh të ndërtosh me të?

Fillo një provë 14-ditore pa kartë krediti të Footprint-Free Hosting — pa të dhëna pagese, deri në 5 faqe. Nivelet me pagesë të Footprint-Free fillojnë nga $6/muaj për PBN 5. Çdo plan përfshin një garanci rimbursimi prej 30 ditësh, migrime falas dhe pa kushtëzim nga ofruesi.

Lexo specifikimin, pastaj ndërto mbi bazën e tij

API e bazuar te specifikimet, SDK-të e gjeneruara, një CLI, një ofrues Terraform, webhook-e të nënshkruara dhe një server MCP — në pritjen (hosting) që ndërtuam për mbi 650,000 faqe në mbarë botën. Fillo një provë 14-ditore pa kartë, pa detaje pagese.

Fillo falas