SpaceRole
最終更新: 2026年6月22日
SpaceRole は Space メンバーに付与する権限のまとまりです。Content Type・Content・Media に対して何を(読み取り・作成・編集・削除・公開)できるか、そして Space 設定にアクセスできるかを 1 つのリソースにまとめます。特定の Content Type のみ、自分が作成したもののみといったかたちで権限の範囲を絞り込むフィルターも SpaceRole の中で定義します。
作成した SpaceRole は、それ自体では誰にも適用されません。Space Membership の roles にこの SpaceRole の Refer を入れてメンバーに付与します。1 人のメンバーが複数の SpaceRole を同時に持つことができます。また DeliveryAccessToken も least-privilege(最小権限)の SpaceRole 1 つに紐づき、そのトークンで配信を受けられる範囲が決まります。
リソース構造
以下は SpaceRole「商品 閲覧専用」の単一取得レスポンスです。sys(システムプロパティ)とともに、権限を定義する本体プロパティ contentType・content・media・settings を持ちます。
{
"sys": {
"id": "3trmXRM3RqbgSnifyg7ObyNrQQbHbm",
"type": "SpaceRole",
"space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
"createdBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
"createdAt": "2026-06-16T09:53:16.617Z",
"updatedBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
"updatedAt": "2026-06-16T09:53:16.617Z",
"isLocked": false,
"version": 1
},
"name": "商品 閲覧専用",
"contentType": { "All": { "Allow": [] } },
"content": {
"Read": {
"Allow": [
{ "contentType": { "sys": { "id": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA", "type": "Refer", "targetType": "ContentType" } } }
]
}
},
"media": { "All": { "Allow": [] } },
"settings": []
}主なキー:
contentType: Content Type 自体(スキーマ)に対する権限マップです。Content Type を読み取り、作成し、編集し、削除し、公開する権限をアクションごとに定義します。content: Content(コンテンツデータ)に対する権限マップです。上の例は特定の Content Type の Content のみを読み取れるよう限定したものです。media: Media(ファイル・画像)に対する権限マップです。settings: Space 設定へのアクセス権限を定義する文字列の配列です。全アクセスは["SETTING_ALL"]、設定へのアクセスを一切付与しない場合は[]です。isLocked:trueの場合は Weegloo が標準で提供するロール(例: Administrator)であり、変更・削除できません。
システムプロパティ (sys)
すべての SpaceRole は共通のシステムプロパティを sys オブジェクトに持ちます。space・createdBy・updatedBy は Refer 形式({ "sys": { "id", "type": "Refer", "targetType" } })で入ります。
| プロパティ | 型 | 説明 |
|---|---|---|
id | string | リソースの一意な識別子。 |
type | string | リソースの種類。SpaceRole は常に "SpaceRole"。 |
space | Refer<Space> | この SpaceRole が属する Space。 |
createdBy | Refer<User> | 作成したユーザー。 |
createdAt | string (date-time) | 作成日時。 |
updatedBy | Refer<User> | 最後に変更したユーザー。 |
updatedAt | string (date-time) | 最終変更日時。 |
isLocked | boolean | true の場合は標準提供ロールであり、変更・削除できません。自分で作成したロールは false です。 |
version | integer (≥1) | リソースのバージョン。変更するたびに 1 ずつ増えます。 |
SpaceRole は公開の概念を持たない設定リソースです。そのため Content・Media とは異なり、sys に publish・archive・status がなく、version のみを持ちます。version は SpaceRole を変更するたびに増加します。
権限マップ: contentType・content・media
contentType・content・media はそれぞれ アクションをキーに持つマップ です。アクションは Read(読み取り)・Create(作成)・Edit(編集)・Delete(削除)・Publish(公開)であり、すべてのアクションをまとめて指す All もあります。各アクションの値は Allow(許可)と Deny(拒否)のルール配列を持つオブジェクトです。
"content": {
"Read": { "Allow": [ /* ルール */ ], "Deny": [ /* ルール */ ] },
"Edit": { "Allow": [ /* ルール */ ] }
}各ルール(rule)オブジェクトは権限の範囲を絞り込む任意のフィルターを持ちます。
contentType: そのルールが適用される対象を特定の Content Type 1 つに限定します。Content Type を指すReferを入れます。createdBy: 特定のユーザーが作成したリソースのみに限定します。sys.idに特定のユーザー id を入れるとその人が作成したもののみ、予約値:selfを入れると「現在呼び出したユーザーが作成したもののみ」に限定されます。tag: 特定の Tag が付いたリソースのみに限定します。
空の Allow 配列 [] は、その種類全体に対してアクションを許可する という意味です。フィルターが空で絞り込む対象がないため、すべてのリソースに対してそのアクションが開かれます。
例 1: Administrator (全権限、標準提供)
Administrator ロールは contentType・content・media すべての All アクションに空の Allow を与えて全体を許可し、settings に ["SETTING_ALL"] を与えて Space 設定全体にアクセスします。このロールは Weegloo が標準で提供するため sys.isLocked が true であり、変更・削除できません。
{
"sys": {
"id": "3trmXRLdJF4GBlAjtcuoWfVubsasp4",
"type": "SpaceRole",
"space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
"createdBy": { "sys": { "id": "_", "type": "Refer", "targetType": "User" } },
"createdAt": "2026-06-14T14:56:04.737Z",
"updatedBy": { "sys": { "id": "_", "type": "Refer", "targetType": "User" } },
"updatedAt": "2026-06-14T14:56:04.737Z",
"isLocked": true,
"version": 1
},
"name": "Administrator",
"description": "Members of this role have full access to everything in this space.",
"contentType": { "All": { "Allow": [] } },
"content": { "All": { "Allow": [] } },
"media": { "All": { "Allow": [] } },
"settings": ["SETTING_ALL"]
}例 2: 読み取り専用 (特定の Content Type のみ)
自分で作成する least-privilege ロールの例です。content の Read アクションにのみルールを置き、そのルールの contentType フィルターで特定の Content Type 1 つに限定します。Content Type 自体と Media は All を空の Allow で開放していますが、コンテンツデータはその 1 種類を読み取ることだけが可能です。settings が [] のため Space 設定にはアクセスできません。このようなロールを DeliveryAccessToken に紐づけると、配信トークンがその範囲だけを読み取るようになります。このロールの JSON は上の リソース構造 の「商品 閲覧専用」と同じです。
settings (Space 設定アクセス)
settings は権限マップではなく文字列の配列です。Space 設定へのアクセス権限を持ち、全アクセスは ["SETTING_ALL"]、アクセスを一切付与しない場合は [] にします。
アクション一覧(
Read・Create・Edit・Delete・Publish・All)とフィルターキー(contentType・createdBy・tag)・:selfの意味はweegloo-space-role権限ルール定義を基準とします。
API
以下のすべてのエンドポイントの基準 URL は https://cma.weegloo.com/v1 であり、Authorization ヘッダーに CMA を認証する Bearer トークンが必要です。ロールの変更(PUT・PATCH)には楽観的並行性制御のために X-Weegloo-Version ヘッダー(現在のリソースの sys.version)を併せて送る必要があります。作成と削除にはこのヘッダーはありません。sys.isLocked が true の標準提供ロールは変更・削除できません。
関連ドキュメント
- Space Membership: メンバーの
rolesに SpaceRole をバインド。 - Delivery Access Token: least-privilege の SpaceRole に紐づける配信トークン。
- Content Type: 権限ルールが指す Content Type。
