{"openapi":"3.1.0","info":{"title":"Nibvine API","version":"1.0.0","summary":"One project brain, readable by every AI tool you use.","description":"Complete REST surface for Nibvine: projects, the hierarchical note tree, tasks, ideas, comments, quick notes, AI analyses, members, invite links, public sharing, feedback, LLM providers/keys/usage and the account balance. Two authentication schemes are supported: a Django REST Framework token (`Authorization: Token <key>`) and a scoped external access token (`Authorization: Bearer nbv_...`). List endpoints are page-numbered (20 per page) and accept `search` and `ordering` query parameters where the resource declares them."},"servers":[{"url":"https://nibvine.com"}],"tags":[{"name":"AI analyses"},{"name":"Auth"},{"name":"Comments"},{"name":"Discovery"},{"name":"Feedback"},{"name":"Ideas"},{"name":"Integrations"},{"name":"LLM"},{"name":"MCP"},{"name":"Notes"},{"name":"Project changes"},{"name":"Project invites"},{"name":"Project members"},{"name":"Projects"},{"name":"Public sharing"},{"name":"Quick notes"},{"name":"Tasks"},{"name":"Users"}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"components":{"securitySchemes":{"TokenAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"Django REST Framework auth token. Send `Authorization: Token <key>`. Obtain one from POST /api/auth/token/ with username and password."},"BearerToken":{"type":"http","scheme":"bearer","description":"Scoped Nibvine external access token: `Authorization: Bearer nbv_...`. Tokens carry scopes (mcp:connect, projects:read/write, notes:read/write, tasks:read/write, changes:read) and can be locked to a single project."}},"schemas":{"AiAnalysisAPI":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"project":{"type":"integer"},"type":{"type":"string","enum":["presentation","audience","strategy"]},"content":{"type":"string"},"prompt":{"type":"string"},"prompt_used":{"type":"string"},"input_tokens":{"type":"integer"},"output_tokens":{"type":"integer"},"cost":{"type":"string","format":"decimal"},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["project","type","content","prompt","prompt_used"]},"AuthToken":{"type":"object","properties":{"username":{"type":"string","writeOnly":true},"password":{"type":"string","writeOnly":true},"token":{"type":"string","readOnly":true}},"required":["username","password"]},"CommentAPI":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"project":{"type":["integer","null"]},"note":{"type":["integer","null"]},"parent":{"type":["integer","null"]},"content":{"type":"string"},"role":{"type":"string","enum":["user","assistant","system"]},"metadata":{},"user":{"type":"integer","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["content"]},"ExternalAccessToken":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"project":{"type":["integer","null"],"description":"If null, token has access to all owner's projects (user-level token)."},"project_title":{"readOnly":true},"owner":{"readOnly":true},"scopes":{},"masked_token":{"readOnly":true},"plain_token":{"readOnly":true},"is_active":{"type":"boolean"},"last_used_at":{"type":["string","null"],"format":"date-time","readOnly":true},"expires_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["name"]},"ExternalWriteAction":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"action_type":{"type":"string","enum":["project.create","project.update","project.delete","note.create","note.update","note.delete","note.move","note.reorder","note.import","note.batch_create","task.create","task.update","task.delete","idea.create","idea.update","idea.delete","comment.create","quicknote.create","invite.create","member.remove"]},"status":{"type":"string","enum":["preview","committed","expired","canceled"]},"source":{"type":"string","enum":["api","mcp"]},"summary":{"type":"string"},"project":{"readOnly":true},"preview":{},"result":{},"expires_at":{"type":"string","format":"date-time"},"committed_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["action_type","expires_at"]},"IdeaAPI":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"project":{"type":"integer"},"title":{"type":"string"},"content":{"type":"string"},"is_implemented":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["project","title","content"]},"LLMAnalysis":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"project":{"type":["integer","null"]},"note":{"type":["integer","null"]},"note_title":{"type":"string","readOnly":true},"provider":{"type":["integer","null"]},"provider_name":{"type":"string","readOnly":true},"analysis_type":{"type":"string"},"analysis_type_display":{"readOnly":true},"prompt":{"type":"string"},"response":{"type":"string"},"tokens_used":{"type":"integer","readOnly":true},"cost":{"type":"string","format":"decimal","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"token_usage":{"type":["integer","null"],"readOnly":true}}},"LLMPromptTemplate":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"description":{"type":"string"},"template":{"type":"string"},"provider":{"type":"integer"},"provider_name":{"type":"string","readOnly":true},"is_active":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["name","description","template","provider"]},"LLMProvider":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","enum":["openai","openrouter","grok","gemini"]},"model_name":{"type":"string"},"is_active":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true},"input_token_cost":{"type":"string","format":"decimal","description":"Input token cost"},"output_token_cost":{"type":"string","format":"decimal","description":"Output token cost"},"min_tokens":{"type":"integer","description":"Minimum tokens per request"},"max_tokens":{"type":"integer","description":"Maximum tokens per request"}},"required":["name","model_name"]},"NoteAPI":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"project":{"type":"integer"},"parent":{"type":["integer","null"]},"title":{"type":"string"},"content":{"type":"string"},"type":{"type":"string","enum":["text","heading","image","code","quote"]},"relation_type":{"type":"string","enum":["branch","dependency","reference","what_if","related"]},"depth":{"type":"integer"},"order":{"type":"integer"},"tags":{},"is_public":{"type":"boolean"},"ai_assisted":{"type":"boolean"},"last_ai_generated":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["project","content"]},"NoteMove":{"type":"object","properties":{"parent":{"type":["integer","null"],"description":"New parent note id, or null for root."},"order":{"type":["integer","null"],"description":"Zero based position among siblings. Appends when omitted."}}},"NoteTag":{"type":"object","properties":{"tag":{"type":"string"},"count":{"type":"integer"}},"required":["tag","count"]},"ProjectAPI":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"title":{"type":"string"},"description":{"type":"string"},"goal":{"type":"string"},"vision":{"type":"string","description":"Overall vision and spirit of the project"},"unique_task":{"type":"string","description":"What makes this project unique"},"target_audience":{"type":"string","description":"Who this project is for"},"success_metrics":{"type":"string","description":"Project success criteria"},"category":{"type":"string","enum":["web","mobile","saas","ecommerce","ai_ml"]},"priority":{"type":"string","enum":["low","medium","high"]},"tech_stack":{"description":"Technologies used"},"constraints":{"type":"string","description":"Project constraints (budget, timeline, resources)"},"is_draft":{"type":"boolean","description":"Project in development"},"is_archived":{"type":"boolean","description":"Project completed and archived"},"completion_percentage":{"type":"integer","description":"Project progress estimate (0-100)"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true},"notes_count":{"type":"integer","readOnly":true},"tasks_count":{"type":"integer","readOnly":true},"ideas_count":{"type":"integer","readOnly":true},"comments_count":{"type":"integer","readOnly":true},"members_count":{"type":"integer","readOnly":true},"owner":{"type":"integer","readOnly":true},"slug":{"type":"string","readOnly":true}},"required":["title","description","goal","category"]},"ProjectChangeLog":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"project":{"type":"integer"},"user":{"type":["integer","null"]},"source":{"type":"string","enum":["llm","user","system","invite"]},"summary":{"type":"string"},"changes":{"description":"List of changes in format [{field, from, to}]"},"metadata":{},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["project"]},"ProjectInviteLink":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"project":{"type":"integer"},"token":{"type":"string","readOnly":true},"created_by":{"$ref":"#/components/schemas/UserSummary","readOnly":true},"consumed_by":{"$ref":"#/components/schemas/UserSummary","readOnly":true},"consumed_at":{"type":["string","null"],"format":"date-time","readOnly":true},"is_active":{"type":"boolean"},"is_consumed":{"type":"boolean","readOnly":true},"is_available":{"type":"boolean","readOnly":true},"invite_path":{"readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["project"]},"ProjectMembership":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"project":{"type":"integer"},"user":{"$ref":"#/components/schemas/UserSummary","readOnly":true},"created_by":{"$ref":"#/components/schemas/UserSummary","readOnly":true},"is_active":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true},"user_id":{"type":"integer","writeOnly":true},"username":{"type":"string","writeOnly":true},"email":{"type":"string","format":"email","writeOnly":true}},"required":["project"]},"ProjectPublicSettings":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"project":{"type":"integer","readOnly":true},"is_public":{"type":"boolean","description":"Expose the project via the public share link"},"public_token":{"type":"string","readOnly":true,"description":"Unique token used to construct the public URL"},"public_path":{"readOnly":true},"share_notes":{"type":"boolean","description":"Include selected branches in the public view"},"share_tasks":{"type":"boolean","description":"Show tasks inside the public view"},"share_ideas":{"type":"boolean","description":"Show ideas inside the public view"},"share_analyses":{"type":"boolean","description":"Show AI analyses inside the public view"},"published_notes":{"type":"array","items":{"type":"integer"},"description":"Select root branches that should appear in the public story"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}}},"ProjectStats":{"type":"object","properties":{"project":{"type":"integer"},"notes":{"type":"integer"},"tasks":{"type":"integer"},"tasks_completed":{"type":"integer"},"tasks_open":{"type":"integer"},"tasks_by_status":{"type":"object","additionalProperties":true},"ideas":{"type":"integer"},"ideas_implemented":{"type":"integer"},"comments":{"type":"integer"},"members":{"type":"integer"},"ai_analyses":{"type":"integer"},"changes":{"type":"integer"},"max_note_depth":{"type":"integer"},"root_notes":{"type":"integer"},"completion_percentage":{"type":"integer"},"task_completion_percentage":{"type":"number"},"is_archived":{"type":"boolean"},"is_draft":{"type":"boolean"}},"required":["project","notes","tasks","tasks_completed","tasks_open","tasks_by_status","ideas","ideas_implemented","comments","members","ai_analyses","changes","max_note_depth","root_notes","completion_percentage","task_completion_percentage","is_archived","is_draft"]},"QuickNoteAPI":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"content":{"type":"string"},"status":{"type":"string","enum":["draft","analyzing","ready_for_review","confirmed","saved","cancelled"]},"suggested_project":{"type":["integer","null"]},"suggested_parent_note":{"type":["integer","null"]},"suggested_position":{"description":"JSON with placement details"},"general_summary":{"type":"string","description":"Stage 1: Overview"},"branch_analysis":{"description":"Stage 2: Structure and relationships"},"detailed_analysis":{"description":"Stage 3: Deep dive"},"placement_strategy":{"description":"Why this location was chosen"},"confidence_score":{"type":"number","description":"How confident AI is that this is the right place"},"confirmed_project":{"type":["integer","null"]},"confirmed_parent_note":{"type":["integer","null"]},"saved_note":{"type":["integer","null"]},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true},"analyzed_at":{"type":["string","null"],"format":"date-time"},"confirmed_at":{"type":["string","null"],"format":"date-time"},"tokens_used":{"type":"integer"},"analysis_cost":{"type":"string","format":"decimal"}},"required":["content"]},"ServiceIntegration":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"service_type":{"type":"string","enum":["slack","slack_bot","webhook"]},"config":{},"secret":{"type":"string","writeOnly":true},"masked_secret":{"readOnly":true},"project":{"type":"integer"},"project_title":{"readOnly":true},"owner":{"readOnly":true},"is_active":{"type":"boolean"},"last_notified_at":{"type":["string","null"],"format":"date-time","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["name","project"]},"Suggestion":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"title":{"type":"string"},"description":{"type":"string"},"created_by":{"type":"integer","readOnly":true},"display_name":{"type":"string","readOnly":true},"is_anonymous":{"type":"boolean"},"upvotes":{"type":"integer","readOnly":true},"downvotes":{"type":"integer","readOnly":true},"score":{"readOnly":true},"comment_count":{"type":"integer","readOnly":true},"my_vote":{"readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["title","description"]},"SuggestionComment":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"suggestion":{"type":"integer"},"user":{"type":"integer","readOnly":true},"display_name":{"type":"string","readOnly":true},"body":{"type":"string"},"is_anonymous":{"type":"boolean"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["suggestion","body"]},"SuggestionVote":{"type":"object","properties":{"value":{"type":"string","description":"up / down / 1 / -1. Re-sending the same value clears the vote."}},"required":["value"]},"TaskAPI":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"project":{"type":"integer"},"title":{"type":"string"},"description":{"type":"string"},"priority":{"type":"string","enum":["low","medium","high"]},"status":{"type":"string","enum":["todo","in_progress","review","done"]},"is_completed":{"type":"boolean"},"due_date":{"type":["string","null"],"format":"date"},"assigned_to":{"type":["integer","null"]},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["project","title"]},"TokenTransaction":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"amount":{"type":"string","format":"decimal","readOnly":true},"balance_before":{"type":"string","format":"decimal","readOnly":true},"balance_after":{"type":"string","format":"decimal","readOnly":true},"transaction_type":{"type":"string","enum":["deposit","usage","refund","adjustment"],"readOnly":true},"description":{"type":"string","readOnly":true},"model_used":{"type":"string","readOnly":true},"input_tokens":{"type":"integer","readOnly":true},"output_tokens":{"type":"integer","readOnly":true},"request_uuid":{"type":["string","null"],"format":"uuid","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true}}},"TokenUsage":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"provider":{"type":["integer","null"],"readOnly":true},"provider_name":{"type":"string","readOnly":true},"project":{"type":["integer","null"],"readOnly":true},"project_title":{"type":"string","readOnly":true},"note":{"type":["integer","null"],"readOnly":true},"note_title":{"type":"string","readOnly":true},"model_name":{"type":"string","readOnly":true},"operation":{"type":"string","enum":["chat","note_analysis","project_analysis","quicknote","summary","reasoning","external_response","tree_operation","other"],"readOnly":true},"input_tokens":{"type":"integer","readOnly":true},"output_tokens":{"type":"integer","readOnly":true},"total_tokens":{"type":"integer","readOnly":true},"total_cost":{"type":"string","format":"decimal","readOnly":true},"key_source":{"type":"string","enum":["system","byok"],"readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true}}},"UserAPIKey":{"type":"object","additionalProperties":true},"UserAPIKeyCreate":{"type":"object","properties":{"provider":{"type":"string","enum":["openai","openrouter","grok","gemini"]},"api_key":{"type":"string","writeOnly":true},"expires_in_days":{"type":"integer","writeOnly":true}},"required":["provider","api_key"]},"UserAPIKeyRotate":{"type":"object","properties":{"new_key":{"type":"string","writeOnly":true,"description":"New API key"}},"required":["new_key"]},"UserAPIKeyUpdate":{"type":"object","properties":{"api_key":{"type":"string","writeOnly":true},"is_active":{"type":"boolean"}}},"UserSummary":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"username":{"type":"string","readOnly":true,"description":"Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only."},"email":{"type":"string","format":"email","readOnly":true},"first_name":{"type":"string","readOnly":true},"last_name":{"type":"string","readOnly":true}}}}},"paths":{"/.well-known/nibvine-ai.json":{"get":{"operationId":"get_nibvine_ai_manifest_get","summary":"GET nibvine ai manifest","tags":["Discovery"],"parameters":[],"security":[],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/":{"get":{"operationId":"get_api_root_get","summary":"The default basic root view for DefaultRouter","tags":["Other"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/ai-analyses/":{"get":{"operationId":"get_ai_analyses_list_list","summary":"List ai analyses","tags":["AI analyses"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"project","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to one project."},{"name":"type","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by analysis type."},{"name":"search","in":"query","required":false,"schema":{"type":"string"},"description":"Free text search over content and prompt."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by any of the ordering fields, '-' to reverse."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Stored AI analyses (presentation / audience / strategy).","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/AiAnalysisAPI"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_ai_analyses_list_create","summary":"Create a ai analyse","tags":["AI analyses"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Stored AI analyses (presentation / audience / strategy).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiAnalysisAPI"}}}},"responses":{"201":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiAnalysisAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/ai-analyses/{pk}/":{"get":{"operationId":"get_ai_analyses_detail_retrieve","summary":"Get one ai analyse","tags":["AI analyses"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Stored AI analyses (presentation / audience / strategy).","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiAnalysisAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_ai_analyses_detail_update","summary":"Replace a ai analyse","tags":["AI analyses"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Stored AI analyses (presentation / audience / strategy).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiAnalysisAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiAnalysisAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_ai_analyses_detail_partial_update","summary":"Update a ai analyse","tags":["AI analyses"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Stored AI analyses (presentation / audience / strategy).","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiAnalysisAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiAnalysisAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"delete":{"operationId":"delete_ai_analyses_detail_destroy","summary":"Delete a ai analyse","tags":["AI analyses"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Stored AI analyses (presentation / audience / strategy).","responses":{"204":{"description":"Deleted."},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/auth/token/":{"post":{"operationId":"post_api_auth_token_post","summary":"POST /api/auth/token/","tags":["Auth"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthToken"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthToken"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/comments/":{"get":{"operationId":"get_comments_list_list","summary":"List comments","tags":["Comments"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"project","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to one project."},{"name":"note","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to one note."},{"name":"parent","in":"query","required":false,"schema":{"type":"integer"},"description":"Direct replies of this comment; empty value = roots."},{"name":"role","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by role (user/assistant/system)."},{"name":"search","in":"query","required":false,"schema":{"type":"string"},"description":"Free text search over comment content."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by any of the ordering fields, '-' to reverse."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Unified user + AI comment stream.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/CommentAPI"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_comments_list_create","summary":"Create a comment","tags":["Comments"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Unified user + AI comment stream.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentAPI"}}}},"responses":{"201":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/comments/{pk}/":{"get":{"operationId":"get_comments_detail_retrieve","summary":"Get one comment","tags":["Comments"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Unified user + AI comment stream.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_comments_detail_update","summary":"Replace a comment","tags":["Comments"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Unified user + AI comment stream.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_comments_detail_partial_update","summary":"Update a comment","tags":["Comments"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Unified user + AI comment stream.","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"delete":{"operationId":"delete_comments_detail_destroy","summary":"Delete a comment","tags":["Comments"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Unified user + AI comment stream.","responses":{"204":{"description":"Deleted."},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/comments/{pk}/thread/":{"get":{"operationId":"get_comments_thread_thread","summary":"The comment plus every reply beneath it, oldest first.","tags":["Comments"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Unified user + AI comment stream.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/feedback/":{"get":{"operationId":"get_api_root_get","summary":"The default basic root view for DefaultRouter","tags":["Feedback"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/feedback/suggestion-comments/":{"get":{"operationId":"get_suggestion_comments_list_list","summary":"List suggestion comments","tags":["Feedback"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"suggestion","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to one suggestion."},{"name":"mine","in":"query","required":false,"schema":{"type":"boolean"},"description":"Only comments you wrote."},{"name":"search","in":"query","required":false,"schema":{"type":"string"},"description":"Free text search over the comment body."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by created_at or updated_at."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Comments on suggestions. Authors edit and delete their own.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/SuggestionComment"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_suggestion_comments_list_create","summary":"Create a suggestion comment","tags":["Feedback"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Comments on suggestions. Authors edit and delete their own.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestionComment"}}}},"responses":{"201":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestionComment"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/feedback/suggestion-comments/{pk}/":{"get":{"operationId":"get_suggestion_comments_detail_retrieve","summary":"Get one suggestion comment","tags":["Feedback"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Comments on suggestions. Authors edit and delete their own.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestionComment"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_suggestion_comments_detail_update","summary":"Replace a suggestion comment","tags":["Feedback"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Comments on suggestions. Authors edit and delete their own.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestionComment"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestionComment"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_suggestion_comments_detail_partial_update","summary":"Update a suggestion comment","tags":["Feedback"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Comments on suggestions. Authors edit and delete their own.","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestionComment"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestionComment"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"delete":{"operationId":"delete_suggestion_comments_detail_destroy","summary":"Delete a suggestion comment","tags":["Feedback"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Comments on suggestions. Authors edit and delete their own.","responses":{"204":{"description":"Deleted."},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/feedback/suggestions/":{"get":{"operationId":"get_suggestions_list_list","summary":"List suggestions","tags":["Feedback"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"mine","in":"query","required":false,"schema":{"type":"boolean"},"description":"Only suggestions you created."},{"name":"search","in":"query","required":false,"schema":{"type":"string"},"description":"Free text search over title and description."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by created_at, updated_at or title."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Product suggestions. Everyone authenticated reads, authors edit their own.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/Suggestion"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_suggestions_list_create","summary":"Create a suggestion","tags":["Feedback"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Product suggestions. Everyone authenticated reads, authors edit their own.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Suggestion"}}}},"responses":{"201":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Suggestion"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/feedback/suggestions/{pk}/":{"get":{"operationId":"get_suggestions_detail_retrieve","summary":"Get one suggestion","tags":["Feedback"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Product suggestions. Everyone authenticated reads, authors edit their own.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Suggestion"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_suggestions_detail_update","summary":"Replace a suggestion","tags":["Feedback"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Product suggestions. Everyone authenticated reads, authors edit their own.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Suggestion"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Suggestion"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_suggestions_detail_partial_update","summary":"Update a suggestion","tags":["Feedback"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Product suggestions. Everyone authenticated reads, authors edit their own.","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Suggestion"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Suggestion"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"delete":{"operationId":"delete_suggestions_detail_destroy","summary":"Delete a suggestion","tags":["Feedback"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Product suggestions. Everyone authenticated reads, authors edit their own.","responses":{"204":{"description":"Deleted."},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/feedback/suggestions/{pk}/comments/":{"get":{"operationId":"get_suggestions_comments_comments","summary":"List or add comments on one suggestion.","tags":["Feedback"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Product suggestions. Everyone authenticated reads, authors edit their own.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestionComment"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_suggestions_comments_comments","summary":"List or add comments on one suggestion.","tags":["Feedback"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Product suggestions. Everyone authenticated reads, authors edit their own.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestionComment"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestionComment"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/feedback/suggestions/{pk}/vote/":{"post":{"operationId":"post_suggestions_vote_vote","summary":"Cast, change or clear your vote on a suggestion.","tags":["Feedback"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Product suggestions. Everyone authenticated reads, authors edit their own.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestionVote"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestionVote"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/ideas/":{"get":{"operationId":"get_ideas_list_list","summary":"List ideas","tags":["Ideas"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"project","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to one project."},{"name":"is_implemented","in":"query","required":false,"schema":{"type":"boolean"},"description":"Filter by implementation flag."},{"name":"search","in":"query","required":false,"schema":{"type":"string"},"description":"Free text search over title and content."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by any of the ordering fields, '-' to reverse."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Project ideas.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/IdeaAPI"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_ideas_list_create","summary":"Create a idea","tags":["Ideas"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Project ideas.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaAPI"}}}},"responses":{"201":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/ideas/{pk}/":{"get":{"operationId":"get_ideas_detail_retrieve","summary":"Get one idea","tags":["Ideas"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Project ideas.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_ideas_detail_update","summary":"Replace a idea","tags":["Ideas"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Project ideas.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_ideas_detail_partial_update","summary":"Update a idea","tags":["Ideas"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Project ideas.","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"delete":{"operationId":"delete_ideas_detail_destroy","summary":"Delete a idea","tags":["Ideas"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Project ideas.","responses":{"204":{"description":"Deleted."},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/ideas/{pk}/implement/":{"post":{"operationId":"post_ideas_implement_implement","summary":"Mark the idea implemented (send ``{\"is_implemented\": false}`` to undo).","tags":["Ideas"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Project ideas.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/integrations/":{"get":{"operationId":"get_api_root_get","summary":"The default basic root view for DefaultRouter","tags":["Integrations"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/integrations/access-tokens/":{"get":{"operationId":"get_externalaccesstoken_list_list","summary":"List access tokens","tags":["Integrations"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/ExternalAccessToken"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_externalaccesstoken_list_create","summary":"Create a access token","tags":["Integrations"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAccessToken"}}}},"responses":{"201":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAccessToken"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/integrations/access-tokens/{pk}/":{"get":{"operationId":"get_externalaccesstoken_detail_retrieve","summary":"Get one access token","tags":["Integrations"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAccessToken"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_externalaccesstoken_detail_update","summary":"Replace a access token","tags":["Integrations"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAccessToken"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAccessToken"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_externalaccesstoken_detail_partial_update","summary":"Update a access token","tags":["Integrations"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAccessToken"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAccessToken"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"delete":{"operationId":"delete_externalaccesstoken_detail_destroy","summary":"Delete a access token","tags":["Integrations"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"204":{"description":"Deleted."},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/integrations/connect-presets/":{"get":{"operationId":"get_connect_presets_get","summary":"GET connect presets","tags":["Integrations"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/integrations/connect-presets/generate/":{"post":{"operationId":"post_connect_presets_generate_post","summary":"POST connect presets generate","tags":["Integrations"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/integrations/quick-connect/":{"get":{"operationId":"get_quick_connect_get","summary":"One-shot endpoint: creates a token and returns a ready-to-run CLI command.","tags":["Integrations"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"One-shot endpoint: creates a token and returns a ready-to-run CLI command. GET /api/integrations/quick-connect/?project=<id> — project-scoped token GET /api/integrations/quick-connect/?scope=user — user-level token (all projects) POST /api/integrations/quick-connect/ {\"project_id\": <id>} Returns plain-text CLI command or JSON with .mcp.json content.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_quick_connect_post","summary":"One-shot endpoint: creates a token and returns a ready-to-run CLI command.","tags":["Integrations"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"One-shot endpoint: creates a token and returns a ready-to-run CLI command. GET /api/integrations/quick-connect/?project=<id> — project-scoped token GET /api/integrations/quick-connect/?scope=user — user-level token (all projects) POST /api/integrations/quick-connect/ {\"project_id\": <id>} Returns plain-text CLI command or JSON with .mcp.json content.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/integrations/service-integrations/":{"get":{"operationId":"get_serviceintegration_list_list","summary":"List service integrations","tags":["Integrations"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/ServiceIntegration"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_serviceintegration_list_create","summary":"Create a service integration","tags":["Integrations"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceIntegration"}}}},"responses":{"201":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceIntegration"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/integrations/service-integrations/{pk}/":{"get":{"operationId":"get_serviceintegration_detail_retrieve","summary":"Get one service integration","tags":["Integrations"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceIntegration"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_serviceintegration_detail_update","summary":"Replace a service integration","tags":["Integrations"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceIntegration"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceIntegration"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_serviceintegration_detail_partial_update","summary":"Update a service integration","tags":["Integrations"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceIntegration"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceIntegration"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"delete":{"operationId":"delete_serviceintegration_detail_destroy","summary":"Delete a service integration","tags":["Integrations"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"204":{"description":"Deleted."},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/integrations/service-integrations/{pk}/test-connection/":{"post":{"operationId":"post_serviceintegration_test_connection_test_connection","summary":"POST serviceintegration test connection","tags":["Integrations"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceIntegration"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceIntegration"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/integrations/setup-script/":{"get":{"operationId":"get_setup_script_get","summary":"Returns a bash script that installs the /nibvine skill and global MCP server.","tags":["Integrations"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Returns a bash script that installs the /nibvine skill and global MCP server. GET /api/integrations/setup-script/ Requires session or token auth. The script is personalized with the user's token.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/integrations/skill/{filename}":{"get":{"operationId":"get_skill_file_get","summary":"Serves the /nibvine skill markdown file (public, no auth needed).","tags":["Integrations"],"parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `filename`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/integrations/write-actions/":{"get":{"operationId":"get_externalwriteaction_list_list","summary":"List write actions","tags":["Integrations"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/ExternalWriteAction"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/integrations/write-actions/preview/":{"post":{"operationId":"post_externalwriteaction_preview_preview","summary":"POST externalwriteaction preview","tags":["Integrations"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalWriteAction"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalWriteAction"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/integrations/write-actions/{pk}/":{"get":{"operationId":"get_externalwriteaction_detail_retrieve","summary":"Get one write action","tags":["Integrations"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalWriteAction"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/integrations/write-actions/{pk}/commit/":{"post":{"operationId":"post_externalwriteaction_commit_commit","summary":"POST externalwriteaction commit","tags":["Integrations"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalWriteAction"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalWriteAction"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/api/":{"get":{"operationId":"get_api_root_get","summary":"The default basic root view for DefaultRouter","tags":["LLM"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/api/analyses/":{"get":{"operationId":"get_analyses_list_list","summary":"List analyses","tags":["LLM"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"project","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to one project."},{"name":"note","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to one note."},{"name":"analysis_type","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by analysis type."},{"name":"search","in":"query","required":false,"schema":{"type":"string"},"description":"Free text search over prompt and response."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by created_at, tokens_used or cost."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"API endpoint for viewing LLM analyses **Endpoints:** - GET /api/analyses/ - List analyses - GET /api/analyses/{id}/ - Analysis details","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/LLMAnalysis"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/api/analyses/{pk}/":{"get":{"operationId":"get_analyses_detail_retrieve","summary":"Get one analyse","tags":["LLM"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"API endpoint for viewing LLM analyses **Endpoints:** - GET /api/analyses/ - List analyses - GET /api/analyses/{id}/ - Analysis details","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMAnalysis"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/api/api-keys/":{"get":{"operationId":"get_api_keys_list_list","summary":"List api keys","tags":["LLM"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"provider","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by provider slug."},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean"},"description":"Filter by active flag."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by created_at, provider or is_active."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"API endpoint for managing user API keys **Endpoints:** - GET /api/api-keys/ - List user's keys - POST /api/api-keys/ - Create a new key - GET /api/api-keys/{id}/ - Get key details - PUT /api/api-keys/{id}/ - Update key - PATCH /api/api-keys/{id}/ - Partially update key - DELETE /api/api-keys/{id}/ - Delete key - POST /api/api-keys/{id}/rotate/ - Rotate key - GET /api/api-keys/{id}/audit/ - Audit logs - POST /api/api-keys/{id}/activate/ - Activate key - POST /api/api-keys/{id}/deactivate/ - Deactivate key","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/UserAPIKey"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_api_keys_list_create","summary":"Create a api key","tags":["LLM"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"API endpoint for managing user API keys **Endpoints:** - GET /api/api-keys/ - List user's keys - POST /api/api-keys/ - Create a new key - GET /api/api-keys/{id}/ - Get key details - PUT /api/api-keys/{id}/ - Update key - PATCH /api/api-keys/{id}/ - Partially update key - DELETE /api/api-keys/{id}/ - Delete key - POST /api/api-keys/{id}/rotate/ - Rotate key - GET /api/api-keys/{id}/audit/ - Audit logs - POST /api/api-keys/{id}/activate/ - Activate key - POST /api/api-keys/{id}/deactivate/ - Deactivate key","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAPIKeyCreate"}}}},"responses":{"201":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAPIKeyCreate"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/api/api-keys/{pk}/":{"get":{"operationId":"get_api_keys_detail_retrieve","summary":"Get one api key","tags":["LLM"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"API endpoint for managing user API keys **Endpoints:** - GET /api/api-keys/ - List user's keys - POST /api/api-keys/ - Create a new key - GET /api/api-keys/{id}/ - Get key details - PUT /api/api-keys/{id}/ - Update key - PATCH /api/api-keys/{id}/ - Partially update key - DELETE /api/api-keys/{id}/ - Delete key - POST /api/api-keys/{id}/rotate/ - Rotate key - GET /api/api-keys/{id}/audit/ - Audit logs - POST /api/api-keys/{id}/activate/ - Activate key - POST /api/api-keys/{id}/deactivate/ - Deactivate key","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAPIKey"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_api_keys_detail_update","summary":"Replace a api key","tags":["LLM"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"API endpoint for managing user API keys **Endpoints:** - GET /api/api-keys/ - List user's keys - POST /api/api-keys/ - Create a new key - GET /api/api-keys/{id}/ - Get key details - PUT /api/api-keys/{id}/ - Update key - PATCH /api/api-keys/{id}/ - Partially update key - DELETE /api/api-keys/{id}/ - Delete key - POST /api/api-keys/{id}/rotate/ - Rotate key - GET /api/api-keys/{id}/audit/ - Audit logs - POST /api/api-keys/{id}/activate/ - Activate key - POST /api/api-keys/{id}/deactivate/ - Deactivate key","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAPIKeyUpdate"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAPIKeyUpdate"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_api_keys_detail_partial_update","summary":"Update a api key","tags":["LLM"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"API endpoint for managing user API keys **Endpoints:** - GET /api/api-keys/ - List user's keys - POST /api/api-keys/ - Create a new key - GET /api/api-keys/{id}/ - Get key details - PUT /api/api-keys/{id}/ - Update key - PATCH /api/api-keys/{id}/ - Partially update key - DELETE /api/api-keys/{id}/ - Delete key - POST /api/api-keys/{id}/rotate/ - Rotate key - GET /api/api-keys/{id}/audit/ - Audit logs - POST /api/api-keys/{id}/activate/ - Activate key - POST /api/api-keys/{id}/deactivate/ - Deactivate key","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAPIKeyUpdate"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAPIKeyUpdate"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"delete":{"operationId":"delete_api_keys_detail_destroy","summary":"Delete a api key","tags":["LLM"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"API endpoint for managing user API keys **Endpoints:** - GET /api/api-keys/ - List user's keys - POST /api/api-keys/ - Create a new key - GET /api/api-keys/{id}/ - Get key details - PUT /api/api-keys/{id}/ - Update key - PATCH /api/api-keys/{id}/ - Partially update key - DELETE /api/api-keys/{id}/ - Delete key - POST /api/api-keys/{id}/rotate/ - Rotate key - GET /api/api-keys/{id}/audit/ - Audit logs - POST /api/api-keys/{id}/activate/ - Activate key - POST /api/api-keys/{id}/deactivate/ - Deactivate key","responses":{"204":{"description":"Deleted."},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/api/api-keys/{pk}/activate/":{"post":{"operationId":"post_api_keys_activate_activate","summary":"Activate API key","tags":["LLM"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"API endpoint for managing user API keys **Endpoints:** - GET /api/api-keys/ - List user's keys - POST /api/api-keys/ - Create a new key - GET /api/api-keys/{id}/ - Get key details - PUT /api/api-keys/{id}/ - Update key - PATCH /api/api-keys/{id}/ - Partially update key - DELETE /api/api-keys/{id}/ - Delete key - POST /api/api-keys/{id}/rotate/ - Rotate key - GET /api/api-keys/{id}/audit/ - Audit logs - POST /api/api-keys/{id}/activate/ - Activate key - POST /api/api-keys/{id}/deactivate/ - Deactivate key","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAPIKey"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAPIKey"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/api/api-keys/{pk}/audit/":{"get":{"operationId":"get_api_keys_audit_audit","summary":"Get audit logs for an API key","tags":["LLM"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"API endpoint for managing user API keys **Endpoints:** - GET /api/api-keys/ - List user's keys - POST /api/api-keys/ - Create a new key - GET /api/api-keys/{id}/ - Get key details - PUT /api/api-keys/{id}/ - Update key - PATCH /api/api-keys/{id}/ - Partially update key - DELETE /api/api-keys/{id}/ - Delete key - POST /api/api-keys/{id}/rotate/ - Rotate key - GET /api/api-keys/{id}/audit/ - Audit logs - POST /api/api-keys/{id}/activate/ - Activate key - POST /api/api-keys/{id}/deactivate/ - Deactivate key","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAPIKey"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/api/api-keys/{pk}/deactivate/":{"post":{"operationId":"post_api_keys_deactivate_deactivate","summary":"Deactivate API key","tags":["LLM"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"API endpoint for managing user API keys **Endpoints:** - GET /api/api-keys/ - List user's keys - POST /api/api-keys/ - Create a new key - GET /api/api-keys/{id}/ - Get key details - PUT /api/api-keys/{id}/ - Update key - PATCH /api/api-keys/{id}/ - Partially update key - DELETE /api/api-keys/{id}/ - Delete key - POST /api/api-keys/{id}/rotate/ - Rotate key - GET /api/api-keys/{id}/audit/ - Audit logs - POST /api/api-keys/{id}/activate/ - Activate key - POST /api/api-keys/{id}/deactivate/ - Deactivate key","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAPIKey"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAPIKey"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/api/api-keys/{pk}/rotate/":{"post":{"operationId":"post_api_keys_rotate_rotate","summary":"Rotate API key","tags":["LLM"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"API endpoint for managing user API keys **Endpoints:** - GET /api/api-keys/ - List user's keys - POST /api/api-keys/ - Create a new key - GET /api/api-keys/{id}/ - Get key details - PUT /api/api-keys/{id}/ - Update key - PATCH /api/api-keys/{id}/ - Partially update key - DELETE /api/api-keys/{id}/ - Delete key - POST /api/api-keys/{id}/rotate/ - Rotate key - GET /api/api-keys/{id}/audit/ - Audit logs - POST /api/api-keys/{id}/activate/ - Activate key - POST /api/api-keys/{id}/deactivate/ - Deactivate key","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAPIKeyRotate"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAPIKeyRotate"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/api/prompt-templates/":{"get":{"operationId":"get_prompt_templates_list_list","summary":"List prompt templates","tags":["LLM"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"provider","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to templates for one provider."},{"name":"search","in":"query","required":false,"schema":{"type":"string"},"description":"Free text search over name, description and body."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by name, created_at or updated_at."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"API endpoint for viewing prompt templates **Endpoints:** - GET /api/prompt-templates/ - List templates - GET /api/prompt-templates/{id}/ - Template details","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/LLMPromptTemplate"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/api/prompt-templates/{pk}/":{"get":{"operationId":"get_prompt_templates_detail_retrieve","summary":"Get one prompt template","tags":["LLM"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"API endpoint for viewing prompt templates **Endpoints:** - GET /api/prompt-templates/ - List templates - GET /api/prompt-templates/{id}/ - Template details","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMPromptTemplate"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/api/providers/":{"get":{"operationId":"get_providers_list_list","summary":"List providers","tags":["LLM"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"search","in":"query","required":false,"schema":{"type":"string"},"description":"Free text search over provider and model name."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by name, created_at or per-token cost."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"API endpoint for viewing available LLM providers **Endpoints:** - GET /api/providers/ - List providers - GET /api/providers/{id}/ - Provider details","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/LLMProvider"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/api/providers/{pk}/":{"get":{"operationId":"get_providers_detail_retrieve","summary":"Get one provider","tags":["LLM"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"API endpoint for viewing available LLM providers **Endpoints:** - GET /api/providers/ - List providers - GET /api/providers/{id}/ - Provider details","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMProvider"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/api/token-usage/":{"get":{"operationId":"get_token_usage_list_list","summary":"List token usage","tags":["LLM"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"project","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to one project."},{"name":"note","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to one note."},{"name":"operation","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by operation type."},{"name":"model","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by model name."},{"name":"key_source","in":"query","required":false,"schema":{"type":"string"},"description":"system or byok."},{"name":"search","in":"query","required":false,"schema":{"type":"string"},"description":"Free text search over model name and operation."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by created_at, total_tokens or total_cost."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Per-call LLM token accounting for the authenticated user. **Endpoints:** - GET /api/llm/api/token-usage/ - List usage records - GET /api/llm/api/token-usage/{id}/ - Usage record details - GET /api/llm/api/token-usage/summary/ - Totals grouped by model and operation","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/TokenUsage"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/api/token-usage/summary/":{"get":{"operationId":"get_token_usage_summary_summary","summary":"Aggregate token spend grouped by model and by operation.","tags":["LLM"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Per-call LLM token accounting for the authenticated user. **Endpoints:** - GET /api/llm/api/token-usage/ - List usage records - GET /api/llm/api/token-usage/{id}/ - Usage record details - GET /api/llm/api/token-usage/summary/ - Totals grouped by model and operation","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenUsage"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/api/token-usage/{pk}/":{"get":{"operationId":"get_token_usage_detail_retrieve","summary":"Get one token usage","tags":["LLM"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Per-call LLM token accounting for the authenticated user. **Endpoints:** - GET /api/llm/api/token-usage/ - List usage records - GET /api/llm/api/token-usage/{id}/ - Usage record details - GET /api/llm/api/token-usage/summary/ - Totals grouped by model and operation","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenUsage"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/balance/":{"get":{"operationId":"get_get_balance_get","summary":"Get current user balance and token information","tags":["LLM"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/balance/add-funds/":{"post":{"operationId":"post_add_funds_post","summary":"Add funds to user account (admin function)","tags":["LLM"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/balance/billing/":{"get":{"operationId":"get_billing_summary_get","summary":"Get billing summary for period","tags":["LLM"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/balance/check-affordability/":{"post":{"operationId":"post_check_affordability_post","summary":"Check if user can afford a request","tags":["LLM"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/balance/models/":{"get":{"operationId":"get_get_balance_models_get","summary":"Get available models with user's balance information","tags":["LLM"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/balance/statistics/":{"get":{"operationId":"get_get_statistics_get","summary":"Get comprehensive usage statistics","tags":["LLM"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/balance/transactions/":{"get":{"operationId":"get_transaction_history_get","summary":"Get recent transaction history","tags":["LLM"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/summary/estimate-context/":{"get":{"operationId":"get_estimate_context_get","summary":"Estimate context size for project or branch","tags":["LLM"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_estimate_context_post","summary":"Estimate context size for project or branch","tags":["LLM"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/summary/models/":{"get":{"operationId":"get_available_models_get","summary":"Get list of available AI models","tags":["LLM"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_available_models_post","summary":"Get list of available AI models","tags":["LLM"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/summary/summarize/":{"post":{"operationId":"post_summarize_post","summary":"Start asynchronous summarization task","tags":["LLM"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/summary/task-cancel/{task_id}/":{"post":{"operationId":"post_task_cancel_post","summary":"Cancel a running task","tags":["LLM"],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `task_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/summary/task-status/{task_id}/":{"get":{"operationId":"get_task_status_get","summary":"Get current status of a processing task","tags":["LLM"],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `task_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_task_status_post","summary":"Get current status of a processing task","tags":["LLM"],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `task_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/llm/usage/tokens/":{"get":{"operationId":"get_token_usage_stats_get","summary":"GET token usage stats","tags":["LLM"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/notes/":{"get":{"operationId":"get_notes_list_list","summary":"List notes","tags":["Notes"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"project","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to one project."},{"name":"parent","in":"query","required":false,"schema":{"type":"integer"},"description":"Direct children of this note; empty value = roots."},{"name":"type","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by note type (text/heading/image/code/quote)."},{"name":"relation_type","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by relation type."},{"name":"tag","in":"query","required":false,"schema":{"type":"string"},"description":"Only notes carrying this tag."},{"name":"depth","in":"query","required":false,"schema":{"type":"integer"},"description":"Only notes at this tree depth."},{"name":"is_public","in":"query","required":false,"schema":{"type":"boolean"},"description":"Filter by public flag."},{"name":"search","in":"query","required":false,"schema":{"type":"string"},"description":"Free text search over title and content."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by any of the ordering fields, '-' to reverse."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Notes: the hierarchical project brain.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/NoteAPI"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_notes_list_create","summary":"Create a note","tags":["Notes"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Notes: the hierarchical project brain.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteAPI"}}}},"responses":{"201":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/notes/tags/":{"get":{"operationId":"get_notes_tags_tags","summary":"Distinct tags with usage counts, optionally scoped by ``?project=``.","tags":["Notes"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Notes: the hierarchical project brain.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteTag"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/notes/{pk}/":{"get":{"operationId":"get_notes_detail_retrieve","summary":"Get one note","tags":["Notes"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Notes: the hierarchical project brain.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_notes_detail_update","summary":"Replace a note","tags":["Notes"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Notes: the hierarchical project brain.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_notes_detail_partial_update","summary":"Update a note","tags":["Notes"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Notes: the hierarchical project brain.","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"delete":{"operationId":"delete_notes_detail_destroy","summary":"Delete a note","tags":["Notes"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Notes: the hierarchical project brain.","responses":{"204":{"description":"Deleted."},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/notes/{pk}/branch/":{"get":{"operationId":"get_notes_branch_branch","summary":"The note plus its entire subtree, nested under ``children``.","tags":["Notes"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Notes: the hierarchical project brain.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/notes/{pk}/children/":{"get":{"operationId":"get_notes_children_children","summary":"Direct children of the note, in tree order.","tags":["Notes"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Notes: the hierarchical project brain.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/notes/{pk}/move/":{"post":{"operationId":"post_notes_move_move","summary":"Re-parent and/or re-order the note, keeping depth/order consistent.","tags":["Notes"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Notes: the hierarchical project brain.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteMove"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteMove"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/project-changes/":{"get":{"operationId":"get_project_changes_list_list","summary":"List project changes","tags":["Project changes"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"project","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to one project."},{"name":"source","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by source (llm/user/system/invite)."},{"name":"since","in":"query","required":false,"schema":{"type":"string"},"description":"ISO-8601 datetime lower bound."},{"name":"search","in":"query","required":false,"schema":{"type":"string"},"description":"Free text search over the change summary."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by any of the ordering fields, '-' to reverse."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Immutable audit trail of project changes.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/ProjectChangeLog"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/project-changes/{pk}/":{"get":{"operationId":"get_project_changes_detail_retrieve","summary":"Get one project change","tags":["Project changes"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Immutable audit trail of project changes.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectChangeLog"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/project-invites/":{"get":{"operationId":"get_project_invites_list_list","summary":"List project invites","tags":["Project invites"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"project","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to one project."},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean"},"description":"Filter by active flag."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by any of the ordering fields, '-' to reverse."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"One-time invite links. Owner-only, because the token grants access.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/ProjectInviteLink"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_project_invites_list_create","summary":"Create a project invite","tags":["Project invites"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"One-time invite links. Owner-only, because the token grants access.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectInviteLink"}}}},"responses":{"201":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectInviteLink"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/project-invites/{pk}/":{"get":{"operationId":"get_project_invites_detail_retrieve","summary":"Get one project invite","tags":["Project invites"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"One-time invite links. Owner-only, because the token grants access.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectInviteLink"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"delete":{"operationId":"delete_project_invites_detail_destroy","summary":"Delete a project invite","tags":["Project invites"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"One-time invite links. Owner-only, because the token grants access.","responses":{"204":{"description":"Deleted."},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/project-invites/{pk}/revoke/":{"post":{"operationId":"post_project_invites_revoke_revoke","summary":"Deactivate an invite link without deleting the audit record.","tags":["Project invites"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"One-time invite links. Owner-only, because the token grants access.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectInviteLink"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectInviteLink"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/project-members/":{"get":{"operationId":"get_project_members_list_list","summary":"List project members","tags":["Project members"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"project","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to one project."},{"name":"user","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to one member."},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean"},"description":"Filter by active flag."},{"name":"search","in":"query","required":false,"schema":{"type":"string"},"description":"Free text search over member username/email."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by any of the ordering fields, '-' to reverse."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Membership records for projects you can see (owner-only for writes).","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/ProjectMembership"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_project_members_list_create","summary":"Create a project member","tags":["Project members"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Membership records for projects you can see (owner-only for writes).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMembership"}}}},"responses":{"201":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMembership"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/project-members/{pk}/":{"get":{"operationId":"get_project_members_detail_retrieve","summary":"Get one project member","tags":["Project members"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Membership records for projects you can see (owner-only for writes).","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMembership"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_project_members_detail_update","summary":"Replace a project member","tags":["Project members"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Membership records for projects you can see (owner-only for writes).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMembership"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMembership"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_project_members_detail_partial_update","summary":"Update a project member","tags":["Project members"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Membership records for projects you can see (owner-only for writes).","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMembership"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMembership"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"delete":{"operationId":"delete_project_members_detail_destroy","summary":"Delete a project member","tags":["Project members"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Membership records for projects you can see (owner-only for writes).","responses":{"204":{"description":"Deleted."},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/project-public-settings/":{"get":{"operationId":"get_project_public_settings_list_list","summary":"List project public settings","tags":["Public sharing"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"project","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to one project."},{"name":"is_public","in":"query","required":false,"schema":{"type":"boolean"},"description":"Filter by public flag."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by any of the ordering fields, '-' to reverse."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Per-project public sharing configuration.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/ProjectPublicSettings"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/project-public-settings/{pk}/":{"get":{"operationId":"get_project_public_settings_detail_retrieve","summary":"Get one project public setting","tags":["Public sharing"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Per-project public sharing configuration.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublicSettings"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_project_public_settings_detail_update","summary":"Replace a project public setting","tags":["Public sharing"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Per-project public sharing configuration.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublicSettings"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublicSettings"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_project_public_settings_detail_partial_update","summary":"Update a project public setting","tags":["Public sharing"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Per-project public sharing configuration.","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublicSettings"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublicSettings"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/project-public-settings/{pk}/regenerate-token/":{"post":{"operationId":"post_project_public_settings_regenerate_token_regenerate_token","summary":"Roll the public share token for this project.","tags":["Public sharing"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Per-project public sharing configuration.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublicSettings"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublicSettings"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/":{"get":{"operationId":"get_projects_list_list","summary":"List projects","tags":["Projects"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"category","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by project category."},{"name":"priority","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by priority (low/medium/high)."},{"name":"is_archived","in":"query","required":false,"schema":{"type":"boolean"},"description":"Filter archived projects."},{"name":"is_draft","in":"query","required":false,"schema":{"type":"boolean"},"description":"Filter draft projects."},{"name":"owned","in":"query","required":false,"schema":{"type":"boolean"},"description":"true = only projects you own, false = only shared."},{"name":"search","in":"query","required":false,"schema":{"type":"string"},"description":"Free text search over title/description/goal/vision."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by any of the ordering fields, '-' to reverse."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/ProjectAPI"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_projects_list_create","summary":"Create a project","tags":["Projects"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"responses":{"201":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{pk}/":{"get":{"operationId":"get_projects_detail_retrieve","summary":"Get one project","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_projects_detail_update","summary":"Replace a project","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_projects_detail_partial_update","summary":"Update a project","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"delete":{"operationId":"delete_projects_detail_destroy","summary":"Delete a project","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","responses":{"204":{"description":"Deleted."},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{pk}/archive/":{"post":{"operationId":"post_projects_archive_archive","summary":"Mark the project as archived.","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{pk}/changes/":{"get":{"operationId":"get_projects_changes_changes","summary":"Change-log entries for the project, newest first.","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectChangeLog"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{pk}/duplicate/":{"post":{"operationId":"post_projects_duplicate_duplicate","summary":"Deep-copy the project, optionally including notes, tasks and ideas.","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{pk}/export/":{"get":{"operationId":"get_projects_export_export","summary":"Complete JSON export of the project, its note tree, tasks and ideas.","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{pk}/invites/":{"get":{"operationId":"get_projects_invites_invites","summary":"List or mint one-time invite links (owner only).","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectInviteLink"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_projects_invites_invites","summary":"List or mint one-time invite links (owner only).","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectInviteLink"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectInviteLink"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{pk}/members/":{"get":{"operationId":"get_projects_members_members","summary":"List project members, or add one by ``user_id``/``username``/``email``.","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMembership"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_projects_members_members","summary":"List project members, or add one by ``user_id``/``username``/``email``.","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMembership"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMembership"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{pk}/members/{user_id}/":{"delete":{"operationId":"delete_projects_member_detail_member_detail","summary":"Remove one member from the project (owner only).","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."},{"name":"user_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `user_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{pk}/note-tree/":{"get":{"operationId":"get_projects_note_tree_note_tree","summary":"Full nested note tree (alias of ``tree`` that is never shadowed).","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{pk}/public-settings/":{"get":{"operationId":"get_projects_public_settings_public_settings","summary":"Read or update the public sharing settings for the project.","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublicSettings"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_projects_public_settings_public_settings","summary":"Read or update the public sharing settings for the project.","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublicSettings"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublicSettings"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_projects_public_settings_public_settings","summary":"Read or update the public sharing settings for the project.","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublicSettings"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublicSettings"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{pk}/public-settings/regenerate-token/":{"post":{"operationId":"post_projects_regenerate_public_token_regenerate_public_token","summary":"Roll the public share token, invalidating the old public URL.","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublicSettings"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublicSettings"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{pk}/stats/":{"get":{"operationId":"get_projects_stats_stats","summary":"Counts and completion metrics for one project.","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectStats"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{pk}/tree/":{"get":{"operationId":"get_projects_tree_tree","summary":"Full nested note tree for the project.","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{pk}/unarchive/":{"post":{"operationId":"post_projects_unarchive_unarchive","summary":"Restore an archived project.","tags":["Projects"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Projects owned by, or shared with, the authenticated user.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{project_id}/activity/":{"get":{"operationId":"get_project_activity_get","summary":"GET project activity","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `project_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{project_id}/context-pack/":{"get":{"operationId":"get_project_context_pack_get","summary":"GET project context pack","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `project_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{project_id}/recent-changes/":{"get":{"operationId":"get_project_recent_changes_get","summary":"GET project recent changes","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `project_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{project_id}/tree/":{"get":{"operationId":"get_tree_view_api_get","summary":"Get complete tree view for a project","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `project_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{project_id}/tree/batch/":{"post":{"operationId":"post_tree_batch_create_notes_post","summary":"Batch create multiple notes","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `project_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{project_id}/tree/depth/{depth}/":{"get":{"operationId":"get_tree_get_notes_by_depth_get","summary":"Get all notes at a specific depth level","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `project_id`."},{"name":"depth","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `depth`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{project_id}/tree/export/":{"get":{"operationId":"get_tree_export_json_get","summary":"Export entire tree as JSON","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `project_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{project_id}/tree/import/":{"post":{"operationId":"post_tree_import_notes_post","summary":"Import notes from JSON structure","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `project_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{project_id}/tree/notes/":{"post":{"operationId":"post_tree_create_note_post","summary":"Create new note in tree with position","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `project_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{project_id}/tree/path/{note_id}/":{"get":{"operationId":"get_tree_get_path_to_note_get","summary":"Get the path from root to a specific note","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `project_id`."},{"name":"note_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `note_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{project_id}/tree/reorder/":{"post":{"operationId":"post_tree_reorder_notes_post","summary":"Reorder notes in tree - handle drag and drop","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `project_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{project_id}/tree/search/":{"get":{"operationId":"get_tree_search_notes_get","summary":"Search notes in project tree","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `project_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{project_id}/tree/statistics/":{"get":{"operationId":"get_tree_get_statistics_get","summary":"Get detailed statistics about project tree","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `project_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/projects/{project_id}/tree/tags/batch/":{"post":{"operationId":"post_tree_batch_update_tags_post","summary":"Update tags for multiple notes","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `project_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/quick-notes/":{"get":{"operationId":"get_quick_notes_list_list","summary":"List quick notes","tags":["Quick notes"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"status","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by pipeline status."},{"name":"project","in":"query","required":false,"schema":{"type":"integer"},"description":"Filter by suggested or confirmed project."},{"name":"search","in":"query","required":false,"schema":{"type":"string"},"description":"Free text search over content and summary."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by any of the ordering fields, '-' to reverse."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"AI-assisted quick notes awaiting placement.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/QuickNoteAPI"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_quick_notes_list_create","summary":"Create a quick note","tags":["Quick notes"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"AI-assisted quick notes awaiting placement.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickNoteAPI"}}}},"responses":{"201":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickNoteAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/quick-notes/analyze/":{"get":{"operationId":"get_quick_note_analyze_api_get","summary":"API endpoint to trigger analysis (for AJAX requests)","tags":["Quick notes"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_quick_note_analyze_api_post","summary":"API endpoint to trigger analysis (for AJAX requests)","tags":["Quick notes"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/quick-notes/{pk}/":{"get":{"operationId":"get_quick_notes_detail_retrieve","summary":"Get one quick note","tags":["Quick notes"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"AI-assisted quick notes awaiting placement.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickNoteAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_quick_notes_detail_update","summary":"Replace a quick note","tags":["Quick notes"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"AI-assisted quick notes awaiting placement.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickNoteAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickNoteAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_quick_notes_detail_partial_update","summary":"Update a quick note","tags":["Quick notes"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"AI-assisted quick notes awaiting placement.","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickNoteAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickNoteAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"delete":{"operationId":"delete_quick_notes_detail_destroy","summary":"Delete a quick note","tags":["Quick notes"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"AI-assisted quick notes awaiting placement.","responses":{"204":{"description":"Deleted."},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/tasks/":{"get":{"operationId":"get_tasks_list_list","summary":"List tasks","tags":["Tasks"],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Page number (20 items per page)."},{"name":"project","in":"query","required":false,"schema":{"type":"integer"},"description":"Restrict to one project."},{"name":"status","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by status (todo/in_progress/review/done)."},{"name":"priority","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by priority (low/medium/high)."},{"name":"is_completed","in":"query","required":false,"schema":{"type":"boolean"},"description":"Filter by completion flag."},{"name":"assigned_to","in":"query","required":false,"schema":{"type":"integer"},"description":"Filter by assignee user id."},{"name":"search","in":"query","required":false,"schema":{"type":"string"},"description":"Free text search over title and description."},{"name":"ordering","in":"query","required":false,"schema":{"type":"string"},"description":"Order by any of the ordering fields, '-' to reverse."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Project tasks.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/TaskAPI"}}},"required":["count","results"]}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_tasks_list_create","summary":"Create a task","tags":["Tasks"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Project tasks.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskAPI"}}}},"responses":{"201":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/tasks/{pk}/":{"get":{"operationId":"get_tasks_detail_retrieve","summary":"Get one task","tags":["Tasks"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Project tasks.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_tasks_detail_update","summary":"Replace a task","tags":["Tasks"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Project tasks.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_tasks_detail_partial_update","summary":"Update a task","tags":["Tasks"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Project tasks.","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"delete":{"operationId":"delete_tasks_detail_destroy","summary":"Delete a task","tags":["Tasks"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Project tasks.","responses":{"204":{"description":"Deleted."},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/tasks/{pk}/toggle/":{"post":{"operationId":"post_tasks_toggle_toggle","summary":"Flip ``is_completed`` and keep ``status`` in sync.","tags":["Tasks"],"parameters":[{"name":"pk","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `pk`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Project tasks.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskAPI"}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskAPI"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/tree/notes/{note_id}/":{"post":{"operationId":"post_tree_update_note_post","summary":"Update existing note","tags":["Notes"],"parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `note_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/tree/notes/{note_id}/delete/":{"post":{"operationId":"post_tree_delete_note_post","summary":"Delete note and all its descendants","tags":["Notes"],"parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `note_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/tree/notes/{note_id}/details/":{"get":{"operationId":"get_tree_get_note_details_get","summary":"Get detailed information about a specific note","tags":["Notes"],"parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string"},"description":"Path segment `note_id`."}],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/users/me/":{"get":{"operationId":"get_api_me_get","summary":"Profile of the authenticated user.","tags":["Users"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_api_me_put","summary":"Profile of the authenticated user.","tags":["Users"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_api_me_patch","summary":"Update the editable profile fields (email, first_name, last_name).","tags":["Users"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"description":"Profile of the authenticated user.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/users/me/balance/":{"get":{"operationId":"get_api_me_balance_get","summary":"Token/credit balance for the authenticated user.","tags":["Users"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/users/me/preferences/":{"get":{"operationId":"get_api_me_preferences_get","summary":"Theme and pinned-project preferences for the authenticated user.","tags":["Users"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"put":{"operationId":"put_api_me_preferences_put","summary":"Theme and pinned-project preferences for the authenticated user.","tags":["Users"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"patch":{"operationId":"patch_api_me_preferences_patch","summary":"Theme and pinned-project preferences for the authenticated user.","tags":["Users"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/api/users/me/transactions/":{"get":{"operationId":"get_api_me_transactions_get","summary":"Balance transaction history, newest first.","tags":["Users"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenTransaction"}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/mcp":{"get":{"operationId":"get_mcp_endpoint_get","summary":"GET mcp endpoint","tags":["MCP"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}},"post":{"operationId":"post_mcp_endpoint_post","summary":"POST mcp endpoint","tags":["MCP"],"parameters":[],"security":[{"TokenAuth":[]},{"BearerToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required."},"403":{"description":"Not allowed for this user."}}}},"/openapi/integrations.json":{"get":{"operationId":"get_integrations_openapi_schema_get","summary":"GET integrations openapi schema","tags":["Discovery"],"parameters":[],"security":[],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/openapi/nibvine.json":{"get":{"operationId":"get_nibvine_openapi_schema_get","summary":"OpenAPI 3.1 description of the entire Nibvine REST API.","tags":["Discovery"],"parameters":[],"security":[],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}}}}