{"openapi":"3.0.0","paths":{"/public/v1/auth/session":{"post":{"operationId":"PublicApiController_createSession","parameters":[],"responses":{"200":{"description":""}},"tags":["PublicApi"]}},"/public/v1/openapi.json":{"get":{"operationId":"PublicApiController_getOpenApiSpec","parameters":[],"responses":{"200":{"description":""}},"tags":["PublicApi"]}},"/public/v1/tasks":{"post":{"operationId":"PublicApiController_createTask","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePublicTaskDto"}}}},"responses":{"201":{"description":""}},"tags":["PublicApi"]}},"/public/v1/tasks/natural":{"post":{"operationId":"PublicApiController_createTaskFromText","parameters":[],"responses":{"201":{"description":""}},"tags":["PublicApi"]}},"/public/v1/me":{"get":{"operationId":"PublicApiController_getMe","parameters":[],"responses":{"200":{"description":""}},"tags":["PublicApi"]}},"/api-keys":{"post":{"operationId":"ApiKeysController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyDto"}}}},"responses":{"201":{"description":""}},"tags":["ApiKeys"]},"get":{"operationId":"ApiKeysController_list","parameters":[],"responses":{"200":{"description":""}},"tags":["ApiKeys"]}},"/api-keys/{id}":{"delete":{"operationId":"ApiKeysController_revoke","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["ApiKeys"]}},"/organizations/provision-by-phone":{"post":{"operationId":"BuilderKeysController_provisionByPhone","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionByPhoneDto"}}}},"responses":{"200":{"description":""}},"tags":["BuilderKeys"]}},"/organizations/by-owner/{userId}/builder-keys":{"post":{"operationId":"BuilderKeysController_issueForOwner","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueBuilderKeyDto"}}}},"responses":{"201":{"description":""}},"tags":["BuilderKeys"]}},"/organizations/{orgId}/builder-keys":{"post":{"operationId":"BuilderKeysController_issue","parameters":[{"name":"orgId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueBuilderKeyDto"}}}},"responses":{"201":{"description":""}},"tags":["BuilderKeys"]}},"/auth/login-tickets":{"post":{"operationId":"LoginTicketsController_mint","parameters":[],"responses":{"201":{"description":""}},"tags":["LoginTickets"]}},"/auth/login-tickets/redeem":{"post":{"operationId":"LoginTicketsController_redeem","parameters":[],"responses":{"200":{"description":""}},"tags":["LoginTickets"]}},"/oauth/authorize":{"get":{"operationId":"OAuthController_authorize","parameters":[{"name":"client_id","required":true,"in":"query","schema":{"type":"string"}},{"name":"redirect_uri","required":true,"in":"query","schema":{"type":"string"}},{"name":"response_type","required":true,"in":"query","schema":{"type":"string"}},{"name":"state","required":true,"in":"query","schema":{"type":"string"}},{"name":"scope","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["OAuth"]}},"/oauth/approve":{"post":{"operationId":"OAuthController_approve","parameters":[],"responses":{"201":{"description":""}},"tags":["OAuth"]}},"/oauth/token":{"post":{"operationId":"OAuthController_token","parameters":[],"responses":{"200":{"description":""}},"tags":["OAuth"]}},"/.well-known/oauth-authorization-server":{"get":{"operationId":"McpOAuthController_authServerMetadata","parameters":[],"responses":{"200":{"description":""}},"tags":["McpOAuth"]}},"/.well-known/oauth-protected-resource":{"get":{"operationId":"McpOAuthController_protectedResourceMetadata","parameters":[],"responses":{"200":{"description":""}},"tags":["McpOAuth"]}},"/oauth/mcp/register":{"post":{"operationId":"McpOAuthController_register","parameters":[],"responses":{"201":{"description":""}},"tags":["McpOAuth"]}},"/oauth/mcp/authorize":{"get":{"operationId":"McpOAuthController_authorize","parameters":[{"name":"client_id","required":true,"in":"query","schema":{"type":"string"}},{"name":"redirect_uri","required":true,"in":"query","schema":{"type":"string"}},{"name":"response_type","required":true,"in":"query","schema":{"type":"string"}},{"name":"state","required":true,"in":"query","schema":{"type":"string"}},{"name":"code_challenge","required":true,"in":"query","schema":{"type":"string"}},{"name":"code_challenge_method","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["McpOAuth"]}},"/oauth/mcp/approve":{"post":{"operationId":"McpOAuthController_approve","parameters":[],"responses":{"201":{"description":""}},"tags":["McpOAuth"]}},"/oauth/mcp/token":{"post":{"operationId":"McpOAuthController_token","parameters":[],"responses":{"200":{"description":""}},"tags":["McpOAuth"]}}},"info":{"title":"TaskLite API","description":"Developer REST API for TaskLite. Create a personal API key in the app, exchange it at POST /public/v1/auth/session for a bearer token, then call the API as your user.","version":"1.0.0","contact":{}},"tags":[],"servers":[{"url":"https://api.tasklite.net"}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"Authorization","description":"Personal API key as `Bearer tl_...`"},"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"CreatePublicTaskDto":{"type":"object","properties":{}},"CreateApiKeyDto":{"type":"object","properties":{}},"ProvisionByPhoneDto":{"type":"object","properties":{}},"IssueBuilderKeyDto":{"type":"object","properties":{}}}}}