{"name":"Inventory Plus API","version":"2.0.0","endpoints":{"health":{"GET  \/api\/v1\/health":"Health check (connection + database status)"},"auth":{"POST \/api\/v1\/auth\/register":"Register a new user","POST \/api\/v1\/auth\/login":"Login and receive JWT token","POST \/api\/v1\/auth\/refresh":"Rotate refresh token and issue new access token","POST \/api\/v1\/auth\/forgot-password":"Create password reset token for an email address","POST \/api\/v1\/auth\/reset-password":"Set a new password using a reset token","POST \/api\/v1\/auth\/change-password":"Change password for the authenticated user","GET  \/api\/v1\/auth\/me":"Get current user profile"},"admin_users":{"GET \/api\/v1\/admin\/users\/pending":"List pending users (admin only)","PUT \/api\/v1\/admin\/users\/{id}\/approve":"Approve pending user (admin only)","DELETE \/api\/v1\/admin\/users\/{id}":"Delete pending user (admin only)"},"items":{"GET    \/api\/v1\/items":"List items (query: ?parent_id=null|{id})","POST   \/api\/v1\/items":"Create item","GET    \/api\/v1\/items\/{id}":"Get item with tags and category","GET    \/api\/v1\/items\/{id}\/all":"Get item aggregate (item, children, tags, attachments, comments, tasks, shares)","PUT    \/api\/v1\/items\/{id}":"Update item","DELETE \/api\/v1\/items\/{id}":"Delete item","GET    \/api\/v1\/items\/{id}\/children":"Get direct child items","POST   \/api\/v1\/items\/{id}\/signature":"Upload signature image (multipart, field: signature)","DELETE \/api\/v1\/items\/{id}\/signature":"Remove signature image"},"item_tags":{"GET    \/api\/v1\/items\/{id}\/tags":"List tags on item","POST   \/api\/v1\/items\/{id}\/tags":"Assign tag(s): {tag_id} or {tag_ids:[]}","DELETE \/api\/v1\/items\/{id}\/tags\/{tag_id}":"Remove tag from item"},"item_attachments":{"GET    \/api\/v1\/items\/{id}\/attachments":"List attachments","POST   \/api\/v1\/items\/{id}\/attachments":"Upload file (multipart, field: file)","DELETE \/api\/v1\/items\/{id}\/attachments\/{att_id}":"Delete attachment","GET    \/api\/v1\/attachments\/{id}\/download":"Download\/view attachment"},"item_comments":{"GET    \/api\/v1\/items\/{id}\/comments":"List comments","POST   \/api\/v1\/items\/{id}\/comments":"Create comment (types: purchase_journey, maintenance, defect, general)","PUT    \/api\/v1\/items\/{id}\/comments\/{comment_id}":"Update comment","DELETE \/api\/v1\/items\/{id}\/comments\/{comment_id}":"Delete comment"},"item_tasks":{"GET    \/api\/v1\/items\/{id}\/tasks":"List tasks","POST   \/api\/v1\/items\/{id}\/tasks":"Create task (supports assigned_user_id, recurrence_type, recurrence_interval, recurrence_until and notification_datetime)","PUT    \/api\/v1\/items\/{id}\/tasks\/{task_id}":"Update task, including recurrence metadata","PUT    \/api\/v1\/items\/{id}\/tasks\/{task_id}\/reassign":"Reassign task to another active user in the same shared item tree","DELETE \/api\/v1\/items\/{id}\/tasks\/{task_id}":"Delete task"},"notifications":{"GET    \/api\/v1\/notifications":"List notifications for the authenticated user","PUT    \/api\/v1\/notifications\/{id}\/handled":"Mark a notification as handled","GET    \/api\/v1\/notifications\/subscriptions":"List push-device subscriptions for the authenticated user","POST   \/api\/v1\/notifications\/subscriptions":"Upsert push-device subscription: {platform, device_identifier, device_token, device_name?}","DELETE \/api\/v1\/notifications\/subscriptions\/{id}":"Delete a push-device subscription"},"item_shares":{"GET    \/api\/v1\/items\/{id}\/shares":"List shares for a top-level item (project owner only)","POST   \/api\/v1\/items\/{id}\/shares":"Share item tree with user: {shared_with_user_id, permission:view|edit}","POST   \/api\/v1\/items\/{id}\/shares\/by-email":"Share top-level item tree by email: {email, share_level:view|edit}","DELETE \/api\/v1\/items\/{id}\/shares\/{shared_user_id}":"Revoke item share"},"dashboard":{"GET    \/api\/v1\/dashboard\/home":"Dashboard payload with top-level items, tasks and comments"},"categories":{"GET    \/api\/v1\/categories":"List categories as nested tree","POST   \/api\/v1\/categories":"Create category","GET    \/api\/v1\/categories\/{id}":"Get category","PUT    \/api\/v1\/categories\/{id}":"Update category","DELETE \/api\/v1\/categories\/{id}":"Delete category","POST   \/api\/v1\/categories\/{id}\/signature":"Upload signature image (multipart, field: signature)","DELETE \/api\/v1\/categories\/{id}\/signature":"Remove signature image"},"tags":{"GET    \/api\/v1\/tags":"List tags","POST   \/api\/v1\/tags":"Create tag","GET    \/api\/v1\/tags\/{id}":"Get tag","PUT    \/api\/v1\/tags\/{id}":"Update tag","DELETE \/api\/v1\/tags\/{id}":"Delete tag"}},"item_fields":{"name":"string (required)","description":"string (optional)","color":"string|null (optional) \u2014 hex color code like #A1B2C3","parent_id":"int|null \u2014 parent item for hierarchy","category_id":"int|null \u2014 assigned category","geo_lat":"decimal|null \u2014 latitude","geo_lng":"decimal|null \u2014 longitude","geo_height":"decimal|null \u2014 height above ground in metres"},"notes":{"auth":"All endpoints except \/api\/v1\/health, \/api\/v1\/auth\/register, \/api\/v1\/auth\/login and \/api\/v1\/auth\/refresh require Authorization: Bearer {token}","roles":"Admins can approve pending users. Item data access is scoped to owned or shared top-level item trees, and top-level item owners manage project sharing.","files":"Allowed photos: jpeg, png, gif, webp, heic. Documents: pdf, doc, docx, xls, xlsx, txt, csv"}}