mcpField
W
workspaces

workspaces

github.com/stahuraデータ・データベース24178 回インストール26 週間前に更新
リポジトリ

workspaces について

非公開の REST API を使って Domo ワークスペースを管理するためのリバースエンジニアリング資料です。ワークスペースのコンテンツを整理する開発者向けに、追加、削除、一覧表示、検索のエンドポイントを説明します。

主な機能

  1. 01カードなどのコンテンツを追加
  2. 02元の項目を削除せずにワークスペースから除外
  3. 03ワークスペースの内容とメタデータを一覧表示
  4. 04アクセス可能なワークスペースを一覧表示
  5. 05ワークスペース内を検索

活用シーン

  1. 01ワークスペース内のカードを整理
  2. 02ワークスペースの内容やタイトルを確認
  3. 03項目をワークスペースから除外

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/stahura/domo-ai-vibe-rules --skill workspaces

インストール後、Claude Code で/workspacesを入力して読み込まれたか確認します。

詳細

Domo ワークスペース API(リバースエンジニアリング)

CLI と API:Java CLI にはワークスペースのコマンドがありません。すべてのワークスペース操作には、curl 経由で REST API を使用する必要があります。

ステータス:2026 年 3 月時点で未公開の情報をリバースエンジニアリング ベース URL:https://<instance>.domo.com 認証:X-DOMO-Developer-Token ヘッダー

概要

Domo のワークスペースは、関連するコンテンツ(カード、ページ、データセット、アプリなどのアセット)をまとめ、ナビゲーション可能な 1 つのコレクションにするための組織用コンテナーです。ワークスペース API は Domo によって公開ドキュメント化されていません。これらのエンドポイントは Domo のウェブクライアントからリバースエンジニアリングし、テストで検証しました。

サポートされる操作:

  • コンテンツ(カード、ページ、データセット)をワークスペースに追加
  • ワークスペースからコンテンツを削除
  • ワークスペース内のすべてのコンテンツを一覧表示
  • ワークスペース内で特定のコンテンツを検索

エンドポイント

1. ワークスペースにコンテンツを追加(推奨)

1 つのコンテンツ項目をワークスペースに追加します。これは動作が確認されているエンドポイントです。

項目値
メソッドPOST
パス/nav/v1/workspaces/:guid/contents
Content-Typeapplication/json

リクエストボディ:

{
  "entityId": "728638278",
  "entityType": "CARD"
}

レスポンス(成功時):

{
  "id": 6,
  "entityType": "CARD",
  "entityId": "728638278",
  "addedAt": "2026-03-04 16:37:52",
  "addedBy": 149955692
}

サポートされる entityType の値:CARD、PAGE、DATASET、DATA_APP、WORKSPACE_URL

検証済み:2026 年 3 月にこのエンドポイントをテストし、22 個のカードをワークスペースに追加しました。22 個すべてが成功しました。

1b. ワークスペースにコンテンツを追加(一括 - 信頼性に難あり)

一括エンドポイントは存在しますが、すべての形式のバリエーションでテストした結果、400 Bad Request が返されました。代わりに、上記の単一項目用エンドポイントを使用してください。

項目値
メソッドPOST
パス/nav/v1/workspaces/bulk/execute
Content-Typeapplication/json

リクエストボディ(ドキュメント化されていますが、信頼性に難あり):

{
  "operations": [
    {
      "operation": "ADD",
      "workspace": "99bf62b4-21f8-474b-985b-9bb83c773998",
      "contents": [
        {
          "id": "CARD_OR_CONTENT_ID",
          "type": "CARD"
        }
      ]
    }
  ]
}

警告:2026 年 3 月のテストでは、id/entityId の形式、文字列/数値の型、コンテンツタイプの値(CARD、card、KPI_CARD)にかかわらず、このエンドポイントから 400 エラーが返されました。単一項目用の /contents エンドポイントが信頼できる代替手段です。


2. ワークスペースからコンテンツを削除

コンテンツを Domo から削除せずに、ワークスペースから削除します。カード/データセットの ID ではなく、コンテンツのワークスペース内部 id(追加時に返される数値 ID、またはワークスペースのコンテンツ一覧から取得した ID)を使用してください。

項目値
メソッドDELETE
パス/nav/v1/workspaces/:guid/contents/:contentId

:contentId はワークスペース内部の数値 ID です(一覧/追加レスポンスの id フィールド)。

代替手段(一括エンドポイント - 信頼性に難がある可能性があります。セクション 1b の注記を参照してください):

項目値
メソッドPOST
パス/nav/v1/workspaces/bulk/execute
Content-Typeapplication/json
{
  "operations": [
    {
      "operation": "REMOVE",
      "workspace": "99bf62b4-21f8-474b-985b-9bb83c773998",
      "contents": [
        {
          "id": "CARD_OR_CONTENT_ID",
          "type": "CARD"
        }
      ]
    }
  ]
}

3. ワークスペースのコンテンツを一覧表示

詳細情報を任意で含めて、ワークスペース内のすべてのコンテンツオブジェクトを返します。

項目値
メソッドGET
パス/nav/v1/workspaces/:guid/walk?includeDetails=true

パスパラメーター:

  • :guid -- ワークスペースの GUID(例:99bf62b4-21f8-474b-985b-9bb83c773998)

クエリパラメーター:

  • includeDetails(ブール値)-- true の場合、各コンテンツ項目の完全なメタデータを返します

レスポンスの構造:

{
  "current": null,
  "pins": [],
  "sorts": [],
  "folders": [],
  "contents": [
    {
      "id": 6,
      "entityType": "CARD",
      "entityId": "728638278",
      "addedAt": "2026-03-04 16:37:52",
      "addedBy": 149955692,
      "attributes": {
        "entityType": "card",
        "databaseId": "728638278",
        "winnerText": "Revenue by Department",
        ...
      }
    }
  ]
}

各コンテンツ項目の主なフィールド:

  • id -- ワークスペース内部の数値 ID(削除操作に使用)
  • entityType -- CARD、DATA_APP、WORKSPACE_URL など
  • entityId -- Domo エンティティ ID(カード ID、データセット ID など)
  • attributes.winnerText -- 表示名/タイトル
3b. すべてのワークスペースを一覧表示

認証済みユーザーがアクセスできるすべてのワークスペースを返します。

項目値
メソッドGET
パス/nav/v1/workspaces

レスポンスの構造:

{
  "results": [
    {
      "guid": "579394f2-5ec2-4152-b2b7-7e2c6c7a1305",
      "name": "Claude",
      "createdAt": "2026-03-04 16:31:32",
      "createdBy": 149955692,
      "icon": "ai",
      "iconColor": "#e4715d",
      "members": [...],
      "contents": [],
      "folders": []
    }
  ]
}

4. ワークスペースのコンテンツを検索する

ワークスペース内で、クエリに一致するコンテンツを検索します。

フィールド値
メソッドPOST
パス/nav/v1/workspaces/:guid/addContentQuery
Content-Typeapplication/json

パスパラメーター:

  • :guid -- ワークスペースの GUID

例:

POST /nav/v1/workspaces/99bf62b4-21f8-474b-985b-9bb83c773998/addContentQuery

認証

すべてのリクエストでは、ヘッダーで Domo Developer Token を渡す必要があります。

X-DOMO-Developer-Token: your_token_here

Domo UI の Admin > Security > Access Tokens からトークンを生成します。


コード例

Python (requests)
import requests

DOMO_BASE = "https://your-instance.domo.com/api"
TOKEN = "your_domo_developer_token"
WORKSPACE_GUID = "579394f2-5ec2-4152-b2b7-7e2c6c7a1305"

headers = {
    "X-DOMO-Developer-Token": TOKEN,
    "Content-Type": "application/json",
}


def add_card_to_workspace(card_id: str) -> dict:
    """Add a single card to the workspace (confirmed working)."""
    url = f"{DOMO_BASE}/nav/v1/workspaces/{WORKSPACE_GUID}/contents"
    body = {"entityId": card_id, "entityType": "CARD"}
    resp = requests.post(url, json=body, headers=headers)
    resp.raise_for_status()
    return resp.json()


def add_multiple_cards_to_workspace(card_ids: list[str]) -> list[dict]:
    """Add multiple cards one at a time."""
    results = []
    for card_id in card_ids:
        result = add_card_to_workspace(card_id)
        results.append(result)
    return results


def list_workspace_contents() -> dict:
    """List all contents of the workspace with details."""
    url = f"{DOMO_BASE}/nav/v1/workspaces/{WORKSPACE_GUID}/walk"
    params = {"includeDetails": "true"}
    resp = requests.get(url, params=params, headers=headers)
    resp.raise_for_status()
    return resp.json()


def list_all_workspaces() -> dict:
    """List all workspaces the user has access to."""
    url = f"{DOMO_BASE}/nav/v1/workspaces"
    resp = requests.get(url, headers=headers)
    resp.raise_for_status()
    return resp.json()


def search_workspace(query_body: dict) -> dict:
    """Search for content within the workspace."""
    url = f"{DOMO_BASE}/nav/v1/workspaces/{WORKSPACE_GUID}/addContentQuery"
    resp = requests.post(url, json=query_body, headers=headers)
    resp.raise_for_status()
    return resp.json()
curl

ワークスペースにカードを追加する(動作確認済み):

curl -X POST "https://your-instance.domo.com/api/nav/v1/workspaces/WORKSPACE_GUID/contents" \
  -H "X-DOMO-Developer-Token: $DOMO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"entityId": "123456789", "entityType": "CARD"}'

すべてのワークスペースを一覧表示する:

curl -X GET "https://your-instance.domo.com/api/nav/v1/workspaces" \
  -H "X-DOMO-Developer-Token: $DOMO_TOKEN"

ワークスペースのコンテンツを一覧表示する:

curl -X GET "https://your-instance.domo.com/api/nav/v1/workspaces/WORKSPACE_GUID/walk?includeDetails=true" \
  -H "X-DOMO-Developer-Token: $DOMO_TOKEN"

ワークスペースを検索する:

curl -X POST "https://your-instance.domo.com/api/nav/v1/workspaces/WORKSPACE_GUID/addContentQuery" \
  -H "X-DOMO-Developer-Token: $DOMO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

注意点と既知の問題

問題詳細
一括エンドポイントが 400 を返す/nav/v1/workspaces/bulk/execute エンドポイントは、2026 年 3 月のテストで、あらゆる形式(id/entityId、文字列/数値、CARD/card/KPI_CARD)において 400 Bad Request を返しました。代わりに /nav/v1/workspaces/:guid/contents を使用してください。こちらは動作確認済みです。
/bulk/execute ではなく /contents を使用するコンテンツを追加するには、{"entityId": "...", "entityType": "CARD"} を指定した単一アイテム用の POST /nav/v1/workspaces/:guid/contents エンドポイントが確実な方法です。1 回のセッションで 22 枚のカードを使って検証済みです。
entityType の値既存のワークスペースデータで確認済みの値は CARD、DATA_APP、WORKSPACE_URL です。ドキュメントには PAGE、DATASET も記載されています。
未公開の APIこれらのエンドポイントは、Domo の公式 API ドキュメントには記載されていません。Domo のウェブクライアントからリバースエンジニアリングしたものであり、予告なく変更される可能性があります。
GUID の形式ワークスペース識別子には、数値 ID ではなく UUID/GUID 形式(例:579394f2-5ec2-4152-b2b7-7e2c6c7a1305)が使用されます。
レスポンスに内部 ID が含まれるコンテンツを追加すると、レスポンスには id フィールド(例:6)が含まれます。これはワークスペース内部のコンテンツ ID であり、カード/データセット ID とは異なります。削除操作にはこの ID を使用してください。
URL に /api プレフィックスが必要ワークスペースのエンドポイントでは、/api/nav/v1/... パスを使用します。/api を省略すると 404 が返されます。

コメント