Dành cho nhà phát triển

Lưu trữ bạn có thể điều khiển bằng mã

Zinn Digital® là một nền tảng API-first. API engine tương tự cung cấp năng lượng cho bảng điều khiển của chúng tôi chính là API mà bạn nhận được — có đánh phiên bản, spec-first và được tài liệu hóa 100% tại thời điểm build, đi kèm với các SDK được tạo sẵn, CLI, nhà cung cấp Terraform, webhooks có chữ ký và một MCP server ở trên cùng. Bất cứ công cụ nào bạn dùng để làm việc — terminal, pipeline, tệp trạng thái hoặc AI agent — nền tảng đều đáp ứng.

  • Hơn 650.000các trang web được lưu trữ trên toàn thế giới
  • 1Đặc tả OpenAPI mà mọi công cụ được tạo ra từ đó
  • 4SDK cho client — TypeScript, Python, PHP, Go
  • OAuth 2.1quyền truy cập của tác nhân AI có phạm vi, có thể thu hồi

Một API. Mọi bề mặt đều vận hành trên đó.

Hầu hết các nhà cung cấp hosting đều chắp vá API vào bảng điều khiển sau khi đã hoàn thiện, và điều đó thể hiện rõ — một nửa tính năng của bảng điều khiển không bao giờ xuất hiện. Chúng tôi xây dựng theo chiều ngược lại. Bảng điều khiển người dùng, bảng điều khiển quản trị, CLI, nhà cung cấp Terraform, máy chủ MCP và các tích hợp của riêng bạn đều sử dụng cùng một engine API. Nếu bạn làm được trên bảng điều khiển, bạn có thể làm được bằng mã lệnh.

Ưu tiên kỹ thuật, không tài liệu sau

Đặc tả OpenAPI chính là nguồn chân lý duy nhất và không có endpoint nào được phát hành nếu không có trong đặc tả đó. Quy tắc duy nhất đó là yếu tố giúp API công khai được tài liệu hóa đầy đủ ngay tại thời điểm xây dựng thay vì làm sau — không có góc khuất nào không được tài liệu hóa, bởi vì một endpoint chưa được tài liệu hóa là thứ không thể tồn tại.

Được tạo tự động, không chỉnh sửa thủ công

Tài liệu tham khảo tương tác, bốn bộ SDK cho client, phần lớn CLI và phần khung của Terraform provider đều được tạo tự động từ chính bản đặc tả đó. Một nguồn duy nhất, nhiều cấu trúc, luôn đồng bộ — bạn sẽ không bao giờ phải tìm kiếm một tài liệu đã bị lệch so với mã nguồn thực tế.

Được quản lý phiên bản với chính sách ngừng hỗ trợ

Các điểm cuối được đặt dưới /v1 cùng với chính sách ngừng hoạt động đã được công bố và nhật ký thay đổi. Bạn sẽ được thông báo trước khi có bất kỳ thay đổi nào bằng văn bản, thay vì phải tự phát hiện ra từ một bản dựng bị lỗi.

Đã kiểm tra hợp đồng trên CI

Các bài kiểm thử hợp đồng giữa mã nguồn và thông số kỹ thuật cùng tính năng kiểm tra lỗi OpenAPI chạy trên mỗi thay đổi. Sự lệch pha giữa mã nguồn và hợp đồng sẽ làm thất bại quá trình xây dựng — do đó thông số kỹ thuật bạn dùng để tạo client chính là thông số kỹ thuật mà máy chủ thực sự áp dụng.

Xác thực, phân quyền và những cạm bẫy khi mở rộng quy mô

Có hai cách truy cập, nhưng đều dựa trên một nguyên tắc thống nhất. Bất kể bạn sử dụng cách nào, các bước kiểm tra quyền và mức độ cô lập cơ sở dữ liệu giống nhau đều được áp dụng.

Khóa API, theo tổ chức

Khóa có định dạng zdk_<mode>_<prefix>_<secret>. Hệ thống chỉ lưu trữ mã băm SHA-256 của phần bí mật — chúng tôi không thể hiển thị lại khóa sau khi cấp phát, và bất kỳ ai truy cập cơ sở dữ liệu của chúng tôi cũng không thể làm được điều đó. Khóa có các phạm vi quyền hạn, có thể bị thu hồi và được cấp theo tổ chức thay vì theo cá nhân.

Chế độ trực tiếp và kiểm thử, được tách biệt

Khóa sandbox tách biệt với khóa production và chạy ở chế độ sandbox: không thanh toán thật, không cấp phát thật. Các kiểm thử tích hợp của bạn có thể gọi liên tục vào API mà không cần mất tiền hoặc dựng máy chủ.

OIDC cho mọi người

Các phiên người dùng được xác thực bằng JWT do Keycloak phát hành, được xác minh dựa trên khóa công khai của realm, và phân giải thành cùng một đối tượng Principal giống như API key. Các endpoint kiểm soát dựa trên các khóa quyền chi tiết như sites.create hoặc apikeys.manage, được kiểm tra theo từng tổ chức — một quyền ở một tổ chức không cấp quyền truy cập vào một tổ chức khác độc lập, không liên quan, mặc dù nó áp dụng cho các tổ chức được lồng bên dưới tổ chức đó.

Bảo mật cấp hàng ở bên dưới

Mọi yêu cầu từ tenant đều chạy trong một giao dịch với phạm vi tổ chức Postgres được thiết lập từ principal, do đó tính cô lập được thực thi bởi cơ sở dữ liệu chứ không phải bởi một bộ lọc ORM nào đó mà ai đó có thể quên. Bộ lọc queryset vẫn ở đó như một lớp phòng thủ theo chiều sâu.

Được thiết kế cho máy chủ, không chỉ để demo

Một API rất dễ làm cho trông có vẻ tuyệt vời trong tệp README nhưng lại cực kỳ khó để vận hành ổn định dưới lưu lượng truy cập thực tế. Đây là những phần mà chúng tôi đã phải cực khổ nghiên cứu, bởi vì đó chính là những thứ làm gián đoạn các tích hợp vào lúc ba giờ sáng.

Một chi tiết đáng chú ý vì nó định hình cách hoạt động của thao tác hàng loạt: mã lỗi 409 khi tên miền trùng lặp trả lời câu hỏi "tên miền này có được lưu trữ ở đây không?" cho bất kỳ tenant nào, đây là một oracle liệt kê và là rủi ro phi ẩn danh thực sự đối với Footprint-Free. Việc giới hạn tốc độ tạo trang web lẽ ra sẽ là giải pháp dễ dãi và sẽ làm hỏng hoàn toàn sản phẩm cung cấp hàng loạt. Thay vào đó, chỉ những lần thử tạo tên miền trùng lặp bị từ chối mới được tính hạn ngạch, theo từng principal. Các thao tác tạo thành công không bao giờ bị trừ vào hạn ngạch đó — vì vậy bạn có thể cung cấp hàng loạt cả ngày, và các truy vấn thăm dò sẽ bị vô hiệu hóa gần như ngay lập tức.

  • Một cấu trúc lỗi nhất quán cho mọi thất bại: mã lỗi, thông báo mô tả, chi tiết tùy chọn ở cấp độ trường và một request_id mà bạn có thể cung cấp khi liên hệ hỗ trợ. Lỗi xác thực trả về mã 422 kèm theo tên các trường không hợp lệ.
  • Khóa trùng lặp (idempotency key) trên yêu cầu POST, với bản ghi phát lại được ghi khi commit thay vì ghi trực tiếp — nhờ đó một lần thử lại không bao giờ phát lại mã 201 được lưu vào bộ nhớ đệm vốn trỏ đến một hàng chưa bao giờ được commit. Một yêu cầu thất bại sẽ giải phóng khóa đang xử lý ngay lập tức, do đó mã 422 sẽ không khóa lượt thử lại đã được sửa lỗi của bạn.
  • Phân trang con trỏ dạng keyset trên UUIDv7 — ổn định khi ghi đồng thời, không bị lệch trang khi các hàng được chèn vào giữa quá trình quét.
  • RateLimit-Remaining trong phản hồi, giúp client được tạo có thể giảm tốc độ một cách thông minh thay vì phải đoán mò.
  • Các tài nguyên ngoài phạm vi trả về mã 404 thay vì 403 — mã 403 sẽ xác nhận rằng tài nguyên đó tồn tại. Việc lọc theo một tổ chức nằm ngoài phạm vi của bạn sẽ trả về một trang trống vì lý do tương tự.
  • Việc tạo trang web là đăng ký, không phải cấp phát: POST /v1/sites trả về 201 với trạng thái pending và không bao giờ chặn quá trình xây dựng. Sự kiện được ghi vào hộp thư đi giao dịch trong cùng một giao dịch với hàng dữ liệu, vì vậy một trang web tồn tại khi và chỉ khi việc cấp phát của nó được đảm bảo sẽ được yêu cầu.

Các SDK, một CLI và một nhà cung cấp Terraform

Ba đối tượng tiêu dùng có cùng thông số kỹ thuật, dành cho ba cách làm việc khác nhau.

SDK cho khách hàng

Được tạo cho TypeScript, Python, PHP và Go, bám sát thông số kỹ thuật để một điểm cuối mới có sẵn bằng ngôn ngữ của bạn mà không phải chờ đợi trình bao bọc viết tay.

Zinnector®, CLI

Tạo dựng cấu trúc cho một trang web WordPress, chạy trang web đó cục bộ mà không cần cài đặt gì ngoài Node, rồi triển khai trang web đó. Zinnector® kiểm tra sơ bộ dự án của bạn đối với khe cắm mà bạn sắp triển khai — phiên bản PHP, dung lượng ổ đĩa, số lượng tệp — và đưa ra cảnh báo trước khi bạn đẩy mã nguồn lên thay vì sau đó. Công cụ này cũng giúp đăng nhập, liệt kê các trang web, triển khai, quản lý tên miền và DNS, đọc các dịch vụ thư điện tử, sao lưu, chạy các lệnh WP-CLI nằm trong danh sách cho phép, theo dõi nhật ký và thực hiện các thao tác hàng loạt. Miễn phí, được cấp phép theo giấy phép MIT và được xây dựng dựa trên chính API công khai này.

Nhà cung cấp Terraform

Quản lý các trang web, tên miền, bản ghi DNS, hộp thư và gói dịch vụ dưới dạng cơ sở hạ tầng dưới dạng mã (infrastructure as code). Lệnh terraform apply sẽ thiết lập dịch vụ lưu trữ, giúp các môi trường của bạn có thể tái tạo và xem xét lại được thay vì thực hiện một loạt các thao tác nhấp chuột mà không ai ghi chép lại.

Tương tác tham khảo

Tài liệu được tạo tự động mà bạn có thể đọc và gọi từ trình duyệt, mô tả chính xác các điểm cuối (endpoint) mà máy chủ thực hiện — bởi vì cả hai đều xuất phát từ cùng một thông số kỹ thuật.

Webhooks vẫn hoạt động ngay cả khi điểm cuối của bạn bị sập

Đằng sau nền tảng là một hệ thống sự kiện bền vững: mọi thay đổi trạng thái đều ghi một sự kiện vào hộp thư đi giao dịch trong Postgres, đồng bộ nguyên tử với thay đổi cơ sở dữ liệu, và một bộ chuyển tiếp sẽ xuất bản sự kiện đó lên NATS JetStream. Các sự kiện được phân loại theo kiểu và phiên bản — site.deployed, order.paid, invoice.overdue, backup.completed, abuse.flagged, trial.ending và các sự kiện khác.

Đăng ký những nội dung bạn quan tâm

Đăng ký một điểm cuối làm WebhookSubscription và chọn các loại sự kiện mà điểm cuối đó nhận được. Một luồng duy nhất cung cấp thông báo, phân tích, tự động hóa và cả tích hợp của bạn — bạn đang sử dụng chính xác các sự kiện mà chúng tôi dùng.

Đã ký bằng HMAC

Mọi dữ liệu gửi đi đều được ký HMAC để bạn có thể xác minh dữ liệu đó đến từ chúng tôi trước khi xử lý.

Đã thử lại với thời gian chờ tăng dần và đã ghi log

Các lần gửi thất bại sẽ được thử lại theo thời gian giãn cách tăng dần và mỗi lần thử đều được ghi lại dưới dạng WebhookDelivery. Bạn có thể kiểm tra và gửi lại các lần gửi từ bảng điều khiển thay vì gửi email cho bộ phận hỗ trợ để hỏi xem chúng tôi đã gửi những gì.

Ít nhất một lần, vì vậy hãy khử trùng lặp theo id

Đường ống được thiết kế cố ý theo cơ chế ít nhất một lần thay vì giả vờ là đúng một lần. Một rơ-le bị chết giữa quá trình xuất bản sẽ có hợp đồng quyền sở hữu hết hạn và các sự kiện của nó được xuất bản lại. Hãy khử trùng lặp theo id phong bì và trình tiêu dùng của bạn sẽ chính xác theo thiết kế.

Đưa mã nguồn lên trang web

API mới chỉ là một nửa câu chuyện của lập trình viên. Nửa còn lại chính là việc phát hành sản phẩm.

  • Kết nối GitHub, GitLab hoặc Bitbucket qua OAuth, với các khóa triển khai được lưu trữ trong kho thông tin xác thực — chứ không phải trong tệp cấu hình.
  • Push kích hoạt quy trình build-and-deploy với ánh xạ nhánh sang môi trường (main sang production, staging sang staging) và các bước build theo từng stack cho composer và npm.
  • Khôi phục về một phiên bản phát hành trước đó khi việc triển khai gặp sự cố.
  • Nhân bản thử nghiệm và đẩy lên trực tiếp, giúp kiểm chứng thay đổi tại một môi trường thực tế trước khi khách truy cập tiếp cận.
  • SSH, SFTP và FTP bị giam cô lập theo từng trang web bằng CageFS, đảm bảo mỗi khách thuê chỉ thấy các tệp của riêng họ.
  • wp-cli từ bảng điều khiển và qua SSH.
  • VS Code trên trình duyệt thông qua code-server — một trình soạn thảo đầy đủ tính năng với các tiện ích mở rộng, terminal tích hợp và git, cho phép chỉnh sửa trực tiếp các tệp của trang web.
  • Phiên bản PHP riêng cho từng trang, cài đặt PHP có thể chỉnh sửa, tiện ích mở rộng riêng cho từng trang, biến môi trường và cron thực bên cạnh WP-cron.

Và cùng một API mà tác nhân AI của bạn có thể sử dụng

Chúng tôi cung cấp nền tảng dưới dạng một máy chủ MCP được lưu trữ: một bộ chuyển đổi giao thức mỏng chạy trên API của công cụ, tận dụng lại danh mục tác vụ, RBAC và nhật ký kiểm toán hoàn toàn giống nhau. Hãy kết nối Claude Code, Cursor, ChatGPT, Claude Desktop hoặc bất kỳ máy khách nào hỗ trợ MCP một lần, và mọi tính năng chúng tôi bổ sung vào API sẽ tự động có sẵn cho máy khách đó.

Agent nhận được ba thứ: Công cụ (các điểm cuối API giống nhau, không có logic song song bị lệch), Tài nguyên (tình trạng trang web chỉ đọc, cấu hình, nhật ký gần đây, số liệu, thời gian hoạt động và các bài viết trong KB, để chẩn đoán bằng dữ liệu thực trước khi hành động) và Lời nhắc (các mẫu quy trình làm việc đã được xuất bản như "chẩn đoán trang web này" hoặc "chuẩn bị di chuyển").

An toàn cũng tương tự như xác thực: OAuth 2.1, mã thông báo được gắn với tổ chức của bạn và các quyền RBAC được thực thi với bảo mật cấp hàng, có giới hạn phạm vi và có thể thu hồi cho từng công cụ, môi trường sandbox được tách biệt khỏi môi trường sản xuất. Các hành động mang tính hủy diệt — xóa, đình chỉ, thanh toán, chi tiêu lớn — yêu cầu xác nhận rõ ràng hoặc chính sách phê duyệt thủ công. Giới hạn tốc độ và mức trần chi tiêu ràng buộc các hành động trả phí do AI kích hoạt, và mọi lệnh gọi MCP đều được ghi nhật ký kiểm tra với danh tính, công cụ, đối số và kết quả.

Chúng tôi hỗ trợ giao thức thay vì tích hợp từng ứng dụng một, điều này có nghĩa là các công cụ AI bạn lựa chọn có thể thay đổi mà không cần thay đổi tích hợp lưu trữ của bạn.

Câu hỏi thường gặp

API công khai có giống với API mà bảng điều khiển đang sử dụng không?

Đúng vậy — đó chính là engine API đó, đã được phát hành và kiểm thử nghiêm ngặt. Bảng điều khiển, giao diện quản trị, CLI, nhà cung cấp Terraform, máy chủ MCP và webhooks đều là những bên sử dụng chung một giao diện, đó là lý do tại sao API không bao giờ chậm trễ hơn bảng điều khiển.

Tôi có thể kiểm tra một tích hợp mà không phải tốn tiền hoặc xây dựng máy chủ thật không?

Có. Khóa sandbox được cấp riêng biệt với khóa sản xuất và chạy ở chế độ kiểm thử: không có thanh toán thực tế và không có cấp phát thực tế. Hãy hướng thông tin xác thực CI của bạn tới sandbox và thực hiện toàn bộ chu kỳ yêu cầu và phản hồi một cách an toàn.

Làm cách nào để ngăn một thao tác thử lại tạo ra hai mục giống nhau?

Hãy gửi một Idempotency-Key trong yêu cầu POST của bạn. Bản ghi phát lại được ghi khi xác nhận giao dịch thay vì ghi trực tiếp, do đó một yêu cầu thử lại sẽ không bao giờ phát lại một kết quả thành công được lưu vào bộ nhớ đệm cho một hàng dữ liệu thực tế chưa được xác nhận, và một yêu cầu thất bại sẽ giải phóng khóa ngay lập tức để yêu cầu thử lại đã sửa của bạn không bị trì hoãn. Việc gửi Webhook được thiết kế theo cơ chế ít nhất một lần (at-least-once) — hãy thực hiện khử trùng lặp dựa trên ID phong bì ở phía bạn.

Tôi có thể cấp quyền cho một khóa API truy cập vào tất cả các tổ chức khách hàng của mình không?

Không phải hôm nay. Khóa API được cấp theo từng tổ chức, vì vậy một tích hợp bao trùm nhiều tổ chức khách hàng sẽ giữ một khóa cho mỗi tổ chức. Các quyền cũng được kiểm tra theo từng tổ chức đối với các tài khoản người dùng chính: việc nắm giữ sites.create trong một tổ chức không cấp quyền truy cập ở một tổ chức độc lập, không liên quan, mặc dù nó áp dụng cho các tổ chức được lồng bên dưới tổ chức đó. Điều đó là có chủ đích — nó giới hạn một khóa bị xâm phạm chỉ trong tổ chức của chính nó và các tổ chức con bên dưới tổ chức đó, chứ không phải toàn bộ nền tảng.

Vai trò Nhà phát triển tích hợp thực sự cho phép làm gì?

Vai trò lập trình viên bao gồm quyền đọc tổ chức, quản lý khóa API, xem và tạo trang web, khởi động lại trang, xóa bộ nhớ đệm, cũng như xem và trả lời phiếu hỗ trợ. Vai trò này cố tình loại trừ quyền kiểm soát thanh toán. Lưu ý rằng quyền triển khai và đẩy lên trực tiếp không nằm trong vai trò này — nếu thành viên trong nhóm cần các quyền đó, hãy chỉ định vai trò có các quyền đó thay vì cho rằng Lập trình viên là vai trò kỹ thuật rộng nhất.

Điều gì xảy ra với các webhook của tôi nếu điểm cuối của tôi bị ngừng hoạt động trong một giờ?

Các lần gửi lại có cơ chế chờ tăng dần và mọi nỗ lực đều được ghi lại dưới dạng WebhookDelivery mà bạn có thể kiểm tra. Ở phía thượng nguồn, các sự kiện được ghi vào một outbox giao dịch trong cùng một giao dịch cơ sở dữ liệu với chính thay đổi đó, do đó không có gì bị mất trong lúc trình tiêu thụ không khả dụng — một trình tiêu thụ bị lỗi sẽ chậm trễ chứ không bao giờ làm gián đoạn nhà sản xuất, và bạn có thể phát lại các lần gửi từ bảng điều khiển sau khi hoạt động trở lại.

Chi phí để bắt đầu xây dựng dựa trên nền tảng này là bao nhiêu?

Bắt đầu dùng thử Footprint-Free Hosting 14 ngày không cần thẻ — không cần thông tin thanh toán, hỗ trợ tối đa 5 trang web. Các gói Footprint-Free trả phí bắt đầu từ $6/tháng cho PBN 5. Mọi gói cước đều có chính sách hoàn tiền trong 30 ngày, di chuyển trang web miễn phí và không bị ràng buộc nhà cung cấp.

Đọc tài liệu kỹ thuật, sau đó tiến hành xây dựng dựa trên đó

API theo tiêu chuẩn đặc tả, SDK được tạo tự động, CLI, Terraform provider, webhook có chữ ký và máy chủ MCP — trên nền tảng lưu trữ mà chúng tôi xây dựng cho hơn 650.000 trang web trên toàn thế giới. Bắt đầu dùng thử 14 ngày không cần thẻ tín dụng, không yêu cầu thông tin thanh toán.

Dùng thử miễn phí