Kho JSON API

Lưu tài liệu JSON nhỏ và đọc, cập nhật qua REST: merge patch, lịch sử phiên bản, khoá lạc quan, TTL và chế độ đọc công khai không cần key.

GETPOSTPUTPATCHDELETEhttps://apibox.io.vn/v1/json-store
Dữ liệu & JSON

POST /v1/json-store với {"data": …} (bất kỳ giá trị JSON nào), cùng name, public và ttl_seconds tuỳ chọn để tạo tài liệu; kết quả gồm id và URL /v1/json-store/{id}. GET trả tài liệu kèm thông tin (raw=true: chỉ nội dung, có ETag), PUT (hoặc POST) thay toàn bộ data, PATCH áp dụng JSON Merge Patch (RFC 7386: giá trị null để xoá khoá) và DELETE để xoá. Có thể đổi tên, chế độ công khai và TTL mà không động tới dữ liệu.

Mỗi lần ghi tăng version; gửi if_version (hoặc header If-Match: "v3") để từ chối ghi khi tài liệu đã bị người khác sửa trong lúc đó (409 version_conflict). Các phiên bản trước được giữ lại (/{id}/versions, /{id}/versions/{n}): 3 với gói Free, 10 với Starter, 25 với Pro. Tài liệu có public=true ai cũng đọc được bằng GET /v1/json-store/{id} mà không cần API key (JSON thô, CORS *, trả về dạng application/json kèm nosniff nên không thể biến thành trang web; lượt đọc này miễn phí, cache 10 giây và giới hạn tần suất theo tài liệu). Tài liệu có ttl_seconds (60 giây tới 365 ngày) sẽ tự biến mất khi hết hạn.

Tài liệu gắn với tài khoản (API key hoặc đã đăng nhập). Giới hạn theo gói: Free 10 tài liệu, mỗi tài liệu tối đa 100 KB (tổng 5 MB kể cả phiên bản), Starter 100 × 512 KB (100 MB), Pro 1.000 × 1 MB (500 MB). Mỗi lệnh gọi có xác thực tính một request. Dữ liệu lưu trong cơ sở dữ liệu D1 (nhất quán ngay: đọc liền sau khi ghi sẽ thấy dữ liệu mới). Không lưu bí mật hay dữ liệu cá nhân trong tài liệu công khai.

Tham số

TênVị tríKiểuBắt buộcMặc định
databodyobjectcóTài liệu JSON (bất kỳ giá trị JSON nào). Bắt buộc khi tạo; với PATCH là merge patch.
namebodystringkhôngTên hiển thị (tối đa 100 ký tự).
publicbodybooleankhôngfalseCho phép GET không cần API key (JSON thô).
ttl_secondsbodynumberkhôngTài liệu hết hạn sau 60 giây – 365 ngày; 0 để bỏ hạn.
if_versionbody|querynumberkhôngChỉ PUT / PATCH khi tài liệu vẫn ở phiên bản này (hoặc If-Match: "v<n>").
rawquerybooleankhôngfalseGET: chỉ trả về nội dung tài liệu.
idpathstringkhông/{id} (GET, PUT, POST, PATCH, DELETE), /{id}/versions, /{id}/versions/{n}.

Ví dụ

curl -X POST "https://apibox.io.vn/v1/json-store" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Cấu hình","public":true,"data":{"theme":"dark","flags":{"beta":true,"old":1}}}'

Kết quả trả về

{
  "id": "js_vb1uxwnz96v8s4nvmydv",
  "name": "Cấu hình",
  "url": "https://apibox.io.vn/v1/json-store/js_vb1uxwnz96v8s4nvmydv",
  "public": true,
  "size": 46,
  "version": 1,
  "expires_at": null,
  "created_at": "2026-11-11T03:21:15.000Z",
  "updated_at": "2026-11-11T03:21:15.000Z",
  "data": {
    "theme": "dark",
    "flags": {
      "beta": true,
      "old": 1
    }
  }
}

Ứng dụng

  • Lưu feature flag hoặc cấu hình từ xa cho ứng dụng mà không cần backend
  • Lưu trạng thái cho bản prototype, dự án hackathon, công cụ no-code
  • Công bố bộ dữ liệu JSON nhỏ để front-end đọc mà không cần key
  • Chia sẻ dữ liệu test giữa các job CI, có lịch sử phiên bản

Hỏi đáp

Tài liệu công khai có đọc được mà không cần API key không?

Có, GET /v1/json-store/{id} không kèm key sẽ trả JSON thô nếu tài liệu ở chế độ công khai. Mọi thao tác ghi luôn cần key của chủ sở hữu.

Làm sao để không ghi đè thay đổi của người khác?

Đọc version trước, rồi gửi if_version (hoặc If-Match: "v<n>") kèm PUT / PATCH. Nếu tài liệu đã đổi trong lúc đó, bạn nhận lỗi 409 version_conflict.

Khi tài liệu hết hạn thì sao?

Sau ttl_seconds, tài liệu trả về 404 và bị xoá cùng các phiên bản trong lượt dọn dẹp hằng ngày.

API liên quan

Bắt đầu với 1.000 request miễn phí mỗi tháng. Nhận API key miễn phí →