{"version":"1.0.0","base_url":"/api/v1","authentication":{"type":"Bearer token","header":"Authorization: Bearer elk_...","description":"Generate API keys in the app under Einstellungen → Entwickler-API."},"scopes":{"lists:read":"Read all lists and shared lists","lists:write":"Create, update, delete lists","items:read":"Read items within accessible lists","items:write":"Create, update, delete items"},"endpoints":[{"method":"GET","path":"/api/v1/lists","scopes":["lists:read"],"description":"Get all owned and shared lists","response":"{ data: { owned: List[], shared: List[] } }"},{"method":"POST","path":"/api/v1/lists","scopes":["lists:write"],"description":"Create a new list","body":"{ name: string, store?: string, color?: string }","response":"{ data: List }"},{"method":"GET","path":"/api/v1/lists/:id","scopes":["lists:read"],"description":"Get a list with all its items","response":"{ data: List & { items: Item[] } }"},{"method":"PATCH","path":"/api/v1/lists/:id","scopes":["lists:write"],"description":"Update list metadata (owner only)","body":"{ name?: string, store?: string, color?: string }"},{"method":"DELETE","path":"/api/v1/lists/:id","scopes":["lists:write"],"description":"Delete a list (owner only)"},{"method":"POST","path":"/api/v1/lists/:id/items","scopes":["items:write"],"description":"Add items to a list. Accepts single item or { items: [...] } array.","body":"{ name: string, quantity?: number, unit?: string, category?: string, note?: string } | { items: [...] }","response":"{ data: Item[] }"},{"method":"PATCH","path":"/api/v1/items/:id","scopes":["items:write"],"description":"Update an item","body":"{ name?, quantity?, unit?, category?, note?, checked? }"},{"method":"DELETE","path":"/api/v1/items/:id","scopes":["items:write"],"description":"Delete an item"}],"example":{"curl":"curl https://einkaufsliste.app/api/v1/lists \\\n  -H \"Authorization: Bearer elk_your_key_here\"","javascript":"const res = await fetch('https://einkaufsliste.app/api/v1/lists', {\n  headers: { 'Authorization': 'Bearer elk_your_key_here' }\n});\nconst { data } = await res.json();"}}