調査ノートブック

調査内のノートブックにアクセスします。ノートブックにはプロセスマイニングワークフローを定義する分析ブロックが含まれています。

前提条件

このAPIを通じてノートブックにアクセスする前に、Project APIを使用してプロジェクトをキャッシュにロードする必要があります。

# まずプロジェクトをキャッシュにロードします
curl -X GET "https://your-mindzie-instance.com/api/{tenantId}/project/{projectId}/load" \
  -H "Authorization: Bearer YOUR_API_KEY"

詳細はProject Cache APIをご覧ください。


調査ノートブック一覧取得

GET /api/{tenantId}/{projectId}/investigation/{investigationId}/notebooks

プロジェクトキャッシュから調査内のすべてのノートブックを取得します。

パスパラメーター

パラメーター 必須 説明
tenantId GUID はい テナント識別子
projectId GUID はい プロジェクト識別子
investigationId GUID はい 調査識別子

レスポンス (200 OK)

{
  "notebooks": [
    {
      "notebookId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
      "investigationId": "11111111-2222-3333-4444-555555555555",
      "name": "Main",
      "description": "",
      "dateCreated": "2024-01-15T10:30:00Z",
      "dateModified": "2024-01-20T14:45:00Z",
      "createdBy": null,
      "modifiedBy": null,
      "notebookType": null,
      "notebookOrder": 1.0,
      "lastExecutionDuration": 0,
      "blockCount": 12
    },
    {
      "notebookId": "bbbbbbbb-cccc-dddd-eeee-ffffffffffff",
      "investigationId": "11111111-2222-3333-4444-555555555555",
      "name": "Variant Analysis",
      "description": "",
      "dateCreated": "2024-01-16T09:00:00Z",
      "dateModified": "2024-01-18T11:30:00Z",
      "createdBy": null,
      "modifiedBy": null,
      "notebookType": null,
      "notebookOrder": 2.0,
      "lastExecutionDuration": 0,
      "blockCount": 8
    }
  ],
  "totalCount": 2
}

ノートブックオブジェクトのフィールド

フィールド 説明
notebookId GUID ノートブックの固有識別子
investigationId GUID このノートブックが属する調査
name string ノートブックの表示名
description string ノートブックの説明
dateCreated datetime ノートブックが作成された日時
dateModified datetime ノートブックが最後に変更された日時
createdBy GUID ノートブックを作成したユーザー
modifiedBy GUID ノートブックを最後に変更したユーザー
notebookType integer ノートブックの種類(0 = 標準)
notebookOrder decimal 調査内での表示順序
lastExecutionDuration double 最後の実行時間(秒単位)
blockCount integer ノートブック内のブロック数

エラー応答

Not Found (404) - プロジェクトがキャッシュされていない場合:

"Project not found in cache. Please load the project first using the ProjectController.LoadProject endpoint."

Not Found (404) - 調査が見つからない場合:

{
  "error": "Investigation not found",
  "investigationId": "11111111-2222-3333-4444-555555555555"
}

メインノートブック取得

GET /api/{tenantId}/{projectId}/investigation/{investigationId}/main-notebook

調査のメインノートブックを取得します。メインノートブックは調査作成時に自動的に作成され、通常は主要なフィルタリングおよび分析ワークフローを含みます。

パスパラメーター

パラメーター 必須 説明
tenantId GUID はい テナント識別子
projectId GUID はい プロジェクト識別子
investigationId GUID はい 調査識別子

レスポンス (200 OK)

{
  "notebookId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
  "investigationId": "11111111-2222-3333-4444-555555555555",
  "name": "Main",
  "description": "Primary analysis notebook",
  "dateCreated": "2024-01-15T10:30:00Z",
  "dateModified": "2024-01-20T14:45:00Z",
  "createdBy": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "modifiedBy": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "notebookType": 0,
  "notebookOrder": 1.0,
  "lastExecutionDuration": 2.5,
  "blockCount": 12
}

エラー応答

Not Found (404) - 調査が見つからない場合:

{
  "error": "Investigation not found",
  "investigationId": "11111111-2222-3333-4444-555555555555"
}

Not Found (404) - メインノートブックが見つからない場合:

{
  "error": "Main notebook not found for investigation",
  "investigationId": "11111111-2222-3333-4444-555555555555"
}

実装例

cURL

# ステップ1: まずプロジェクトをキャッシュにロードします
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/project/87654321-4321-4321-4321-210987654321/load" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

# ステップ2: 調査内のすべてのノートブックを一覧表示
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/investigation/11111111-2222-3333-4444-555555555555/notebooks" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

# メインノートブックを直接取得
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/investigation/11111111-2222-3333-4444-555555555555/main-notebook" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Python

import requests

TENANT_ID = '12345678-1234-1234-1234-123456789012'
PROJECT_ID = '87654321-4321-4321-4321-210987654321'
BASE_URL = 'https://your-mindzie-instance.com'

class NotebookAccessor:
    def __init__(self, token):
        self.headers = {
            'Authorization': f'Bearer {token}',
            'Content-Type': 'application/json'
        }

    def load_project(self):
        """ノートブックにアクセスする前にプロジェクトをキャッシュにロードします。"""
        url = f'{BASE_URL}/api/{TENANT_ID}/project/{PROJECT_ID}/load'
        response = requests.get(url, headers=self.headers)
        response.raise_for_status()
        return response.json()

    def list_notebooks(self, investigation_id):
        """調査内のすべてのノートブックを一覧表示します。"""
        url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/investigation/{investigation_id}/notebooks'
        response = requests.get(url, headers=self.headers)
        response.raise_for_status()
        return response.json()

    def get_main_notebook(self, investigation_id):
        """調査のメインノートブックを取得します。"""
        url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/investigation/{investigation_id}/main-notebook'
        response = requests.get(url, headers=self.headers)
        response.raise_for_status()
        return response.json()

# 使用例
accessor = NotebookAccessor('your-auth-token')
investigation_id = '11111111-2222-3333-4444-555555555555'

# ステップ1: プロジェクトをキャッシュにロード
print("プロジェクトをキャッシュにロード中...")
load_result = accessor.load_project()
print(f"プロジェクトがロードされました: {load_result['projectName']}")

# ステップ2: ノートブック一覧取得
notebooks = accessor.list_notebooks(investigation_id)
print(f"\n{notebooks['totalCount']}件のノートブックが見つかりました:")

for nb in notebooks['notebooks']:
    print(f"  - {nb['name']}: {nb['blockCount']} ブロック")

# メインノートブック取得
main = accessor.get_main_notebook(investigation_id)
print(f"\nメインノートブック: {main['name']} ({main['blockCount']} ブロック)")

JavaScript/Node.js

const TENANT_ID = '12345678-1234-1234-1234-123456789012';
const PROJECT_ID = '87654321-4321-4321-4321-210987654321';
const BASE_URL = 'https://your-mindzie-instance.com';

class NotebookAccessor {
  constructor(token) {
    this.headers = {
      'Authorization': `Bearer ${token}`,
      'Content-Type': 'application/json'
    };
  }

  async loadProject() {
    const url = `${BASE_URL}/api/${TENANT_ID}/project/${PROJECT_ID}/load`;
    const response = await fetch(url, { headers: this.headers });
    if (!response.ok) throw new Error(`Failed: ${response.status}`);
    return await response.json();
  }

  async listNotebooks(investigationId) {
    const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/investigation/${investigationId}/notebooks`;
    const response = await fetch(url, { headers: this.headers });
    if (!response.ok) throw new Error(`Failed: ${response.status}`);
    return await response.json();
  }

  async getMainNotebook(investigationId) {
    const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/investigation/${investigationId}/main-notebook`;
    const response = await fetch(url, { headers: this.headers });
    if (!response.ok) throw new Error(`Failed: ${response.status}`);
    return await response.json();
  }
}

// 使用例
const accessor = new NotebookAccessor('your-auth-token');
const investigationId = '11111111-2222-3333-4444-555555555555';

// ステップ1: プロジェクトをキャッシュにロード
console.log('プロジェクトをキャッシュにロード中...');
const loadResult = await accessor.loadProject();
console.log(`プロジェクトがロードされました: ${loadResult.projectName}`);

// ステップ2: ノートブック一覧取得
const notebooks = await accessor.listNotebooks(investigationId);
console.log(`\n${notebooks.totalCount}件のノートブックが見つかりました:`);

notebooks.notebooks.forEach(nb => {
  console.log(`  - ${nb.name}: ${nb.blockCount} ブロック`);
});

// メインノートブック取得
const main = await accessor.getMainNotebook(investigationId);
console.log(`\nメインノートブック: ${main.name} (${main.blockCount} ブロック)`);

ベストプラクティス

  1. 必ず最初にプロジェクトをロードする: ノートブックにアクセスする前にプロジェクトをキャッシュにロードしてください
  2. キャッシュの有効期間: プロジェクトは最後のアクセスから30分間キャッシュに残ります
  3. セッションの延長: API呼び出しは自動的にキャッシュの有効期間を延長します
  4. メインノートブックを利用する: 基本的な分析にはメインノートブックが主要なワークフローを含みます
  5. ノートブックの順序: ノートブックはnotebookOrderによって表示順が一定に保たれます