{"openapi":"3.0.0","info":{"title":"Spindle API","version":"1.1.0","description":"REST API for Spindle. This OpenAPI spec is auto-generated from route-level validation and response schemas."},"servers":[{"url":"https://api.spindle.aevr.space","description":"Local development server"}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"auth-token","description":"HTTP-only session cookie. Set automatically on login."},"apiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"API key authentication. Pass `x-api-key: sk_live_...`. `Authorization: Bearer sk_live_...` is also accepted as a fallback."}},"parameters":{"XTeamId":{"name":"x-team-id","in":"header","required":true,"description":"MongoDB `_id` of the team to act on. Required by all team-scoped routes.","schema":{"type":"string","example":"664abc1234567890abcd1234"}}},"schemas":{"Success":{"type":"object","properties":{"success":{"type":"boolean","example":true},"message":{"type":"string","example":"Operation successful"}},"required":["success","message"],"additionalProperties":false,"title":"Success"},"Error":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string","example":"Something went wrong"}},"required":["success","message"],"additionalProperties":false,"title":"Error"},"User":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd1001"},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","example":"jane@example.com"},"firstName":{"type":"string","example":"Jane"},"lastName":{"type":"string","example":"Doe"},"picture":{"type":"string","example":"https://example.com/avatar.png"},"payTag":{"type":"string","example":"408696"},"emailVerified":{"type":"boolean","example":true},"role":{"type":"string","enum":["user","admin"],"example":"user","description":"Platform-level role. `admin` can manage plans."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"}},"required":["_id","email"],"additionalProperties":false,"title":"User","description":"Default platform user"},"Team":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0020"},"name":{"type":"string","example":"Acme Corp"},"slug":{"type":"string","example":"acme-corp"},"plan":{"type":"string","enum":["free","basic","pro"],"example":"free"},"metadata":{"type":"object","properties":{"avatar_url":{"type":"string","example":"https://example.com/logo.png"}},"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"}},"required":["_id","name","slug","plan"],"additionalProperties":false,"title":"Team"},"TeamMembership":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0040"},"team":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0020"},"name":{"type":"string","example":"Acme Corp"},"slug":{"type":"string","example":"acme-corp"},"plan":{"type":"string","enum":["free","basic","pro"],"example":"free"},"metadata":{"type":"object","properties":{"avatar_url":{"type":"string","example":"https://example.com/logo.png"}},"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"}},"required":["_id","name","slug","plan"],"additionalProperties":false,"title":"Team"},"user":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd1001"},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","example":"jane@example.com"},"firstName":{"type":"string","example":"Jane"},"lastName":{"type":"string","example":"Doe"},"picture":{"type":"string","example":"https://example.com/avatar.png"},"payTag":{"type":"string","example":"408696"},"emailVerified":{"type":"boolean","example":true},"role":{"type":"string","enum":["user","admin"],"example":"user","description":"Platform-level role. `admin` can manage plans."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"}},"required":["_id","email"],"additionalProperties":false,"title":"User","description":"Default platform user"},"role":{"type":"string","enum":["owner","admin","member"],"example":"member"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"}},"required":["_id","team","user","role"],"additionalProperties":false,"title":"TeamMembership"},"TeamInvite":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0050"},"teamId":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0020"},"email":{"nullable":true,"type":"string","example":"bob@example.com","description":"null for general-use links"},"role":{"type":"string","enum":["admin","member"],"example":"member"},"token":{"type":"string","example":"abc123tok"},"multiUse":{"type":"boolean","example":false},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"}},"required":["_id","teamId","email","role","token","multiUse"],"additionalProperties":false,"title":"TeamInvite"},"TeamPlan":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0030"},"name":{"type":"string","example":"Pro"},"slug":{"type":"string","example":"pro"},"description":{"type":"string","example":"Full feature access"},"order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"example":20,"description":"Higher = more powerful. free=0, basic=10, pro=20."},"isDefault":{"type":"boolean","example":false},"price":{"type":"number","example":29},"features":{"type":"object","additionalProperties":{},"example":{"maxMembers":25,"canCustomizeTheme":true,"canCustomizeFonts":true}}},"required":["_id","name","slug","description","order","isDefault","price","features"],"additionalProperties":false,"title":"TeamPlan"},"ApiKey":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0060"},"name":{"type":"string","example":"Production"},"scope":{"type":"string","enum":["team","user"],"example":"team","description":"`team` keys are locked to one team. `user` keys work across all teams via x-team-id."},"prefix":{"type":"string","example":"sk_live_ab12cd34","description":"First characters of the key, used for display only."},"teamId":{"nullable":true,"type":"string","description":"Present only for team-scoped keys.","example":"664abc1234567890abcd0020"},"userId":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd1001"},"permissions":{"type":"array","items":{"type":"string"},"example":["api_keys:read","team:read"],"description":"Empty = inherit all permissions from team membership."},"lastUsedAt":{"nullable":true,"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"},"expiresAt":{"nullable":true,"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"}},"required":["_id","name","scope","prefix","teamId","userId","permissions","lastUsedAt","expiresAt"],"additionalProperties":false,"title":"ApiKey","description":"API key metadata. The raw key is never returned after creation."},"ApiKeyCreated":{"type":"object","properties":{"rawKey":{"type":"string","example":"sk_...","description":"Shown only once. Hashed and never stored in plain text."},"key":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0060"},"name":{"type":"string","example":"Production"},"scope":{"type":"string","enum":["team","user"],"example":"team","description":"`team` keys are locked to one team. `user` keys work across all teams via x-team-id."},"prefix":{"type":"string","example":"sk_live_ab12cd34","description":"First characters of the key, used for display only."},"teamId":{"nullable":true,"type":"string","description":"Present only for team-scoped keys.","example":"664abc1234567890abcd0020"},"userId":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd1001"},"permissions":{"type":"array","items":{"type":"string"},"example":["api_keys:read","team:read"],"description":"Empty = inherit all permissions from team membership."},"lastUsedAt":{"nullable":true,"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"},"expiresAt":{"nullable":true,"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"}},"required":["_id","name","scope","prefix","teamId","userId","permissions","lastUsedAt","expiresAt"],"additionalProperties":false,"title":"ApiKey","description":"API key metadata. The raw key is never returned after creation."}},"required":["rawKey","key"],"additionalProperties":false,"title":"ApiKeyCreated","description":"Returned once on creation. Contains the raw key - store it immediately."},"Wallet":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0070"},"userId":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd1001"},"symbol":{"type":"string","example":"POINTS"},"label":{"type":"string","example":"Jane's Points"},"balanceMode":{"type":"string","enum":["live","cached"],"example":"live"},"cachedBalance":{"type":"number","example":150.5},"isActive":{"type":"boolean","example":true},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"},"balance":{"type":"number","example":150.5,"description":"Computed balance (Live or Cached)"}},"required":["_id","userId","symbol","label","balanceMode","cachedBalance","isActive","balance"],"additionalProperties":false,"title":"Wallet"},"Transaction":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0080"},"userId":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd1001"},"walletId":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0070"},"symbol":{"type":"string","example":"POINTS"},"amount":{"type":"number","example":10},"type":{"type":"string","enum":["credit","debit"],"example":"credit"},"status":{"type":"string","enum":["pending","completed","failed","cancelled"],"example":"completed"},"idempotencyKey":{"type":"string","example":"tx_123abc"},"description":{"type":"string","example":"Referral signup bonus"},"from":{"type":"object","properties":{"name":{"type":"string","example":"SYSTEM_REWARD_POOL"},"user":{"nullable":true,"type":"string"},"wallet":{"nullable":true,"type":"string"}},"required":["name","user","wallet"],"additionalProperties":false},"to":{"type":"object","properties":{"name":{"type":"string","example":"USER"},"user":{"type":"string","example":"664abc1234567890abcd1001"},"wallet":{"type":"string","example":"664abc1234567890abcd0070"}},"required":["name","user","wallet"],"additionalProperties":false},"meta":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"}},"required":["_id","userId","walletId","symbol","amount","type","status","from","to"],"additionalProperties":false,"title":"Transaction"},"ExchangeRate":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0090"},"fromSymbol":{"type":"string","example":"POINTS"},"toSymbol":{"type":"string","example":"CRDTS"},"rate":{"type":"number","example":0.1},"isActive":{"type":"boolean","example":true},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"}},"required":["_id","fromSymbol","toSymbol","rate","isActive"],"additionalProperties":false,"title":"ExchangeRate"},"RewardCampaign":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0100"},"name":{"type":"string","example":"Welcome Bonus"},"trigger":{"type":"string","example":"referral_signup_referrer"},"pointsAmount":{"type":"number","example":5},"status":{"type":"string","enum":["active","paused","draft"],"example":"active"},"startsAt":{"nullable":true,"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"},"endsAt":{"nullable":true,"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"}},"required":["_id","name","trigger","pointsAmount","status","startsAt","endsAt"],"additionalProperties":false,"title":"RewardCampaign"},"TeamSubscription":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0110"},"teamId":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0020"},"planId":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0030"},"name":{"type":"string","example":"Pro"},"slug":{"type":"string","example":"pro"},"description":{"type":"string","example":"Full feature access"},"order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"example":20,"description":"Higher = more powerful. free=0, basic=10, pro=20."},"isDefault":{"type":"boolean","example":false},"price":{"type":"number","example":29},"features":{"type":"object","additionalProperties":{},"example":{"maxMembers":25,"canCustomizeTheme":true,"canCustomizeFonts":true}}},"required":["_id","name","slug","description","order","isDefault","price","features"],"additionalProperties":false,"title":"TeamPlan"},"status":{"type":"string","enum":["active","past_due","canceled","incomplete"],"example":"active"},"currentPeriodStart":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"},"currentPeriodEnd":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"},"cancelAtPeriodEnd":{"type":"boolean","example":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"}},"required":["_id","teamId","planId","status","cancelAtPeriodEnd"],"additionalProperties":false,"title":"TeamSubscription"},"FileRecord":{"type":"object","properties":{"_id":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd0120"},"name":{"type":"string","example":"profile_pic.jpg"},"url":{"type":"string","example":"https://storage.example.com/a/b/c.jpg"},"provider":{"type":"string","example":"s3"},"key":{"type":"string","example":"uploads/user123/abc.jpg"},"mimeType":{"type":"string","example":"image/jpeg"},"size":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"example":102456},"uploadedBy":{"type":"string","description":"MongoDB ObjectId string","example":"664abc1234567890abcd1001"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"}},"required":["_id","name","url","provider","key","mimeType","size","uploadedBy"],"additionalProperties":false,"title":"FileRecord"},"PaymentInitiationResult":{"type":"object","properties":{"reference":{"type":"string","example":"WALLET-L6W3-XYZ"},"hostedUrl":{"type":"string","example":"https://100pay.co/checkout/..."},"resumed":{"type":"boolean","example":false,"description":"True if a previous pending session was found and returned."},"quote":{"nullable":true,"type":"object","properties":{"amount":{"type":"number","example":29.99},"termMonths":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"example":1}},"required":["amount","termMonths"],"additionalProperties":false}},"required":["reference","hostedUrl","resumed","quote"],"additionalProperties":false,"title":"PaymentInitiationResult"},"InitiatedPayment":{"type":"object","properties":{"_id":{"type":"string","example":"664abc..."},"reference":{"type":"string","example":"SUB-L6W3-ABC"},"status":{"type":"string","example":"pending"},"type":{"type":"string","example":"credit"},"symbol":{"type":"string","example":"CRDTS"},"amount":{"type":"number","example":100},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","example":"2026-04-04T12:00:00.000Z"},"kind":{"type":"string","example":"subscription_payment"},"provider":{"type":"string","example":"100pay"},"hostedUrl":{"type":"string","example":"https://..."},"currency":{"type":"string","example":"NGN"},"country":{"type":"string","example":"NG"},"teamId":{"nullable":true,"type":"string"},"resumable":{"type":"boolean","example":true}},"required":["_id","reference","status","type","symbol","amount","kind","provider","hostedUrl","currency","country","teamId","resumable"],"additionalProperties":false,"title":"InitiatedPayment"},"Pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"example":1},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"example":20},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"example":100},"totalPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"example":5}},"required":["page","limit","total","totalPages"],"additionalProperties":false,"title":"Pagination"}}},"security":[{"cookieAuth":[]},{"apiKeyAuth":[]}],"paths":{"/v1/auth/login":{"post":{"tags":["Auth"],"summary":"POST /v1/auth/login","operationId":"post_v1_auth_login","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"password":{"type":"string","minLength":1}},"required":["email","password"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/auth/register":{"post":{"tags":["Auth"],"summary":"POST /v1/auth/register","operationId":"post_v1_auth_register","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"password":{"type":"string","minLength":8},"firstName":{"type":"string"},"lastName":{"type":"string"},"phone":{"type":"string"},"referralCode":{"type":"string"},"country":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","minLength":3,"maxLength":5}},"required":["email","password"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/auth/session":{"get":{"tags":["Auth"],"summary":"GET /v1/auth/session","operationId":"get_v1_auth_session","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"user":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"picture":{"type":"string"},"payTag":{"type":"string"},"referredBy":{"type":"string"},"referredByPayTag":{"type":"string"},"emailVerified":{"type":"boolean"},"phoneVerified":{"type":"boolean"},"kycVerified":{"type":"boolean"},"role":{"type":"string"},"country":{"type":"string"},"currency":{"type":"string"},"hasPassword":{"type":"boolean"},"hasPin":{"type":"boolean"}},"required":["id","email"],"additionalProperties":false}},"required":["success","user"],"additionalProperties":false}}}}}}},"/v1/auth/me":{"patch":{"tags":["Auth"],"summary":"PATCH /v1/auth/me","operationId":"patch_v1_auth_me","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"picture":{"type":"string"},"country":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","minLength":3,"maxLength":5}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/auth/me/preferences":{"get":{"tags":["Auth"],"summary":"GET /v1/auth/me/preferences","operationId":"get_v1_auth_me_preferences","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}}}},"patch":{"tags":["Auth"],"summary":"PATCH /v1/auth/me/preferences","operationId":"patch_v1_auth_me_preferences","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"appearance":{"type":"object","properties":{"theme":{"type":"string","enum":["light","dark","system"]},"accentColor":{"type":"string","minLength":1,"maxLength":20},"wallpaper":{"nullable":true,"type":"string"},"fontTheme":{"type":"string","minLength":1,"maxLength":50}},"additionalProperties":false}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/auth/referrals":{"get":{"tags":["Auth"],"summary":"GET /v1/auth/referrals","operationId":"get_v1_auth_referrals","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"},"createdAt":{"type":"string"}},"required":["email","createdAt"],"additionalProperties":false}}},"required":["success","data"],"additionalProperties":false}}}}}},"post":{"tags":["Auth"],"summary":"POST /v1/auth/referrals","operationId":"post_v1_auth_referrals","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"referralCode":{"type":"string","minLength":1}},"required":["referralCode"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"referredBy":{"type":"string"},"referredByPayTag":{"type":"string"}},"required":["referredBy"],"additionalProperties":false},"message":{"type":"string"}},"required":["success","data","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/auth/logout":{"post":{"tags":["Auth"],"summary":"POST /v1/auth/logout","operationId":"post_v1_auth_logout","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/auth/otp/request":{"post":{"tags":["Auth"],"summary":"POST /v1/auth/otp/request","operationId":"post_v1_auth_otp_request","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"shouldCreate":{"type":"boolean"}},"required":["email"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/auth/otp/verify":{"post":{"tags":["Auth"],"summary":"POST /v1/auth/otp/verify","operationId":"post_v1_auth_otp_verify","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"otp":{"type":"string","minLength":1}},"required":["email","otp"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/auth/magic-link/request":{"post":{"tags":["Auth"],"summary":"POST /v1/auth/magic-link/request","operationId":"post_v1_auth_magic_link_request","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"shouldCreate":{"type":"boolean"},"returnUrl":{"type":"string"}},"required":["email"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/auth/magic-link/verify":{"get":{"tags":["Auth"],"summary":"GET /v1/auth/magic-link/verify","operationId":"get_v1_auth_magic_link_verify","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"user":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"picture":{"type":"string"},"payTag":{"type":"string"},"referredBy":{"type":"string"},"referredByPayTag":{"type":"string"},"emailVerified":{"type":"boolean"},"phoneVerified":{"type":"boolean"},"kycVerified":{"type":"boolean"},"role":{"type":"string"},"country":{"type":"string"},"currency":{"type":"string"},"hasPassword":{"type":"boolean"},"hasPin":{"type":"boolean"}},"required":["id","email"],"additionalProperties":false}},"required":["success","user"],"additionalProperties":false}}}}}}},"/v1/auth/password-reset/request":{"post":{"tags":["Auth"],"summary":"POST /v1/auth/password-reset/request","operationId":"post_v1_auth_password_reset_request","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["email"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/auth/password-reset/verify":{"post":{"tags":["Auth"],"summary":"POST /v1/auth/password-reset/verify","operationId":"post_v1_auth_password_reset_verify","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"newPassword":{"type":"string","minLength":8},"otp":{"type":"string"},"token":{"type":"string"}},"required":["email","newPassword"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/auth/me/change-password/request":{"post":{"tags":["Auth"],"summary":"POST /v1/auth/me/change-password/request","operationId":"post_v1_auth_me_change_password_request","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/auth/me/change-password/verify":{"post":{"tags":["Auth"],"summary":"POST /v1/auth/me/change-password/verify","operationId":"post_v1_auth_me_change_password_verify","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"newPassword":{"type":"string","minLength":8},"otp":{"type":"string"},"token":{"type":"string"}},"required":["newPassword"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/auth/me/change-pin/request":{"post":{"tags":["Auth"],"summary":"POST /v1/auth/me/change-pin/request","operationId":"post_v1_auth_me_change_pin_request","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/auth/me/change-pin/verify":{"post":{"tags":["Auth"],"summary":"POST /v1/auth/me/change-pin/verify","operationId":"post_v1_auth_me_change_pin_verify","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"newPin":{"type":"string","minLength":6,"maxLength":6,"pattern":"^\\d{6}$"},"otp":{"type":"string"},"token":{"type":"string"}},"required":["newPin"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/payid/oauth/initiate":{"post":{"tags":["PayID"],"summary":"POST /v1/payid/oauth/initiate","operationId":"post_v1_payid_oauth_initiate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"returnUrl":{"type":"string"},"ref":{"type":"string"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"},"data":{"type":"object","properties":{"authorizationUrl":{"type":"string"}},"required":["authorizationUrl"],"additionalProperties":false}},"required":["success","message","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/payid/oauth/callback":{"get":{"tags":["PayID"],"summary":"GET /v1/payid/oauth/callback","operationId":"get_v1_payid_oauth_callback","responses":{"200":{"description":"Successful response"},"302":{"description":"Response","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","enum":["Redirects to frontend after OAuth exchange"]}},"required":["description"],"additionalProperties":false}}}}}}},"/v1/payid/userinfo":{"get":{"tags":["PayID"],"summary":"GET /v1/payid/userinfo","operationId":"get_v1_payid_userinfo","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"sub":{"type":"string"},"email":{"type":"string"},"given_name":{"type":"string"},"family_name":{"type":"string"},"pay_tag":{"type":"string"},"kyc_verified":{"type":"boolean"},"verification_level":{"nullable":true,"type":"string"}},"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}}}}},"/v1/teams/invitations/{token}":{"get":{"tags":["Teams"],"summary":"GET /v1/teams/invitations/{token}","operationId":"get_v1_teams_invitations_token","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"_id":{"type":"string"},"teamId":{},"inviterId":{},"role":{"type":"string"},"token":{"type":"string"},"expiresAt":{"type":"string"}},"required":["_id","teamId","role","token","expiresAt"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/teams":{"get":{"tags":["Teams"],"summary":"GET /v1/teams","operationId":"get_v1_teams","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"team":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"planId":{},"plan":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["_id","name","slug"],"additionalProperties":false},"role":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}}},"required":["team","role","permissions"],"additionalProperties":false}}},"required":["success","data"],"additionalProperties":false}}}}}},"post":{"tags":["Teams"],"summary":"POST /v1/teams","operationId":"post_v1_teams","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"slug":{"type":"string"}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"planId":{},"plan":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["_id","name","slug"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/teams/{teamId}":{"get":{"tags":["Teams"],"summary":"GET /v1/teams/{teamId}","operationId":"get_v1_teams_teamId","parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"planId":{},"plan":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["_id","name","slug"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}},"patch":{"tags":["Teams"],"summary":"PATCH /v1/teams/{teamId}","operationId":"patch_v1_teams_teamId","parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"planId":{},"plan":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["_id","name","slug"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}},"delete":{"tags":["Teams"],"summary":"DELETE /v1/teams/{teamId}","operationId":"delete_v1_teams_teamId","parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/teams/{teamId}/transfer-owner":{"patch":{"tags":["Teams"],"summary":"PATCH /v1/teams/{teamId}/transfer-owner","operationId":"patch_v1_teams_teamId_transfer_owner","parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"newOwnerId":{"type":"string","minLength":1}},"required":["newOwnerId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/teams/{teamId}/members":{"get":{"tags":["Teams"],"summary":"GET /v1/teams/{teamId}/members","operationId":"get_v1_teams_teamId_members","parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"user":{},"role":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"joinedAt":{"type":"string"}},"required":["user","role","permissions"],"additionalProperties":false}}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}},"post":{"tags":["Teams"],"summary":"POST /v1/teams/{teamId}/members","operationId":"post_v1_teams_teamId_members","parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"role":{"type":"string","enum":["admin","member"]},"extraPermissions":{"type":"array","items":{"type":"string"}}},"required":["email"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/teams/{teamId}/members/{memberId}":{"patch":{"tags":["Teams"],"summary":"PATCH /v1/teams/{teamId}/members/{memberId}","operationId":"patch_v1_teams_teamId_members_memberId","parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"memberId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string"},"extraPermissions":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}},"delete":{"tags":["Teams"],"summary":"DELETE /v1/teams/{teamId}/members/{memberId}","operationId":"delete_v1_teams_teamId_members_memberId","parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"memberId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/teams/{teamId}/invites":{"post":{"tags":["Teams"],"summary":"POST /v1/teams/{teamId}/invites","operationId":"post_v1_teams_teamId_invites","parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"role":{"type":"string"},"multiUse":{"type":"boolean"},"expiresInDays":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"_id":{"type":"string"},"teamId":{},"role":{"type":"string"},"token":{"type":"string"},"expiresAt":{"type":"string"},"multiUse":{"type":"boolean"},"usedCount":{"type":"number"},"status":{"type":"string"},"email":{"type":"string"}},"required":["_id","teamId","role","token","expiresAt","multiUse"],"additionalProperties":false}},"required":["success"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}},"get":{"tags":["Teams"],"summary":"GET /v1/teams/{teamId}/invites","operationId":"get_v1_teams_teamId_invites","parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string"},"teamId":{},"role":{"type":"string"},"token":{"type":"string"},"expiresAt":{"type":"string"},"multiUse":{"type":"boolean"},"usedCount":{"type":"number"},"status":{"type":"string"},"email":{"type":"string"}},"required":["_id","teamId","role","token","expiresAt","multiUse"],"additionalProperties":false}}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/teams/{teamId}/invites/{inviteId}":{"delete":{"tags":["Teams"],"summary":"DELETE /v1/teams/{teamId}/invites/{inviteId}","operationId":"delete_v1_teams_teamId_invites_inviteId","parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"inviteId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/teams/join/{token}":{"post":{"tags":["Teams"],"summary":"POST /v1/teams/join/{token}","operationId":"post_v1_teams_join_token","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/api-keys":{"get":{"tags":["API Keys"],"summary":"GET /v1/api-keys","operationId":"get_v1_api_keys","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"prefix":{"type":"string"},"teamId":{"type":"string"},"userId":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"},"expiresAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["_id","name","prefix","teamId","userId","permissions"],"additionalProperties":false}}},"required":["success","data"],"additionalProperties":false}}}}}},"post":{"tags":["API Keys"],"summary":"POST /v1/api-keys","operationId":"post_v1_api_keys","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"permissions":{"type":"array","items":{"type":"string"}},"expiresAt":{"type":"string"}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"rawKey":{"type":"string"},"key":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"prefix":{"type":"string"},"teamId":{"type":"string"},"userId":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"},"expiresAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["_id","name","prefix","teamId","userId","permissions"],"additionalProperties":false}},"required":["rawKey","key"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/api-keys/{id}":{"get":{"tags":["API Keys"],"summary":"GET /v1/api-keys/{id}","operationId":"get_v1_api_keys_id","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"prefix":{"type":"string"},"teamId":{"type":"string"},"userId":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"},"expiresAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["_id","name","prefix","teamId","userId","permissions"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}},"patch":{"tags":["API Keys"],"summary":"PATCH /v1/api-keys/{id}","operationId":"patch_v1_api_keys_id","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"prefix":{"type":"string"},"teamId":{"type":"string"},"userId":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"},"expiresAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["_id","name","prefix","teamId","userId","permissions"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}},"delete":{"tags":["API Keys"],"summary":"DELETE /v1/api-keys/{id}","operationId":"delete_v1_api_keys_id","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/api-keys/permissions":{"get":{"tags":["API Keys"],"summary":"GET /v1/api-keys/permissions","operationId":"get_v1_api_keys_permissions","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"string"}}},"required":["success","data"],"additionalProperties":false}}}}}}},"/v1/me/api-keys":{"get":{"tags":["My API Keys"],"summary":"GET /v1/me/api-keys","operationId":"get_v1_me_api_keys","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"prefix":{"type":"string"},"scope":{"type":"string","enum":["user"]},"userId":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"},"expiresAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["_id","name","prefix","scope","userId","permissions"],"additionalProperties":false}}},"required":["success","data"],"additionalProperties":false}}}}}},"post":{"tags":["My API Keys"],"summary":"POST /v1/me/api-keys","operationId":"post_v1_me_api_keys","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"permissions":{"type":"array","items":{"type":"string"}},"expiresAt":{"type":"string"}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"rawKey":{"type":"string"},"key":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"prefix":{"type":"string"},"scope":{"type":"string","enum":["user"]},"userId":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"},"expiresAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["_id","name","prefix","scope","userId","permissions"],"additionalProperties":false}},"required":["rawKey","key"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/me/api-keys/{id}":{"delete":{"tags":["My API Keys"],"summary":"DELETE /v1/me/api-keys/{id}","operationId":"delete_v1_me_api_keys_id","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/files":{"get":{"tags":["Files"],"summary":"GET /v1/files","operationId":"get_v1_files","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"mimeType":{"type":"string"},"size":{"type":"number"},"provider":{"type":"string"},"uploadedBy":{"type":"string"},"createdAt":{"type":"string"}},"required":["_id","name","url","mimeType","size","provider","uploadedBy","createdAt"],"additionalProperties":false}}},"required":["success","data"],"additionalProperties":false}}}}}}},"/v1/files/upload":{"post":{"tags":["Files"],"summary":"POST /v1/files/upload","operationId":"post_v1_files_upload","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":{}}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"mimeType":{"type":"string"},"size":{"type":"number"},"provider":{"type":"string"},"key":{"type":"string"},"uploadedBy":{"type":"string"},"createdAt":{"type":"string"}},"required":["_id","name","url","mimeType","size","provider","key","uploadedBy","createdAt"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/plans":{"get":{"tags":["Plans"],"summary":"GET /v1/plans","operationId":"get_v1_plans","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"description":{"type":"string"},"features":{"type":"object","additionalProperties":{}},"isDefault":{"type":"boolean"},"order":{"type":"number"},"price":{"type":"number"},"currency":{"type":"string"}},"required":["_id","name","slug"],"additionalProperties":false}}},"required":["success","data"],"additionalProperties":false}}}}}}},"/v1/plans/admin":{"post":{"tags":["Plans"],"summary":"POST /v1/plans/admin","operationId":"post_v1_plans_admin","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","minLength":1},"name":{"type":"string"},"description":{"type":"string"},"features":{"type":"object","additionalProperties":{}},"isDefault":{"type":"boolean"},"order":{"type":"number"},"price":{"type":"number"},"currency":{"type":"string"}},"required":["slug"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"description":{"type":"string"},"features":{"type":"object","additionalProperties":{}},"isDefault":{"type":"boolean"},"order":{"type":"number"},"price":{"type":"number"},"currency":{"type":"string"}},"required":["_id","name","slug"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/plans/upgrade":{"post":{"tags":["Plans"],"summary":"POST /v1/plans/upgrade","operationId":"post_v1_plans_upgrade","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","minLength":1},"planSlug":{"type":"string","minLength":1}},"required":["teamId","planSlug"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"plan":{"type":"string"}},"required":["_id","name","slug"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/rewards/referral-config":{"get":{"tags":["Rewards"],"summary":"GET /v1/rewards/referral-config","operationId":"get_v1_rewards_referral_config","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}}}}},"/v1/rewards/rates/matrix":{"get":{"tags":["Rewards"],"summary":"GET /v1/rewards/rates/matrix","operationId":"get_v1_rewards_rates_matrix","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}}}}},"/v1/rewards/claim":{"post":{"tags":["Rewards"],"summary":"POST /v1/rewards/claim","operationId":"post_v1_rewards_claim","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pointsAmount":{"type":"number","minimum":0,"exclusiveMinimum":true},"idempotencyKey":{"type":"string","minLength":1}},"required":["pointsAmount","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/rewards/events/paid":{"post":{"tags":["Rewards"],"summary":"POST /v1/rewards/events/paid","operationId":"post_v1_rewards_events_paid","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"number","minimum":0,"exclusiveMinimum":true},"currency":{"type":"string","minLength":1},"idempotencyKey":{"type":"string","minLength":1},"reference":{"type":"string"}},"required":["amount","currency","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/subscriptions/current":{"get":{"tags":["Subscriptions"],"summary":"GET /v1/subscriptions/current","operationId":"get_v1_subscriptions_current","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true,"type":"object","properties":{"_id":{"type":"string"},"teamId":{},"planId":{},"status":{"type":"string"},"currentPeriodStart":{"type":"string"},"currentPeriodEnd":{"type":"string"},"term":{"type":"number"},"termUnit":{"type":"string"}},"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}}}}},"/v1/subscriptions/quote":{"post":{"tags":["Subscriptions"],"summary":"POST /v1/subscriptions/quote","operationId":"post_v1_subscriptions_quote","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"planSlug":{"type":"string","minLength":1},"term":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"termUnit":{"type":"string","enum":["month","months","monthly","mo","year","years","yearly","yr"]},"displayCurrency":{"type":"string","minLength":3,"maxLength":10}},"required":["planSlug"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"amount":{"type":"number"},"currencySymbol":{"type":"string"},"term":{"type":"number"},"termUnit":{"type":"string"},"termMonths":{"type":"number"},"displayQuote":{"type":"object","properties":{"amount":{"type":"number"},"unitPrice":{"type":"number"},"currencySymbol":{"type":"string"},"convertedFromCurrency":{"type":"string"},"rate":{"type":"number"},"source":{"type":"string"},"rateId":{"type":"string"}},"required":["amount","unitPrice","currencySymbol","convertedFromCurrency","rate","source"],"additionalProperties":false}},"required":["amount","term","termUnit","termMonths"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/subscriptions/checkout":{"post":{"tags":["Subscriptions"],"summary":"POST /v1/subscriptions/checkout","operationId":"post_v1_subscriptions_checkout","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"planSlug":{"type":"string","minLength":1},"term":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"termUnit":{"type":"string","enum":["month","months","monthly","mo","year","years","yearly","yr"]},"paymentSymbol":{"type":"string"},"gracePeriodDays":{"type":"integer","minimum":0,"maximum":9007199254740991},"transactionPin":{"type":"string"}},"required":["planSlug"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"},"data":{"type":"object","properties":{"teamId":{"type":"string"},"planSlug":{"type":"string"}},"additionalProperties":false}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/subscriptions/reconcile":{"post":{"tags":["Subscriptions"],"summary":"POST /v1/subscriptions/reconcile","operationId":"post_v1_subscriptions_reconcile","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"processed":{"type":"number"},"errors":{"type":"number"}},"additionalProperties":false}},"required":["success"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/payments/initiated":{"get":{"tags":["Payments"],"summary":"GET /v1/payments/initiated","operationId":"get_v1_payments_initiated","parameters":[{"name":"statuses","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string"},"reference":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"},"symbol":{"type":"string"},"amount":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"kind":{"type":"string"},"provider":{"type":"string"},"hostedUrl":{"type":"string"},"currency":{"type":"string"},"resumable":{"type":"boolean"}},"required":["_id","reference","status","type","symbol","amount","createdAt","updatedAt","resumable"],"additionalProperties":false}}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/payments/wallet-topups/initiate":{"post":{"tags":["Payments"],"summary":"POST /v1/payments/wallet-topups/initiate","operationId":"post_v1_payments_wallet_topups_initiate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"symbol":{"type":"string","minLength":1},"provider":{"type":"string"},"amount":{"type":"number","minimum":0,"exclusiveMinimum":true},"currency":{"type":"string","minLength":3,"maxLength":3},"country":{"type":"string","minLength":2,"maxLength":2},"transactionPin":{"type":"string"}},"required":["amount"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"reference":{"type":"string"},"hostedUrl":{"type":"string"},"resumed":{"type":"boolean"}},"required":["reference","hostedUrl","resumed"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/payments/subscriptions/initiate":{"post":{"tags":["Payments"],"summary":"POST /v1/payments/subscriptions/initiate","operationId":"post_v1_payments_subscriptions_initiate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"planSlug":{"type":"string","minLength":1},"term":{"type":"integer","exclusiveMinimum":true,"maximum":9007199254740991},"termUnit":{"type":"string","enum":["month","months","monthly","mo","year","years","yearly","yr"]},"provider":{"type":"string"},"currency":{"type":"string","minLength":3,"maxLength":3},"country":{"type":"string","minLength":2,"maxLength":2}},"required":["planSlug"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"reference":{"type":"string"},"hostedUrl":{"type":"string"},"resumed":{"type":"boolean"},"quote":{"type":"object","properties":{"amount":{"type":"number"},"currencySymbol":{"type":"string"},"termMonths":{"type":"number"}},"required":["amount","termMonths"],"additionalProperties":false},"providerQuote":{"type":"object","properties":{"amount":{"type":"number"},"currency":{"type":"string"},"rate":{"type":"number"}},"required":["amount","currency","rate"],"additionalProperties":false}},"required":["reference","hostedUrl","resumed"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/payments/{id}/cancel":{"post":{"tags":["Payments"],"summary":"POST /v1/payments/{id}/cancel","operationId":"post_v1_payments_id_cancel","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/payments/webhooks/100pay":{"post":{"tags":["Payments"],"summary":"POST /v1/payments/webhooks/100pay","operationId":"post_v1_payments_webhooks_100pay","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"reference":{"type":"string"},"_id":{"type":"string"},"data":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"received":{"type":"boolean"}},"required":["success","received"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/me/notifications":{"get":{"tags":["Notifications"],"summary":"GET /v1/me/notifications","operationId":"get_v1_me_notifications","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}}}}},"/v1/me/notifications/{id}/read":{"patch":{"tags":["Notifications"],"summary":"PATCH /v1/me/notifications/{id}/read","operationId":"patch_v1_me_notifications_id_read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/me/notifications/read-all":{"patch":{"tags":["Notifications"],"summary":"PATCH /v1/me/notifications/read-all","operationId":"patch_v1_me_notifications_read_all","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/me/notifications/preferences":{"get":{"tags":["Notifications"],"summary":"GET /v1/me/notifications/preferences","operationId":"get_v1_me_notifications_preferences","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}}}},"put":{"tags":["Notifications"],"summary":"PUT /v1/me/notifications/preferences","operationId":"put_v1_me_notifications_preferences","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"channels":{"type":"object","additionalProperties":{"type":"object","properties":{"enabled":{"type":"boolean"},"events":{"type":"object","additionalProperties":{"type":"boolean"}}},"additionalProperties":false},"required":["email","in_app","push","slack","telegram","webhook"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/me/notifications/connections":{"get":{"tags":["Notifications"],"summary":"GET /v1/me/notifications/connections","operationId":"get_v1_me_notifications_connections","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}}}},"post":{"tags":["Notifications"],"summary":"POST /v1/me/notifications/connections","operationId":"post_v1_me_notifications_connections","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"channelKey":{"type":"string","enum":["email","in_app","push","slack","telegram","webhook"]},"adapterKey":{"type":"string","minLength":1},"authMethod":{"type":"string","enum":["webhook_url","token","oauth"]},"credentials":{"type":"object","additionalProperties":{}},"meta":{"type":"object","additionalProperties":{}}},"required":["channelKey","adapterKey","authMethod","credentials"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/me/notifications/connections/oauth/providers":{"get":{"tags":["Notifications"],"summary":"GET /v1/me/notifications/connections/oauth/providers","operationId":"get_v1_me_notifications_connections_oauth_providers","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}}}}},"/v1/me/notifications/connections/oauth/providers/{providerKey}/initiate":{"post":{"tags":["Notifications"],"summary":"POST /v1/me/notifications/connections/oauth/providers/{providerKey}/initiate","operationId":"post_v1_me_notifications_connections_oauth_providers_providerKey_initiate","parameters":[{"name":"providerKey","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"returnUrl":{"type":"string"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/me/notifications/connections/oauth/providers/{providerKey}/callback":{"post":{"tags":["Notifications"],"summary":"POST /v1/me/notifications/connections/oauth/providers/{providerKey}/callback","operationId":"post_v1_me_notifications_connections_oauth_providers_providerKey_callback","parameters":[{"name":"providerKey","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"string","minLength":1},"code":{"type":"string","minLength":1},"meta":{"type":"object","additionalProperties":{}}},"required":["state","code"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/me/notifications/connections/{id}/oauth/providers/{providerKey}/refresh":{"post":{"tags":["Notifications"],"summary":"POST /v1/me/notifications/connections/{id}/oauth/providers/{providerKey}/refresh","operationId":"post_v1_me_notifications_connections_id_oauth_providers_providerKey_refresh","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"providerKey","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"additionalParams":{"type":"object","additionalProperties":{"type":"string"}},"meta":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/me/notifications/connections/oauth/initiate":{"post":{"tags":["Notifications"],"summary":"POST /v1/me/notifications/connections/oauth/initiate","operationId":"post_v1_me_notifications_connections_oauth_initiate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"channelKey":{"type":"string","enum":["email","in_app","push","slack","telegram","webhook"]},"adapterKey":{"type":"string","minLength":1},"authorizationUrl":{"type":"string","format":"uri"},"clientId":{"type":"string","minLength":1},"redirectUri":{"type":"string","format":"uri"},"scope":{"type":"string"},"additionalParams":{"type":"object","additionalProperties":{"type":"string"}},"returnUrl":{"type":"string"}},"required":["channelKey","adapterKey","authorizationUrl","clientId","redirectUri"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/me/notifications/connections/oauth/callback":{"post":{"tags":["Notifications"],"summary":"POST /v1/me/notifications/connections/oauth/callback","operationId":"post_v1_me_notifications_connections_oauth_callback","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"channelKey":{"type":"string","enum":["email","in_app","push","slack","telegram","webhook"]},"adapterKey":{"type":"string","minLength":1},"state":{"type":"string","minLength":1},"code":{"type":"string","minLength":1},"tokenUrl":{"type":"string","format":"uri"},"clientId":{"type":"string","minLength":1},"clientSecret":{"type":"string","minLength":1},"redirectUri":{"type":"string","format":"uri"},"credentialsMap":{"type":"object","additionalProperties":{"type":"string"}},"meta":{"type":"object","additionalProperties":{}}},"required":["channelKey","adapterKey","state","code","tokenUrl","clientId","clientSecret","redirectUri"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/me/notifications/connections/{id}/oauth/refresh":{"post":{"tags":["Notifications"],"summary":"POST /v1/me/notifications/connections/{id}/oauth/refresh","operationId":"post_v1_me_notifications_connections_id_oauth_refresh","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tokenUrl":{"type":"string","format":"uri"},"clientId":{"type":"string","minLength":1},"clientSecret":{"type":"string","minLength":1},"refreshTokenPath":{"type":"string"},"additionalParams":{"type":"object","additionalProperties":{"type":"string"}},"meta":{"type":"object","additionalProperties":{}}},"required":["tokenUrl","clientId","clientSecret"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/me/notifications/connections/{id}":{"delete":{"tags":["Notifications"],"summary":"DELETE /v1/me/notifications/connections/{id}","operationId":"delete_v1_me_notifications_connections_id","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/me/webhooks":{"get":{"tags":["Webhooks"],"summary":"GET /v1/me/webhooks","operationId":"get_v1_me_webhooks","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}}}},"post":{"tags":["Webhooks"],"summary":"POST /v1/me/webhooks","operationId":"post_v1_me_webhooks","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"subscribedEvents":{"minItems":1,"type":"array","items":{"type":"string"}},"description":{"type":"string","maxLength":200}},"required":["url","subscribedEvents"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Resource created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/me/webhooks/{id}":{"patch":{"tags":["Webhooks"],"summary":"PATCH /v1/me/webhooks/{id}","operationId":"patch_v1_me_webhooks_id","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"subscribedEvents":{"type":"array","items":{"type":"string"}},"description":{"type":"string","maxLength":200},"status":{"type":"string","enum":["active","disabled"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}},"delete":{"tags":["Webhooks"],"summary":"DELETE /v1/me/webhooks/{id}","operationId":"delete_v1_me_webhooks_id","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"}},"required":["success","message"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/me/webhooks/{id}/test":{"post":{"tags":["Webhooks"],"summary":"POST /v1/me/webhooks/{id}/test","operationId":"post_v1_me_webhooks_id_test","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/me/webhooks/{id}/deliveries":{"get":{"tags":["Webhooks"],"summary":"GET /v1/me/webhooks/{id}/deliveries","operationId":"get_v1_me_webhooks_id_deliveries","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/extract":{"post":{"tags":["Extract"],"summary":"POST /v1/extract","operationId":"post_v1_extract","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"format":{"type":"string","enum":["markdown","text","json","html"]},"adapter":{"type":"string","enum":["auto","fetch","readability","playwright"]},"options":{"type":"object","properties":{"waitForSelector":{"type":"string"},"waitForNetworkIdle":{"type":"boolean"},"timeout":{"type":"integer","minimum":1000,"maximum":30010},"includeMetadata":{"type":"boolean"},"includeLinkMap":{"type":"boolean"},"cacheStrategy":{"type":"string","enum":["use","bypass","refresh"]},"cacheTtl":{"type":"integer","minimum":60,"maximum":86400}},"additionalProperties":false}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"url":{"type":"string"},"resolvedUrl":{"type":"string"},"format":{"type":"string","enum":["markdown","text","json","html"]},"adapter":{"type":"string","enum":["auto","fetch","readability","playwright"]},"cached":{"type":"boolean"},"content":{"type":"string"},"metadata":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"author":{"type":"string"},"publishedAt":{"type":"string"},"ogImage":{"type":"string"},"siteName":{"type":"string"},"wordCount":{"type":"number"},"readingTimeMinutes":{"type":"number"},"extractedAt":{"type":"string"}},"required":["title","wordCount","readingTimeMinutes","extractedAt"],"additionalProperties":false},"links":{"type":"array","items":{"type":"object","properties":{"href":{"type":"string"},"text":{"type":"string"},"isInternal":{"type":"boolean"}},"required":["href","text","isInternal"],"additionalProperties":false}},"attemptedAdapters":{"type":"array","items":{"type":"string"}}},"required":["url","resolvedUrl","format","adapter","cached","content","metadata","attemptedAdapters"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}},"get":{"tags":["Extract"],"summary":"GET /v1/extract","operationId":"get_v1_extract","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","format":"uri"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["markdown","text","json","html"]}},{"name":"adapter","in":"query","required":false,"schema":{"type":"string","enum":["auto","fetch","readability","playwright"]}},{"name":"cacheStrategy","in":"query","required":false,"schema":{"type":"string","enum":["use","bypass","refresh"]}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"url":{"type":"string"},"resolvedUrl":{"type":"string"},"format":{"type":"string","enum":["markdown","text","json","html"]},"adapter":{"type":"string","enum":["auto","fetch","readability","playwright"]},"cached":{"type":"boolean"},"content":{"type":"string"},"metadata":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"author":{"type":"string"},"publishedAt":{"type":"string"},"ogImage":{"type":"string"},"siteName":{"type":"string"},"wordCount":{"type":"number"},"readingTimeMinutes":{"type":"number"},"extractedAt":{"type":"string"}},"required":["title","wordCount","readingTimeMinutes","extractedAt"],"additionalProperties":false},"links":{"type":"array","items":{"type":"object","properties":{"href":{"type":"string"},"text":{"type":"string"},"isInternal":{"type":"boolean"}},"required":["href","text","isInternal"],"additionalProperties":false}},"attemptedAdapters":{"type":"array","items":{"type":"string"}}},"required":["url","resolvedUrl","format","adapter","cached","content","metadata","attemptedAdapters"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/extract/batch":{"post":{"tags":["Extract"],"summary":"POST /v1/extract/batch","operationId":"post_v1_extract_batch","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"urls":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","format":"uri"}},"format":{"type":"string","enum":["markdown","text","json","html"]},"adapter":{"type":"string","enum":["auto","fetch","readability","playwright"]},"options":{"type":"object","properties":{"waitForSelector":{"type":"string"},"waitForNetworkIdle":{"type":"boolean"},"timeout":{"type":"integer","minimum":1000,"maximum":30010},"includeMetadata":{"type":"boolean"},"includeLinkMap":{"type":"boolean"},"cacheStrategy":{"type":"string","enum":["use","bypass","refresh"]},"cacheTtl":{"type":"integer","minimum":60,"maximum":86400}},"additionalProperties":false},"failStrategy":{"default":"continue","type":"string","enum":["stop","continue"]}},"required":["urls","failStrategy"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"results":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"url":{"type":"string"},"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"url":{"type":"string"},"resolvedUrl":{"type":"string"},"format":{"type":"string","enum":["markdown","text","json","html"]},"adapter":{"type":"string","enum":["auto","fetch","readability","playwright"]},"cached":{"type":"boolean"},"content":{"type":"string"},"metadata":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"author":{"type":"string"},"publishedAt":{"type":"string"},"ogImage":{"type":"string"},"siteName":{"type":"string"},"wordCount":{"type":"number"},"readingTimeMinutes":{"type":"number"},"extractedAt":{"type":"string"}},"required":["title","wordCount","readingTimeMinutes","extractedAt"],"additionalProperties":false},"links":{"type":"array","items":{"type":"object","properties":{"href":{"type":"string"},"text":{"type":"string"},"isInternal":{"type":"boolean"}},"required":["href","text","isInternal"],"additionalProperties":false}},"attemptedAdapters":{"type":"array","items":{"type":"string"}}},"required":["url","resolvedUrl","format","adapter","cached","content","metadata","attemptedAdapters"],"additionalProperties":false}},"required":["url","success","data"],"additionalProperties":false},{"type":"object","properties":{"url":{"type":"string"},"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["url","success","error"],"additionalProperties":false}]}},"summary":{"type":"object","properties":{"total":{"type":"number"},"succeeded":{"type":"number"},"failed":{"type":"number"},"durationMs":{"type":"number"},"stoppedAtIndex":{"type":"number"}},"required":["total","succeeded","failed","durationMs"],"additionalProperties":false}},"required":["results","summary"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/v1/adapters":{"get":{"tags":["Adapters"],"summary":"GET /v1/adapters","operationId":"get_v1_adapters","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"priority":{"type":"number"},"available":{"type":"boolean"},"description":{"type":"string"},"capabilities":{"type":"array","items":{"type":"string"}},"poolStatus":{"type":"object","properties":{"available":{"type":"number"},"busy":{"type":"number"},"queued":{"type":"number"},"totalServed":{"type":"number"}},"required":["available","busy","queued","totalServed"],"additionalProperties":false}},"required":["name","priority","available","description","capabilities"],"additionalProperties":false}}},"required":["success","data"],"additionalProperties":false}}}}}}},"/v1/adapters/{name}":{"get":{"tags":["Adapters"],"summary":"GET /v1/adapters/{name}","operationId":"get_v1_adapters_name","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"name":{"type":"string"},"priority":{"type":"number"},"available":{"type":"boolean"},"description":{"type":"string"},"capabilities":{"type":"array","items":{"type":"string"}},"poolStatus":{"type":"object","properties":{"available":{"type":"number"},"busy":{"type":"number"},"queued":{"type":"number"},"totalServed":{"type":"number"}},"required":["available","busy","queued","totalServed"],"additionalProperties":false}},"required":["name","priority","available","description","capabilities"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["success","message"]}}}}}}},"/health":{"get":{"tags":["Health"],"summary":"Health check","operationId":"get_health","security":[],"responses":{"200":{"description":"API health status"}}}}}}