システムプロパティ (sys)

WEEGLOO のすべてのリソースのレスポンスは 2 つに分かれます. fields のようにそのリソースの本体データが一方で, システムが管理するメタデータがもう一方です. このメタデータはすべて sys オブジェクトに格納されます.

sys には, リソースの識別子 (id), 種別 (type), 作成・更新日時, バージョン, 他リソースとの関係が入ります. このページでは, すべてのリソースが共通して持つ sys の構造と, リソース種別ごとの違いを一箇所にまとめます. 個別リソースのレファレンスではそのリソース固有の sys キーのみを個別に説明し, 共通部分はこのページを参照します.

共通フィールド

ほぼすべてのリソースの sys は次のフィールドを持ちます. createdBy・updatedBy と space は, 他リソースを指す Refer の形 ({ "sys": { "id", "type": "Refer", "targetType" } }) で入ります. 詳しい形は下の Refer の形 で扱います.

プロパティタイプ説明
idstringリソース固有の識別子. 単一取得・更新・削除パスの {...Id} の位置に入ります.
typestringリソースの種別. そのリソースの種別名が値になります (例: "Content"・"Media"・"Tag").
createdByRefer<User>作成したユーザー.
updatedByRefer<User>最後に更新したユーザー.
createdAtstring (date-time)作成日時.
updatedAtstring (date-time)最終更新日時.
versioninteger (≥1)現在のバージョン. リソースを更新するたびに 1 ずつ増えます.
spaceRefer<Space>このリソースが属する Space. Space 配下のリソースのみが持ちます.

version は同時更新の競合を防ぐためにも使われます. 更新・公開のような変更系のリクエストには, 現在の version 値を X-Weegloo-Version ヘッダーに載せて送る必要があります. 詳しいルールは 規約 を参照してください.

Organization は Space 配下ではないため space を持ちません. 代わりに, 所属するプランを指す plan (Refer<Plan>) と, 公式かどうかを示す isOfficial (boolean) を持ちます. Space は上位の Organization を指す organization (Refer<Organization>) と plan を持ちます.

Refer の形

sys の中で他リソースを指す参照は, 常に同じ形を使います. type が "Refer" に固定され, targetType が指すリソースの種別を示します.

{
  "sys": {
    "id": "HnQ32YiH",
    "type": "Refer",
    "targetType": "Space"
  }
}

targetType には, 指すリソースの種別名が入ります. 例えば space は targetType が "Space" であり, createdBy・updatedBy は "User", Content の contentType は "ContentType" です. つまり Refer&lt;User&gt;・Refer&lt;Space&gt; と書くタイプはすべてこの形であり, targetType だけが異なります.

リソース種別ごとの違い

共通フィールドの上に, リソースの種別に応じて追加のプロパティが付きます. 大きく 3 つに分かれます.

公開ライフサイクルリソース (Content・Media)

Content と Media は, 作成・公開・アーカイブというライフサイクルを持ちます. そのため sys に公開状態を表すプロパティが加わります.

プロパティタイプ説明
statusstring (enum)公開状態. Draft・Changed・Published・Archived のいずれか.
publishobject公開状態ポインター. 下のキーを参照.
archiveobjectアーカイブ情報. アーカイブ中のときのみ存在し, そうでなければキーがありません.

status は次の 4 つのいずれかです.

status意味
Draft作成中で, まだ公開されていない状態.
Changed公開されたことがあるが, その後更新され, まだ公開されていない変更分がある状態.
Published公開されており, 未公開の変更分がない状態.
Archivedアーカイブされた状態.

publish オブジェクトは公開状態を指すポインターです. 公開中のときは次のキーをすべて持ちます.

キータイプ説明
versioninteger公開された時点の sys.version.
atstring (date-time)最終公開日時.
firstAtstring (date-time)初回公開日時. 公開停止しても保持されます.
counterinteger累積公開回数.
byRefer<User>最後に公開したユーザー.

公開停止すると, publish から version・at・by が外れ, firstAt・counter のみが残ります. 一度も公開したことがなければ, publish は { "counter": 0 } です.

archive オブジェクトはアーカイブ中のときのみ存在し, アーカイブ時点の version, アーカイブ日時 at, アーカイブしたユーザー by を持ちます. アーカイブ状態でなければ archive キー自体がありません.

ここで sys.version は作業中のバージョン (作成・更新・公開などすべての変更ごとに増える) であり, publish.version は最後に公開されたバージョンです. 両者は異なる場合があります.

次は公開中の Content の sys の例です.

{
  "id": "3trmXRM3RqbgSnifyg7PUl8DzDgDzP",
  "type": "Content",
  "space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
  "contentType": { "sys": { "id": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA", "type": "Refer", "targetType": "ContentType" } },
  "publish": {
    "version": 1,
    "at": "2026-06-18T09:51:44.128Z",
    "firstAt": "2026-06-18T09:51:44.128Z",
    "counter": 1,
    "by": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } }
  },
  "createdBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
  "createdAt": "2026-06-18T09:51:14.597Z",
  "updatedBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
  "updatedAt": "2026-06-18T09:51:44.128Z",
  "version": 2,
  "status": "Published"
}

公開ライフサイクルの状態遷移の順序と各段階のレスポンスは, Content と Media で扱います.

設定リソース (Tag・Locale・Organization・Space など)

Tag・Locale・Organization・Space・SpaceRole・ServiceUserRole・Webhook・ServiceLogin のようなリソースには公開という概念がありません. 作成するとすぐに適用され, 公開して配信経路に載せる段階がありません.

したがって, これらの sys には status・publish・archive がなく, 共通フィールドとともに version のみを持ちます. version は更新するたびに 1 ずつ増え, 変更リクエスト時に X-Weegloo-Version ヘッダーに載せます.

SpaceRole はこれに加えて isLocked (boolean) を持ちます. true であれば, WEEGLOO がデフォルトで提供するロールであることを意味します.

特殊リソース (ServiceUser・WebHosting)

一部のリソースは, 上の 2 つに当てはまらない sys を持ちます.

ServiceUser は, 製品の会員登録によって生成されるリソースです. 人がコンテンツスタジオで作成・編集するリソースではないため, sys に createdBy・updatedBy・version がありません. 代わりに, ログイン手段 provider (string) と email (string) を持ちます. version がないため, ServiceUser を更新するときは X-Weegloo-Version ヘッダーは不要です.

WebHosting は, デプロイ成果物をホスティングするリソースです. 共通フィールドと version を持ち, これにデプロイ処理状態 state (enum) が加わります. これは公開状態ではなく, アップロードしたデプロイ成果物を処理する進行状態です.

state意味
PENDING処理待ち.
PROCESSING処理中.
COMPLETED処理完了.
FAILED処理失敗.

CMA と CDA の違い: version vs revision

同じ Content・Media でも, どの API から受け取るかによって sys の形が異なります.

CMA (管理) から受け取る Content・Media は作業中のリソースです. そのため version・status・publish (およびアーカイブ中であれば archive) をすべて含め, 現在の作業状態と公開状態をあわせて伝えます.

CDA (配信) は公開されたスナップショットのみを配信します. 作業中状態という概念がないため, sys に version・status・publish・archive を含めません. 代わりに, 公開されたスナップショットの番号を指す revision (integer) を 1 つだけ使います. revision には, 公開するたびにその時点のバージョンが入ります.

{
  "id": "3trmXRM3RqbgSnifyg7PUl8DzDgDzP",
  "type": "Content",
  "space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
  "contentType": { "sys": { "id": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA", "type": "Refer", "targetType": "ContentType" } },
  "createdBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
  "createdAt": "2026-06-18T09:51:14.597Z",
  "updatedBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
  "updatedAt": "2026-06-18T09:51:44.128Z",
  "revision": 3
}

公開配信モデル (公開されたものだけが配信される・公開スナップショット・revision) は, CDA 概要 で詳しく扱います.

  • 共通クエリパラメーター: 一覧取得・ページネーション.
  • 規約: メディアタイプ・JSON Patch・同時実行制御 (X-Weegloo-Version).
  • エラー: エラーレスポンス形式と共通コード.
  • CDA 概要: 公開スナップショット (revision) の配信モデル.