ドキュメントの目次
  1. はじめに
  2. コンテンツとコレクション
  3. 公開API
  4. CMS SDK
  5. 素材ライブラリ
  6. データの受け渡し(ZIP)
  7. 管理API

管理API

管理APIを使うと、サイト・リソース・データ・素材の作成や更新、公開を、プログラムやスクリプトから行えます。個人用のAPIトークンで認証し、自分が所有するサイトだけを操作できます。静的サイトから公開データを読むだけなら、管理APIではなく 公開API を使ってください。

APIトークン

発行する

  1. 管理画面の上部メニューから「アカウント・API」を開きます。
  2. 「管理APIトークン」の「名前」に用途(例:開発用クライアント)を入力し、「トークンを発行」を押します。
  3. 表示されたトークンをコピーします。トークンはこの画面で一度だけ表示されます。
項目 内容
有効期間 発行から90日。期限は一覧に「YYYY/MM/DD まで」と表示されます。
権限 発行したユーザーが所有するすべてのサイトへの管理権限
失効 一覧の「失効」を押すと、すぐに使えなくなります。

期限が切れたら、新しいトークンを発行してください。トークンは管理権限を持つため、公開サイトのHTMLやJavaScriptには絶対に埋め込まないでください。

送り方

Authorization ヘッダーに Bearer 形式で付けます。

Authorization: Bearer YOUR_TOKEN

トークンがない、誤っている、または期限切れの場合は 401 になります。

エンドポイント一覧

ベースURLは https://cms.magichtml.dev/api/v1 です。{site}・{resource}・{entry}・{asset} には、それぞれのID(UUID)を指定します。

サイト

メソッド パス 内容
GET /sites 自分のサイトの一覧(リソース数つき)
POST /sites サイトを作成(name:100文字まで)
GET /sites/{site} サイトの詳細(リソースと素材の一覧を含む)
PUT /sites/{site} サイト名と接続元を更新(name、origins)
DELETE /sites/{site} サイトを削除(リソース・公開履歴・素材もすべて削除)

PUT /sites/{site} の origins は、接続元の配列(または改行区切りの文字列)で、指定した内容で一覧全体が置き換わります。origins を省略すると接続元は空になるので、変更しない場合も現在の値を送ってください。

リソース

メソッド パス 内容
POST /sites/{site}/resources リソースを作成(name、key、kind:content または collection)
GET /resources/{resource} リソースの詳細(項目定義、下書きデータ、直近20件の公開履歴を含む)
PUT /resources/{resource} 名前と項目定義の下書きを保存(name、version、fields)
DELETE /resources/{resource} リソースを削除(データ・公開履歴も削除)
POST /resources/{resource}/publish 保存済みの下書きを公開。レスポンスは {"version": "<公開版ID>"}
POST /resources/{resource}/unpublish 公開を停止

データ(レコード)

メソッド パス 内容
POST /resources/{resource}/entries データを追加(key、values、position)
PUT /resources/{resource}/entries/{entry} データを更新(key、values、position)
DELETE /resources/{resource}/entries/{entry} データを削除

素材

メソッド パス 内容
POST /sites/{site}/assets 素材をアップロード(multipart の file、任意で is_public)
DELETE /assets/{asset} 素材を削除

データの受け渡し

メソッド パス 内容
GET /sites/{site}/interchange/export 管理用ZIPを書き出し
POST /sites/{site}/interchange/preview ZIP(package)の内容を確認
POST /sites/{site}/interchange/import 確認済みの内容を取り込み(token、confirm)

詳しくは データの受け渡し(ZIP) をご覧ください。

過去の公開版への切り替え、素材の名前・公開設定の変更、APIトークンの発行・失効は管理画面でのみ行えます。

リクエストの詳細

項目定義の保存(PUT /resources/{resource})

  • fields には項目定義の配列を全件送ります。送った内容で項目定義全体が置き換わります。
  • 各項目には key、label、type、required、public を指定します。select・radio では options に {"value": "...", "label": "..."} の配列(または文字列の配列)を指定します。
  • 任意で次の属性も指定できます。
属性 内容
description 項目の説明(1000文字まで)
min・max 数値の下限・上限
minlength・maxlength 文字数の下限・上限
nullable null を保存できるか(既定は「必須でなければ可」)
nonempty 空文字を禁止するか(既定は「必須なら禁止」)
  • version には、GET /resources/{resource} で取得した現在の version を送ります。ほかの操作で更新されていた場合は 409 になります。データの保存・削除でも version は進むので、項目定義を保存する直前に取得し直してください。
  • 型と値のルールは コンテンツとコレクション と同じです。フォーム専用の型(checkboxes、file)は使えません。

データの保存(entries)

  • key、values、position はすべて必須です。
  • values は {"項目の識別キー": 値} のオブジェクトです。数値は数値、はい/いいえは true/false、リンクは文字列または {"url": "..."} で送ります。
  • コンテンツはデータが常に1件です。POST すると既存のデータが更新され、識別キーは main になります。
  • 保存先は下書きです。公開APIに反映するには publish を呼びます。

例:お知らせを作って公開する

TOKEN='YOUR_TOKEN'
API='https://cms.magichtml.dev/api/v1'

# 1. コレクションを作成
curl -X POST "$API/sites/SITE_ID/resources" \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"name": "お知らせ", "key": "news", "kind": "collection"}'
# => {"data": {"id": "RESOURCE_ID", ...}}

# 2. データを追加
curl -X POST "$API/resources/RESOURCE_ID/entries" \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"key": "news-001", "position": 0, "values": {"title": "サイトを公開しました", "body": "本日よりサイトを公開しました。"}}'

# 3. 公開
curl -X POST "$API/resources/RESOURCE_ID/publish" \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'
# => {"version": "..."}

公開後は https://cms.magichtml.dev/api/public/v1/sites/SITE_ID/resources/news で取得できます。

レスポンスとエラー

成功時は、多くの場合 {"data": ...} の形で JSON を返します。サイト・リソース・素材の作成とデータの取り込みは 201、データ(レコード)の追加・更新は 200、削除と公開停止は本文なしの 204 です。

ステータス 主な原因
401 トークンがない、誤っている、期限切れ
404 対象が存在しない、または自分のサイトのものではない
409 項目定義の version が古い(ほかの操作で更新済み)
422 入力の検証エラー(message と errors を返します)
429 リクエスト数の上限を超えた

所有者とアクセス範囲

  • サイト、リソース、データ、素材は、それを作成したユーザーだけが操作できます。チームでの共有や権限の設定はありません。
  • 他のユーザーのサイトやリソースを指定すると、存在しない場合と同じく 404 になります。
  • 別のリソースに属するデータIDを指定した場合も 404 になります。

リクエスト数の上限

管理APIは、ユーザーごとに 1分あたり120リクエスト までです。超えると 429 を返します。