Space Access Token

最終更新: 2026年7月23日

Space Access Tokenは、1つのSpaceの中でコンテンツを読み書きできるトークンです。CMAでコンテンツを生成・修正・削除でき、CDAの読み取りとUploadもこのトークンで呼び出します。発行時に1つのSpaceRoleにバインドし、そのロールがトークンに何をどこまで許すか(どのContent Typeをどの操作で扱えるか)を定めます。

読み取り専用のDelivery Access Tokenとは異なり、このトークンは書き込みまで行えます。一方、ユーザーアカウント全体に結びつくPersonal Access Tokenとは異なり、1つのSpaceだけに限定され、Spaceの設定・組織・アカウントの平面や、ほかのSpaceにはアクセスできません。CMAにおいてSpace Access TokenSpaceの下位リソースであり、パスは/spaces/{spaceId}/space-access-tokensを基準とします。このトークンをサーバーに置くか、公開されたクライアント(例: 匿名での投稿)に置くかは、サービスに合わせて決めます。書き込み権限を持つ強力なトークンなので、バインドするロールを、そのトークンを置く場所の露出範囲に合わせて狭めることでセキュリティを確保します(下記セキュリティ: 露出範囲に合わせたロールバインディングを参照)。

リソース構造

次はSpace Access Tokenを生成したときのレスポンスです。sys(システム属性)にトークン値と範囲が入り、本文にnamedescriptionがあります。

{
  "sys": {
    "id": "7WpR4mKq2bTnXfLc8Vd3HsJ9gEyAo",
    "type": "SpaceAccessToken",
    "space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
    "user": { "sys": { "id": "3trmXRLdJIqc9GPBbyFYQQwYT32LnU", "type": "Refer", "targetType": "User" } },
    "createdBy": { "sys": { "id": "9dLmQ2pVnRb8sTfWcXd3LhJ7gK", "type": "Refer", "targetType": "User" } },
    "createdAt": "2026-06-19T02:15:38.472Z",
    "updatedBy": { "sys": { "id": "9dLmQ2pVnRb8sTfWcXd3LhJ7gK", "type": "Refer", "targetType": "User" } },
    "updatedAt": "2026-06-19T02:15:38.472Z",
    "accessToken": "SPCATq8Lm2vK9pXfR1Zt0Nc4Wd6Hg5Ua2Ee9Ck3PoYx8Bj6Hg5Ua2Ee9Ck3Po…",
    "scopes": ["SPACE_ACCESS_TOKEN"]
  },
  "description": "アパレルショップの商品登録・修正用サーバートークン",
  "name": "商品バックエンドサーバー"
}

主なキー:

  • sys.id: Space Access Tokenの一意の識別子です。単一取得・更新・削除パスの{spaceAccessTokenId}に入ります。
  • sys.space: このトークンが属するSpaceです。トークンはこのSpace1つの中でのみ動作します。
  • sys.accessToken: API呼び出しに使う秘密のトークン値です。SPCATで始まり、発行後の取得でも同じ値がそのまま返るため、露出に注意が必要です(下記セキュリティ節を参照)。
  • sys.scopes: トークンの権限範囲です。Space Access Tokenは発行時に常に["SPACE_ACCESS_TOKEN"]です。
  • sys.user: このトークンの権限主体となる専用ユーザーです。発行時に自動で作成され、バインドしたSpaceRoleの権限がこのユーザーに付与されます。つまりトークンの実効権限はこのユーザーから生じます。このトークンを実際に発行した人(sys.createdBy)とは別のユーザーです。
  • name: 生成時に指定したトークン名です(例: 商品バックエンドサーバー)。
  • description: トークンについての説明です(任意)。

role(バインドするSpaceRole)は生成リクエストの本文でのみ送る入力値であり、レスポンスのリソースには含まれません。バインドしたロールはこのトークン専用のユーザー(レスポンスのsys.user)に付与される仕組みのため、取得レスポンスにroleフィールドとして返ってきません。上記の例のaccessTokenは秘密の値なので、例示用の文字列に置き換えてあります。実際にはSPCATで始まる長く不透明な文字列であり、発行後に再度取得しても同じ値が返ります。

システム属性 (sys)

すべてのSpace Access Tokenは、共通のシステム属性とトークン固有の属性をsysオブジェクトに格納します。spaceusercreatedByupdatedByReferの形({ "sys": { "id", "type": "Refer", "targetType" } })で入ります。

属性説明
idstringリソースの一意の識別子。
typestringリソースの種別。Space Access Tokenは常に"SpaceAccessToken"
spaceRefer<Space>このトークンが属するSpace
userRefer<User>このトークンの権限主体となる専用ユーザー。発行時に自動生成され、バインドしたSpaceRoleの権限がこのユーザーに付与されます(トークンの実効権限はこのユーザーから生じます)。createdBy(実際の発行者)とは別のユーザーです。
createdByRefer<User>このトークンを発行した実際のユーザー(権限主体は上記のuser)。
createdAtstring (date-time)生成日時。
updatedByRefer<User>最後に更新した実際のユーザー。
updatedAtstring (date-time)最終更新日時。
accessTokenstringAPI呼び出しに使う秘密のトークン値。SPCATで始まります。発行後の取得でもそのまま返るため、外部に露出しないよう扱う必要があります。
scopesstring arrayトークンの権限範囲。Space Access Tokenは常に["SPACE_ACCESS_TOKEN"]

本文の属性:

属性説明
namestring (1~64)トークン名。生成時に指定します。
descriptionstring (≤128)トークンの説明。任意です。

生成リクエスト本文専用の入力:

属性説明
roleRefer<SpaceRole>バインドするSpaceRoleRefer。必須。このロールがトークンの読み書きの範囲を定めます。生成時にのみ指定し、発行後は変更できず、レスポンスにも返りません。

セキュリティ: 露出範囲に合わせたロールバインディング

Space Access Tokenは書き込みまで行える強力なトークンです。どのSpaceRoleにバインドするかが、そのままこのトークンにできることの境界であり、セキュリティ境界になります。このトークンをサーバーに置くか、公開されたクライアント(例: 匿名での投稿)に置くかはサービスに合わせて決め、セキュリティは「どこに隠すか」ではなく、バインドしたロールを露出範囲に合わせて狭めることで確保します。

  • 生成リクエストのroleには、その用途に必要な操作だけを許可する狭いSpaceRolesys.idを入れます。 商品登録用のサーバートークンなら商品Content Typeの読み書きだけを許可するロールを、公開された匿名投稿トークンなら投稿Content Typeに対する生成(create)だけを許可するロールというように、露出範囲に合わせて最小限でバインドします。
  • 公開クライアントに露出するトークンほど、ロールをより狭く設定します。 そのトークンが漏れても許容できる範囲までしか許可すべきではありません。Administratorロールや広範囲の書き込みロールは、公開トークンにバインドしません。また、SpaceRole一覧の先頭の項目を不用意に使わず、意図した狭いロールのsys.idを明示的に指定します。
  • 訪問者に公開する読み取り専用の配信には、書き込み権限のないDelivery Access Tokenのほうが適しています。書き込みが必要なときにだけSpace Access Tokenを使い、そのロールを露出範囲に合わせて狭めます。
  • accessTokenは発行後も同じ値で取得できる秘密の値です。露出する必要のない場所では、コード・ログ・ストレージ・エラーメッセージに平文で残さず、露出が疑われる場合は削除して無効化し、新しいトークンに差し替えます。

(出典: weegloo-space-access-tokenweegloo-delivery-access-tokenスキル、.claude/rules/weegloo-global-rules.md。)

状態と制約

生成・修正時に守る値の制約です。

対象制約
name1~64文字、必須(生成時)。
description128文字以下、任意。
roleSpaceRoleRefer、必須(生成時)。

バインドと権限についてのルール:

  • バインドするroleは、そのSpaceに実際に存在していなければなりません。存在しないロールのsys.idを入れると生成が拒否されます(WGL404001)。誤ったspaceIdも同じコードで失敗します。
  • 呼び出し元は、自分がそのSpaceで持っているロールだけをバインドできます。自分が持たないロールをバインドしてトークンにより高い権限を与えることを防ぐための制約であり、違反するとWGL422001で拒否されます。ただし、そのSpaceの管理者(Administrator ロールの保有者)はこの制約を受けず、どのロールでもバインドできます。
  • Space Access Tokenは発行数に上限があるリソースです。現在のプランの発行数の上限を超えると生成が拒否されます(WGL429001)。プランごとの上限は料金プランを参照してください。
  • 発行・管理(生成・取得・更新・削除)には、そのSpaceの API キー設定権限が必要です。Space Access Token自身では、ほかのSpace Access Tokenを作成できません。

API

以下のすべてのエンドポイントの基準URLはhttps://cma.weegloo.com/v1であり、AuthorizationヘッダーにCMAを認証するBearerトークンが必要です。Space Access Tokenの更新・部分更新にはX-Weegloo-Versionヘッダーは必要ありません。

  • SpaceRole: このトークンにバインドするロール(読み書きの範囲)を定義。
  • Delivery Access Token: 訪問者に公開する読み取り専用の配信トークン(クライアント用)。
  • Personal Access Token: アカウント全体に結びつくサーバー・CI 用の Weegloo User トークン。
  • 料金プラン: プランごとのSpace Access Token発行数の上限。