{"openapi":"3.0.0","paths":{"/health":{"get":{"operationId":"HealthController_check","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/auth/signup":{"post":{"operationId":"AuthController_signUp","summary":"Create account","description":"Creates a new user and workspace, then returns access and refresh tokens.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignUpDto"}}}},"responses":{"201":{"description":"Account created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthTokensResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"409":{"description":"Email already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/auth/check-domain":{"get":{"operationId":"AuthController_checkDomain","summary":"Check signup domain","description":"Public endpoint. Determines whether domain is new, existing, or requires SSO.","parameters":[{"name":"email","required":true,"in":"query","schema":{"example":"user@company.com","type":"string"}}],"responses":{"200":{"description":"Domain status returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/auth/request-access":{"post":{"operationId":"AuthController_requestAccess","summary":"Request access to existing company","description":"Public endpoint. Creates/upserts a join request and notifies company admins.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestAccessDto"}}}},"responses":{"200":{"description":"Generic success response","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/auth/signin":{"post":{"operationId":"AuthController_signIn","summary":"Sign in","description":"Authenticates a user with email/password and returns tokens.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignInDto"}}}},"responses":{"200":{"description":"Signed in successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthTokensResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"403":{"description":"SSO required or workspace suspended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/auth/refresh":{"post":{"operationId":"AuthController_refresh","summary":"Refresh token","description":"Exchanges a refresh token for a fresh access/refresh token pair.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshTokenDto"}}}},"responses":{"200":{"description":"Token pair refreshed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthTokensResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Invalid or expired refresh token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/auth/accept-invite":{"post":{"operationId":"AuthController_acceptInvite","summary":"Accept invitation","description":"Sets a password for an invited user and returns tokens.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptInviteDto"}}}},"responses":{"200":{"description":"Invitation accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthTokensResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"400":{"description":"Invalid or expired invitation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/auth/password-reset/request":{"post":{"operationId":"AuthController_requestPasswordReset","summary":"Request password reset","description":"Sends password reset email if account exists. Always returns ok.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestPasswordResetDto"}}}},"responses":{"200":{"description":"Reset request accepted","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/auth/password-reset/confirm":{"post":{"operationId":"AuthController_confirmPasswordReset","summary":"Confirm password reset","description":"Sets a new password from password reset token.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmPasswordResetDto"}}}},"responses":{"200":{"description":"Password has been reset","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"400":{"description":"Invalid/expired reset token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/api/v1/billing":{"get":{"operationId":"BillingController_getBillingOverview","summary":"Get billing overview","parameters":[],"responses":{"200":{"description":"Billing overview returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"],"security":[{"bearer":[]}]}},"/api/v1/billing/subscription":{"get":{"operationId":"BillingController_getSubscription","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"]}},"/api/v1/billing/checkout":{"post":{"operationId":"BillingController_createCheckout","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"]}},"/api/v1/billing/plan-change":{"post":{"operationId":"BillingController_schedulePlanChange","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"]}},"/api/v1/billing/portal":{"post":{"operationId":"BillingController_getPortal","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"]}},"/api/v1/billing/confirm-checkout":{"post":{"operationId":"BillingController_confirmCheckout","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"]}},"/api/v1/billing/sync-subscription":{"post":{"operationId":"BillingController_syncSubscription","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"]}},"/api/v1/billing/credits":{"get":{"operationId":"BillingController_getCredits","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"]}},"/api/v1/billing/credits/history":{"get":{"operationId":"BillingController_getCreditHistory","parameters":[{"name":"page","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"]}},"/api/v1/billing/credits/purchase":{"post":{"operationId":"BillingController_purchaseCredits","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"]}},"/api/v1/billing/credits/breakdown":{"get":{"operationId":"BillingController_getCostBreakdown","parameters":[{"name":"period","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"]}},"/api/v1/billing/credits/estimate":{"get":{"operationId":"BillingController_estimateCredits","parameters":[{"name":"modelTier","required":true,"in":"query","schema":{"type":"string"}},{"name":"maxTokens","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"]}},"/api/v1/billing/model-tiers":{"get":{"operationId":"BillingController_getModelTiers","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"]}},"/api/v1/billing/byo-llm":{"get":{"operationId":"BillingController_getByoLlmConfig","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"]},"post":{"operationId":"BillingController_configureByoLlm","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"]},"delete":{"operationId":"BillingController_disableByoLlm","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"]}},"/api/v1/billing/webhook":{"post":{"operationId":"BillingController_handleWebhook","parameters":[{"name":"stripe-signature","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Billing"]}},"/api/v1/enterprise-inquiries":{"post":{"operationId":"EnterpriseInquiryController_create","summary":"Submit an enterprise inquiry","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Enterprise"]},"get":{"operationId":"EnterpriseInquiryController_list","summary":"List enterprise inquiries (admin)","parameters":[{"name":"status","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Enterprise"]}},"/api/v1/integrations/catalog":{"get":{"operationId":"IntegrationsController_catalog","summary":"List integration catalog","parameters":[],"responses":{"200":{"description":"Integration catalog returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationsCatalogResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"],"security":[{"bearer":[]}]}},"/api/v1/integrations":{"get":{"operationId":"IntegrationsController_list","summary":"List connected integrations","parameters":[],"responses":{"200":{"description":"Connected integrations returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationsListResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"]}},"/api/v1/integrations/connect":{"post":{"operationId":"IntegrationsController_connect","summary":"Start integration connection flow","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectIntegrationDto"}}}},"responses":{"201":{"description":"Connection flow started","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationsConnectResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"]}},"/api/v1/integrations/connect/api-key":{"post":{"operationId":"IntegrationsController_connectWithApiKey","summary":"Connect an integration using an API key","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectApiKeyDto"}}}},"responses":{"201":{"description":"Integration connected","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"],"security":[{"bearer":[]}]}},"/api/v1/integrations/connect/credentials":{"post":{"operationId":"IntegrationsController_connectWithCredentials","summary":"Connect an integration using email/password credentials","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectCredentialsDto"}}}},"responses":{"201":{"description":"Integration connected","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"],"security":[{"bearer":[]}]}},"/api/v1/integrations/callback":{"get":{"operationId":"IntegrationsController_oauthCallback","parameters":[{"name":"code","required":true,"in":"query","schema":{"type":"string"}},{"name":"state","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"]}},"/api/v1/integrations/{id}":{"delete":{"operationId":"IntegrationsController_disconnect","summary":"Disconnect integration","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Integration disconnected","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationsSimpleSuccessResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"]}},"/api/v1/integrations/{id}/actions":{"post":{"operationId":"IntegrationsController_executeAction","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteActionDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"]},"get":{"operationId":"IntegrationsController_listActions","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"]}},"/api/v1/integrations/providers/{slug}/pages":{"get":{"operationId":"IntegrationsController_listProviderPages","summary":"List available wiki pages for provider","parameters":[{"name":"slug","required":true,"in":"path","schema":{"type":"string"}},{"name":"q","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"]}},"/api/v1/integrations/tools/availability":{"get":{"operationId":"IntegrationsController_listIntegrationToolAvailability","summary":"List integration tool availability for this company","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"]}},"/api/v1/mcp-servers":{"get":{"operationId":"McpServersController_list","summary":"List MCP servers for the company","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["MCP Servers"],"security":[{"bearer":[]}]},"post":{"operationId":"McpServersController_create","summary":"Add a new MCP server","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["MCP Servers"],"security":[{"bearer":[]}]}},"/api/v1/mcp-servers/{id}":{"get":{"operationId":"McpServersController_getById","summary":"Get MCP server details with discovered tools","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["MCP Servers"],"security":[{"bearer":[]}]},"patch":{"operationId":"McpServersController_update","summary":"Update MCP server configuration","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["MCP Servers"],"security":[{"bearer":[]}]},"delete":{"operationId":"McpServersController_remove","summary":"Remove an MCP server","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["MCP Servers"],"security":[{"bearer":[]}]}},"/api/v1/mcp-servers/{id}/test":{"post":{"operationId":"McpServersController_test","summary":"Test MCP server connection and discover tools","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["MCP Servers"],"security":[{"bearer":[]}]}},"/api/v1/mcp-servers/{id}/refresh-tools":{"post":{"operationId":"McpServersController_refreshTools","summary":"Refresh discovered tools from MCP server","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["MCP Servers"],"security":[{"bearer":[]}]}},"/api/v1/mcp-servers/agent/{installId}":{"get":{"operationId":"McpServersController_getAgentServers","summary":"List MCP servers enabled for an agent","parameters":[{"name":"installId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["MCP Servers"],"security":[{"bearer":[]}]},"put":{"operationId":"McpServersController_setAgentServers","summary":"Set MCP servers enabled for an agent","parameters":[{"name":"installId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["MCP Servers"],"security":[{"bearer":[]}]}},"/api/v1/tools":{"get":{"operationId":"ToolsController_listTools","summary":"List available runtime tools","parameters":[],"responses":{"200":{"description":"Tool catalog returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"],"security":[{"bearer":[]}]}},"/api/v1/context/effective/{agentInstallId}":{"get":{"operationId":"ContextController_getEffectiveContext","parameters":[{"name":"agentInstallId","required":true,"in":"path","schema":{"type":"string"}},{"name":"userId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/freshness":{"get":{"operationId":"ContextController_getFreshness","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/freshness/nudges":{"get":{"operationId":"ContextController_getFreshnessNudges","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/freshness/nudges/{id}/dismiss":{"put":{"operationId":"ContextController_dismissNudge","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/versions":{"get":{"operationId":"ContextController_getVersions","parameters":[{"name":"scopeType","required":true,"in":"query","schema":{"type":"string"}},{"name":"scopeId","required":true,"in":"query","schema":{"type":"string"}},{"name":"fieldName","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/versions/{id}":{"get":{"operationId":"ContextController_getVersion","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/versions/{id}/diff":{"get":{"operationId":"ContextController_getVersionDiff","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"compareTo","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/versions/{id}/restore":{"post":{"operationId":"ContextController_restoreVersion","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/inferred/suggestions":{"get":{"operationId":"ContextController_getInferredSuggestions","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/inferred/{id}/accept":{"post":{"operationId":"ContextController_acceptInferred","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/inferred/{id}/reject":{"post":{"operationId":"ContextController_rejectInferred","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/inferred/analyze":{"post":{"operationId":"ContextController_analyzeInteraction","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/learned":{"get":{"operationId":"ContextController_getLearnedPreferences","parameters":[{"name":"category","required":true,"in":"query","schema":{"type":"string"}},{"name":"status","required":true,"in":"query","schema":{"type":"string"}},{"name":"scopeType","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/learned/{id}":{"patch":{"operationId":"ContextController_toggleLearnedPreference","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}},"delete":{"operationId":"ContextController_deleteLearnedPreference","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/learned/history":{"get":{"operationId":"ContextController_getLearningHistory","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/learned/reset":{"post":{"operationId":"ContextController_resetLearnedPreferences","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/team-learning":{"get":{"operationId":"ContextController_getTeamPreferences","parameters":[{"name":"teamId","required":true,"in":"query","schema":{"type":"string"}},{"name":"clientId","required":true,"in":"query","schema":{"type":"string"}},{"name":"status","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/team-learning/aggregate":{"post":{"operationId":"ContextController_runAggregation","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/team-learning/{id}/approve":{"post":{"operationId":"ContextController_approveTeamPreference","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/team-learning/{id}/dismiss":{"post":{"operationId":"ContextController_dismissTeamPreference","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/context/team-learning/{id}":{"patch":{"operationId":"ContextController_toggleTeamPreference","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}},"delete":{"operationId":"ContextController_deleteTeamPreference","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/marketplace/agents":{"get":{"operationId":"AgentDefinitionsController_listPublicAgents","summary":"Browse marketplace agents","parameters":[{"name":"category","required":true,"in":"query","schema":{"type":"string"}},{"name":"search","required":true,"in":"query","schema":{"type":"string"}},{"name":"q","required":true,"in":"query","schema":{"type":"string"}},{"name":"tags","required":true,"in":"query","schema":{"type":"string"}},{"name":"runMode","required":true,"in":"query","schema":{"type":"string"}},{"name":"minPlan","required":true,"in":"query","schema":{"type":"string"}},{"name":"sort","required":true,"in":"query","schema":{"type":"string"}},{"name":"scope","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"string"}},{"name":"limit","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Marketplace agents returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]},"post":{"operationId":"AgentDefinitionsController_publishAgent","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]}},"/api/v1/marketplace/agents/private":{"get":{"operationId":"AgentDefinitionsController_listPrivateAgents","parameters":[{"name":"page","required":true,"in":"query","schema":{"type":"string"}},{"name":"limit","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]}},"/api/v1/marketplace/agents/{slug}":{"get":{"operationId":"AgentDefinitionsController_getAgentBySlug","parameters":[{"name":"slug","required":true,"in":"path","schema":{"type":"string"}},{"name":"companyId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]}},"/api/v1/marketplace/agents/{id}":{"put":{"operationId":"AgentDefinitionsController_updateAgent","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]},"delete":{"operationId":"AgentDefinitionsController_unpublishAgent","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]}},"/api/v1/marketplace/agents/{id}/versions":{"post":{"operationId":"AgentDefinitionsController_publishNewVersion","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]},"get":{"operationId":"AgentDefinitionsController_listVersions","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]}},"/api/v1/marketplace/agents/{id}/reviews":{"post":{"operationId":"AgentDefinitionsController_addReview","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]},"get":{"operationId":"AgentDefinitionsController_listReviews","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]}},"/api/v1/marketplace/agents/{id}/reviews/{reviewId}/helpful":{"put":{"operationId":"AgentDefinitionsController_markReviewHelpful","parameters":[{"name":"reviewId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]}},"/api/v1/marketplace/agents/{id}/screenshots":{"post":{"operationId":"AgentDefinitionsController_uploadScreenshot","summary":"Upload a screenshot for an agent listing","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"},"alt":{"type":"string"},"caption":{"type":"string"}},"required":["file"]}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]}},"/api/v1/marketplace/agents/{id}/screenshots/{screenshotId}":{"delete":{"operationId":"AgentDefinitionsController_deleteScreenshot","summary":"Delete a screenshot from an agent listing","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"screenshotId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]},"put":{"operationId":"AgentDefinitionsController_updateScreenshotMetadata","summary":"Update screenshot alt text or caption","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"screenshotId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]}},"/api/v1/marketplace/agents/{id}/screenshots/reorder":{"put":{"operationId":"AgentDefinitionsController_reorderScreenshots","summary":"Reorder screenshots for an agent listing","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]}},"/api/v1/agents/installs/{installId}/config":{"get":{"operationId":"AgentInstallsController_getInstallConfig","summary":"Get installed agent config","parameters":[{"name":"installId","required":true,"in":"path","description":"Installed agent id","schema":{"type":"string"}}],"responses":{"200":{"description":"Resolved config for install","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConfigDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"404":{"description":"Install not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Agents"],"security":[{"bearer":[]}]},"put":{"operationId":"AgentInstallsController_updateInstallConfig","summary":"Update installed agent config","parameters":[{"name":"installId","required":true,"in":"path","description":"Installed agent id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConfigDto"}}}},"responses":{"200":{"description":"Config updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConfigDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Agents"],"security":[{"bearer":[]}]}},"/api/v1/agents/installs":{"get":{"operationId":"AgentInstallsController_listInstalls","summary":"List installed agents","parameters":[{"name":"teamId","required":false,"in":"query","description":"Optional team scope filter","schema":{"type":"string"}}],"responses":{"200":{"description":"Installed agents list","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AgentInstallDto"}}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Agents"],"security":[{"bearer":[]}]},"post":{"operationId":"AgentInstallsController_installAgent","summary":"Install an agent from marketplace","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallAgentDto"}}}},"responses":{"201":{"description":"Agent installed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentInstallDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Agents"],"security":[{"bearer":[]}]}},"/api/v1/agents/installs/enhanced":{"post":{"operationId":"AgentInstallsController_installAgentEnhanced","summary":"Install an agent with enhanced install payload","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallAgentDto"}}}},"responses":{"201":{"description":"Agent installed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentInstallDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Agents"],"security":[{"bearer":[]}]}},"/api/v1/agents/installs/{installId}":{"delete":{"operationId":"AgentInstallsController_uninstallAgent","summary":"Uninstall agent install","parameters":[{"name":"installId","required":true,"in":"path","description":"Installed agent id","schema":{"type":"string"}},{"name":"cancelInProgress","required":false,"in":"query","description":"Cancel in-progress runs before uninstall","schema":{"type":"string"}}],"responses":{"200":{"description":"Uninstall result returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"404":{"description":"Install not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Agents"],"security":[{"bearer":[]}]}},"/api/v1/agents/{installId}/runs":{"post":{"operationId":"AgentRunsController_createRun","summary":"Create agent run","parameters":[{"name":"installId","required":true,"in":"path","description":"Installed agent id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"object","additionalProperties":true},"teamContextId":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"}},"required":["input"]}}}},"responses":{"201":{"description":"Run created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRunDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"404":{"description":"Install not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Agents"],"security":[{"bearer":[]}]},"get":{"operationId":"AgentRunsController_listRuns","summary":"List agent runs","parameters":[{"name":"installId","required":true,"in":"path","description":"Installed agent id","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"example":20}},{"name":"page","required":false,"in":"query","schema":{"example":1}}],"responses":{"200":{"description":"Runs list","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AgentRunDto"}}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Agents"],"security":[{"bearer":[]}]}},"/api/v1/agents/{installId}/runs/{runId}":{"get":{"operationId":"AgentRunsController_getRun","summary":"Get run details","parameters":[{"name":"runId","required":true,"in":"path","description":"Run id","schema":{"type":"string"}},{"name":"installId","required":true,"in":"path","description":"Installed agent id","schema":{}}],"responses":{"200":{"description":"Run details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRunDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"404":{"description":"Run not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Agents"],"security":[{"bearer":[]}]}},"/api/v1/agents/{installId}/runs/{runId}/feedback":{"post":{"operationId":"AgentRunsController_submitFeedback","summary":"Submit feedback for a run","parameters":[{"name":"runId","required":true,"in":"path","description":"Run id","schema":{"type":"string"}},{"name":"installId","required":true,"in":"path","description":"Installed agent id","schema":{}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rating":{"type":"integer","minimum":1,"maximum":5},"editsMade":{"type":"boolean"},"accepted":{"type":"boolean"},"comment":{"type":"string"}}}}}},"responses":{"201":{"description":"Feedback submitted","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Agents"],"security":[{"bearer":[]}]}},"/api/v1/agents/{installId}/runs/{runId}/output":{"patch":{"operationId":"AgentRunsController_saveEditedOutput","summary":"Save edited output and trigger learning","parameters":[{"name":"runId","required":true,"in":"path","description":"Run id","schema":{"type":"string"}},{"name":"installId","required":true,"in":"path","description":"Installed agent id","schema":{}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"editedOutput":{"type":"string"}},"required":["editedOutput"]}}}},"responses":{"200":{"description":"Edit saved","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Agents"],"security":[{"bearer":[]}]}},"/api/v1/agents/{installId}/conversations":{"get":{"operationId":"ConversationsController_getOrCreateConversation","summary":"Get or create conversation for agent install","parameters":[{"name":"installId","required":true,"in":"path","description":"Installed agent id","schema":{"type":"string"}}],"responses":{"200":{"description":"Conversation returned or created","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Agents"],"security":[{"bearer":[]}]}},"/api/v1/agents/{installId}/conversations/{conversationId}":{"delete":{"operationId":"ConversationsController_clearConversation","summary":"Clear conversation history","parameters":[{"name":"installId","required":true,"in":"path","description":"Installed agent id","schema":{"type":"string"}},{"name":"conversationId","required":true,"in":"path","description":"Conversation id","schema":{"type":"string"}}],"responses":{"200":{"description":"Conversation cleared","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Agents"],"security":[{"bearer":[]}]}},"/api/v1/agents/{installId}/conversations/{conversationId}/messages":{"get":{"operationId":"ConversationsController_getConversationMessages","summary":"List conversation messages","parameters":[{"name":"installId","required":true,"in":"path","description":"Installed agent id","schema":{"type":"string"}},{"name":"conversationId","required":true,"in":"path","description":"Conversation id","schema":{"type":"string"}}],"responses":{"200":{"description":"Conversation messages returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Agents"],"security":[{"bearer":[]}]}},"/api/v1/marketplace/featured":{"get":{"operationId":"MarketplaceController_featured","summary":"List featured marketplace agents","parameters":[{"name":"limit","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Featured agents returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]}},"/api/v1/marketplace/collections":{"get":{"operationId":"MarketplaceController_collections","parameters":[{"name":"limitPerCollection","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]}},"/api/v1/marketplace/collections/{slug}":{"get":{"operationId":"MarketplaceController_collectionBySlug","parameters":[{"name":"slug","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Marketplace"],"security":[{"bearer":[]}]}},"/api/v1/notifications":{"get":{"operationId":"NotificationsController_list","summary":"List notifications","parameters":[{"name":"category","required":true,"in":"query","schema":{"type":"string"}},{"name":"unread","required":true,"in":"query","schema":{"type":"string"}},{"name":"before","required":true,"in":"query","schema":{"type":"string"}},{"name":"limit","required":true,"in":"query","schema":{"type":"string"}},{"name":"teamId","required":true,"in":"query","schema":{"type":"string"}},{"name":"clientId","required":true,"in":"query","schema":{"type":"string"}},{"name":"projectId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Notifications list returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsListResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notifications"],"security":[{"bearer":[]}]}},"/api/v1/notifications/page":{"get":{"operationId":"NotificationsController_getAll","parameters":[{"name":"page","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notifications"],"security":[{"bearer":[]}]}},"/api/v1/notifications/unread":{"get":{"operationId":"NotificationsController_getUnread","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notifications"],"security":[{"bearer":[]}]}},"/api/v1/notifications/unread/count":{"get":{"operationId":"NotificationsController_getUnreadCount","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notifications"],"security":[{"bearer":[]}]}},"/api/v1/notifications/count":{"get":{"operationId":"NotificationsController_getCount","summary":"Get unread notification counts","parameters":[{"name":"teamId","required":true,"in":"query","schema":{"type":"string"}},{"name":"clientId","required":true,"in":"query","schema":{"type":"string"}},{"name":"projectId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Unread counts returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsCountResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notifications"],"security":[{"bearer":[]}]}},"/api/v1/notifications/{id}/read":{"put":{"operationId":"NotificationsController_markRead","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Notification marked as read","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsSimpleSuccessResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notifications"],"security":[{"bearer":[]}]}},"/api/v1/notifications/read-all":{"put":{"operationId":"NotificationsController_markAllRead","parameters":[],"responses":{"200":{"description":"All notifications marked as read","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsSimpleSuccessResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notifications"],"security":[{"bearer":[]}]}},"/api/v1/notifications/{id}":{"delete":{"operationId":"NotificationsController_dismiss","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Notification dismissed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsSimpleSuccessResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notifications"],"security":[{"bearer":[]}]}},"/api/v1/notifications/dismiss-all":{"delete":{"operationId":"NotificationsController_dismissAll","parameters":[],"responses":{"200":{"description":"All read notifications dismissed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsSimpleSuccessResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notifications"],"security":[{"bearer":[]}]}},"/api/v1/notifications/share":{"post":{"operationId":"NotificationsController_shareOutput","summary":"Share output with team members via notification","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userIds":{"type":"array","items":{"type":"string"}},"title":{"type":"string"},"body":{"type":"string"},"link":{"type":"string"},"agentInstallId":{"type":"string"},"runId":{"type":"string"},"note":{"type":"string"}},"required":["userIds","title","body"]}}}},"responses":{"201":{"description":"Shared with users","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notifications"],"security":[{"bearer":[]}]}},"/api/v1/notifications/preferences":{"get":{"operationId":"NotificationsController_getPreferences","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notifications"],"security":[{"bearer":[]}]},"put":{"operationId":"NotificationsController_updatePreferences","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notifications"],"security":[{"bearer":[]}]}},"/api/v1/admin/email/test":{"post":{"operationId":"EmailAdminController_sendTestEmail","summary":"Send test email via configured provider","parameters":[],"responses":{"201":{"description":"Test email attempted","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notifications"],"security":[{"bearer":[]}]}},"/api/v1/email/webhooks/resend":{"post":{"operationId":"EmailWebhookController_handleResendWebhook","summary":"Resend webhook receiver","description":"Public webhook endpoint used by Resend delivery events.","parameters":[{"name":"x-resend-webhook-secret","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Webhook accepted","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Invalid webhook secret","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notifications"]}},"/api/v1/knowledge/picker":{"get":{"operationId":"KnowledgeController_getKnowledgePicker","summary":"Get knowledge picker payload","parameters":[{"name":"teamId","required":true,"in":"query","schema":{"type":"string"}},{"name":"agentInstallId","required":true,"in":"query","schema":{"type":"string"}},{"name":"clientId","required":true,"in":"query","schema":{"type":"string"}},{"name":"projectId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/resolve-scope":{"post":{"operationId":"KnowledgeController_resolveKnowledgeScope","summary":"Resolve KnowledgeScope to source IDs","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/search":{"post":{"operationId":"KnowledgeController_searchKnowledge","summary":"Search knowledge base semantically","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchKnowledgeDto"}}}},"responses":{"200":{"description":"Semantic search results","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeSearchResultDto"}}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/tags":{"get":{"operationId":"KnowledgeController_listTags","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/tags/search":{"get":{"operationId":"KnowledgeController_searchTags","parameters":[{"name":"q","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/tags/{tagId}":{"delete":{"operationId":"KnowledgeController_deleteTag","parameters":[{"name":"tagId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/retrieval-preview":{"post":{"operationId":"KnowledgeController_retrievalPreview","summary":"Preview what knowledge chunks would be retrieved for a query","parameters":[],"responses":{"200":{"description":"Retrieval preview results returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections":{"get":{"operationId":"KnowledgeCollectionsController_getCollectionsTree","summary":"Get full knowledge collection tree","parameters":[{"name":"teamId","required":true,"in":"query","schema":{"type":"string"}},{"name":"clientId","required":true,"in":"query","schema":{"type":"string"}},{"name":"projectId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]},"post":{"operationId":"KnowledgeCollectionsController_createCollection","summary":"Create collection","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}":{"put":{"operationId":"KnowledgeCollectionsController_updateCollection","summary":"Update collection metadata","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]},"delete":{"operationId":"KnowledgeCollectionsController_deleteCollection","summary":"Delete collection with child reparenting","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/move":{"put":{"operationId":"KnowledgeCollectionsController_moveCollection","summary":"Move collection to new parent","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/reorder":{"put":{"operationId":"KnowledgeCollectionsController_reorderCollection","summary":"Reorder collection among siblings","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/sources":{"post":{"operationId":"KnowledgeCollectionsController_addCollectionSources","summary":"Add source(s) to collection","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]},"get":{"operationId":"KnowledgeCollectionsController_listCollectionSources","summary":"List direct sources in collection","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/upload":{"post":{"operationId":"KnowledgeCollectionsController_quickUpload","summary":"Upload a file directly into a collection (standalone document)","parameters":[{"name":"id","required":true,"in":"path","description":"Collection id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/documents":{"get":{"operationId":"KnowledgeCollectionsController_listCollectionDocuments","summary":"List documents in a collection","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"search","required":true,"in":"query","schema":{"type":"string"}},{"name":"documentType","required":true,"in":"query","schema":{"type":"string"}},{"name":"language","required":true,"in":"query","schema":{"type":"string"}},{"name":"sortBy","required":true,"in":"query","schema":{"type":"string"}},{"name":"sortOrder","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]},"post":{"operationId":"KnowledgeCollectionsController_addCollectionDocuments","summary":"Add existing document(s) to a collection","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/documents/{docId}":{"delete":{"operationId":"KnowledgeCollectionsController_removeCollectionDocument","summary":"Remove document from collection","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"docId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/documents/{docId}/move":{"put":{"operationId":"KnowledgeCollectionsController_moveCollectionDocument","summary":"Move document to another collection","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"docId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/documents/{docId}/move-home":{"put":{"operationId":"KnowledgeCollectionsController_moveDocumentHome","summary":"Change document home to this collection","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"docId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/documents/{docId}/is-home":{"get":{"operationId":"KnowledgeCollectionsController_isDocumentHome","summary":"Check if document is home in this collection","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"docId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/sources/{sourceId}":{"delete":{"operationId":"KnowledgeCollectionsController_removeCollectionSource","summary":"Remove source from collection","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/sources/recursive":{"get":{"operationId":"KnowledgeCollectionsController_listCollectionSourcesRecursive","summary":"List recursive sources in collection","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/visibility":{"put":{"operationId":"KnowledgeCollectionsController_updateVisibility","summary":"Set collection visibility","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/access":{"get":{"operationId":"KnowledgeCollectionsController_listAccess","summary":"List access grants for a collection","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]},"post":{"operationId":"KnowledgeCollectionsController_grantAccess","summary":"Grant team access to a collection","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/my-grant":{"get":{"operationId":"KnowledgeCollectionsController_getMyGrant","summary":"Get current user grant info for a collection","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/access/{teamId}":{"delete":{"operationId":"KnowledgeCollectionsController_revokeAccess","summary":"Revoke team access to a collection","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/request-access":{"post":{"operationId":"KnowledgeCollectionsController_requestAccess","summary":"Request access to a collection for your team","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/access-requests/{requestId}/decide":{"post":{"operationId":"KnowledgeCollectionsController_decideAccessRequest","summary":"Approve or deny a collection access request","parameters":[{"name":"requestId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/my-request":{"get":{"operationId":"KnowledgeCollectionsController_getMyRequest","summary":"Get pending access request for current user team","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/migrate-tags":{"post":{"operationId":"KnowledgeCollectionsController_migrateTagsToCollections","summary":"Create collections from existing team tags","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/{id}/activity":{"get":{"operationId":"KnowledgeCollectionsController_getCollectionActivity","summary":"List activity for a collection","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/activity/entity/{entityType}/{entityId}":{"get":{"operationId":"KnowledgeCollectionsController_getEntityActivity","summary":"List activity for any knowledge entity","parameters":[{"name":"entityType","required":true,"in":"path","schema":{"type":"string"}},{"name":"entityId","required":true,"in":"path","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/collections/activity/recent":{"get":{"operationId":"KnowledgeCollectionsController_getRecentActivity","summary":"Recent knowledge activity across the workspace","parameters":[{"name":"page","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Collections"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources":{"get":{"operationId":"KnowledgeSourcesController_listSources","summary":"List knowledge sources","parameters":[{"name":"teamId","required":false,"in":"query","description":"Optional team filter","schema":{"type":"string"}},{"name":"clientId","required":false,"in":"query","description":"Optional client scope filter","schema":{"type":"string"}},{"name":"projectId","required":false,"in":"query","description":"Optional project scope filter","schema":{"type":"string"}},{"name":"agentInstallId","required":false,"in":"query","description":"Optional filter by connected installed agent","schema":{"type":"string"}}],"responses":{"200":{"description":"Knowledge sources","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeSourceDto"}}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Sources"],"security":[{"bearer":[]}]},"post":{"operationId":"KnowledgeSourcesController_createSource","summary":"Create knowledge source","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSourceDto"}}}},"responses":{"201":{"description":"Source created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeSourceDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Sources"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/from-text":{"post":{"operationId":"KnowledgeSourcesController_createTextSource","summary":"Create knowledge source from text content","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTextSourceDto"}}}},"responses":{"201":{"description":"Source created from text","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeSourceDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Sources"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}":{"put":{"operationId":"KnowledgeSourcesController_updateSource","summary":"Update knowledge source metadata","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Sources"],"security":[{"bearer":[]}]},"delete":{"operationId":"KnowledgeSourcesController_deleteSource","summary":"Delete knowledge source","parameters":[{"name":"sourceId","required":true,"in":"path","description":"Knowledge source id","schema":{"type":"string"}}],"responses":{"200":{"description":"Source deleted","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Sources"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/delete-impact":{"get":{"operationId":"KnowledgeSourcesController_getDeleteImpact","summary":"Get delete impact for a knowledge source","parameters":[{"name":"sourceId","required":true,"in":"path","description":"Knowledge source id","schema":{"type":"string"}}],"responses":{"200":{"description":"Delete impact summary","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Sources"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/web-preview":{"post":{"operationId":"KnowledgeSourcesController_previewWebSource","summary":"Preview web source URL accessibility","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Sources"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/web":{"post":{"operationId":"KnowledgeSourcesController_createWebSource","summary":"Create web knowledge source","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Sources"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/wiki":{"post":{"operationId":"KnowledgeSourcesController_createWikiSource","summary":"Create wiki knowledge source","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Sources"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/documents":{"get":{"operationId":"KnowledgeSourcesController_listDocuments","summary":"List knowledge documents","parameters":[{"name":"sourceId","required":true,"in":"path","description":"Knowledge source id","schema":{"type":"string"}},{"name":"search","required":false,"in":"query","description":"Search text","schema":{"example":"innovation fund","type":"string"}},{"name":"tags","required":false,"in":"query","description":"Comma separated tags","schema":{"example":["call","deadline"],"type":"array","items":{"type":"string"}}},{"name":"type","required":false,"in":"query","description":"Document type filter","schema":{"example":"guidelines","enum":["call_document","guidelines","report","template","policy","handbook","cv","budget","proposal","research_paper","presentation","meeting_notes","other"],"type":"string"}},{"name":"language","required":false,"in":"query","description":"Language filter","schema":{"example":"en","type":"string"}},{"name":"hasDeadline","required":false,"in":"query","description":"Only documents with extracted deadlines","schema":{"example":true,"type":"boolean"}},{"name":"deadlineBefore","required":false,"in":"query","description":"Filter deadlines before ISO date","schema":{"example":"2026-05-01","type":"string"}},{"name":"deadlineAfter","required":false,"in":"query","description":"Filter deadlines after ISO date","schema":{"example":"2026-01-01","type":"string"}},{"name":"sortBy","required":false,"in":"query","description":"Sort field","schema":{"example":"deadline","enum":["name","date","type","deadline"],"type":"string"}},{"name":"sortOrder","required":false,"in":"query","description":"Sort order asc/desc","schema":{"example":"asc","enum":["asc","desc"],"type":"string"}},{"name":"limit","required":false,"in":"query","description":"Page size","schema":{}},{"name":"page","required":false,"in":"query","description":"Page number","schema":{}}],"responses":{"200":{"description":"Knowledge documents","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeDocumentDto"}}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Sources"],"security":[{"bearer":[]}]},"post":{"operationId":"KnowledgeSourcesController_uploadDocument","summary":"Upload document to source","parameters":[{"name":"sourceId","required":true,"in":"path","description":"Knowledge source id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}}}},"responses":{"201":{"description":"Document upload accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeDocumentDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"400":{"description":"File is required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Sources"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/documents/{documentId}":{"delete":{"operationId":"KnowledgeSourcesController_deleteDocument","summary":"Delete knowledge document","parameters":[{"name":"sourceId","required":true,"in":"path","description":"Knowledge source id","schema":{"type":"string"}},{"name":"documentId","required":true,"in":"path","description":"Document id","schema":{"type":"string"}}],"responses":{"200":{"description":"Document deleted","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Sources"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/documents/{documentId}/replace":{"put":{"operationId":"KnowledgeSourcesController_replaceDocument","summary":"Replace a document with a new version","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}},{"name":"documentId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Sources"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/documents/{documentId}/versions":{"get":{"operationId":"KnowledgeSourcesController_listDocumentVersions","summary":"List document version history","parameters":[{"name":"documentId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Sources"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/documents/{documentId}/versions/{versionId}/restore":{"post":{"operationId":"KnowledgeSourcesController_restoreDocumentVersion","summary":"Restore a document to a previous version","parameters":[{"name":"documentId","required":true,"in":"path","schema":{"type":"string"}},{"name":"versionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Sources"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/refresh":{"post":{"operationId":"KnowledgeSourceDetailsController_refreshWebSource","summary":"Trigger web source refresh now","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Source Details"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/refresh-settings":{"put":{"operationId":"KnowledgeSourceDetailsController_updateWebRefreshSettings","summary":"Update web source refresh settings","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Source Details"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/versions":{"get":{"operationId":"KnowledgeSourceDetailsController_listWebSourceVersions","summary":"List web source versions","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Source Details"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/versions/{versionId}":{"get":{"operationId":"KnowledgeSourceDetailsController_getWebSourceVersion","summary":"Get web source version with full diff","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}},{"name":"versionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Source Details"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/versions/compare":{"get":{"operationId":"KnowledgeSourceDetailsController_compareWebSourceVersions","summary":"Compare two web source versions","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}},{"name":"v1","required":true,"in":"query","schema":{"type":"string"}},{"name":"v2","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Source Details"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/pages":{"get":{"operationId":"KnowledgeSourceDetailsController_listWebSourcePages","summary":"List web source child pages","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Source Details"],"security":[{"bearer":[]}]},"post":{"operationId":"KnowledgeSourceDetailsController_addWebSourcePage","summary":"Add child page to multi-page web source","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Source Details"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/pages/{pageId}":{"delete":{"operationId":"KnowledgeSourceDetailsController_removeWebSourcePage","summary":"Remove child page from web source","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}},{"name":"pageId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Source Details"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/tables":{"get":{"operationId":"KnowledgeSourceDetailsController_listSourceTables","summary":"List spreadsheet tables for source","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Source Details"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/tables/{tableId}":{"put":{"operationId":"KnowledgeSourceDetailsController_renameSourceTable","summary":"Rename spreadsheet table","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}},{"name":"tableId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Source Details"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/relationships":{"get":{"operationId":"KnowledgeSourceDetailsController_listRelationships","summary":"List source relationships","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Source Details"],"security":[{"bearer":[]}]},"post":{"operationId":"KnowledgeSourceDetailsController_createRelationship","summary":"Create source relationship","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Source Details"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/relationships/{relId}":{"delete":{"operationId":"KnowledgeSourceDetailsController_deleteRelationship","summary":"Delete source relationship","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}},{"name":"relId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Source Details"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/relationships/suggestions":{"get":{"operationId":"KnowledgeSourceDetailsController_suggestRelationships","summary":"Suggest source relationships with Haiku","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}},{"name":"collectionId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Source Details"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/sources/{sourceId}/relationships/suggestions/accept":{"post":{"operationId":"KnowledgeSourceDetailsController_acceptRelationshipSuggestion","summary":"Accept suggested source relationship","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Source Details"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/documents/{docId}/tags":{"post":{"operationId":"KnowledgeDocumentsController_addDocumentTags","summary":"Add tags to document","parameters":[{"name":"docId","required":true,"in":"path","description":"Document id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddTagsDto"}}}},"responses":{"200":{"description":"Document tags updated","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Documents"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/documents/{docId}/tags/{tagId}":{"delete":{"operationId":"KnowledgeDocumentsController_removeDocumentTag","parameters":[{"name":"docId","required":true,"in":"path","schema":{"type":"string"}},{"name":"tagId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Documents"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/documents/{docId}/accept-tags":{"post":{"operationId":"KnowledgeDocumentsController_acceptSuggestedTags","parameters":[{"name":"docId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDocumentTagsDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Documents"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/documents/{docId}/suggested-tags":{"delete":{"operationId":"KnowledgeDocumentsController_dismissSuggestedTags","parameters":[{"name":"docId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Documents"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/documents/{docId}/content":{"get":{"operationId":"KnowledgeDocumentsController_getDocumentContent","summary":"Get document content (text) or binary flag","parameters":[{"name":"docId","required":true,"in":"path","description":"Document id","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Documents"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/documents/{docId}/download":{"get":{"operationId":"KnowledgeDocumentsController_downloadDocument","summary":"Download or inline-view original document file","parameters":[{"name":"docId","required":true,"in":"path","description":"Document id","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Documents"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/documents/{docId}/metadata":{"get":{"operationId":"KnowledgeDocumentsController_getDocumentMetadata","summary":"Get extracted metadata for document","parameters":[{"name":"docId","required":true,"in":"path","description":"Document id","schema":{"type":"string"}}],"responses":{"200":{"description":"Extracted metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractedMetadataDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Documents"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/documents/{docId}/re-extract":{"post":{"operationId":"KnowledgeDocumentsController_reExtractMetadata","parameters":[{"name":"docId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Documents"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/documents/{docId}/vision-refine":{"post":{"operationId":"KnowledgeDocumentsController_refineVisionDescription","summary":"Refine AI vision description with user feedback","parameters":[{"name":"docId","required":true,"in":"path","description":"Document id","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Documents"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/documents/{docId}":{"delete":{"operationId":"KnowledgeDocumentsController_deleteDocument","summary":"Delete a standalone document","parameters":[{"name":"docId","required":true,"in":"path","description":"Document id","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Documents"],"security":[{"bearer":[]}]}},"/api/v1/knowledge/documents/bulk-tag":{"post":{"operationId":"KnowledgeDocumentsController_bulkTag","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkTagDocumentsDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge – Documents"],"security":[{"bearer":[]}]}},"/api/v1/output-routes":{"get":{"operationId":"OutputRoutingController_list","summary":"List output routes by installed agent","parameters":[{"name":"agentInstallId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Output routes returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutputRoutesListResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"400":{"description":"Missing query parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"],"security":[{"bearer":[]}]},"post":{"operationId":"OutputRoutingController_create","summary":"Create output route","parameters":[],"responses":{"201":{"description":"Output route created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutputRouteResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"],"security":[{"bearer":[]}]}},"/api/v1/output-routes/{id}":{"put":{"operationId":"OutputRoutingController_update","summary":"Update output route","parameters":[{"name":"id","required":true,"in":"path","description":"Output route id","schema":{"type":"string"}}],"responses":{"200":{"description":"Output route updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutputRouteResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"],"security":[{"bearer":[]}]},"delete":{"operationId":"OutputRoutingController_remove","summary":"Delete output route","parameters":[{"name":"id","required":true,"in":"path","description":"Output route id","schema":{"type":"string"}}],"responses":{"200":{"description":"Output route deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutputRouteDeleteResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"],"security":[{"bearer":[]}]}},"/api/v1/packs":{"post":{"operationId":"PacksController_create","summary":"Create a knowledge pack","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]},"get":{"operationId":"PacksController_list","summary":"List knowledge packs","parameters":[{"name":"category","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]}},"/api/v1/packs/templates":{"get":{"operationId":"PacksController_listTemplates","summary":"List available pack templates","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]}},"/api/v1/packs/from-template":{"post":{"operationId":"PacksController_createFromTemplate","summary":"Create a pack from a template","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFromTemplateDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]}},"/api/v1/packs/resolve":{"get":{"operationId":"PacksController_resolve","summary":"Preview resolved packs for an agent context","parameters":[{"name":"agentInstallId","required":true,"in":"query","schema":{"type":"string"}},{"name":"teamId","required":true,"in":"query","schema":{"type":"string"}},{"name":"projectId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]}},"/api/v1/packs/bindings-by-scope":{"get":{"operationId":"PacksController_listBindingsByScope","summary":"List all pack bindings for a given scope","parameters":[{"name":"scopeType","required":true,"in":"query","schema":{"type":"string"}},{"name":"scopeId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]}},"/api/v1/packs/my-permissions":{"get":{"operationId":"PacksController_myPermissions","summary":"Get current user pack permissions","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]}},"/api/v1/packs/{id}":{"get":{"operationId":"PacksController_getById","summary":"Get pack details","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]},"patch":{"operationId":"PacksController_update","summary":"Update a knowledge pack","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePackDto"}}}},"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]},"delete":{"operationId":"PacksController_remove","summary":"Delete a knowledge pack","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]}},"/api/v1/packs/{id}/directives":{"post":{"operationId":"PacksController_addDirective","summary":"Add directive to pack","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDirectiveDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]}},"/api/v1/packs/{id}/directives/{directiveId}":{"patch":{"operationId":"PacksController_updateDirective","summary":"Update a directive","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"directiveId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDirectiveDto"}}}},"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]},"delete":{"operationId":"PacksController_removeDirective","summary":"Remove a directive","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"directiveId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]}},"/api/v1/packs/{id}/sources":{"post":{"operationId":"PacksController_linkSource","summary":"Link a knowledge source to pack","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkSourceDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]}},"/api/v1/packs/{id}/sources/{sourceId}":{"delete":{"operationId":"PacksController_unlinkSource","summary":"Unlink a knowledge source from pack","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]}},"/api/v1/packs/{id}/bindings":{"post":{"operationId":"PacksController_createBinding","summary":"Create or update a pack binding","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBindingDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]},"get":{"operationId":"PacksController_listBindings","summary":"List bindings for a pack","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]}},"/api/v1/packs/{id}/bindings/{bindingId}":{"delete":{"operationId":"PacksController_removeBinding","summary":"Remove a pack binding","parameters":[{"name":"bindingId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Knowledge Packs"],"security":[{"bearer":[]}]}},"/api/v1/partner/auth/signin":{"post":{"operationId":"PartnerAuthController_signIn","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/auth/refresh":{"post":{"operationId":"PartnerAuthController_refresh","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/auth/forgot-password":{"post":{"operationId":"PartnerAuthController_forgotPassword","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/auth/reset-password":{"post":{"operationId":"PartnerAuthController_resetPassword","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/auth/activate-invite":{"post":{"operationId":"PartnerAuthController_activateInvite","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/auth/me":{"get":{"operationId":"PartnerAuthController_me","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/dashboard":{"get":{"operationId":"PartnerDashboardController_getDashboard","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/dashboard/analytics":{"get":{"operationId":"PartnerDashboardController_getAnalytics","parameters":[{"name":"period","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/clients":{"get":{"operationId":"PartnerClientsController_listClients","parameters":[{"name":"search","required":true,"in":"query","schema":{"type":"string"}},{"name":"plan","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"string"}},{"name":"limit","required":true,"in":"query","schema":{"type":"string"}},{"name":"sort","required":true,"in":"query","schema":{"type":"string"}},{"name":"order","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}},"post":{"operationId":"PartnerClientsController_createClient","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/clients/{companyId}":{"get":{"operationId":"PartnerClientsController_getClient","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}},"patch":{"operationId":"PartnerClientsController_updateClient","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/clients/{companyId}/link":{"post":{"operationId":"PartnerClientsController_linkClient","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/clients/{companyId}/users":{"get":{"operationId":"PartnerClientsController_listClientUsers","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/clients/{companyId}/users/invite":{"post":{"operationId":"PartnerClientsController_inviteClientUser","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/clients/{companyId}/agents":{"get":{"operationId":"PartnerClientsController_listClientAgents","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/commissions":{"get":{"operationId":"PartnerCommissionsController_listCommissions","parameters":[{"name":"status","required":true,"in":"query","schema":{"type":"string"}},{"name":"companyId","required":true,"in":"query","schema":{"type":"string"}},{"name":"from","required":true,"in":"query","schema":{"type":"string"}},{"name":"to","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"string"}},{"name":"limit","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/commissions/summary":{"get":{"operationId":"PartnerCommissionsController_getSummary","parameters":[{"name":"period","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/commissions/payouts":{"get":{"operationId":"PartnerCommissionsController_listPayouts","parameters":[{"name":"status","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"string"}},{"name":"limit","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/team":{"get":{"operationId":"PartnerTeamController_listMembers","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/team/invite":{"post":{"operationId":"PartnerTeamController_invite","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/team/{userId}":{"patch":{"operationId":"PartnerTeamController_updateMember","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}},"delete":{"operationId":"PartnerTeamController_removeMember","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/demo":{"get":{"operationId":"PartnerDemoController_listDemoEnvironments","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}},"post":{"operationId":"PartnerDemoController_provision","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/demo/{envId}/reset":{"post":{"operationId":"PartnerDemoController_reset","parameters":[{"name":"envId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/industry-packs":{"get":{"operationId":"PartnerIndustryPacksController_list","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/resources/progress":{"get":{"operationId":"PartnerResourcesController_getProgress","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/partner/resources/progress/{resourceId}":{"patch":{"operationId":"PartnerResourcesController_toggleProgress","parameters":[{"name":"resourceId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/admin/partners":{"get":{"operationId":"AdminPartnersController_list","parameters":[{"name":"search","required":true,"in":"query","schema":{"type":"string"}},{"name":"tier","required":true,"in":"query","schema":{"type":"string"}},{"name":"status","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"string"}},{"name":"limit","required":true,"in":"query","schema":{"type":"string"}},{"name":"sort","required":true,"in":"query","schema":{"type":"string"}},{"name":"order","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}},"post":{"operationId":"AdminPartnersController_create","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/admin/partners/{id}":{"get":{"operationId":"AdminPartnersController_getDetail","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}},"patch":{"operationId":"AdminPartnersController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/admin/partners/{id}/users":{"post":{"operationId":"AdminPartnersController_createUser","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/admin/partners/{id}/activate":{"post":{"operationId":"AdminPartnersController_activate","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/admin/partners/{id}/suspend":{"post":{"operationId":"AdminPartnersController_suspend","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/admin/partners/{id}/unlink/{companyId}":{"post":{"operationId":"AdminPartnersController_unlinkClient","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/workspace/company":{"get":{"operationId":"CompaniesController_getCompany","summary":"Get workspace company","parameters":[],"responses":{"200":{"description":"Company returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]},"put":{"operationId":"CompaniesController_updateCompany","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/company/settings":{"put":{"operationId":"CompaniesController_mergeCompanySettings","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/company/logo":{"post":{"operationId":"CompaniesController_uploadLogo","summary":"Upload company logo","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]},"delete":{"operationId":"CompaniesController_deleteLogo","summary":"Remove company logo","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/teams":{"get":{"operationId":"TeamsController_listTeams","summary":"List teams","parameters":[],"responses":{"200":{"description":"Teams returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]},"post":{"operationId":"TeamsController_createTeam","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/teams/{teamId}/settings":{"put":{"operationId":"TeamsController_mergeTeamSettings","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/teams/{teamId}/members":{"get":{"operationId":"TeamsController_getTeamMembers","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]},"post":{"operationId":"TeamsController_addTeamMember","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/teams/{teamId}/members/{userId}":{"put":{"operationId":"TeamsController_updateTeamMember","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}},{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]},"delete":{"operationId":"TeamsController_removeTeamMember","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}},{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/teams/{teamId}/members/{userId}/nudge-profile":{"post":{"operationId":"TeamsController_nudgeProfile","summary":"Nudge a member to complete profile","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}},{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/teams/{teamId}/agents":{"get":{"operationId":"TeamsController_getTeamAgents","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/teams/{teamId}/knowledge":{"get":{"operationId":"TeamsController_getTeamKnowledge","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/teams/{teamId}/default-collections":{"get":{"operationId":"TeamsController_getDefaultCollections","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]},"post":{"operationId":"TeamsController_addDefaultCollection","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/teams/{teamId}/default-collections/{collectionId}":{"delete":{"operationId":"TeamsController_removeDefaultCollection","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}},{"name":"collectionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/teams/{teamId}/scan-document":{"post":{"operationId":"TeamsController_scanDocument","summary":"Scan a document and extract context suggestions for a team","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/teams/{teamId}/apply-scan":{"post":{"operationId":"TeamsController_applyScan","summary":"Apply accepted document scan results to team context","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/teams/{teamId}":{"get":{"operationId":"TeamsController_getTeam","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]},"put":{"operationId":"TeamsController_updateTeam","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]},"delete":{"operationId":"TeamsController_deleteTeam","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/members":{"get":{"operationId":"UsersController_listMembers","summary":"List workspace members","parameters":[],"responses":{"200":{"description":"Members returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/members/invite":{"post":{"operationId":"UsersController_inviteMember","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/users/me":{"get":{"operationId":"CurrentUserController_getMe","summary":"Get current user profile","parameters":[],"responses":{"200":{"description":"Current user returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/users/me/preferences":{"put":{"operationId":"CurrentUserController_updatePreferences","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/users/me/teams":{"get":{"operationId":"CurrentUserController_getMyTeams","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/users/me/teams/{teamId}/primary":{"put":{"operationId":"CurrentUserController_setPrimaryTeam","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/users/push-token":{"post":{"operationId":"CurrentUserController_registerPushToken","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/users/avatar":{"post":{"operationId":"CurrentUserController_uploadAvatar","summary":"Upload profile avatar","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]},"delete":{"operationId":"CurrentUserController_deleteAvatar","summary":"Delete profile avatar","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/users/analyze-linkedin":{"post":{"operationId":"CurrentUserController_analyzeLinkedIn","summary":"Analyze pasted LinkedIn profile text and extract structured fields","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/users/import-linkedin":{"post":{"operationId":"CurrentUserController_importLinkedIn","summary":"Import selected LinkedIn fields into user profile","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/join-requests":{"get":{"operationId":"JoinRequestsController_list","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/join-requests/{id}/approve":{"put":{"operationId":"JoinRequestsController_approve","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/join-requests/{id}/deny":{"put":{"operationId":"JoinRequestsController_deny","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/teams/{teamId}/projects":{"get":{"operationId":"ProjectsController_listForTeam","summary":"List projects for a team","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}},{"name":"status","required":true,"in":"query","schema":{"type":"string"}},{"name":"clientId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]},"post":{"operationId":"ProjectsController_create","summary":"Create project under team","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/teams/{teamId}/project-templates":{"get":{"operationId":"ProjectsController_listProjectTemplatesForTeam","summary":"List project templates for team category","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/projects/{projectId}":{"get":{"operationId":"ProjectsController_getById","summary":"Get project detail","parameters":[{"name":"projectId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]},"put":{"operationId":"ProjectsController_update","summary":"Update project","parameters":[{"name":"projectId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectDto"}}}},"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]},"delete":{"operationId":"ProjectsController_remove","summary":"Delete project","parameters":[{"name":"projectId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/projects/{projectId}/members":{"get":{"operationId":"ProjectsController_listMembers","summary":"List project members","parameters":[{"name":"projectId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/projects/{projectId}/members/me":{"get":{"operationId":"ProjectsController_myMembership","summary":"Get my project membership and assignment context","parameters":[{"name":"projectId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/projects/{projectId}/members/sync":{"post":{"operationId":"ProjectsController_syncMembers","summary":"Sync project lead and members","parameters":[{"name":"projectId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncMembersDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/projects/{projectId}/scan-document":{"post":{"operationId":"ProjectsController_scanDocument","summary":"Scan a document and extract context suggestions for a project","parameters":[{"name":"projectId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/projects/{projectId}/apply-scan":{"post":{"operationId":"ProjectsController_applyScan","summary":"Apply accepted document scan results to project context","parameters":[{"name":"projectId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyScanDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/workspace/context-templates":{"get":{"operationId":"ContextTemplatesController_list","summary":"List available context templates","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/templates/team":{"get":{"operationId":"TemplatesController_listTeamTemplates","summary":"List team templates","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/templates/project":{"get":{"operationId":"TemplatesController_listProjectTemplates","summary":"List project templates by team category","parameters":[{"name":"teamCategory","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/industry-packs":{"get":{"operationId":"IndustryPacksController_list","summary":"List available industry packs","parameters":[],"responses":{"200":{"description":"Pack list","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Industry Packs"],"security":[{"bearer":[]}]}},"/api/v1/industry-packs/installs":{"get":{"operationId":"IndustryPacksController_listInstalls","summary":"List installed packs for current company","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Industry Packs"],"security":[{"bearer":[]}]}},"/api/v1/industry-packs/{slug}":{"get":{"operationId":"IndustryPacksController_getBySlug","summary":"Get pack details with install status","parameters":[{"name":"slug","required":true,"in":"path","description":"Pack slug","schema":{"type":"string"}}],"responses":{"200":{"description":"Pack details","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Industry Packs"],"security":[{"bearer":[]}]}},"/api/v1/industry-packs/{slug}/install":{"post":{"operationId":"IndustryPacksController_install","summary":"Install an industry pack","parameters":[{"name":"slug","required":true,"in":"path","description":"Pack slug","schema":{"type":"string"}}],"responses":{"201":{"description":"Pack installed","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Industry Packs"],"security":[{"bearer":[]}]}},"/api/v1/industry-packs/installs/{installId}/checklist":{"patch":{"operationId":"IndustryPacksController_updateChecklist","summary":"Update setup checklist","parameters":[{"name":"installId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Industry Packs"],"security":[{"bearer":[]}]}},"/api/v1/workflows":{"get":{"operationId":"WorkflowsController_list","summary":"List workflows","parameters":[{"name":"teamId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Workflows list returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workflows"],"security":[{"bearer":[]}]},"post":{"operationId":"WorkflowsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkflowDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workflows"],"security":[{"bearer":[]}]}},"/api/v1/workflows/{id}":{"get":{"operationId":"WorkflowsController_getOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workflows"],"security":[{"bearer":[]}]},"put":{"operationId":"WorkflowsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkflowDto"}}}},"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workflows"],"security":[{"bearer":[]}]},"delete":{"operationId":"WorkflowsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workflows"],"security":[{"bearer":[]}]}},"/api/v1/workflows/{id}/run":{"post":{"operationId":"WorkflowsController_run","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunWorkflowDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workflows"],"security":[{"bearer":[]}]}},"/api/v1/workflows/{id}/runs":{"get":{"operationId":"WorkflowsController_listRuns","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workflows"],"security":[{"bearer":[]}]}},"/api/v1/workflows/{id}/runs/{runId}":{"get":{"operationId":"WorkflowsController_getRun","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"runId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workflows"],"security":[{"bearer":[]}]}},"/api/v1/workflows/{id}/runs/{runId}/resume":{"post":{"operationId":"WorkflowsController_resumeRun","summary":"Resume a failed workflow run from a specific step","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"runId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workflows"],"security":[{"bearer":[]}]}},"/api/v1/workflows/{id}/webhook":{"post":{"operationId":"WorkflowsController_generateWebhook","summary":"Generate webhook credentials for a workflow","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workflows"],"security":[{"bearer":[]}]},"get":{"operationId":"WorkflowsController_getWebhookInfo","summary":"Get webhook info for a workflow","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workflows"],"security":[{"bearer":[]}]}},"/api/v1/workflows/{id}/events":{"get":{"operationId":"WorkflowsController_getEventLog","summary":"Get event trigger log for a workflow","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workflows"],"security":[{"bearer":[]}]}},"/api/v1/workflow-templates":{"get":{"operationId":"WorkflowTemplatesController_list","summary":"List available workflow templates","parameters":[{"name":"category","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Template list","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workflow Templates"],"security":[{"bearer":[]}]}},"/api/v1/workflow-templates/{slug}":{"get":{"operationId":"WorkflowTemplatesController_getBySlug","summary":"Get template details","parameters":[{"name":"slug","required":true,"in":"path","description":"Template slug","schema":{"type":"string"}}],"responses":{"200":{"description":"Template details with agent availability","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workflow Templates"],"security":[{"bearer":[]}]}},"/api/v1/workflow-templates/{slug}/install":{"post":{"operationId":"WorkflowTemplatesController_install","summary":"Install workflow from template","parameters":[{"name":"slug","required":true,"in":"path","description":"Template slug","schema":{"type":"string"}}],"responses":{"201":{"description":"Workflow created from template","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workflow Templates"],"security":[{"bearer":[]}]}},"/api/v1/workflows/webhook/{webhookId}":{"post":{"operationId":"WorkflowWebhookController_handleWebhook","parameters":[{"name":"webhookId","required":true,"in":"path","schema":{"type":"string"}},{"name":"x-webhook-signature","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workflow Webhooks"]}},"/api/v1/schedules":{"get":{"operationId":"SchedulingController_list","summary":"List schedules","parameters":[{"name":"teamId","required":true,"in":"query","schema":{"type":"string"}},{"name":"clientId","required":true,"in":"query","schema":{"type":"string"}},{"name":"projectId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Schedules returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Schedules"],"security":[{"bearer":[]}]},"post":{"operationId":"SchedulingController_create","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Schedules"],"security":[{"bearer":[]}]}},"/api/v1/schedules/by-target/{targetId}":{"get":{"operationId":"SchedulingController_listByTarget","parameters":[{"name":"targetId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Schedules"],"security":[{"bearer":[]}]}},"/api/v1/schedules/{id}":{"get":{"operationId":"SchedulingController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Schedules"],"security":[{"bearer":[]}]},"put":{"operationId":"SchedulingController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Schedules"],"security":[{"bearer":[]}]},"delete":{"operationId":"SchedulingController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Schedules"],"security":[{"bearer":[]}]}},"/api/v1/schedules/{id}/runs":{"get":{"operationId":"SchedulingController_getRunHistory","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Schedules"],"security":[{"bearer":[]}]}},"/api/v1/schedules/{id}/toggle":{"put":{"operationId":"SchedulingController_toggle","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Schedules"],"security":[{"bearer":[]}]}},"/api/v1/admin/scheduler/status":{"get":{"operationId":"AdminSchedulerController_getStatus","summary":"Get scheduler health and queue status","parameters":[],"responses":{"200":{"description":"Scheduler status returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchedulerStatusResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Schedules"],"security":[{"bearer":[]}]}},"/api/v1/admin/scheduler/dead-letter":{"get":{"operationId":"AdminSchedulerController_getDeadLetter","summary":"List dead-letter jobs","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"string"}}],"responses":{"200":{"description":"Dead-letter jobs returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeadLetterListResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Schedules"],"security":[{"bearer":[]}]}},"/api/v1/admin/scheduler/dead-letter/{jobId}/retry":{"post":{"operationId":"AdminSchedulerController_retryDeadLetter","summary":"Retry dead-letter job","parameters":[{"name":"jobId","required":true,"in":"path","description":"Dead-letter job id","schema":{"type":"string"}}],"responses":{"201":{"description":"Retry attempted","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"404":{"description":"Job not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Schedules"],"security":[{"bearer":[]}]}},"/api/v1/admin/scheduler/dead-letter/{jobId}":{"delete":{"operationId":"AdminSchedulerController_dismissDeadLetter","summary":"Dismiss dead-letter job","parameters":[{"name":"jobId","required":true,"in":"path","description":"Dead-letter job id","schema":{"type":"string"}}],"responses":{"200":{"description":"Job dismissed","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Schedules"],"security":[{"bearer":[]}]}},"/api/v1/automation/launch":{"post":{"operationId":"AutomationController_launchAutomation","summary":"Trigger automation run","description":"Submits automation input and returns run metadata immediately.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LaunchAutomationDto"}}}},"responses":{"201":{"description":"Automation queued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationRunDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"],"security":[{"bearer":[]}]}},"/api/v1/automation/preflight":{"post":{"operationId":"AutomationController_preflightCheck","summary":"Pre-run readiness check","description":"Evaluates whether the agent run has sufficient context before execution.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreflightCheckDto"}}}},"responses":{"200":{"description":"Preflight result","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"],"security":[{"bearer":[]}]}},"/api/v1/automation/runs":{"get":{"operationId":"AutomationController_listRuns","summary":"List automation runs","parameters":[{"name":"agentInstallId","required":false,"in":"query","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string"}},{"name":"teamId","required":false,"in":"query","schema":{"type":"string"}},{"name":"projectId","required":false,"in":"query","schema":{"type":"string"}},{"name":"mine","required":false,"in":"query","description":"If \"true\", only return runs triggered by the current user","schema":{"type":"string"}},{"name":"triggerType","required":false,"in":"query","description":"Filter by trigger type (manual, schedule, rerun, voice, sub_agent, event, webhook)","schema":{"type":"string"}}],"responses":{"200":{"description":"Automation runs list","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AutomationRunDto"}}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"],"security":[{"bearer":[]}]}},"/api/v1/automation/runs/{runId}":{"get":{"operationId":"AutomationController_getRunDetail","summary":"Get automation run details","parameters":[{"name":"runId","required":true,"in":"path","description":"Automation run id","schema":{"type":"string"}}],"responses":{"200":{"description":"Automation run details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationRunDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"404":{"description":"Run not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"],"security":[{"bearer":[]}]}},"/api/v1/automation/runs/{runId}/cancel":{"post":{"operationId":"AutomationController_cancelRun","summary":"Cancel automation run","parameters":[{"name":"runId","required":true,"in":"path","description":"Automation run id","schema":{"type":"string"}}],"responses":{"200":{"description":"Run cancellation result","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"],"security":[{"bearer":[]}]}},"/api/v1/automation/callback/{callbackToken}":{"post":{"operationId":"AutomationController_handleCallback","summary":"Automation callback endpoint","description":"Receives callback payload from external executor using callback token auth (not JWT).","parameters":[{"name":"callbackToken","required":true,"in":"path","description":"Callback token","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","example":"completed"},"result":{"type":"object","additionalProperties":true},"error":{"type":"string"},"artifacts":{"type":"array","items":{"type":"object"}}},"required":["status"]}}}},"responses":{"201":{"description":"Callback accepted","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"]}},"/api/v1/automation/templates":{"get":{"operationId":"AutomationController_listTemplates","parameters":[{"name":"agentInstallId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"]},"post":{"operationId":"AutomationController_createTemplate","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTemplateDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"]}},"/api/v1/automation/templates/{id}":{"delete":{"operationId":"AutomationController_deleteTemplate","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"]}},"/api/v1/automation/external":{"get":{"operationId":"AutomationController_listExternalAutomations","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"]},"post":{"operationId":"AutomationController_createExternalAutomation","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateExternalAutomationDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"]}},"/api/v1/automation/external/{id}":{"put":{"operationId":"AutomationController_updateExternalAutomation","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateExternalAutomationDto"}}}},"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"]},"delete":{"operationId":"AutomationController_deleteExternalAutomation","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"]}},"/api/v1/automation/external/{id}/test":{"post":{"operationId":"AutomationController_testExternalConnection","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"]}},"/api/v1/admin/n8n/status":{"get":{"operationId":"AdminN8nController_status","summary":"Get n8n connectivity and metrics status","parameters":[],"responses":{"200":{"description":"n8n status returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/N8nStatusResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"],"security":[{"bearer":[]}]}},"/api/v1/admin/n8n/workflows":{"get":{"operationId":"AdminN8nController_workflows","summary":"List n8n workflows","parameters":[],"responses":{"200":{"description":"n8n workflows returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/N8nWorkflowsResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"],"security":[{"bearer":[]}]}},"/api/v1/admin/n8n/workflows/reimport":{"post":{"operationId":"AdminN8nController_reimport","summary":"Reimport Sempleo n8n workflow templates","parameters":[],"responses":{"201":{"description":"Templates reimported","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Automations"],"security":[{"bearer":[]}]}},"/api/v1/audit":{"get":{"operationId":"AuditController_query","summary":"Query audit logs","parameters":[{"name":"action","required":true,"in":"query","schema":{"type":"string"}},{"name":"resourceType","required":true,"in":"query","schema":{"type":"string"}},{"name":"resourceId","required":true,"in":"query","schema":{"type":"string"}},{"name":"actorId","required":true,"in":"query","schema":{"type":"string"}},{"name":"startDate","required":true,"in":"query","schema":{"type":"string"}},{"name":"endDate","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"string"}},{"name":"pageSize","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Audit records returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Governance"],"security":[{"bearer":[]}]}},"/api/v1/audit/context-snapshots":{"get":{"operationId":"AuditController_listContextSnapshots","summary":"List context snapshots for compliance audit","parameters":[{"name":"page","required":true,"in":"query","schema":{"type":"string"}},{"name":"pageSize","required":true,"in":"query","schema":{"type":"string"}},{"name":"startDate","required":true,"in":"query","schema":{"type":"string"}},{"name":"endDate","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Context snapshots returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Governance"],"security":[{"bearer":[]}]}},"/api/v1/audit/context-snapshots/{runId}":{"get":{"operationId":"AuditController_getContextSnapshot","summary":"Get context snapshot for a specific run","parameters":[{"name":"runId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Context snapshot returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Governance"],"security":[{"bearer":[]}]}},"/api/v1/audit/export":{"get":{"operationId":"AuditController_exportCsv","summary":"Export audit logs as CSV","parameters":[{"name":"startDate","required":true,"in":"query","schema":{"type":"string"}},{"name":"endDate","required":true,"in":"query","schema":{"type":"string"}},{"name":"action","required":true,"in":"query","schema":{"type":"string"}},{"name":"resourceType","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"CSV file download","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Governance"],"security":[{"bearer":[]}]}},"/api/v1/audit/retention":{"get":{"operationId":"AuditController_getRetentionPolicy","summary":"Get audit log retention policy","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Governance"],"security":[{"bearer":[]}]},"post":{"operationId":"AuditController_updateRetentionPolicy","summary":"Update audit log retention policy","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Governance"],"security":[{"bearer":[]}]}},"/api/v1/governance/active-restrictions":{"get":{"operationId":"GovernanceController_activeRestrictions","summary":"Active governance restrictions for the current company","parameters":[],"responses":{"200":{"description":"Active restrictions returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Governance"],"security":[{"bearer":[]}]}},"/api/v1/governance/policies":{"get":{"operationId":"GovernanceController_listPolicies","summary":"List governance policies","parameters":[],"responses":{"200":{"description":"Policies returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Governance"],"security":[{"bearer":[]}]},"post":{"operationId":"GovernanceController_createPolicy","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Governance"],"security":[{"bearer":[]}]}},"/api/v1/governance/policies/{id}":{"put":{"operationId":"GovernanceController_updatePolicy","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Governance"],"security":[{"bearer":[]}]},"delete":{"operationId":"GovernanceController_deletePolicy","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Governance"],"security":[{"bearer":[]}]}},"/api/v1/governance/approvals":{"get":{"operationId":"GovernanceController_listApprovals","parameters":[{"name":"page","required":true,"in":"query","schema":{"type":"string"}},{"name":"status","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Governance"],"security":[{"bearer":[]}]}},"/api/v1/governance/approvals/pending":{"get":{"operationId":"GovernanceController_pendingApprovals","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Governance"],"security":[{"bearer":[]}]}},"/api/v1/governance/approvals/{id}/decide":{"post":{"operationId":"GovernanceController_decide","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Governance"],"security":[{"bearer":[]}]}},"/api/v1/analytics/summary":{"get":{"operationId":"AnalyticsController_companySummary","summary":"Get analytics summary","parameters":[{"name":"period","required":true,"in":"query","schema":{"type":"string"}},{"name":"teamId","required":true,"in":"query","schema":{"type":"string"}},{"name":"projectId","required":true,"in":"query","schema":{"type":"string"}},{"name":"clientId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Analytics summary returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Analytics"],"security":[{"bearer":[]}]}},"/api/v1/analytics/quality":{"get":{"operationId":"AnalyticsController_qualityMetrics","summary":"Get agent quality metrics (edit rate, acceptance, abandonment)","parameters":[{"name":"period","required":true,"in":"query","schema":{"type":"string"}},{"name":"teamId","required":true,"in":"query","schema":{"type":"string"}},{"name":"agentInstallId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Quality metrics returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Analytics"],"security":[{"bearer":[]}]}},"/api/v1/analytics/agents/{installId}":{"get":{"operationId":"AnalyticsController_agentAnalytics","parameters":[{"name":"installId","required":true,"in":"path","schema":{"type":"string"}},{"name":"days","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Analytics"],"security":[{"bearer":[]}]}},"/api/v1/analytics/users/{userId}":{"get":{"operationId":"AnalyticsController_userAnalytics","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"days","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Analytics"],"security":[{"bearer":[]}]}},"/api/v1/analytics/context-efficiency":{"get":{"operationId":"AnalyticsController_contextEfficiency","summary":"Get context engine efficiency metrics","parameters":[{"name":"period","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Context efficiency metrics returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Analytics"],"security":[{"bearer":[]}]}},"/api/v1/analytics/context-quality":{"get":{"operationId":"AnalyticsController_contextQualityCorrelation","summary":"Get context quality correlation data","parameters":[{"name":"period","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Context quality correlation returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Analytics"],"security":[{"bearer":[]}]}},"/api/v1/analytics/context-health":{"get":{"operationId":"AnalyticsController_contextHealth","summary":"Get workspace-level context health overview","parameters":[{"name":"period","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Context health summary returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Analytics"],"security":[{"bearer":[]}]}},"/api/v1/analytics/agents/{installId}/context-quality":{"get":{"operationId":"AnalyticsController_agentContextQuality","summary":"Get per-agent context quality breakdown","parameters":[{"name":"installId","required":true,"in":"path","schema":{"type":"string"}},{"name":"period","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Agent context quality returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Analytics"],"security":[{"bearer":[]}]}},"/api/v1/analytics/sources/{sourceId}/quality":{"get":{"operationId":"AnalyticsController_sourceQuality","summary":"Get per-source quality estimate with optimization suggestions","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Source quality estimate returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Analytics"],"security":[{"bearer":[]}]}},"/api/v1/analytics/sources/quality-batch":{"post":{"operationId":"AnalyticsController_sourceQualityBatch","summary":"Get batch quality indicators for multiple sources","parameters":[],"responses":{"200":{"description":"Batch quality indicators returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Analytics"],"security":[{"bearer":[]}]}},"/api/v1/analytics/pre-run-context-health":{"get":{"operationId":"AnalyticsController_preRunContextHealth","summary":"Get pre-run context health check for the run wizard","parameters":[{"name":"installId","required":true,"in":"query","schema":{"type":"string"}},{"name":"teamId","required":true,"in":"query","schema":{"type":"string"}},{"name":"projectId","required":true,"in":"query","schema":{"type":"string"}},{"name":"clientId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Pre-run context health returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Analytics"],"security":[{"bearer":[]}]}},"/auth/sso/authorize":{"get":{"operationId":"SsoController_authorize","summary":"Get SSO authorize URL (public)","description":"Public endpoint. Returns SSO authorization URL for the email domain.","parameters":[{"name":"email","required":true,"in":"query","schema":{"example":"user@sdu.dk","type":"string"}}],"responses":{"200":{"description":"Authorization URL returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/api/v1/auth/sso/authorize":{"get":{"operationId":"SsoController_authorizeV1","summary":"Get SSO authorize URL v1 (public)","description":"Public endpoint variant under /api/v1.","parameters":[{"name":"email","required":true,"in":"query","schema":{"example":"user@sdu.dk","type":"string"}}],"responses":{"200":{"description":"Authorization URL returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/auth/sso/check":{"get":{"operationId":"SsoController_checkSso","summary":"Check SSO by email (public)","description":"Public endpoint. Checks if domain has active SSO.","parameters":[{"name":"email","required":true,"in":"query","schema":{"example":"user@sdu.dk","type":"string"}}],"responses":{"200":{"description":"SSO availability response","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/api/v1/auth/sso/check":{"get":{"operationId":"SsoController_checkSsoV1","summary":"Check SSO by email v1 (public)","description":"Public endpoint variant under /api/v1.","parameters":[{"name":"email","required":true,"in":"query","schema":{"example":"user@sdu.dk","type":"string"}}],"responses":{"200":{"description":"SSO availability response","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/auth/sso/callback":{"get":{"operationId":"SsoController_callback","summary":"SSO callback (public)","description":"Public endpoint called by the identity provider after user consent.","parameters":[{"name":"code","required":true,"in":"query","schema":{"example":"oauth-code-value","type":"string"}}],"responses":{"302":{"description":"Redirects user back to frontend with tokens","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/api/v1/workspace/sso":{"get":{"operationId":"SsoController_getConfig","summary":"Get SSO configuration","parameters":[],"responses":{"200":{"description":"Returns SSO config for workspace admin","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"],"security":[{"bearer":[]}]},"post":{"operationId":"SsoController_createConfig","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]},"put":{"operationId":"SsoController_saveConfig","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]},"delete":{"operationId":"SsoController_disableConfig","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/api/v1/sso/config":{"get":{"operationId":"SsoController_getConfigLegacy","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]},"put":{"operationId":"SsoController_saveConfigLegacy","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/api/v1/workspace/sso/verify-domain":{"post":{"operationId":"SsoController_verifyDomain","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/api/v1/workspace/sso/skip-verification":{"post":{"operationId":"SsoController_skipVerification","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/api/v1/workspace/sso/connect":{"post":{"operationId":"SsoController_connect","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/api/v1/workspace/sso/connection-status":{"get":{"operationId":"SsoController_connectionStatus","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/api/v1/workspace/sso/test":{"post":{"operationId":"SsoController_testConnection","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/api/v1/workspace/sso/users":{"get":{"operationId":"SsoController_listSsoUsers","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"]}},"/api/v1/api-keys":{"get":{"operationId":"ApiKeysController_list","summary":"List API keys","parameters":[],"responses":{"200":{"description":"API keys returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysListResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"],"security":[{"bearer":[]}]},"post":{"operationId":"ApiKeysController_create","summary":"Create API key","parameters":[],"responses":{"201":{"description":"API key created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreateResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"],"security":[{"bearer":[]}]}},"/api/v1/api-keys/context":{"post":{"operationId":"ApiKeysController_createContextKey","summary":"Create scoped Context API key","parameters":[],"responses":{"201":{"description":"Context API key created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreateResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"],"security":[{"bearer":[]}]},"get":{"operationId":"ApiKeysController_listContext","summary":"List all API keys including context keys","parameters":[],"responses":{"200":{"description":"API keys returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysListResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"],"security":[{"bearer":[]}]}},"/api/v1/api-keys/context/usage":{"get":{"operationId":"ApiKeysController_contextUsage","summary":"Get Context API usage analytics for this workspace","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"],"security":[{"bearer":[]}]}},"/api/v1/api-keys/{id}/scopes":{"post":{"operationId":"ApiKeysController_updateScopes","summary":"Update scopes for a context key","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"],"security":[{"bearer":[]}]}},"/api/v1/api-keys/{id}":{"delete":{"operationId":"ApiKeysController_revoke","summary":"Revoke API key","parameters":[{"name":"id","required":true,"in":"path","description":"API key id","schema":{"type":"string"}}],"responses":{"200":{"description":"API key revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyRevokeResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Authentication"],"security":[{"bearer":[]}]}},"/api/v1/assistant/ask":{"post":{"operationId":"AssistantController_ask","summary":"Ask assistant (single response)","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskAssistantDto"}}}},"responses":{"201":{"description":"Assistant response returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantAskResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"],"security":[{"bearer":[]}]}},"/api/v1/assistant/ask/stream":{"post":{"operationId":"AssistantController_askStream","summary":"Ask assistant (streaming)","description":"Streams newline-delimited JSON events as assistant generates output.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskAssistantDto"}}}},"responses":{"201":{"description":"Streaming response initiated","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"],"security":[{"bearer":[]}]}},"/api/v1/assistant/contextual/stream":{"post":{"operationId":"AssistantController_contextualStream","summary":"Contextual assistant (streaming)","description":"Streams contextual assistant responses with team/client/project awareness and conversation history.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskContextualAssistantDto"}}}},"responses":{"201":{"description":"Streaming response initiated","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"],"security":[{"bearer":[]}]}},"/api/v1/assistant/feedback":{"post":{"operationId":"AssistantController_feedback","summary":"Submit assistant feedback","parameters":[],"responses":{"201":{"description":"Feedback accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantFeedbackResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"],"security":[{"bearer":[]}]}},"/api/v1/clients":{"get":{"operationId":"ClientsController_list","summary":"List clients","parameters":[{"name":"status","required":true,"in":"query","schema":{"type":"string"}},{"name":"search","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"string"}},{"name":"pageSize","required":true,"in":"query","schema":{"type":"string"}},{"name":"includeArchived","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]},"post":{"operationId":"ClientsController_create","summary":"Create client","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/clients/crm-status":{"get":{"operationId":"ClientsController_crmStatus","summary":"Get connected CRM status for this company","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/clients/import-crm":{"post":{"operationId":"ClientsController_importCrm","summary":"Import clients from connected CRM provider","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/clients/sync-crm":{"post":{"operationId":"ClientsController_syncCrm","summary":"Sync existing CRM-linked clients","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/clients/analyze-website":{"post":{"operationId":"ClientsController_analyzeWebsite","summary":"Analyze a website and extract client context fields","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/clients/{clientId}/fill-from-website":{"post":{"operationId":"ClientsController_fillFromWebsite","summary":"Analyze website and fill empty client context fields","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/clients/{clientId}/scan-document":{"post":{"operationId":"ClientsController_scanDocument","summary":"Scan a document and extract context suggestions for a client","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/clients/{clientId}/apply-scan":{"post":{"operationId":"ClientsController_applyScan","summary":"Apply accepted document scan results to client context","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/clients/{clientId}":{"get":{"operationId":"ClientsController_getById","summary":"Get client detail","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]},"patch":{"operationId":"ClientsController_update","summary":"Update client","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]},"put":{"operationId":"ClientsController_replace","summary":"Update client (PUT alias)","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]},"delete":{"operationId":"ClientsController_archive","summary":"Archive client","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/clients/{clientId}/context":{"get":{"operationId":"ClientsController_context","summary":"Get client context fields","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/clients/{clientId}/context/versions":{"get":{"operationId":"ClientsController_contextVersions","summary":"Get client context version history","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}},{"name":"field","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/clients/{clientId}/context/freshness":{"get":{"operationId":"ClientsController_contextFreshness","summary":"Get client context freshness state","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/clients/{clientId}/collections":{"get":{"operationId":"ClientsController_listCollections","summary":"List collections linked to this client","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/clients/{clientId}/default-collections":{"get":{"operationId":"ClientsController_listDefaultCollections","summary":"List client default collections","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]},"post":{"operationId":"ClientsController_addDefaultCollection","summary":"Add client default collection","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/clients/{clientId}/default-collections/{collectionId}":{"delete":{"operationId":"ClientsController_removeDefaultCollection","summary":"Remove client default collection","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}},{"name":"collectionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/clients/{clientId}/projects":{"get":{"operationId":"ClientsController_projects","summary":"List projects for client","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/clients/{clientId}/analytics":{"get":{"operationId":"ClientsController_analytics","summary":"Get client analytics summary","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Clients"],"security":[{"bearer":[]}]}},"/api/v1/ai/assist-context":{"post":{"operationId":"ContextAssistController_assistContext","summary":"Generate AI context assist suggestion","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistContextDto"}}}},"responses":{"201":{"description":"Context assist suggestion returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextAssistResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"403":{"description":"Insufficient credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Integrations"],"security":[{"bearer":[]}]}},"/api/v1/dashboard":{"get":{"operationId":"DashboardController_getDashboard","summary":"Get personalized dashboard payload","parameters":[{"name":"teamId","required":false,"in":"query","schema":{"type":"string"}},{"name":"clientId","required":false,"in":"query","schema":{"type":"string"}},{"name":"projectId","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Dashboard payload returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Analytics"],"security":[{"bearer":[]}]}},"/api/v1/voice/resolve":{"post":{"operationId":"VoiceController_resolve","summary":"Resolve spoken command to agent intent","description":"Matches transcript to an installed agent, extracts run config, and returns required follow-up fields.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceResolveDto"}}}},"responses":{"201":{"description":"Voice command resolved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceResolveResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"400":{"description":"Invalid voice payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"403":{"description":"Insufficient credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Voice"],"security":[{"bearer":[]}]}},"/api/v1/voice/resolve-field":{"post":{"operationId":"VoiceController_resolveField","summary":"Resolve spoken value for a specific field","description":"Maps transcript to field values (including option/document/source matching) and returns confidence.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceResolveFieldDto"}}}},"responses":{"201":{"description":"Voice field value resolved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceResolveFieldResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"400":{"description":"Invalid field resolution payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"403":{"description":"Insufficient credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Voice"],"security":[{"bearer":[]}]}},"/api/v1/voice/execute":{"post":{"operationId":"VoiceController_execute","summary":"Execute resolved voice command","description":"Launches an automation run using agentInstallId and resolved configuration.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceExecuteDto"}}}},"responses":{"201":{"description":"Voice command executed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceExecuteResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"400":{"description":"Invalid execute payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Voice"],"security":[{"bearer":[]}]}},"/api/v1/context/public/company":{"get":{"operationId":"ContextPublicController_getCompanyContext","summary":"Get company-level context","parameters":[{"name":"Authorization","in":"header","description":"Bearer sk_ctx_...","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Context API"]}},"/api/v1/context/public/teams":{"get":{"operationId":"ContextPublicController_listTeams","summary":"List teams in context key scope","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Context API"]}},"/api/v1/context/public/teams/{teamId}":{"get":{"operationId":"ContextPublicController_getTeamContext","summary":"Get team context details","parameters":[{"name":"teamId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Context API"]}},"/api/v1/context/public/users/{userId}":{"get":{"operationId":"ContextPublicController_getUserContext","summary":"Get user context details","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Context API"]}},"/api/v1/context/public/clients":{"get":{"operationId":"ContextPublicController_listClients","summary":"List clients in context key scope","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Context API"]}},"/api/v1/context/public/clients/{clientId}":{"get":{"operationId":"ContextPublicController_getClientContext","summary":"Get client context details","parameters":[{"name":"clientId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Context API"]}},"/api/v1/context/public/assembled":{"get":{"operationId":"ContextPublicController_getAssembledContext","summary":"Get assembled context as structured or prompt format","parameters":[{"name":"teamId","required":true,"in":"query","schema":{"type":"string"}},{"name":"clientId","required":true,"in":"query","schema":{"type":"string"}},{"name":"userId","required":true,"in":"query","schema":{"type":"string"}},{"name":"format","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Context API"]}},"/api/v1/context/public/webhooks":{"post":{"operationId":"ContextPublicController_registerWebhook","summary":"Register webhook for context changes","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url","events","secret"],"properties":{"url":{"type":"string","example":"https://your-system.com/api/context-changed"},"events":{"type":"array","items":{"type":"string","enum":["company.updated","team.updated","client.updated","user.updated"]}},"secret":{"type":"string"}}}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Context API"]}},"/api/v1/context/public/webhooks/{webhookId}":{"delete":{"operationId":"ContextPublicController_removeWebhook","summary":"Delete a context webhook","parameters":[{"name":"webhookId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Context API"]}},"/api/v1/admin/overview":{"get":{"operationId":"AdminController_getOverview","summary":"Get admin overview metrics","parameters":[],"responses":{"200":{"description":"Overview returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/system/health":{"get":{"operationId":"AdminController_getSystemHealth","summary":"Get system health summary","parameters":[],"responses":{"200":{"description":"System health returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/context-cache/stats":{"get":{"operationId":"AdminController_getContextCacheStats","summary":"Get context cache stats","parameters":[],"responses":{"200":{"description":"Context cache stats returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/context-api/usage":{"get":{"operationId":"AdminController_getContextApiUsage","summary":"Get Context API usage analytics for a company","parameters":[{"name":"companyId","required":true,"in":"query","description":"Company id","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/tenants":{"get":{"operationId":"AdminController_listTenants","summary":"List tenant workspaces","parameters":[{"name":"search","required":false,"in":"query","schema":{"type":"string"}},{"name":"plan","required":false,"in":"query","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"example":20,"type":"string"}}],"responses":{"200":{"description":"Tenants list returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]},"post":{"operationId":"AdminController_createPocWorkspace","summary":"Create POC workspace","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePocWorkspaceDto"}}}},"responses":{"201":{"description":"POC workspace created","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/tenants/{companyId}":{"get":{"operationId":"AdminController_getTenantDetail","summary":"Get tenant details","parameters":[{"name":"companyId","required":true,"in":"path","description":"Company id","schema":{"type":"string"}}],"responses":{"200":{"description":"Tenant details returned","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"404":{"description":"Tenant not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}},"headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]},"delete":{"operationId":"AdminController_deleteTenant","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteTenantDto"}}}},"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/tenants/{companyId}/plan":{"put":{"operationId":"AdminController_changePlan","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePlanDto"}}}},"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/tenants/{companyId}/credits":{"post":{"operationId":"AdminController_grantCredits","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrantCreditsDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/tenants/{companyId}/trial":{"put":{"operationId":"AdminController_extendTrial","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtendTrialDto"}}}},"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/tenants/{companyId}/suspend":{"put":{"operationId":"AdminController_suspendTenant","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/tenants/{companyId}/reactivate":{"put":{"operationId":"AdminController_reactivateTenant","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/tenants/{companyId}/export":{"post":{"operationId":"AdminController_exportTenantData","parameters":[{"name":"companyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/users":{"get":{"operationId":"AdminController_listUsers","parameters":[{"name":"search","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/users/{userId}":{"get":{"operationId":"AdminController_getUser","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/impersonate":{"post":{"operationId":"AdminController_startImpersonation","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartImpersonationDto"}}}},"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/impersonate/{sessionId}/end":{"post":{"operationId":"AdminController_endImpersonation","parameters":[{"name":"sessionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/audit":{"get":{"operationId":"AdminController_getAdminAudit","parameters":[{"name":"action","required":true,"in":"query","schema":{"type":"string"}},{"name":"adminId","required":true,"in":"query","schema":{"type":"string"}},{"name":"from","required":true,"in":"query","schema":{"type":"string"}},{"name":"to","required":true,"in":"query","schema":{"type":"string"}},{"name":"search","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Workspace"],"security":[{"bearer":[]}]}},"/api/v1/admin/demo/reset":{"post":{"operationId":"DemoController_reset","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/admin/demo/seed":{"post":{"operationId":"DemoController_seed","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/admin/demo/status":{"get":{"operationId":"DemoController_status","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/presence/status":{"put":{"operationId":"PresenceController_updateStatus","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePresenceDto"}}}},"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/presence":{"get":{"operationId":"PresenceController_getCompanyPresence","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/export/document":{"post":{"operationId":"ExportController_exportDocument","summary":"Export content as PDF, Word, or Excel","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportDocumentDto"}}}},"responses":{"200":{"description":"File returned as download stream","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Export"],"security":[{"bearer":[]}]}},"/api/v1/share/email":{"post":{"operationId":"ShareController_sendEmail","summary":"Send content via email","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"}},"subject":{"type":"string"},"content":{"type":"string"}},"required":["to","subject","content"]}}}},"responses":{"201":{"description":"Email sent","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Share"],"security":[{"bearer":[]}]}},"/api/v1/scim-tokens":{"get":{"operationId":"ScimTokenController_listTokens","parameters":[],"responses":{"200":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}},"post":{"operationId":"ScimTokenController_createToken","parameters":[],"responses":{"201":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}},"/api/v1/scim-tokens/{id}":{"delete":{"operationId":"ScimTokenController_revokeToken","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":"","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}}},"429":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Rate limit quota for current route bucket","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window","schema":{"type":"integer","example":97}},"X-RateLimit-Reset":{"description":"Unix timestamp when the limit window resets","schema":{"type":"integer","example":1711728000}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}}}}},"info":{"title":"Sempleo API","description":"API reference for the Sempleo AI agent platform. Use these endpoints to trigger agent runs, manage knowledge, retrieve results, and integrate Sempleo into your applications.\n\n\n## Authentication\n\nSempleo supports two authentication methods:\n\n### JWT Tokens (user sessions)\nUse `POST /auth/signin` to get an `accessToken` and `refreshToken`. Send access token as:\n`Authorization: Bearer eyJhbG...`\n\nAccess tokens expire after 24 hours. Refresh with `POST /auth/refresh`.\n\n### API Keys (programmatic)\nGenerate API keys from Settings -> API Keys. Send key as:\n`Authorization: Bearer sk_live_...`\n\nAPI keys inherit the permissions of the issuing user and require Professional or Enterprise plans.\n\n### Rate Limits\n- Standard endpoints: 100 requests/minute\n- Search endpoints: 30 requests/minute\n- File upload endpoints: 10 requests/minute\n- Agent run endpoints: 20 requests/minute\n\nResponses include:\n`X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`\n","version":"1.0","contact":{"name":"Sempleo Support","url":"https://sempleo.com/support","email":"support@sempleo.com"},"license":{"name":"Proprietary","url":"https://sempleo.com/legal/terms"}},"tags":[{"name":"Authentication","description":"Sign up, sign in, token refresh, and SSO"},{"name":"Agents","description":"Manage installed agents and run conversations"},{"name":"Automations","description":"Run automation wizards and retrieve results"},{"name":"Knowledge","description":"Upload documents, manage sources, and search"},{"name":"Marketplace","description":"Browse, install, and review marketplace agents"},{"name":"Workflows","description":"Create and manage multi-step workflows"},{"name":"Schedules","description":"Schedule recurring agent and automation runs"},{"name":"Workspace","description":"Manage company settings, teams, and members"},{"name":"Governance","description":"Policies, approvals, and audit logs"},{"name":"Analytics","description":"Usage metrics and reporting"},{"name":"Billing","description":"Plans, credits, and subscriptions"},{"name":"Notifications","description":"Notification management and preferences"},{"name":"Integrations","description":"Connect external services"}],"servers":[{"url":"https://api.sempleo.com","description":"Production"},{"url":"https://staging-api.sempleo.com","description":"Staging"},{"url":"http://localhost:4000","description":"Local Development"}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http","description":"Enter your API key or JWT token"}},"schemas":{"SignUpDto":{"type":"object","properties":{"email":{"type":"string","example":"user@company.com","description":"User email address"},"password":{"type":"string","example":"StrongPass123!","description":"Password (8-128 characters)","minLength":8,"maxLength":128},"name":{"type":"string","example":"Lasse Norby","description":"Display name of the user"},"companyName":{"type":"string","example":"Tiny Giants","description":"Company/workspace name"},"partnerRef":{"type":"string","example":"tinygiants","description":"Partner slug for referral attribution"}},"required":["email","password","name","companyName"]},"AuthTokensResponseDto":{"type":"object","properties":{"accessToken":{"type":"string","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...","description":"JWT access token"},"refreshToken":{"type":"string","example":"f8f90c28-9cb6-4e29-91d6-1bf9dd8aca97","description":"Refresh token for obtaining new access tokens"},"user":{"type":"object","description":"Signed-in user summary","example":{"id":"8a0a5fd0-38b2-4ad6-8b7d-aef8d6af8d8d","email":"user@example.com","name":"User Example","avatarUrl":"/static/avatars/user-id-ab12cd34.webp"}}},"required":["accessToken","refreshToken"]},"ErrorDetailDto":{"type":"object","properties":{"field":{"type":"string","description":"Field name associated with the validation or domain error","example":"email"},"message":{"type":"string","description":"Human-readable error detail","example":"must be a valid email address"}},"required":["field","message"]},"ErrorResponseDto":{"type":"object","properties":{"statusCode":{"type":"number","example":422},"error":{"type":"string","example":"Unprocessable Entity"},"message":{"type":"string","example":"Validation failed"},"details":{"description":"Optional structured field-level errors","type":"array","items":{"$ref":"#/components/schemas/ErrorDetailDto"}},"code":{"type":"string","description":"Machine-readable error code","example":"VALIDATION_ERROR"},"timestamp":{"type":"string","example":"2026-03-29T10:30:00.000Z"},"path":{"type":"string","example":"/api/v1/knowledge/sources"}},"required":["statusCode","error","message","code","timestamp","path"]},"RequestAccessDto":{"type":"object","properties":{"email":{"type":"string","example":"user@company.com"},"name":{"type":"string","example":"Lasse Norby"},"companyId":{"type":"string","example":"550e8400-e29b-41d4-a716-446655440000"},"message":{"type":"string","example":"I work in the marketing team"}},"required":["email","name","companyId"]},"SignInDto":{"type":"object","properties":{"email":{"type":"string","example":"user@company.com","description":"User email address"},"password":{"type":"string","example":"StrongPass123!","description":"User password"},"clientType":{"type":"string","enum":["web","desktop"],"description":"Client type — desktop clients receive longer-lived refresh tokens"}},"required":["email","password"]},"RefreshTokenDto":{"type":"object","properties":{"refreshToken":{"type":"string","example":"0e4aa0ab-78d8-43d0-8f0e-4e3d7fd5f119","description":"Refresh token returned from sign in/sign up"},"clientType":{"type":"string","enum":["web","desktop"],"description":"Client type — desktop clients receive longer-lived refresh tokens"}},"required":["refreshToken"]},"AcceptInviteDto":{"type":"object","properties":{"token":{"type":"string","description":"Invitation token from the invite email link"},"password":{"type":"string","description":"Password for the new account","minLength":8,"maxLength":128}},"required":["token","password"]},"RequestPasswordResetDto":{"type":"object","properties":{"email":{"type":"string","example":"user@company.com"}},"required":["email"]},"ConfirmPasswordResetDto":{"type":"object","properties":{"token":{"type":"string","description":"Password reset token from the email link"},"password":{"type":"string","description":"New password","minLength":8,"maxLength":128}},"required":["token","password"]},"IntegrationCatalogItemDto":{"type":"object","properties":{"id":{"type":"string","example":"slack"},"name":{"type":"string","example":"Slack"},"connected":{"type":"boolean","example":true},"connectionId":{"type":"string","example":"uuid"}},"required":["id","name","connected"]},"IntegrationsCatalogResponseDto":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationCatalogItemDto"}}},"required":["data"]},"IntegrationListItemDto":{"type":"object","properties":{"id":{"type":"string","example":"uuid"},"provider":{"type":"string","example":"slack"},"status":{"type":"string","example":"connected"}},"required":["id","provider","status"]},"IntegrationsListResponseDto":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationListItemDto"}}},"required":["data"]},"ConnectIntegrationDto":{"type":"object","properties":{"provider":{"type":"string","example":"slack","description":"Integration provider slug"},"redirectUri":{"type":"string","example":"http://localhost:3000/integrations/callback"}},"required":["provider"]},"IntegrationsConnectDataDto":{"type":"object","properties":{"authUrl":{"type":"string","example":"https://slack.com/oauth/v2/authorize?..."},"integrationId":{"type":"string","example":"uuid"}},"required":["authUrl","integrationId"]},"IntegrationsConnectResponseDto":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/IntegrationsConnectDataDto"}},"required":["data"]},"ConnectApiKeyDto":{"type":"object","properties":{"provider":{"type":"string","example":"notion","description":"Integration provider slug"},"apiKey":{"type":"string","description":"API key for the integration"}},"required":["provider","apiKey"]},"ConnectCredentialsDto":{"type":"object","properties":{"provider":{"type":"string","example":"e-conomic","description":"Integration provider slug"},"email":{"type":"string","example":"user@company.com"},"password":{"type":"string"}},"required":["provider","email","password"]},"IntegrationsSimpleSuccessResponseDto":{"type":"object","properties":{"data":{"type":"object","example":{"data":{"ok":true}}}},"required":["data"]},"ExecuteActionDto":{"type":"object","properties":{"action":{"type":"string","example":"sync_channels","description":"Action identifier"},"params":{"type":"object"}},"required":["action"]},"AgentConfigDto":{"type":"object","properties":{"systemPrompt":{"type":"string","description":"System prompt override for this installed agent","example":"Focus on concise output and cite source documents."},"contextConfig":{"type":"object","description":"Context configuration object"},"knowledgeSourceIds":{"description":"Knowledge source bindings","type":"array","items":{"type":"string"}}}},"AgentInstallDto":{"type":"object","properties":{"id":{"type":"string","example":"ac2596f6-8b81-4f5f-97eb-f0cf4f985280"},"name":{"type":"string","example":"Application & Proposal Review Agent"},"status":{"type":"string","example":"active"}},"required":["id","name","status"]},"InstallAgentDto":{"type":"object","properties":{"agentDefinitionId":{"type":"string","description":"Marketplace agent definition id","example":"a1b2c3d4-e5f6-4a1b-abcd-ef1234567890"},"scopeType":{"type":"string","description":"Install scope type","enum":["company","team","user"],"example":"company"},"scopeId":{"type":"string","description":"Scope id for scoped installs","example":"a1b2c3d4-e5f6-4a1b-abcd-ef1234567890"}},"required":["agentDefinitionId"]},"AgentRunDto":{"type":"object","properties":{"id":{"type":"string","example":"b96c8f59-75a8-4dad-91da-15dd2af3f977"},"status":{"type":"string","example":"completed"},"completedAt":{"type":"string","example":"2026-03-29T10:30:00.000Z"}},"required":["id","status"]},"NotificationDto":{"type":"object","properties":{"id":{"type":"string","example":"uuid"},"category":{"type":"string","example":"billing"},"type":{"type":"string","example":"plan_changed"},"title":{"type":"string","example":"Plan changed to Professional"},"body":{"type":"string","example":"Your plan changed successfully."},"priority":{"type":"string","example":"normal"},"link":{"type":"string","example":"/settings/billing"},"read":{"type":"boolean","example":false}},"required":["id","category","type","title","priority","read"]},"NotificationsListResponseDto":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NotificationDto"}}},"required":["data"]},"NotificationsCountByCategoryDto":{"type":"object","properties":{"activity":{"type":"number","example":2},"team":{"type":"number","example":1},"approval":{"type":"number","example":0},"billing":{"type":"number","example":4},"system":{"type":"number","example":0}},"required":["activity","team","approval","billing","system"]},"NotificationsCountDataDto":{"type":"object","properties":{"unread":{"type":"number","example":7},"byCategory":{"$ref":"#/components/schemas/NotificationsCountByCategoryDto"},"hasUrgent":{"type":"boolean","example":false}},"required":["unread","byCategory","hasUrgent"]},"NotificationsCountResponseDto":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NotificationsCountDataDto"}},"required":["data"]},"NotificationsSimpleSuccessResponseDto":{"type":"object","properties":{"data":{"type":"object","example":{"data":{"success":true}}}},"required":["data"]},"SearchKnowledgeDto":{"type":"object","properties":{"query":{"type":"string","description":"Natural language query to run semantic retrieval for","example":"Summarize requirements for Danish Innovation Fund calls"},"sourceIds":{"description":"Optional subset of source ids to search in","type":"array","items":{"type":"string"}},"prioritySourceIds":{"description":"Optional source ids to prioritize during ranking","type":"array","items":{"type":"string"}},"limit":{"type":"number","description":"Maximum number of results to return","minimum":1,"maximum":20,"example":10}},"required":["query"]},"KnowledgeSearchResultDto":{"type":"object","properties":{"documentId":{"type":"string","example":"f8f90c28-9cb6-4e29-91d6-1bf9dd8aca97"},"score":{"type":"number","example":0.91},"snippet":{"type":"string","example":"Applicants must include a methodology section with milestones..."}},"required":["documentId","score","snippet"]},"KnowledgeSourceDto":{"type":"object","properties":{"id":{"type":"string","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"name":{"type":"string","example":"Fund Call Documents"},"scopeType":{"type":"string","example":"team"},"scopeId":{"type":"string","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"}},"required":["id","name","scopeType","scopeId"]},"CreateSourceDto":{"type":"object","properties":{"name":{"type":"string","description":"Name of the knowledge source","example":"Fund Call Documents"},"scopeType":{"type":"string","description":"Scope type for source visibility","enum":["company","group","team","user"],"example":"team"},"scopeId":{"type":"string","description":"Scope id (company/team/user id based on scopeType)","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"}},"required":["name","scopeType","scopeId"]},"CreateTextSourceDto":{"type":"object","properties":{"name":{"type":"string","description":"Source name"},"content":{"type":"string","description":"Markdown text content"},"scopeType":{"type":"string","enum":["company","group","team","user"],"description":"Scope type"},"scopeId":{"type":"string","description":"Scope entity ID"},"collectionId":{"type":"string","description":"Collection ID to add the source to"}},"required":["name","content","scopeType","scopeId"]},"KnowledgeDocumentDto":{"type":"object","properties":{"id":{"type":"string","example":"f8f90c28-9cb6-4e29-91d6-1bf9dd8aca97"},"filename":{"type":"string","example":"Call_Guidelines_2026.pdf"},"status":{"type":"string","example":"ready"}},"required":["id","filename","status"]},"AddTagsDto":{"type":"object","properties":{"tags":{"example":["innovation","deadline-2026","research-fund"],"type":"array","items":{"type":"string"}}},"required":["tags"]},"UpdateDocumentTagsDto":{"type":"object","properties":{"tags":{"example":["innovation","priority"],"type":"array","items":{"type":"string"}}},"required":["tags"]},"ExtractedMetadataDto":{"type":"object","properties":{"extracted":{"type":"object"},"suggestedTags":{"type":"array","items":{"type":"string"}}}},"BulkTagDocumentsDto":{"type":"object","properties":{"documentIds":{"example":["a1b2c3d4-e5f6-4a1b-abcd-ef1234567890"],"type":"array","items":{"type":"string"}},"tags":{"example":["grant","deadline"],"type":"array","items":{"type":"string"}}},"required":["documentIds","tags"]},"OutputRouteDto":{"type":"object","properties":{"id":{"type":"string","example":"uuid"},"agentInstallId":{"type":"string","example":"uuid"},"workflowId":{"type":"string","example":"uuid"},"destinationType":{"type":"string","example":"webhook"},"destinationConfig":{"type":"object"},"integrationId":{"type":"string","example":"uuid"},"enabled":{"type":"boolean","example":true}},"required":["id","destinationType","destinationConfig","enabled"]},"OutputRoutesListResponseDto":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OutputRouteDto"}}},"required":["data"]},"OutputRouteResponseDto":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OutputRouteDto"}},"required":["data"]},"OutputRouteDeleteResponseDto":{"type":"object","properties":{"data":{"type":"object","example":{"data":{"ok":true}}}},"required":["data"]},"CreatePackDto":{"type":"object","properties":{}},"CreateFromTemplateDto":{"type":"object","properties":{}},"UpdatePackDto":{"type":"object","properties":{}},"CreateDirectiveDto":{"type":"object","properties":{}},"UpdateDirectiveDto":{"type":"object","properties":{}},"LinkSourceDto":{"type":"object","properties":{}},"CreateBindingDto":{"type":"object","properties":{}},"CreateProjectDto":{"type":"object","properties":{"name":{"type":"string","example":"Website Redesign"},"description":{"type":"string","example":"Redesign the corporate website"},"clientId":{"type":"string"},"status":{"type":"string"},"templateSlug":{"type":"string"},"context":{"type":"object","description":"Any additional project fields"}},"required":["name"]},"SyncMembersDto":{"type":"object","properties":{"leadUserId":{"type":"object"},"memberUserIds":{"type":"array","items":{"type":"string"}}}},"UpdateProjectDto":{"type":"object","properties":{"name":{"type":"string","example":"Website Redesign v2"},"description":{"type":"string"},"clientId":{"type":"string"},"status":{"type":"string"},"engagementScope":{"type":"string"},"objectives":{"type":"string"},"requirements":{"type":"string"},"timeline":{"type":"string"},"stakeholders":{"type":"string"},"notes":{"type":"string"}}},"ScanFindingItem":{"type":"object","properties":{}},"ApplyScanDto":{"type":"object","properties":{"findings":{"type":"array","items":{"$ref":"#/components/schemas/ScanFindingItem"}}},"required":["findings"]},"CreateWorkflowDto":{"type":"object","properties":{"name":{"type":"string","example":"Weekly Research Digest"},"description":{"type":"string","example":"Collects and summarizes weekly funding updates."},"steps":{"description":"Ordered workflow step definitions","type":"array","items":{"type":"object"}},"status":{"type":"string","enum":["draft","active","paused","archived"],"example":"draft"},"triggerConfig":{"type":"object","description":"Workflow trigger configuration"}},"required":["name","steps"]},"UpdateWorkflowDto":{"type":"object","properties":{"name":{"type":"string","example":"Weekly Research Digest v2"},"description":{"type":"string","example":"Updated workflow description"},"steps":{"description":"Updated workflow steps","type":"array","items":{"type":"object"}},"status":{"type":"string","enum":["draft","active","paused","archived"]},"triggerConfig":{"type":"object","description":"Updated trigger configuration"}}},"RunWorkflowDto":{"type":"object","properties":{"input":{"type":"object","description":"Optional workflow input payload"}}},"SchedulerStatusDataDto":{"type":"object","properties":{"lastHeartbeat":{"type":"object","example":"2026-03-29T10:30:00.000Z","nullable":true},"schedulerHealthy":{"type":"boolean","example":true},"queues":{"type":"object"},"staleJobCount":{"type":"number","example":0}},"required":["lastHeartbeat","schedulerHealthy","queues","staleJobCount"]},"SchedulerStatusResponseDto":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SchedulerStatusDataDto"}},"required":["data"]},"DeadLetterJobDto":{"type":"object","properties":{"id":{"type":"string","example":"123"},"originalQueue":{"type":"string","example":"automation-runs"},"originalJob":{"type":"object"},"error":{"type":"string","example":"Timeout"}},"required":["id","originalQueue","originalJob","error"]},"DeadLetterListResponseDto":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DeadLetterJobDto"}},"meta":{"type":"object","example":{"page":1,"pageSize":20,"total":42}}},"required":["data","meta"]},"LaunchAutomationDto":{"type":"object","properties":{"agentInstallId":{"type":"string","example":"ac2596f6-8b81-4f5f-97eb-f0cf4f985280"},"runConfig":{"type":"object","description":"Wizard field values for this run"},"triggerType":{"type":"string","example":"manual"},"teamContextId":{"type":"string","description":"Team context id for scoped runs"},"clientId":{"type":"string","description":"Client id for scoped runs"},"projectId":{"type":"string","description":"Project id for scoped runs"},"deliveryConfig":{"description":"Delivery channel configurations","type":"array","items":{"type":"object"}}},"required":["agentInstallId","runConfig"]},"AutomationRunDto":{"type":"object","properties":{"id":{"type":"string","example":"b96c8f59-75a8-4dad-91da-15dd2af3f977"},"status":{"type":"string","example":"pending"},"result":{"type":"object"}},"required":["id","status"]},"PreflightCheckDto":{"type":"object","properties":{"agentInstallId":{"type":"string","example":"ac2596f6-8b81-4f5f-97eb-f0cf4f985280"},"runConfig":{"type":"object"},"teamContextId":{"type":"string"},"clientId":{"type":"string"},"projectId":{"type":"string"}},"required":["agentInstallId","runConfig"]},"CreateTemplateDto":{"type":"object","properties":{"agentInstallId":{"type":"string","example":"ac2596f6-8b81-4f5f-97eb-f0cf4f985280"},"name":{"type":"string","example":"Monthly board report"},"description":{"type":"string","example":"Pre-filled config for monthly board reports"},"runConfig":{"type":"object"},"isShared":{"type":"boolean","example":false}},"required":["agentInstallId","name","runConfig"]},"CreateExternalAutomationDto":{"type":"object","properties":{"name":{"type":"string","example":"Zapier integration"},"platform":{"type":"string","example":"zapier"},"baseUrl":{"type":"string","example":"https://hooks.zapier.com/..."},"authType":{"type":"string","example":"api_key"},"credentials":{"type":"object"},"config":{"type":"object"}},"required":["name","platform","authType","credentials"]},"UpdateExternalAutomationDto":{"type":"object","properties":{"name":{"type":"string","example":"Updated name"},"baseUrl":{"type":"string","example":"https://hooks.zapier.com/new"},"credentials":{"type":"object"},"config":{"type":"object"}}},"N8nStatusDataDto":{"type":"object","properties":{"connected":{"type":"boolean","example":true},"version":{"type":"object","example":"1.75.2","nullable":true},"queueDepth":{"type":"object","example":2,"nullable":true},"workersActive":{"type":"object","example":1,"nullable":true},"executions":{"type":"object","nullable":true},"avgDurationSeconds":{"type":"object","example":12.4,"nullable":true},"workflowCount":{"type":"number","example":9},"openUiUrl":{"type":"string","example":"http://localhost:5678"}},"required":["connected","version","queueDepth","workersActive","executions","avgDurationSeconds","workflowCount","openUiUrl"]},"N8nStatusResponseDto":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/N8nStatusDataDto"}},"required":["data"]},"N8nWorkflowDto":{"type":"object","properties":{"id":{"type":"string","example":"abc123"},"name":{"type":"string","example":"[Sempleo] Weekly Digest"},"active":{"type":"boolean","example":true},"sempleoManaged":{"type":"boolean","example":true}},"required":["id","name","active","sempleoManaged"]},"N8nWorkflowsResponseDto":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/N8nWorkflowDto"}}},"required":["data"]},"ApiKeyListItemDto":{"type":"object","properties":{"id":{"type":"string","example":"uuid"},"name":{"type":"string","example":"CI key"},"keyPrefix":{"type":"string","example":"sk_live_abcd1234..."},"scopes":{"example":["agents:read","analytics:read"],"type":"array","items":{"type":"string"}},"expiresAt":{"type":"string","example":"2026-05-01T10:30:00.000Z"}},"required":["id","name","keyPrefix","scopes"]},"ApiKeysListResponseDto":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyListItemDto"}}},"required":["data"]},"ApiKeyCreateDataDto":{"type":"object","properties":{"id":{"type":"string","example":"uuid"},"key":{"type":"string","example":"sk_live_3cb13f..."},"keyPrefix":{"type":"string","example":"sk_live_3cb13f..."},"name":{"type":"string","example":"CI key"},"scopes":{"example":["agents:read"],"type":"array","items":{"type":"string"}}},"required":["id","key","keyPrefix","name","scopes"]},"ApiKeyCreateResponseDto":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ApiKeyCreateDataDto"}},"required":["data"]},"ApiKeyRevokeResponseDto":{"type":"object","properties":{"data":{"type":"object","example":{"data":{"success":true}}}},"required":["data"]},"AskAssistantPageContextDto":{"type":"object","properties":{"pageId":{"type":"string","example":"dashboard","description":"Current page id"},"pageName":{"type":"string","example":"Dashboard","description":"Current page display name"},"metadata":{"type":"object","description":"Optional contextual metadata for assistant grounding"}},"required":["pageId","pageName"]},"AskAssistantDto":{"type":"object","properties":{"message":{"type":"string","example":"What should I do next to improve proposal quality?","description":"User question for Sempleo assistant"},"pageContext":{"$ref":"#/components/schemas/AskAssistantPageContextDto"}},"required":["message"]},"AssistantActionLinkDto":{"type":"object","properties":{"label":{"type":"string","example":"Go to Analytics"},"href":{"type":"string","example":"/analytics"}},"required":["label","href"]},"AssistantAskDataDto":{"type":"object","properties":{"message":{"type":"string","example":"Start with your top 3 usage drops and compare against last week."},"actions":{"type":"array","items":{"$ref":"#/components/schemas/AssistantActionLinkDto"}}},"required":["message","actions"]},"AssistantAskResponseDto":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AssistantAskDataDto"}},"required":["data"]},"ConversationMessageDto":{"type":"object","properties":{"role":{"type":"string","enum":["user","assistant"]},"content":{"type":"string","example":"How do I install an agent?"}},"required":["role","content"]},"ScopeContextDto":{"type":"object","properties":{"teamId":{"type":"string","example":"team-uuid"},"clientId":{"type":"string","example":"client-uuid"},"projectId":{"type":"string","example":"project-uuid"}}},"PageContextDto":{"type":"object","properties":{"pageId":{"type":"string","example":"dashboard"},"pageName":{"type":"string","example":"Dashboard"}},"required":["pageId","pageName"]},"AttachmentDto":{"type":"object","properties":{"name":{"type":"string","example":"report.pdf"},"path":{"type":"string","example":"C:\\Users\\user\\Documents\\report.pdf"},"mimeType":{"type":"string","example":"application/pdf"},"size":{"type":"number","example":12345},"contentBase64":{"type":"string","description":"Base64-encoded file content for inline analysis"}},"required":["name","path","mimeType","size"]},"AskContextualAssistantDto":{"type":"object","properties":{"message":{"type":"string","example":"What should I focus on for this client?","description":"User question for the contextual assistant"},"conversationHistory":{"description":"Recent conversation history for multi-turn context","type":"array","items":{"$ref":"#/components/schemas/ConversationMessageDto"}},"scopeContext":{"$ref":"#/components/schemas/ScopeContextDto"},"pageContext":{"$ref":"#/components/schemas/PageContextDto"},"attachments":{"description":"Files attached from the desktop app for context","type":"array","items":{"$ref":"#/components/schemas/AttachmentDto"}}},"required":["message"]},"AssistantFeedbackDataDto":{"type":"object","properties":{"ok":{"type":"boolean","example":true}},"required":["ok"]},"AssistantFeedbackResponseDto":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AssistantFeedbackDataDto"}},"required":["data"]},"AssistContextDto":{"type":"object","properties":{"fieldType":{"type":"string","description":"Target field being assisted","example":"company_description"},"currentValue":{"type":"string","description":"Current value to improve","example":"We build AI tools."},"userInput":{"type":"string","description":"User free-form prompt for writing mode","example":"Write a compelling company description for grant applications."},"mode":{"type":"string","enum":["write","improve"],"example":"improve","description":"Assist mode"},"context":{"type":"object","description":"Optional structured context for better output grounding"}},"required":["fieldType","mode"]},"ContextAssistResponseDto":{"type":"object","properties":{"suggestion":{"type":"string","example":"Focus your company description on outcomes, domain expertise, and measurable impact for grant evaluators."},"creditsUsed":{"type":"number","example":1}},"required":["suggestion","creditsUsed"]},"DashboardNextActionDto":{"type":"object","properties":{"label":{"type":"string","example":"Add team description"},"link":{"type":"string","example":"/settings/team"},"impact":{"type":"string","enum":["high","medium","low"],"example":"high"}},"required":["label","link","impact"]},"DashboardContextCompletenessDto":{"type":"object","properties":{"company":{"type":"number","example":60},"team":{"type":"number","example":75},"personal":{"type":"number","example":50},"overall":{"type":"number","example":62},"nextAction":{"$ref":"#/components/schemas/DashboardNextActionDto"}},"required":["company","team","personal","overall"]},"DashboardUserDto":{"type":"object","properties":{"name":{"type":"string","example":"Lasse Nørby"},"role":{"type":"string","example":"platform_admin"},"onboardingComplete":{"type":"boolean","example":true},"contextCompleteness":{"$ref":"#/components/schemas/DashboardContextCompletenessDto"}},"required":["name","role","onboardingComplete","contextCompleteness"]},"DashboardSuggestionDto":{"type":"object","properties":{"type":{"type":"string","example":"view_results"},"title":{"type":"string","example":"Results are ready"},"description":{"type":"string","example":"Your latest run has completed."},"actionLabel":{"type":"string","example":"View Results"},"actionLink":{"type":"string","example":"/agents/abc"}},"required":["type","title","description","actionLabel","actionLink"]},"DashboardResponseDto":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/DashboardUserDto"},"welcomeMessage":{"type":"string","example":"Your latest run is complete. Next step: review the summary."},"suggestion":{"$ref":"#/components/schemas/DashboardSuggestionDto"}},"required":["user","welcomeMessage","suggestion"]},"VoiceResolveDto":{"type":"object","properties":{"transcript":{"type":"string","example":"Run the monthly revenue report and email it to me."},"installedAgentIds":{"description":"Optional subset of installed agent ids to match against","type":"array","items":{"type":"string"}},"userTimezone":{"type":"string","example":"Europe/Copenhagen"},"locale":{"type":"string","example":"en-US"}},"required":["transcript"]},"VoiceMissingRequiredFieldDto":{"type":"object","properties":{"fieldName":{"type":"string","example":"reportType"},"fieldLabel":{"type":"string","example":"Report type"},"fieldType":{"type":"string","example":"select"}},"required":["fieldName","fieldLabel","fieldType"]},"VoiceAlternativeDto":{"type":"object","properties":{"agentSlug":{"type":"string","example":"sales-report-agent"},"agentName":{"type":"string","example":"Sales Report Agent"},"confidence":{"type":"number","example":0.62}},"required":["agentSlug","agentName","confidence"]},"VoiceResolveResponseDto":{"type":"object","properties":{"agentSlug":{"type":"object","example":"sales-report-agent","nullable":true},"agentName":{"type":"object","example":"Sales Report Agent","nullable":true},"agentInstallId":{"type":"object","example":"f9477f58-a24b-4f53-94ef-8381f2159575","nullable":true},"confidence":{"type":"number","example":0.87},"extractedConfig":{"type":"object","additionalProperties":true},"missingRequired":{"type":"array","items":{"$ref":"#/components/schemas/VoiceMissingRequiredFieldDto"}},"delivery":{"type":"string","enum":["email","download","slack"],"nullable":true},"alternatives":{"type":"array","items":{"$ref":"#/components/schemas/VoiceAlternativeDto"}},"clarificationQuestion":{"type":"object","nullable":true},"readyToExecute":{"type":"boolean","example":true},"fieldQuestions":{"type":"object","additionalProperties":{"type":"string"},"example":{"reportType":"Please provide Report type."}}},"required":["confidence","extractedConfig","missingRequired","alternatives","readyToExecute","fieldQuestions"]},"VoiceOptionDto":{"type":"object","properties":{"value":{"type":"string","example":"monthly"},"label":{"type":"string","example":"Monthly report"}},"required":["value","label"]},"VoiceContextItemDto":{"type":"object","properties":{"id":{"type":"string","example":"0f3ad181-3f3e-4f60-a95e-c989364f9835"},"name":{"type":"string","example":"Q1 Performance Deck.pdf"}},"required":["id","name"]},"VoiceFieldContextDto":{"type":"object","properties":{"availableDocuments":{"type":"array","items":{"$ref":"#/components/schemas/VoiceContextItemDto"}},"knowledgeSources":{"type":"array","items":{"$ref":"#/components/schemas/VoiceContextItemDto"}}}},"VoiceResolveFieldDto":{"type":"object","properties":{"transcript":{"type":"string","example":"Use the quarterly source"},"fieldName":{"type":"string","example":"reportType"},"fieldType":{"type":"string","example":"select"},"fieldLabel":{"type":"string","example":"Report type"},"locale":{"type":"string","example":"da-DK"},"options":{"type":"array","items":{"$ref":"#/components/schemas/VoiceOptionDto"}},"context":{"$ref":"#/components/schemas/VoiceFieldContextDto"}},"required":["transcript","fieldName","fieldType","fieldLabel"]},"VoiceResolveFieldResponseDto":{"type":"object","properties":{"resolved":{"type":"boolean","example":true},"value":{"type":"object","description":"Resolved value to place in field config","additionalProperties":true,"nullable":true},"confidence":{"type":"number","example":0.78},"displayText":{"type":"string","example":"Monthly report"},"clarificationQuestion":{"type":"object","example":null,"nullable":true}},"required":["resolved","value","confidence","displayText"]},"VoiceExecuteDto":{"type":"object","properties":{"agentInstallId":{"type":"string","example":"f9477f58-a24b-4f53-94ef-8381f2159575"},"config":{"type":"object","additionalProperties":true,"example":{"period":"monthly","includeForecast":true}},"delivery":{"type":"string","enum":["email","download","slack"],"nullable":true,"example":"email"}},"required":["agentInstallId","config"]},"VoiceExecuteResponseDto":{"type":"object","properties":{"runId":{"type":"string","example":"30f4bfaa-4317-47d0-9f07-3380e5771818"},"status":{"type":"string","example":"queued"}},"required":["runId","status"]},"CreatePocWorkspaceDto":{"type":"object","properties":{"name":{"type":"string","example":"Acme Corp"},"domain":{"type":"string","example":"acme.com"},"plan":{"type":"string","example":"professional"},"trialDays":{"type":"number","example":14},"bonusCredits":{"type":"number","example":5000},"adminEmail":{"type":"string","example":"admin@acme.com"},"adminName":{"type":"string","example":"Jane Doe"},"sendInvite":{"type":"boolean","example":true},"preInstallAgents":{"type":"boolean","example":true},"teamDescription":{"type":"string","example":"A team focused on customer support operations."},"agentSlugs":{"example":["customer-support","knowledge-assistant"],"type":"array","items":{"type":"string"}},"welcomeMessage":{"type":"string","example":"Welcome to your Sempleo evaluation workspace!"}},"required":["name","domain","plan","adminEmail","adminName"]},"ChangePlanDto":{"type":"object","properties":{"plan":{"type":"string","example":"enterprise"},"monthlyCredits":{"type":"number","example":10000}},"required":["plan"]},"GrantCreditsDto":{"type":"object","properties":{"amount":{"type":"number","example":5000},"reason":{"type":"string","example":"POC onboarding bonus"}},"required":["amount","reason"]},"ExtendTrialDto":{"type":"object","properties":{"extendDays":{"type":"number","example":14}},"required":["extendDays"]},"DeleteTenantDto":{"type":"object","properties":{"confirmationToken":{"type":"string","description":"Confirmation token for destructive delete"}}},"StartImpersonationDto":{"type":"object","properties":{"targetUserId":{"type":"string","example":"550e8400-e29b-41d4-a716-446655440000"},"reason":{"type":"string","example":"Customer reported billing issue, need to verify account state"}},"required":["targetUserId","reason"]},"UpdatePresenceDto":{"type":"object","properties":{}},"ExportDocumentDto":{"type":"object","properties":{"content":{"type":"string","description":"Markdown content to export"},"format":{"type":"string","enum":["pdf","docx","xlsx"],"description":"Export format"},"title":{"type":"string","description":"Document title"}},"required":["content","format"]}}},"externalDocs":{"description":"Developer Guide","url":"https://docs.sempleo.com"}}