개요
페르소나의 세션 라이프사이클을 관리합니다. 상태 라벨은 테넌트가 자유롭게 정의하며, 각 전이마다 타임스탬프가 기록됩니다.입장 → CHAT → SHOPPING → PAYMENT → COMPLETE → 퇴장
↑ ↑ ↑ ↑ ↑ ↑
t1 t2 t3 t4 t5 t6
세션 시작
POST /v1/persona/{persona_id}/session/start
응답
{
"success": true,
"data": {
"session_id": "a1b2c3d4-...",
"persona_id": "d28fd898-...",
"started_at": "2026-04-17T10:00:00Z"
}
}
페르소나당 활성 세션은 1개만 허용됩니다. 이미 활성 세션이 있으면
409 SESSION_ACTIVE가 반환됩니다.상태 스탬프 기록
POST /v1/persona/{persona_id}/session/stamp
요청
{
"status": "SHOPPING",
"meta": {
"zone": "processed_food",
"cart_items": 3
}
}
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
status | string | O | 상태 라벨 (테넌트 자유 정의) |
meta | object | X | 상태 관련 추가 데이터 |
응답
{
"success": true,
"data": {
"session_id": "a1b2c3d4-...",
"status": "SHOPPING",
"timestamp": "2026-04-17T10:05:00Z"
}
}
세션 종료
POST /v1/persona/{persona_id}/session/end
응답
{
"success": true,
"data": {
"session_id": "a1b2c3d4-...",
"persona_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/persona/{persona_id}/session
코드 예제
# 세션 시작
curl -X POST https://api.ones1ght.com/v1/persona/$PERSONA_ID/session/start \
-H "Authorization: Bearer $SDK_KEY"
# 상태 스탬프
curl -X POST https://api.ones1ght.com/v1/persona/$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/persona/$PERSONA_ID/session \
-H "Authorization: Bearer $SDK_KEY"
# 세션 종료
curl -X POST https://api.ones1ght.com/v1/persona/$PERSONA_ID/session/end \
-H "Authorization: Bearer $SDK_KEY"