メインコンテンツへスキップ

概要

プロフィールのセッションライフサイクルを管理します。ステータスラベルはテナントが自由に定義し、各遷移ごとにタイムスタンプが記録されます。
入場 → CHAT → SHOPPING → PAYMENT → COMPLETE → 退場
 ↑       ↑        ↑          ↑         ↑        ↑
 t1      t2       t3         t4        t5       t6

セッション開始

POST /v1/profile/{profile_id}/session/start

レスポンス

{
  "success": true,
  "data": {
    "session_id": "a1b2c3d4-...",
    "profile_id": "d28fd898-...",
    "started_at": "2026-04-17T10:00:00Z"
  }
}
プロフィールごとに有効なセッションは1つのみ許可されます。すでに有効なセッションがある場合、409 SESSION_ACTIVEが返されます。

ステータススタンプ記録

POST /v1/profile/{profile_id}/session/stamp

リクエスト

{
  "status": "SHOPPING",
  "meta": {
    "zone": "processed_food",
    "cart_items": 3
  }
}
フィールドタイプ必須説明
statusstringOステータスラベル(テナント自由定義)
metaobjectXステータス関連の追加データ

レスポンス

{
  "success": true,
  "data": {
    "session_id": "a1b2c3d4-...",
    "status": "SHOPPING",
    "timestamp": "2026-04-17T10:05:00Z"
  }
}

セッション終了

POST /v1/profile/{profile_id}/session/end
セッションを終了し、全スタンプ履歴を返します。

レスポンス

{
  "success": true,
  "data": {
    "session_id": "a1b2c3d4-...",
    "profile_id": "d28fd898-...",
    "started_at": "2026-04-17T10:00:00Z",
    "ended_at": "2026-04-17T11:30:00Z",
    "stamps": [
      { "status": "ENTER", "timestamp": "2026-04-17T10:00:00Z" },
      { "status": "CHAT", "timestamp": "2026-04-17T10:02:00Z" },
      { "status": "SHOPPING", "timestamp": "2026-04-17T10:15:00Z" },
      { "status": "PAYMENT", "timestamp": "2026-04-17T11:20:00Z" },
      { "status": "COMPLETE", "timestamp": "2026-04-17T11:25:00Z" }
    ]
  }
}

現在のセッション取得

GET /v1/profile/{profile_id}/session
有効なセッションと現在までのスタンプ履歴を返します。

レスポンス

{
  "success": true,
  "data": {
    "session_id": "a1b2c3d4-...",
    "profile_id": "d28fd898-...",
    "is_active": true,
    "started_at": "2026-04-20T10:00:00Z",
    "current_stage": "CHAT",
    "current_thread_id": "thr_a1b2c3d4e5f6",
    "stamps": [
      { "status": "READY", "timestamp": "2026-04-20T10:00:00Z" },
      { "status": "CHAT",  "timestamp": "2026-04-20T10:02:00Z" }
    ],
    "query_results": {
      "session": { "status": "CHAT", "back_list_status": "not_started", "last_error": null }
    }
  }
}
フィールド説明
current_stage最新スタンプ (再入画面のルーティング基準)
current_thread_idcurrent_stage == "CHAT" の時のみアクティブスレッド ID、その他は null
query_results.sessionPOST /v1/chat/{profile_id} 呼び出し後にのみ含まれる。llm-demo 側の最新 status / back_list_status / last_error を軽量に返却。フルパイプラインは GET /v1/chat/{profile_id}/recommend/{session_id} ポーリング経由

コード例

# セッション開始
curl -X POST https://api.ones1ght.com/v1/profile/$PERSONA_ID/session/start \
  -H "Authorization: Bearer $SDK_KEY"

# ステータススタンプ
curl -X POST https://api.ones1ght.com/v1/profile/$PERSONA_ID/session/stamp \
  -H "Authorization: Bearer $SDK_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status": "SHOPPING", "meta": {"zone": "wine"}}'

# 現在のセッション取得
curl https://api.ones1ght.com/v1/profile/$PERSONA_ID/session \
  -H "Authorization: Bearer $SDK_KEY"

# セッション終了
curl -X POST https://api.ones1ght.com/v1/profile/$PERSONA_ID/session/end \
  -H "Authorization: Bearer $SDK_KEY"