概要
Jstore は「JSON を保存して、そのまま返す」ことに特化したシンプルなサービスです。 サーバー側で JSON の意味や構造を解釈せず、保存された内容をそのまま配信します。
向いている用途
- アプリやWebサイトの設定JSON
- 機種一覧やマスターデータ
- たまに更新する公開データ
- 小規模なJSON配信API
向いていない用途
- 高頻度な書き込みや同時更新
- 個人情報や認証情報の保存
- 秘匿性が必要な機密データ
- 複雑な検索や大量ユーザーデータ管理
Jstore は公開向け JSON ホスティングです。読み取りはシンプルに、更新・削除は editKey で管理します。
共通仕様
| 保存形式 | JSON のみ |
|---|---|
| リクエスト Content-Type | application/json |
| レスポンス形式 | 取得系は保存された JSON をそのまま返却。作成・更新・削除系はメタ情報 JSON を返却。 |
| 公開範囲 | URL を知っていれば取得可能な公開データ |
| 更新・削除認証 | X-Edit-Key ヘッダー必須 |
| サイズ制限 | 10MB |
| editKey 保存方式 | 平文は返却のみ。保存時は SHA-256 ハッシュ化 |
Jstore は JSON の中身を解釈しません。通常の JSON でも、暗号化済み文字列を含む JSON でも、JSON として有効なら保存できます。
エンドポイント
ROOT
/
ドキュメントへリダイレクトします。
GET
/api
API の状態確認用エンドポイントです。利用可能な基本情報を JSON で返します。
レスポンス例
{
"name": "Jstore",
"status": "ok",
"endpoints": {
"docs": "GET /",
"info": "GET /api",
"create": "POST /api/json",
"apiGet": "GET /api/json/:id",
"rawGet": "GET /get/:id",
"update": "PATCH /api/json/:id",
"remove": "DELETE /api/json/:id"
},
"limits": {
"maxJsonBytes": 10485760
}
}
POST
/api/json
JSON を新規保存します。保存後、取得用 URL と更新・削除用の editKey を返します。
リクエストヘッダー
| Content-Type | application/json |
|---|
リクエスト例
{
"hello": "world",
"items": [1, 2, 3],
"version": 1
}
レスポンス例
{
"id": "xa41fz8b",
"editKey": "550e8400-e29b-41d4-a716-446655440000-a1b2c3",
"rawUrl": "https://jstore.ulab.workers.dev/get/xa41fz8b",
"apiUrl": "https://jstore.ulab.workers.dev/api/json/xa41fz8b",
"size": 49,
"createdAt": "2026-03-22T12:00:00Z",
"updatedAt": "2026-03-22T12:00:00Z",
"type": "object"
}
JSON を新規保存した時点で、利用者は利用規約およびプライバシーポリシーに同意したものとみなされます。editKey はこのレスポンスでのみ取得できます。更新・削除に必要なので、必ず安全に保存してください。
GET
/get/{id}
保存済み JSON をそのまま返します。公開用 URL として利用できるシンプルな取得エンドポイントです。
パスパラメータ
| id | 保存時に発行された JSON ID |
|---|
レスポンス例
{
"hello": "world",
"items": [1, 2, 3],
"version": 1
}
主なレスポンスヘッダー例
Content-Type: application/json; charset=utf-8 Cache-Control: public, max-age=86400 X-JSON-Size: 49 X-Created-At: 2026-03-22T12:00:00Z X-Updated-At: 2026-03-22T12:00:00Z X-JSON-Type: object X-Jstore-Id: xa41fz8b
GET
/api/json/{id}
/get/{id} と同様に JSON を取得します。API パスに統一したい場合に利用できます。
レスポンス例
{
"hello": "world",
"items": [1, 2, 3],
"version": 1
}
PATCH
/api/json/{id}
既存 JSON を上書き更新します。対象 JSON の X-Edit-Key が必要です。
リクエストヘッダー
| Content-Type | application/json |
|---|---|
| X-Edit-Key | 必須。作成時に発行された編集キー |
リクエスト例
{
"hello": "updated",
"items": [1, 2, 3, 4],
"version": 2
}
レスポンス例
{
"message": "JSON updated successfully",
"id": "xa41fz8b",
"rawUrl": "https://jstore.ulab.workers.dev/get/xa41fz8b",
"apiUrl": "https://jstore.ulab.workers.dev/api/json/xa41fz8b",
"size": 57,
"createdAt": "2026-03-22T12:00:00Z",
"updatedAt": "2026-03-22T13:00:00Z",
"type": "object"
}
DELETE
/api/json/{id}
既存 JSON を削除します。対象 JSON の X-Edit-Key が必要です。
リクエストヘッダー
| X-Edit-Key | 必須。作成時に発行された編集キー |
|---|
レスポンス例
{
"message": "JSON deleted successfully",
"id": "xa41fz8b"
}
使用例
動作確認用の curl 例です。そのまま使えます。
1. JSON を保存
curl -X POST https://jstore.ulab.workers.dev/api/json \
-H "Content-Type: application/json" \
-d '{"hello":"world","items":[1,2,3]}'
2. JSON を取得
curl https://jstore.ulab.workers.dev/get/xa41fz8b
3. JSON を更新
curl -X PATCH https://jstore.ulab.workers.dev/api/json/xa41fz8b \
-H "Content-Type: application/json" \
-H "X-Edit-Key: 550e8400-e29b-41d4-a716-446655440000-a1b2c3" \
-d '{"hello":"updated"}'
4. JSON を削除
curl -X DELETE https://jstore.ulab.workers.dev/api/json/xa41fz8b \ -H "X-Edit-Key: 550e8400-e29b-41d4-a716-446655440000-a1b2c3"
更新頻度が低いデータ配信なら、Jstore はかなり扱いやすい構成です。設定 JSON や一覧データの公開に向いています。
エラー仕様
エラー時は基本的に以下の形式で返します。
{
"error": "invalid_json",
"message": "Body must be valid JSON"
}
主なステータスコード
| 400 Bad Request | empty_body または invalid_json |
|---|---|
| 401 Unauthorized | missing_edit_key |
| 403 Forbidden | invalid_edit_key |
| 404 Not Found | not_found |
| 405 Method Not Allowed | method_not_allowed |
| 413 Payload Too Large | payload_too_large |
| 415 Unsupported Media Type | unsupported_media_type |
セキュリティに関するヒント
Jstore は公開用途を想定したサービスです。機密性が必要なデータは保存しないでください。 ただし、必要に応じてクライアント側で暗号化した JSON を保存することは可能です。
暗号化済み JSON の例
{
"encrypted": true,
"algorithm": "AES-GCM",
"data": "base64-encoded-ciphertext",
"note": "client-side encrypted"
}
Jstore は暗号化・復号機能を提供しません。鍵管理や暗号方式の選定は、利用者自身の責任で行ってください。
利用上の注意
重要事項
- 保存されたデータは公開される可能性があります
- 個人情報、認証情報、機密情報は保存しないでください
- データの利用・公開はユーザー自身の責任で行ってください
- データの永続保存は保証されません
免責
- データ消失・破損・漏洩の可能性があります
- 当サービスは保存データの完全性や可用性を保証しません
- 利用により生じた損害について責任を負いません
- 必要に応じてサービス仕様は変更されることがあります
Jstore は「安全な秘密保管庫」ではなく、「公開向け JSON ホスティング」です。秘匿性が必要な情報は扱わない前提で利用してください。
関連ページ
利用前に、以下のページもあわせて確認してください。