Docs lokalne API

Minimalna dokumentacja do pracy bez dostępu do kodu źródłowego.

# BAZA URL
http://127.0.0.1:8000

# AUTORYZACJA (opcjonalna)
Jeśli serwer ma ustawione API_AUTH_TOKEN, do /api/* dodaj:
- X-API-Key: TWÓJ_TOKEN
  albo
- Authorization: Bearer TWÓJ_TOKEN

# ENDPOINTY RECIPE
GET /api/recipes?search=...
GET /api/recipes/{id}
POST /api/recipes
PUT /api/recipes/{id}
DELETE /api/recipes/{id}

Payload POST/PUT /api/recipes:
{
  "title": "string (1-255)",
  "ingredients": "string, min 1 znak",
  "instructions": "string, min 1 znak",
  "source_url": "string|null, max 2048",
  "channel_name": "string|null, max 255",
  "tags": "string|null, max 512"
}

Response POST/PUT/GET:
{
  "id": 123,
  "title": "...",
  "ingredients": "...",
  "instructions": "...",
  "source_url": "...",
  "channel_name": "...",
  "tags": "..."
}

# ENDPOINT YOUTUBE
POST /api/youtube/transcript
{
  "video_id": "fjjp0-YvZKU"
}

Response:
{
  "video_id": "fjjp0-YvZKU",
  "title": "string",
  "channel_name": "string|null",
  "transcript": "string"
}

# TYPY BŁĘDÓW
401 /api/*:
- Brak lub zły API key

404 /api/youtube/transcript:
- Brak filmu lub brak dostępnej transkrypcji

429 /api/*:
- Przekroczony limit zapytań (Retry-After w nagłówku)

503 /api/youtube/transcript:
- YouTube blokuje bieżące IP

# UŻYCIE ZE SKILLEM
Podstrona /skill zakłada ten przepływ:
1) URL/ID YouTube -> video_id
2) POST /api/youtube/transcript
3) Z transkrypcji budowa krótkiego przepisu
4) POST /api/recipes