# =============================================================================
# nanobot OpenAI-Compatible API — curl examples
# =============================================================================
#
# Prerequisites:
#   pip install nanobot-ai[api]    # installs aiohttp
#   nanobot serve --port 8900      # start the API server
#
# The x-session-key header is REQUIRED for every request.
# Convention:
#   Private chat:  wx:dm:{sender_id}
#   Group @:       wx:group:{group_id}:user:{sender_id}
# =============================================================================

# --- 1. Basic chat completion (private chat) ---

curl -X POST http://localhost:8900/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "x-session-key: wx:dm:user_alice" \
  -d '{
    "model": "nanobot",
    "messages": [
      {"role": "user", "content": "Hello, who are you?"}
    ]
  }'

# --- 2. Follow-up in the same session (context is remembered) ---

curl -X POST http://localhost:8900/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "x-session-key: wx:dm:user_alice" \
  -d '{
    "model": "nanobot",
    "messages": [
      {"role": "user", "content": "What did I just ask you?"}
    ]
  }'

# --- 3. Different user — isolated session ---

curl -X POST http://localhost:8900/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "x-session-key: wx:dm:user_bob" \
  -d '{
    "model": "nanobot",
    "messages": [
      {"role": "user", "content": "What did I just ask you?"}
    ]
  }'
# ↑ Bob gets a fresh context — he never asked anything before.

# --- 4. Group chat — per-user session within a group ---

curl -X POST http://localhost:8900/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "x-session-key: wx:group:group_abc:user:user_alice" \
  -d '{
    "model": "nanobot",
    "messages": [
      {"role": "user", "content": "Summarize our discussion"}
    ]
  }'

# --- 5. List available models ---

curl http://localhost:8900/v1/models

# --- 6. Health check ---

curl http://localhost:8900/health

# --- 7. Missing header — expect 400 ---

curl -X POST http://localhost:8900/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nanobot",
    "messages": [
      {"role": "user", "content": "hello"}
    ]
  }'
# ↑ Returns: {"error": {"message": "Missing required header: x-session-key", ...}}

# --- 8. Stream not yet supported — expect 400 ---

curl -X POST http://localhost:8900/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "x-session-key: wx:dm:user_alice" \
  -d '{
    "model": "nanobot",
    "messages": [
      {"role": "user", "content": "hello"}
    ],
    "stream": true
  }'
# ↑ Returns: {"error": {"message": "stream=true is not supported yet...", ...}}
