{"openapi":"3.1.1","info":{"title":"Rembrandt API","description":"REST API for Rembrandt data access.\n\n## Rate Limiting\n\nThe API implements distributed rate limiting to ensure fair usage:\n\n**Per API Key:**\n- Regular: 1,000 requests/hour\n- Burst: 2,000 requests/hour\n\n**Per Organization (Enterprise):**\n- Regular: 5,000 requests/hour\n- Burst: 10,000 requests/hour\n\n**IP-Based Protection:**\n- Regular: 100 requests/minute per IP\n- Burst: 1,000 requests/hour per IP\n\nRate limit information is included in response headers:\n- `X-RateLimit-Limit`: Maximum requests allowed\n- `X-RateLimit-Remaining`: Remaining requests in current window\n- `X-RateLimit-Reset`: Time when the rate limit resets (Unix timestamp)\n\nWhen rate limits are exceeded, the API returns a `429 Too Many Requests` status code.","version":"1.0.0","contact":{"name":"Rembrandt Support","email":"support@rembrandtagents.com"}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"API Key authentication using rk_* format (Rembrandt Key)"}},"schemas":{}},"paths":{"/v1/prospects":{"get":{"operationId":"getProspects","summary":"List and search prospects","tags":["Prospects"],"description":"List, filter, and search prospects. All parameters are optional. Supports filtering by companyName, domainName, country, and signal filters (signalContent, evidenceKeywords, signalCategories, signalSourceTypes). Supports sorting and pagination.","parameters":[{"schema":{"description":"Filter by company name (contains match). Example: 'Acme' matches 'Acme Corporation Inc.'.","type":"string"},"in":"query","name":"companyName","description":"Filter by company name (contains match). Example: 'Acme' matches 'Acme Corporation Inc.'."},{"schema":{"description":"Filter by signal domain name.","type":"string"},"in":"query","name":"domainName","description":"Filter by signal domain name."},{"schema":{"description":"ISO 2-letter country code filter.","type":"string","minLength":2,"maxLength":2},"in":"query","name":"country","description":"ISO 2-letter country code filter."},{"schema":{"description":"Search for prospects with signals matching this content (semantic search).","type":"string"},"in":"query","name":"signalContent","description":"Search for prospects with signals matching this content (semantic search)."},{"schema":{"description":"Comma-separated keywords to search in evidence items (e.g., 'AI, machine learning').","type":"string"},"in":"query","name":"evidenceKeywords","description":"Comma-separated keywords to search in evidence items (e.g., 'AI, machine learning')."},{"schema":{"description":"Comma-separated signal categories to filter by.","type":"string"},"in":"query","name":"signalCategories","description":"Comma-separated signal categories to filter by."},{"schema":{"description":"Filter by signal source type(s). Valid values: JOBS, NEWS, WEB. For multiple values, use comma-separated format: JOBS,NEWS","type":"string"},"in":"query","name":"signalSourceTypes","description":"Filter by signal source type(s). Valid values: JOBS, NEWS, WEB. For multiple values, use comma-separated format: JOBS,NEWS"},{"schema":{"default":"lastActivity","description":"Field to sort by","type":"string","enum":["lastActivity","companyName","signalCount","maxConvictionScore","avgConvictionScore","openOpportunitiesCount"]},"in":"query","name":"sortBy","description":"Field to sort by"},{"schema":{"default":"desc","description":"Sort order","type":"string","enum":["asc","desc"]},"in":"query","name":"sortOrder","description":"Sort order"},{"schema":{"description":"Maximum number of prospects to return (1-100)","default":"20","type":"string"},"in":"query","name":"limit","description":"Maximum number of prospects to return (1-100)"},{"schema":{"description":"Number of prospects to skip for pagination (max 9900)","default":"0","type":"string"},"in":"query","name":"offset","description":"Number of prospects to skip for pagination (max 9900)"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"prospects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Prospect ID (UUID)"},"companyId":{"type":"string","description":"Company ID"},"companyName":{"type":"string","description":"Company name"},"domainId":{"type":"string","description":"Signal domain ID"},"domainName":{"type":"string","description":"Signal domain name"},"searchCountry":{"type":"string","description":"Country code (ISO 2-letter)"},"signalCount":{"type":"number","description":"Total signal count"},"openOpportunitiesCount":{"type":"number","description":"Open opportunities count"},"lastUpdated":{"type":"string","description":"Last updated timestamp"},"opportunities":{"type":"array","items":{"type":"object","properties":{"opportunityId":{"type":"string","description":"ID of the opportunity"},"solutionId":{"type":"string","description":"ID of the solution"},"solutionName":{"type":"string","description":"Name of the solution"},"convictionScore":{"type":"number","description":"Conviction score (0-5)"},"customOutput":{"description":"Dynamic output fields","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["opportunityId","solutionId","solutionName","convictionScore"],"additionalProperties":false},"description":"Open opportunities, one per solution (highest conviction)"},"maxConvictionScore":{"description":"Highest conviction score across all open opportunities (0-5)","anyOf":[{"type":"number"},{"type":"null"}]},"avgConvictionScore":{"description":"Average conviction score across all open opportunities (0-5)","anyOf":[{"type":"number"},{"type":"null"}]},"shortSummary":{"description":"Short AI-generated summary of the prospect","anyOf":[{"type":"string"},{"type":"null"}]},"detailedSummary":{"description":"Extended AI-generated executive summary","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","companyId","companyName","domainId","domainName","searchCountry","signalCount","openOpportunitiesCount","lastUpdated","opportunities"],"additionalProperties":false}},"totalCount":{"type":"number","description":"Total number of prospects matching the query"},"pagination":{"type":"object","properties":{"offset":{"type":"number","description":"Current offset (number of items skipped)"},"limit":{"type":"number","description":"Maximum items per page"},"totalCount":{"type":"number","description":"Total number of items matching the query"},"hasMore":{"type":"boolean","description":"Whether more items exist beyond the current page"}},"required":["offset","limit","totalCount","hasMore"],"additionalProperties":false}},"required":["prospects","totalCount","pagination"],"additionalProperties":false},"timestamp":{"type":"string"}},"required":["success","data","timestamp"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"type":"string","enum":["VALIDATION_ERROR","ALREADY_EXISTS"],"description":"Error code for bad request"}},"required":["success","error","errorCode"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for unauthorized access","type":"string","const":"UNAUTHORIZED"}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for internal server error","type":"string","const":"INTERNAL_ERROR"}},"required":["success","error"],"additionalProperties":false}}}}}}},"/v1/prospects/{id}":{"get":{"operationId":"getProspectById","summary":"Get prospect by ID","tags":["Prospects"],"description":"Get a single prospect by its UUID. A prospect represents a unique company + domain + country combination. Accepts UUID format: prospect-{uuid} or just {uuid} (auto-normalized). Returns full details including signal intelligence. Signal options: includeAllSignals (default false), signalLimit (max 1000), timeframe (7d/30d/90d/all, default all).","parameters":[{"schema":{"description":"[Signal Options] Include all signals without limit (default: false, returns up to 100)","default":"false","type":"string"},"in":"query","name":"includeAllSignals","description":"[Signal Options] Include all signals without limit (default: false, returns up to 100)"},{"schema":{"description":"[Signal Options] Number of signals to return (max 1000, ignored if includeAllSignals=true)","default":"100","type":"string"},"in":"query","name":"signalLimit","description":"[Signal Options] Number of signals to return (max 1000, ignored if includeAllSignals=true)"},{"schema":{"default":"all","description":"[Signal Options] Timeframe for signals (default: all)","type":"string","enum":["7d","30d","90d","all"]},"in":"query","name":"timeframe","description":"[Signal Options] Timeframe for signals (default: all)"},{"schema":{"description":"Prospect ID in UUID format. Accepts both 'prospect-{uuid}' or just '{uuid}' (will be normalized to 'prospect-{uuid}')","type":"string"},"in":"path","name":"id","required":true,"description":"Prospect ID in UUID format. Accepts both 'prospect-{uuid}' or just '{uuid}' (will be normalized to 'prospect-{uuid}')"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"prospect":{"type":"object","properties":{"id":{"type":"string","description":"Prospect ID (UUID)"},"companyId":{"type":"string","description":"Company ID"},"companyName":{"type":"string","description":"Company name"},"domainId":{"type":"string","description":"Signal domain ID"},"domainName":{"type":"string","description":"Signal domain name"},"searchCountry":{"type":"string","description":"Country code (ISO 2-letter)"},"signalCount":{"type":"number","description":"Total signal count"},"openOpportunitiesCount":{"type":"number","description":"Open opportunities count"},"lastUpdated":{"type":"string","description":"Last updated timestamp"},"opportunities":{"type":"array","items":{"type":"object","properties":{"opportunityId":{"type":"string","description":"ID of the opportunity"},"solutionId":{"type":"string","description":"ID of the solution"},"solutionName":{"type":"string","description":"Name of the solution"},"convictionScore":{"type":"number","description":"Conviction score (0-5)"},"customOutput":{"description":"Dynamic output fields","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["opportunityId","solutionId","solutionName","convictionScore"],"additionalProperties":false},"description":"Open opportunities, one per solution (highest conviction)"},"maxConvictionScore":{"description":"Highest conviction score across all open opportunities (0-5)","anyOf":[{"type":"number"},{"type":"null"}]},"avgConvictionScore":{"description":"Average conviction score across all open opportunities (0-5)","anyOf":[{"type":"number"},{"type":"null"}]},"shortSummary":{"description":"Short AI-generated summary of the prospect","anyOf":[{"type":"string"},{"type":"null"}]},"detailedSummary":{"description":"Extended AI-generated executive summary","anyOf":[{"type":"string"},{"type":"null"}]},"signalIntelligence":{"type":"array","items":{"type":"object","properties":{"signalId":{"type":"string","description":"Signal ID from metadata.signalId"},"content":{"type":"string","description":"Signal content from metadata.signalContent"},"sourceType":{"type":"string","description":"Source type from metadata.sourceType"},"createdAt":{"type":"string","description":"Created timestamp from metadata.createdAt"},"confidence":{"type":"string","description":"Confidence level from metadata.confidence"},"sourceLinks":{"type":"array","items":{"type":"string"},"description":"Source URLs associated with this signal match"},"evidenceItems":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Evidence item ID","type":"string"},"quote":{"type":"string","description":"Quote from evidence item"},"interpretation":{"type":"string","description":"Interpretation from evidence item"},"opportunities":{"type":"array","items":{"type":"string"},"description":"Opportunities from evidence item"},"tier":{"description":"Tier from evidence item","type":"string"},"comments":{"description":"Comments from evidence item","anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"description":"Created timestamp from evidence item","type":"string"}},"required":["quote","interpretation","opportunities"],"additionalProperties":false},"description":"Evidence items from metadata.evidenceItems"},"signalTier":{"description":"Tier classification of the signal","anyOf":[{"type":"string"},{"type":"null"}]},"signalStage":{"description":"Buying journey stage (AWARENESS, CONSIDERATION, OPTIMIZATION, UNAWARE)","anyOf":[{"type":"string"},{"type":"null"}]},"signalCategoryIds":{"description":"Category IDs associated with this signal","type":"array","items":{"type":"string"}},"summary":{"description":"AI-written description of the signal match","anyOf":[{"type":"string"},{"type":"null"}]},"relevance":{"description":"Explanation of why this signal is relevant to the prospect","anyOf":[{"type":"string"},{"type":"null"}]},"sourceDate":{"description":"Publication or posting date of the original source (distinct from createdAt)","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["signalId","content","sourceType","createdAt","confidence","sourceLinks","evidenceItems"],"additionalProperties":false},"description":"Signal intelligence data"}},"required":["id","companyId","companyName","domainId","domainName","searchCountry","signalCount","openOpportunitiesCount","lastUpdated","opportunities","signalIntelligence"],"additionalProperties":false}},"required":["prospect"],"additionalProperties":false},"timestamp":{"type":"string"}},"required":["success","data","timestamp"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"type":"string","enum":["VALIDATION_ERROR","ALREADY_EXISTS"],"description":"Error code for bad request"}},"required":["success","error","errorCode"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for unauthorized access","type":"string","const":"UNAUTHORIZED"}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"type":"string","const":"NOT_FOUND","description":"Error code for resource not found"}},"required":["success","error","errorCode"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for internal server error","type":"string","const":"INTERNAL_ERROR"}},"required":["success","error"],"additionalProperties":false}}}}}}},"/v1/companies":{"get":{"operationId":"getCompanies","summary":"List companies","tags":["Companies"],"description":"List companies in the organization. Filter by name, industry, or status. Each company can have multiple prospects (company + domain + country combinations).","parameters":[{"schema":{"description":"Filter by company name (contains match).","type":"string"},"in":"query","name":"name","description":"Filter by company name (contains match)."},{"schema":{"description":"Filter by industry.","type":"string"},"in":"query","name":"industry","description":"Filter by industry."},{"schema":{"default":"ACTIVE","description":"Filter by company status (default: ACTIVE).","type":"string","enum":["ACTIVE","INACTIVE","ARCHIVED"]},"in":"query","name":"status","description":"Filter by company status (default: ACTIVE)."},{"schema":{"default":"name","description":"Field to sort by","type":"string","enum":["name","createdAt"]},"in":"query","name":"sortBy","description":"Field to sort by"},{"schema":{"default":"asc","description":"Sort order","type":"string","enum":["asc","desc"]},"in":"query","name":"sortOrder","description":"Sort order"},{"schema":{"description":"Maximum number of companies to return (1-100)","default":"50","type":"string"},"in":"query","name":"limit","description":"Maximum number of companies to return (1-100)"},{"schema":{"description":"Number of companies to skip for pagination","default":"0","type":"string"},"in":"query","name":"offset","description":"Number of companies to skip for pagination"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"companies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Company ID (UUID)"},"name":{"type":"string","description":"Company name"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company industry"},"headquartersLocation":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Headquarters country code (e.g., 'NL', 'US')"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company website URL"},"status":{"type":"string","description":"Company status (ACTIVE, INACTIVE, ARCHIVED)"},"prospectCount":{"type":"number","description":"Number of prospects for this company"},"createdAt":{"type":"string","description":"Company creation timestamp"},"updatedAt":{"type":"string","description":"Company last update timestamp"}},"required":["id","name","industry","headquartersLocation","website","status","prospectCount","createdAt","updatedAt"],"additionalProperties":false}},"totalCount":{"type":"number","description":"Total number of companies matching the query"},"pagination":{"type":"object","properties":{"offset":{"type":"number","description":"Current offset (number of items skipped)"},"limit":{"type":"number","description":"Maximum items per page"},"totalCount":{"type":"number","description":"Total number of items matching the query"},"hasMore":{"type":"boolean","description":"Whether more items exist beyond the current page"}},"required":["offset","limit","totalCount","hasMore"],"additionalProperties":false}},"required":["companies","totalCount","pagination"],"additionalProperties":false},"timestamp":{"type":"string"}},"required":["success","data","timestamp"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"type":"string","enum":["VALIDATION_ERROR","ALREADY_EXISTS"],"description":"Error code for bad request"}},"required":["success","error","errorCode"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for unauthorized access","type":"string","const":"UNAUTHORIZED"}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for internal server error","type":"string","const":"INTERNAL_ERROR"}},"required":["success","error"],"additionalProperties":false}}}}}}},"/v1/companies/{id}":{"get":{"operationId":"getCompanyDetails","summary":"Get company details","tags":["Companies"],"description":"Get company details including its prospects. A prospect = company + domain + country. Optionally filter prospects by domainName or country.","parameters":[{"schema":{"description":"Filter prospects by signal domain name.","type":"string"},"in":"query","name":"domainName","description":"Filter prospects by signal domain name."},{"schema":{"description":"Filter prospects by country (ISO 2-letter code).","type":"string","minLength":2,"maxLength":2},"in":"query","name":"country","description":"Filter prospects by country (ISO 2-letter code)."},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Company ID (UUID)"},"in":"path","name":"id","required":true,"description":"Company ID (UUID)"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"company":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Company ID (UUID)"},"name":{"type":"string","description":"Company name"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company industry"},"headquartersLocation":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Headquarters country code"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company website URL"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company description"},"status":{"type":"string","description":"Company status"},"createdAt":{"type":"string","description":"Company creation timestamp"},"updatedAt":{"type":"string","description":"Company last update timestamp"},"prospects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Prospect ID (UUID)"},"domainId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Signal domain ID"},"domainName":{"type":"string","description":"Signal domain name"},"searchCountry":{"type":"string","description":"Country code"},"signalCount":{"type":"number","description":"Total signal count"},"openOpportunitiesCount":{"type":"number","description":"Open opportunities count"},"lastUpdated":{"type":"string","description":"Last updated timestamp"}},"required":["id","domainId","domainName","searchCountry","signalCount","openOpportunitiesCount","lastUpdated"],"additionalProperties":false},"description":"Prospects for this company"},"prospectCount":{"type":"number","description":"Total number of prospects"}},"required":["id","name","industry","headquartersLocation","website","description","status","createdAt","updatedAt","prospects","prospectCount"],"additionalProperties":false}},"required":["company"],"additionalProperties":false},"timestamp":{"type":"string"}},"required":["success","data","timestamp"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"type":"string","enum":["VALIDATION_ERROR","ALREADY_EXISTS"],"description":"Error code for bad request"}},"required":["success","error","errorCode"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for unauthorized access","type":"string","const":"UNAUTHORIZED"}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"type":"string","const":"NOT_FOUND","description":"Error code for resource not found"}},"required":["success","error","errorCode"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for internal server error","type":"string","const":"INTERNAL_ERROR"}},"required":["success","error"],"additionalProperties":false}}}}}}},"/v1/domains":{"get":{"operationId":"getDomains","summary":"List signal domains","tags":["Domains"],"description":"List signal domains with metadata. Domains represent business areas like 'Enterprise Sales' or 'SMB Outreach'. Each domain can have multiple frameworks configured with specific signals.","parameters":[{"schema":{"description":"Include archived domains (default: false)","default":"false","type":"string"},"in":"query","name":"includeArchived","description":"Include archived domains (default: false)"},{"schema":{"description":"Number of domains to return (1-100, default: 50)","default":"50","type":"string"},"in":"query","name":"limit","description":"Number of domains to return (1-100, default: 50)"},{"schema":{"description":"Number of domains to skip for pagination (default: 0)","default":"0","type":"string"},"in":"query","name":"offset","description":"Number of domains to skip for pagination (default: 0)"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"domains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Domain ID (UUID)"},"name":{"type":"string","description":"Domain name (e.g., 'Enterprise Sales', 'SMB Outreach')"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Domain description"},"frameworkCount":{"type":"number","description":"Number of frameworks in this domain"},"prospectCount":{"type":"number","description":"Number of prospects associated with this domain"},"recentSignalMatches":{"type":"number","description":"Number of recent signal matches (last 30 days)"},"isArchived":{"type":"boolean","description":"Whether the domain is archived"},"createdAt":{"type":"string","description":"Domain creation timestamp"},"updatedAt":{"type":"string","description":"Domain last update timestamp"}},"required":["id","name","description","frameworkCount","prospectCount","recentSignalMatches","isArchived","createdAt","updatedAt"],"additionalProperties":false}},"totalCount":{"type":"number","description":"Total number of domains matching the query"},"pagination":{"type":"object","properties":{"offset":{"type":"number","description":"Current offset (number of items skipped)"},"limit":{"type":"number","description":"Maximum items per page"},"totalCount":{"type":"number","description":"Total number of items matching the query"},"hasMore":{"type":"boolean","description":"Whether more items exist beyond the current page"}},"required":["offset","limit","totalCount","hasMore"],"additionalProperties":false}},"required":["domains","totalCount","pagination"],"additionalProperties":false},"timestamp":{"type":"string"}},"required":["success","data","timestamp"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"type":"string","enum":["VALIDATION_ERROR","ALREADY_EXISTS"],"description":"Error code for bad request"}},"required":["success","error","errorCode"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for unauthorized access","type":"string","const":"UNAUTHORIZED"}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for internal server error","type":"string","const":"INTERNAL_ERROR"}},"required":["success","error"],"additionalProperties":false}}}}}}},"/v1/domains/{id}":{"get":{"operationId":"getDomainDetails","summary":"Get domain details by ID","tags":["Domains"],"description":"Get detailed information about a specific signal domain by its UUID, including frameworks, prospect count, and recent activity.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Domain ID (UUID)"},"in":"path","name":"id","required":true,"description":"Domain ID (UUID)"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"domain":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Domain ID (UUID)"},"name":{"type":"string","description":"Domain name (e.g., 'Enterprise Sales', 'SMB Outreach')"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Domain description"},"frameworks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Framework ID"},"name":{"type":"string","description":"Framework name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Framework description"}},"required":["id","name","description"],"additionalProperties":false},"description":"Signal frameworks"},"frameworkCount":{"type":"number","description":"Number of frameworks in this domain"},"prospectCount":{"type":"number","description":"Number of prospects associated with this domain"},"recentSignalMatches":{"type":"number","description":"Number of recent signal matches (last 30 days)"},"solutionCount":{"type":"number","description":"Number of solutions linked to this domain"},"isArchived":{"type":"boolean","description":"Whether the domain is archived"},"createdAt":{"type":"string","description":"Domain creation timestamp"},"updatedAt":{"type":"string","description":"Domain last update timestamp"}},"required":["id","name","description","frameworks","frameworkCount","prospectCount","recentSignalMatches","solutionCount","isArchived","createdAt","updatedAt"],"additionalProperties":false}},"required":["domain"],"additionalProperties":false},"timestamp":{"type":"string"}},"required":["success","data","timestamp"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"type":"string","enum":["VALIDATION_ERROR","ALREADY_EXISTS"],"description":"Error code for bad request"}},"required":["success","error","errorCode"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for unauthorized access","type":"string","const":"UNAUTHORIZED"}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"type":"string","const":"NOT_FOUND","description":"Error code for resource not found"}},"required":["success","error","errorCode"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for internal server error","type":"string","const":"INTERNAL_ERROR"}},"required":["success","error"],"additionalProperties":false}}}}}}},"/v1/solutions":{"get":{"operationId":"getSolutions","summary":"Get all solutions","tags":["Solutions"],"description":"Get organization solutions with optional filtering by name, active status, or domain.\n\nSolutions define what opportunities to look for in prospect signals. Each solution has a prompt template and output field definitions.\n\nUse this endpoint to:\n- List all solutions for an organization\n- Filter by active/inactive status\n- Filter by associated domain","parameters":[{"schema":{"description":"[Filter] Filter by solution name (contains match)","type":"string"},"in":"query","name":"name","description":"[Filter] Filter by solution name (contains match)"},{"schema":{"description":"[Filter] Filter by active status (true/false)","type":"string"},"in":"query","name":"isActive","description":"[Filter] Filter by active status (true/false)"},{"schema":{"description":"[Filter] Filter by signal domain ID","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"domainId","description":"[Filter] Filter by signal domain ID"},{"schema":{"description":"[Pagination] Maximum number of solutions to return (1-100)","default":"20","type":"string"},"in":"query","name":"limit","description":"[Pagination] Maximum number of solutions to return (1-100)"},{"schema":{"description":"[Pagination] Number of solutions to skip for pagination","default":"0","type":"string"},"in":"query","name":"offset","description":"[Pagination] Number of solutions to skip for pagination"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"solutions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Solution ID (UUID)"},"name":{"type":"string","description":"Solution name"},"prompt":{"type":"string","description":"LLM prompt for identifying opportunities"},"isActive":{"type":"boolean","description":"Whether the solution is active"},"useAllDomains":{"type":"boolean","description":"Whether the solution applies to all domains"},"domains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"description":"Specific domains if useAllDomains is false"},"countryCodes":{"type":"array","items":{"type":"string"},"description":"Country codes (empty = all countries)"},"outputFields":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Output field ID"},"fieldName":{"type":"string","description":"Field name (e.g., 'amount', 'priority')"},"fieldLabel":{"type":"string","description":"User-friendly label (e.g., 'Bedrag', 'Prioriteit')"},"fieldType":{"type":"string","description":"Field type (NUMBER, TEXT, YES_NO, DATE, EMAIL, URL, PERCENTAGE, CURRENCY)"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Field description"},"isRequired":{"type":"boolean","description":"Whether the field is required"},"displayOrder":{"type":"number","description":"Display order in UI"}},"required":["id","fieldName","fieldLabel","fieldType","description","isRequired","displayOrder"],"additionalProperties":false},"description":"Output field definitions"},"opportunityCount":{"type":"number","description":"Number of opportunities for this solution"},"createdAt":{"type":"string","description":"Creation timestamp"},"updatedAt":{"type":"string","description":"Last update timestamp"}},"required":["id","name","prompt","isActive","useAllDomains","domains","countryCodes","outputFields","opportunityCount","createdAt","updatedAt"],"additionalProperties":false}},"totalCount":{"type":"number","description":"Total number of solutions matching the query"},"pagination":{"type":"object","properties":{"offset":{"type":"number","description":"Current offset (number of items skipped)"},"limit":{"type":"number","description":"Maximum items per page"},"totalCount":{"type":"number","description":"Total number of items matching the query"},"hasMore":{"type":"boolean","description":"Whether more items exist beyond the current page"}},"required":["offset","limit","totalCount","hasMore"],"additionalProperties":false}},"required":["solutions","totalCount","pagination"],"additionalProperties":false},"timestamp":{"type":"string"}},"required":["success","data","timestamp"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"type":"string","enum":["VALIDATION_ERROR","ALREADY_EXISTS"],"description":"Error code for bad request"}},"required":["success","error","errorCode"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for unauthorized access","type":"string","const":"UNAUTHORIZED"}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for internal server error","type":"string","const":"INTERNAL_ERROR"}},"required":["success","error"],"additionalProperties":false}}}}}}},"/v1/solutions/{id}":{"get":{"operationId":"getSolutionDetails","summary":"Get solution details by ID","tags":["Solutions"],"description":"Get detailed information about a specific solution by its UUID, including output field definitions and associated domains.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Solution ID (UUID)"},"in":"path","name":"id","required":true,"description":"Solution ID (UUID)"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"solution":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Solution ID (UUID)"},"name":{"type":"string","description":"Solution name"},"prompt":{"type":"string","description":"LLM prompt for identifying opportunities"},"isActive":{"type":"boolean","description":"Whether the solution is active"},"useAllDomains":{"type":"boolean","description":"Whether the solution applies to all domains"},"domains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"description":"Associated domains"},"countryCodes":{"type":"array","items":{"type":"string"},"description":"Country codes filter"},"outputFields":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Output field ID"},"fieldName":{"type":"string","description":"Field name"},"fieldLabel":{"type":"string","description":"User-friendly label"},"fieldType":{"type":"string","description":"Field type"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Field description"},"isRequired":{"type":"boolean","description":"Whether the field is required"},"displayOrder":{"type":"number","description":"Display order in UI"}},"required":["id","fieldName","fieldLabel","fieldType","description","isRequired","displayOrder"],"additionalProperties":false},"description":"Output field definitions"},"opportunityCount":{"type":"number","description":"Total opportunities count"},"createdAt":{"type":"string","description":"Creation timestamp"},"updatedAt":{"type":"string","description":"Last update timestamp"}},"required":["id","name","prompt","isActive","useAllDomains","domains","countryCodes","outputFields","opportunityCount","createdAt","updatedAt"],"additionalProperties":false}},"required":["solution"],"additionalProperties":false},"timestamp":{"type":"string"}},"required":["success","data","timestamp"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"type":"string","enum":["VALIDATION_ERROR","ALREADY_EXISTS"],"description":"Error code for bad request"}},"required":["success","error","errorCode"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for unauthorized access","type":"string","const":"UNAUTHORIZED"}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"type":"string","const":"NOT_FOUND","description":"Error code for resource not found"}},"required":["success","error","errorCode"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for internal server error","type":"string","const":"INTERNAL_ERROR"}},"required":["success","error"],"additionalProperties":false}}}}}}},"/v1/opportunities":{"get":{"operationId":"getOpportunities","summary":"Get opportunities with filters","tags":["Opportunities"],"description":"Get opportunities with optional filtering by prospect, company, solution, domain, status, country, and conviction score.\n\nOpportunities represent identified moments to act based on prospect signals and solution definitions.\n\nUse this endpoint to:\n- List all opportunities for an organization\n- Filter by prospect, company, or solution\n- Filter by status (OPEN, IN_PROGRESS, COMPLETED)\n- Sort by conviction score, date, or status","parameters":[{"schema":{"description":"[Filter] Filter by prospect ID (UUID)","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"prospectId","description":"[Filter] Filter by prospect ID (UUID)"},{"schema":{"description":"[Filter] Filter by company ID (UUID)","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"companyId","description":"[Filter] Filter by company ID (UUID)"},{"schema":{"description":"[Filter] Filter by solution ID (UUID)","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"solutionId","description":"[Filter] Filter by solution ID (UUID)"},{"schema":{"description":"[Filter] Filter by signal domain ID (UUID)","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"query","name":"domainId","description":"[Filter] Filter by signal domain ID (UUID)"},{"schema":{"description":"[Filter] Filter by status (OPEN, IN_PROGRESS, COMPLETED)","type":"string","enum":["OPEN","IN_PROGRESS","COMPLETED"]},"in":"query","name":"status","description":"[Filter] Filter by status (OPEN, IN_PROGRESS, COMPLETED)"},{"schema":{"description":"[Filter] Filter by ISO 2-letter country code","type":"string","minLength":2,"maxLength":2},"in":"query","name":"country","description":"[Filter] Filter by ISO 2-letter country code"},{"schema":{"description":"[Filter] Minimum conviction score (0-5)","type":"string"},"in":"query","name":"minConvictionScore","description":"[Filter] Minimum conviction score (0-5)"},{"schema":{"default":"createdAt","description":"[Sorting] Field to sort by","type":"string","enum":["convictionScore","momentToActDate","createdAt","status"]},"in":"query","name":"sortBy","description":"[Sorting] Field to sort by"},{"schema":{"default":"desc","description":"[Sorting] Sort order","type":"string","enum":["asc","desc"]},"in":"query","name":"sortOrder","description":"[Sorting] Sort order"},{"schema":{"description":"[Pagination] Maximum number of opportunities to return (1-100)","default":"20","type":"string"},"in":"query","name":"limit","description":"[Pagination] Maximum number of opportunities to return (1-100)"},{"schema":{"description":"[Pagination] Number of opportunities to skip for pagination (max 9900)","default":"0","type":"string"},"in":"query","name":"offset","description":"[Pagination] Number of opportunities to skip for pagination (max 9900)"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"opportunities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Opportunity ID (UUID)"},"prospectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Prospect ID"},"companyId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Company ID"},"companyName":{"type":"string","description":"Company name"},"domainId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Signal domain ID"},"domainName":{"type":"string","description":"Signal domain name"},"searchCountry":{"type":"string","description":"Country code"},"solutionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Solution ID"},"solutionName":{"type":"string","description":"Solution name"},"status":{"type":"string","description":"Opportunity status (OPEN, IN_PROGRESS, COMPLETED)"},"momentToActDate":{"type":"string","description":"When the moment was identified"},"evidence":{"type":"string","description":"Detailed evidence text"},"convictionScore":{"type":"number","description":"Conviction score (0-5)"},"customOutput":{"anyOf":[{},{"type":"null"}],"description":"Dynamic output based on solution"},"createdAt":{"type":"string","description":"Creation timestamp"},"updatedAt":{"type":"string","description":"Last update timestamp"}},"required":["id","prospectId","companyId","companyName","domainId","domainName","searchCountry","solutionId","solutionName","status","momentToActDate","evidence","convictionScore","customOutput","createdAt","updatedAt"],"additionalProperties":false}},"totalCount":{"type":"number","description":"Total number of opportunities matching the query"},"pagination":{"type":"object","properties":{"offset":{"type":"number","description":"Current offset (number of items skipped)"},"limit":{"type":"number","description":"Maximum items per page"},"totalCount":{"type":"number","description":"Total number of items matching the query"},"hasMore":{"type":"boolean","description":"Whether more items exist beyond the current page"}},"required":["offset","limit","totalCount","hasMore"],"additionalProperties":false}},"required":["opportunities","totalCount","pagination"],"additionalProperties":false},"timestamp":{"type":"string"}},"required":["success","data","timestamp"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"type":"string","enum":["VALIDATION_ERROR","ALREADY_EXISTS"],"description":"Error code for bad request"}},"required":["success","error","errorCode"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for unauthorized access","type":"string","const":"UNAUTHORIZED"}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for internal server error","type":"string","const":"INTERNAL_ERROR"}},"required":["success","error"],"additionalProperties":false}}}}}}},"/v1/opportunities/{id}":{"get":{"operationId":"getOpportunityDetails","summary":"Get opportunity details by ID","tags":["Opportunities"],"description":"Get detailed information about a specific opportunity by its UUID, including related signal matches and evidence.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Opportunity ID (UUID)"},"in":"path","name":"id","required":true,"description":"Opportunity ID (UUID)"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"opportunity":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Opportunity ID (UUID)"},"prospectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Prospect ID"},"companyId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Company ID"},"companyName":{"type":"string","description":"Company name"},"domainId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Signal domain ID"},"domainName":{"type":"string","description":"Signal domain name"},"searchCountry":{"type":"string","description":"Country code"},"solutionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Solution ID"},"solutionName":{"type":"string","description":"Solution name"},"status":{"type":"string","description":"Opportunity status (OPEN, IN_PROGRESS, COMPLETED)"},"momentToActDate":{"type":"string","description":"When the moment was identified"},"evidence":{"type":"string","description":"Detailed evidence text"},"convictionScore":{"type":"number","description":"Conviction score (0-5)"},"customOutput":{"anyOf":[{},{"type":"null"}],"description":"Dynamic output based on solution"},"signalMatches":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Signal match ID"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Signal content summary"},"sourceType":{"type":"string","description":"Signal source type"},"confidence":{"type":"string","description":"Confidence level"},"createdAt":{"type":"string","description":"Signal match creation timestamp"}},"required":["id","content","sourceType","confidence","createdAt"],"additionalProperties":false},"description":"Related signal matches"},"createdAt":{"type":"string","description":"Creation timestamp"},"updatedAt":{"type":"string","description":"Last update timestamp"}},"required":["id","prospectId","companyId","companyName","domainId","domainName","searchCountry","solutionId","solutionName","status","momentToActDate","evidence","convictionScore","customOutput","signalMatches","createdAt","updatedAt"],"additionalProperties":false}},"required":["opportunity"],"additionalProperties":false},"timestamp":{"type":"string"}},"required":["success","data","timestamp"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"type":"string","enum":["VALIDATION_ERROR","ALREADY_EXISTS"],"description":"Error code for bad request"}},"required":["success","error","errorCode"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for unauthorized access","type":"string","const":"UNAUTHORIZED"}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"type":"string","const":"NOT_FOUND","description":"Error code for resource not found"}},"required":["success","error","errorCode"],"additionalProperties":false}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"},"errorId":{"description":"Unique error ID for tracking","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"timestamp":{"description":"ISO 8601 timestamp","type":"string"},"path":{"description":"Request path","type":"string"},"method":{"description":"HTTP method","type":"string"},"meta":{"description":"Additional error metadata","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Error code for internal server error","type":"string","const":"INTERNAL_ERROR"}},"required":["success","error"],"additionalProperties":false}}}}}}}},"servers":[{"url":"https://api.rembrandtagents.com","description":"Production server"}],"security":[{"bearerAuth":[]}]}