openapi: 3.0.3 info: title: Athena API version: 1.0.0 description: "\n Comprehensive API for Athena advisory consulting platform.\n \ \n ## Key Features\n \n - **Automatic Version Numbering**: Location Tools use automatic sequential version numbering (1, 2, 3, etc.)\n - **RESTful Design**: Standard HTTP methods and status codes\n - **JSON API**: All requests and responses use JSON format\n - **API Key Authentication**: Secure access with user-specific API keys\n - **Rate Limiting**: 1000 requests per hour per API key\n - **Pagination**: Consistent pagination across all list endpoints\n \ \n ## Location Tool Versioning\n \n The Location Tool implements automatic version numbering to ensure data integrity:\n \n - Version numbers are automatically assigned as sequential integers\n - No manual version input is required or accepted\n - Concurrent version creation is handled safely\n \ - All version numbers are stored as integers for proper sorting\n \n See the Location Tools section for detailed examples and usage patterns.\n " paths: /api/v1/advisor/findings/: get: operationId: advisor_findings_list description: Retrieve a list of findings across advisor tools owned by the current user. summary: List findings parameters: - in: query name: ordering schema: type: string description: 'Order by: name, impact_level, created_date' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search findings by name, description, or source detail tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedFindingList' description: '' post: operationId: advisor_findings_create description: Create a new finding within an advisor tool. summary: Create finding tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/FindingRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/FindingRequest' multipart/form-data: schema: $ref: '#/components/schemas/FindingRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Finding' description: '' /api/v1/advisor/findings/{id}/: get: operationId: advisor_findings_retrieve description: Retrieve detailed information about a specific finding. summary: Get finding details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this finding. required: true tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Finding' description: '' put: operationId: advisor_findings_update description: Update all fields of a finding. summary: Update finding parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this finding. required: true tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/FindingRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/FindingRequest' multipart/form-data: schema: $ref: '#/components/schemas/FindingRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Finding' description: '' patch: operationId: advisor_findings_partial_update description: Update specific fields of a finding. summary: Partially update finding parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this finding. required: true tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedFindingRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedFindingRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedFindingRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Finding' description: '' delete: operationId: advisor_findings_destroy description: Delete a finding. summary: Delete finding parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this finding. required: true tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/advisor/findings/by_impact/: get: operationId: advisor_findings_by_impact_retrieve description: Filter findings by their impact level. summary: Get findings by impact level parameters: - in: query name: level schema: type: string description: Impact level to filter by (e.g. High, Medium, Low) required: true tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Finding' description: '' /api/v1/advisor/findings/by_source/: get: operationId: advisor_findings_by_source_retrieve description: Filter findings by their source. summary: Get findings by source parameters: - in: query name: source schema: type: string description: Source to filter findings by required: true tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Finding' description: '' /api/v1/advisor/principles/: get: operationId: advisor_principles_list description: Retrieve a list of principles across advisor tools owned by the current user. summary: List principles parameters: - in: query name: ordering schema: type: string description: 'Order by: name, weight, order, created_date' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search principles by name or description tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPrincipleList' description: '' post: operationId: advisor_principles_create description: Create a new principle within an advisor tool. summary: Create principle tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/PrincipleRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PrincipleRequest' multipart/form-data: schema: $ref: '#/components/schemas/PrincipleRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Principle' description: '' /api/v1/advisor/principles/{id}/: get: operationId: advisor_principles_retrieve description: Retrieve detailed information about a specific principle. summary: Get principle details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this principle. required: true tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Principle' description: '' put: operationId: advisor_principles_update description: Update all fields of a principle. summary: Update principle parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this principle. required: true tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/PrincipleRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PrincipleRequest' multipart/form-data: schema: $ref: '#/components/schemas/PrincipleRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Principle' description: '' patch: operationId: advisor_principles_partial_update description: Update specific fields of a principle. summary: Partially update principle parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this principle. required: true tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedPrincipleRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedPrincipleRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedPrincipleRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Principle' description: '' delete: operationId: advisor_principles_destroy description: Delete a principle. summary: Delete principle parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this principle. required: true tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/advisor/recommendations/: get: operationId: advisor_recommendations_list description: Retrieve a list of recommendations across advisor tools owned by the current user. summary: List recommendations parameters: - in: query name: ordering schema: type: string description: 'Order by: title, cost, complexity, implementation_days, created_date' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search recommendations by title or description tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedRecommendationList' description: '' post: operationId: advisor_recommendations_create description: Create a new recommendation within an advisor tool. summary: Create recommendation tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/RecommendationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/RecommendationRequest' multipart/form-data: schema: $ref: '#/components/schemas/RecommendationRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Recommendation' description: '' /api/v1/advisor/recommendations/{id}/: get: operationId: advisor_recommendations_retrieve description: Retrieve detailed information about a specific recommendation. summary: Get recommendation details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this recommendation. required: true tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Recommendation' description: '' put: operationId: advisor_recommendations_update description: Update all fields of a recommendation. summary: Update recommendation parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this recommendation. required: true tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/RecommendationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/RecommendationRequest' multipart/form-data: schema: $ref: '#/components/schemas/RecommendationRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Recommendation' description: '' patch: operationId: advisor_recommendations_partial_update description: Update specific fields of a recommendation. summary: Partially update recommendation parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this recommendation. required: true tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedRecommendationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedRecommendationRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedRecommendationRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Recommendation' description: '' delete: operationId: advisor_recommendations_destroy description: Delete a recommendation. summary: Delete recommendation parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this recommendation. required: true tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/advisor/recommendations/{id}/add_alignment/: post: operationId: advisor_recommendations_add_alignment_create description: Add a principle alignment record to a recommendation. summary: Add principle alignment to recommendation parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this recommendation. required: true tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/RecommendationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/RecommendationRequest' multipart/form-data: schema: $ref: '#/components/schemas/RecommendationRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Recommendation' description: '' /api/v1/advisor/recommendations/{id}/add_impact/: post: operationId: advisor_recommendations_add_impact_create description: Add an impact record to a recommendation. summary: Add impact to recommendation parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this recommendation. required: true tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/RecommendationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/RecommendationRequest' multipart/form-data: schema: $ref: '#/components/schemas/RecommendationRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Recommendation' description: '' /api/v1/advisor/recommendations/by_complexity/: get: operationId: advisor_recommendations_by_complexity_retrieve description: Filter recommendations by their implementation complexity. summary: Get recommendations by complexity parameters: - in: query name: complexity schema: type: string description: Complexity level to filter by required: true tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Recommendation' description: '' /api/v1/advisor/recommendations/by_timeframe/: get: operationId: advisor_recommendations_by_timeframe_retrieve description: Filter recommendations by implementation timeframe. Short = ≤30 days, Medium = 31–180 days, Long = >180 days. summary: Get recommendations by timeframe parameters: - in: query name: timeframe schema: type: string description: 'Timeframe to filter by: Short, Medium, or Long' required: true tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Recommendation' description: '' /api/v1/advisor/requirements/: get: operationId: advisor_requirements_list description: Retrieve a list of requirements across advisor tools owned by the current user. summary: List requirements parameters: - in: query name: ordering schema: type: string description: 'Order by: name, type, created_date' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search requirements by name, description, or success measure tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedRequirementList' description: '' post: operationId: advisor_requirements_create description: Create a new requirement within an advisor tool. summary: Create requirement tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/RequirementRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/RequirementRequest' multipart/form-data: schema: $ref: '#/components/schemas/RequirementRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Requirement' description: '' /api/v1/advisor/requirements/{id}/: get: operationId: advisor_requirements_retrieve description: Retrieve detailed information about a specific requirement. summary: Get requirement details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this requirement. required: true tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Requirement' description: '' put: operationId: advisor_requirements_update description: Update all fields of a requirement. summary: Update requirement parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this requirement. required: true tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/RequirementRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/RequirementRequest' multipart/form-data: schema: $ref: '#/components/schemas/RequirementRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Requirement' description: '' patch: operationId: advisor_requirements_partial_update description: Update specific fields of a requirement. summary: Partially update requirement parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this requirement. required: true tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedRequirementRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedRequirementRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedRequirementRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Requirement' description: '' delete: operationId: advisor_requirements_destroy description: Delete a requirement. summary: Delete requirement parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this requirement. required: true tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/advisor/requirements/by_type/: get: operationId: advisor_requirements_by_type_retrieve description: Filter requirements by their type. summary: Get requirements by type parameters: - in: query name: type schema: type: string description: Requirement type to filter by required: true tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Requirement' description: '' /api/v1/advisor/tools/: get: operationId: advisor_tools_list description: Retrieve a list of advisor tools owned by the current user. summary: List advisor tools parameters: - in: query name: ordering schema: type: string description: 'Order by: name, created_date' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search advisor tools by name or description tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedAdvisorToolList' description: '' post: operationId: advisor_tools_create description: Create a new advisor tool. summary: Create advisor tool tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/AdvisorToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/AdvisorToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/AdvisorToolRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/AdvisorTool' description: '' /api/v1/advisor/tools/{id}/: get: operationId: advisor_tools_retrieve description: Retrieve detailed information about a specific advisor tool. summary: Get advisor tool details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Advisor Tool. required: true tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/AdvisorTool' description: '' put: operationId: advisor_tools_update description: Update all fields of an advisor tool. summary: Update advisor tool parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Advisor Tool. required: true tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/AdvisorToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/AdvisorToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/AdvisorToolRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/AdvisorTool' description: '' patch: operationId: advisor_tools_partial_update description: Update specific fields of an advisor tool. summary: Partially update advisor tool parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Advisor Tool. required: true tags: - Advisor requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedAdvisorToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedAdvisorToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedAdvisorToolRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/AdvisorTool' description: '' delete: operationId: advisor_tools_destroy description: Delete an advisor tool and all associated data. summary: Delete advisor tool parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Advisor Tool. required: true tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/advisor/tools/{id}/summary/: get: operationId: advisor_tools_summary_retrieve description: Retrieve a comprehensive summary of the advisor tool including all findings, requirements, principles, recommendations, and statistics. summary: Get advisor tool summary parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Advisor Tool. required: true tags: - Advisor security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/AdvisorTool' description: '' /api/v1/bmc/canvases/: get: operationId: bmc_canvases_list description: Retrieve a list of Business Model Canvases owned by the current user. summary: List BMC canvases parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - BMC security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBMCList' description: '' post: operationId: bmc_canvases_create description: Create a new Business Model Canvas. The version number is automatically assigned. summary: Create BMC canvas tags: - BMC requestBody: content: application/json: schema: $ref: '#/components/schemas/BMCRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BMCRequest' multipart/form-data: schema: $ref: '#/components/schemas/BMCRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/BMC' description: '' /api/v1/bmc/canvases/{id}/: get: operationId: bmc_canvases_retrieve description: Retrieve detailed information about a specific Business Model Canvas. summary: Get BMC canvas details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Business Model Canvas. required: true tags: - BMC security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/BMC' description: '' put: operationId: bmc_canvases_update description: Update all fields of a Business Model Canvas. summary: Update BMC canvas parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Business Model Canvas. required: true tags: - BMC requestBody: content: application/json: schema: $ref: '#/components/schemas/BMCRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BMCRequest' multipart/form-data: schema: $ref: '#/components/schemas/BMCRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/BMC' description: '' patch: operationId: bmc_canvases_partial_update description: Update specific fields of a Business Model Canvas. summary: Partially update BMC canvas parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Business Model Canvas. required: true tags: - BMC requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedBMCRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedBMCRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedBMCRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/BMC' description: '' delete: operationId: bmc_canvases_destroy description: Delete a Business Model Canvas. summary: Delete BMC canvas parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Business Model Canvas. required: true tags: - BMC security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/bmc/canvases/{id}/create_version/: post: operationId: bmc_canvases_create_version_create description: Create a new incremented version of the current Business Model Canvas. summary: Create new version of BMC parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Business Model Canvas. required: true tags: - BMC requestBody: content: application/json: schema: $ref: '#/components/schemas/BMCRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BMCRequest' multipart/form-data: schema: $ref: '#/components/schemas/BMCRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/BMC' description: '' /api/v1/bmc/canvases/{id}/export_svg/: get: operationId: bmc_canvases_export_svg_retrieve description: Export the Business Model Canvas as an SVG file download. summary: Export BMC as SVG parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Business Model Canvas. required: true tags: - BMC security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: image/svg+xml: schema: type: string format: binary description: '' /api/v1/bmc/canvases/{id}/save_as_template/: post: operationId: bmc_canvases_save_as_template_create description: Save the current Business Model Canvas as a reusable template. summary: Save BMC as template parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Business Model Canvas. required: true tags: - BMC requestBody: content: application/json: schema: $ref: '#/components/schemas/BMCRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BMCRequest' multipart/form-data: schema: $ref: '#/components/schemas/BMCRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/BMC' description: '' /api/v1/bmc/canvases/{id}/save_to_gallery/: post: operationId: bmc_canvases_save_to_gallery_create description: Render and save the Business Model Canvas to the media gallery. summary: Save BMC to gallery parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Business Model Canvas. required: true tags: - BMC requestBody: content: application/json: schema: $ref: '#/components/schemas/BMCRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BMCRequest' multipart/form-data: schema: $ref: '#/components/schemas/BMCRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/BMC' description: '' /api/v1/bmc/templates/: get: operationId: bmc_templates_list description: Retrieve a list of active Business Model Canvas templates. summary: List BMC templates parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - BMC security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBMCTemplateList' description: '' post: operationId: bmc_templates_create description: Create a new Business Model Canvas template. summary: Create BMC template tags: - BMC requestBody: content: application/json: schema: $ref: '#/components/schemas/BMCTemplateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BMCTemplateRequest' multipart/form-data: schema: $ref: '#/components/schemas/BMCTemplateRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/BMCTemplate' description: '' /api/v1/bmc/templates/{id}/: get: operationId: bmc_templates_retrieve description: Retrieve detailed information about a specific BMC template. summary: Get BMC template details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this bmc template. required: true tags: - BMC security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/BMCTemplate' description: '' put: operationId: bmc_templates_update description: Update all fields of a BMC template. summary: Update BMC template parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this bmc template. required: true tags: - BMC requestBody: content: application/json: schema: $ref: '#/components/schemas/BMCTemplateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BMCTemplateRequest' multipart/form-data: schema: $ref: '#/components/schemas/BMCTemplateRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/BMCTemplate' description: '' patch: operationId: bmc_templates_partial_update description: Update specific fields of a BMC template. summary: Partially update BMC template parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this bmc template. required: true tags: - BMC requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedBMCTemplateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedBMCTemplateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedBMCTemplateRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/BMCTemplate' description: '' delete: operationId: bmc_templates_destroy description: Delete a BMC template. summary: Delete BMC template parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this bmc template. required: true tags: - BMC security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/bmc/tools/: get: operationId: bmc_tools_list description: Retrieve a list of Business Model Canvas tools owned by the current user. summary: List BMC tools parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - BMC security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBMCToolList' description: '' post: operationId: bmc_tools_create description: Create a new Business Model Canvas tool. summary: Create BMC tool tags: - BMC requestBody: content: application/json: schema: $ref: '#/components/schemas/BMCToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BMCToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/BMCToolRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/BMCTool' description: '' /api/v1/bmc/tools/{id}/: get: operationId: bmc_tools_retrieve description: Retrieve detailed information about a specific BMC tool. summary: Get BMC tool details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this bmc tool. required: true tags: - BMC security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/BMCTool' description: '' put: operationId: bmc_tools_update description: Update all fields of a BMC tool. summary: Update BMC tool parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this bmc tool. required: true tags: - BMC requestBody: content: application/json: schema: $ref: '#/components/schemas/BMCToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BMCToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/BMCToolRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/BMCTool' description: '' patch: operationId: bmc_tools_partial_update description: Update specific fields of a BMC tool. summary: Partially update BMC tool parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this bmc tool. required: true tags: - BMC requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedBMCToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedBMCToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedBMCToolRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/BMCTool' description: '' delete: operationId: bmc_tools_destroy description: Delete a BMC tool and all associated canvases. summary: Delete BMC tool parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this bmc tool. required: true tags: - BMC security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/bmc/tools/{id}/canvases/: get: operationId: bmc_tools_canvases_retrieve description: Retrieve all canvas versions associated with a specific BMC tool, ordered by version descending. summary: List canvases for BMC tool parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this bmc tool. required: true tags: - BMC security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/BMCTool' description: '' /api/v1/bmc/tools/{id}/create_canvas/: post: operationId: bmc_tools_create_canvas_create description: Create a new canvas version for a specific BMC tool. The version number is automatically incremented. summary: Create canvas for BMC tool parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this bmc tool. required: true tags: - BMC requestBody: content: application/json: schema: $ref: '#/components/schemas/BMCToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BMCToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/BMCToolRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/BMCTool' description: '' /api/v1/calendar/events/: get: operationId: calendar_events_retrieve description: Returns calendar events for the authenticated user within a specified date range summary: List calendar events parameters: - in: query name: end schema: type: string description: End date (ISO format) - in: query name: start schema: type: string description: Start date (ISO format) tags: - calendar security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': description: List of calendar events /api/v1/core/api-keys/: get: operationId: core_api_keys_list description: Retrieve a list of API keys belonging to the current user. summary: List user API keys parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - Core security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedAPIKeyList' description: '' /api/v1/core/api-keys/{id}/: get: operationId: core_api_keys_retrieve description: Retrieve detailed information about a specific API key. summary: Get API key details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this api key. required: true tags: - Core security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/APIKey' description: '' /api/v1/core/currencies/: get: operationId: core_currencies_list description: Retrieve a list of all active currencies available in the system. summary: List currencies parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - Core security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCurrencyList' description: '' /api/v1/core/currencies/{code}/: get: operationId: core_currencies_retrieve description: Retrieve detailed information about a specific currency. summary: Get currency details parameters: - in: path name: code schema: type: string description: A unique value identifying this currency. required: true tags: - Core security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Currency' description: '' /api/v1/core/divisions/: get: operationId: core_divisions_list description: Retrieve a list of divisions with optional filtering by organization. summary: List organization divisions parameters: - in: query name: organization schema: type: integer description: Filter divisions by organization ID - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search divisions by name or abbreviation tags: - Core security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedOrganizationDivisionList' description: '' post: operationId: core_divisions_create description: Create a new organizational division. summary: Create new division tags: - Core requestBody: content: application/json: schema: $ref: '#/components/schemas/OrganizationDivisionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OrganizationDivisionRequest' multipart/form-data: schema: $ref: '#/components/schemas/OrganizationDivisionRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/OrganizationDivision' description: '' /api/v1/core/divisions/{id}/: get: operationId: core_divisions_retrieve description: Retrieve detailed information about a specific division including hierarchy and counts. summary: Get division details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Organization Division. required: true tags: - Core security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/OrganizationDivision' description: '' put: operationId: core_divisions_update description: Update an existing division's information. summary: Update division parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Organization Division. required: true tags: - Core requestBody: content: application/json: schema: $ref: '#/components/schemas/OrganizationDivisionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OrganizationDivisionRequest' multipart/form-data: schema: $ref: '#/components/schemas/OrganizationDivisionRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/OrganizationDivision' description: '' patch: operationId: core_divisions_partial_update description: Partially update an existing division's information. summary: Partially update division parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Organization Division. required: true tags: - Core requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedOrganizationDivisionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedOrganizationDivisionRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedOrganizationDivisionRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/OrganizationDivision' description: '' delete: operationId: core_divisions_destroy description: Delete a division. Sub-divisions will have their parent cleared. summary: Delete division parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Organization Division. required: true tags: - Core security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/core/divisions/{id}/sub_divisions/: get: operationId: core_divisions_sub_divisions_list description: Retrieve all sub-divisions of a division recursively. summary: Get sub-divisions parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Organization Division. required: true - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - name: search required: false in: query description: A search term. schema: type: string tags: - Core security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedOrganizationDivisionList' description: '' /api/v1/core/fiscal-years/: get: operationId: core_fiscal_years_list description: Retrieve a list of all fiscal years configured in the system. summary: List fiscal years parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - Core security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedFiscalYearList' description: '' /api/v1/core/fiscal-years/{id}/: get: operationId: core_fiscal_years_retrieve description: Retrieve detailed information about a specific fiscal year including quarters. summary: Get fiscal year details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this fiscal year. required: true tags: - Core security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/FiscalYear' description: '' /api/v1/core/organizations/: get: operationId: core_organizations_list description: Retrieve a list of organizations with optional search by name. summary: List organizations parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search organizations by name tags: - Core security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedOrganizationList' description: '' /api/v1/core/organizations/{id}/: get: operationId: core_organizations_retrieve description: Retrieve detailed information about a specific organization. summary: Get organization details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this organization. required: true tags: - Core security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Organization' description: '' /api/v1/core/profile/: get: operationId: core_profile_retrieve description: Retrieve the current user's profile settings including timezone, date format, and theme preferences. summary: Get user profile tags: - Core security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserProfile' description: '' put: operationId: core_profile_update description: Update the current user's profile settings. summary: Update user profile tags: - Core requestBody: content: application/json: schema: $ref: '#/components/schemas/UserProfileRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UserProfileRequest' multipart/form-data: schema: $ref: '#/components/schemas/UserProfileRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserProfile' description: '' patch: operationId: core_profile_partial_update description: Partially update the current user's profile settings. summary: Partially update user profile tags: - Core requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedUserProfileRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedUserProfileRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedUserProfileRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserProfile' description: '' /api/v1/core/stats/: get: operationId: core_stats_retrieve description: Get API usage statistics and metrics. summary: API Statistics tags: - System security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: type: object properties: total_requests: type: integer active_users: type: integer endpoints_available: type: integer rate_limit_info: type: object properties: limit: type: integer remaining: type: integer reset_time: type: string format: date-time description: '' /api/v1/deckcraft/decks/: get: operationId: deckcraft_decks_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDeckList' description: '' post: operationId: deckcraft_decks_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/DeckRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DeckRequest' multipart/form-data: schema: $ref: '#/components/schemas/DeckRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Deck' description: '' /api/v1/deckcraft/decks/{id}/: get: operationId: deckcraft_decks_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Deck' description: '' put: operationId: deckcraft_decks_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/DeckRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DeckRequest' multipart/form-data: schema: $ref: '#/components/schemas/DeckRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Deck' description: '' patch: operationId: deckcraft_decks_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedDeckRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedDeckRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedDeckRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Deck' description: '' delete: operationId: deckcraft_decks_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/deckcraft/decks/{id}/download/: get: operationId: deckcraft_decks_download_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Deck' description: '' /api/v1/deckcraft/decks/{id}/generate/: post: operationId: deckcraft_decks_generate_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/DeckRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DeckRequest' multipart/form-data: schema: $ref: '#/components/schemas/DeckRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Deck' description: '' /api/v1/deckcraft/presentations/: get: operationId: deckcraft_presentations_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPresentationList' description: '' post: operationId: deckcraft_presentations_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PresentationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PresentationRequest' multipart/form-data: schema: $ref: '#/components/schemas/PresentationRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Presentation' description: '' /api/v1/deckcraft/presentations/{id}/: get: operationId: deckcraft_presentations_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this presentation. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Presentation' description: '' put: operationId: deckcraft_presentations_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this presentation. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PresentationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PresentationRequest' multipart/form-data: schema: $ref: '#/components/schemas/PresentationRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Presentation' description: '' patch: operationId: deckcraft_presentations_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this presentation. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedPresentationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedPresentationRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedPresentationRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Presentation' description: '' delete: operationId: deckcraft_presentations_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this presentation. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/deckcraft/slides/: get: operationId: deckcraft_slides_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDeckSlideList' description: '' post: operationId: deckcraft_slides_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/DeckSlideRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DeckSlideRequest' multipart/form-data: schema: $ref: '#/components/schemas/DeckSlideRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/DeckSlide' description: '' /api/v1/deckcraft/slides/{id}/: get: operationId: deckcraft_slides_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck slide. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DeckSlide' description: '' put: operationId: deckcraft_slides_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck slide. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/DeckSlideRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DeckSlideRequest' multipart/form-data: schema: $ref: '#/components/schemas/DeckSlideRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DeckSlide' description: '' patch: operationId: deckcraft_slides_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck slide. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedDeckSlideRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedDeckSlideRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedDeckSlideRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DeckSlide' description: '' delete: operationId: deckcraft_slides_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck slide. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/deckcraft/slides/reorder/: post: operationId: deckcraft_slides_reorder_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/DeckSlideRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DeckSlideRequest' multipart/form-data: schema: $ref: '#/components/schemas/DeckSlideRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DeckSlide' description: '' /api/v1/deckcraft/table-sources/: get: operationId: deckcraft_table_sources_list parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedTableSourceList' description: '' /api/v1/deckcraft/table-sources/{id}/: get: operationId: deckcraft_table_sources_retrieve parameters: - in: path name: id schema: type: string required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TableSource' description: '' /api/v1/deckcraft/table-sources/{id}/data/: get: operationId: deckcraft_table_sources_data_retrieve parameters: - in: path name: id schema: type: string required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TableSource' description: '' /api/v1/deckcraft/templates/: get: operationId: deckcraft_templates_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPowerPointTemplateList' description: '' post: operationId: deckcraft_templates_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplate' description: '' /api/v1/deckcraft/templates/{id}/: get: operationId: deckcraft_templates_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this power point template. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplate' description: '' put: operationId: deckcraft_templates_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this power point template. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplate' description: '' patch: operationId: deckcraft_templates_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this power point template. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedPowerPointTemplateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedPowerPointTemplateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedPowerPointTemplateRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplate' description: '' delete: operationId: deckcraft_templates_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this power point template. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/deckcraft/templates/{id}/layouts/: get: operationId: deckcraft_templates_layouts_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this power point template. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplate' description: '' /api/v1/deckcraft/templates/{id}/refresh/: post: operationId: deckcraft_templates_refresh_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this power point template. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplate' description: '' /api/v1/engagement/engagements/: get: operationId: engagement_engagements_list description: Retrieve a paginated list of client engagements with summary information. summary: List engagements parameters: - in: query name: ordering schema: type: string description: 'Order by: name, start_date, end_date, status, created_date' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search engagements by name, description, or client name tags: - Engagement security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedEngagementSummaryList' description: '' post: operationId: engagement_engagements_create description: Create a new client engagement. summary: Create engagement tags: - Engagement requestBody: content: application/json: schema: $ref: '#/components/schemas/EngagementRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/EngagementRequest' multipart/form-data: schema: $ref: '#/components/schemas/EngagementRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Engagement' description: '' /api/v1/engagement/engagements/{id}/: get: operationId: engagement_engagements_retrieve description: Retrieve detailed information about a specific engagement. summary: Get engagement details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this engagement. required: true tags: - Engagement security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Engagement' description: '' put: operationId: engagement_engagements_update description: Update all fields of an engagement record. summary: Update engagement parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this engagement. required: true tags: - Engagement requestBody: content: application/json: schema: $ref: '#/components/schemas/EngagementRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/EngagementRequest' multipart/form-data: schema: $ref: '#/components/schemas/EngagementRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Engagement' description: '' patch: operationId: engagement_engagements_partial_update description: Update specific fields of an engagement record. summary: Partially update engagement parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this engagement. required: true tags: - Engagement requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedEngagementRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedEngagementRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedEngagementRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Engagement' description: '' delete: operationId: engagement_engagements_destroy description: Delete an engagement record. summary: Delete engagement parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this engagement. required: true tags: - Engagement security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/engagement/engagements/{id}/summary/: get: operationId: engagement_engagements_summary_retrieve description: Retrieve comprehensive engagement summary including interviews, workshops, and statistics. summary: Get engagement summary parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this engagement. required: true tags: - Engagement security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: type: object properties: engagement: type: object description: Engagement details interviews: type: array description: List of interviews workshops: type: array description: List of workshops statistics: type: object properties: total_interviews: type: integer total_workshops: type: integer duration_days: type: integer description: '' /api/v1/engagement/engagements/by_client/: get: operationId: engagement_engagements_by_client_retrieve description: Filter engagements by a specific client. summary: Get engagements by client parameters: - in: query name: client_id schema: type: string format: uuid description: ID of the client to filter engagements by required: true tags: - Engagement security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Engagement' description: '' /api/v1/engagement/engagements/by_status/: get: operationId: engagement_engagements_by_status_retrieve description: Filter engagements by their current status. summary: Get engagements by status parameters: - in: query name: status schema: type: string description: Status to filter engagements by required: true tags: - Engagement security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Engagement' description: '' /api/v1/engagement/interviews/: get: operationId: engagement_interviews_list description: Retrieve a list of interviews for engagements owned by the current user. summary: List interviews parameters: - in: query name: ordering schema: type: string description: 'Order by: name, date, time' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search interviews by name, notes, or contact name tags: - Engagement security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedInterviewList' description: '' post: operationId: engagement_interviews_create description: Create a new interview within an engagement. summary: Create interview tags: - Engagement requestBody: content: application/json: schema: $ref: '#/components/schemas/InterviewRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/InterviewRequest' multipart/form-data: schema: $ref: '#/components/schemas/InterviewRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Interview' description: '' /api/v1/engagement/interviews/{id}/: get: operationId: engagement_interviews_retrieve description: Retrieve detailed information about a specific interview. summary: Get interview details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this interview. required: true tags: - Engagement security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Interview' description: '' put: operationId: engagement_interviews_update description: Update all fields of an interview record. summary: Update interview parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this interview. required: true tags: - Engagement requestBody: content: application/json: schema: $ref: '#/components/schemas/InterviewRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/InterviewRequest' multipart/form-data: schema: $ref: '#/components/schemas/InterviewRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Interview' description: '' patch: operationId: engagement_interviews_partial_update description: Update specific fields of an interview record. summary: Partially update interview parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this interview. required: true tags: - Engagement requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedInterviewRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedInterviewRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedInterviewRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Interview' description: '' delete: operationId: engagement_interviews_destroy description: Delete an interview record. summary: Delete interview parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this interview. required: true tags: - Engagement security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/engagement/interviews/by_engagement/: get: operationId: engagement_interviews_by_engagement_retrieve description: Retrieve all interviews for a specific engagement. summary: Get interviews by engagement parameters: - in: query name: engagement_id schema: type: string format: uuid description: ID of the engagement to filter interviews by required: true tags: - Engagement security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Interview' description: '' /api/v1/engagement/workshops/: get: operationId: engagement_workshops_list description: Retrieve a list of workshops for engagements owned by the current user. summary: List workshops parameters: - in: query name: ordering schema: type: string description: 'Order by: name, date, time, workshop_type' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search workshops by name, notes, or workshop type tags: - Engagement security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedWorkshopList' description: '' post: operationId: engagement_workshops_create description: Create a new workshop within an engagement. summary: Create workshop tags: - Engagement requestBody: content: application/json: schema: $ref: '#/components/schemas/WorkshopRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/WorkshopRequest' multipart/form-data: schema: $ref: '#/components/schemas/WorkshopRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Workshop' description: '' /api/v1/engagement/workshops/{id}/: get: operationId: engagement_workshops_retrieve description: Retrieve detailed information about a specific workshop. summary: Get workshop details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this workshop. required: true tags: - Engagement security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Workshop' description: '' put: operationId: engagement_workshops_update description: Update all fields of a workshop record. summary: Update workshop parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this workshop. required: true tags: - Engagement requestBody: content: application/json: schema: $ref: '#/components/schemas/WorkshopRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/WorkshopRequest' multipart/form-data: schema: $ref: '#/components/schemas/WorkshopRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Workshop' description: '' patch: operationId: engagement_workshops_partial_update description: Update specific fields of a workshop record. summary: Partially update workshop parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this workshop. required: true tags: - Engagement requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedWorkshopRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedWorkshopRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedWorkshopRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Workshop' description: '' delete: operationId: engagement_workshops_destroy description: Delete a workshop record. summary: Delete workshop parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this workshop. required: true tags: - Engagement security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/engagement/workshops/by_engagement/: get: operationId: engagement_workshops_by_engagement_retrieve description: Retrieve all workshops for a specific engagement. summary: Get workshops by engagement parameters: - in: query name: engagement_id schema: type: string format: uuid description: ID of the engagement to filter workshops by required: true tags: - Engagement security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Workshop' description: '' /api/v1/engagement/workshops/by_type/: get: operationId: engagement_workshops_by_type_retrieve description: Filter workshops by workshop type. summary: Get workshops by type parameters: - in: query name: type schema: type: string description: Workshop type to filter by required: true tags: - Engagement security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Workshop' description: '' /api/v1/gallery/collections/: get: operationId: gallery_collections_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - name: page_size required: false in: query description: Number of results to return per page. schema: type: integer tags: - gallery security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedMediaCollectionList' description: '' post: operationId: gallery_collections_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - gallery requestBody: content: application/json: schema: $ref: '#/components/schemas/MediaCollectionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/MediaCollectionRequest' multipart/form-data: schema: $ref: '#/components/schemas/MediaCollectionRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/MediaCollection' description: '' /api/v1/gallery/collections/{id}/: get: operationId: gallery_collections_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this media collection. required: true tags: - gallery security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/MediaCollection' description: '' put: operationId: gallery_collections_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this media collection. required: true tags: - gallery requestBody: content: application/json: schema: $ref: '#/components/schemas/MediaCollectionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/MediaCollectionRequest' multipart/form-data: schema: $ref: '#/components/schemas/MediaCollectionRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/MediaCollection' description: '' patch: operationId: gallery_collections_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this media collection. required: true tags: - gallery requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedMediaCollectionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedMediaCollectionRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedMediaCollectionRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/MediaCollection' description: '' delete: operationId: gallery_collections_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this media collection. required: true tags: - gallery security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/gallery/media/: get: operationId: gallery_media_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - name: page_size required: false in: query description: Number of results to return per page. schema: type: integer - name: search required: false in: query description: A search term. schema: type: string tags: - gallery security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedMediaItemList' description: '' post: operationId: gallery_media_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - gallery requestBody: content: application/json: schema: $ref: '#/components/schemas/MediaItemRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/MediaItemRequest' multipart/form-data: schema: $ref: '#/components/schemas/MediaItemRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/MediaItem' description: '' /api/v1/gallery/media/{id}/: get: operationId: gallery_media_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this media item. required: true tags: - gallery security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/MediaItem' description: '' put: operationId: gallery_media_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this media item. required: true tags: - gallery requestBody: content: application/json: schema: $ref: '#/components/schemas/MediaItemRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/MediaItemRequest' multipart/form-data: schema: $ref: '#/components/schemas/MediaItemRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/MediaItem' description: '' patch: operationId: gallery_media_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this media item. required: true tags: - gallery requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedMediaItemRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedMediaItemRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedMediaItemRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/MediaItem' description: '' delete: operationId: gallery_media_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this media item. required: true tags: - gallery security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/gallery/media/by_type/: get: operationId: gallery_media_by_type_retrieve description: Get media items filtered by type tags: - gallery security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': description: No response body /api/v1/gallery/media/search/: get: operationId: gallery_media_search_retrieve description: Search for media items with optional filtering summary: Search media items parameters: - in: query name: limit schema: type: integer description: Maximum number of results - in: query name: q schema: type: string description: Search query - in: query name: type schema: type: string description: Filter by media type tags: - gallery security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': description: Search results /api/v1/gallery/search/: get: operationId: gallery_search_retrieve description: Search for media items with optional filtering summary: Search media items parameters: - in: query name: limit schema: type: integer description: Maximum number of results - in: query name: q schema: type: string description: Search query - in: query name: type schema: type: string description: Filter by media type tags: - gallery security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': description: Search results /api/v1/gallery/tags/: get: operationId: gallery_tags_list parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - name: page_size required: false in: query description: Number of results to return per page. schema: type: integer tags: - gallery security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedTagList' description: '' post: operationId: gallery_tags_create tags: - gallery requestBody: content: application/json: schema: $ref: '#/components/schemas/TagRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TagRequest' multipart/form-data: schema: $ref: '#/components/schemas/TagRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Tag' description: '' /api/v1/gallery/tags/{id}/: get: operationId: gallery_tags_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this tag. required: true tags: - gallery security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Tag' description: '' put: operationId: gallery_tags_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this tag. required: true tags: - gallery requestBody: content: application/json: schema: $ref: '#/components/schemas/TagRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TagRequest' multipart/form-data: schema: $ref: '#/components/schemas/TagRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Tag' description: '' patch: operationId: gallery_tags_partial_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this tag. required: true tags: - gallery requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedTagRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedTagRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedTagRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Tag' description: '' delete: operationId: gallery_tags_destroy parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this tag. required: true tags: - gallery security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/location-tool/location-sets/{location_set_pk}/csv/: get: operationId: location_tool_location_sets_csv_retrieve description: Export all locations in a location set to CSV format. summary: Export locations to CSV parameters: - in: path name: location_set_pk schema: type: integer required: true tags: - CSV Operations security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: type: string format: binary description: '' post: operationId: location_tool_location_sets_csv_create description: Import location data from a CSV file with validation and error reporting. summary: Import locations from CSV parameters: - in: path name: location_set_pk schema: type: integer required: true tags: - CSV Operations requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/CSVImportRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CSVImportRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: type: object description: '' /api/v1/location-tool/table-sources/: get: operationId: location_tool_table_sources_list description: Retrieve table source configurations for location tools. summary: List table sources parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - Table Sources security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedLocationTableSourceList' description: '' post: operationId: location_tool_table_sources_create description: Create a new table source configuration for a location tool. summary: Create table source tags: - Table Sources requestBody: content: application/json: schema: $ref: '#/components/schemas/LocationTableSourceRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/LocationTableSourceRequest' multipart/form-data: schema: $ref: '#/components/schemas/LocationTableSourceRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/LocationTableSource' description: '' /api/v1/location-tool/table-sources/{id}/: get: operationId: location_tool_table_sources_retrieve description: Retrieve detailed information about a table source configuration. summary: Get table source details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this location table source. required: true tags: - Table Sources security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/LocationTableSource' description: '' put: operationId: location_tool_table_sources_update description: Update an existing table source configuration. summary: Update table source parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this location table source. required: true tags: - Table Sources requestBody: content: application/json: schema: $ref: '#/components/schemas/LocationTableSourceRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/LocationTableSourceRequest' multipart/form-data: schema: $ref: '#/components/schemas/LocationTableSourceRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/LocationTableSource' description: '' patch: operationId: location_tool_table_sources_partial_update description: |- Location Table Source management endpoints. Provides CRUD access to table source configurations including: - Field selection settings - Schema generation - Data access for other tools parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this location table source. required: true tags: - location-tool requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedLocationTableSourceRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedLocationTableSourceRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedLocationTableSourceRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/LocationTableSource' description: '' delete: operationId: location_tool_table_sources_destroy description: Delete a table source configuration. summary: Delete table source parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this location table source. required: true tags: - Table Sources security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/location-tool/table-sources/{id}/data/: get: operationId: location_tool_table_sources_data_retrieve description: Retrieve the actual data from this table source. summary: Get table source data parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this location table source. required: true tags: - Table Sources security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: type: array items: type: object description: '' /api/v1/location-tool/tools/: get: operationId: location_tool_tools_list description: Retrieve a list of client location tools owned by the current user. summary: List client location tools parameters: - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - name: search required: false in: query description: A search term. schema: type: string tags: - Location Tools security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedClientLocationToolList' description: '' post: operationId: location_tool_tools_create description: Create a new client location tool. summary: Create location tool tags: - Location Tools requestBody: content: application/json: schema: $ref: '#/components/schemas/ClientLocationToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ClientLocationToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/ClientLocationToolRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/ClientLocationTool' description: '' /api/v1/location-tool/tools/{id}/: get: operationId: location_tool_tools_retrieve description: Retrieve detailed information about a specific client location tool. summary: Get location tool details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Client Location Tool. required: true tags: - Location Tools security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/ClientLocationTool' description: '' put: operationId: location_tool_tools_update description: Update an existing client location tool. summary: Update location tool parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Client Location Tool. required: true tags: - Location Tools requestBody: content: application/json: schema: $ref: '#/components/schemas/ClientLocationToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ClientLocationToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/ClientLocationToolRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/ClientLocationTool' description: '' patch: operationId: location_tool_tools_partial_update description: Partially update an existing client location tool. summary: Partially update location tool parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Client Location Tool. required: true tags: - Location Tools requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedClientLocationToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedClientLocationToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedClientLocationToolRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/ClientLocationTool' description: '' delete: operationId: location_tool_tools_destroy description: Delete a client location tool and all associated data. summary: Delete location tool parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Client Location Tool. required: true tags: - Location Tools security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/location-tool/tools/{id}/create_version/: post: operationId: location_tool_tools_create_version_create description: "\n Create a new version of the location tool with automatic version numbering.\n \n This endpoint implements automatic version numbering where:\n - Version numbers are automatically assigned as sequential integers (1, 2, 3, etc.)\n - No version number should be provided in the request\n - The system finds the highest existing version and increments by 1\n - All data from the current version is copied to the new version\n - The tool's current_version is updated to the new version\n \n The response includes the automatically assigned version number.\n \n Concurrent Safety:\n Multiple simultaneous requests are handled safely using database constraints.\n If a conflict occurs, an appropriate error message is returned.\n " summary: Create new version parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Client Location Tool. required: true tags: - Location Tools security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/LocationSet' description: '' '400': content: application/json: schema: type: object properties: error: type: string example: Version creation failed due to duplicate version number. This may be caused by concurrent version creation attempts. description: '' /api/v1/location-tool/tools/{id}/switch_version/: post: operationId: location_tool_tools_switch_version_create description: "\n Switch the current active version of the location tool.\n \ \n This endpoint allows switching between existing versions of a location tool.\n The version parameter must be an integer corresponding to an existing version.\n \n Version numbers are sequential integers (1, 2, 3, etc.) that were automatically\n assigned when the versions were created.\n " summary: Switch version parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Client Location Tool. required: true - in: query name: version schema: type: integer description: Version number to switch to (integer, e.g., 1, 2, 3) required: true tags: - Location Tools requestBody: content: application/json: schema: $ref: '#/components/schemas/ClientLocationToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ClientLocationToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/ClientLocationToolRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/ClientLocationTool' description: '' '400': content: application/json: schema: type: object properties: error: type: string example: Version must be a valid integer description: '' '404': content: application/json: schema: type: object properties: error: type: string example: Version 5 does not exist description: '' /api/v1/location-tool/tools/{tool_pk}/location-sets/: get: operationId: location_tool_tools_location_sets_list description: Retrieve location sets for a specific tool. summary: List location sets parameters: - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: path name: tool_pk schema: type: string required: true tags: - Location Sets security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedLocationSetList' description: '' post: operationId: location_tool_tools_location_sets_create description: Create a new location set for a tool. summary: Create location set parameters: - in: path name: tool_pk schema: type: string required: true tags: - Location Sets requestBody: content: application/json: schema: $ref: '#/components/schemas/LocationSetRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/LocationSetRequest' multipart/form-data: schema: $ref: '#/components/schemas/LocationSetRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/LocationSet' description: '' /api/v1/location-tool/tools/{tool_pk}/location-sets/{location_set_pk}/custom-fields/: get: operationId: location_tool_tools_location_sets_custom_fields_list description: Retrieve custom field definitions for a location set. summary: List custom field definitions parameters: - in: path name: location_set_pk schema: type: integer required: true - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: path name: tool_pk schema: type: string required: true tags: - Custom Fields security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCustomFieldDefinitionList' description: '' post: operationId: location_tool_tools_location_sets_custom_fields_create description: Create a new custom field definition for a location set. summary: Create custom field definition parameters: - in: path name: location_set_pk schema: type: integer required: true - in: path name: tool_pk schema: type: string required: true tags: - Custom Fields requestBody: content: application/json: schema: $ref: '#/components/schemas/CustomFieldDefinitionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CustomFieldDefinitionRequest' multipart/form-data: schema: $ref: '#/components/schemas/CustomFieldDefinitionRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/CustomFieldDefinition' description: '' /api/v1/location-tool/tools/{tool_pk}/location-sets/{location_set_pk}/custom-fields/{id}/: get: operationId: location_tool_tools_location_sets_custom_fields_retrieve description: Retrieve details about a specific custom field definition. summary: Get custom field definition parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this custom field definition. required: true - in: path name: location_set_pk schema: type: integer required: true - in: path name: tool_pk schema: type: string required: true tags: - Custom Fields security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/CustomFieldDefinition' description: '' put: operationId: location_tool_tools_location_sets_custom_fields_update description: Update an existing custom field definition. summary: Update custom field definition parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this custom field definition. required: true - in: path name: location_set_pk schema: type: integer required: true - in: path name: tool_pk schema: type: string required: true tags: - Custom Fields requestBody: content: application/json: schema: $ref: '#/components/schemas/CustomFieldDefinitionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CustomFieldDefinitionRequest' multipart/form-data: schema: $ref: '#/components/schemas/CustomFieldDefinitionRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/CustomFieldDefinition' description: '' patch: operationId: location_tool_tools_location_sets_custom_fields_partial_update description: |- Custom Field Definition management endpoints. Provides CRUD access to custom field definitions including: - Field type configuration - Validation rules - Default values and ordering parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this custom field definition. required: true - in: path name: location_set_pk schema: type: integer required: true - in: path name: tool_pk schema: type: string required: true tags: - location-tool requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCustomFieldDefinitionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCustomFieldDefinitionRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCustomFieldDefinitionRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/CustomFieldDefinition' description: '' delete: operationId: location_tool_tools_location_sets_custom_fields_destroy description: Delete a custom field definition and all associated values. summary: Delete custom field definition parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this custom field definition. required: true - in: path name: location_set_pk schema: type: integer required: true - in: path name: tool_pk schema: type: string required: true tags: - Custom Fields security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/location-tool/tools/{tool_pk}/location-sets/{location_set_pk}/locations/: get: operationId: location_tool_tools_location_sets_locations_list description: Retrieve locations in a specific location set with filtering and search. summary: List locations parameters: - in: query name: client schema: type: integer description: Filter by client ID - in: query name: country schema: type: string description: Filter by country - in: query name: division schema: type: integer description: Filter by division ID - in: path name: location_set_pk schema: type: integer required: true - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search across site name and address - in: query name: state schema: type: string description: Filter by state - in: path name: tool_pk schema: type: string required: true tags: - Locations security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedLocationList' description: '' post: operationId: location_tool_tools_location_sets_locations_create description: Create a new location in the location set. summary: Create location parameters: - in: path name: location_set_pk schema: type: integer required: true - in: path name: tool_pk schema: type: string required: true tags: - Locations requestBody: content: application/json: schema: $ref: '#/components/schemas/LocationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/LocationRequest' multipart/form-data: schema: $ref: '#/components/schemas/LocationRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Location' description: '' /api/v1/location-tool/tools/{tool_pk}/location-sets/{location_set_pk}/locations/{id}/: get: operationId: location_tool_tools_location_sets_locations_retrieve description: Retrieve detailed information about a specific location. summary: Get location details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this location. required: true - in: path name: location_set_pk schema: type: integer required: true - in: path name: tool_pk schema: type: string required: true tags: - Locations security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Location' description: '' put: operationId: location_tool_tools_location_sets_locations_update description: Update an existing location. summary: Update location parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this location. required: true - in: path name: location_set_pk schema: type: integer required: true - in: path name: tool_pk schema: type: string required: true tags: - Locations requestBody: content: application/json: schema: $ref: '#/components/schemas/LocationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/LocationRequest' multipart/form-data: schema: $ref: '#/components/schemas/LocationRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Location' description: '' patch: operationId: location_tool_tools_location_sets_locations_partial_update description: Partially update an existing location. summary: Partially update location parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this location. required: true - in: path name: location_set_pk schema: type: integer required: true - in: path name: tool_pk schema: type: string required: true tags: - Locations requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedLocationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedLocationRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedLocationRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Location' description: '' delete: operationId: location_tool_tools_location_sets_locations_destroy description: Delete a location and all associated custom field values. summary: Delete location parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this location. required: true - in: path name: location_set_pk schema: type: integer required: true - in: path name: tool_pk schema: type: string required: true tags: - Locations security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/location-tool/tools/{tool_pk}/location-sets/{location_set_pk}/locations/{id}/set_custom_field/: post: operationId: location_tool_tools_location_sets_locations_set_custom_field_create description: Update a custom field value for this location. summary: Update custom field value parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this location. required: true - in: path name: location_set_pk schema: type: integer required: true - in: path name: tool_pk schema: type: string required: true tags: - Locations requestBody: content: application/json: schema: type: object properties: field_name: type: string value: type: string required: - field_name - value security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Location' description: '' /api/v1/location-tool/tools/{tool_pk}/location-sets/{location_set_pk}/locations/bulk_operations/: post: operationId: location_tool_tools_location_sets_locations_bulk_operations_create description: Perform bulk operations on multiple locations. summary: Bulk operations parameters: - in: path name: location_set_pk schema: type: integer required: true - in: path name: tool_pk schema: type: string required: true tags: - Locations requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkLocationOperationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BulkLocationOperationRequest' multipart/form-data: schema: $ref: '#/components/schemas/BulkLocationOperationRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: type: object description: '' /api/v1/location-tool/tools/{tool_pk}/location-sets/{id}/: get: operationId: location_tool_tools_location_sets_retrieve description: Retrieve detailed information about a specific location set. summary: Get location set details parameters: - in: path name: id schema: type: string required: true - in: path name: tool_pk schema: type: string required: true tags: - Location Sets security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/LocationSet' description: '' put: operationId: location_tool_tools_location_sets_update description: Update an existing location set. summary: Update location set parameters: - in: path name: id schema: type: string required: true - in: path name: tool_pk schema: type: string required: true tags: - Location Sets requestBody: content: application/json: schema: $ref: '#/components/schemas/LocationSetRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/LocationSetRequest' multipart/form-data: schema: $ref: '#/components/schemas/LocationSetRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/LocationSet' description: '' patch: operationId: location_tool_tools_location_sets_partial_update description: |- Location Set management endpoints. Provides CRUD access to location sets including: - Version management - Custom field definitions - Location aggregations parameters: - in: path name: id schema: type: string required: true - in: path name: tool_pk schema: type: string required: true tags: - location-tool requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedLocationSetRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedLocationSetRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedLocationSetRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/LocationSet' description: '' delete: operationId: location_tool_tools_location_sets_destroy description: Delete a location set and all associated locations. summary: Delete location set parameters: - in: path name: id schema: type: string required: true - in: path name: tool_pk schema: type: string required: true tags: - Location Sets security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/orbit/calendar-events/: get: operationId: orbit_calendar_events_list parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCalendarEventList' description: '' post: operationId: orbit_calendar_events_create tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarEventRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarEventRequest' multipart/form-data: schema: $ref: '#/components/schemas/CalendarEventRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' /api/v1/orbit/calendar-events/{id}/: get: operationId: orbit_calendar_events_retrieve parameters: - in: path name: id schema: type: string required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' put: operationId: orbit_calendar_events_update parameters: - in: path name: id schema: type: string required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarEventRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarEventRequest' multipart/form-data: schema: $ref: '#/components/schemas/CalendarEventRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' patch: operationId: orbit_calendar_events_partial_update parameters: - in: path name: id schema: type: string required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCalendarEventRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCalendarEventRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCalendarEventRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' delete: operationId: orbit_calendar_events_destroy parameters: - in: path name: id schema: type: string required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/orbit/clients/: get: operationId: orbit_clients_list description: Retrieve a paginated list of clients owned by the current user. summary: List clients parameters: - in: query name: ordering schema: type: string description: 'Order results by: name, created_date' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search clients by name, legal name, or overview tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedClientList' description: '' post: operationId: orbit_clients_create description: Create a new client record. summary: Create client tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ClientRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ClientRequest' multipart/form-data: schema: $ref: '#/components/schemas/ClientRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Client' description: '' /api/v1/orbit/clients/{id}/: get: operationId: orbit_clients_retrieve description: Retrieve detailed information about a specific client. summary: Get client details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this client. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Client' description: '' put: operationId: orbit_clients_update description: Update all fields of a client record. summary: Update client parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this client. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ClientRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ClientRequest' multipart/form-data: schema: $ref: '#/components/schemas/ClientRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Client' description: '' patch: operationId: orbit_clients_partial_update description: Update specific fields of a client record. summary: Partially update client parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this client. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedClientRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedClientRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedClientRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Client' description: '' delete: operationId: orbit_clients_destroy description: Delete a client record. summary: Delete client parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this client. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/orbit/contacts/: get: operationId: orbit_contacts_list description: Retrieve a paginated list of contacts from user's clients and vendors. summary: List contacts parameters: - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search contacts by name, job title, or email tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedContactList' description: '' post: operationId: orbit_contacts_create description: Create a new contact record. summary: Create contact tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/ContactRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Contact' description: '' /api/v1/orbit/contacts/{id}/: get: operationId: orbit_contacts_retrieve description: Retrieve detailed information about a specific contact. summary: Get contact details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this contact. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Contact' description: '' put: operationId: orbit_contacts_update description: Update all fields of a contact record. summary: Update contact parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this contact. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/ContactRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Contact' description: '' patch: operationId: orbit_contacts_partial_update description: Update specific fields of a contact record. summary: Partially update contact parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this contact. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedContactRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Contact' description: '' delete: operationId: orbit_contacts_destroy description: Delete a contact record. summary: Delete contact parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this contact. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/orbit/contacts/search/: get: operationId: orbit_contacts_search_retrieve description: Advanced contact search with organization type filtering. summary: Search contacts parameters: - in: query name: organization_type schema: type: string description: 'Filter by organization type: client or vendor' - in: query name: search_term schema: type: string description: Search term for name or job title tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Contact' description: '' /api/v1/orbit/digital-contact-types/: get: operationId: orbit_digital_contact_types_list parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDigitalContactTypeList' description: '' /api/v1/orbit/digital-contact-types/{id}/: get: operationId: orbit_digital_contact_types_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this digital contact type. required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DigitalContactType' description: '' /api/v1/orbit/digital-contacts/: get: operationId: orbit_digital_contacts_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDigitalContactList' description: '' post: operationId: orbit_digital_contacts_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/DigitalContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DigitalContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/DigitalContactRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/DigitalContact' description: '' /api/v1/orbit/digital-contacts/{id}/: get: operationId: orbit_digital_contacts_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this digital contact. required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DigitalContact' description: '' put: operationId: orbit_digital_contacts_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this digital contact. required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/DigitalContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DigitalContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/DigitalContactRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DigitalContact' description: '' patch: operationId: orbit_digital_contacts_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this digital contact. required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedDigitalContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedDigitalContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedDigitalContactRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DigitalContact' description: '' delete: operationId: orbit_digital_contacts_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this digital contact. required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/orbit/opportunities/: get: operationId: orbit_opportunities_list description: Retrieve a paginated list of sales opportunities. summary: List opportunities parameters: - in: query name: ordering schema: type: string description: 'Order by: name, expected_close_date, value' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search opportunities by name or description tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedOpportunityList' description: '' post: operationId: orbit_opportunities_create description: Create a new sales opportunity. summary: Create opportunity tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/OpportunityRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OpportunityRequest' multipart/form-data: schema: $ref: '#/components/schemas/OpportunityRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Opportunity' description: '' /api/v1/orbit/opportunities/{id}/: get: operationId: orbit_opportunities_retrieve description: Retrieve detailed information about a specific opportunity. summary: Get opportunity details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this opportunity. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Opportunity' description: '' put: operationId: orbit_opportunities_update description: Update all fields of an opportunity record. summary: Update opportunity parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this opportunity. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/OpportunityRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OpportunityRequest' multipart/form-data: schema: $ref: '#/components/schemas/OpportunityRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Opportunity' description: '' patch: operationId: orbit_opportunities_partial_update description: Update specific fields of an opportunity record. summary: Partially update opportunity parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this opportunity. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedOpportunityRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedOpportunityRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedOpportunityRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Opportunity' description: '' delete: operationId: orbit_opportunities_destroy description: Delete an opportunity record. summary: Delete opportunity parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this opportunity. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/orbit/opportunities/by_status/: get: operationId: orbit_opportunities_by_status_retrieve description: Retrieve opportunities filtered by status and optionally by client. summary: Filter opportunities by status parameters: - in: query name: client_id schema: type: integer description: Filter by specific client ID - in: query name: status schema: type: string description: 'Filter by opportunity status: active, won, lost, dropped' tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Opportunity' description: '' /api/v1/orbit/proposals/: get: operationId: orbit_proposals_list description: Retrieve a paginated list of proposals for opportunities owned by the current user. summary: List proposals parameters: - in: query name: opportunity_id schema: type: integer description: Filter by opportunity ID - in: query name: ordering schema: type: string description: 'Order by: name, due_date, submitted_date, created_date' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search proposals by name - in: query name: status schema: type: string description: 'Filter by status: Draft, In Review, Final' tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedProposalList' description: '' post: operationId: orbit_proposals_create description: Create a new proposal record. summary: Create proposal tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ProposalRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ProposalRequest' multipart/form-data: schema: $ref: '#/components/schemas/ProposalRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Proposal' description: '' /api/v1/orbit/proposals/{id}/: get: operationId: orbit_proposals_retrieve description: Retrieve detailed information about a specific proposal. summary: Get proposal details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this proposal. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Proposal' description: '' put: operationId: orbit_proposals_update description: Update all fields of a proposal record. summary: Update proposal parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this proposal. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ProposalRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ProposalRequest' multipart/form-data: schema: $ref: '#/components/schemas/ProposalRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Proposal' description: '' patch: operationId: orbit_proposals_partial_update description: Update specific fields of a proposal record. summary: Partially update proposal parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this proposal. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedProposalRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedProposalRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedProposalRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Proposal' description: '' delete: operationId: orbit_proposals_destroy description: Delete a proposal record. summary: Delete proposal parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this proposal. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/orbit/stock/overview/{symbol}/: get: operationId: orbit_stock_overview_retrieve description: Returns company overview data for a stock symbol summary: Get company overview parameters: - in: path name: symbol schema: type: string description: Stock symbol required: true tags: - stock security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': description: Company overview data '403': description: Access denied '500': description: Unable to fetch company data /api/v1/orbit/stock/quote/{symbol}/: get: operationId: orbit_stock_quote_retrieve description: Returns current stock quote data for a symbol summary: Get stock quote parameters: - in: path name: symbol schema: type: string description: Stock symbol required: true tags: - stock security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': description: Stock quote data '403': description: Access denied '500': description: Unable to fetch stock data /api/v1/orbit/suggest-timezone/: post: operationId: orbit_suggest_timezone_create description: Uses address components to suggest an appropriate timezone using geocoding. summary: Suggest timezone from address tags: - Orbit requestBody: content: application/json: schema: type: object properties: street_address: type: string locality: type: string region: type: string postal_code: type: string country: type: string security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: type: object properties: timezone: type: string success: type: boolean method: type: string description: '' '400': content: application/json: schema: type: object properties: error: type: string success: type: boolean description: '' /api/v1/orbit/vendor-solutions/: get: operationId: orbit_vendor_solutions_list description: Retrieve a paginated list of vendor solutions. summary: List vendor solutions parameters: - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search solutions by name or description - in: query name: vendor schema: type: integer description: Filter by vendor ID tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedVendorSolutionList' description: '' post: operationId: orbit_vendor_solutions_create description: Create a new vendor solution. summary: Create vendor solution tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/VendorSolutionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/VendorSolutionRequest' multipart/form-data: schema: $ref: '#/components/schemas/VendorSolutionRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/VendorSolution' description: '' /api/v1/orbit/vendor-solutions/{id}/: get: operationId: orbit_vendor_solutions_retrieve description: Retrieve detailed information about a specific vendor solution. summary: Get vendor solution details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor solution. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/VendorSolution' description: '' put: operationId: orbit_vendor_solutions_update description: Update all fields of a vendor solution record. summary: Update vendor solution parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor solution. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/VendorSolutionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/VendorSolutionRequest' multipart/form-data: schema: $ref: '#/components/schemas/VendorSolutionRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/VendorSolution' description: '' patch: operationId: orbit_vendor_solutions_partial_update description: Update specific fields of a vendor solution record. summary: Partially update vendor solution parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor solution. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedVendorSolutionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedVendorSolutionRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedVendorSolutionRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/VendorSolution' description: '' delete: operationId: orbit_vendor_solutions_destroy description: Delete a vendor solution record. summary: Delete vendor solution parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor solution. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/orbit/vendors/: get: operationId: orbit_vendors_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - name: search required: false in: query description: A search term. schema: type: string tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedVendorList' description: '' post: operationId: orbit_vendors_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/VendorRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/VendorRequest' multipart/form-data: schema: $ref: '#/components/schemas/VendorRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Vendor' description: '' /api/v1/orbit/vendors/{id}/: get: operationId: orbit_vendors_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor. required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Vendor' description: '' put: operationId: orbit_vendors_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor. required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/VendorRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/VendorRequest' multipart/form-data: schema: $ref: '#/components/schemas/VendorRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Vendor' description: '' patch: operationId: orbit_vendors_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor. required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedVendorRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedVendorRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedVendorRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Vendor' description: '' delete: operationId: orbit_vendors_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor. required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/pricing/line-items/: get: operationId: pricing_line_items_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - pricing security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPriceLineItemList' description: '' post: operationId: pricing_line_items_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - pricing requestBody: content: application/json: schema: $ref: '#/components/schemas/PriceLineItemRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PriceLineItemRequest' multipart/form-data: schema: $ref: '#/components/schemas/PriceLineItemRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/PriceLineItem' description: '' /api/v1/pricing/line-items/{id}/: get: operationId: pricing_line_items_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this price line item. required: true tags: - pricing security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PriceLineItem' description: '' put: operationId: pricing_line_items_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this price line item. required: true tags: - pricing requestBody: content: application/json: schema: $ref: '#/components/schemas/PriceLineItemRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PriceLineItemRequest' multipart/form-data: schema: $ref: '#/components/schemas/PriceLineItemRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PriceLineItem' description: '' patch: operationId: pricing_line_items_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this price line item. required: true tags: - pricing requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedPriceLineItemRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedPriceLineItemRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedPriceLineItemRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PriceLineItem' description: '' delete: operationId: pricing_line_items_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this price line item. required: true tags: - pricing security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/pricing/tools/: get: operationId: pricing_tools_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - pricing security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPricingToolList' description: '' post: operationId: pricing_tools_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - pricing requestBody: content: application/json: schema: $ref: '#/components/schemas/PricingToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PricingToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/PricingToolRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/PricingTool' description: '' /api/v1/pricing/tools/{id}/: get: operationId: pricing_tools_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this pricing tool. required: true tags: - pricing security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PricingTool' description: '' put: operationId: pricing_tools_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this pricing tool. required: true tags: - pricing requestBody: content: application/json: schema: $ref: '#/components/schemas/PricingToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PricingToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/PricingToolRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PricingTool' description: '' patch: operationId: pricing_tools_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this pricing tool. required: true tags: - pricing requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedPricingToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedPricingToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedPricingToolRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PricingTool' description: '' delete: operationId: pricing_tools_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this pricing tool. required: true tags: - pricing security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/pricing/tools/{id}/copy_version/: post: operationId: pricing_tools_copy_version_create description: Copy an existing version parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this pricing tool. required: true tags: - pricing requestBody: content: application/json: schema: $ref: '#/components/schemas/PricingToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PricingToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/PricingToolRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PricingTool' description: '' /api/v1/pricing/tools/{id}/versions/: get: operationId: pricing_tools_versions_retrieve description: Get all price versions for this tool parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this pricing tool. required: true tags: - pricing security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PricingTool' description: '' /api/v1/pricing/versions/: get: operationId: pricing_versions_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - pricing security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPriceVersionList' description: '' post: operationId: pricing_versions_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - pricing requestBody: content: application/json: schema: $ref: '#/components/schemas/PriceVersionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PriceVersionRequest' multipart/form-data: schema: $ref: '#/components/schemas/PriceVersionRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/PriceVersion' description: '' /api/v1/pricing/versions/{id}/: get: operationId: pricing_versions_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this price version. required: true tags: - pricing security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PriceVersion' description: '' put: operationId: pricing_versions_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this price version. required: true tags: - pricing requestBody: content: application/json: schema: $ref: '#/components/schemas/PriceVersionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PriceVersionRequest' multipart/form-data: schema: $ref: '#/components/schemas/PriceVersionRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PriceVersion' description: '' patch: operationId: pricing_versions_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this price version. required: true tags: - pricing requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedPriceVersionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedPriceVersionRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedPriceVersionRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PriceVersion' description: '' delete: operationId: pricing_versions_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this price version. required: true tags: - pricing security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/pricing/versions/{id}/pricing_table/: get: operationId: pricing_versions_pricing_table_retrieve description: Get formatted pricing table data parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this price version. required: true tags: - pricing security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PriceVersion' description: '' /api/v1/raid/assumptions/: get: operationId: raid_assumptions_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - raid security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedAssumptionList' description: '' /api/v1/raid/assumptions/{id}/: get: operationId: raid_assumptions_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this assumption. required: true tags: - raid security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Assumption' description: '' /api/v1/raid/dependencies/: get: operationId: raid_dependencies_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - raid security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDependencyList' description: '' /api/v1/raid/dependencies/{id}/: get: operationId: raid_dependencies_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this dependency. required: true tags: - raid security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Dependency' description: '' /api/v1/raid/issues/: get: operationId: raid_issues_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - raid security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedIssueList' description: '' /api/v1/raid/issues/{id}/: get: operationId: raid_issues_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this issue. required: true tags: - raid security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Issue' description: '' /api/v1/raid/risks/: get: operationId: raid_risks_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - raid security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedRiskList' description: '' /api/v1/raid/risks/{id}/: get: operationId: raid_risks_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this risk. required: true tags: - raid security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Risk' description: '' /api/v1/raid/tools/: get: operationId: raid_tools_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - raid security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedRAIDToolList' description: '' /api/v1/raid/tools/{id}/: get: operationId: raid_tools_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this raid tool. required: true tags: - raid security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/RAIDTool' description: '' /api/v1/raid/tools/{id}/table_data/: get: operationId: raid_tools_table_data_retrieve description: Return RAID data formatted for table display parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this raid tool. required: true tags: - raid security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/RAIDTool' description: '' /api/v1/requirements/requirements/: get: operationId: requirements_requirements_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - requirements security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedRequirementList' description: '' /api/v1/requirements/requirements/{id}/: get: operationId: requirements_requirements_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this requirement. required: true tags: - requirements security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Requirement' description: '' /api/v1/requirements/tools/: get: operationId: requirements_tools_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - requirements security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedRequirementsToolList' description: '' /api/v1/requirements/tools/{id}/: get: operationId: requirements_tools_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Requirements Tool. required: true tags: - requirements security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/RequirementsTool' description: '' /api/v1/stakeholder/org-charts/: get: operationId: stakeholder_org_charts_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - stakeholder security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedOrgChartList' description: '' post: operationId: stakeholder_org_charts_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - stakeholder requestBody: content: application/json: schema: $ref: '#/components/schemas/OrgChartRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OrgChartRequest' multipart/form-data: schema: $ref: '#/components/schemas/OrgChartRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/OrgChart' description: '' /api/v1/stakeholder/org-charts/{id}/: get: operationId: stakeholder_org_charts_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this org chart. required: true tags: - stakeholder security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/OrgChart' description: '' put: operationId: stakeholder_org_charts_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this org chart. required: true tags: - stakeholder requestBody: content: application/json: schema: $ref: '#/components/schemas/OrgChartRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OrgChartRequest' multipart/form-data: schema: $ref: '#/components/schemas/OrgChartRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/OrgChart' description: '' patch: operationId: stakeholder_org_charts_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this org chart. required: true tags: - stakeholder requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedOrgChartRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedOrgChartRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedOrgChartRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/OrgChart' description: '' delete: operationId: stakeholder_org_charts_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this org chart. required: true tags: - stakeholder security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/stakeholder/org-charts/{id}/levels/: get: operationId: stakeholder_org_charts_levels_retrieve description: Get org chart data organized by levels parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this org chart. required: true tags: - stakeholder security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/OrgChart' description: '' /api/v1/stakeholder/stakeholders/: get: operationId: stakeholder_stakeholders_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - stakeholder security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedStakeholderList' description: '' post: operationId: stakeholder_stakeholders_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - stakeholder requestBody: content: application/json: schema: $ref: '#/components/schemas/StakeholderRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/StakeholderRequest' multipart/form-data: schema: $ref: '#/components/schemas/StakeholderRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Stakeholder' description: '' /api/v1/stakeholder/stakeholders/{id}/: get: operationId: stakeholder_stakeholders_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this stakeholder. required: true tags: - stakeholder security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Stakeholder' description: '' put: operationId: stakeholder_stakeholders_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this stakeholder. required: true tags: - stakeholder requestBody: content: application/json: schema: $ref: '#/components/schemas/StakeholderRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/StakeholderRequest' multipart/form-data: schema: $ref: '#/components/schemas/StakeholderRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Stakeholder' description: '' patch: operationId: stakeholder_stakeholders_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this stakeholder. required: true tags: - stakeholder requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedStakeholderRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedStakeholderRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedStakeholderRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Stakeholder' description: '' delete: operationId: stakeholder_stakeholders_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this stakeholder. required: true tags: - stakeholder security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/stakeholder/tools/: get: operationId: stakeholder_tools_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - stakeholder security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedStakeholderToolList' description: '' post: operationId: stakeholder_tools_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - stakeholder requestBody: content: application/json: schema: $ref: '#/components/schemas/StakeholderToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/StakeholderToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/StakeholderToolRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/StakeholderTool' description: '' /api/v1/stakeholder/tools/{id}/: get: operationId: stakeholder_tools_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this stakeholder tool. required: true tags: - stakeholder security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/StakeholderTool' description: '' put: operationId: stakeholder_tools_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this stakeholder tool. required: true tags: - stakeholder requestBody: content: application/json: schema: $ref: '#/components/schemas/StakeholderToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/StakeholderToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/StakeholderToolRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/StakeholderTool' description: '' patch: operationId: stakeholder_tools_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this stakeholder tool. required: true tags: - stakeholder requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedStakeholderToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedStakeholderToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedStakeholderToolRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/StakeholderTool' description: '' delete: operationId: stakeholder_tools_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this stakeholder tool. required: true tags: - stakeholder security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/stakeholder/tools/{id}/power_interest_matrix/: get: operationId: stakeholder_tools_power_interest_matrix_retrieve description: Get stakeholders organized by power/interest matrix parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this stakeholder tool. required: true tags: - stakeholder security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/StakeholderTool' description: '' /api/v1/tei/reports/: get: operationId: tei_reports_list description: CRUD for ``TEIReport``. Admin-only write side per spec §Permissions. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedTEIReportList' description: '' post: operationId: tei_reports_create description: CRUD for ``TEIReport``. Admin-only write side per spec §Permissions. tags: - tei requestBody: content: application/json: schema: $ref: '#/components/schemas/TEIReportRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TEIReportRequest' multipart/form-data: schema: $ref: '#/components/schemas/TEIReportRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/TEIReport' description: '' /api/v1/tei/reports/{public_id}/: get: operationId: tei_reports_retrieve description: CRUD for ``TEIReport``. Admin-only write side per spec §Permissions. parameters: - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEIReport' description: '' put: operationId: tei_reports_update description: CRUD for ``TEIReport``. Admin-only write side per spec §Permissions. parameters: - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true tags: - tei requestBody: content: application/json: schema: $ref: '#/components/schemas/TEIReportRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TEIReportRequest' multipart/form-data: schema: $ref: '#/components/schemas/TEIReportRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEIReport' description: '' patch: operationId: tei_reports_partial_update description: CRUD for ``TEIReport``. Admin-only write side per spec §Permissions. parameters: - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true tags: - tei requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedTEIReportRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedTEIReportRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedTEIReportRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEIReport' description: '' delete: operationId: tei_reports_destroy description: CRUD for ``TEIReport``. Admin-only write side per spec §Permissions. parameters: - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/tei/reports/{report_public_id}/fields/: get: operationId: tei_reports_fields_list description: Nested field CRUD under ``/reports/{public_id}/fields/``. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: path name: report_public_id schema: type: string required: true tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedTEIReportFieldList' description: '' post: operationId: tei_reports_fields_create description: Nested field CRUD under ``/reports/{public_id}/fields/``. parameters: - in: path name: report_public_id schema: type: string required: true tags: - tei requestBody: content: application/json: schema: $ref: '#/components/schemas/TEIReportFieldRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TEIReportFieldRequest' multipart/form-data: schema: $ref: '#/components/schemas/TEIReportFieldRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/TEIReportField' description: '' /api/v1/tei/reports/{report_public_id}/fields/{id}/: get: operationId: tei_reports_fields_retrieve description: Nested field CRUD under ``/reports/{public_id}/fields/``. parameters: - in: path name: id schema: type: integer required: true - in: path name: report_public_id schema: type: string required: true tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEIReportField' description: '' put: operationId: tei_reports_fields_update description: Nested field CRUD under ``/reports/{public_id}/fields/``. parameters: - in: path name: id schema: type: integer required: true - in: path name: report_public_id schema: type: string required: true tags: - tei requestBody: content: application/json: schema: $ref: '#/components/schemas/TEIReportFieldRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TEIReportFieldRequest' multipart/form-data: schema: $ref: '#/components/schemas/TEIReportFieldRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEIReportField' description: '' patch: operationId: tei_reports_fields_partial_update description: Nested field CRUD under ``/reports/{public_id}/fields/``. parameters: - in: path name: id schema: type: integer required: true - in: path name: report_public_id schema: type: string required: true tags: - tei requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedTEIReportFieldRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedTEIReportFieldRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedTEIReportFieldRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEIReportField' description: '' delete: operationId: tei_reports_fields_destroy description: Nested field CRUD under ``/reports/{public_id}/fields/``. parameters: - in: path name: id schema: type: integer required: true - in: path name: report_public_id schema: type: string required: true tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/tei/reports/{report_public_id}/fields/reorder/: patch: operationId: tei_reports_fields_reorder_partial_update description: Bulk-reorder fields via ``PATCH .../fields/reorder/``. parameters: - in: path name: report_public_id schema: type: string required: true tags: - tei requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedTEIReportFieldRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedTEIReportFieldRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedTEIReportFieldRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEIReportField' description: '' /api/v1/tei/summary/: get: operationId: tei_summary_retrieve description: GET ``/api/v1/tei/summary/`` — aggregate NPV across all tools. tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': description: No response body /api/v1/tei/tools/: get: operationId: tei_tools_list description: CRUD for ``TEITool`` with custom calculate / export / version actions. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedTEIToolList' description: '' post: operationId: tei_tools_create description: CRUD for ``TEITool`` with custom calculate / export / version actions. tags: - tei requestBody: content: application/json: schema: $ref: '#/components/schemas/TEIToolCreateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TEIToolCreateRequest' multipart/form-data: schema: $ref: '#/components/schemas/TEIToolCreateRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/TEIToolCreate' description: '' /api/v1/tei/tools/{public_id}/: get: operationId: tei_tools_retrieve description: CRUD for ``TEITool`` with custom calculate / export / version actions. parameters: - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEITool' description: '' put: operationId: tei_tools_update description: CRUD for ``TEITool`` with custom calculate / export / version actions. parameters: - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true tags: - tei requestBody: content: application/json: schema: $ref: '#/components/schemas/TEIToolUpdateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TEIToolUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/TEIToolUpdateRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEIToolUpdate' description: '' patch: operationId: tei_tools_partial_update description: CRUD for ``TEITool`` with custom calculate / export / version actions. parameters: - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true tags: - tei requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedTEIToolUpdateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedTEIToolUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedTEIToolUpdateRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEIToolUpdate' description: '' delete: operationId: tei_tools_destroy description: CRUD for ``TEITool`` with custom calculate / export / version actions. parameters: - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/tei/tools/{public_id}/calculate/: post: operationId: tei_tools_calculate_create description: Recalculate and persist the financial summary. parameters: - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEITool' description: '' /api/v1/tei/tools/{public_id}/export/: get: operationId: tei_tools_export_retrieve description: Return the LLM-ready export payload. parameters: - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEITool' description: '' /api/v1/tei/tools/{public_id}/summary/: get: operationId: tei_tools_summary_retrieve description: Return the stored summary (404 if never calculated). parameters: - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEITool' description: '' /api/v1/tei/tools/{public_id}/values/: get: operationId: tei_tools_values_retrieve description: GET current values / PUT bulk update. parameters: - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEITool' description: '' put: operationId: tei_tools_values_update description: GET current values / PUT bulk update. parameters: - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEITool' description: '' /api/v1/tei/tools/{public_id}/values/{field_key}/: patch: operationId: tei_tools_values_partial_update description: PATCH one value row. parameters: - in: path name: field_key schema: type: string pattern: ^[\w-]+$ required: true - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEITool' description: '' /api/v1/tei/tools/{public_id}/versions/: get: operationId: tei_tools_versions_retrieve description: GET version list / POST save new version. parameters: - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEITool' description: '' post: operationId: tei_tools_versions_create description: GET version list / POST save new version. parameters: - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEITool' description: '' /api/v1/tei/tools/{public_id}/versions/{version_number}/: get: operationId: tei_tools_versions_retrieve_2 description: Return the full snapshot for one version. parameters: - in: path name: public_id schema: type: string description: 12-character short UUID used in public API URLs. required: true - in: path name: version_number schema: type: string pattern: ^\d+$ required: true tags: - tei security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TEITool' description: '' /api/v1/timeline/milestones/: get: operationId: timeline_milestones_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - timeline security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedMilestoneList' description: '' post: operationId: timeline_milestones_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - timeline requestBody: content: application/json: schema: $ref: '#/components/schemas/MilestoneRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/MilestoneRequest' multipart/form-data: schema: $ref: '#/components/schemas/MilestoneRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Milestone' description: '' /api/v1/timeline/milestones/{id}/: get: operationId: timeline_milestones_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this milestone. required: true tags: - timeline security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Milestone' description: '' put: operationId: timeline_milestones_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this milestone. required: true tags: - timeline requestBody: content: application/json: schema: $ref: '#/components/schemas/MilestoneRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/MilestoneRequest' multipart/form-data: schema: $ref: '#/components/schemas/MilestoneRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Milestone' description: '' patch: operationId: timeline_milestones_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this milestone. required: true tags: - timeline requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedMilestoneRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedMilestoneRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedMilestoneRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Milestone' description: '' delete: operationId: timeline_milestones_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this milestone. required: true tags: - timeline security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/timeline/milestones/{id}/mark_completed/: post: operationId: timeline_milestones_mark_completed_create description: Mark milestone as completed parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this milestone. required: true tags: - timeline requestBody: content: application/json: schema: $ref: '#/components/schemas/MilestoneRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/MilestoneRequest' multipart/form-data: schema: $ref: '#/components/schemas/MilestoneRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Milestone' description: '' /api/v1/timeline/milestones/upcoming/: get: operationId: timeline_milestones_upcoming_retrieve description: Get upcoming milestones tags: - timeline security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Milestone' description: '' /api/v1/timeline/stages/: get: operationId: timeline_stages_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - timeline security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedStageList' description: '' post: operationId: timeline_stages_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - timeline requestBody: content: application/json: schema: $ref: '#/components/schemas/StageRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/StageRequest' multipart/form-data: schema: $ref: '#/components/schemas/StageRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Stage' description: '' /api/v1/timeline/stages/{id}/: get: operationId: timeline_stages_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this stage. required: true tags: - timeline security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Stage' description: '' put: operationId: timeline_stages_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this stage. required: true tags: - timeline requestBody: content: application/json: schema: $ref: '#/components/schemas/StageRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/StageRequest' multipart/form-data: schema: $ref: '#/components/schemas/StageRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Stage' description: '' patch: operationId: timeline_stages_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this stage. required: true tags: - timeline requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedStageRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedStageRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedStageRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Stage' description: '' delete: operationId: timeline_stages_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this stage. required: true tags: - timeline security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/timeline/timelines/: get: operationId: timeline_timelines_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - timeline security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedTimelineList' description: '' post: operationId: timeline_timelines_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - timeline requestBody: content: application/json: schema: $ref: '#/components/schemas/TimelineRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TimelineRequest' multipart/form-data: schema: $ref: '#/components/schemas/TimelineRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Timeline' description: '' /api/v1/timeline/timelines/{id}/: get: operationId: timeline_timelines_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this timeline. required: true tags: - timeline security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Timeline' description: '' put: operationId: timeline_timelines_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this timeline. required: true tags: - timeline requestBody: content: application/json: schema: $ref: '#/components/schemas/TimelineRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TimelineRequest' multipart/form-data: schema: $ref: '#/components/schemas/TimelineRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Timeline' description: '' patch: operationId: timeline_timelines_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this timeline. required: true tags: - timeline requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedTimelineRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedTimelineRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedTimelineRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Timeline' description: '' delete: operationId: timeline_timelines_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this timeline. required: true tags: - timeline security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /api/v1/timeline/timelines/{id}/update_progress/: post: operationId: timeline_timelines_update_progress_create description: Update timeline progress by updating milestone/stage statuses parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this timeline. required: true tags: - timeline requestBody: content: application/json: schema: $ref: '#/components/schemas/TimelineRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TimelineRequest' multipart/form-data: schema: $ref: '#/components/schemas/TimelineRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Timeline' description: '' /api/v1/timeline/tools/: get: operationId: timeline_tools_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - timeline security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedTimelineToolList' description: '' post: operationId: timeline_tools_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - timeline requestBody: content: application/json: schema: $ref: '#/components/schemas/TimelineToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TimelineToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/TimelineToolRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/TimelineTool' description: '' /api/v1/timeline/tools/{id}/: get: operationId: timeline_tools_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this timeline tool. required: true tags: - timeline security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TimelineTool' description: '' put: operationId: timeline_tools_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this timeline tool. required: true tags: - timeline requestBody: content: application/json: schema: $ref: '#/components/schemas/TimelineToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TimelineToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/TimelineToolRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TimelineTool' description: '' patch: operationId: timeline_tools_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this timeline tool. required: true tags: - timeline requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedTimelineToolRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedTimelineToolRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedTimelineToolRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TimelineTool' description: '' delete: operationId: timeline_tools_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this timeline tool. required: true tags: - timeline security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /deckcraft/api/decks/: get: operationId: deckcraft_api_decks_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDeckList' description: '' post: operationId: deckcraft_api_decks_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/DeckRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DeckRequest' multipart/form-data: schema: $ref: '#/components/schemas/DeckRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Deck' description: '' /deckcraft/api/decks/{id}/: get: operationId: deckcraft_api_decks_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Deck' description: '' put: operationId: deckcraft_api_decks_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/DeckRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DeckRequest' multipart/form-data: schema: $ref: '#/components/schemas/DeckRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Deck' description: '' patch: operationId: deckcraft_api_decks_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedDeckRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedDeckRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedDeckRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Deck' description: '' delete: operationId: deckcraft_api_decks_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /deckcraft/api/decks/{id}/download/: get: operationId: deckcraft_api_decks_download_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Deck' description: '' /deckcraft/api/decks/{id}/generate/: post: operationId: deckcraft_api_decks_generate_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/DeckRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DeckRequest' multipart/form-data: schema: $ref: '#/components/schemas/DeckRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Deck' description: '' /deckcraft/api/presentations/: get: operationId: deckcraft_api_presentations_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPresentationList' description: '' post: operationId: deckcraft_api_presentations_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PresentationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PresentationRequest' multipart/form-data: schema: $ref: '#/components/schemas/PresentationRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Presentation' description: '' /deckcraft/api/presentations/{id}/: get: operationId: deckcraft_api_presentations_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this presentation. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Presentation' description: '' put: operationId: deckcraft_api_presentations_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this presentation. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PresentationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PresentationRequest' multipart/form-data: schema: $ref: '#/components/schemas/PresentationRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Presentation' description: '' patch: operationId: deckcraft_api_presentations_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this presentation. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedPresentationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedPresentationRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedPresentationRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Presentation' description: '' delete: operationId: deckcraft_api_presentations_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this presentation. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /deckcraft/api/slides/: get: operationId: deckcraft_api_slides_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDeckSlideList' description: '' post: operationId: deckcraft_api_slides_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/DeckSlideRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DeckSlideRequest' multipart/form-data: schema: $ref: '#/components/schemas/DeckSlideRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/DeckSlide' description: '' /deckcraft/api/slides/{id}/: get: operationId: deckcraft_api_slides_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck slide. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DeckSlide' description: '' put: operationId: deckcraft_api_slides_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck slide. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/DeckSlideRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DeckSlideRequest' multipart/form-data: schema: $ref: '#/components/schemas/DeckSlideRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DeckSlide' description: '' patch: operationId: deckcraft_api_slides_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck slide. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedDeckSlideRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedDeckSlideRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedDeckSlideRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DeckSlide' description: '' delete: operationId: deckcraft_api_slides_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this deck slide. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /deckcraft/api/slides/reorder/: post: operationId: deckcraft_api_slides_reorder_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/DeckSlideRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DeckSlideRequest' multipart/form-data: schema: $ref: '#/components/schemas/DeckSlideRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DeckSlide' description: '' /deckcraft/api/table-sources/: get: operationId: deckcraft_api_table_sources_list parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedTableSourceList' description: '' /deckcraft/api/table-sources/{id}/: get: operationId: deckcraft_api_table_sources_retrieve parameters: - in: path name: id schema: type: string required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TableSource' description: '' /deckcraft/api/table-sources/{id}/data/: get: operationId: deckcraft_api_table_sources_data_retrieve parameters: - in: path name: id schema: type: string required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TableSource' description: '' /deckcraft/api/templates/: get: operationId: deckcraft_api_templates_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPowerPointTemplateList' description: '' post: operationId: deckcraft_api_templates_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplate' description: '' /deckcraft/api/templates/{id}/: get: operationId: deckcraft_api_templates_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this power point template. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplate' description: '' put: operationId: deckcraft_api_templates_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this power point template. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplate' description: '' patch: operationId: deckcraft_api_templates_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this power point template. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedPowerPointTemplateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedPowerPointTemplateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedPowerPointTemplateRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplate' description: '' delete: operationId: deckcraft_api_templates_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this power point template. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /deckcraft/api/templates/{id}/layouts/: get: operationId: deckcraft_api_templates_layouts_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this power point template. required: true tags: - deckcraft security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplate' description: '' /deckcraft/api/templates/{id}/refresh/: post: operationId: deckcraft_api_templates_refresh_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this power point template. required: true tags: - deckcraft requestBody: content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PowerPointTemplateRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PowerPointTemplate' description: '' /orbit/api/calendar-events/: get: operationId: orbit_api_calendar_events_list parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCalendarEventList' description: '' post: operationId: orbit_api_calendar_events_create tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarEventRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarEventRequest' multipart/form-data: schema: $ref: '#/components/schemas/CalendarEventRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' /orbit/api/calendar-events/{id}/: get: operationId: orbit_api_calendar_events_retrieve parameters: - in: path name: id schema: type: string required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' put: operationId: orbit_api_calendar_events_update parameters: - in: path name: id schema: type: string required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarEventRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarEventRequest' multipart/form-data: schema: $ref: '#/components/schemas/CalendarEventRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' patch: operationId: orbit_api_calendar_events_partial_update parameters: - in: path name: id schema: type: string required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCalendarEventRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCalendarEventRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCalendarEventRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' delete: operationId: orbit_api_calendar_events_destroy parameters: - in: path name: id schema: type: string required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /orbit/api/clients/: get: operationId: orbit_api_clients_list description: Retrieve a paginated list of clients owned by the current user. summary: List clients parameters: - in: query name: ordering schema: type: string description: 'Order results by: name, created_date' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search clients by name, legal name, or overview tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedClientList' description: '' post: operationId: orbit_api_clients_create description: Create a new client record. summary: Create client tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ClientRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ClientRequest' multipart/form-data: schema: $ref: '#/components/schemas/ClientRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Client' description: '' /orbit/api/clients/{id}/: get: operationId: orbit_api_clients_retrieve description: Retrieve detailed information about a specific client. summary: Get client details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this client. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Client' description: '' put: operationId: orbit_api_clients_update description: Update all fields of a client record. summary: Update client parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this client. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ClientRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ClientRequest' multipart/form-data: schema: $ref: '#/components/schemas/ClientRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Client' description: '' patch: operationId: orbit_api_clients_partial_update description: Update specific fields of a client record. summary: Partially update client parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this client. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedClientRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedClientRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedClientRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Client' description: '' delete: operationId: orbit_api_clients_destroy description: Delete a client record. summary: Delete client parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this client. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /orbit/api/contacts/: get: operationId: orbit_api_contacts_list description: Retrieve a paginated list of contacts from user's clients and vendors. summary: List contacts parameters: - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search contacts by name, job title, or email tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedContactList' description: '' post: operationId: orbit_api_contacts_create description: Create a new contact record. summary: Create contact tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/ContactRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Contact' description: '' /orbit/api/contacts/{id}/: get: operationId: orbit_api_contacts_retrieve description: Retrieve detailed information about a specific contact. summary: Get contact details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this contact. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Contact' description: '' put: operationId: orbit_api_contacts_update description: Update all fields of a contact record. summary: Update contact parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this contact. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/ContactRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Contact' description: '' patch: operationId: orbit_api_contacts_partial_update description: Update specific fields of a contact record. summary: Partially update contact parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this contact. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedContactRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Contact' description: '' delete: operationId: orbit_api_contacts_destroy description: Delete a contact record. summary: Delete contact parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this contact. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /orbit/api/contacts/search/: get: operationId: orbit_api_contacts_search_retrieve description: Advanced contact search with organization type filtering. summary: Search contacts parameters: - in: query name: organization_type schema: type: string description: 'Filter by organization type: client or vendor' - in: query name: search_term schema: type: string description: Search term for name or job title tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Contact' description: '' /orbit/api/digital-contact-types/: get: operationId: orbit_api_digital_contact_types_list parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDigitalContactTypeList' description: '' /orbit/api/digital-contact-types/{id}/: get: operationId: orbit_api_digital_contact_types_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this digital contact type. required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DigitalContactType' description: '' /orbit/api/digital-contacts/: get: operationId: orbit_api_digital_contacts_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDigitalContactList' description: '' post: operationId: orbit_api_digital_contacts_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/DigitalContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DigitalContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/DigitalContactRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/DigitalContact' description: '' /orbit/api/digital-contacts/{id}/: get: operationId: orbit_api_digital_contacts_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this digital contact. required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DigitalContact' description: '' put: operationId: orbit_api_digital_contacts_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this digital contact. required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/DigitalContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DigitalContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/DigitalContactRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DigitalContact' description: '' patch: operationId: orbit_api_digital_contacts_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this digital contact. required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedDigitalContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedDigitalContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedDigitalContactRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DigitalContact' description: '' delete: operationId: orbit_api_digital_contacts_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this digital contact. required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /orbit/api/opportunities/: get: operationId: orbit_api_opportunities_list description: Retrieve a paginated list of sales opportunities. summary: List opportunities parameters: - in: query name: ordering schema: type: string description: 'Order by: name, expected_close_date, value' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search opportunities by name or description tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedOpportunityList' description: '' post: operationId: orbit_api_opportunities_create description: Create a new sales opportunity. summary: Create opportunity tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/OpportunityRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OpportunityRequest' multipart/form-data: schema: $ref: '#/components/schemas/OpportunityRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Opportunity' description: '' /orbit/api/opportunities/{id}/: get: operationId: orbit_api_opportunities_retrieve description: Retrieve detailed information about a specific opportunity. summary: Get opportunity details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this opportunity. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Opportunity' description: '' put: operationId: orbit_api_opportunities_update description: Update all fields of an opportunity record. summary: Update opportunity parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this opportunity. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/OpportunityRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OpportunityRequest' multipart/form-data: schema: $ref: '#/components/schemas/OpportunityRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Opportunity' description: '' patch: operationId: orbit_api_opportunities_partial_update description: Update specific fields of an opportunity record. summary: Partially update opportunity parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this opportunity. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedOpportunityRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedOpportunityRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedOpportunityRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Opportunity' description: '' delete: operationId: orbit_api_opportunities_destroy description: Delete an opportunity record. summary: Delete opportunity parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this opportunity. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /orbit/api/opportunities/by_status/: get: operationId: orbit_api_opportunities_by_status_retrieve description: Retrieve opportunities filtered by status and optionally by client. summary: Filter opportunities by status parameters: - in: query name: client_id schema: type: integer description: Filter by specific client ID - in: query name: status schema: type: string description: 'Filter by opportunity status: active, won, lost, dropped' tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Opportunity' description: '' /orbit/api/proposals/: get: operationId: orbit_api_proposals_list description: Retrieve a paginated list of proposals for opportunities owned by the current user. summary: List proposals parameters: - in: query name: opportunity_id schema: type: integer description: Filter by opportunity ID - in: query name: ordering schema: type: string description: 'Order by: name, due_date, submitted_date, created_date' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search proposals by name - in: query name: status schema: type: string description: 'Filter by status: Draft, In Review, Final' tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedProposalList' description: '' post: operationId: orbit_api_proposals_create description: Create a new proposal record. summary: Create proposal tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ProposalRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ProposalRequest' multipart/form-data: schema: $ref: '#/components/schemas/ProposalRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Proposal' description: '' /orbit/api/proposals/{id}/: get: operationId: orbit_api_proposals_retrieve description: Retrieve detailed information about a specific proposal. summary: Get proposal details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this proposal. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Proposal' description: '' put: operationId: orbit_api_proposals_update description: Update all fields of a proposal record. summary: Update proposal parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this proposal. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ProposalRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ProposalRequest' multipart/form-data: schema: $ref: '#/components/schemas/ProposalRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Proposal' description: '' patch: operationId: orbit_api_proposals_partial_update description: Update specific fields of a proposal record. summary: Partially update proposal parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this proposal. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedProposalRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedProposalRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedProposalRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Proposal' description: '' delete: operationId: orbit_api_proposals_destroy description: Delete a proposal record. summary: Delete proposal parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this proposal. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /orbit/api/stock/overview/{symbol}/: get: operationId: orbit_api_stock_overview_retrieve description: Returns company overview data for a stock symbol summary: Get company overview parameters: - in: path name: symbol schema: type: string description: Stock symbol required: true tags: - stock security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': description: Company overview data '403': description: Access denied '500': description: Unable to fetch company data /orbit/api/stock/quote/{symbol}/: get: operationId: orbit_api_stock_quote_retrieve description: Returns current stock quote data for a symbol summary: Get stock quote parameters: - in: path name: symbol schema: type: string description: Stock symbol required: true tags: - stock security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': description: Stock quote data '403': description: Access denied '500': description: Unable to fetch stock data /orbit/api/suggest-timezone/: post: operationId: orbit_api_suggest_timezone_create description: Uses address components to suggest an appropriate timezone using geocoding. summary: Suggest timezone from address tags: - Orbit requestBody: content: application/json: schema: type: object properties: street_address: type: string locality: type: string region: type: string postal_code: type: string country: type: string security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: type: object properties: timezone: type: string success: type: boolean method: type: string description: '' '400': content: application/json: schema: type: object properties: error: type: string success: type: boolean description: '' /orbit/api/v1/calendar-events/: get: operationId: orbit_api_v1_calendar_events_list parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCalendarEventList' description: '' post: operationId: orbit_api_v1_calendar_events_create tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarEventRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarEventRequest' multipart/form-data: schema: $ref: '#/components/schemas/CalendarEventRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' /orbit/api/v1/calendar-events/{id}/: get: operationId: orbit_api_v1_calendar_events_retrieve parameters: - in: path name: id schema: type: string required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' put: operationId: orbit_api_v1_calendar_events_update parameters: - in: path name: id schema: type: string required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarEventRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarEventRequest' multipart/form-data: schema: $ref: '#/components/schemas/CalendarEventRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' patch: operationId: orbit_api_v1_calendar_events_partial_update parameters: - in: path name: id schema: type: string required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCalendarEventRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCalendarEventRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCalendarEventRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' delete: operationId: orbit_api_v1_calendar_events_destroy parameters: - in: path name: id schema: type: string required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /orbit/api/v1/clients/: get: operationId: orbit_api_v1_clients_list description: Retrieve a paginated list of clients owned by the current user. summary: List clients parameters: - in: query name: ordering schema: type: string description: 'Order results by: name, created_date' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search clients by name, legal name, or overview tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedClientList' description: '' post: operationId: orbit_api_v1_clients_create description: Create a new client record. summary: Create client tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ClientRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ClientRequest' multipart/form-data: schema: $ref: '#/components/schemas/ClientRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Client' description: '' /orbit/api/v1/clients/{id}/: get: operationId: orbit_api_v1_clients_retrieve description: Retrieve detailed information about a specific client. summary: Get client details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this client. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Client' description: '' put: operationId: orbit_api_v1_clients_update description: Update all fields of a client record. summary: Update client parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this client. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ClientRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ClientRequest' multipart/form-data: schema: $ref: '#/components/schemas/ClientRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Client' description: '' patch: operationId: orbit_api_v1_clients_partial_update description: Update specific fields of a client record. summary: Partially update client parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this client. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedClientRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedClientRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedClientRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Client' description: '' delete: operationId: orbit_api_v1_clients_destroy description: Delete a client record. summary: Delete client parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this client. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /orbit/api/v1/contacts/: get: operationId: orbit_api_v1_contacts_list description: Retrieve a paginated list of contacts from user's clients and vendors. summary: List contacts parameters: - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search contacts by name, job title, or email tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedContactList' description: '' post: operationId: orbit_api_v1_contacts_create description: Create a new contact record. summary: Create contact tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/ContactRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Contact' description: '' /orbit/api/v1/contacts/{id}/: get: operationId: orbit_api_v1_contacts_retrieve description: Retrieve detailed information about a specific contact. summary: Get contact details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this contact. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Contact' description: '' put: operationId: orbit_api_v1_contacts_update description: Update all fields of a contact record. summary: Update contact parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this contact. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/ContactRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Contact' description: '' patch: operationId: orbit_api_v1_contacts_partial_update description: Update specific fields of a contact record. summary: Partially update contact parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this contact. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedContactRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Contact' description: '' delete: operationId: orbit_api_v1_contacts_destroy description: Delete a contact record. summary: Delete contact parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this contact. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /orbit/api/v1/contacts/search/: get: operationId: orbit_api_v1_contacts_search_retrieve description: Advanced contact search with organization type filtering. summary: Search contacts parameters: - in: query name: organization_type schema: type: string description: 'Filter by organization type: client or vendor' - in: query name: search_term schema: type: string description: Search term for name or job title tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Contact' description: '' /orbit/api/v1/digital-contact-types/: get: operationId: orbit_api_v1_digital_contact_types_list parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDigitalContactTypeList' description: '' /orbit/api/v1/digital-contact-types/{id}/: get: operationId: orbit_api_v1_digital_contact_types_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this digital contact type. required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DigitalContactType' description: '' /orbit/api/v1/digital-contacts/: get: operationId: orbit_api_v1_digital_contacts_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDigitalContactList' description: '' post: operationId: orbit_api_v1_digital_contacts_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/DigitalContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DigitalContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/DigitalContactRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/DigitalContact' description: '' /orbit/api/v1/digital-contacts/{id}/: get: operationId: orbit_api_v1_digital_contacts_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this digital contact. required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DigitalContact' description: '' put: operationId: orbit_api_v1_digital_contacts_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this digital contact. required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/DigitalContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DigitalContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/DigitalContactRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DigitalContact' description: '' patch: operationId: orbit_api_v1_digital_contacts_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this digital contact. required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedDigitalContactRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedDigitalContactRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedDigitalContactRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DigitalContact' description: '' delete: operationId: orbit_api_v1_digital_contacts_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this digital contact. required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /orbit/api/v1/opportunities/: get: operationId: orbit_api_v1_opportunities_list description: Retrieve a paginated list of sales opportunities. summary: List opportunities parameters: - in: query name: ordering schema: type: string description: 'Order by: name, expected_close_date, value' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search opportunities by name or description tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedOpportunityList' description: '' post: operationId: orbit_api_v1_opportunities_create description: Create a new sales opportunity. summary: Create opportunity tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/OpportunityRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OpportunityRequest' multipart/form-data: schema: $ref: '#/components/schemas/OpportunityRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Opportunity' description: '' /orbit/api/v1/opportunities/{id}/: get: operationId: orbit_api_v1_opportunities_retrieve description: Retrieve detailed information about a specific opportunity. summary: Get opportunity details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this opportunity. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Opportunity' description: '' put: operationId: orbit_api_v1_opportunities_update description: Update all fields of an opportunity record. summary: Update opportunity parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this opportunity. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/OpportunityRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OpportunityRequest' multipart/form-data: schema: $ref: '#/components/schemas/OpportunityRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Opportunity' description: '' patch: operationId: orbit_api_v1_opportunities_partial_update description: Update specific fields of an opportunity record. summary: Partially update opportunity parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this opportunity. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedOpportunityRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedOpportunityRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedOpportunityRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Opportunity' description: '' delete: operationId: orbit_api_v1_opportunities_destroy description: Delete an opportunity record. summary: Delete opportunity parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this opportunity. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /orbit/api/v1/opportunities/by_status/: get: operationId: orbit_api_v1_opportunities_by_status_retrieve description: Retrieve opportunities filtered by status and optionally by client. summary: Filter opportunities by status parameters: - in: query name: client_id schema: type: integer description: Filter by specific client ID - in: query name: status schema: type: string description: 'Filter by opportunity status: active, won, lost, dropped' tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Opportunity' description: '' /orbit/api/v1/proposals/: get: operationId: orbit_api_v1_proposals_list description: Retrieve a paginated list of proposals for opportunities owned by the current user. summary: List proposals parameters: - in: query name: opportunity_id schema: type: integer description: Filter by opportunity ID - in: query name: ordering schema: type: string description: 'Order by: name, due_date, submitted_date, created_date' - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search proposals by name - in: query name: status schema: type: string description: 'Filter by status: Draft, In Review, Final' tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedProposalList' description: '' post: operationId: orbit_api_v1_proposals_create description: Create a new proposal record. summary: Create proposal tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ProposalRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ProposalRequest' multipart/form-data: schema: $ref: '#/components/schemas/ProposalRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Proposal' description: '' /orbit/api/v1/proposals/{id}/: get: operationId: orbit_api_v1_proposals_retrieve description: Retrieve detailed information about a specific proposal. summary: Get proposal details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this proposal. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Proposal' description: '' put: operationId: orbit_api_v1_proposals_update description: Update all fields of a proposal record. summary: Update proposal parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this proposal. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/ProposalRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ProposalRequest' multipart/form-data: schema: $ref: '#/components/schemas/ProposalRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Proposal' description: '' patch: operationId: orbit_api_v1_proposals_partial_update description: Update specific fields of a proposal record. summary: Partially update proposal parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this proposal. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedProposalRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedProposalRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedProposalRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Proposal' description: '' delete: operationId: orbit_api_v1_proposals_destroy description: Delete a proposal record. summary: Delete proposal parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this proposal. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /orbit/api/v1/stock/overview/{symbol}/: get: operationId: orbit_api_v1_stock_overview_retrieve description: Returns company overview data for a stock symbol summary: Get company overview parameters: - in: path name: symbol schema: type: string description: Stock symbol required: true tags: - stock security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': description: Company overview data '403': description: Access denied '500': description: Unable to fetch company data /orbit/api/v1/stock/quote/{symbol}/: get: operationId: orbit_api_v1_stock_quote_retrieve description: Returns current stock quote data for a symbol summary: Get stock quote parameters: - in: path name: symbol schema: type: string description: Stock symbol required: true tags: - stock security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': description: Stock quote data '403': description: Access denied '500': description: Unable to fetch stock data /orbit/api/v1/suggest-timezone/: post: operationId: orbit_api_v1_suggest_timezone_create description: Uses address components to suggest an appropriate timezone using geocoding. summary: Suggest timezone from address tags: - Orbit requestBody: content: application/json: schema: type: object properties: street_address: type: string locality: type: string region: type: string postal_code: type: string country: type: string security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: type: object properties: timezone: type: string success: type: boolean method: type: string description: '' '400': content: application/json: schema: type: object properties: error: type: string success: type: boolean description: '' /orbit/api/v1/vendor-solutions/: get: operationId: orbit_api_v1_vendor_solutions_list description: Retrieve a paginated list of vendor solutions. summary: List vendor solutions parameters: - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search solutions by name or description - in: query name: vendor schema: type: integer description: Filter by vendor ID tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedVendorSolutionList' description: '' post: operationId: orbit_api_v1_vendor_solutions_create description: Create a new vendor solution. summary: Create vendor solution tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/VendorSolutionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/VendorSolutionRequest' multipart/form-data: schema: $ref: '#/components/schemas/VendorSolutionRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/VendorSolution' description: '' /orbit/api/v1/vendor-solutions/{id}/: get: operationId: orbit_api_v1_vendor_solutions_retrieve description: Retrieve detailed information about a specific vendor solution. summary: Get vendor solution details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor solution. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/VendorSolution' description: '' put: operationId: orbit_api_v1_vendor_solutions_update description: Update all fields of a vendor solution record. summary: Update vendor solution parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor solution. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/VendorSolutionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/VendorSolutionRequest' multipart/form-data: schema: $ref: '#/components/schemas/VendorSolutionRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/VendorSolution' description: '' patch: operationId: orbit_api_v1_vendor_solutions_partial_update description: Update specific fields of a vendor solution record. summary: Partially update vendor solution parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor solution. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedVendorSolutionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedVendorSolutionRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedVendorSolutionRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/VendorSolution' description: '' delete: operationId: orbit_api_v1_vendor_solutions_destroy description: Delete a vendor solution record. summary: Delete vendor solution parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor solution. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /orbit/api/v1/vendors/: get: operationId: orbit_api_v1_vendors_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - name: search required: false in: query description: A search term. schema: type: string tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedVendorList' description: '' post: operationId: orbit_api_v1_vendors_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/VendorRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/VendorRequest' multipart/form-data: schema: $ref: '#/components/schemas/VendorRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Vendor' description: '' /orbit/api/v1/vendors/{id}/: get: operationId: orbit_api_v1_vendors_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor. required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Vendor' description: '' put: operationId: orbit_api_v1_vendors_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor. required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/VendorRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/VendorRequest' multipart/form-data: schema: $ref: '#/components/schemas/VendorRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Vendor' description: '' patch: operationId: orbit_api_v1_vendors_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor. required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedVendorRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedVendorRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedVendorRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Vendor' description: '' delete: operationId: orbit_api_v1_vendors_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor. required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /orbit/api/vendor-solutions/: get: operationId: orbit_api_vendor_solutions_list description: Retrieve a paginated list of vendor solutions. summary: List vendor solutions parameters: - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: search schema: type: string description: Search solutions by name or description - in: query name: vendor schema: type: integer description: Filter by vendor ID tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedVendorSolutionList' description: '' post: operationId: orbit_api_vendor_solutions_create description: Create a new vendor solution. summary: Create vendor solution tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/VendorSolutionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/VendorSolutionRequest' multipart/form-data: schema: $ref: '#/components/schemas/VendorSolutionRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/VendorSolution' description: '' /orbit/api/vendor-solutions/{id}/: get: operationId: orbit_api_vendor_solutions_retrieve description: Retrieve detailed information about a specific vendor solution. summary: Get vendor solution details parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor solution. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/VendorSolution' description: '' put: operationId: orbit_api_vendor_solutions_update description: Update all fields of a vendor solution record. summary: Update vendor solution parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor solution. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/VendorSolutionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/VendorSolutionRequest' multipart/form-data: schema: $ref: '#/components/schemas/VendorSolutionRequest' required: true security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/VendorSolution' description: '' patch: operationId: orbit_api_vendor_solutions_partial_update description: Update specific fields of a vendor solution record. summary: Partially update vendor solution parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor solution. required: true tags: - Orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedVendorSolutionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedVendorSolutionRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedVendorSolutionRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/VendorSolution' description: '' delete: operationId: orbit_api_vendor_solutions_destroy description: Delete a vendor solution record. summary: Delete vendor solution parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor solution. required: true tags: - Orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body /orbit/api/vendors/: get: operationId: orbit_api_vendors_list description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - name: search required: false in: query description: A search term. schema: type: string tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedVendorList' description: '' post: operationId: orbit_api_vendors_create description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/VendorRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/VendorRequest' multipart/form-data: schema: $ref: '#/components/schemas/VendorRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Vendor' description: '' /orbit/api/vendors/{id}/: get: operationId: orbit_api_vendors_retrieve description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor. required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Vendor' description: '' put: operationId: orbit_api_vendors_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor. required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/VendorRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/VendorRequest' multipart/form-data: schema: $ref: '#/components/schemas/VendorRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Vendor' description: '' patch: operationId: orbit_api_vendors_partial_update description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor. required: true tags: - orbit requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedVendorRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedVendorRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedVendorRequest' security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Vendor' description: '' delete: operationId: orbit_api_vendors_destroy description: |- Mixin that adds automatic tenant scoping to any DRF ViewSet. Attributes: tenant_field (str): The ORM lookup path from the model to the ``subscriber`` FK. Defaults to ``'subscriber'`` for models with a direct FK. Set to a longer path for child models, e.g. ``'advisor_tool__subscriber'``. tenant_owner_field (str | None): Optional. The field name for the ``owner`` / ``user`` FK on the model. When set, queryset is *also* filtered by ``request.user`` (preserving existing per-user isolation within a tenant). Set to ``None`` to skip user-level filtering. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this vendor. required: true tags: - orbit security: - ApiKeyAuth: [] - ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' responses: '204': description: No response body components: schemas: APIKey: type: object description: |- API key information serializer. Provides API key metadata without exposing the actual key value: - Key name and type - Creation and usage timestamps - Active status properties: id: type: integer readOnly: true name: type: string maxLength: 100 app_type: $ref: '#/components/schemas/AppTypeEnum' created_date: type: string format: date-time readOnly: true last_used: type: string format: date-time readOnly: true nullable: true is_active: type: boolean days_since_created: type: string readOnly: true days_since_used: type: string readOnly: true required: - app_type - created_date - days_since_created - days_since_used - id - last_used - name AdvisorTool: type: object description: Serialize an AdvisorTool with computed counts and client/association display fields. properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string proposal: type: integer nullable: true engagement: type: integer nullable: true categories: description: Custom categories for findings and requirements timeframe_short: type: integer maximum: 2147483647 minimum: -2147483648 description: Short timeframe in days timeframe_medium: type: integer maximum: 2147483647 minimum: -2147483648 description: Medium timeframe in days timeframe_long: type: integer maximum: 2147483647 minimum: -2147483648 description: Long timeframe in days client_name: type: string readOnly: true association_display: type: string readOnly: true findings_count: type: string readOnly: true requirements_count: type: string readOnly: true recommendations_count: type: string readOnly: true principles_count: type: string readOnly: true created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - association_display - client_name - created_date - description - findings_count - id - modified_date - name - principles_count - recommendations_count - requirements_count AdvisorToolRequest: type: object description: Serialize an AdvisorTool with computed counts and client/association display fields. properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 proposal: type: integer nullable: true engagement: type: integer nullable: true categories: description: Custom categories for findings and requirements timeframe_short: type: integer maximum: 2147483647 minimum: -2147483648 description: Short timeframe in days timeframe_medium: type: integer maximum: 2147483647 minimum: -2147483648 description: Medium timeframe in days timeframe_long: type: integer maximum: 2147483647 minimum: -2147483648 description: Long timeframe in days required: - description - name AppTypeEnum: enum: - DAV - API - MCP type: string description: |- * `DAV` - DAV Key (Calendar & Contacts) * `API` - API Key (REST API) * `MCP` - MCP Key (AI Assistant) Assumption: type: object properties: id: type: integer readOnly: true title: type: string maxLength: 255 description: type: string potential_impact: $ref: '#/components/schemas/PotentialImpactEnum' impact_details: type: string required: - description - id - impact_details - potential_impact - title BMC: type: object properties: id: type: integer readOnly: true version: type: integer maximum: 2147483647 minimum: -2147483648 customer_segments: type: string value_propositions: type: string channels: type: string customer_relationships: type: string revenue_streams: type: string key_resources: type: string key_activities: type: string key_partnerships: type: string cost_structure: type: string created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - created_date - id - modified_date BMCRequest: type: object properties: version: type: integer maximum: 2147483647 minimum: -2147483648 customer_segments: type: string value_propositions: type: string channels: type: string customer_relationships: type: string revenue_streams: type: string key_resources: type: string key_activities: type: string key_partnerships: type: string cost_structure: type: string BMCTemplate: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string customer_segments: type: string value_propositions: type: string channels: type: string customer_relationships: type: string revenue_streams: type: string key_resources: type: string key_activities: type: string key_partnerships: type: string cost_structure: type: string is_active: type: boolean created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - created_date - id - modified_date - name BMCTemplateRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string customer_segments: type: string value_propositions: type: string channels: type: string customer_relationships: type: string revenue_streams: type: string key_resources: type: string key_activities: type: string key_partnerships: type: string cost_structure: type: string is_active: type: boolean required: - name BMCTool: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string proposal: type: integer nullable: true engagement: type: integer nullable: true client_name: type: string readOnly: true association_display: type: string readOnly: true latest_bmc: type: string readOnly: true bmc_count: type: string readOnly: true created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - association_display - bmc_count - client_name - created_date - description - id - latest_bmc - modified_date - name BMCToolRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 proposal: type: integer nullable: true engagement: type: integer nullable: true required: - description - name BillingCycleEnum: enum: - one_time - monthly - annual type: string description: |- * `one_time` - One Time * `monthly` - Monthly * `annual` - Annual BlankEnum: enum: - '' BulkLocationOperationRequest: type: object description: |- Bulk location operation serializer. Handles bulk operations on multiple locations. properties: operation: $ref: '#/components/schemas/OperationEnum' location_ids: type: array items: type: integer description: List of location IDs to operate on minItems: 1 parameters: type: object additionalProperties: {} description: Operation-specific parameters required: - location_ids - operation CSVImportRequest: type: object description: |- CSV import request serializer. Handles CSV file upload and import configuration. properties: csv_file: type: string format: binary description: CSV file containing location data required: - csv_file CalendarEvent: type: object properties: id: type: integer readOnly: true title: type: string maxLength: 255 description: type: string start_time: type: string format: date-time end_time: type: string format: date-time location: type: string maxLength: 255 event_type: $ref: '#/components/schemas/EventTypeEnum' required: - end_time - id - start_time - title CalendarEventRequest: type: object properties: title: type: string minLength: 1 maxLength: 255 description: type: string start_time: type: string format: date-time end_time: type: string format: date-time location: type: string maxLength: 255 event_type: $ref: '#/components/schemas/EventTypeEnum' required: - end_time - start_time - title Client: type: object properties: id: type: integer readOnly: true name: type: string legal_name: type: string abbreviated_name: type: string overview: type: string history: type: string services_provided: type: string client_type: type: string vertical: type: string nullable: true stock_exchange: type: string nullable: true stock_symbol: type: string nullable: true employee_count: type: integer nullable: true revenue: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true assets: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true fiscal_year_end: type: string format: date nullable: true contact_center_agent_count: type: integer nullable: true service_desk_agent_count: type: integer nullable: true supervisor_count: type: integer nullable: true location_count: type: integer nullable: true repository_url: type: string parent_organization: type: string readOnly: true parent_relationship_type: type: string readOnly: true is_multi_role_organization: type: string readOnly: true child_organizations_count: type: string readOnly: true required: - child_organizations_count - id - is_multi_role_organization - parent_organization - parent_relationship_type ClientLocationTool: type: object description: |- Client Location Tool serializer with automatic version management. Provides tool information including: - Basic tool metadata - Current version number (automatically managed) - All location sets with automatic version numbering - Table source configuration Automatic Version Management: - current_version field shows the active version number (integer) - location_sets array shows all versions ordered by version number - Version creation is handled by the create_version API endpoint - Version switching is handled by the switch_version API endpoint - All version numbers are automatically assigned and read-only properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string current_version: type: integer readOnly: true description: Current active version number (automatically managed) proposal: type: integer nullable: true engagement: type: integer nullable: true owner: type: integer readOnly: true current_location_set: allOf: - $ref: '#/components/schemas/LocationSet' readOnly: true location_sets: type: array items: $ref: '#/components/schemas/LocationSet' readOnly: true table_source: type: string readOnly: true created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - created_date - current_location_set - current_version - description - id - location_sets - modified_date - name - owner - table_source ClientLocationToolRequest: type: object description: |- Client Location Tool serializer with automatic version management. Provides tool information including: - Basic tool metadata - Current version number (automatically managed) - All location sets with automatic version numbering - Table source configuration Automatic Version Management: - current_version field shows the active version number (integer) - location_sets array shows all versions ordered by version number - Version creation is handled by the create_version API endpoint - Version switching is handled by the switch_version API endpoint - All version numbers are automatically assigned and read-only properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 proposal: type: integer nullable: true engagement: type: integer nullable: true required: - description - name ClientRequest: type: object properties: name: type: string legal_name: type: string abbreviated_name: type: string overview: type: string history: type: string services_provided: type: string client_type: type: string vertical: type: string nullable: true stock_exchange: type: string nullable: true stock_symbol: type: string nullable: true employee_count: type: integer nullable: true revenue: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true assets: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true fiscal_year_end: type: string format: date nullable: true contact_center_agent_count: type: integer nullable: true service_desk_agent_count: type: integer nullable: true supervisor_count: type: integer nullable: true location_count: type: integer nullable: true repository_url: type: string ComplexityEnum: enum: - High - Medium - Low type: string description: |- * `High` - High * `Medium` - Medium * `Low` - Low Contact: type: object properties: id: type: integer readOnly: true first_name: type: string maxLength: 100 last_name: type: string maxLength: 100 job_title: type: string maxLength: 100 email: type: string format: email maxLength: 254 phones: type: array items: $ref: '#/components/schemas/ContactPhone' readOnly: true preferred_phone: type: string readOnly: true organization: type: string readOnly: true reports_to: type: integer nullable: true reports_to_name: type: string readOnly: true direct_reports_count: type: string readOnly: true is_client_contact: type: string readOnly: true is_vendor_contact: type: string readOnly: true is_multi_role_contact: type: string readOnly: true organization_profiles: type: string readOnly: true required: - direct_reports_count - first_name - id - is_client_contact - is_multi_role_contact - is_vendor_contact - last_name - organization - organization_profiles - phones - preferred_phone - reports_to_name ContactPhone: type: object properties: id: type: integer readOnly: true number: type: string maxLength: 20 type: $ref: '#/components/schemas/ContactPhoneTypeEnum' is_preferred: type: boolean required: - id - number ContactPhoneRequest: type: object properties: number: type: string minLength: 1 maxLength: 20 type: $ref: '#/components/schemas/ContactPhoneTypeEnum' is_preferred: type: boolean required: - number ContactPhoneTypeEnum: enum: - cell - home - work - other type: string description: |- * `cell` - Cell * `home` - Home * `work` - Work * `other` - Other ContactRequest: type: object properties: first_name: type: string minLength: 1 maxLength: 100 last_name: type: string minLength: 1 maxLength: 100 job_title: type: string maxLength: 100 email: type: string format: email maxLength: 254 organization_id: type: integer writeOnly: true reports_to: type: integer nullable: true required: - first_name - last_name Content3TypeEnum: enum: - text - image - table type: string description: |- * `text` - Text * `image` - Image * `table` - Table Currency: type: object description: |- Currency information serializer. Provides currency details including: - ISO currency codes - Display names and symbols - Active status properties: code: type: string maxLength: 3 name: type: string maxLength: 50 symbol: type: string maxLength: 5 is_active: type: boolean required: - code - name - symbol CustomFieldDefinition: type: object description: |- Custom field definition serializer. Provides custom field schema information including: - Field name, type, and description - Validation rules and default values - Display order properties: id: type: integer readOnly: true name: type: string maxLength: 100 field_type: $ref: '#/components/schemas/CustomFieldDefinitionFieldTypeEnum' description: type: string is_required: type: boolean default_value: type: string order: type: integer maximum: 2147483647 minimum: 0 required: - field_type - id - name CustomFieldDefinitionFieldTypeEnum: enum: - count - boolean - text - rich_text type: string description: |- * `count` - Count * `boolean` - Boolean * `text` - Text * `rich_text` - Rich Text CustomFieldDefinitionRequest: type: object description: |- Custom field definition serializer. Provides custom field schema information including: - Field name, type, and description - Validation rules and default values - Display order properties: name: type: string minLength: 1 maxLength: 100 field_type: $ref: '#/components/schemas/CustomFieldDefinitionFieldTypeEnum' description: type: string is_required: type: boolean default_value: type: string order: type: integer maximum: 2147483647 minimum: 0 required: - field_type - name DateFormatEnum: enum: - YYYY-MM-DD - DD/MM/YYYY - MM/DD/YYYY - DD.MM.YYYY - DD-MM-YYYY type: string description: |- * `YYYY-MM-DD` - 2024-12-25 * `DD/MM/YYYY` - 25/12/2024 * `MM/DD/YYYY` - 12/25/2024 * `DD.MM.YYYY` - 25.12.2024 * `DD-MM-YYYY` - 25-12-2024 Deck: type: object properties: id: type: integer readOnly: true presentation: type: integer template: type: integer title: type: string maxLength: 255 subtitle: type: string maxLength: 255 presenter: type: integer nullable: true status: $ref: '#/components/schemas/DeckStatusEnum' date: type: string format: date slide_count: type: string readOnly: true created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - created_date - id - modified_date - presentation - slide_count - status - template DeckRequest: type: object properties: presentation: type: integer template: type: integer title: type: string maxLength: 255 subtitle: type: string maxLength: 255 presenter: type: integer nullable: true status: $ref: '#/components/schemas/DeckStatusEnum' date: type: string format: date required: - presentation - status - template DeckSlide: type: object properties: id: type: integer readOnly: true deck: type: integer slide_type: type: string maxLength: 50 order: type: integer maximum: 2147483647 minimum: -2147483648 content_mapping: {} layout_name: type: string readOnly: true content1_type: $ref: '#/components/schemas/Content3TypeEnum' content1_image: type: integer nullable: true content1_table: type: integer nullable: true content2_type: $ref: '#/components/schemas/Content3TypeEnum' content2_image: type: integer nullable: true content2_table: type: integer nullable: true content3_type: $ref: '#/components/schemas/Content3TypeEnum' content3_image: type: integer nullable: true content3_table: type: integer nullable: true required: - deck - id - layout_name - order - slide_type DeckSlideRequest: type: object properties: deck: type: integer slide_type: type: string minLength: 1 maxLength: 50 order: type: integer maximum: 2147483647 minimum: -2147483648 content_mapping: {} content1_type: $ref: '#/components/schemas/Content3TypeEnum' content1_image: type: integer nullable: true content1_table: type: integer nullable: true content2_type: $ref: '#/components/schemas/Content3TypeEnum' content2_image: type: integer nullable: true content2_table: type: integer nullable: true content3_type: $ref: '#/components/schemas/Content3TypeEnum' content3_image: type: integer nullable: true content3_table: type: integer nullable: true required: - deck - order - slide_type DeckStatusEnum: enum: - Draft - Final type: string description: |- * `Draft` - Draft * `Final` - Final Dependency: type: object properties: id: type: integer readOnly: true title: type: string maxLength: 255 description: type: string potential_impact: $ref: '#/components/schemas/PotentialImpactEnum' owner: type: integer owner_name: type: string readOnly: true priority: $ref: '#/components/schemas/Priority758Enum' external: type: boolean required: - description - id - owner - owner_name - potential_impact - priority - title DigitalContact: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 100 contact_type: allOf: - $ref: '#/components/schemas/DigitalContactType' readOnly: true url: type: string maxLength: 500 display_url: type: string readOnly: true notes: type: string client: type: integer nullable: true vendor: type: integer nullable: true required: - contact_type - display_url - id - name - url DigitalContactRequest: type: object properties: name: type: string minLength: 1 maxLength: 100 contact_type_id: type: integer writeOnly: true url: type: string minLength: 1 maxLength: 500 notes: type: string client: type: integer nullable: true vendor: type: integer nullable: true required: - contact_type_id - name - url DigitalContactType: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 50 icon: type: string maxLength: 50 required: - id - name DigitalContactTypeRequest: type: object properties: name: type: string minLength: 1 maxLength: 50 icon: type: string maxLength: 50 required: - name DurationEnum: enum: - 45 - 60 - 90 type: integer description: |- * `45` - 45 minutes * `60` - 60 minutes * `90` - 90 minutes Engagement: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 client: allOf: - $ref: '#/components/schemas/Client' readOnly: true start_date: type: string format: date end_date: type: string format: date status: $ref: '#/components/schemas/Status557Enum' description: type: string interviews: type: array items: $ref: '#/components/schemas/Interview' readOnly: true workshops: type: array items: $ref: '#/components/schemas/Workshop' readOnly: true interview_count: type: string readOnly: true workshop_count: type: string readOnly: true created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - client - created_date - end_date - id - interview_count - interviews - modified_date - name - start_date - workshop_count - workshops EngagementRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 client_id: type: integer writeOnly: true opportunity_id: type: integer writeOnly: true start_date: type: string format: date end_date: type: string format: date status: $ref: '#/components/schemas/Status557Enum' description: type: string required: - client_id - end_date - name - opportunity_id - start_date EngagementSummary: type: object description: Lightweight serializer for engagement summaries properties: id: type: integer readOnly: true name: type: string maxLength: 255 client_name: type: string readOnly: true status: $ref: '#/components/schemas/Status557Enum' start_date: type: string format: date end_date: type: string format: date interview_count: type: string readOnly: true workshop_count: type: string readOnly: true required: - client_name - end_date - id - interview_count - name - start_date - workshop_count EventTypeEnum: enum: - meeting - deadline - reminder - opportunity - birthday type: string description: |- * `meeting` - Meeting * `deadline` - Deadline * `reminder` - Reminder * `opportunity` - Opportunity * `birthday` - Birthday Finding: type: object description: Serialize all Finding fields for read and write. properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string source: $ref: '#/components/schemas/SourceEnum' source_detail: type: string maxLength: 255 category: type: string maxLength: 100 impact_level: $ref: '#/components/schemas/ImpactLevelEnum' impact_description: type: string created_date: type: string format: date-time readOnly: true required: - created_date - description - id - impact_description - impact_level - name - source FindingRequest: type: object description: Serialize all Finding fields for read and write. properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 source: $ref: '#/components/schemas/SourceEnum' source_detail: type: string maxLength: 255 category: type: string maxLength: 100 impact_level: $ref: '#/components/schemas/ImpactLevelEnum' impact_description: type: string minLength: 1 required: - description - impact_description - impact_level - name - source FiscalYear: type: object description: |- Fiscal year information serializer. Provides fiscal year details including: - Year designation - Start date and calculated quarters - Fiscal year periods properties: fiscal_year: type: integer readOnly: true nullable: true fiscal_year_start: type: string format: date fiscal_quarter_1: type: string readOnly: true nullable: true fiscal_quarter_2: type: string readOnly: true nullable: true fiscal_quarter_3: type: string readOnly: true nullable: true fiscal_quarter_4: type: string readOnly: true nullable: true required: - fiscal_quarter_1 - fiscal_quarter_2 - fiscal_quarter_3 - fiscal_quarter_4 - fiscal_year - fiscal_year_start HomeTimezoneEnum: enum: - Africa/Abidjan - Africa/Accra - Africa/Addis_Ababa - Africa/Algiers - Africa/Asmara - Africa/Bamako - Africa/Bangui - Africa/Banjul - Africa/Bissau - Africa/Blantyre - Africa/Brazzaville - Africa/Bujumbura - Africa/Cairo - Africa/Casablanca - Africa/Ceuta - Africa/Conakry - Africa/Dakar - Africa/Dar_es_Salaam - Africa/Djibouti - Africa/Douala - Africa/El_Aaiun - Africa/Freetown - Africa/Gaborone - Africa/Harare - Africa/Johannesburg - Africa/Juba - Africa/Kampala - Africa/Khartoum - Africa/Kigali - Africa/Kinshasa - Africa/Lagos - Africa/Libreville - Africa/Lome - Africa/Luanda - Africa/Lubumbashi - Africa/Lusaka - Africa/Malabo - Africa/Maputo - Africa/Maseru - Africa/Mbabane - Africa/Mogadishu - Africa/Monrovia - Africa/Nairobi - Africa/Ndjamena - Africa/Niamey - Africa/Nouakchott - Africa/Ouagadougou - Africa/Porto-Novo - Africa/Sao_Tome - Africa/Tripoli - Africa/Tunis - Africa/Windhoek - America/Adak - America/Anchorage - America/Anguilla - America/Antigua - America/Araguaina - America/Argentina/Buenos_Aires - America/Argentina/Catamarca - America/Argentina/Cordoba - America/Argentina/Jujuy - America/Argentina/La_Rioja - America/Argentina/Mendoza - America/Argentina/Rio_Gallegos - America/Argentina/Salta - America/Argentina/San_Juan - America/Argentina/San_Luis - America/Argentina/Tucuman - America/Argentina/Ushuaia - America/Aruba - America/Asuncion - America/Atikokan - America/Bahia - America/Bahia_Banderas - America/Barbados - America/Belem - America/Belize - America/Blanc-Sablon - America/Boa_Vista - America/Bogota - America/Boise - America/Cambridge_Bay - America/Campo_Grande - America/Cancun - America/Caracas - America/Cayenne - America/Cayman - America/Chicago - America/Chihuahua - America/Ciudad_Juarez - America/Costa_Rica - America/Coyhaique - America/Creston - America/Cuiaba - America/Curacao - America/Danmarkshavn - America/Dawson - America/Dawson_Creek - America/Denver - America/Detroit - America/Dominica - America/Edmonton - America/Eirunepe - America/El_Salvador - America/Fort_Nelson - America/Fortaleza - America/Glace_Bay - America/Goose_Bay - America/Grand_Turk - America/Grenada - America/Guadeloupe - America/Guatemala - America/Guayaquil - America/Guyana - America/Halifax - America/Havana - America/Hermosillo - America/Indiana/Indianapolis - America/Indiana/Knox - America/Indiana/Marengo - America/Indiana/Petersburg - America/Indiana/Tell_City - America/Indiana/Vevay - America/Indiana/Vincennes - America/Indiana/Winamac - America/Inuvik - America/Iqaluit - America/Jamaica - America/Juneau - America/Kentucky/Louisville - America/Kentucky/Monticello - America/Kralendijk - America/La_Paz - America/Lima - America/Los_Angeles - America/Lower_Princes - America/Maceio - America/Managua - America/Manaus - America/Marigot - America/Martinique - America/Matamoros - America/Mazatlan - America/Menominee - America/Merida - America/Metlakatla - America/Mexico_City - America/Miquelon - America/Moncton - America/Monterrey - America/Montevideo - America/Montserrat - America/Nassau - America/New_York - America/Nome - America/Noronha - America/North_Dakota/Beulah - America/North_Dakota/Center - America/North_Dakota/New_Salem - America/Nuuk - America/Ojinaga - America/Panama - America/Paramaribo - America/Phoenix - America/Port-au-Prince - America/Port_of_Spain - America/Porto_Velho - America/Puerto_Rico - America/Punta_Arenas - America/Rankin_Inlet - America/Recife - America/Regina - America/Resolute - America/Rio_Branco - America/Santarem - America/Santiago - America/Santo_Domingo - America/Sao_Paulo - America/Scoresbysund - America/Sitka - America/St_Barthelemy - America/St_Johns - America/St_Kitts - America/St_Lucia - America/St_Thomas - America/St_Vincent - America/Swift_Current - America/Tegucigalpa - America/Thule - America/Tijuana - America/Toronto - America/Tortola - America/Vancouver - America/Whitehorse - America/Winnipeg - America/Yakutat - Antarctica/Casey - Antarctica/Davis - Antarctica/DumontDUrville - Antarctica/Macquarie - Antarctica/Mawson - Antarctica/McMurdo - Antarctica/Palmer - Antarctica/Rothera - Antarctica/Syowa - Antarctica/Troll - Antarctica/Vostok - Arctic/Longyearbyen - Asia/Aden - Asia/Almaty - Asia/Amman - Asia/Anadyr - Asia/Aqtau - Asia/Aqtobe - Asia/Ashgabat - Asia/Atyrau - Asia/Baghdad - Asia/Bahrain - Asia/Baku - Asia/Bangkok - Asia/Barnaul - Asia/Beirut - Asia/Bishkek - Asia/Brunei - Asia/Chita - Asia/Colombo - Asia/Damascus - Asia/Dhaka - Asia/Dili - Asia/Dubai - Asia/Dushanbe - Asia/Famagusta - Asia/Gaza - Asia/Hebron - Asia/Ho_Chi_Minh - Asia/Hong_Kong - Asia/Hovd - Asia/Irkutsk - Asia/Jakarta - Asia/Jayapura - Asia/Jerusalem - Asia/Kabul - Asia/Kamchatka - Asia/Karachi - Asia/Kathmandu - Asia/Khandyga - Asia/Kolkata - Asia/Krasnoyarsk - Asia/Kuala_Lumpur - Asia/Kuching - Asia/Kuwait - Asia/Macau - Asia/Magadan - Asia/Makassar - Asia/Manila - Asia/Muscat - Asia/Nicosia - Asia/Novokuznetsk - Asia/Novosibirsk - Asia/Omsk - Asia/Oral - Asia/Phnom_Penh - Asia/Pontianak - Asia/Pyongyang - Asia/Qatar - Asia/Qostanay - Asia/Qyzylorda - Asia/Riyadh - Asia/Sakhalin - Asia/Samarkand - Asia/Seoul - Asia/Shanghai - Asia/Singapore - Asia/Srednekolymsk - Asia/Taipei - Asia/Tashkent - Asia/Tbilisi - Asia/Tehran - Asia/Thimphu - Asia/Tokyo - Asia/Tomsk - Asia/Ulaanbaatar - Asia/Urumqi - Asia/Ust-Nera - Asia/Vientiane - Asia/Vladivostok - Asia/Yakutsk - Asia/Yangon - Asia/Yekaterinburg - Asia/Yerevan - Atlantic/Azores - Atlantic/Bermuda - Atlantic/Canary - Atlantic/Cape_Verde - Atlantic/Faroe - Atlantic/Madeira - Atlantic/Reykjavik - Atlantic/South_Georgia - Atlantic/St_Helena - Atlantic/Stanley - Australia/Adelaide - Australia/Brisbane - Australia/Broken_Hill - Australia/Darwin - Australia/Eucla - Australia/Hobart - Australia/Lindeman - Australia/Lord_Howe - Australia/Melbourne - Australia/Perth - Australia/Sydney - Europe/Amsterdam - Europe/Andorra - Europe/Astrakhan - Europe/Athens - Europe/Belgrade - Europe/Berlin - Europe/Bratislava - Europe/Brussels - Europe/Bucharest - Europe/Budapest - Europe/Busingen - Europe/Chisinau - Europe/Copenhagen - Europe/Dublin - Europe/Gibraltar - Europe/Guernsey - Europe/Helsinki - Europe/Isle_of_Man - Europe/Istanbul - Europe/Jersey - Europe/Kaliningrad - Europe/Kirov - Europe/Kyiv - Europe/Lisbon - Europe/Ljubljana - Europe/London - Europe/Luxembourg - Europe/Madrid - Europe/Malta - Europe/Mariehamn - Europe/Minsk - Europe/Monaco - Europe/Moscow - Europe/Oslo - Europe/Paris - Europe/Podgorica - Europe/Prague - Europe/Riga - Europe/Rome - Europe/Samara - Europe/San_Marino - Europe/Sarajevo - Europe/Saratov - Europe/Simferopol - Europe/Skopje - Europe/Sofia - Europe/Stockholm - Europe/Tallinn - Europe/Tirane - Europe/Ulyanovsk - Europe/Vaduz - Europe/Vatican - Europe/Vienna - Europe/Vilnius - Europe/Volgograd - Europe/Warsaw - Europe/Zagreb - Europe/Zurich - GMT - Indian/Antananarivo - Indian/Chagos - Indian/Christmas - Indian/Cocos - Indian/Comoro - Indian/Kerguelen - Indian/Mahe - Indian/Maldives - Indian/Mauritius - Indian/Mayotte - Indian/Reunion - Pacific/Apia - Pacific/Auckland - Pacific/Bougainville - Pacific/Chatham - Pacific/Chuuk - Pacific/Easter - Pacific/Efate - Pacific/Fakaofo - Pacific/Fiji - Pacific/Funafuti - Pacific/Galapagos - Pacific/Gambier - Pacific/Guadalcanal - Pacific/Guam - Pacific/Honolulu - Pacific/Kanton - Pacific/Kiritimati - Pacific/Kosrae - Pacific/Kwajalein - Pacific/Majuro - Pacific/Marquesas - Pacific/Midway - Pacific/Nauru - Pacific/Niue - Pacific/Norfolk - Pacific/Noumea - Pacific/Pago_Pago - Pacific/Palau - Pacific/Pitcairn - Pacific/Pohnpei - Pacific/Port_Moresby - Pacific/Rarotonga - Pacific/Saipan - Pacific/Tahiti - Pacific/Tarawa - Pacific/Tongatapu - Pacific/Wake - Pacific/Wallis - UTC type: string description: |- * `Africa/Abidjan` - Africa/Abidjan * `Africa/Accra` - Africa/Accra * `Africa/Addis_Ababa` - Africa/Addis_Ababa * `Africa/Algiers` - Africa/Algiers * `Africa/Asmara` - Africa/Asmara * `Africa/Bamako` - Africa/Bamako * `Africa/Bangui` - Africa/Bangui * `Africa/Banjul` - Africa/Banjul * `Africa/Bissau` - Africa/Bissau * `Africa/Blantyre` - Africa/Blantyre * `Africa/Brazzaville` - Africa/Brazzaville * `Africa/Bujumbura` - Africa/Bujumbura * `Africa/Cairo` - Africa/Cairo * `Africa/Casablanca` - Africa/Casablanca * `Africa/Ceuta` - Africa/Ceuta * `Africa/Conakry` - Africa/Conakry * `Africa/Dakar` - Africa/Dakar * `Africa/Dar_es_Salaam` - Africa/Dar_es_Salaam * `Africa/Djibouti` - Africa/Djibouti * `Africa/Douala` - Africa/Douala * `Africa/El_Aaiun` - Africa/El_Aaiun * `Africa/Freetown` - Africa/Freetown * `Africa/Gaborone` - Africa/Gaborone * `Africa/Harare` - Africa/Harare * `Africa/Johannesburg` - Africa/Johannesburg * `Africa/Juba` - Africa/Juba * `Africa/Kampala` - Africa/Kampala * `Africa/Khartoum` - Africa/Khartoum * `Africa/Kigali` - Africa/Kigali * `Africa/Kinshasa` - Africa/Kinshasa * `Africa/Lagos` - Africa/Lagos * `Africa/Libreville` - Africa/Libreville * `Africa/Lome` - Africa/Lome * `Africa/Luanda` - Africa/Luanda * `Africa/Lubumbashi` - Africa/Lubumbashi * `Africa/Lusaka` - Africa/Lusaka * `Africa/Malabo` - Africa/Malabo * `Africa/Maputo` - Africa/Maputo * `Africa/Maseru` - Africa/Maseru * `Africa/Mbabane` - Africa/Mbabane * `Africa/Mogadishu` - Africa/Mogadishu * `Africa/Monrovia` - Africa/Monrovia * `Africa/Nairobi` - Africa/Nairobi * `Africa/Ndjamena` - Africa/Ndjamena * `Africa/Niamey` - Africa/Niamey * `Africa/Nouakchott` - Africa/Nouakchott * `Africa/Ouagadougou` - Africa/Ouagadougou * `Africa/Porto-Novo` - Africa/Porto-Novo * `Africa/Sao_Tome` - Africa/Sao_Tome * `Africa/Tripoli` - Africa/Tripoli * `Africa/Tunis` - Africa/Tunis * `Africa/Windhoek` - Africa/Windhoek * `America/Adak` - America/Adak * `America/Anchorage` - America/Anchorage * `America/Anguilla` - America/Anguilla * `America/Antigua` - America/Antigua * `America/Araguaina` - America/Araguaina * `America/Argentina/Buenos_Aires` - America/Argentina/Buenos_Aires * `America/Argentina/Catamarca` - America/Argentina/Catamarca * `America/Argentina/Cordoba` - America/Argentina/Cordoba * `America/Argentina/Jujuy` - America/Argentina/Jujuy * `America/Argentina/La_Rioja` - America/Argentina/La_Rioja * `America/Argentina/Mendoza` - America/Argentina/Mendoza * `America/Argentina/Rio_Gallegos` - America/Argentina/Rio_Gallegos * `America/Argentina/Salta` - America/Argentina/Salta * `America/Argentina/San_Juan` - America/Argentina/San_Juan * `America/Argentina/San_Luis` - America/Argentina/San_Luis * `America/Argentina/Tucuman` - America/Argentina/Tucuman * `America/Argentina/Ushuaia` - America/Argentina/Ushuaia * `America/Aruba` - America/Aruba * `America/Asuncion` - America/Asuncion * `America/Atikokan` - America/Atikokan * `America/Bahia` - America/Bahia * `America/Bahia_Banderas` - America/Bahia_Banderas * `America/Barbados` - America/Barbados * `America/Belem` - America/Belem * `America/Belize` - America/Belize * `America/Blanc-Sablon` - America/Blanc-Sablon * `America/Boa_Vista` - America/Boa_Vista * `America/Bogota` - America/Bogota * `America/Boise` - America/Boise * `America/Cambridge_Bay` - America/Cambridge_Bay * `America/Campo_Grande` - America/Campo_Grande * `America/Cancun` - America/Cancun * `America/Caracas` - America/Caracas * `America/Cayenne` - America/Cayenne * `America/Cayman` - America/Cayman * `America/Chicago` - America/Chicago * `America/Chihuahua` - America/Chihuahua * `America/Ciudad_Juarez` - America/Ciudad_Juarez * `America/Costa_Rica` - America/Costa_Rica * `America/Coyhaique` - America/Coyhaique * `America/Creston` - America/Creston * `America/Cuiaba` - America/Cuiaba * `America/Curacao` - America/Curacao * `America/Danmarkshavn` - America/Danmarkshavn * `America/Dawson` - America/Dawson * `America/Dawson_Creek` - America/Dawson_Creek * `America/Denver` - America/Denver * `America/Detroit` - America/Detroit * `America/Dominica` - America/Dominica * `America/Edmonton` - America/Edmonton * `America/Eirunepe` - America/Eirunepe * `America/El_Salvador` - America/El_Salvador * `America/Fort_Nelson` - America/Fort_Nelson * `America/Fortaleza` - America/Fortaleza * `America/Glace_Bay` - America/Glace_Bay * `America/Goose_Bay` - America/Goose_Bay * `America/Grand_Turk` - America/Grand_Turk * `America/Grenada` - America/Grenada * `America/Guadeloupe` - America/Guadeloupe * `America/Guatemala` - America/Guatemala * `America/Guayaquil` - America/Guayaquil * `America/Guyana` - America/Guyana * `America/Halifax` - America/Halifax * `America/Havana` - America/Havana * `America/Hermosillo` - America/Hermosillo * `America/Indiana/Indianapolis` - America/Indiana/Indianapolis * `America/Indiana/Knox` - America/Indiana/Knox * `America/Indiana/Marengo` - America/Indiana/Marengo * `America/Indiana/Petersburg` - America/Indiana/Petersburg * `America/Indiana/Tell_City` - America/Indiana/Tell_City * `America/Indiana/Vevay` - America/Indiana/Vevay * `America/Indiana/Vincennes` - America/Indiana/Vincennes * `America/Indiana/Winamac` - America/Indiana/Winamac * `America/Inuvik` - America/Inuvik * `America/Iqaluit` - America/Iqaluit * `America/Jamaica` - America/Jamaica * `America/Juneau` - America/Juneau * `America/Kentucky/Louisville` - America/Kentucky/Louisville * `America/Kentucky/Monticello` - America/Kentucky/Monticello * `America/Kralendijk` - America/Kralendijk * `America/La_Paz` - America/La_Paz * `America/Lima` - America/Lima * `America/Los_Angeles` - America/Los_Angeles * `America/Lower_Princes` - America/Lower_Princes * `America/Maceio` - America/Maceio * `America/Managua` - America/Managua * `America/Manaus` - America/Manaus * `America/Marigot` - America/Marigot * `America/Martinique` - America/Martinique * `America/Matamoros` - America/Matamoros * `America/Mazatlan` - America/Mazatlan * `America/Menominee` - America/Menominee * `America/Merida` - America/Merida * `America/Metlakatla` - America/Metlakatla * `America/Mexico_City` - America/Mexico_City * `America/Miquelon` - America/Miquelon * `America/Moncton` - America/Moncton * `America/Monterrey` - America/Monterrey * `America/Montevideo` - America/Montevideo * `America/Montserrat` - America/Montserrat * `America/Nassau` - America/Nassau * `America/New_York` - America/New_York * `America/Nome` - America/Nome * `America/Noronha` - America/Noronha * `America/North_Dakota/Beulah` - America/North_Dakota/Beulah * `America/North_Dakota/Center` - America/North_Dakota/Center * `America/North_Dakota/New_Salem` - America/North_Dakota/New_Salem * `America/Nuuk` - America/Nuuk * `America/Ojinaga` - America/Ojinaga * `America/Panama` - America/Panama * `America/Paramaribo` - America/Paramaribo * `America/Phoenix` - America/Phoenix * `America/Port-au-Prince` - America/Port-au-Prince * `America/Port_of_Spain` - America/Port_of_Spain * `America/Porto_Velho` - America/Porto_Velho * `America/Puerto_Rico` - America/Puerto_Rico * `America/Punta_Arenas` - America/Punta_Arenas * `America/Rankin_Inlet` - America/Rankin_Inlet * `America/Recife` - America/Recife * `America/Regina` - America/Regina * `America/Resolute` - America/Resolute * `America/Rio_Branco` - America/Rio_Branco * `America/Santarem` - America/Santarem * `America/Santiago` - America/Santiago * `America/Santo_Domingo` - America/Santo_Domingo * `America/Sao_Paulo` - America/Sao_Paulo * `America/Scoresbysund` - America/Scoresbysund * `America/Sitka` - America/Sitka * `America/St_Barthelemy` - America/St_Barthelemy * `America/St_Johns` - America/St_Johns * `America/St_Kitts` - America/St_Kitts * `America/St_Lucia` - America/St_Lucia * `America/St_Thomas` - America/St_Thomas * `America/St_Vincent` - America/St_Vincent * `America/Swift_Current` - America/Swift_Current * `America/Tegucigalpa` - America/Tegucigalpa * `America/Thule` - America/Thule * `America/Tijuana` - America/Tijuana * `America/Toronto` - America/Toronto * `America/Tortola` - America/Tortola * `America/Vancouver` - America/Vancouver * `America/Whitehorse` - America/Whitehorse * `America/Winnipeg` - America/Winnipeg * `America/Yakutat` - America/Yakutat * `Antarctica/Casey` - Antarctica/Casey * `Antarctica/Davis` - Antarctica/Davis * `Antarctica/DumontDUrville` - Antarctica/DumontDUrville * `Antarctica/Macquarie` - Antarctica/Macquarie * `Antarctica/Mawson` - Antarctica/Mawson * `Antarctica/McMurdo` - Antarctica/McMurdo * `Antarctica/Palmer` - Antarctica/Palmer * `Antarctica/Rothera` - Antarctica/Rothera * `Antarctica/Syowa` - Antarctica/Syowa * `Antarctica/Troll` - Antarctica/Troll * `Antarctica/Vostok` - Antarctica/Vostok * `Arctic/Longyearbyen` - Arctic/Longyearbyen * `Asia/Aden` - Asia/Aden * `Asia/Almaty` - Asia/Almaty * `Asia/Amman` - Asia/Amman * `Asia/Anadyr` - Asia/Anadyr * `Asia/Aqtau` - Asia/Aqtau * `Asia/Aqtobe` - Asia/Aqtobe * `Asia/Ashgabat` - Asia/Ashgabat * `Asia/Atyrau` - Asia/Atyrau * `Asia/Baghdad` - Asia/Baghdad * `Asia/Bahrain` - Asia/Bahrain * `Asia/Baku` - Asia/Baku * `Asia/Bangkok` - Asia/Bangkok * `Asia/Barnaul` - Asia/Barnaul * `Asia/Beirut` - Asia/Beirut * `Asia/Bishkek` - Asia/Bishkek * `Asia/Brunei` - Asia/Brunei * `Asia/Chita` - Asia/Chita * `Asia/Colombo` - Asia/Colombo * `Asia/Damascus` - Asia/Damascus * `Asia/Dhaka` - Asia/Dhaka * `Asia/Dili` - Asia/Dili * `Asia/Dubai` - Asia/Dubai * `Asia/Dushanbe` - Asia/Dushanbe * `Asia/Famagusta` - Asia/Famagusta * `Asia/Gaza` - Asia/Gaza * `Asia/Hebron` - Asia/Hebron * `Asia/Ho_Chi_Minh` - Asia/Ho_Chi_Minh * `Asia/Hong_Kong` - Asia/Hong_Kong * `Asia/Hovd` - Asia/Hovd * `Asia/Irkutsk` - Asia/Irkutsk * `Asia/Jakarta` - Asia/Jakarta * `Asia/Jayapura` - Asia/Jayapura * `Asia/Jerusalem` - Asia/Jerusalem * `Asia/Kabul` - Asia/Kabul * `Asia/Kamchatka` - Asia/Kamchatka * `Asia/Karachi` - Asia/Karachi * `Asia/Kathmandu` - Asia/Kathmandu * `Asia/Khandyga` - Asia/Khandyga * `Asia/Kolkata` - Asia/Kolkata * `Asia/Krasnoyarsk` - Asia/Krasnoyarsk * `Asia/Kuala_Lumpur` - Asia/Kuala_Lumpur * `Asia/Kuching` - Asia/Kuching * `Asia/Kuwait` - Asia/Kuwait * `Asia/Macau` - Asia/Macau * `Asia/Magadan` - Asia/Magadan * `Asia/Makassar` - Asia/Makassar * `Asia/Manila` - Asia/Manila * `Asia/Muscat` - Asia/Muscat * `Asia/Nicosia` - Asia/Nicosia * `Asia/Novokuznetsk` - Asia/Novokuznetsk * `Asia/Novosibirsk` - Asia/Novosibirsk * `Asia/Omsk` - Asia/Omsk * `Asia/Oral` - Asia/Oral * `Asia/Phnom_Penh` - Asia/Phnom_Penh * `Asia/Pontianak` - Asia/Pontianak * `Asia/Pyongyang` - Asia/Pyongyang * `Asia/Qatar` - Asia/Qatar * `Asia/Qostanay` - Asia/Qostanay * `Asia/Qyzylorda` - Asia/Qyzylorda * `Asia/Riyadh` - Asia/Riyadh * `Asia/Sakhalin` - Asia/Sakhalin * `Asia/Samarkand` - Asia/Samarkand * `Asia/Seoul` - Asia/Seoul * `Asia/Shanghai` - Asia/Shanghai * `Asia/Singapore` - Asia/Singapore * `Asia/Srednekolymsk` - Asia/Srednekolymsk * `Asia/Taipei` - Asia/Taipei * `Asia/Tashkent` - Asia/Tashkent * `Asia/Tbilisi` - Asia/Tbilisi * `Asia/Tehran` - Asia/Tehran * `Asia/Thimphu` - Asia/Thimphu * `Asia/Tokyo` - Asia/Tokyo * `Asia/Tomsk` - Asia/Tomsk * `Asia/Ulaanbaatar` - Asia/Ulaanbaatar * `Asia/Urumqi` - Asia/Urumqi * `Asia/Ust-Nera` - Asia/Ust-Nera * `Asia/Vientiane` - Asia/Vientiane * `Asia/Vladivostok` - Asia/Vladivostok * `Asia/Yakutsk` - Asia/Yakutsk * `Asia/Yangon` - Asia/Yangon * `Asia/Yekaterinburg` - Asia/Yekaterinburg * `Asia/Yerevan` - Asia/Yerevan * `Atlantic/Azores` - Atlantic/Azores * `Atlantic/Bermuda` - Atlantic/Bermuda * `Atlantic/Canary` - Atlantic/Canary * `Atlantic/Cape_Verde` - Atlantic/Cape_Verde * `Atlantic/Faroe` - Atlantic/Faroe * `Atlantic/Madeira` - Atlantic/Madeira * `Atlantic/Reykjavik` - Atlantic/Reykjavik * `Atlantic/South_Georgia` - Atlantic/South_Georgia * `Atlantic/St_Helena` - Atlantic/St_Helena * `Atlantic/Stanley` - Atlantic/Stanley * `Australia/Adelaide` - Australia/Adelaide * `Australia/Brisbane` - Australia/Brisbane * `Australia/Broken_Hill` - Australia/Broken_Hill * `Australia/Darwin` - Australia/Darwin * `Australia/Eucla` - Australia/Eucla * `Australia/Hobart` - Australia/Hobart * `Australia/Lindeman` - Australia/Lindeman * `Australia/Lord_Howe` - Australia/Lord_Howe * `Australia/Melbourne` - Australia/Melbourne * `Australia/Perth` - Australia/Perth * `Australia/Sydney` - Australia/Sydney * `Europe/Amsterdam` - Europe/Amsterdam * `Europe/Andorra` - Europe/Andorra * `Europe/Astrakhan` - Europe/Astrakhan * `Europe/Athens` - Europe/Athens * `Europe/Belgrade` - Europe/Belgrade * `Europe/Berlin` - Europe/Berlin * `Europe/Bratislava` - Europe/Bratislava * `Europe/Brussels` - Europe/Brussels * `Europe/Bucharest` - Europe/Bucharest * `Europe/Budapest` - Europe/Budapest * `Europe/Busingen` - Europe/Busingen * `Europe/Chisinau` - Europe/Chisinau * `Europe/Copenhagen` - Europe/Copenhagen * `Europe/Dublin` - Europe/Dublin * `Europe/Gibraltar` - Europe/Gibraltar * `Europe/Guernsey` - Europe/Guernsey * `Europe/Helsinki` - Europe/Helsinki * `Europe/Isle_of_Man` - Europe/Isle_of_Man * `Europe/Istanbul` - Europe/Istanbul * `Europe/Jersey` - Europe/Jersey * `Europe/Kaliningrad` - Europe/Kaliningrad * `Europe/Kirov` - Europe/Kirov * `Europe/Kyiv` - Europe/Kyiv * `Europe/Lisbon` - Europe/Lisbon * `Europe/Ljubljana` - Europe/Ljubljana * `Europe/London` - Europe/London * `Europe/Luxembourg` - Europe/Luxembourg * `Europe/Madrid` - Europe/Madrid * `Europe/Malta` - Europe/Malta * `Europe/Mariehamn` - Europe/Mariehamn * `Europe/Minsk` - Europe/Minsk * `Europe/Monaco` - Europe/Monaco * `Europe/Moscow` - Europe/Moscow * `Europe/Oslo` - Europe/Oslo * `Europe/Paris` - Europe/Paris * `Europe/Podgorica` - Europe/Podgorica * `Europe/Prague` - Europe/Prague * `Europe/Riga` - Europe/Riga * `Europe/Rome` - Europe/Rome * `Europe/Samara` - Europe/Samara * `Europe/San_Marino` - Europe/San_Marino * `Europe/Sarajevo` - Europe/Sarajevo * `Europe/Saratov` - Europe/Saratov * `Europe/Simferopol` - Europe/Simferopol * `Europe/Skopje` - Europe/Skopje * `Europe/Sofia` - Europe/Sofia * `Europe/Stockholm` - Europe/Stockholm * `Europe/Tallinn` - Europe/Tallinn * `Europe/Tirane` - Europe/Tirane * `Europe/Ulyanovsk` - Europe/Ulyanovsk * `Europe/Vaduz` - Europe/Vaduz * `Europe/Vatican` - Europe/Vatican * `Europe/Vienna` - Europe/Vienna * `Europe/Vilnius` - Europe/Vilnius * `Europe/Volgograd` - Europe/Volgograd * `Europe/Warsaw` - Europe/Warsaw * `Europe/Zagreb` - Europe/Zagreb * `Europe/Zurich` - Europe/Zurich * `GMT` - GMT * `Indian/Antananarivo` - Indian/Antananarivo * `Indian/Chagos` - Indian/Chagos * `Indian/Christmas` - Indian/Christmas * `Indian/Cocos` - Indian/Cocos * `Indian/Comoro` - Indian/Comoro * `Indian/Kerguelen` - Indian/Kerguelen * `Indian/Mahe` - Indian/Mahe * `Indian/Maldives` - Indian/Maldives * `Indian/Mauritius` - Indian/Mauritius * `Indian/Mayotte` - Indian/Mayotte * `Indian/Reunion` - Indian/Reunion * `Pacific/Apia` - Pacific/Apia * `Pacific/Auckland` - Pacific/Auckland * `Pacific/Bougainville` - Pacific/Bougainville * `Pacific/Chatham` - Pacific/Chatham * `Pacific/Chuuk` - Pacific/Chuuk * `Pacific/Easter` - Pacific/Easter * `Pacific/Efate` - Pacific/Efate * `Pacific/Fakaofo` - Pacific/Fakaofo * `Pacific/Fiji` - Pacific/Fiji * `Pacific/Funafuti` - Pacific/Funafuti * `Pacific/Galapagos` - Pacific/Galapagos * `Pacific/Gambier` - Pacific/Gambier * `Pacific/Guadalcanal` - Pacific/Guadalcanal * `Pacific/Guam` - Pacific/Guam * `Pacific/Honolulu` - Pacific/Honolulu * `Pacific/Kanton` - Pacific/Kanton * `Pacific/Kiritimati` - Pacific/Kiritimati * `Pacific/Kosrae` - Pacific/Kosrae * `Pacific/Kwajalein` - Pacific/Kwajalein * `Pacific/Majuro` - Pacific/Majuro * `Pacific/Marquesas` - Pacific/Marquesas * `Pacific/Midway` - Pacific/Midway * `Pacific/Nauru` - Pacific/Nauru * `Pacific/Niue` - Pacific/Niue * `Pacific/Norfolk` - Pacific/Norfolk * `Pacific/Noumea` - Pacific/Noumea * `Pacific/Pago_Pago` - Pacific/Pago_Pago * `Pacific/Palau` - Pacific/Palau * `Pacific/Pitcairn` - Pacific/Pitcairn * `Pacific/Pohnpei` - Pacific/Pohnpei * `Pacific/Port_Moresby` - Pacific/Port_Moresby * `Pacific/Rarotonga` - Pacific/Rarotonga * `Pacific/Saipan` - Pacific/Saipan * `Pacific/Tahiti` - Pacific/Tahiti * `Pacific/Tarawa` - Pacific/Tarawa * `Pacific/Tongatapu` - Pacific/Tongatapu * `Pacific/Wake` - Pacific/Wake * `Pacific/Wallis` - Pacific/Wallis * `UTC` - UTC ImpactEnum: enum: - High - Medium - Low type: string description: |- * `High` - High * `Medium` - Medium * `Low` - Low ImpactLevelEnum: enum: - High - Medium - Low type: string description: |- * `High` - High * `Medium` - Medium * `Low` - Low ImpactTypeEnum: enum: - Revenue - CX Improvement - EX Improvement - Cost Reduction - Risk Reduction type: string description: |- * `Revenue` - Revenue * `CX Improvement` - CX Improvement * `EX Improvement` - EX Improvement * `Cost Reduction` - Cost Reduction * `Risk Reduction` - Risk Reduction InterestEnum: enum: - High - Medium - Low type: string description: |- * `High` - High * `Medium` - Medium * `Low` - Low Interview: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 contact: allOf: - $ref: '#/components/schemas/Contact' readOnly: true date: type: string format: date time: type: string format: time notes: type: string required: - contact - date - id - name - time InterviewRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 contact_id: type: integer writeOnly: true date: type: string format: date time: type: string format: time notes: type: string required: - contact_id - date - name - time Issue: type: object properties: id: type: integer readOnly: true title: type: string maxLength: 255 description: type: string potential_impact: $ref: '#/components/schemas/PotentialImpactEnum' owner: type: integer owner_name: type: string readOnly: true priority: $ref: '#/components/schemas/Priority758Enum' status: $ref: '#/components/schemas/IssueStatusEnum' due_date: type: string format: date required: - description - due_date - id - owner - owner_name - potential_impact - priority - status - title IssueStatusEnum: enum: - Open - In Progress - Resolved - Closed type: string description: |- * `Open` - Open * `In Progress` - In Progress * `Resolved` - Resolved * `Closed` - Closed LocalTimezoneEnum: enum: - Africa/Abidjan - Africa/Accra - Africa/Addis_Ababa - Africa/Algiers - Africa/Asmara - Africa/Bamako - Africa/Bangui - Africa/Banjul - Africa/Bissau - Africa/Blantyre - Africa/Brazzaville - Africa/Bujumbura - Africa/Cairo - Africa/Casablanca - Africa/Ceuta - Africa/Conakry - Africa/Dakar - Africa/Dar_es_Salaam - Africa/Djibouti - Africa/Douala - Africa/El_Aaiun - Africa/Freetown - Africa/Gaborone - Africa/Harare - Africa/Johannesburg - Africa/Juba - Africa/Kampala - Africa/Khartoum - Africa/Kigali - Africa/Kinshasa - Africa/Lagos - Africa/Libreville - Africa/Lome - Africa/Luanda - Africa/Lubumbashi - Africa/Lusaka - Africa/Malabo - Africa/Maputo - Africa/Maseru - Africa/Mbabane - Africa/Mogadishu - Africa/Monrovia - Africa/Nairobi - Africa/Ndjamena - Africa/Niamey - Africa/Nouakchott - Africa/Ouagadougou - Africa/Porto-Novo - Africa/Sao_Tome - Africa/Tripoli - Africa/Tunis - Africa/Windhoek - America/Adak - America/Anchorage - America/Anguilla - America/Antigua - America/Araguaina - America/Argentina/Buenos_Aires - America/Argentina/Catamarca - America/Argentina/Cordoba - America/Argentina/Jujuy - America/Argentina/La_Rioja - America/Argentina/Mendoza - America/Argentina/Rio_Gallegos - America/Argentina/Salta - America/Argentina/San_Juan - America/Argentina/San_Luis - America/Argentina/Tucuman - America/Argentina/Ushuaia - America/Aruba - America/Asuncion - America/Atikokan - America/Bahia - America/Bahia_Banderas - America/Barbados - America/Belem - America/Belize - America/Blanc-Sablon - America/Boa_Vista - America/Bogota - America/Boise - America/Cambridge_Bay - America/Campo_Grande - America/Cancun - America/Caracas - America/Cayenne - America/Cayman - America/Chicago - America/Chihuahua - America/Ciudad_Juarez - America/Costa_Rica - America/Coyhaique - America/Creston - America/Cuiaba - America/Curacao - America/Danmarkshavn - America/Dawson - America/Dawson_Creek - America/Denver - America/Detroit - America/Dominica - America/Edmonton - America/Eirunepe - America/El_Salvador - America/Fort_Nelson - America/Fortaleza - America/Glace_Bay - America/Goose_Bay - America/Grand_Turk - America/Grenada - America/Guadeloupe - America/Guatemala - America/Guayaquil - America/Guyana - America/Halifax - America/Havana - America/Hermosillo - America/Indiana/Indianapolis - America/Indiana/Knox - America/Indiana/Marengo - America/Indiana/Petersburg - America/Indiana/Tell_City - America/Indiana/Vevay - America/Indiana/Vincennes - America/Indiana/Winamac - America/Inuvik - America/Iqaluit - America/Jamaica - America/Juneau - America/Kentucky/Louisville - America/Kentucky/Monticello - America/Kralendijk - America/La_Paz - America/Lima - America/Los_Angeles - America/Lower_Princes - America/Maceio - America/Managua - America/Manaus - America/Marigot - America/Martinique - America/Matamoros - America/Mazatlan - America/Menominee - America/Merida - America/Metlakatla - America/Mexico_City - America/Miquelon - America/Moncton - America/Monterrey - America/Montevideo - America/Montserrat - America/Nassau - America/New_York - America/Nome - America/Noronha - America/North_Dakota/Beulah - America/North_Dakota/Center - America/North_Dakota/New_Salem - America/Nuuk - America/Ojinaga - America/Panama - America/Paramaribo - America/Phoenix - America/Port-au-Prince - America/Port_of_Spain - America/Porto_Velho - America/Puerto_Rico - America/Punta_Arenas - America/Rankin_Inlet - America/Recife - America/Regina - America/Resolute - America/Rio_Branco - America/Santarem - America/Santiago - America/Santo_Domingo - America/Sao_Paulo - America/Scoresbysund - America/Sitka - America/St_Barthelemy - America/St_Johns - America/St_Kitts - America/St_Lucia - America/St_Thomas - America/St_Vincent - America/Swift_Current - America/Tegucigalpa - America/Thule - America/Tijuana - America/Toronto - America/Tortola - America/Vancouver - America/Whitehorse - America/Winnipeg - America/Yakutat - Antarctica/Casey - Antarctica/Davis - Antarctica/DumontDUrville - Antarctica/Macquarie - Antarctica/Mawson - Antarctica/McMurdo - Antarctica/Palmer - Antarctica/Rothera - Antarctica/Syowa - Antarctica/Troll - Antarctica/Vostok - Arctic/Longyearbyen - Asia/Aden - Asia/Almaty - Asia/Amman - Asia/Anadyr - Asia/Aqtau - Asia/Aqtobe - Asia/Ashgabat - Asia/Atyrau - Asia/Baghdad - Asia/Bahrain - Asia/Baku - Asia/Bangkok - Asia/Barnaul - Asia/Beirut - Asia/Bishkek - Asia/Brunei - Asia/Chita - Asia/Colombo - Asia/Damascus - Asia/Dhaka - Asia/Dili - Asia/Dubai - Asia/Dushanbe - Asia/Famagusta - Asia/Gaza - Asia/Hebron - Asia/Ho_Chi_Minh - Asia/Hong_Kong - Asia/Hovd - Asia/Irkutsk - Asia/Jakarta - Asia/Jayapura - Asia/Jerusalem - Asia/Kabul - Asia/Kamchatka - Asia/Karachi - Asia/Kathmandu - Asia/Khandyga - Asia/Kolkata - Asia/Krasnoyarsk - Asia/Kuala_Lumpur - Asia/Kuching - Asia/Kuwait - Asia/Macau - Asia/Magadan - Asia/Makassar - Asia/Manila - Asia/Muscat - Asia/Nicosia - Asia/Novokuznetsk - Asia/Novosibirsk - Asia/Omsk - Asia/Oral - Asia/Phnom_Penh - Asia/Pontianak - Asia/Pyongyang - Asia/Qatar - Asia/Qostanay - Asia/Qyzylorda - Asia/Riyadh - Asia/Sakhalin - Asia/Samarkand - Asia/Seoul - Asia/Shanghai - Asia/Singapore - Asia/Srednekolymsk - Asia/Taipei - Asia/Tashkent - Asia/Tbilisi - Asia/Tehran - Asia/Thimphu - Asia/Tokyo - Asia/Tomsk - Asia/Ulaanbaatar - Asia/Urumqi - Asia/Ust-Nera - Asia/Vientiane - Asia/Vladivostok - Asia/Yakutsk - Asia/Yangon - Asia/Yekaterinburg - Asia/Yerevan - Atlantic/Azores - Atlantic/Bermuda - Atlantic/Canary - Atlantic/Cape_Verde - Atlantic/Faroe - Atlantic/Madeira - Atlantic/Reykjavik - Atlantic/South_Georgia - Atlantic/St_Helena - Atlantic/Stanley - Australia/Adelaide - Australia/Brisbane - Australia/Broken_Hill - Australia/Darwin - Australia/Eucla - Australia/Hobart - Australia/Lindeman - Australia/Lord_Howe - Australia/Melbourne - Australia/Perth - Australia/Sydney - Europe/Amsterdam - Europe/Andorra - Europe/Astrakhan - Europe/Athens - Europe/Belgrade - Europe/Berlin - Europe/Bratislava - Europe/Brussels - Europe/Bucharest - Europe/Budapest - Europe/Busingen - Europe/Chisinau - Europe/Copenhagen - Europe/Dublin - Europe/Gibraltar - Europe/Guernsey - Europe/Helsinki - Europe/Isle_of_Man - Europe/Istanbul - Europe/Jersey - Europe/Kaliningrad - Europe/Kirov - Europe/Kyiv - Europe/Lisbon - Europe/Ljubljana - Europe/London - Europe/Luxembourg - Europe/Madrid - Europe/Malta - Europe/Mariehamn - Europe/Minsk - Europe/Monaco - Europe/Moscow - Europe/Oslo - Europe/Paris - Europe/Podgorica - Europe/Prague - Europe/Riga - Europe/Rome - Europe/Samara - Europe/San_Marino - Europe/Sarajevo - Europe/Saratov - Europe/Simferopol - Europe/Skopje - Europe/Sofia - Europe/Stockholm - Europe/Tallinn - Europe/Tirane - Europe/Ulyanovsk - Europe/Vaduz - Europe/Vatican - Europe/Vienna - Europe/Vilnius - Europe/Volgograd - Europe/Warsaw - Europe/Zagreb - Europe/Zurich - GMT - Indian/Antananarivo - Indian/Chagos - Indian/Christmas - Indian/Cocos - Indian/Comoro - Indian/Kerguelen - Indian/Mahe - Indian/Maldives - Indian/Mauritius - Indian/Mayotte - Indian/Reunion - Pacific/Apia - Pacific/Auckland - Pacific/Bougainville - Pacific/Chatham - Pacific/Chuuk - Pacific/Easter - Pacific/Efate - Pacific/Fakaofo - Pacific/Fiji - Pacific/Funafuti - Pacific/Galapagos - Pacific/Gambier - Pacific/Guadalcanal - Pacific/Guam - Pacific/Honolulu - Pacific/Kanton - Pacific/Kiritimati - Pacific/Kosrae - Pacific/Kwajalein - Pacific/Majuro - Pacific/Marquesas - Pacific/Midway - Pacific/Nauru - Pacific/Niue - Pacific/Norfolk - Pacific/Noumea - Pacific/Pago_Pago - Pacific/Palau - Pacific/Pitcairn - Pacific/Pohnpei - Pacific/Port_Moresby - Pacific/Rarotonga - Pacific/Saipan - Pacific/Tahiti - Pacific/Tarawa - Pacific/Tongatapu - Pacific/Wake - Pacific/Wallis - UTC type: string description: |- * `Africa/Abidjan` - Africa/Abidjan * `Africa/Accra` - Africa/Accra * `Africa/Addis_Ababa` - Africa/Addis_Ababa * `Africa/Algiers` - Africa/Algiers * `Africa/Asmara` - Africa/Asmara * `Africa/Bamako` - Africa/Bamako * `Africa/Bangui` - Africa/Bangui * `Africa/Banjul` - Africa/Banjul * `Africa/Bissau` - Africa/Bissau * `Africa/Blantyre` - Africa/Blantyre * `Africa/Brazzaville` - Africa/Brazzaville * `Africa/Bujumbura` - Africa/Bujumbura * `Africa/Cairo` - Africa/Cairo * `Africa/Casablanca` - Africa/Casablanca * `Africa/Ceuta` - Africa/Ceuta * `Africa/Conakry` - Africa/Conakry * `Africa/Dakar` - Africa/Dakar * `Africa/Dar_es_Salaam` - Africa/Dar_es_Salaam * `Africa/Djibouti` - Africa/Djibouti * `Africa/Douala` - Africa/Douala * `Africa/El_Aaiun` - Africa/El_Aaiun * `Africa/Freetown` - Africa/Freetown * `Africa/Gaborone` - Africa/Gaborone * `Africa/Harare` - Africa/Harare * `Africa/Johannesburg` - Africa/Johannesburg * `Africa/Juba` - Africa/Juba * `Africa/Kampala` - Africa/Kampala * `Africa/Khartoum` - Africa/Khartoum * `Africa/Kigali` - Africa/Kigali * `Africa/Kinshasa` - Africa/Kinshasa * `Africa/Lagos` - Africa/Lagos * `Africa/Libreville` - Africa/Libreville * `Africa/Lome` - Africa/Lome * `Africa/Luanda` - Africa/Luanda * `Africa/Lubumbashi` - Africa/Lubumbashi * `Africa/Lusaka` - Africa/Lusaka * `Africa/Malabo` - Africa/Malabo * `Africa/Maputo` - Africa/Maputo * `Africa/Maseru` - Africa/Maseru * `Africa/Mbabane` - Africa/Mbabane * `Africa/Mogadishu` - Africa/Mogadishu * `Africa/Monrovia` - Africa/Monrovia * `Africa/Nairobi` - Africa/Nairobi * `Africa/Ndjamena` - Africa/Ndjamena * `Africa/Niamey` - Africa/Niamey * `Africa/Nouakchott` - Africa/Nouakchott * `Africa/Ouagadougou` - Africa/Ouagadougou * `Africa/Porto-Novo` - Africa/Porto-Novo * `Africa/Sao_Tome` - Africa/Sao_Tome * `Africa/Tripoli` - Africa/Tripoli * `Africa/Tunis` - Africa/Tunis * `Africa/Windhoek` - Africa/Windhoek * `America/Adak` - America/Adak * `America/Anchorage` - America/Anchorage * `America/Anguilla` - America/Anguilla * `America/Antigua` - America/Antigua * `America/Araguaina` - America/Araguaina * `America/Argentina/Buenos_Aires` - America/Argentina/Buenos_Aires * `America/Argentina/Catamarca` - America/Argentina/Catamarca * `America/Argentina/Cordoba` - America/Argentina/Cordoba * `America/Argentina/Jujuy` - America/Argentina/Jujuy * `America/Argentina/La_Rioja` - America/Argentina/La_Rioja * `America/Argentina/Mendoza` - America/Argentina/Mendoza * `America/Argentina/Rio_Gallegos` - America/Argentina/Rio_Gallegos * `America/Argentina/Salta` - America/Argentina/Salta * `America/Argentina/San_Juan` - America/Argentina/San_Juan * `America/Argentina/San_Luis` - America/Argentina/San_Luis * `America/Argentina/Tucuman` - America/Argentina/Tucuman * `America/Argentina/Ushuaia` - America/Argentina/Ushuaia * `America/Aruba` - America/Aruba * `America/Asuncion` - America/Asuncion * `America/Atikokan` - America/Atikokan * `America/Bahia` - America/Bahia * `America/Bahia_Banderas` - America/Bahia_Banderas * `America/Barbados` - America/Barbados * `America/Belem` - America/Belem * `America/Belize` - America/Belize * `America/Blanc-Sablon` - America/Blanc-Sablon * `America/Boa_Vista` - America/Boa_Vista * `America/Bogota` - America/Bogota * `America/Boise` - America/Boise * `America/Cambridge_Bay` - America/Cambridge_Bay * `America/Campo_Grande` - America/Campo_Grande * `America/Cancun` - America/Cancun * `America/Caracas` - America/Caracas * `America/Cayenne` - America/Cayenne * `America/Cayman` - America/Cayman * `America/Chicago` - America/Chicago * `America/Chihuahua` - America/Chihuahua * `America/Ciudad_Juarez` - America/Ciudad_Juarez * `America/Costa_Rica` - America/Costa_Rica * `America/Coyhaique` - America/Coyhaique * `America/Creston` - America/Creston * `America/Cuiaba` - America/Cuiaba * `America/Curacao` - America/Curacao * `America/Danmarkshavn` - America/Danmarkshavn * `America/Dawson` - America/Dawson * `America/Dawson_Creek` - America/Dawson_Creek * `America/Denver` - America/Denver * `America/Detroit` - America/Detroit * `America/Dominica` - America/Dominica * `America/Edmonton` - America/Edmonton * `America/Eirunepe` - America/Eirunepe * `America/El_Salvador` - America/El_Salvador * `America/Fort_Nelson` - America/Fort_Nelson * `America/Fortaleza` - America/Fortaleza * `America/Glace_Bay` - America/Glace_Bay * `America/Goose_Bay` - America/Goose_Bay * `America/Grand_Turk` - America/Grand_Turk * `America/Grenada` - America/Grenada * `America/Guadeloupe` - America/Guadeloupe * `America/Guatemala` - America/Guatemala * `America/Guayaquil` - America/Guayaquil * `America/Guyana` - America/Guyana * `America/Halifax` - America/Halifax * `America/Havana` - America/Havana * `America/Hermosillo` - America/Hermosillo * `America/Indiana/Indianapolis` - America/Indiana/Indianapolis * `America/Indiana/Knox` - America/Indiana/Knox * `America/Indiana/Marengo` - America/Indiana/Marengo * `America/Indiana/Petersburg` - America/Indiana/Petersburg * `America/Indiana/Tell_City` - America/Indiana/Tell_City * `America/Indiana/Vevay` - America/Indiana/Vevay * `America/Indiana/Vincennes` - America/Indiana/Vincennes * `America/Indiana/Winamac` - America/Indiana/Winamac * `America/Inuvik` - America/Inuvik * `America/Iqaluit` - America/Iqaluit * `America/Jamaica` - America/Jamaica * `America/Juneau` - America/Juneau * `America/Kentucky/Louisville` - America/Kentucky/Louisville * `America/Kentucky/Monticello` - America/Kentucky/Monticello * `America/Kralendijk` - America/Kralendijk * `America/La_Paz` - America/La_Paz * `America/Lima` - America/Lima * `America/Los_Angeles` - America/Los_Angeles * `America/Lower_Princes` - America/Lower_Princes * `America/Maceio` - America/Maceio * `America/Managua` - America/Managua * `America/Manaus` - America/Manaus * `America/Marigot` - America/Marigot * `America/Martinique` - America/Martinique * `America/Matamoros` - America/Matamoros * `America/Mazatlan` - America/Mazatlan * `America/Menominee` - America/Menominee * `America/Merida` - America/Merida * `America/Metlakatla` - America/Metlakatla * `America/Mexico_City` - America/Mexico_City * `America/Miquelon` - America/Miquelon * `America/Moncton` - America/Moncton * `America/Monterrey` - America/Monterrey * `America/Montevideo` - America/Montevideo * `America/Montserrat` - America/Montserrat * `America/Nassau` - America/Nassau * `America/New_York` - America/New_York * `America/Nome` - America/Nome * `America/Noronha` - America/Noronha * `America/North_Dakota/Beulah` - America/North_Dakota/Beulah * `America/North_Dakota/Center` - America/North_Dakota/Center * `America/North_Dakota/New_Salem` - America/North_Dakota/New_Salem * `America/Nuuk` - America/Nuuk * `America/Ojinaga` - America/Ojinaga * `America/Panama` - America/Panama * `America/Paramaribo` - America/Paramaribo * `America/Phoenix` - America/Phoenix * `America/Port-au-Prince` - America/Port-au-Prince * `America/Port_of_Spain` - America/Port_of_Spain * `America/Porto_Velho` - America/Porto_Velho * `America/Puerto_Rico` - America/Puerto_Rico * `America/Punta_Arenas` - America/Punta_Arenas * `America/Rankin_Inlet` - America/Rankin_Inlet * `America/Recife` - America/Recife * `America/Regina` - America/Regina * `America/Resolute` - America/Resolute * `America/Rio_Branco` - America/Rio_Branco * `America/Santarem` - America/Santarem * `America/Santiago` - America/Santiago * `America/Santo_Domingo` - America/Santo_Domingo * `America/Sao_Paulo` - America/Sao_Paulo * `America/Scoresbysund` - America/Scoresbysund * `America/Sitka` - America/Sitka * `America/St_Barthelemy` - America/St_Barthelemy * `America/St_Johns` - America/St_Johns * `America/St_Kitts` - America/St_Kitts * `America/St_Lucia` - America/St_Lucia * `America/St_Thomas` - America/St_Thomas * `America/St_Vincent` - America/St_Vincent * `America/Swift_Current` - America/Swift_Current * `America/Tegucigalpa` - America/Tegucigalpa * `America/Thule` - America/Thule * `America/Tijuana` - America/Tijuana * `America/Toronto` - America/Toronto * `America/Tortola` - America/Tortola * `America/Vancouver` - America/Vancouver * `America/Whitehorse` - America/Whitehorse * `America/Winnipeg` - America/Winnipeg * `America/Yakutat` - America/Yakutat * `Antarctica/Casey` - Antarctica/Casey * `Antarctica/Davis` - Antarctica/Davis * `Antarctica/DumontDUrville` - Antarctica/DumontDUrville * `Antarctica/Macquarie` - Antarctica/Macquarie * `Antarctica/Mawson` - Antarctica/Mawson * `Antarctica/McMurdo` - Antarctica/McMurdo * `Antarctica/Palmer` - Antarctica/Palmer * `Antarctica/Rothera` - Antarctica/Rothera * `Antarctica/Syowa` - Antarctica/Syowa * `Antarctica/Troll` - Antarctica/Troll * `Antarctica/Vostok` - Antarctica/Vostok * `Arctic/Longyearbyen` - Arctic/Longyearbyen * `Asia/Aden` - Asia/Aden * `Asia/Almaty` - Asia/Almaty * `Asia/Amman` - Asia/Amman * `Asia/Anadyr` - Asia/Anadyr * `Asia/Aqtau` - Asia/Aqtau * `Asia/Aqtobe` - Asia/Aqtobe * `Asia/Ashgabat` - Asia/Ashgabat * `Asia/Atyrau` - Asia/Atyrau * `Asia/Baghdad` - Asia/Baghdad * `Asia/Bahrain` - Asia/Bahrain * `Asia/Baku` - Asia/Baku * `Asia/Bangkok` - Asia/Bangkok * `Asia/Barnaul` - Asia/Barnaul * `Asia/Beirut` - Asia/Beirut * `Asia/Bishkek` - Asia/Bishkek * `Asia/Brunei` - Asia/Brunei * `Asia/Chita` - Asia/Chita * `Asia/Colombo` - Asia/Colombo * `Asia/Damascus` - Asia/Damascus * `Asia/Dhaka` - Asia/Dhaka * `Asia/Dili` - Asia/Dili * `Asia/Dubai` - Asia/Dubai * `Asia/Dushanbe` - Asia/Dushanbe * `Asia/Famagusta` - Asia/Famagusta * `Asia/Gaza` - Asia/Gaza * `Asia/Hebron` - Asia/Hebron * `Asia/Ho_Chi_Minh` - Asia/Ho_Chi_Minh * `Asia/Hong_Kong` - Asia/Hong_Kong * `Asia/Hovd` - Asia/Hovd * `Asia/Irkutsk` - Asia/Irkutsk * `Asia/Jakarta` - Asia/Jakarta * `Asia/Jayapura` - Asia/Jayapura * `Asia/Jerusalem` - Asia/Jerusalem * `Asia/Kabul` - Asia/Kabul * `Asia/Kamchatka` - Asia/Kamchatka * `Asia/Karachi` - Asia/Karachi * `Asia/Kathmandu` - Asia/Kathmandu * `Asia/Khandyga` - Asia/Khandyga * `Asia/Kolkata` - Asia/Kolkata * `Asia/Krasnoyarsk` - Asia/Krasnoyarsk * `Asia/Kuala_Lumpur` - Asia/Kuala_Lumpur * `Asia/Kuching` - Asia/Kuching * `Asia/Kuwait` - Asia/Kuwait * `Asia/Macau` - Asia/Macau * `Asia/Magadan` - Asia/Magadan * `Asia/Makassar` - Asia/Makassar * `Asia/Manila` - Asia/Manila * `Asia/Muscat` - Asia/Muscat * `Asia/Nicosia` - Asia/Nicosia * `Asia/Novokuznetsk` - Asia/Novokuznetsk * `Asia/Novosibirsk` - Asia/Novosibirsk * `Asia/Omsk` - Asia/Omsk * `Asia/Oral` - Asia/Oral * `Asia/Phnom_Penh` - Asia/Phnom_Penh * `Asia/Pontianak` - Asia/Pontianak * `Asia/Pyongyang` - Asia/Pyongyang * `Asia/Qatar` - Asia/Qatar * `Asia/Qostanay` - Asia/Qostanay * `Asia/Qyzylorda` - Asia/Qyzylorda * `Asia/Riyadh` - Asia/Riyadh * `Asia/Sakhalin` - Asia/Sakhalin * `Asia/Samarkand` - Asia/Samarkand * `Asia/Seoul` - Asia/Seoul * `Asia/Shanghai` - Asia/Shanghai * `Asia/Singapore` - Asia/Singapore * `Asia/Srednekolymsk` - Asia/Srednekolymsk * `Asia/Taipei` - Asia/Taipei * `Asia/Tashkent` - Asia/Tashkent * `Asia/Tbilisi` - Asia/Tbilisi * `Asia/Tehran` - Asia/Tehran * `Asia/Thimphu` - Asia/Thimphu * `Asia/Tokyo` - Asia/Tokyo * `Asia/Tomsk` - Asia/Tomsk * `Asia/Ulaanbaatar` - Asia/Ulaanbaatar * `Asia/Urumqi` - Asia/Urumqi * `Asia/Ust-Nera` - Asia/Ust-Nera * `Asia/Vientiane` - Asia/Vientiane * `Asia/Vladivostok` - Asia/Vladivostok * `Asia/Yakutsk` - Asia/Yakutsk * `Asia/Yangon` - Asia/Yangon * `Asia/Yekaterinburg` - Asia/Yekaterinburg * `Asia/Yerevan` - Asia/Yerevan * `Atlantic/Azores` - Atlantic/Azores * `Atlantic/Bermuda` - Atlantic/Bermuda * `Atlantic/Canary` - Atlantic/Canary * `Atlantic/Cape_Verde` - Atlantic/Cape_Verde * `Atlantic/Faroe` - Atlantic/Faroe * `Atlantic/Madeira` - Atlantic/Madeira * `Atlantic/Reykjavik` - Atlantic/Reykjavik * `Atlantic/South_Georgia` - Atlantic/South_Georgia * `Atlantic/St_Helena` - Atlantic/St_Helena * `Atlantic/Stanley` - Atlantic/Stanley * `Australia/Adelaide` - Australia/Adelaide * `Australia/Brisbane` - Australia/Brisbane * `Australia/Broken_Hill` - Australia/Broken_Hill * `Australia/Darwin` - Australia/Darwin * `Australia/Eucla` - Australia/Eucla * `Australia/Hobart` - Australia/Hobart * `Australia/Lindeman` - Australia/Lindeman * `Australia/Lord_Howe` - Australia/Lord_Howe * `Australia/Melbourne` - Australia/Melbourne * `Australia/Perth` - Australia/Perth * `Australia/Sydney` - Australia/Sydney * `Europe/Amsterdam` - Europe/Amsterdam * `Europe/Andorra` - Europe/Andorra * `Europe/Astrakhan` - Europe/Astrakhan * `Europe/Athens` - Europe/Athens * `Europe/Belgrade` - Europe/Belgrade * `Europe/Berlin` - Europe/Berlin * `Europe/Bratislava` - Europe/Bratislava * `Europe/Brussels` - Europe/Brussels * `Europe/Bucharest` - Europe/Bucharest * `Europe/Budapest` - Europe/Budapest * `Europe/Busingen` - Europe/Busingen * `Europe/Chisinau` - Europe/Chisinau * `Europe/Copenhagen` - Europe/Copenhagen * `Europe/Dublin` - Europe/Dublin * `Europe/Gibraltar` - Europe/Gibraltar * `Europe/Guernsey` - Europe/Guernsey * `Europe/Helsinki` - Europe/Helsinki * `Europe/Isle_of_Man` - Europe/Isle_of_Man * `Europe/Istanbul` - Europe/Istanbul * `Europe/Jersey` - Europe/Jersey * `Europe/Kaliningrad` - Europe/Kaliningrad * `Europe/Kirov` - Europe/Kirov * `Europe/Kyiv` - Europe/Kyiv * `Europe/Lisbon` - Europe/Lisbon * `Europe/Ljubljana` - Europe/Ljubljana * `Europe/London` - Europe/London * `Europe/Luxembourg` - Europe/Luxembourg * `Europe/Madrid` - Europe/Madrid * `Europe/Malta` - Europe/Malta * `Europe/Mariehamn` - Europe/Mariehamn * `Europe/Minsk` - Europe/Minsk * `Europe/Monaco` - Europe/Monaco * `Europe/Moscow` - Europe/Moscow * `Europe/Oslo` - Europe/Oslo * `Europe/Paris` - Europe/Paris * `Europe/Podgorica` - Europe/Podgorica * `Europe/Prague` - Europe/Prague * `Europe/Riga` - Europe/Riga * `Europe/Rome` - Europe/Rome * `Europe/Samara` - Europe/Samara * `Europe/San_Marino` - Europe/San_Marino * `Europe/Sarajevo` - Europe/Sarajevo * `Europe/Saratov` - Europe/Saratov * `Europe/Simferopol` - Europe/Simferopol * `Europe/Skopje` - Europe/Skopje * `Europe/Sofia` - Europe/Sofia * `Europe/Stockholm` - Europe/Stockholm * `Europe/Tallinn` - Europe/Tallinn * `Europe/Tirane` - Europe/Tirane * `Europe/Ulyanovsk` - Europe/Ulyanovsk * `Europe/Vaduz` - Europe/Vaduz * `Europe/Vatican` - Europe/Vatican * `Europe/Vienna` - Europe/Vienna * `Europe/Vilnius` - Europe/Vilnius * `Europe/Volgograd` - Europe/Volgograd * `Europe/Warsaw` - Europe/Warsaw * `Europe/Zagreb` - Europe/Zagreb * `Europe/Zurich` - Europe/Zurich * `GMT` - GMT * `Indian/Antananarivo` - Indian/Antananarivo * `Indian/Chagos` - Indian/Chagos * `Indian/Christmas` - Indian/Christmas * `Indian/Cocos` - Indian/Cocos * `Indian/Comoro` - Indian/Comoro * `Indian/Kerguelen` - Indian/Kerguelen * `Indian/Mahe` - Indian/Mahe * `Indian/Maldives` - Indian/Maldives * `Indian/Mauritius` - Indian/Mauritius * `Indian/Mayotte` - Indian/Mayotte * `Indian/Reunion` - Indian/Reunion * `Pacific/Apia` - Pacific/Apia * `Pacific/Auckland` - Pacific/Auckland * `Pacific/Bougainville` - Pacific/Bougainville * `Pacific/Chatham` - Pacific/Chatham * `Pacific/Chuuk` - Pacific/Chuuk * `Pacific/Easter` - Pacific/Easter * `Pacific/Efate` - Pacific/Efate * `Pacific/Fakaofo` - Pacific/Fakaofo * `Pacific/Fiji` - Pacific/Fiji * `Pacific/Funafuti` - Pacific/Funafuti * `Pacific/Galapagos` - Pacific/Galapagos * `Pacific/Gambier` - Pacific/Gambier * `Pacific/Guadalcanal` - Pacific/Guadalcanal * `Pacific/Guam` - Pacific/Guam * `Pacific/Honolulu` - Pacific/Honolulu * `Pacific/Kanton` - Pacific/Kanton * `Pacific/Kiritimati` - Pacific/Kiritimati * `Pacific/Kosrae` - Pacific/Kosrae * `Pacific/Kwajalein` - Pacific/Kwajalein * `Pacific/Majuro` - Pacific/Majuro * `Pacific/Marquesas` - Pacific/Marquesas * `Pacific/Midway` - Pacific/Midway * `Pacific/Nauru` - Pacific/Nauru * `Pacific/Niue` - Pacific/Niue * `Pacific/Norfolk` - Pacific/Norfolk * `Pacific/Noumea` - Pacific/Noumea * `Pacific/Pago_Pago` - Pacific/Pago_Pago * `Pacific/Palau` - Pacific/Palau * `Pacific/Pitcairn` - Pacific/Pitcairn * `Pacific/Pohnpei` - Pacific/Pohnpei * `Pacific/Port_Moresby` - Pacific/Port_Moresby * `Pacific/Rarotonga` - Pacific/Rarotonga * `Pacific/Saipan` - Pacific/Saipan * `Pacific/Tahiti` - Pacific/Tahiti * `Pacific/Tarawa` - Pacific/Tarawa * `Pacific/Tongatapu` - Pacific/Tongatapu * `Pacific/Wake` - Pacific/Wake * `Pacific/Wallis` - Pacific/Wallis * `UTC` - UTC Location: type: object description: |- Location information serializer. Provides location details including: - Basic location information - Client and division relationships - Custom field values properties: id: type: integer readOnly: true client: type: integer client_name: type: string readOnly: true division: type: integer division_name: type: string readOnly: true site_name: type: string maxLength: 255 address: type: string state: type: string maxLength: 100 country: type: string maxLength: 100 custom_field_values: type: array items: $ref: '#/components/schemas/LocationCustomFieldValue' readOnly: true created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - address - client - client_name - country - created_date - custom_field_values - division - division_name - id - modified_date - site_name - state LocationCustomFieldValue: type: object description: |- Custom field value serializer. Provides dynamic field values with type-aware serialization. properties: field_name: type: string readOnly: true field_type: type: string readOnly: true value: type: string readOnly: true required: - field_name - field_type - value LocationRequest: type: object description: |- Location information serializer. Provides location details including: - Basic location information - Client and division relationships - Custom field values properties: client: type: integer division: type: integer site_name: type: string minLength: 1 maxLength: 255 address: type: string minLength: 1 state: type: string minLength: 1 maxLength: 100 country: type: string minLength: 1 maxLength: 100 required: - address - client - country - division - site_name - state LocationSet: type: object description: |- Location set information serializer with automatic version numbering. Provides location set details including: - Automatically assigned version number (integer) - Version metadata and creation date - Custom field definitions - Location count and aggregations Version Numbering: - Version numbers are automatically assigned as sequential integers (1, 2, 3, etc.) - Version field is read-only and cannot be manually set - Versions are unique within each location tool - Proper numerical sorting is supported (1, 2, 10 not 1, 10, 2) properties: id: type: integer readOnly: true version: type: integer readOnly: true description: Automatically assigned sequential version number (1, 2, 3, etc.) name: type: string description: Display name for this version (automatically generated) maxLength: 255 description: type: string description: Optional description of this version is_active: type: boolean description: Whether this version is active location_count: type: string readOnly: true custom_field_definitions: type: array items: $ref: '#/components/schemas/CustomFieldDefinition' readOnly: true count_field_aggregations: type: string readOnly: true created_date: type: string format: date-time readOnly: true description: When this version was created required: - count_field_aggregations - created_date - custom_field_definitions - id - location_count - name - version LocationSetRequest: type: object description: |- Location set information serializer with automatic version numbering. Provides location set details including: - Automatically assigned version number (integer) - Version metadata and creation date - Custom field definitions - Location count and aggregations Version Numbering: - Version numbers are automatically assigned as sequential integers (1, 2, 3, etc.) - Version field is read-only and cannot be manually set - Versions are unique within each location tool - Proper numerical sorting is supported (1, 2, 10 not 1, 10, 2) properties: name: type: string minLength: 1 description: Display name for this version (automatically generated) maxLength: 255 description: type: string description: Optional description of this version is_active: type: boolean description: Whether this version is active required: - name LocationTableSource: type: object description: |- Location table source configuration serializer. Provides table source configuration including: - Field selection settings - Schema generation - Data access information properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string include_client: type: boolean include_division: type: boolean include_site_name: type: boolean include_address: type: boolean include_state: type: boolean include_country: type: boolean selected_custom_fields: type: array items: type: integer schema: type: string readOnly: true data_preview: type: string readOnly: true created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - created_date - data_preview - id - modified_date - name - schema LocationTableSourceRequest: type: object description: |- Location table source configuration serializer. Provides table source configuration including: - Field selection settings - Schema generation - Data access information properties: name: type: string minLength: 1 maxLength: 255 description: type: string include_client: type: boolean include_division: type: boolean include_site_name: type: boolean include_address: type: boolean include_state: type: boolean include_country: type: boolean selected_custom_fields: type: array items: type: integer required: - name MediaCollection: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string items: type: array items: $ref: '#/components/schemas/MediaItem' readOnly: true item_count: type: string readOnly: true required: - id - item_count - items - name MediaCollectionRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string required: - name MediaItem: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 file: type: string format: uri pattern: (?:jpg|jpeg|png|gif|svg|emf|pdf|docx|xlsx|pptx)$ file_url: type: string readOnly: true preview_url: type: string readOnly: true file_size: type: integer readOnly: true nullable: true description: File size in bytes size_mb: type: string readOnly: true mime_type: type: string readOnly: true type: $ref: '#/components/schemas/MediaItemTypeEnum' description: type: string tags: type: string description: Comma-separated tags for searching maxLength: 500 tag_list: type: string readOnly: true rating: type: integer maximum: 5 minimum: 0 description: Star rating 0-5 is_logo: type: boolean created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - created_date - file - file_size - file_url - id - mime_type - modified_date - name - preview_url - size_mb - tag_list MediaItemRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 file: type: string format: binary pattern: (?:jpg|jpeg|png|gif|svg|emf|pdf|docx|xlsx|pptx)$ type: $ref: '#/components/schemas/MediaItemTypeEnum' description: type: string tags: type: string description: Comma-separated tags for searching maxLength: 500 rating: type: integer maximum: 5 minimum: 0 description: Star rating 0-5 is_logo: type: boolean required: - file - name MediaItemTypeEnum: enum: - image - document - presentation - spreadsheet - logo - contact type: string description: |- * `image` - Image * `document` - Document * `presentation` - Presentation * `spreadsheet` - Spreadsheet * `logo` - Logo * `contact` - Contact Milestone: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 date: type: string format: date status: $ref: '#/components/schemas/MilestoneStatusEnum' milestone_type: $ref: '#/components/schemas/MilestoneTypeEnum' priority: $ref: '#/components/schemas/MilestonePriorityEnum' progress: type: integer maximum: 2147483647 minimum: -2147483648 description: Completion percentage (0-100) assignee: type: integer nullable: true assignee_name: type: string readOnly: true acceptance_criteria: type: string description: Define what needs to be completed for this milestone weeks_from_reference: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true reference_milestone: type: integer nullable: true order: type: integer maximum: 2147483647 minimum: -2147483648 is_completed: type: string readOnly: true is_today: type: string readOnly: true status_color: type: string readOnly: true required: - assignee_name - date - id - is_completed - is_today - name - order - status_color MilestonePriorityEnum: enum: - high - medium - low type: string description: |- * `high` - High * `medium` - Medium * `low` - Low MilestoneRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 date: type: string format: date status: $ref: '#/components/schemas/MilestoneStatusEnum' milestone_type: $ref: '#/components/schemas/MilestoneTypeEnum' priority: $ref: '#/components/schemas/MilestonePriorityEnum' progress: type: integer maximum: 2147483647 minimum: -2147483648 description: Completion percentage (0-100) assignee: type: integer nullable: true acceptance_criteria: type: string description: Define what needs to be completed for this milestone weeks_from_reference: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true reference_milestone: type: integer nullable: true order: type: integer maximum: 2147483647 minimum: -2147483648 required: - date - name - order MilestoneStatusEnum: enum: - not_started - in_progress - completed - overdue - on_hold type: string description: |- * `not_started` - Not Started * `in_progress` - In Progress * `completed` - Completed * `overdue` - Overdue * `on_hold` - On Hold MilestoneTypeEnum: enum: - deliverable - review - decision - checkpoint - other type: string description: |- * `deliverable` - Deliverable * `review` - Review * `decision` - Decision Point * `checkpoint` - Checkpoint * `other` - Other NullEnum: enum: - null OperationEnum: enum: - delete - update_state - update_country - export type: string description: |- * `delete` - Delete * `update_state` - Update State * `update_country` - Update Country * `export` - Export Opportunity: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string notes: type: string description: Opportunity notes and details with URL support stage: $ref: '#/components/schemas/StageEnum' status: $ref: '#/components/schemas/OpportunityStatusEnum' is_rfp: type: boolean title: Is this an RFP? description: Check if this opportunity involves an RFP process client: allOf: - $ref: '#/components/schemas/Client' readOnly: true competitors: type: array items: $ref: '#/components/schemas/Vendor' readOnly: true incumbent_vendor: allOf: - $ref: '#/components/schemas/Vendor' readOnly: true one_time_revenue: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ annual_revenue: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ one_time_margin: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ annual_margin: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ term_years: allOf: - $ref: '#/components/schemas/TermYearsEnum' description: |- Contract term in years * `1` - 1 Year * `2` - 2 Years * `3` - 3 Years * `4` - 4 Years * `5` - 5 Years minimum: -2147483648 maximum: 2147483647 currency: type: string readOnly: true value: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ expected_close_date: type: string format: date nullable: true close_date: type: string format: date nullable: true deal_registered: type: boolean description: Has this deal been registered with the vendor? registered_vendor: allOf: - $ref: '#/components/schemas/Vendor' readOnly: true deal_registration_name: type: string description: Deal registration identifier or name maxLength: 255 deal_registration_url: type: string format: uri description: Link to deal registration portal or details maxLength: 200 deal_registration_date: type: string format: date nullable: true description: Date the deal was registered with vendor deal_registration_expiry: type: string format: date nullable: true description: Expiration date for deal registration deal_registration_amount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ description: Monetary value of the deal registration opportunity_identified_date: type: string format: date nullable: true description: Date when opportunity was first identified rfp_release_date: type: string format: date nullable: true description: Date RFP was officially released rfp_vendor_info_session_datetime: type: string format: date-time nullable: true description: RFP vendor information session date and time rfp_vendor_questions_due_datetime: type: string format: date-time nullable: true description: Deadline for vendors to submit questions rfp_due_datetime: type: string format: date-time nullable: true description: RFP submission deadline rfp_presentation_datetime: type: string format: date-time nullable: true description: RFP presentation date and time rfp_award_announcement_date: type: string format: date nullable: true description: Date RFP award will be announced required: - client - competitors - currency - id - incumbent_vendor - name - registered_vendor - stage - status OpportunityRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string notes: type: string minLength: 1 description: Opportunity notes and details with URL support stage: $ref: '#/components/schemas/StageEnum' status: $ref: '#/components/schemas/OpportunityStatusEnum' is_rfp: type: boolean title: Is this an RFP? description: Check if this opportunity involves an RFP process client_id: type: integer writeOnly: true primary_vendor_solution_id: type: integer writeOnly: true competitor_ids: type: array items: type: integer writeOnly: true description: List of competitor vendor IDs incumbent_vendor_id: type: integer writeOnly: true description: Incumbent vendor ID one_time_revenue: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ annual_revenue: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ one_time_margin: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ annual_margin: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ term_years: allOf: - $ref: '#/components/schemas/TermYearsEnum' description: |- Contract term in years * `1` - 1 Year * `2` - 2 Years * `3` - 3 Years * `4` - 4 Years * `5` - 5 Years minimum: -2147483648 maximum: 2147483647 currency_id: type: string writeOnly: true minLength: 1 description: Currency code (e.g., USD, EUR) value: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ expected_close_date: type: string format: date nullable: true close_date: type: string format: date nullable: true deal_registered: type: boolean description: Has this deal been registered with the vendor? registered_vendor_id: type: integer writeOnly: true description: Registered vendor ID deal_registration_name: type: string description: Deal registration identifier or name maxLength: 255 deal_registration_url: type: string format: uri description: Link to deal registration portal or details maxLength: 200 deal_registration_date: type: string format: date nullable: true description: Date the deal was registered with vendor deal_registration_expiry: type: string format: date nullable: true description: Expiration date for deal registration deal_registration_amount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ description: Monetary value of the deal registration opportunity_identified_date: type: string format: date nullable: true description: Date when opportunity was first identified rfp_release_date: type: string format: date nullable: true description: Date RFP was officially released rfp_vendor_info_session_datetime: type: string format: date-time nullable: true description: RFP vendor information session date and time rfp_vendor_questions_due_datetime: type: string format: date-time nullable: true description: Deadline for vendors to submit questions rfp_due_datetime: type: string format: date-time nullable: true description: RFP submission deadline rfp_presentation_datetime: type: string format: date-time nullable: true description: RFP presentation date and time rfp_award_announcement_date: type: string format: date nullable: true description: Date RFP award will be announced required: - client_id - name - stage - status OpportunityStatusEnum: enum: - Active - Won - Lost - Dropped type: string description: |- * `Active` - Active * `Won` - Won * `Lost` - Lost * `Dropped` - Dropped OrgChart: type: object properties: id: type: integer readOnly: true root_contact: type: integer root_contact_name: type: string readOnly: true depth: type: integer maximum: 2147483647 minimum: -2147483648 include_fields: {} title: type: string maxLength: 255 description: type: string chart_data: type: string readOnly: true required: - chart_data - id - root_contact - root_contact_name - title OrgChartRequest: type: object properties: root_contact: type: integer depth: type: integer maximum: 2147483647 minimum: -2147483648 include_fields: {} title: type: string minLength: 1 maxLength: 255 description: type: string required: - root_contact - title Organization: type: object description: |- Organization information serializer. Provides organization details including: - Basic information (name, type, sector) - Contact and location details - Financial information - Hierarchy relationships properties: id: type: integer readOnly: true name: type: string maxLength: 255 legal_name: type: string maxLength: 255 abbreviated_name: type: string maxLength: 50 type: $ref: '#/components/schemas/OrganizationTypeEnum' sector: nullable: true oneOf: - $ref: '#/components/schemas/SectorEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' country: type: string maxLength: 100 size: $ref: '#/components/schemas/SizeEnum' employee_count: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true revenue: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true assets: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true stock_exchange: type: string nullable: true stock_symbol: type: string nullable: true maxLength: 10 parent_organization: type: integer nullable: true parent_relationship_type: nullable: true description: |- Type of relationship with parent organization * `subsidiary` - True Subsidiary * `controlled_affiliate` - Controlled Affiliate * `wholly_owned` - Wholly-Owned Subsidiary * `branch` - Branch * `agency` - Agency * `ministry` - Ministry/Department * `executive_agency` - Executive Agency * `regulatory_agency` - Regulatory Agency * `soc` - State-Owned Company * `gbe` - Government Business Enterprise oneOf: - $ref: '#/components/schemas/ParentRelationshipTypeEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' has_client_profile: type: string readOnly: true has_vendor_profile: type: string readOnly: true legal_street_address: type: string maxLength: 255 legal_city: type: string maxLength: 100 legal_state: type: string maxLength: 100 legal_country: type: string maxLength: 100 legal_postal_code: type: string maxLength: 20 created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - country - created_date - has_client_profile - has_vendor_profile - id - modified_date - name - size - type OrganizationDivision: type: object description: |- Organization division information serializer. Provides division details including: - Division name, abbreviation, and description - Organizational hierarchy (parent division) - Full hierarchical path - Contact and opportunity counts properties: id: type: integer readOnly: true name: type: string description: Division name (e.g., "IT Department", "Western Region Sales") maxLength: 255 abbreviation: type: string description: Short abbreviation for the division (e.g., "IT", "West") maxLength: 50 description: type: string description: Description of the division's purpose and scope organization: type: integer description: Parent organization this division belongs to organization_name: type: string readOnly: true parent_division: type: integer nullable: true description: Parent division for nested organizational structures parent_division_name: type: string readOnly: true nullable: true full_path: type: string readOnly: true hierarchy_level: type: integer readOnly: true contact_count: type: string readOnly: true opportunity_count: type: string readOnly: true created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - contact_count - created_date - full_path - hierarchy_level - id - modified_date - name - opportunity_count - organization - organization_name - parent_division_name OrganizationDivisionRequest: type: object description: |- Organization division information serializer. Provides division details including: - Division name, abbreviation, and description - Organizational hierarchy (parent division) - Full hierarchical path - Contact and opportunity counts properties: name: type: string minLength: 1 description: Division name (e.g., "IT Department", "Western Region Sales") maxLength: 255 abbreviation: type: string description: Short abbreviation for the division (e.g., "IT", "West") maxLength: 50 description: type: string description: Description of the division's purpose and scope organization: type: integer description: Parent organization this division belongs to parent_division: type: integer nullable: true description: Parent division for nested organizational structures required: - name - organization OrganizationTypeEnum: enum: - For-Profit - Non-Profit - Government - NGO - Educational - Healthcare - Cooperative type: string description: |- * `For-Profit` - For-Profit * `Non-Profit` - Non-Profit * `Government` - Government * `NGO` - NGO * `Educational` - Educational * `Healthcare` - Healthcare * `Cooperative` - Cooperative PaginatedAPIKeyList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/APIKey' PaginatedAdvisorToolList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/AdvisorTool' PaginatedAssumptionList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Assumption' PaginatedBMCList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/BMC' PaginatedBMCTemplateList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/BMCTemplate' PaginatedBMCToolList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/BMCTool' PaginatedCalendarEventList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/CalendarEvent' PaginatedClientList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Client' PaginatedClientLocationToolList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/ClientLocationTool' PaginatedContactList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Contact' PaginatedCurrencyList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Currency' PaginatedCustomFieldDefinitionList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/CustomFieldDefinition' PaginatedDeckList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Deck' PaginatedDeckSlideList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/DeckSlide' PaginatedDependencyList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Dependency' PaginatedDigitalContactList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/DigitalContact' PaginatedDigitalContactTypeList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/DigitalContactType' PaginatedEngagementSummaryList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/EngagementSummary' PaginatedFindingList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Finding' PaginatedFiscalYearList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/FiscalYear' PaginatedInterviewList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Interview' PaginatedIssueList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Issue' PaginatedLocationList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Location' PaginatedLocationSetList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/LocationSet' PaginatedLocationTableSourceList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/LocationTableSource' PaginatedMediaCollectionList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/MediaCollection' PaginatedMediaItemList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/MediaItem' PaginatedMilestoneList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Milestone' PaginatedOpportunityList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Opportunity' PaginatedOrgChartList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/OrgChart' PaginatedOrganizationDivisionList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/OrganizationDivision' PaginatedOrganizationList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Organization' PaginatedPowerPointTemplateList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/PowerPointTemplate' PaginatedPresentationList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Presentation' PaginatedPriceLineItemList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/PriceLineItem' PaginatedPriceVersionList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/PriceVersion' PaginatedPricingToolList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/PricingTool' PaginatedPrincipleList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Principle' PaginatedProposalList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Proposal' PaginatedRAIDToolList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/RAIDTool' PaginatedRecommendationList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Recommendation' PaginatedRequirementList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Requirement' PaginatedRequirementsToolList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/RequirementsTool' PaginatedRiskList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Risk' PaginatedStageList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Stage' PaginatedStakeholderList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Stakeholder' PaginatedStakeholderToolList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/StakeholderTool' PaginatedTEIReportFieldList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/TEIReportField' PaginatedTEIReportList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/TEIReport' PaginatedTEIToolList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/TEITool' PaginatedTableSourceList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/TableSource' PaginatedTagList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Tag' PaginatedTimelineList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Timeline' PaginatedTimelineToolList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/TimelineTool' PaginatedVendorList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Vendor' PaginatedVendorSolutionList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/VendorSolution' PaginatedWorkshopList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=4 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Workshop' ParentRelationshipTypeEnum: enum: - subsidiary - controlled_affiliate - wholly_owned - branch - agency - ministry - executive_agency - regulatory_agency - soc - gbe type: string description: |- * `subsidiary` - True Subsidiary * `controlled_affiliate` - Controlled Affiliate * `wholly_owned` - Wholly-Owned Subsidiary * `branch` - Branch * `agency` - Agency * `ministry` - Ministry/Department * `executive_agency` - Executive Agency * `regulatory_agency` - Regulatory Agency * `soc` - State-Owned Company * `gbe` - Government Business Enterprise PatchedAdvisorToolRequest: type: object description: Serialize an AdvisorTool with computed counts and client/association display fields. properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 proposal: type: integer nullable: true engagement: type: integer nullable: true categories: description: Custom categories for findings and requirements timeframe_short: type: integer maximum: 2147483647 minimum: -2147483648 description: Short timeframe in days timeframe_medium: type: integer maximum: 2147483647 minimum: -2147483648 description: Medium timeframe in days timeframe_long: type: integer maximum: 2147483647 minimum: -2147483648 description: Long timeframe in days PatchedBMCRequest: type: object properties: version: type: integer maximum: 2147483647 minimum: -2147483648 customer_segments: type: string value_propositions: type: string channels: type: string customer_relationships: type: string revenue_streams: type: string key_resources: type: string key_activities: type: string key_partnerships: type: string cost_structure: type: string PatchedBMCTemplateRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string customer_segments: type: string value_propositions: type: string channels: type: string customer_relationships: type: string revenue_streams: type: string key_resources: type: string key_activities: type: string key_partnerships: type: string cost_structure: type: string is_active: type: boolean PatchedBMCToolRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 proposal: type: integer nullable: true engagement: type: integer nullable: true PatchedCalendarEventRequest: type: object properties: title: type: string minLength: 1 maxLength: 255 description: type: string start_time: type: string format: date-time end_time: type: string format: date-time location: type: string maxLength: 255 event_type: $ref: '#/components/schemas/EventTypeEnum' PatchedClientLocationToolRequest: type: object description: |- Client Location Tool serializer with automatic version management. Provides tool information including: - Basic tool metadata - Current version number (automatically managed) - All location sets with automatic version numbering - Table source configuration Automatic Version Management: - current_version field shows the active version number (integer) - location_sets array shows all versions ordered by version number - Version creation is handled by the create_version API endpoint - Version switching is handled by the switch_version API endpoint - All version numbers are automatically assigned and read-only properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 proposal: type: integer nullable: true engagement: type: integer nullable: true PatchedClientRequest: type: object properties: name: type: string legal_name: type: string abbreviated_name: type: string overview: type: string history: type: string services_provided: type: string client_type: type: string vertical: type: string nullable: true stock_exchange: type: string nullable: true stock_symbol: type: string nullable: true employee_count: type: integer nullable: true revenue: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true assets: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true fiscal_year_end: type: string format: date nullable: true contact_center_agent_count: type: integer nullable: true service_desk_agent_count: type: integer nullable: true supervisor_count: type: integer nullable: true location_count: type: integer nullable: true repository_url: type: string PatchedContactRequest: type: object properties: first_name: type: string minLength: 1 maxLength: 100 last_name: type: string minLength: 1 maxLength: 100 job_title: type: string maxLength: 100 email: type: string format: email maxLength: 254 organization_id: type: integer writeOnly: true reports_to: type: integer nullable: true PatchedCustomFieldDefinitionRequest: type: object description: |- Custom field definition serializer. Provides custom field schema information including: - Field name, type, and description - Validation rules and default values - Display order properties: name: type: string minLength: 1 maxLength: 100 field_type: $ref: '#/components/schemas/CustomFieldDefinitionFieldTypeEnum' description: type: string is_required: type: boolean default_value: type: string order: type: integer maximum: 2147483647 minimum: 0 PatchedDeckRequest: type: object properties: presentation: type: integer template: type: integer title: type: string maxLength: 255 subtitle: type: string maxLength: 255 presenter: type: integer nullable: true status: $ref: '#/components/schemas/DeckStatusEnum' date: type: string format: date PatchedDeckSlideRequest: type: object properties: deck: type: integer slide_type: type: string minLength: 1 maxLength: 50 order: type: integer maximum: 2147483647 minimum: -2147483648 content_mapping: {} content1_type: $ref: '#/components/schemas/Content3TypeEnum' content1_image: type: integer nullable: true content1_table: type: integer nullable: true content2_type: $ref: '#/components/schemas/Content3TypeEnum' content2_image: type: integer nullable: true content2_table: type: integer nullable: true content3_type: $ref: '#/components/schemas/Content3TypeEnum' content3_image: type: integer nullable: true content3_table: type: integer nullable: true PatchedDigitalContactRequest: type: object properties: name: type: string minLength: 1 maxLength: 100 contact_type_id: type: integer writeOnly: true url: type: string minLength: 1 maxLength: 500 notes: type: string client: type: integer nullable: true vendor: type: integer nullable: true PatchedEngagementRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 client_id: type: integer writeOnly: true opportunity_id: type: integer writeOnly: true start_date: type: string format: date end_date: type: string format: date status: $ref: '#/components/schemas/Status557Enum' description: type: string PatchedFindingRequest: type: object description: Serialize all Finding fields for read and write. properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 source: $ref: '#/components/schemas/SourceEnum' source_detail: type: string maxLength: 255 category: type: string maxLength: 100 impact_level: $ref: '#/components/schemas/ImpactLevelEnum' impact_description: type: string minLength: 1 PatchedInterviewRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 contact_id: type: integer writeOnly: true date: type: string format: date time: type: string format: time notes: type: string PatchedLocationRequest: type: object description: |- Location information serializer. Provides location details including: - Basic location information - Client and division relationships - Custom field values properties: client: type: integer division: type: integer site_name: type: string minLength: 1 maxLength: 255 address: type: string minLength: 1 state: type: string minLength: 1 maxLength: 100 country: type: string minLength: 1 maxLength: 100 PatchedLocationSetRequest: type: object description: |- Location set information serializer with automatic version numbering. Provides location set details including: - Automatically assigned version number (integer) - Version metadata and creation date - Custom field definitions - Location count and aggregations Version Numbering: - Version numbers are automatically assigned as sequential integers (1, 2, 3, etc.) - Version field is read-only and cannot be manually set - Versions are unique within each location tool - Proper numerical sorting is supported (1, 2, 10 not 1, 10, 2) properties: name: type: string minLength: 1 description: Display name for this version (automatically generated) maxLength: 255 description: type: string description: Optional description of this version is_active: type: boolean description: Whether this version is active PatchedLocationTableSourceRequest: type: object description: |- Location table source configuration serializer. Provides table source configuration including: - Field selection settings - Schema generation - Data access information properties: name: type: string minLength: 1 maxLength: 255 description: type: string include_client: type: boolean include_division: type: boolean include_site_name: type: boolean include_address: type: boolean include_state: type: boolean include_country: type: boolean selected_custom_fields: type: array items: type: integer PatchedMediaCollectionRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string PatchedMediaItemRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 file: type: string format: binary pattern: (?:jpg|jpeg|png|gif|svg|emf|pdf|docx|xlsx|pptx)$ type: $ref: '#/components/schemas/MediaItemTypeEnum' description: type: string tags: type: string description: Comma-separated tags for searching maxLength: 500 rating: type: integer maximum: 5 minimum: 0 description: Star rating 0-5 is_logo: type: boolean PatchedMilestoneRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 date: type: string format: date status: $ref: '#/components/schemas/MilestoneStatusEnum' milestone_type: $ref: '#/components/schemas/MilestoneTypeEnum' priority: $ref: '#/components/schemas/MilestonePriorityEnum' progress: type: integer maximum: 2147483647 minimum: -2147483648 description: Completion percentage (0-100) assignee: type: integer nullable: true acceptance_criteria: type: string description: Define what needs to be completed for this milestone weeks_from_reference: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true reference_milestone: type: integer nullable: true order: type: integer maximum: 2147483647 minimum: -2147483648 PatchedOpportunityRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string notes: type: string minLength: 1 description: Opportunity notes and details with URL support stage: $ref: '#/components/schemas/StageEnum' status: $ref: '#/components/schemas/OpportunityStatusEnum' is_rfp: type: boolean title: Is this an RFP? description: Check if this opportunity involves an RFP process client_id: type: integer writeOnly: true primary_vendor_solution_id: type: integer writeOnly: true competitor_ids: type: array items: type: integer writeOnly: true description: List of competitor vendor IDs incumbent_vendor_id: type: integer writeOnly: true description: Incumbent vendor ID one_time_revenue: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ annual_revenue: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ one_time_margin: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ annual_margin: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ term_years: allOf: - $ref: '#/components/schemas/TermYearsEnum' description: |- Contract term in years * `1` - 1 Year * `2` - 2 Years * `3` - 3 Years * `4` - 4 Years * `5` - 5 Years minimum: -2147483648 maximum: 2147483647 currency_id: type: string writeOnly: true minLength: 1 description: Currency code (e.g., USD, EUR) value: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ expected_close_date: type: string format: date nullable: true close_date: type: string format: date nullable: true deal_registered: type: boolean description: Has this deal been registered with the vendor? registered_vendor_id: type: integer writeOnly: true description: Registered vendor ID deal_registration_name: type: string description: Deal registration identifier or name maxLength: 255 deal_registration_url: type: string format: uri description: Link to deal registration portal or details maxLength: 200 deal_registration_date: type: string format: date nullable: true description: Date the deal was registered with vendor deal_registration_expiry: type: string format: date nullable: true description: Expiration date for deal registration deal_registration_amount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ description: Monetary value of the deal registration opportunity_identified_date: type: string format: date nullable: true description: Date when opportunity was first identified rfp_release_date: type: string format: date nullable: true description: Date RFP was officially released rfp_vendor_info_session_datetime: type: string format: date-time nullable: true description: RFP vendor information session date and time rfp_vendor_questions_due_datetime: type: string format: date-time nullable: true description: Deadline for vendors to submit questions rfp_due_datetime: type: string format: date-time nullable: true description: RFP submission deadline rfp_presentation_datetime: type: string format: date-time nullable: true description: RFP presentation date and time rfp_award_announcement_date: type: string format: date nullable: true description: Date RFP award will be announced PatchedOrgChartRequest: type: object properties: root_contact: type: integer depth: type: integer maximum: 2147483647 minimum: -2147483648 include_fields: {} title: type: string minLength: 1 maxLength: 255 description: type: string PatchedOrganizationDivisionRequest: type: object description: |- Organization division information serializer. Provides division details including: - Division name, abbreviation, and description - Organizational hierarchy (parent division) - Full hierarchical path - Contact and opportunity counts properties: name: type: string minLength: 1 description: Division name (e.g., "IT Department", "Western Region Sales") maxLength: 255 abbreviation: type: string description: Short abbreviation for the division (e.g., "IT", "West") maxLength: 50 description: type: string description: Description of the division's purpose and scope organization: type: integer description: Parent organization this division belongs to parent_division: type: integer nullable: true description: Parent division for nested organizational structures PatchedPowerPointTemplateRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string is_active: type: boolean PatchedPresentationRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 source_type: $ref: '#/components/schemas/SourceTypeEnum' source_id: type: integer maximum: 2147483647 minimum: -2147483648 date: type: string format: date presenter: type: integer nullable: true PatchedPriceLineItemRequest: type: object properties: vendor_solution: type: integer type: $ref: '#/components/schemas/PriceLineItemTypeEnum' billing_cycle: $ref: '#/components/schemas/BillingCycleEnum' quantity: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ cost: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ margin: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ order: type: integer maximum: 2147483647 minimum: -2147483648 PatchedPriceVersionRequest: type: object properties: title: type: string minLength: 1 maxLength: 255 currency: type: string minLength: 1 version_number: type: integer maximum: 2147483647 minimum: -2147483648 notes: type: string PatchedPricingToolRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 proposal: type: integer nullable: true engagement: type: integer nullable: true PatchedPrincipleRequest: type: object description: Serialize all Principle fields. properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 weight: type: integer maximum: 2147483647 minimum: -2147483648 description: Importance (1-10) order: type: integer maximum: 2147483647 minimum: -2147483648 PatchedProposalRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 opportunity_id: type: integer writeOnly: true primary_contact_id: type: integer writeOnly: true nullable: true status: $ref: '#/components/schemas/ProposalStatusEnum' due_date: type: string format: date nullable: true submitted_date: type: string format: date nullable: true repository_url: type: string format: uri maxLength: 200 PatchedRecommendationRequest: type: object description: |- Serialize a Recommendation with nested impacts, alignments, findings, and requirements. ``finding_ids`` and ``requirement_ids`` are write-only; on read the full nested objects are returned under ``associated_findings`` / ``associated_requirements``. ``timeframe`` is a computed read-only field (Short / Medium / Long) derived from ``implementation_days`` against fixed 30- and 180-day thresholds. properties: title: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 implementation_days: type: integer maximum: 2147483647 minimum: -2147483648 finding_ids: type: array items: type: integer writeOnly: true requirement_ids: type: array items: type: integer writeOnly: true cost: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,2})?$ currency: type: string minLength: 1 complexity: $ref: '#/components/schemas/ComplexityEnum' PatchedRequirementRequest: type: object description: Serialize a Requirement with nested findings on read and a writable ``related_finding_ids`` list on write. properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 type: $ref: '#/components/schemas/RequirementTypeEnum' category: type: string maxLength: 100 success_measure: type: string minLength: 1 notes: type: string related_finding_ids: type: array items: type: integer writeOnly: true PatchedStageRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string start_date: type: string format: date end_date: type: string format: date color: type: integer nullable: true description: Stage color (editable in admin) status: $ref: '#/components/schemas/StageStatusEnum' progress: type: integer maximum: 2147483647 minimum: -2147483648 description: Completion percentage (0-100) order: type: integer maximum: 2147483647 minimum: -2147483648 milestone: type: integer nullable: true description: Optional milestone that marks the completion of this stage PatchedStakeholderRequest: type: object properties: contact_id: type: integer writeOnly: true tenure: type: integer maximum: 2147483647 minimum: -2147483648 description: Years in current role solution_seek: type: string solution_avoid: type: string notes: type: string power: $ref: '#/components/schemas/PowerEnum' interest: $ref: '#/components/schemas/InterestEnum' PatchedStakeholderToolRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 proposal: type: integer nullable: true engagement: type: integer nullable: true PatchedTEIReportFieldRequest: type: object description: Field-definition serializer. properties: table: $ref: '#/components/schemas/TableEnum' field_key: type: string minLength: 1 description: Machine identifier, unique within report. maxLength: 64 pattern: ^[-a-zA-Z0-9_]+$ label: type: string minLength: 1 maxLength: 255 description: type: string field_type: $ref: '#/components/schemas/TEIReportFieldFieldTypeEnum' category: type: string maxLength: 100 default_value: type: string description: Pre-populated default (stored as string, cast by calculator). maxLength: 255 is_annual: type: boolean description: If True, value is collected per year (Y1..YN); if False, a single value. risk_adjustment: type: string format: decimal pattern: ^-?\d{0,1}(?:\.\d{0,4})?$ nullable: true description: Default risk adjustment (0.0-1.0); only applied to benefit fields. sort_order: type: integer maximum: 2147483647 minimum: 0 is_required: type: boolean source_notes: type: string PatchedTEIReportRequest: type: object description: Report template serializer with counts and the spec-style ``id`` alias. properties: name: type: string minLength: 1 description: Display name (e.g., 'Amazon Connect 2026'). maxLength: 255 vendor: type: string minLength: 1 description: Technology vendor (e.g., 'AWS', 'Genesys'). maxLength: 255 version: type: string minLength: 1 description: Model version (e.g., '1.0', '2.1'). maxLength: 50 description: type: string analysis_period_years: type: integer maximum: 2147483647 minimum: 0 description: Number of years included in NPV/ROI (1-10). discount_rate: type: string format: decimal pattern: ^-?\d{0,2}(?:\.\d{0,4})?$ description: Annual discount rate (e.g., 0.10 = 10%). status: $ref: '#/components/schemas/TEIReportStatusEnum' PatchedTEIToolUpdateRequest: type: object description: Write serializer for ``PUT /tools/{id}/`` — only name/status are mutable. properties: name: type: string minLength: 1 maxLength: 255 status: $ref: '#/components/schemas/Status49eEnum' PatchedTagRequest: type: object properties: name: type: string minLength: 1 maxLength: 50 PatchedTimelineRequest: type: object properties: title: type: string minLength: 1 maxLength: 255 description: type: string start_date: type: string format: date PatchedTimelineToolRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 proposal: type: integer nullable: true engagement: type: integer nullable: true PatchedUserProfileRequest: type: object description: |- User profile serializer with preference settings. Provides access to user-specific configuration including: - Date and time format preferences - Timezone settings (home and local) - UI theme customization properties: date_format: allOf: - $ref: '#/components/schemas/DateFormatEnum' description: |- Preferred date display format * `YYYY-MM-DD` - 2024-12-25 * `DD/MM/YYYY` - 25/12/2024 * `MM/DD/YYYY` - 12/25/2024 * `DD.MM.YYYY` - 25.12.2024 * `DD-MM-YYYY` - 25-12-2024 time_format: allOf: - $ref: '#/components/schemas/TimeFormatEnum' description: |- 12-hour or 24-hour time format * `12-hour` - 12-hour (3:30 PM) * `24-hour` - 24-hour (15:30) home_timezone: allOf: - $ref: '#/components/schemas/HomeTimezoneEnum' description: |- User's home/permanent timezone * `Africa/Abidjan` - Africa/Abidjan * `Africa/Accra` - Africa/Accra * `Africa/Addis_Ababa` - Africa/Addis_Ababa * `Africa/Algiers` - Africa/Algiers * `Africa/Asmara` - Africa/Asmara * `Africa/Bamako` - Africa/Bamako * `Africa/Bangui` - Africa/Bangui * `Africa/Banjul` - Africa/Banjul * `Africa/Bissau` - Africa/Bissau * `Africa/Blantyre` - Africa/Blantyre * `Africa/Brazzaville` - Africa/Brazzaville * `Africa/Bujumbura` - Africa/Bujumbura * `Africa/Cairo` - Africa/Cairo * `Africa/Casablanca` - Africa/Casablanca * `Africa/Ceuta` - Africa/Ceuta * `Africa/Conakry` - Africa/Conakry * `Africa/Dakar` - Africa/Dakar * `Africa/Dar_es_Salaam` - Africa/Dar_es_Salaam * `Africa/Djibouti` - Africa/Djibouti * `Africa/Douala` - Africa/Douala * `Africa/El_Aaiun` - Africa/El_Aaiun * `Africa/Freetown` - Africa/Freetown * `Africa/Gaborone` - Africa/Gaborone * `Africa/Harare` - Africa/Harare * `Africa/Johannesburg` - Africa/Johannesburg * `Africa/Juba` - Africa/Juba * `Africa/Kampala` - Africa/Kampala * `Africa/Khartoum` - Africa/Khartoum * `Africa/Kigali` - Africa/Kigali * `Africa/Kinshasa` - Africa/Kinshasa * `Africa/Lagos` - Africa/Lagos * `Africa/Libreville` - Africa/Libreville * `Africa/Lome` - Africa/Lome * `Africa/Luanda` - Africa/Luanda * `Africa/Lubumbashi` - Africa/Lubumbashi * `Africa/Lusaka` - Africa/Lusaka * `Africa/Malabo` - Africa/Malabo * `Africa/Maputo` - Africa/Maputo * `Africa/Maseru` - Africa/Maseru * `Africa/Mbabane` - Africa/Mbabane * `Africa/Mogadishu` - Africa/Mogadishu * `Africa/Monrovia` - Africa/Monrovia * `Africa/Nairobi` - Africa/Nairobi * `Africa/Ndjamena` - Africa/Ndjamena * `Africa/Niamey` - Africa/Niamey * `Africa/Nouakchott` - Africa/Nouakchott * `Africa/Ouagadougou` - Africa/Ouagadougou * `Africa/Porto-Novo` - Africa/Porto-Novo * `Africa/Sao_Tome` - Africa/Sao_Tome * `Africa/Tripoli` - Africa/Tripoli * `Africa/Tunis` - Africa/Tunis * `Africa/Windhoek` - Africa/Windhoek * `America/Adak` - America/Adak * `America/Anchorage` - America/Anchorage * `America/Anguilla` - America/Anguilla * `America/Antigua` - America/Antigua * `America/Araguaina` - America/Araguaina * `America/Argentina/Buenos_Aires` - America/Argentina/Buenos_Aires * `America/Argentina/Catamarca` - America/Argentina/Catamarca * `America/Argentina/Cordoba` - America/Argentina/Cordoba * `America/Argentina/Jujuy` - America/Argentina/Jujuy * `America/Argentina/La_Rioja` - America/Argentina/La_Rioja * `America/Argentina/Mendoza` - America/Argentina/Mendoza * `America/Argentina/Rio_Gallegos` - America/Argentina/Rio_Gallegos * `America/Argentina/Salta` - America/Argentina/Salta * `America/Argentina/San_Juan` - America/Argentina/San_Juan * `America/Argentina/San_Luis` - America/Argentina/San_Luis * `America/Argentina/Tucuman` - America/Argentina/Tucuman * `America/Argentina/Ushuaia` - America/Argentina/Ushuaia * `America/Aruba` - America/Aruba * `America/Asuncion` - America/Asuncion * `America/Atikokan` - America/Atikokan * `America/Bahia` - America/Bahia * `America/Bahia_Banderas` - America/Bahia_Banderas * `America/Barbados` - America/Barbados * `America/Belem` - America/Belem * `America/Belize` - America/Belize * `America/Blanc-Sablon` - America/Blanc-Sablon * `America/Boa_Vista` - America/Boa_Vista * `America/Bogota` - America/Bogota * `America/Boise` - America/Boise * `America/Cambridge_Bay` - America/Cambridge_Bay * `America/Campo_Grande` - America/Campo_Grande * `America/Cancun` - America/Cancun * `America/Caracas` - America/Caracas * `America/Cayenne` - America/Cayenne * `America/Cayman` - America/Cayman * `America/Chicago` - America/Chicago * `America/Chihuahua` - America/Chihuahua * `America/Ciudad_Juarez` - America/Ciudad_Juarez * `America/Costa_Rica` - America/Costa_Rica * `America/Coyhaique` - America/Coyhaique * `America/Creston` - America/Creston * `America/Cuiaba` - America/Cuiaba * `America/Curacao` - America/Curacao * `America/Danmarkshavn` - America/Danmarkshavn * `America/Dawson` - America/Dawson * `America/Dawson_Creek` - America/Dawson_Creek * `America/Denver` - America/Denver * `America/Detroit` - America/Detroit * `America/Dominica` - America/Dominica * `America/Edmonton` - America/Edmonton * `America/Eirunepe` - America/Eirunepe * `America/El_Salvador` - America/El_Salvador * `America/Fort_Nelson` - America/Fort_Nelson * `America/Fortaleza` - America/Fortaleza * `America/Glace_Bay` - America/Glace_Bay * `America/Goose_Bay` - America/Goose_Bay * `America/Grand_Turk` - America/Grand_Turk * `America/Grenada` - America/Grenada * `America/Guadeloupe` - America/Guadeloupe * `America/Guatemala` - America/Guatemala * `America/Guayaquil` - America/Guayaquil * `America/Guyana` - America/Guyana * `America/Halifax` - America/Halifax * `America/Havana` - America/Havana * `America/Hermosillo` - America/Hermosillo * `America/Indiana/Indianapolis` - America/Indiana/Indianapolis * `America/Indiana/Knox` - America/Indiana/Knox * `America/Indiana/Marengo` - America/Indiana/Marengo * `America/Indiana/Petersburg` - America/Indiana/Petersburg * `America/Indiana/Tell_City` - America/Indiana/Tell_City * `America/Indiana/Vevay` - America/Indiana/Vevay * `America/Indiana/Vincennes` - America/Indiana/Vincennes * `America/Indiana/Winamac` - America/Indiana/Winamac * `America/Inuvik` - America/Inuvik * `America/Iqaluit` - America/Iqaluit * `America/Jamaica` - America/Jamaica * `America/Juneau` - America/Juneau * `America/Kentucky/Louisville` - America/Kentucky/Louisville * `America/Kentucky/Monticello` - America/Kentucky/Monticello * `America/Kralendijk` - America/Kralendijk * `America/La_Paz` - America/La_Paz * `America/Lima` - America/Lima * `America/Los_Angeles` - America/Los_Angeles * `America/Lower_Princes` - America/Lower_Princes * `America/Maceio` - America/Maceio * `America/Managua` - America/Managua * `America/Manaus` - America/Manaus * `America/Marigot` - America/Marigot * `America/Martinique` - America/Martinique * `America/Matamoros` - America/Matamoros * `America/Mazatlan` - America/Mazatlan * `America/Menominee` - America/Menominee * `America/Merida` - America/Merida * `America/Metlakatla` - America/Metlakatla * `America/Mexico_City` - America/Mexico_City * `America/Miquelon` - America/Miquelon * `America/Moncton` - America/Moncton * `America/Monterrey` - America/Monterrey * `America/Montevideo` - America/Montevideo * `America/Montserrat` - America/Montserrat * `America/Nassau` - America/Nassau * `America/New_York` - America/New_York * `America/Nome` - America/Nome * `America/Noronha` - America/Noronha * `America/North_Dakota/Beulah` - America/North_Dakota/Beulah * `America/North_Dakota/Center` - America/North_Dakota/Center * `America/North_Dakota/New_Salem` - America/North_Dakota/New_Salem * `America/Nuuk` - America/Nuuk * `America/Ojinaga` - America/Ojinaga * `America/Panama` - America/Panama * `America/Paramaribo` - America/Paramaribo * `America/Phoenix` - America/Phoenix * `America/Port-au-Prince` - America/Port-au-Prince * `America/Port_of_Spain` - America/Port_of_Spain * `America/Porto_Velho` - America/Porto_Velho * `America/Puerto_Rico` - America/Puerto_Rico * `America/Punta_Arenas` - America/Punta_Arenas * `America/Rankin_Inlet` - America/Rankin_Inlet * `America/Recife` - America/Recife * `America/Regina` - America/Regina * `America/Resolute` - America/Resolute * `America/Rio_Branco` - America/Rio_Branco * `America/Santarem` - America/Santarem * `America/Santiago` - America/Santiago * `America/Santo_Domingo` - America/Santo_Domingo * `America/Sao_Paulo` - America/Sao_Paulo * `America/Scoresbysund` - America/Scoresbysund * `America/Sitka` - America/Sitka * `America/St_Barthelemy` - America/St_Barthelemy * `America/St_Johns` - America/St_Johns * `America/St_Kitts` - America/St_Kitts * `America/St_Lucia` - America/St_Lucia * `America/St_Thomas` - America/St_Thomas * `America/St_Vincent` - America/St_Vincent * `America/Swift_Current` - America/Swift_Current * `America/Tegucigalpa` - America/Tegucigalpa * `America/Thule` - America/Thule * `America/Tijuana` - America/Tijuana * `America/Toronto` - America/Toronto * `America/Tortola` - America/Tortola * `America/Vancouver` - America/Vancouver * `America/Whitehorse` - America/Whitehorse * `America/Winnipeg` - America/Winnipeg * `America/Yakutat` - America/Yakutat * `Antarctica/Casey` - Antarctica/Casey * `Antarctica/Davis` - Antarctica/Davis * `Antarctica/DumontDUrville` - Antarctica/DumontDUrville * `Antarctica/Macquarie` - Antarctica/Macquarie * `Antarctica/Mawson` - Antarctica/Mawson * `Antarctica/McMurdo` - Antarctica/McMurdo * `Antarctica/Palmer` - Antarctica/Palmer * `Antarctica/Rothera` - Antarctica/Rothera * `Antarctica/Syowa` - Antarctica/Syowa * `Antarctica/Troll` - Antarctica/Troll * `Antarctica/Vostok` - Antarctica/Vostok * `Arctic/Longyearbyen` - Arctic/Longyearbyen * `Asia/Aden` - Asia/Aden * `Asia/Almaty` - Asia/Almaty * `Asia/Amman` - Asia/Amman * `Asia/Anadyr` - Asia/Anadyr * `Asia/Aqtau` - Asia/Aqtau * `Asia/Aqtobe` - Asia/Aqtobe * `Asia/Ashgabat` - Asia/Ashgabat * `Asia/Atyrau` - Asia/Atyrau * `Asia/Baghdad` - Asia/Baghdad * `Asia/Bahrain` - Asia/Bahrain * `Asia/Baku` - Asia/Baku * `Asia/Bangkok` - Asia/Bangkok * `Asia/Barnaul` - Asia/Barnaul * `Asia/Beirut` - Asia/Beirut * `Asia/Bishkek` - Asia/Bishkek * `Asia/Brunei` - Asia/Brunei * `Asia/Chita` - Asia/Chita * `Asia/Colombo` - Asia/Colombo * `Asia/Damascus` - Asia/Damascus * `Asia/Dhaka` - Asia/Dhaka * `Asia/Dili` - Asia/Dili * `Asia/Dubai` - Asia/Dubai * `Asia/Dushanbe` - Asia/Dushanbe * `Asia/Famagusta` - Asia/Famagusta * `Asia/Gaza` - Asia/Gaza * `Asia/Hebron` - Asia/Hebron * `Asia/Ho_Chi_Minh` - Asia/Ho_Chi_Minh * `Asia/Hong_Kong` - Asia/Hong_Kong * `Asia/Hovd` - Asia/Hovd * `Asia/Irkutsk` - Asia/Irkutsk * `Asia/Jakarta` - Asia/Jakarta * `Asia/Jayapura` - Asia/Jayapura * `Asia/Jerusalem` - Asia/Jerusalem * `Asia/Kabul` - Asia/Kabul * `Asia/Kamchatka` - Asia/Kamchatka * `Asia/Karachi` - Asia/Karachi * `Asia/Kathmandu` - Asia/Kathmandu * `Asia/Khandyga` - Asia/Khandyga * `Asia/Kolkata` - Asia/Kolkata * `Asia/Krasnoyarsk` - Asia/Krasnoyarsk * `Asia/Kuala_Lumpur` - Asia/Kuala_Lumpur * `Asia/Kuching` - Asia/Kuching * `Asia/Kuwait` - Asia/Kuwait * `Asia/Macau` - Asia/Macau * `Asia/Magadan` - Asia/Magadan * `Asia/Makassar` - Asia/Makassar * `Asia/Manila` - Asia/Manila * `Asia/Muscat` - Asia/Muscat * `Asia/Nicosia` - Asia/Nicosia * `Asia/Novokuznetsk` - Asia/Novokuznetsk * `Asia/Novosibirsk` - Asia/Novosibirsk * `Asia/Omsk` - Asia/Omsk * `Asia/Oral` - Asia/Oral * `Asia/Phnom_Penh` - Asia/Phnom_Penh * `Asia/Pontianak` - Asia/Pontianak * `Asia/Pyongyang` - Asia/Pyongyang * `Asia/Qatar` - Asia/Qatar * `Asia/Qostanay` - Asia/Qostanay * `Asia/Qyzylorda` - Asia/Qyzylorda * `Asia/Riyadh` - Asia/Riyadh * `Asia/Sakhalin` - Asia/Sakhalin * `Asia/Samarkand` - Asia/Samarkand * `Asia/Seoul` - Asia/Seoul * `Asia/Shanghai` - Asia/Shanghai * `Asia/Singapore` - Asia/Singapore * `Asia/Srednekolymsk` - Asia/Srednekolymsk * `Asia/Taipei` - Asia/Taipei * `Asia/Tashkent` - Asia/Tashkent * `Asia/Tbilisi` - Asia/Tbilisi * `Asia/Tehran` - Asia/Tehran * `Asia/Thimphu` - Asia/Thimphu * `Asia/Tokyo` - Asia/Tokyo * `Asia/Tomsk` - Asia/Tomsk * `Asia/Ulaanbaatar` - Asia/Ulaanbaatar * `Asia/Urumqi` - Asia/Urumqi * `Asia/Ust-Nera` - Asia/Ust-Nera * `Asia/Vientiane` - Asia/Vientiane * `Asia/Vladivostok` - Asia/Vladivostok * `Asia/Yakutsk` - Asia/Yakutsk * `Asia/Yangon` - Asia/Yangon * `Asia/Yekaterinburg` - Asia/Yekaterinburg * `Asia/Yerevan` - Asia/Yerevan * `Atlantic/Azores` - Atlantic/Azores * `Atlantic/Bermuda` - Atlantic/Bermuda * `Atlantic/Canary` - Atlantic/Canary * `Atlantic/Cape_Verde` - Atlantic/Cape_Verde * `Atlantic/Faroe` - Atlantic/Faroe * `Atlantic/Madeira` - Atlantic/Madeira * `Atlantic/Reykjavik` - Atlantic/Reykjavik * `Atlantic/South_Georgia` - Atlantic/South_Georgia * `Atlantic/St_Helena` - Atlantic/St_Helena * `Atlantic/Stanley` - Atlantic/Stanley * `Australia/Adelaide` - Australia/Adelaide * `Australia/Brisbane` - Australia/Brisbane * `Australia/Broken_Hill` - Australia/Broken_Hill * `Australia/Darwin` - Australia/Darwin * `Australia/Eucla` - Australia/Eucla * `Australia/Hobart` - Australia/Hobart * `Australia/Lindeman` - Australia/Lindeman * `Australia/Lord_Howe` - Australia/Lord_Howe * `Australia/Melbourne` - Australia/Melbourne * `Australia/Perth` - Australia/Perth * `Australia/Sydney` - Australia/Sydney * `Europe/Amsterdam` - Europe/Amsterdam * `Europe/Andorra` - Europe/Andorra * `Europe/Astrakhan` - Europe/Astrakhan * `Europe/Athens` - Europe/Athens * `Europe/Belgrade` - Europe/Belgrade * `Europe/Berlin` - Europe/Berlin * `Europe/Bratislava` - Europe/Bratislava * `Europe/Brussels` - Europe/Brussels * `Europe/Bucharest` - Europe/Bucharest * `Europe/Budapest` - Europe/Budapest * `Europe/Busingen` - Europe/Busingen * `Europe/Chisinau` - Europe/Chisinau * `Europe/Copenhagen` - Europe/Copenhagen * `Europe/Dublin` - Europe/Dublin * `Europe/Gibraltar` - Europe/Gibraltar * `Europe/Guernsey` - Europe/Guernsey * `Europe/Helsinki` - Europe/Helsinki * `Europe/Isle_of_Man` - Europe/Isle_of_Man * `Europe/Istanbul` - Europe/Istanbul * `Europe/Jersey` - Europe/Jersey * `Europe/Kaliningrad` - Europe/Kaliningrad * `Europe/Kirov` - Europe/Kirov * `Europe/Kyiv` - Europe/Kyiv * `Europe/Lisbon` - Europe/Lisbon * `Europe/Ljubljana` - Europe/Ljubljana * `Europe/London` - Europe/London * `Europe/Luxembourg` - Europe/Luxembourg * `Europe/Madrid` - Europe/Madrid * `Europe/Malta` - Europe/Malta * `Europe/Mariehamn` - Europe/Mariehamn * `Europe/Minsk` - Europe/Minsk * `Europe/Monaco` - Europe/Monaco * `Europe/Moscow` - Europe/Moscow * `Europe/Oslo` - Europe/Oslo * `Europe/Paris` - Europe/Paris * `Europe/Podgorica` - Europe/Podgorica * `Europe/Prague` - Europe/Prague * `Europe/Riga` - Europe/Riga * `Europe/Rome` - Europe/Rome * `Europe/Samara` - Europe/Samara * `Europe/San_Marino` - Europe/San_Marino * `Europe/Sarajevo` - Europe/Sarajevo * `Europe/Saratov` - Europe/Saratov * `Europe/Simferopol` - Europe/Simferopol * `Europe/Skopje` - Europe/Skopje * `Europe/Sofia` - Europe/Sofia * `Europe/Stockholm` - Europe/Stockholm * `Europe/Tallinn` - Europe/Tallinn * `Europe/Tirane` - Europe/Tirane * `Europe/Ulyanovsk` - Europe/Ulyanovsk * `Europe/Vaduz` - Europe/Vaduz * `Europe/Vatican` - Europe/Vatican * `Europe/Vienna` - Europe/Vienna * `Europe/Vilnius` - Europe/Vilnius * `Europe/Volgograd` - Europe/Volgograd * `Europe/Warsaw` - Europe/Warsaw * `Europe/Zagreb` - Europe/Zagreb * `Europe/Zurich` - Europe/Zurich * `GMT` - GMT * `Indian/Antananarivo` - Indian/Antananarivo * `Indian/Chagos` - Indian/Chagos * `Indian/Christmas` - Indian/Christmas * `Indian/Cocos` - Indian/Cocos * `Indian/Comoro` - Indian/Comoro * `Indian/Kerguelen` - Indian/Kerguelen * `Indian/Mahe` - Indian/Mahe * `Indian/Maldives` - Indian/Maldives * `Indian/Mauritius` - Indian/Mauritius * `Indian/Mayotte` - Indian/Mayotte * `Indian/Reunion` - Indian/Reunion * `Pacific/Apia` - Pacific/Apia * `Pacific/Auckland` - Pacific/Auckland * `Pacific/Bougainville` - Pacific/Bougainville * `Pacific/Chatham` - Pacific/Chatham * `Pacific/Chuuk` - Pacific/Chuuk * `Pacific/Easter` - Pacific/Easter * `Pacific/Efate` - Pacific/Efate * `Pacific/Fakaofo` - Pacific/Fakaofo * `Pacific/Fiji` - Pacific/Fiji * `Pacific/Funafuti` - Pacific/Funafuti * `Pacific/Galapagos` - Pacific/Galapagos * `Pacific/Gambier` - Pacific/Gambier * `Pacific/Guadalcanal` - Pacific/Guadalcanal * `Pacific/Guam` - Pacific/Guam * `Pacific/Honolulu` - Pacific/Honolulu * `Pacific/Kanton` - Pacific/Kanton * `Pacific/Kiritimati` - Pacific/Kiritimati * `Pacific/Kosrae` - Pacific/Kosrae * `Pacific/Kwajalein` - Pacific/Kwajalein * `Pacific/Majuro` - Pacific/Majuro * `Pacific/Marquesas` - Pacific/Marquesas * `Pacific/Midway` - Pacific/Midway * `Pacific/Nauru` - Pacific/Nauru * `Pacific/Niue` - Pacific/Niue * `Pacific/Norfolk` - Pacific/Norfolk * `Pacific/Noumea` - Pacific/Noumea * `Pacific/Pago_Pago` - Pacific/Pago_Pago * `Pacific/Palau` - Pacific/Palau * `Pacific/Pitcairn` - Pacific/Pitcairn * `Pacific/Pohnpei` - Pacific/Pohnpei * `Pacific/Port_Moresby` - Pacific/Port_Moresby * `Pacific/Rarotonga` - Pacific/Rarotonga * `Pacific/Saipan` - Pacific/Saipan * `Pacific/Tahiti` - Pacific/Tahiti * `Pacific/Tarawa` - Pacific/Tarawa * `Pacific/Tongatapu` - Pacific/Tongatapu * `Pacific/Wake` - Pacific/Wake * `Pacific/Wallis` - Pacific/Wallis * `UTC` - UTC local_timezone: nullable: true description: |- User's current local timezone (if traveling) * `Africa/Abidjan` - Africa/Abidjan * `Africa/Accra` - Africa/Accra * `Africa/Addis_Ababa` - Africa/Addis_Ababa * `Africa/Algiers` - Africa/Algiers * `Africa/Asmara` - Africa/Asmara * `Africa/Bamako` - Africa/Bamako * `Africa/Bangui` - Africa/Bangui * `Africa/Banjul` - Africa/Banjul * `Africa/Bissau` - Africa/Bissau * `Africa/Blantyre` - Africa/Blantyre * `Africa/Brazzaville` - Africa/Brazzaville * `Africa/Bujumbura` - Africa/Bujumbura * `Africa/Cairo` - Africa/Cairo * `Africa/Casablanca` - Africa/Casablanca * `Africa/Ceuta` - Africa/Ceuta * `Africa/Conakry` - Africa/Conakry * `Africa/Dakar` - Africa/Dakar * `Africa/Dar_es_Salaam` - Africa/Dar_es_Salaam * `Africa/Djibouti` - Africa/Djibouti * `Africa/Douala` - Africa/Douala * `Africa/El_Aaiun` - Africa/El_Aaiun * `Africa/Freetown` - Africa/Freetown * `Africa/Gaborone` - Africa/Gaborone * `Africa/Harare` - Africa/Harare * `Africa/Johannesburg` - Africa/Johannesburg * `Africa/Juba` - Africa/Juba * `Africa/Kampala` - Africa/Kampala * `Africa/Khartoum` - Africa/Khartoum * `Africa/Kigali` - Africa/Kigali * `Africa/Kinshasa` - Africa/Kinshasa * `Africa/Lagos` - Africa/Lagos * `Africa/Libreville` - Africa/Libreville * `Africa/Lome` - Africa/Lome * `Africa/Luanda` - Africa/Luanda * `Africa/Lubumbashi` - Africa/Lubumbashi * `Africa/Lusaka` - Africa/Lusaka * `Africa/Malabo` - Africa/Malabo * `Africa/Maputo` - Africa/Maputo * `Africa/Maseru` - Africa/Maseru * `Africa/Mbabane` - Africa/Mbabane * `Africa/Mogadishu` - Africa/Mogadishu * `Africa/Monrovia` - Africa/Monrovia * `Africa/Nairobi` - Africa/Nairobi * `Africa/Ndjamena` - Africa/Ndjamena * `Africa/Niamey` - Africa/Niamey * `Africa/Nouakchott` - Africa/Nouakchott * `Africa/Ouagadougou` - Africa/Ouagadougou * `Africa/Porto-Novo` - Africa/Porto-Novo * `Africa/Sao_Tome` - Africa/Sao_Tome * `Africa/Tripoli` - Africa/Tripoli * `Africa/Tunis` - Africa/Tunis * `Africa/Windhoek` - Africa/Windhoek * `America/Adak` - America/Adak * `America/Anchorage` - America/Anchorage * `America/Anguilla` - America/Anguilla * `America/Antigua` - America/Antigua * `America/Araguaina` - America/Araguaina * `America/Argentina/Buenos_Aires` - America/Argentina/Buenos_Aires * `America/Argentina/Catamarca` - America/Argentina/Catamarca * `America/Argentina/Cordoba` - America/Argentina/Cordoba * `America/Argentina/Jujuy` - America/Argentina/Jujuy * `America/Argentina/La_Rioja` - America/Argentina/La_Rioja * `America/Argentina/Mendoza` - America/Argentina/Mendoza * `America/Argentina/Rio_Gallegos` - America/Argentina/Rio_Gallegos * `America/Argentina/Salta` - America/Argentina/Salta * `America/Argentina/San_Juan` - America/Argentina/San_Juan * `America/Argentina/San_Luis` - America/Argentina/San_Luis * `America/Argentina/Tucuman` - America/Argentina/Tucuman * `America/Argentina/Ushuaia` - America/Argentina/Ushuaia * `America/Aruba` - America/Aruba * `America/Asuncion` - America/Asuncion * `America/Atikokan` - America/Atikokan * `America/Bahia` - America/Bahia * `America/Bahia_Banderas` - America/Bahia_Banderas * `America/Barbados` - America/Barbados * `America/Belem` - America/Belem * `America/Belize` - America/Belize * `America/Blanc-Sablon` - America/Blanc-Sablon * `America/Boa_Vista` - America/Boa_Vista * `America/Bogota` - America/Bogota * `America/Boise` - America/Boise * `America/Cambridge_Bay` - America/Cambridge_Bay * `America/Campo_Grande` - America/Campo_Grande * `America/Cancun` - America/Cancun * `America/Caracas` - America/Caracas * `America/Cayenne` - America/Cayenne * `America/Cayman` - America/Cayman * `America/Chicago` - America/Chicago * `America/Chihuahua` - America/Chihuahua * `America/Ciudad_Juarez` - America/Ciudad_Juarez * `America/Costa_Rica` - America/Costa_Rica * `America/Coyhaique` - America/Coyhaique * `America/Creston` - America/Creston * `America/Cuiaba` - America/Cuiaba * `America/Curacao` - America/Curacao * `America/Danmarkshavn` - America/Danmarkshavn * `America/Dawson` - America/Dawson * `America/Dawson_Creek` - America/Dawson_Creek * `America/Denver` - America/Denver * `America/Detroit` - America/Detroit * `America/Dominica` - America/Dominica * `America/Edmonton` - America/Edmonton * `America/Eirunepe` - America/Eirunepe * `America/El_Salvador` - America/El_Salvador * `America/Fort_Nelson` - America/Fort_Nelson * `America/Fortaleza` - America/Fortaleza * `America/Glace_Bay` - America/Glace_Bay * `America/Goose_Bay` - America/Goose_Bay * `America/Grand_Turk` - America/Grand_Turk * `America/Grenada` - America/Grenada * `America/Guadeloupe` - America/Guadeloupe * `America/Guatemala` - America/Guatemala * `America/Guayaquil` - America/Guayaquil * `America/Guyana` - America/Guyana * `America/Halifax` - America/Halifax * `America/Havana` - America/Havana * `America/Hermosillo` - America/Hermosillo * `America/Indiana/Indianapolis` - America/Indiana/Indianapolis * `America/Indiana/Knox` - America/Indiana/Knox * `America/Indiana/Marengo` - America/Indiana/Marengo * `America/Indiana/Petersburg` - America/Indiana/Petersburg * `America/Indiana/Tell_City` - America/Indiana/Tell_City * `America/Indiana/Vevay` - America/Indiana/Vevay * `America/Indiana/Vincennes` - America/Indiana/Vincennes * `America/Indiana/Winamac` - America/Indiana/Winamac * `America/Inuvik` - America/Inuvik * `America/Iqaluit` - America/Iqaluit * `America/Jamaica` - America/Jamaica * `America/Juneau` - America/Juneau * `America/Kentucky/Louisville` - America/Kentucky/Louisville * `America/Kentucky/Monticello` - America/Kentucky/Monticello * `America/Kralendijk` - America/Kralendijk * `America/La_Paz` - America/La_Paz * `America/Lima` - America/Lima * `America/Los_Angeles` - America/Los_Angeles * `America/Lower_Princes` - America/Lower_Princes * `America/Maceio` - America/Maceio * `America/Managua` - America/Managua * `America/Manaus` - America/Manaus * `America/Marigot` - America/Marigot * `America/Martinique` - America/Martinique * `America/Matamoros` - America/Matamoros * `America/Mazatlan` - America/Mazatlan * `America/Menominee` - America/Menominee * `America/Merida` - America/Merida * `America/Metlakatla` - America/Metlakatla * `America/Mexico_City` - America/Mexico_City * `America/Miquelon` - America/Miquelon * `America/Moncton` - America/Moncton * `America/Monterrey` - America/Monterrey * `America/Montevideo` - America/Montevideo * `America/Montserrat` - America/Montserrat * `America/Nassau` - America/Nassau * `America/New_York` - America/New_York * `America/Nome` - America/Nome * `America/Noronha` - America/Noronha * `America/North_Dakota/Beulah` - America/North_Dakota/Beulah * `America/North_Dakota/Center` - America/North_Dakota/Center * `America/North_Dakota/New_Salem` - America/North_Dakota/New_Salem * `America/Nuuk` - America/Nuuk * `America/Ojinaga` - America/Ojinaga * `America/Panama` - America/Panama * `America/Paramaribo` - America/Paramaribo * `America/Phoenix` - America/Phoenix * `America/Port-au-Prince` - America/Port-au-Prince * `America/Port_of_Spain` - America/Port_of_Spain * `America/Porto_Velho` - America/Porto_Velho * `America/Puerto_Rico` - America/Puerto_Rico * `America/Punta_Arenas` - America/Punta_Arenas * `America/Rankin_Inlet` - America/Rankin_Inlet * `America/Recife` - America/Recife * `America/Regina` - America/Regina * `America/Resolute` - America/Resolute * `America/Rio_Branco` - America/Rio_Branco * `America/Santarem` - America/Santarem * `America/Santiago` - America/Santiago * `America/Santo_Domingo` - America/Santo_Domingo * `America/Sao_Paulo` - America/Sao_Paulo * `America/Scoresbysund` - America/Scoresbysund * `America/Sitka` - America/Sitka * `America/St_Barthelemy` - America/St_Barthelemy * `America/St_Johns` - America/St_Johns * `America/St_Kitts` - America/St_Kitts * `America/St_Lucia` - America/St_Lucia * `America/St_Thomas` - America/St_Thomas * `America/St_Vincent` - America/St_Vincent * `America/Swift_Current` - America/Swift_Current * `America/Tegucigalpa` - America/Tegucigalpa * `America/Thule` - America/Thule * `America/Tijuana` - America/Tijuana * `America/Toronto` - America/Toronto * `America/Tortola` - America/Tortola * `America/Vancouver` - America/Vancouver * `America/Whitehorse` - America/Whitehorse * `America/Winnipeg` - America/Winnipeg * `America/Yakutat` - America/Yakutat * `Antarctica/Casey` - Antarctica/Casey * `Antarctica/Davis` - Antarctica/Davis * `Antarctica/DumontDUrville` - Antarctica/DumontDUrville * `Antarctica/Macquarie` - Antarctica/Macquarie * `Antarctica/Mawson` - Antarctica/Mawson * `Antarctica/McMurdo` - Antarctica/McMurdo * `Antarctica/Palmer` - Antarctica/Palmer * `Antarctica/Rothera` - Antarctica/Rothera * `Antarctica/Syowa` - Antarctica/Syowa * `Antarctica/Troll` - Antarctica/Troll * `Antarctica/Vostok` - Antarctica/Vostok * `Arctic/Longyearbyen` - Arctic/Longyearbyen * `Asia/Aden` - Asia/Aden * `Asia/Almaty` - Asia/Almaty * `Asia/Amman` - Asia/Amman * `Asia/Anadyr` - Asia/Anadyr * `Asia/Aqtau` - Asia/Aqtau * `Asia/Aqtobe` - Asia/Aqtobe * `Asia/Ashgabat` - Asia/Ashgabat * `Asia/Atyrau` - Asia/Atyrau * `Asia/Baghdad` - Asia/Baghdad * `Asia/Bahrain` - Asia/Bahrain * `Asia/Baku` - Asia/Baku * `Asia/Bangkok` - Asia/Bangkok * `Asia/Barnaul` - Asia/Barnaul * `Asia/Beirut` - Asia/Beirut * `Asia/Bishkek` - Asia/Bishkek * `Asia/Brunei` - Asia/Brunei * `Asia/Chita` - Asia/Chita * `Asia/Colombo` - Asia/Colombo * `Asia/Damascus` - Asia/Damascus * `Asia/Dhaka` - Asia/Dhaka * `Asia/Dili` - Asia/Dili * `Asia/Dubai` - Asia/Dubai * `Asia/Dushanbe` - Asia/Dushanbe * `Asia/Famagusta` - Asia/Famagusta * `Asia/Gaza` - Asia/Gaza * `Asia/Hebron` - Asia/Hebron * `Asia/Ho_Chi_Minh` - Asia/Ho_Chi_Minh * `Asia/Hong_Kong` - Asia/Hong_Kong * `Asia/Hovd` - Asia/Hovd * `Asia/Irkutsk` - Asia/Irkutsk * `Asia/Jakarta` - Asia/Jakarta * `Asia/Jayapura` - Asia/Jayapura * `Asia/Jerusalem` - Asia/Jerusalem * `Asia/Kabul` - Asia/Kabul * `Asia/Kamchatka` - Asia/Kamchatka * `Asia/Karachi` - Asia/Karachi * `Asia/Kathmandu` - Asia/Kathmandu * `Asia/Khandyga` - Asia/Khandyga * `Asia/Kolkata` - Asia/Kolkata * `Asia/Krasnoyarsk` - Asia/Krasnoyarsk * `Asia/Kuala_Lumpur` - Asia/Kuala_Lumpur * `Asia/Kuching` - Asia/Kuching * `Asia/Kuwait` - Asia/Kuwait * `Asia/Macau` - Asia/Macau * `Asia/Magadan` - Asia/Magadan * `Asia/Makassar` - Asia/Makassar * `Asia/Manila` - Asia/Manila * `Asia/Muscat` - Asia/Muscat * `Asia/Nicosia` - Asia/Nicosia * `Asia/Novokuznetsk` - Asia/Novokuznetsk * `Asia/Novosibirsk` - Asia/Novosibirsk * `Asia/Omsk` - Asia/Omsk * `Asia/Oral` - Asia/Oral * `Asia/Phnom_Penh` - Asia/Phnom_Penh * `Asia/Pontianak` - Asia/Pontianak * `Asia/Pyongyang` - Asia/Pyongyang * `Asia/Qatar` - Asia/Qatar * `Asia/Qostanay` - Asia/Qostanay * `Asia/Qyzylorda` - Asia/Qyzylorda * `Asia/Riyadh` - Asia/Riyadh * `Asia/Sakhalin` - Asia/Sakhalin * `Asia/Samarkand` - Asia/Samarkand * `Asia/Seoul` - Asia/Seoul * `Asia/Shanghai` - Asia/Shanghai * `Asia/Singapore` - Asia/Singapore * `Asia/Srednekolymsk` - Asia/Srednekolymsk * `Asia/Taipei` - Asia/Taipei * `Asia/Tashkent` - Asia/Tashkent * `Asia/Tbilisi` - Asia/Tbilisi * `Asia/Tehran` - Asia/Tehran * `Asia/Thimphu` - Asia/Thimphu * `Asia/Tokyo` - Asia/Tokyo * `Asia/Tomsk` - Asia/Tomsk * `Asia/Ulaanbaatar` - Asia/Ulaanbaatar * `Asia/Urumqi` - Asia/Urumqi * `Asia/Ust-Nera` - Asia/Ust-Nera * `Asia/Vientiane` - Asia/Vientiane * `Asia/Vladivostok` - Asia/Vladivostok * `Asia/Yakutsk` - Asia/Yakutsk * `Asia/Yangon` - Asia/Yangon * `Asia/Yekaterinburg` - Asia/Yekaterinburg * `Asia/Yerevan` - Asia/Yerevan * `Atlantic/Azores` - Atlantic/Azores * `Atlantic/Bermuda` - Atlantic/Bermuda * `Atlantic/Canary` - Atlantic/Canary * `Atlantic/Cape_Verde` - Atlantic/Cape_Verde * `Atlantic/Faroe` - Atlantic/Faroe * `Atlantic/Madeira` - Atlantic/Madeira * `Atlantic/Reykjavik` - Atlantic/Reykjavik * `Atlantic/South_Georgia` - Atlantic/South_Georgia * `Atlantic/St_Helena` - Atlantic/St_Helena * `Atlantic/Stanley` - Atlantic/Stanley * `Australia/Adelaide` - Australia/Adelaide * `Australia/Brisbane` - Australia/Brisbane * `Australia/Broken_Hill` - Australia/Broken_Hill * `Australia/Darwin` - Australia/Darwin * `Australia/Eucla` - Australia/Eucla * `Australia/Hobart` - Australia/Hobart * `Australia/Lindeman` - Australia/Lindeman * `Australia/Lord_Howe` - Australia/Lord_Howe * `Australia/Melbourne` - Australia/Melbourne * `Australia/Perth` - Australia/Perth * `Australia/Sydney` - Australia/Sydney * `Europe/Amsterdam` - Europe/Amsterdam * `Europe/Andorra` - Europe/Andorra * `Europe/Astrakhan` - Europe/Astrakhan * `Europe/Athens` - Europe/Athens * `Europe/Belgrade` - Europe/Belgrade * `Europe/Berlin` - Europe/Berlin * `Europe/Bratislava` - Europe/Bratislava * `Europe/Brussels` - Europe/Brussels * `Europe/Bucharest` - Europe/Bucharest * `Europe/Budapest` - Europe/Budapest * `Europe/Busingen` - Europe/Busingen * `Europe/Chisinau` - Europe/Chisinau * `Europe/Copenhagen` - Europe/Copenhagen * `Europe/Dublin` - Europe/Dublin * `Europe/Gibraltar` - Europe/Gibraltar * `Europe/Guernsey` - Europe/Guernsey * `Europe/Helsinki` - Europe/Helsinki * `Europe/Isle_of_Man` - Europe/Isle_of_Man * `Europe/Istanbul` - Europe/Istanbul * `Europe/Jersey` - Europe/Jersey * `Europe/Kaliningrad` - Europe/Kaliningrad * `Europe/Kirov` - Europe/Kirov * `Europe/Kyiv` - Europe/Kyiv * `Europe/Lisbon` - Europe/Lisbon * `Europe/Ljubljana` - Europe/Ljubljana * `Europe/London` - Europe/London * `Europe/Luxembourg` - Europe/Luxembourg * `Europe/Madrid` - Europe/Madrid * `Europe/Malta` - Europe/Malta * `Europe/Mariehamn` - Europe/Mariehamn * `Europe/Minsk` - Europe/Minsk * `Europe/Monaco` - Europe/Monaco * `Europe/Moscow` - Europe/Moscow * `Europe/Oslo` - Europe/Oslo * `Europe/Paris` - Europe/Paris * `Europe/Podgorica` - Europe/Podgorica * `Europe/Prague` - Europe/Prague * `Europe/Riga` - Europe/Riga * `Europe/Rome` - Europe/Rome * `Europe/Samara` - Europe/Samara * `Europe/San_Marino` - Europe/San_Marino * `Europe/Sarajevo` - Europe/Sarajevo * `Europe/Saratov` - Europe/Saratov * `Europe/Simferopol` - Europe/Simferopol * `Europe/Skopje` - Europe/Skopje * `Europe/Sofia` - Europe/Sofia * `Europe/Stockholm` - Europe/Stockholm * `Europe/Tallinn` - Europe/Tallinn * `Europe/Tirane` - Europe/Tirane * `Europe/Ulyanovsk` - Europe/Ulyanovsk * `Europe/Vaduz` - Europe/Vaduz * `Europe/Vatican` - Europe/Vatican * `Europe/Vienna` - Europe/Vienna * `Europe/Vilnius` - Europe/Vilnius * `Europe/Volgograd` - Europe/Volgograd * `Europe/Warsaw` - Europe/Warsaw * `Europe/Zagreb` - Europe/Zagreb * `Europe/Zurich` - Europe/Zurich * `GMT` - GMT * `Indian/Antananarivo` - Indian/Antananarivo * `Indian/Chagos` - Indian/Chagos * `Indian/Christmas` - Indian/Christmas * `Indian/Cocos` - Indian/Cocos * `Indian/Comoro` - Indian/Comoro * `Indian/Kerguelen` - Indian/Kerguelen * `Indian/Mahe` - Indian/Mahe * `Indian/Maldives` - Indian/Maldives * `Indian/Mauritius` - Indian/Mauritius * `Indian/Mayotte` - Indian/Mayotte * `Indian/Reunion` - Indian/Reunion * `Pacific/Apia` - Pacific/Apia * `Pacific/Auckland` - Pacific/Auckland * `Pacific/Bougainville` - Pacific/Bougainville * `Pacific/Chatham` - Pacific/Chatham * `Pacific/Chuuk` - Pacific/Chuuk * `Pacific/Easter` - Pacific/Easter * `Pacific/Efate` - Pacific/Efate * `Pacific/Fakaofo` - Pacific/Fakaofo * `Pacific/Fiji` - Pacific/Fiji * `Pacific/Funafuti` - Pacific/Funafuti * `Pacific/Galapagos` - Pacific/Galapagos * `Pacific/Gambier` - Pacific/Gambier * `Pacific/Guadalcanal` - Pacific/Guadalcanal * `Pacific/Guam` - Pacific/Guam * `Pacific/Honolulu` - Pacific/Honolulu * `Pacific/Kanton` - Pacific/Kanton * `Pacific/Kiritimati` - Pacific/Kiritimati * `Pacific/Kosrae` - Pacific/Kosrae * `Pacific/Kwajalein` - Pacific/Kwajalein * `Pacific/Majuro` - Pacific/Majuro * `Pacific/Marquesas` - Pacific/Marquesas * `Pacific/Midway` - Pacific/Midway * `Pacific/Nauru` - Pacific/Nauru * `Pacific/Niue` - Pacific/Niue * `Pacific/Norfolk` - Pacific/Norfolk * `Pacific/Noumea` - Pacific/Noumea * `Pacific/Pago_Pago` - Pacific/Pago_Pago * `Pacific/Palau` - Pacific/Palau * `Pacific/Pitcairn` - Pacific/Pitcairn * `Pacific/Pohnpei` - Pacific/Pohnpei * `Pacific/Port_Moresby` - Pacific/Port_Moresby * `Pacific/Rarotonga` - Pacific/Rarotonga * `Pacific/Saipan` - Pacific/Saipan * `Pacific/Tahiti` - Pacific/Tahiti * `Pacific/Tarawa` - Pacific/Tarawa * `Pacific/Tongatapu` - Pacific/Tongatapu * `Pacific/Wake` - Pacific/Wake * `Pacific/Wallis` - Pacific/Wallis * `UTC` - UTC oneOf: - $ref: '#/components/schemas/LocalTimezoneEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' bootswatch_theme: type: integer nullable: true description: Bootswatch theme for light mode PatchedVendorRequest: type: object properties: name: type: string legal_name: type: string abbreviated_name: type: string overview: type: string history: type: string services_provided: type: string vendor_type: type: string employee_count: type: integer nullable: true revenue: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true assets: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true fiscal_year_end: type: string format: date nullable: true partner_portal_url: type: string format: uri is_competitor: type: boolean deal_registration_notes: type: string PatchedVendorSolutionRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 vendor_id: type: integer writeOnly: true description: type: string minLength: 1 title: Solution Information description: Detailed solution description with URL support url: type: string format: uri maxLength: 200 notes: type: string minLength: 1 description: Additional notes about the solution category: type: string maxLength: 100 release_date: type: string format: date nullable: true end_of_life_date: type: string format: date nullable: true documentation_url: type: string format: uri maxLength: 200 PatchedWorkshopRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 date: type: string format: date time: type: string format: time duration: allOf: - $ref: '#/components/schemas/DurationEnum' minimum: -2147483648 maximum: 2147483647 workshop_type: $ref: '#/components/schemas/WorkshopTypeEnum' participant_ids: type: array items: type: integer writeOnly: true notes: type: string PotentialImpactEnum: enum: - Schedule - Cost - Quality - Multiple type: string description: |- * `Schedule` - Schedule * `Cost` - Cost * `Quality` - Quality * `Multiple` - Multiple PowerEnum: enum: - High - Medium - Low type: string description: |- * `High` - High * `Medium` - Medium * `Low` - Low PowerPointTemplate: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string master_slides: readOnly: true color_palette: readOnly: true is_active: type: boolean created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - color_palette - created_date - id - master_slides - modified_date - name PowerPointTemplateRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string is_active: type: boolean required: - name Presentation: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 source_type: $ref: '#/components/schemas/SourceTypeEnum' source_id: type: integer maximum: 2147483647 minimum: -2147483648 date: type: string format: date presenter: type: integer nullable: true created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - created_date - id - modified_date - name - source_id - source_type PresentationRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 source_type: $ref: '#/components/schemas/SourceTypeEnum' source_id: type: integer maximum: 2147483647 minimum: -2147483648 date: type: string format: date presenter: type: integer nullable: true required: - name - source_id - source_type PriceLineItem: type: object properties: id: type: integer readOnly: true vendor_solution: type: integer vendor_solution_name: type: string readOnly: true type: $ref: '#/components/schemas/PriceLineItemTypeEnum' billing_cycle: $ref: '#/components/schemas/BillingCycleEnum' quantity: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ cost: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ margin: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ unit_price: type: string readOnly: true total_price: type: string readOnly: true order: type: integer maximum: 2147483647 minimum: -2147483648 required: - cost - id - margin - order - total_price - type - unit_price - vendor_solution - vendor_solution_name PriceLineItemRequest: type: object properties: vendor_solution: type: integer type: $ref: '#/components/schemas/PriceLineItemTypeEnum' billing_cycle: $ref: '#/components/schemas/BillingCycleEnum' quantity: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ cost: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ margin: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ order: type: integer maximum: 2147483647 minimum: -2147483648 required: - cost - margin - order - type - vendor_solution PriceLineItemTypeEnum: enum: - Hardware - Software - Subscription - Advisory - Implementation - Support - Managed Service type: string description: |- * `Hardware` - Hardware * `Software` - Software * `Subscription` - Subscription * `Advisory` - Advisory * `Implementation` - Implementation * `Support` - Support * `Managed Service` - Managed Service PriceVersion: type: object properties: id: type: integer readOnly: true title: type: string maxLength: 255 currency: type: string version_number: type: integer maximum: 2147483647 minimum: -2147483648 date_created: type: string format: date readOnly: true notes: type: string line_items: type: string readOnly: true one_time_total: type: string readOnly: true monthly_total: type: string readOnly: true annual_total: type: string readOnly: true total: type: string readOnly: true required: - annual_total - currency - date_created - id - line_items - monthly_total - one_time_total - title - total - version_number PriceVersionRequest: type: object properties: title: type: string minLength: 1 maxLength: 255 currency: type: string minLength: 1 version_number: type: integer maximum: 2147483647 minimum: -2147483648 notes: type: string required: - currency - title - version_number PricingTool: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string proposal: type: integer nullable: true engagement: type: integer nullable: true client_name: type: string readOnly: true association_display: type: string readOnly: true latest_version: type: string readOnly: true version_count: type: string readOnly: true created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - association_display - client_name - created_date - description - id - latest_version - modified_date - name - version_count PricingToolRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 proposal: type: integer nullable: true engagement: type: integer nullable: true required: - description - name Principle: type: object description: Serialize all Principle fields. properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string weight: type: integer maximum: 2147483647 minimum: -2147483648 description: Importance (1-10) order: type: integer maximum: 2147483647 minimum: -2147483648 created_date: type: string format: date-time readOnly: true required: - created_date - description - id - name - order PrincipleAlignment: type: object description: Serialize a PrincipleAlignment with nested principle on read and writable ``principle_id`` on write. properties: principle: allOf: - $ref: '#/components/schemas/Principle' readOnly: true alignment_score: type: integer maximum: 2147483647 minimum: -2147483648 description: Alignment score (1-5) notes: type: string required: - alignment_score - principle PrincipleAlignmentRequest: type: object description: Serialize a PrincipleAlignment with nested principle on read and writable ``principle_id`` on write. properties: principle_id: type: integer writeOnly: true alignment_score: type: integer maximum: 2147483647 minimum: -2147483648 description: Alignment score (1-5) notes: type: string required: - alignment_score - principle_id PrincipleRequest: type: object description: Serialize all Principle fields. properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 weight: type: integer maximum: 2147483647 minimum: -2147483648 description: Importance (1-10) order: type: integer maximum: 2147483647 minimum: -2147483648 required: - description - name - order Priority758Enum: enum: - High - Medium - Low type: string description: |- * `High` - High * `Medium` - Medium * `Low` - Low Proposal: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 opportunity: allOf: - $ref: '#/components/schemas/Opportunity' readOnly: true primary_contact: allOf: - $ref: '#/components/schemas/Contact' readOnly: true status: $ref: '#/components/schemas/ProposalStatusEnum' due_date: type: string format: date nullable: true submitted_date: type: string format: date nullable: true repository_url: type: string format: uri maxLength: 200 created_date: type: string format: date-time readOnly: true required: - created_date - id - name - opportunity - primary_contact - status ProposalRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 opportunity_id: type: integer writeOnly: true primary_contact_id: type: integer writeOnly: true nullable: true status: $ref: '#/components/schemas/ProposalStatusEnum' due_date: type: string format: date nullable: true submitted_date: type: string format: date nullable: true repository_url: type: string format: uri maxLength: 200 required: - name - opportunity_id - status ProposalStatusEnum: enum: - Draft - In Review - Final type: string description: |- * `Draft` - Draft * `In Review` - In Review * `Final` - Final RAIDTool: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string proposal: type: integer nullable: true engagement: type: integer nullable: true client_name: type: string readOnly: true association_display: type: string readOnly: true created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true risks: type: array items: $ref: '#/components/schemas/Risk' readOnly: true assumptions: type: array items: $ref: '#/components/schemas/Assumption' readOnly: true issues: type: array items: $ref: '#/components/schemas/Issue' readOnly: true dependencies: type: array items: $ref: '#/components/schemas/Dependency' readOnly: true required: - association_display - assumptions - client_name - created_date - dependencies - description - id - issues - modified_date - name - risks Recommendation: type: object description: |- Serialize a Recommendation with nested impacts, alignments, findings, and requirements. ``finding_ids`` and ``requirement_ids`` are write-only; on read the full nested objects are returned under ``associated_findings`` / ``associated_requirements``. ``timeframe`` is a computed read-only field (Short / Medium / Long) derived from ``implementation_days`` against fixed 30- and 180-day thresholds. properties: id: type: integer readOnly: true title: type: string maxLength: 255 description: type: string implementation_days: type: integer maximum: 2147483647 minimum: -2147483648 timeframe: type: string readOnly: true associated_findings: type: array items: $ref: '#/components/schemas/Finding' readOnly: true associated_requirements: type: array items: $ref: '#/components/schemas/Requirement' readOnly: true cost: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,2})?$ currency: type: string complexity: $ref: '#/components/schemas/ComplexityEnum' impacts: type: array items: $ref: '#/components/schemas/RecommendationImpact' readOnly: true alignments: type: array items: $ref: '#/components/schemas/PrincipleAlignment' readOnly: true created_date: type: string format: date-time readOnly: true required: - alignments - associated_findings - associated_requirements - complexity - cost - created_date - currency - description - id - impacts - implementation_days - timeframe - title RecommendationImpact: type: object description: Serialize a RecommendationImpact record (impact type, score 1–5, and notes). properties: impact_type: $ref: '#/components/schemas/ImpactTypeEnum' impact_score: type: integer maximum: 2147483647 minimum: -2147483648 description: Impact level (1-5) notes: type: string required: - impact_score - impact_type RecommendationImpactRequest: type: object description: Serialize a RecommendationImpact record (impact type, score 1–5, and notes). properties: impact_type: $ref: '#/components/schemas/ImpactTypeEnum' impact_score: type: integer maximum: 2147483647 minimum: -2147483648 description: Impact level (1-5) notes: type: string required: - impact_score - impact_type RecommendationRequest: type: object description: |- Serialize a Recommendation with nested impacts, alignments, findings, and requirements. ``finding_ids`` and ``requirement_ids`` are write-only; on read the full nested objects are returned under ``associated_findings`` / ``associated_requirements``. ``timeframe`` is a computed read-only field (Short / Medium / Long) derived from ``implementation_days`` against fixed 30- and 180-day thresholds. properties: title: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 implementation_days: type: integer maximum: 2147483647 minimum: -2147483648 finding_ids: type: array items: type: integer writeOnly: true requirement_ids: type: array items: type: integer writeOnly: true cost: type: string format: decimal pattern: ^-?\d{0,10}(?:\.\d{0,2})?$ currency: type: string minLength: 1 complexity: $ref: '#/components/schemas/ComplexityEnum' required: - complexity - cost - currency - description - implementation_days - title Requirement: type: object description: Serialize a Requirement with nested findings on read and a writable ``related_finding_ids`` list on write. properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string type: $ref: '#/components/schemas/RequirementTypeEnum' category: type: string maxLength: 100 success_measure: type: string notes: type: string related_findings: type: array items: $ref: '#/components/schemas/Finding' readOnly: true created_date: type: string format: date-time readOnly: true required: - created_date - description - id - name - related_findings - success_measure - type RequirementRequest: type: object description: Serialize a Requirement with nested findings on read and a writable ``related_finding_ids`` list on write. properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 type: $ref: '#/components/schemas/RequirementTypeEnum' category: type: string maxLength: 100 success_measure: type: string minLength: 1 notes: type: string related_finding_ids: type: array items: type: integer writeOnly: true required: - description - name - success_measure - type RequirementTypeEnum: enum: - Functional - NonFunctional type: string description: |- * `Functional` - Functional * `NonFunctional` - Non-Functional RequirementsTool: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string proposal: type: integer nullable: true engagement: type: integer nullable: true client_name: type: string readOnly: true association_display: type: string readOnly: true created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true requirements: type: array items: $ref: '#/components/schemas/Requirement' readOnly: true required: - association_display - client_name - created_date - description - id - modified_date - name - requirements Risk: type: object properties: id: type: integer readOnly: true title: type: string maxLength: 255 description: type: string probability: type: integer maximum: 2147483647 minimum: -2147483648 description: Percentage (0-100) impact: $ref: '#/components/schemas/ImpactEnum' mitigation_strategy: type: string owner: type: integer owner_name: type: string readOnly: true status: $ref: '#/components/schemas/RiskStatusEnum' due_date: type: string format: date required: - description - due_date - id - impact - mitigation_strategy - owner - owner_name - probability - status - title RiskStatusEnum: enum: - Open - Mitigating - Closed - Accepted type: string description: |- * `Open` - Open * `Mitigating` - Mitigating * `Closed` - Closed * `Accepted` - Accepted SectorEnum: enum: - Aerospace - Agriculture - Construction - Defense - Education - Entertainment - Finance - Health Care - Hospitality - Mining - Manufacturing - Technology - Transport - Utilities type: string description: |- * `Aerospace` - Aerospace * `Agriculture` - Agriculture * `Construction` - Construction * `Defense` - Defense * `Education` - Education * `Entertainment` - Entertainment * `Finance` - Finance * `Health Care` - Health Care * `Hospitality` - Hospitality * `Mining` - Mining * `Manufacturing` - Manufacturing * `Technology` - Technology * `Transport` - Transport * `Utilities` - Utilities SizeEnum: enum: - Micro - Small - Medium - Large - Enterprise type: string description: |- * `Micro` - Micro * `Small` - Small * `Medium` - Medium * `Large` - Large * `Enterprise` - Enterprise SourceEnum: enum: - Workshop - Interview - Document - Other type: string description: |- * `Workshop` - Workshop * `Interview` - Interview * `Document` - Document * `Other` - Other SourceTypeEnum: enum: - Proposal - Engagement type: string description: |- * `Proposal` - Proposal * `Engagement` - Engagement Stage: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string start_date: type: string format: date end_date: type: string format: date color: type: integer nullable: true description: Stage color (editable in admin) status: $ref: '#/components/schemas/StageStatusEnum' progress: type: integer maximum: 2147483647 minimum: -2147483648 description: Completion percentage (0-100) order: type: integer maximum: 2147483647 minimum: -2147483648 milestone: type: integer nullable: true description: Optional milestone that marks the completion of this stage duration_days: type: string readOnly: true required: - duration_days - end_date - id - name - start_date StageEnum: enum: - Prospecting - Qualification - Workshops - Proposal - Negotiation - Closed type: string description: |- * `Prospecting` - Prospecting * `Qualification` - Qualification * `Workshops` - Workshops * `Proposal` - Proposal * `Negotiation` - Negotiation * `Closed` - Closed StageRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string start_date: type: string format: date end_date: type: string format: date color: type: integer nullable: true description: Stage color (editable in admin) status: $ref: '#/components/schemas/StageStatusEnum' progress: type: integer maximum: 2147483647 minimum: -2147483648 description: Completion percentage (0-100) order: type: integer maximum: 2147483647 minimum: -2147483648 milestone: type: integer nullable: true description: Optional milestone that marks the completion of this stage required: - end_date - name - start_date StageStatusEnum: enum: - not_started - in_progress - completed - delayed - on_hold type: string description: |- * `not_started` - Not Started * `in_progress` - In Progress * `completed` - Completed * `delayed` - Delayed * `on_hold` - On Hold Stakeholder: type: object properties: id: type: integer readOnly: true contact: allOf: - $ref: '#/components/schemas/Contact' readOnly: true contact_name: type: string readOnly: true tenure: type: integer maximum: 2147483647 minimum: -2147483648 description: Years in current role solution_seek: type: string solution_avoid: type: string notes: type: string power: $ref: '#/components/schemas/PowerEnum' interest: $ref: '#/components/schemas/InterestEnum' required: - contact - contact_name - id StakeholderRequest: type: object properties: contact_id: type: integer writeOnly: true tenure: type: integer maximum: 2147483647 minimum: -2147483648 description: Years in current role solution_seek: type: string solution_avoid: type: string notes: type: string power: $ref: '#/components/schemas/PowerEnum' interest: $ref: '#/components/schemas/InterestEnum' required: - contact_id StakeholderTool: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string proposal: type: integer nullable: true engagement: type: integer nullable: true stakeholders: type: array items: $ref: '#/components/schemas/Stakeholder' readOnly: true stakeholder_count: type: string readOnly: true client_name: type: string readOnly: true association_display: type: string readOnly: true created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - association_display - client_name - created_date - description - id - modified_date - name - stakeholder_count - stakeholders StakeholderToolRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 proposal: type: integer nullable: true engagement: type: integer nullable: true required: - description - name Status49eEnum: enum: - draft - in_progress - complete - delivered type: string description: |- * `draft` - Draft * `in_progress` - In Progress * `complete` - Complete * `delivered` - Delivered Status557Enum: enum: - Planning - In Progress - On Hold - Completed - Cancelled type: string description: |- * `Planning` - Planning * `In Progress` - In Progress * `On Hold` - On Hold * `Completed` - Completed * `Cancelled` - Cancelled TEIReport: type: object description: Report template serializer with counts and the spec-style ``id`` alias. properties: id: type: string readOnly: true name: type: string description: Display name (e.g., 'Amazon Connect 2026'). maxLength: 255 vendor: type: string description: Technology vendor (e.g., 'AWS', 'Genesys'). maxLength: 255 version: type: string description: Model version (e.g., '1.0', '2.1'). maxLength: 50 description: type: string analysis_period_years: type: integer maximum: 2147483647 minimum: 0 description: Number of years included in NPV/ROI (1-10). discount_rate: type: string format: decimal pattern: ^-?\d{0,2}(?:\.\d{0,4})?$ description: Annual discount rate (e.g., 0.10 = 10%). status: $ref: '#/components/schemas/TEIReportStatusEnum' field_count: type: integer readOnly: true instance_count: type: integer readOnly: true created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true required: - created_at - field_count - id - instance_count - name - updated_at - vendor - version TEIReportField: type: object description: Field-definition serializer. properties: id: type: integer readOnly: true table: $ref: '#/components/schemas/TableEnum' field_key: type: string description: Machine identifier, unique within report. maxLength: 64 pattern: ^[-a-zA-Z0-9_]+$ label: type: string maxLength: 255 description: type: string field_type: $ref: '#/components/schemas/TEIReportFieldFieldTypeEnum' category: type: string maxLength: 100 default_value: type: string description: Pre-populated default (stored as string, cast by calculator). maxLength: 255 is_annual: type: boolean description: If True, value is collected per year (Y1..YN); if False, a single value. risk_adjustment: type: string format: decimal pattern: ^-?\d{0,1}(?:\.\d{0,4})?$ nullable: true description: Default risk adjustment (0.0-1.0); only applied to benefit fields. sort_order: type: integer maximum: 2147483647 minimum: 0 is_required: type: boolean source_notes: type: string created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true required: - created_at - field_key - field_type - id - label - table - updated_at TEIReportFieldFieldTypeEnum: enum: - currency - percentage - integer - decimal - text type: string description: |- * `currency` - Currency * `percentage` - Percentage * `integer` - Integer * `decimal` - Decimal * `text` - Text TEIReportFieldRequest: type: object description: Field-definition serializer. properties: table: $ref: '#/components/schemas/TableEnum' field_key: type: string minLength: 1 description: Machine identifier, unique within report. maxLength: 64 pattern: ^[-a-zA-Z0-9_]+$ label: type: string minLength: 1 maxLength: 255 description: type: string field_type: $ref: '#/components/schemas/TEIReportFieldFieldTypeEnum' category: type: string maxLength: 100 default_value: type: string description: Pre-populated default (stored as string, cast by calculator). maxLength: 255 is_annual: type: boolean description: If True, value is collected per year (Y1..YN); if False, a single value. risk_adjustment: type: string format: decimal pattern: ^-?\d{0,1}(?:\.\d{0,4})?$ nullable: true description: Default risk adjustment (0.0-1.0); only applied to benefit fields. sort_order: type: integer maximum: 2147483647 minimum: 0 is_required: type: boolean source_notes: type: string required: - field_key - field_type - label - table TEIReportRequest: type: object description: Report template serializer with counts and the spec-style ``id`` alias. properties: name: type: string minLength: 1 description: Display name (e.g., 'Amazon Connect 2026'). maxLength: 255 vendor: type: string minLength: 1 description: Technology vendor (e.g., 'AWS', 'Genesys'). maxLength: 255 version: type: string minLength: 1 description: Model version (e.g., '1.0', '2.1'). maxLength: 50 description: type: string analysis_period_years: type: integer maximum: 2147483647 minimum: 0 description: Number of years included in NPV/ROI (1-10). discount_rate: type: string format: decimal pattern: ^-?\d{0,2}(?:\.\d{0,4})?$ description: Annual discount rate (e.g., 0.10 = 10%). status: $ref: '#/components/schemas/TEIReportStatusEnum' required: - name - vendor - version TEIReportStatusEnum: enum: - draft - active - archived type: string description: |- * `draft` - Draft * `active` - Active * `archived` - Archived TEITool: type: object description: Read serializer for ``TEITool`` list/detail responses. properties: id: type: string readOnly: true report: type: object additionalProperties: {} readOnly: true opportunity: type: object additionalProperties: {} nullable: true readOnly: true engagement: type: object additionalProperties: {} nullable: true readOnly: true name: type: string readOnly: true status: allOf: - $ref: '#/components/schemas/Status49eEnum' readOnly: true current_version: type: integer readOnly: true description: Highest version_number among TEIVersion snapshots; 0 means none saved yet. summary: type: object additionalProperties: {} nullable: true readOnly: true created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - created_date - current_version - engagement - id - modified_date - name - opportunity - report - status - summary TEIToolCreate: type: object description: |- Write serializer for ``POST /tools/``. The report is resolved by its ``public_id``; proposal/engagement are resolved by integer PK for simplicity (matches the rest of the Athena admin/API surface). Viewset performs the duplicate-instance check. properties: report: type: string description: Report public_id (short UUID). proposal: type: integer nullable: true engagement: type: integer nullable: true name: type: string nullable: true status: allOf: - $ref: '#/components/schemas/Status49eEnum' default: draft required: - report TEIToolCreateRequest: type: object description: |- Write serializer for ``POST /tools/``. The report is resolved by its ``public_id``; proposal/engagement are resolved by integer PK for simplicity (matches the rest of the Athena admin/API surface). Viewset performs the duplicate-instance check. properties: report: type: string minLength: 1 description: Report public_id (short UUID). proposal: type: integer nullable: true engagement: type: integer nullable: true name: type: string nullable: true status: allOf: - $ref: '#/components/schemas/Status49eEnum' default: draft required: - report TEIToolUpdate: type: object description: Write serializer for ``PUT /tools/{id}/`` — only name/status are mutable. properties: name: type: string maxLength: 255 status: $ref: '#/components/schemas/Status49eEnum' required: - name TEIToolUpdateRequest: type: object description: Write serializer for ``PUT /tools/{id}/`` — only name/status are mutable. properties: name: type: string minLength: 1 maxLength: 255 status: $ref: '#/components/schemas/Status49eEnum' required: - name TableEnum: enum: - benefits - costs type: string description: |- * `benefits` - Benefits * `costs` - Costs TableSource: type: object properties: id: type: string title: type: string type: type: string app: type: string preview: type: string url: type: string nullable: true required: - app - id - preview - title - type Tag: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 50 required: - id - name TagRequest: type: object properties: name: type: string minLength: 1 maxLength: 50 required: - name TermYearsEnum: enum: - 1 - 2 - 3 - 4 - 5 type: integer description: |- * `1` - 1 Year * `2` - 2 Years * `3` - 3 Years * `4` - 4 Years * `5` - 5 Years TimeFormatEnum: enum: - 12-hour - 24-hour type: string description: |- * `12-hour` - 12-hour (3:30 PM) * `24-hour` - 24-hour (15:30) Timeline: type: object properties: id: type: integer readOnly: true title: type: string maxLength: 255 description: type: string start_date: type: string format: date end_date: type: string readOnly: true progress_percentage: type: string readOnly: true milestones: type: array items: $ref: '#/components/schemas/Milestone' readOnly: true stages: type: array items: $ref: '#/components/schemas/Stage' readOnly: true required: - end_date - id - milestones - progress_percentage - stages - start_date - title TimelineRequest: type: object properties: title: type: string minLength: 1 maxLength: 255 description: type: string start_date: type: string format: date required: - start_date - title TimelineTool: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string proposal: type: integer nullable: true engagement: type: integer nullable: true client_name: type: string readOnly: true association_display: type: string readOnly: true timelines: type: array items: $ref: '#/components/schemas/Timeline' readOnly: true timeline_count: type: string readOnly: true created_date: type: string format: date-time readOnly: true modified_date: type: string format: date-time readOnly: true required: - association_display - client_name - created_date - description - id - modified_date - name - timeline_count - timelines TimelineToolRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string minLength: 1 proposal: type: integer nullable: true engagement: type: integer nullable: true required: - description - name UserProfile: type: object description: |- User profile serializer with preference settings. Provides access to user-specific configuration including: - Date and time format preferences - Timezone settings (home and local) - UI theme customization properties: date_format: allOf: - $ref: '#/components/schemas/DateFormatEnum' description: |- Preferred date display format * `YYYY-MM-DD` - 2024-12-25 * `DD/MM/YYYY` - 25/12/2024 * `MM/DD/YYYY` - 12/25/2024 * `DD.MM.YYYY` - 25.12.2024 * `DD-MM-YYYY` - 25-12-2024 time_format: allOf: - $ref: '#/components/schemas/TimeFormatEnum' description: |- 12-hour or 24-hour time format * `12-hour` - 12-hour (3:30 PM) * `24-hour` - 24-hour (15:30) home_timezone: allOf: - $ref: '#/components/schemas/HomeTimezoneEnum' description: |- User's home/permanent timezone * `Africa/Abidjan` - Africa/Abidjan * `Africa/Accra` - Africa/Accra * `Africa/Addis_Ababa` - Africa/Addis_Ababa * `Africa/Algiers` - Africa/Algiers * `Africa/Asmara` - Africa/Asmara * `Africa/Bamako` - Africa/Bamako * `Africa/Bangui` - Africa/Bangui * `Africa/Banjul` - Africa/Banjul * `Africa/Bissau` - Africa/Bissau * `Africa/Blantyre` - Africa/Blantyre * `Africa/Brazzaville` - Africa/Brazzaville * `Africa/Bujumbura` - Africa/Bujumbura * `Africa/Cairo` - Africa/Cairo * `Africa/Casablanca` - Africa/Casablanca * `Africa/Ceuta` - Africa/Ceuta * `Africa/Conakry` - Africa/Conakry * `Africa/Dakar` - Africa/Dakar * `Africa/Dar_es_Salaam` - Africa/Dar_es_Salaam * `Africa/Djibouti` - Africa/Djibouti * `Africa/Douala` - Africa/Douala * `Africa/El_Aaiun` - Africa/El_Aaiun * `Africa/Freetown` - Africa/Freetown * `Africa/Gaborone` - Africa/Gaborone * `Africa/Harare` - Africa/Harare * `Africa/Johannesburg` - Africa/Johannesburg * `Africa/Juba` - Africa/Juba * `Africa/Kampala` - Africa/Kampala * `Africa/Khartoum` - Africa/Khartoum * `Africa/Kigali` - Africa/Kigali * `Africa/Kinshasa` - Africa/Kinshasa * `Africa/Lagos` - Africa/Lagos * `Africa/Libreville` - Africa/Libreville * `Africa/Lome` - Africa/Lome * `Africa/Luanda` - Africa/Luanda * `Africa/Lubumbashi` - Africa/Lubumbashi * `Africa/Lusaka` - Africa/Lusaka * `Africa/Malabo` - Africa/Malabo * `Africa/Maputo` - Africa/Maputo * `Africa/Maseru` - Africa/Maseru * `Africa/Mbabane` - Africa/Mbabane * `Africa/Mogadishu` - Africa/Mogadishu * `Africa/Monrovia` - Africa/Monrovia * `Africa/Nairobi` - Africa/Nairobi * `Africa/Ndjamena` - Africa/Ndjamena * `Africa/Niamey` - Africa/Niamey * `Africa/Nouakchott` - Africa/Nouakchott * `Africa/Ouagadougou` - Africa/Ouagadougou * `Africa/Porto-Novo` - Africa/Porto-Novo * `Africa/Sao_Tome` - Africa/Sao_Tome * `Africa/Tripoli` - Africa/Tripoli * `Africa/Tunis` - Africa/Tunis * `Africa/Windhoek` - Africa/Windhoek * `America/Adak` - America/Adak * `America/Anchorage` - America/Anchorage * `America/Anguilla` - America/Anguilla * `America/Antigua` - America/Antigua * `America/Araguaina` - America/Araguaina * `America/Argentina/Buenos_Aires` - America/Argentina/Buenos_Aires * `America/Argentina/Catamarca` - America/Argentina/Catamarca * `America/Argentina/Cordoba` - America/Argentina/Cordoba * `America/Argentina/Jujuy` - America/Argentina/Jujuy * `America/Argentina/La_Rioja` - America/Argentina/La_Rioja * `America/Argentina/Mendoza` - America/Argentina/Mendoza * `America/Argentina/Rio_Gallegos` - America/Argentina/Rio_Gallegos * `America/Argentina/Salta` - America/Argentina/Salta * `America/Argentina/San_Juan` - America/Argentina/San_Juan * `America/Argentina/San_Luis` - America/Argentina/San_Luis * `America/Argentina/Tucuman` - America/Argentina/Tucuman * `America/Argentina/Ushuaia` - America/Argentina/Ushuaia * `America/Aruba` - America/Aruba * `America/Asuncion` - America/Asuncion * `America/Atikokan` - America/Atikokan * `America/Bahia` - America/Bahia * `America/Bahia_Banderas` - America/Bahia_Banderas * `America/Barbados` - America/Barbados * `America/Belem` - America/Belem * `America/Belize` - America/Belize * `America/Blanc-Sablon` - America/Blanc-Sablon * `America/Boa_Vista` - America/Boa_Vista * `America/Bogota` - America/Bogota * `America/Boise` - America/Boise * `America/Cambridge_Bay` - America/Cambridge_Bay * `America/Campo_Grande` - America/Campo_Grande * `America/Cancun` - America/Cancun * `America/Caracas` - America/Caracas * `America/Cayenne` - America/Cayenne * `America/Cayman` - America/Cayman * `America/Chicago` - America/Chicago * `America/Chihuahua` - America/Chihuahua * `America/Ciudad_Juarez` - America/Ciudad_Juarez * `America/Costa_Rica` - America/Costa_Rica * `America/Coyhaique` - America/Coyhaique * `America/Creston` - America/Creston * `America/Cuiaba` - America/Cuiaba * `America/Curacao` - America/Curacao * `America/Danmarkshavn` - America/Danmarkshavn * `America/Dawson` - America/Dawson * `America/Dawson_Creek` - America/Dawson_Creek * `America/Denver` - America/Denver * `America/Detroit` - America/Detroit * `America/Dominica` - America/Dominica * `America/Edmonton` - America/Edmonton * `America/Eirunepe` - America/Eirunepe * `America/El_Salvador` - America/El_Salvador * `America/Fort_Nelson` - America/Fort_Nelson * `America/Fortaleza` - America/Fortaleza * `America/Glace_Bay` - America/Glace_Bay * `America/Goose_Bay` - America/Goose_Bay * `America/Grand_Turk` - America/Grand_Turk * `America/Grenada` - America/Grenada * `America/Guadeloupe` - America/Guadeloupe * `America/Guatemala` - America/Guatemala * `America/Guayaquil` - America/Guayaquil * `America/Guyana` - America/Guyana * `America/Halifax` - America/Halifax * `America/Havana` - America/Havana * `America/Hermosillo` - America/Hermosillo * `America/Indiana/Indianapolis` - America/Indiana/Indianapolis * `America/Indiana/Knox` - America/Indiana/Knox * `America/Indiana/Marengo` - America/Indiana/Marengo * `America/Indiana/Petersburg` - America/Indiana/Petersburg * `America/Indiana/Tell_City` - America/Indiana/Tell_City * `America/Indiana/Vevay` - America/Indiana/Vevay * `America/Indiana/Vincennes` - America/Indiana/Vincennes * `America/Indiana/Winamac` - America/Indiana/Winamac * `America/Inuvik` - America/Inuvik * `America/Iqaluit` - America/Iqaluit * `America/Jamaica` - America/Jamaica * `America/Juneau` - America/Juneau * `America/Kentucky/Louisville` - America/Kentucky/Louisville * `America/Kentucky/Monticello` - America/Kentucky/Monticello * `America/Kralendijk` - America/Kralendijk * `America/La_Paz` - America/La_Paz * `America/Lima` - America/Lima * `America/Los_Angeles` - America/Los_Angeles * `America/Lower_Princes` - America/Lower_Princes * `America/Maceio` - America/Maceio * `America/Managua` - America/Managua * `America/Manaus` - America/Manaus * `America/Marigot` - America/Marigot * `America/Martinique` - America/Martinique * `America/Matamoros` - America/Matamoros * `America/Mazatlan` - America/Mazatlan * `America/Menominee` - America/Menominee * `America/Merida` - America/Merida * `America/Metlakatla` - America/Metlakatla * `America/Mexico_City` - America/Mexico_City * `America/Miquelon` - America/Miquelon * `America/Moncton` - America/Moncton * `America/Monterrey` - America/Monterrey * `America/Montevideo` - America/Montevideo * `America/Montserrat` - America/Montserrat * `America/Nassau` - America/Nassau * `America/New_York` - America/New_York * `America/Nome` - America/Nome * `America/Noronha` - America/Noronha * `America/North_Dakota/Beulah` - America/North_Dakota/Beulah * `America/North_Dakota/Center` - America/North_Dakota/Center * `America/North_Dakota/New_Salem` - America/North_Dakota/New_Salem * `America/Nuuk` - America/Nuuk * `America/Ojinaga` - America/Ojinaga * `America/Panama` - America/Panama * `America/Paramaribo` - America/Paramaribo * `America/Phoenix` - America/Phoenix * `America/Port-au-Prince` - America/Port-au-Prince * `America/Port_of_Spain` - America/Port_of_Spain * `America/Porto_Velho` - America/Porto_Velho * `America/Puerto_Rico` - America/Puerto_Rico * `America/Punta_Arenas` - America/Punta_Arenas * `America/Rankin_Inlet` - America/Rankin_Inlet * `America/Recife` - America/Recife * `America/Regina` - America/Regina * `America/Resolute` - America/Resolute * `America/Rio_Branco` - America/Rio_Branco * `America/Santarem` - America/Santarem * `America/Santiago` - America/Santiago * `America/Santo_Domingo` - America/Santo_Domingo * `America/Sao_Paulo` - America/Sao_Paulo * `America/Scoresbysund` - America/Scoresbysund * `America/Sitka` - America/Sitka * `America/St_Barthelemy` - America/St_Barthelemy * `America/St_Johns` - America/St_Johns * `America/St_Kitts` - America/St_Kitts * `America/St_Lucia` - America/St_Lucia * `America/St_Thomas` - America/St_Thomas * `America/St_Vincent` - America/St_Vincent * `America/Swift_Current` - America/Swift_Current * `America/Tegucigalpa` - America/Tegucigalpa * `America/Thule` - America/Thule * `America/Tijuana` - America/Tijuana * `America/Toronto` - America/Toronto * `America/Tortola` - America/Tortola * `America/Vancouver` - America/Vancouver * `America/Whitehorse` - America/Whitehorse * `America/Winnipeg` - America/Winnipeg * `America/Yakutat` - America/Yakutat * `Antarctica/Casey` - Antarctica/Casey * `Antarctica/Davis` - Antarctica/Davis * `Antarctica/DumontDUrville` - Antarctica/DumontDUrville * `Antarctica/Macquarie` - Antarctica/Macquarie * `Antarctica/Mawson` - Antarctica/Mawson * `Antarctica/McMurdo` - Antarctica/McMurdo * `Antarctica/Palmer` - Antarctica/Palmer * `Antarctica/Rothera` - Antarctica/Rothera * `Antarctica/Syowa` - Antarctica/Syowa * `Antarctica/Troll` - Antarctica/Troll * `Antarctica/Vostok` - Antarctica/Vostok * `Arctic/Longyearbyen` - Arctic/Longyearbyen * `Asia/Aden` - Asia/Aden * `Asia/Almaty` - Asia/Almaty * `Asia/Amman` - Asia/Amman * `Asia/Anadyr` - Asia/Anadyr * `Asia/Aqtau` - Asia/Aqtau * `Asia/Aqtobe` - Asia/Aqtobe * `Asia/Ashgabat` - Asia/Ashgabat * `Asia/Atyrau` - Asia/Atyrau * `Asia/Baghdad` - Asia/Baghdad * `Asia/Bahrain` - Asia/Bahrain * `Asia/Baku` - Asia/Baku * `Asia/Bangkok` - Asia/Bangkok * `Asia/Barnaul` - Asia/Barnaul * `Asia/Beirut` - Asia/Beirut * `Asia/Bishkek` - Asia/Bishkek * `Asia/Brunei` - Asia/Brunei * `Asia/Chita` - Asia/Chita * `Asia/Colombo` - Asia/Colombo * `Asia/Damascus` - Asia/Damascus * `Asia/Dhaka` - Asia/Dhaka * `Asia/Dili` - Asia/Dili * `Asia/Dubai` - Asia/Dubai * `Asia/Dushanbe` - Asia/Dushanbe * `Asia/Famagusta` - Asia/Famagusta * `Asia/Gaza` - Asia/Gaza * `Asia/Hebron` - Asia/Hebron * `Asia/Ho_Chi_Minh` - Asia/Ho_Chi_Minh * `Asia/Hong_Kong` - Asia/Hong_Kong * `Asia/Hovd` - Asia/Hovd * `Asia/Irkutsk` - Asia/Irkutsk * `Asia/Jakarta` - Asia/Jakarta * `Asia/Jayapura` - Asia/Jayapura * `Asia/Jerusalem` - Asia/Jerusalem * `Asia/Kabul` - Asia/Kabul * `Asia/Kamchatka` - Asia/Kamchatka * `Asia/Karachi` - Asia/Karachi * `Asia/Kathmandu` - Asia/Kathmandu * `Asia/Khandyga` - Asia/Khandyga * `Asia/Kolkata` - Asia/Kolkata * `Asia/Krasnoyarsk` - Asia/Krasnoyarsk * `Asia/Kuala_Lumpur` - Asia/Kuala_Lumpur * `Asia/Kuching` - Asia/Kuching * `Asia/Kuwait` - Asia/Kuwait * `Asia/Macau` - Asia/Macau * `Asia/Magadan` - Asia/Magadan * `Asia/Makassar` - Asia/Makassar * `Asia/Manila` - Asia/Manila * `Asia/Muscat` - Asia/Muscat * `Asia/Nicosia` - Asia/Nicosia * `Asia/Novokuznetsk` - Asia/Novokuznetsk * `Asia/Novosibirsk` - Asia/Novosibirsk * `Asia/Omsk` - Asia/Omsk * `Asia/Oral` - Asia/Oral * `Asia/Phnom_Penh` - Asia/Phnom_Penh * `Asia/Pontianak` - Asia/Pontianak * `Asia/Pyongyang` - Asia/Pyongyang * `Asia/Qatar` - Asia/Qatar * `Asia/Qostanay` - Asia/Qostanay * `Asia/Qyzylorda` - Asia/Qyzylorda * `Asia/Riyadh` - Asia/Riyadh * `Asia/Sakhalin` - Asia/Sakhalin * `Asia/Samarkand` - Asia/Samarkand * `Asia/Seoul` - Asia/Seoul * `Asia/Shanghai` - Asia/Shanghai * `Asia/Singapore` - Asia/Singapore * `Asia/Srednekolymsk` - Asia/Srednekolymsk * `Asia/Taipei` - Asia/Taipei * `Asia/Tashkent` - Asia/Tashkent * `Asia/Tbilisi` - Asia/Tbilisi * `Asia/Tehran` - Asia/Tehran * `Asia/Thimphu` - Asia/Thimphu * `Asia/Tokyo` - Asia/Tokyo * `Asia/Tomsk` - Asia/Tomsk * `Asia/Ulaanbaatar` - Asia/Ulaanbaatar * `Asia/Urumqi` - Asia/Urumqi * `Asia/Ust-Nera` - Asia/Ust-Nera * `Asia/Vientiane` - Asia/Vientiane * `Asia/Vladivostok` - Asia/Vladivostok * `Asia/Yakutsk` - Asia/Yakutsk * `Asia/Yangon` - Asia/Yangon * `Asia/Yekaterinburg` - Asia/Yekaterinburg * `Asia/Yerevan` - Asia/Yerevan * `Atlantic/Azores` - Atlantic/Azores * `Atlantic/Bermuda` - Atlantic/Bermuda * `Atlantic/Canary` - Atlantic/Canary * `Atlantic/Cape_Verde` - Atlantic/Cape_Verde * `Atlantic/Faroe` - Atlantic/Faroe * `Atlantic/Madeira` - Atlantic/Madeira * `Atlantic/Reykjavik` - Atlantic/Reykjavik * `Atlantic/South_Georgia` - Atlantic/South_Georgia * `Atlantic/St_Helena` - Atlantic/St_Helena * `Atlantic/Stanley` - Atlantic/Stanley * `Australia/Adelaide` - Australia/Adelaide * `Australia/Brisbane` - Australia/Brisbane * `Australia/Broken_Hill` - Australia/Broken_Hill * `Australia/Darwin` - Australia/Darwin * `Australia/Eucla` - Australia/Eucla * `Australia/Hobart` - Australia/Hobart * `Australia/Lindeman` - Australia/Lindeman * `Australia/Lord_Howe` - Australia/Lord_Howe * `Australia/Melbourne` - Australia/Melbourne * `Australia/Perth` - Australia/Perth * `Australia/Sydney` - Australia/Sydney * `Europe/Amsterdam` - Europe/Amsterdam * `Europe/Andorra` - Europe/Andorra * `Europe/Astrakhan` - Europe/Astrakhan * `Europe/Athens` - Europe/Athens * `Europe/Belgrade` - Europe/Belgrade * `Europe/Berlin` - Europe/Berlin * `Europe/Bratislava` - Europe/Bratislava * `Europe/Brussels` - Europe/Brussels * `Europe/Bucharest` - Europe/Bucharest * `Europe/Budapest` - Europe/Budapest * `Europe/Busingen` - Europe/Busingen * `Europe/Chisinau` - Europe/Chisinau * `Europe/Copenhagen` - Europe/Copenhagen * `Europe/Dublin` - Europe/Dublin * `Europe/Gibraltar` - Europe/Gibraltar * `Europe/Guernsey` - Europe/Guernsey * `Europe/Helsinki` - Europe/Helsinki * `Europe/Isle_of_Man` - Europe/Isle_of_Man * `Europe/Istanbul` - Europe/Istanbul * `Europe/Jersey` - Europe/Jersey * `Europe/Kaliningrad` - Europe/Kaliningrad * `Europe/Kirov` - Europe/Kirov * `Europe/Kyiv` - Europe/Kyiv * `Europe/Lisbon` - Europe/Lisbon * `Europe/Ljubljana` - Europe/Ljubljana * `Europe/London` - Europe/London * `Europe/Luxembourg` - Europe/Luxembourg * `Europe/Madrid` - Europe/Madrid * `Europe/Malta` - Europe/Malta * `Europe/Mariehamn` - Europe/Mariehamn * `Europe/Minsk` - Europe/Minsk * `Europe/Monaco` - Europe/Monaco * `Europe/Moscow` - Europe/Moscow * `Europe/Oslo` - Europe/Oslo * `Europe/Paris` - Europe/Paris * `Europe/Podgorica` - Europe/Podgorica * `Europe/Prague` - Europe/Prague * `Europe/Riga` - Europe/Riga * `Europe/Rome` - Europe/Rome * `Europe/Samara` - Europe/Samara * `Europe/San_Marino` - Europe/San_Marino * `Europe/Sarajevo` - Europe/Sarajevo * `Europe/Saratov` - Europe/Saratov * `Europe/Simferopol` - Europe/Simferopol * `Europe/Skopje` - Europe/Skopje * `Europe/Sofia` - Europe/Sofia * `Europe/Stockholm` - Europe/Stockholm * `Europe/Tallinn` - Europe/Tallinn * `Europe/Tirane` - Europe/Tirane * `Europe/Ulyanovsk` - Europe/Ulyanovsk * `Europe/Vaduz` - Europe/Vaduz * `Europe/Vatican` - Europe/Vatican * `Europe/Vienna` - Europe/Vienna * `Europe/Vilnius` - Europe/Vilnius * `Europe/Volgograd` - Europe/Volgograd * `Europe/Warsaw` - Europe/Warsaw * `Europe/Zagreb` - Europe/Zagreb * `Europe/Zurich` - Europe/Zurich * `GMT` - GMT * `Indian/Antananarivo` - Indian/Antananarivo * `Indian/Chagos` - Indian/Chagos * `Indian/Christmas` - Indian/Christmas * `Indian/Cocos` - Indian/Cocos * `Indian/Comoro` - Indian/Comoro * `Indian/Kerguelen` - Indian/Kerguelen * `Indian/Mahe` - Indian/Mahe * `Indian/Maldives` - Indian/Maldives * `Indian/Mauritius` - Indian/Mauritius * `Indian/Mayotte` - Indian/Mayotte * `Indian/Reunion` - Indian/Reunion * `Pacific/Apia` - Pacific/Apia * `Pacific/Auckland` - Pacific/Auckland * `Pacific/Bougainville` - Pacific/Bougainville * `Pacific/Chatham` - Pacific/Chatham * `Pacific/Chuuk` - Pacific/Chuuk * `Pacific/Easter` - Pacific/Easter * `Pacific/Efate` - Pacific/Efate * `Pacific/Fakaofo` - Pacific/Fakaofo * `Pacific/Fiji` - Pacific/Fiji * `Pacific/Funafuti` - Pacific/Funafuti * `Pacific/Galapagos` - Pacific/Galapagos * `Pacific/Gambier` - Pacific/Gambier * `Pacific/Guadalcanal` - Pacific/Guadalcanal * `Pacific/Guam` - Pacific/Guam * `Pacific/Honolulu` - Pacific/Honolulu * `Pacific/Kanton` - Pacific/Kanton * `Pacific/Kiritimati` - Pacific/Kiritimati * `Pacific/Kosrae` - Pacific/Kosrae * `Pacific/Kwajalein` - Pacific/Kwajalein * `Pacific/Majuro` - Pacific/Majuro * `Pacific/Marquesas` - Pacific/Marquesas * `Pacific/Midway` - Pacific/Midway * `Pacific/Nauru` - Pacific/Nauru * `Pacific/Niue` - Pacific/Niue * `Pacific/Norfolk` - Pacific/Norfolk * `Pacific/Noumea` - Pacific/Noumea * `Pacific/Pago_Pago` - Pacific/Pago_Pago * `Pacific/Palau` - Pacific/Palau * `Pacific/Pitcairn` - Pacific/Pitcairn * `Pacific/Pohnpei` - Pacific/Pohnpei * `Pacific/Port_Moresby` - Pacific/Port_Moresby * `Pacific/Rarotonga` - Pacific/Rarotonga * `Pacific/Saipan` - Pacific/Saipan * `Pacific/Tahiti` - Pacific/Tahiti * `Pacific/Tarawa` - Pacific/Tarawa * `Pacific/Tongatapu` - Pacific/Tongatapu * `Pacific/Wake` - Pacific/Wake * `Pacific/Wallis` - Pacific/Wallis * `UTC` - UTC local_timezone: nullable: true description: |- User's current local timezone (if traveling) * `Africa/Abidjan` - Africa/Abidjan * `Africa/Accra` - Africa/Accra * `Africa/Addis_Ababa` - Africa/Addis_Ababa * `Africa/Algiers` - Africa/Algiers * `Africa/Asmara` - Africa/Asmara * `Africa/Bamako` - Africa/Bamako * `Africa/Bangui` - Africa/Bangui * `Africa/Banjul` - Africa/Banjul * `Africa/Bissau` - Africa/Bissau * `Africa/Blantyre` - Africa/Blantyre * `Africa/Brazzaville` - Africa/Brazzaville * `Africa/Bujumbura` - Africa/Bujumbura * `Africa/Cairo` - Africa/Cairo * `Africa/Casablanca` - Africa/Casablanca * `Africa/Ceuta` - Africa/Ceuta * `Africa/Conakry` - Africa/Conakry * `Africa/Dakar` - Africa/Dakar * `Africa/Dar_es_Salaam` - Africa/Dar_es_Salaam * `Africa/Djibouti` - Africa/Djibouti * `Africa/Douala` - Africa/Douala * `Africa/El_Aaiun` - Africa/El_Aaiun * `Africa/Freetown` - Africa/Freetown * `Africa/Gaborone` - Africa/Gaborone * `Africa/Harare` - Africa/Harare * `Africa/Johannesburg` - Africa/Johannesburg * `Africa/Juba` - Africa/Juba * `Africa/Kampala` - Africa/Kampala * `Africa/Khartoum` - Africa/Khartoum * `Africa/Kigali` - Africa/Kigali * `Africa/Kinshasa` - Africa/Kinshasa * `Africa/Lagos` - Africa/Lagos * `Africa/Libreville` - Africa/Libreville * `Africa/Lome` - Africa/Lome * `Africa/Luanda` - Africa/Luanda * `Africa/Lubumbashi` - Africa/Lubumbashi * `Africa/Lusaka` - Africa/Lusaka * `Africa/Malabo` - Africa/Malabo * `Africa/Maputo` - Africa/Maputo * `Africa/Maseru` - Africa/Maseru * `Africa/Mbabane` - Africa/Mbabane * `Africa/Mogadishu` - Africa/Mogadishu * `Africa/Monrovia` - Africa/Monrovia * `Africa/Nairobi` - Africa/Nairobi * `Africa/Ndjamena` - Africa/Ndjamena * `Africa/Niamey` - Africa/Niamey * `Africa/Nouakchott` - Africa/Nouakchott * `Africa/Ouagadougou` - Africa/Ouagadougou * `Africa/Porto-Novo` - Africa/Porto-Novo * `Africa/Sao_Tome` - Africa/Sao_Tome * `Africa/Tripoli` - Africa/Tripoli * `Africa/Tunis` - Africa/Tunis * `Africa/Windhoek` - Africa/Windhoek * `America/Adak` - America/Adak * `America/Anchorage` - America/Anchorage * `America/Anguilla` - America/Anguilla * `America/Antigua` - America/Antigua * `America/Araguaina` - America/Araguaina * `America/Argentina/Buenos_Aires` - America/Argentina/Buenos_Aires * `America/Argentina/Catamarca` - America/Argentina/Catamarca * `America/Argentina/Cordoba` - America/Argentina/Cordoba * `America/Argentina/Jujuy` - America/Argentina/Jujuy * `America/Argentina/La_Rioja` - America/Argentina/La_Rioja * `America/Argentina/Mendoza` - America/Argentina/Mendoza * `America/Argentina/Rio_Gallegos` - America/Argentina/Rio_Gallegos * `America/Argentina/Salta` - America/Argentina/Salta * `America/Argentina/San_Juan` - America/Argentina/San_Juan * `America/Argentina/San_Luis` - America/Argentina/San_Luis * `America/Argentina/Tucuman` - America/Argentina/Tucuman * `America/Argentina/Ushuaia` - America/Argentina/Ushuaia * `America/Aruba` - America/Aruba * `America/Asuncion` - America/Asuncion * `America/Atikokan` - America/Atikokan * `America/Bahia` - America/Bahia * `America/Bahia_Banderas` - America/Bahia_Banderas * `America/Barbados` - America/Barbados * `America/Belem` - America/Belem * `America/Belize` - America/Belize * `America/Blanc-Sablon` - America/Blanc-Sablon * `America/Boa_Vista` - America/Boa_Vista * `America/Bogota` - America/Bogota * `America/Boise` - America/Boise * `America/Cambridge_Bay` - America/Cambridge_Bay * `America/Campo_Grande` - America/Campo_Grande * `America/Cancun` - America/Cancun * `America/Caracas` - America/Caracas * `America/Cayenne` - America/Cayenne * `America/Cayman` - America/Cayman * `America/Chicago` - America/Chicago * `America/Chihuahua` - America/Chihuahua * `America/Ciudad_Juarez` - America/Ciudad_Juarez * `America/Costa_Rica` - America/Costa_Rica * `America/Coyhaique` - America/Coyhaique * `America/Creston` - America/Creston * `America/Cuiaba` - America/Cuiaba * `America/Curacao` - America/Curacao * `America/Danmarkshavn` - America/Danmarkshavn * `America/Dawson` - America/Dawson * `America/Dawson_Creek` - America/Dawson_Creek * `America/Denver` - America/Denver * `America/Detroit` - America/Detroit * `America/Dominica` - America/Dominica * `America/Edmonton` - America/Edmonton * `America/Eirunepe` - America/Eirunepe * `America/El_Salvador` - America/El_Salvador * `America/Fort_Nelson` - America/Fort_Nelson * `America/Fortaleza` - America/Fortaleza * `America/Glace_Bay` - America/Glace_Bay * `America/Goose_Bay` - America/Goose_Bay * `America/Grand_Turk` - America/Grand_Turk * `America/Grenada` - America/Grenada * `America/Guadeloupe` - America/Guadeloupe * `America/Guatemala` - America/Guatemala * `America/Guayaquil` - America/Guayaquil * `America/Guyana` - America/Guyana * `America/Halifax` - America/Halifax * `America/Havana` - America/Havana * `America/Hermosillo` - America/Hermosillo * `America/Indiana/Indianapolis` - America/Indiana/Indianapolis * `America/Indiana/Knox` - America/Indiana/Knox * `America/Indiana/Marengo` - America/Indiana/Marengo * `America/Indiana/Petersburg` - America/Indiana/Petersburg * `America/Indiana/Tell_City` - America/Indiana/Tell_City * `America/Indiana/Vevay` - America/Indiana/Vevay * `America/Indiana/Vincennes` - America/Indiana/Vincennes * `America/Indiana/Winamac` - America/Indiana/Winamac * `America/Inuvik` - America/Inuvik * `America/Iqaluit` - America/Iqaluit * `America/Jamaica` - America/Jamaica * `America/Juneau` - America/Juneau * `America/Kentucky/Louisville` - America/Kentucky/Louisville * `America/Kentucky/Monticello` - America/Kentucky/Monticello * `America/Kralendijk` - America/Kralendijk * `America/La_Paz` - America/La_Paz * `America/Lima` - America/Lima * `America/Los_Angeles` - America/Los_Angeles * `America/Lower_Princes` - America/Lower_Princes * `America/Maceio` - America/Maceio * `America/Managua` - America/Managua * `America/Manaus` - America/Manaus * `America/Marigot` - America/Marigot * `America/Martinique` - America/Martinique * `America/Matamoros` - America/Matamoros * `America/Mazatlan` - America/Mazatlan * `America/Menominee` - America/Menominee * `America/Merida` - America/Merida * `America/Metlakatla` - America/Metlakatla * `America/Mexico_City` - America/Mexico_City * `America/Miquelon` - America/Miquelon * `America/Moncton` - America/Moncton * `America/Monterrey` - America/Monterrey * `America/Montevideo` - America/Montevideo * `America/Montserrat` - America/Montserrat * `America/Nassau` - America/Nassau * `America/New_York` - America/New_York * `America/Nome` - America/Nome * `America/Noronha` - America/Noronha * `America/North_Dakota/Beulah` - America/North_Dakota/Beulah * `America/North_Dakota/Center` - America/North_Dakota/Center * `America/North_Dakota/New_Salem` - America/North_Dakota/New_Salem * `America/Nuuk` - America/Nuuk * `America/Ojinaga` - America/Ojinaga * `America/Panama` - America/Panama * `America/Paramaribo` - America/Paramaribo * `America/Phoenix` - America/Phoenix * `America/Port-au-Prince` - America/Port-au-Prince * `America/Port_of_Spain` - America/Port_of_Spain * `America/Porto_Velho` - America/Porto_Velho * `America/Puerto_Rico` - America/Puerto_Rico * `America/Punta_Arenas` - America/Punta_Arenas * `America/Rankin_Inlet` - America/Rankin_Inlet * `America/Recife` - America/Recife * `America/Regina` - America/Regina * `America/Resolute` - America/Resolute * `America/Rio_Branco` - America/Rio_Branco * `America/Santarem` - America/Santarem * `America/Santiago` - America/Santiago * `America/Santo_Domingo` - America/Santo_Domingo * `America/Sao_Paulo` - America/Sao_Paulo * `America/Scoresbysund` - America/Scoresbysund * `America/Sitka` - America/Sitka * `America/St_Barthelemy` - America/St_Barthelemy * `America/St_Johns` - America/St_Johns * `America/St_Kitts` - America/St_Kitts * `America/St_Lucia` - America/St_Lucia * `America/St_Thomas` - America/St_Thomas * `America/St_Vincent` - America/St_Vincent * `America/Swift_Current` - America/Swift_Current * `America/Tegucigalpa` - America/Tegucigalpa * `America/Thule` - America/Thule * `America/Tijuana` - America/Tijuana * `America/Toronto` - America/Toronto * `America/Tortola` - America/Tortola * `America/Vancouver` - America/Vancouver * `America/Whitehorse` - America/Whitehorse * `America/Winnipeg` - America/Winnipeg * `America/Yakutat` - America/Yakutat * `Antarctica/Casey` - Antarctica/Casey * `Antarctica/Davis` - Antarctica/Davis * `Antarctica/DumontDUrville` - Antarctica/DumontDUrville * `Antarctica/Macquarie` - Antarctica/Macquarie * `Antarctica/Mawson` - Antarctica/Mawson * `Antarctica/McMurdo` - Antarctica/McMurdo * `Antarctica/Palmer` - Antarctica/Palmer * `Antarctica/Rothera` - Antarctica/Rothera * `Antarctica/Syowa` - Antarctica/Syowa * `Antarctica/Troll` - Antarctica/Troll * `Antarctica/Vostok` - Antarctica/Vostok * `Arctic/Longyearbyen` - Arctic/Longyearbyen * `Asia/Aden` - Asia/Aden * `Asia/Almaty` - Asia/Almaty * `Asia/Amman` - Asia/Amman * `Asia/Anadyr` - Asia/Anadyr * `Asia/Aqtau` - Asia/Aqtau * `Asia/Aqtobe` - Asia/Aqtobe * `Asia/Ashgabat` - Asia/Ashgabat * `Asia/Atyrau` - Asia/Atyrau * `Asia/Baghdad` - Asia/Baghdad * `Asia/Bahrain` - Asia/Bahrain * `Asia/Baku` - Asia/Baku * `Asia/Bangkok` - Asia/Bangkok * `Asia/Barnaul` - Asia/Barnaul * `Asia/Beirut` - Asia/Beirut * `Asia/Bishkek` - Asia/Bishkek * `Asia/Brunei` - Asia/Brunei * `Asia/Chita` - Asia/Chita * `Asia/Colombo` - Asia/Colombo * `Asia/Damascus` - Asia/Damascus * `Asia/Dhaka` - Asia/Dhaka * `Asia/Dili` - Asia/Dili * `Asia/Dubai` - Asia/Dubai * `Asia/Dushanbe` - Asia/Dushanbe * `Asia/Famagusta` - Asia/Famagusta * `Asia/Gaza` - Asia/Gaza * `Asia/Hebron` - Asia/Hebron * `Asia/Ho_Chi_Minh` - Asia/Ho_Chi_Minh * `Asia/Hong_Kong` - Asia/Hong_Kong * `Asia/Hovd` - Asia/Hovd * `Asia/Irkutsk` - Asia/Irkutsk * `Asia/Jakarta` - Asia/Jakarta * `Asia/Jayapura` - Asia/Jayapura * `Asia/Jerusalem` - Asia/Jerusalem * `Asia/Kabul` - Asia/Kabul * `Asia/Kamchatka` - Asia/Kamchatka * `Asia/Karachi` - Asia/Karachi * `Asia/Kathmandu` - Asia/Kathmandu * `Asia/Khandyga` - Asia/Khandyga * `Asia/Kolkata` - Asia/Kolkata * `Asia/Krasnoyarsk` - Asia/Krasnoyarsk * `Asia/Kuala_Lumpur` - Asia/Kuala_Lumpur * `Asia/Kuching` - Asia/Kuching * `Asia/Kuwait` - Asia/Kuwait * `Asia/Macau` - Asia/Macau * `Asia/Magadan` - Asia/Magadan * `Asia/Makassar` - Asia/Makassar * `Asia/Manila` - Asia/Manila * `Asia/Muscat` - Asia/Muscat * `Asia/Nicosia` - Asia/Nicosia * `Asia/Novokuznetsk` - Asia/Novokuznetsk * `Asia/Novosibirsk` - Asia/Novosibirsk * `Asia/Omsk` - Asia/Omsk * `Asia/Oral` - Asia/Oral * `Asia/Phnom_Penh` - Asia/Phnom_Penh * `Asia/Pontianak` - Asia/Pontianak * `Asia/Pyongyang` - Asia/Pyongyang * `Asia/Qatar` - Asia/Qatar * `Asia/Qostanay` - Asia/Qostanay * `Asia/Qyzylorda` - Asia/Qyzylorda * `Asia/Riyadh` - Asia/Riyadh * `Asia/Sakhalin` - Asia/Sakhalin * `Asia/Samarkand` - Asia/Samarkand * `Asia/Seoul` - Asia/Seoul * `Asia/Shanghai` - Asia/Shanghai * `Asia/Singapore` - Asia/Singapore * `Asia/Srednekolymsk` - Asia/Srednekolymsk * `Asia/Taipei` - Asia/Taipei * `Asia/Tashkent` - Asia/Tashkent * `Asia/Tbilisi` - Asia/Tbilisi * `Asia/Tehran` - Asia/Tehran * `Asia/Thimphu` - Asia/Thimphu * `Asia/Tokyo` - Asia/Tokyo * `Asia/Tomsk` - Asia/Tomsk * `Asia/Ulaanbaatar` - Asia/Ulaanbaatar * `Asia/Urumqi` - Asia/Urumqi * `Asia/Ust-Nera` - Asia/Ust-Nera * `Asia/Vientiane` - Asia/Vientiane * `Asia/Vladivostok` - Asia/Vladivostok * `Asia/Yakutsk` - Asia/Yakutsk * `Asia/Yangon` - Asia/Yangon * `Asia/Yekaterinburg` - Asia/Yekaterinburg * `Asia/Yerevan` - Asia/Yerevan * `Atlantic/Azores` - Atlantic/Azores * `Atlantic/Bermuda` - Atlantic/Bermuda * `Atlantic/Canary` - Atlantic/Canary * `Atlantic/Cape_Verde` - Atlantic/Cape_Verde * `Atlantic/Faroe` - Atlantic/Faroe * `Atlantic/Madeira` - Atlantic/Madeira * `Atlantic/Reykjavik` - Atlantic/Reykjavik * `Atlantic/South_Georgia` - Atlantic/South_Georgia * `Atlantic/St_Helena` - Atlantic/St_Helena * `Atlantic/Stanley` - Atlantic/Stanley * `Australia/Adelaide` - Australia/Adelaide * `Australia/Brisbane` - Australia/Brisbane * `Australia/Broken_Hill` - Australia/Broken_Hill * `Australia/Darwin` - Australia/Darwin * `Australia/Eucla` - Australia/Eucla * `Australia/Hobart` - Australia/Hobart * `Australia/Lindeman` - Australia/Lindeman * `Australia/Lord_Howe` - Australia/Lord_Howe * `Australia/Melbourne` - Australia/Melbourne * `Australia/Perth` - Australia/Perth * `Australia/Sydney` - Australia/Sydney * `Europe/Amsterdam` - Europe/Amsterdam * `Europe/Andorra` - Europe/Andorra * `Europe/Astrakhan` - Europe/Astrakhan * `Europe/Athens` - Europe/Athens * `Europe/Belgrade` - Europe/Belgrade * `Europe/Berlin` - Europe/Berlin * `Europe/Bratislava` - Europe/Bratislava * `Europe/Brussels` - Europe/Brussels * `Europe/Bucharest` - Europe/Bucharest * `Europe/Budapest` - Europe/Budapest * `Europe/Busingen` - Europe/Busingen * `Europe/Chisinau` - Europe/Chisinau * `Europe/Copenhagen` - Europe/Copenhagen * `Europe/Dublin` - Europe/Dublin * `Europe/Gibraltar` - Europe/Gibraltar * `Europe/Guernsey` - Europe/Guernsey * `Europe/Helsinki` - Europe/Helsinki * `Europe/Isle_of_Man` - Europe/Isle_of_Man * `Europe/Istanbul` - Europe/Istanbul * `Europe/Jersey` - Europe/Jersey * `Europe/Kaliningrad` - Europe/Kaliningrad * `Europe/Kirov` - Europe/Kirov * `Europe/Kyiv` - Europe/Kyiv * `Europe/Lisbon` - Europe/Lisbon * `Europe/Ljubljana` - Europe/Ljubljana * `Europe/London` - Europe/London * `Europe/Luxembourg` - Europe/Luxembourg * `Europe/Madrid` - Europe/Madrid * `Europe/Malta` - Europe/Malta * `Europe/Mariehamn` - Europe/Mariehamn * `Europe/Minsk` - Europe/Minsk * `Europe/Monaco` - Europe/Monaco * `Europe/Moscow` - Europe/Moscow * `Europe/Oslo` - Europe/Oslo * `Europe/Paris` - Europe/Paris * `Europe/Podgorica` - Europe/Podgorica * `Europe/Prague` - Europe/Prague * `Europe/Riga` - Europe/Riga * `Europe/Rome` - Europe/Rome * `Europe/Samara` - Europe/Samara * `Europe/San_Marino` - Europe/San_Marino * `Europe/Sarajevo` - Europe/Sarajevo * `Europe/Saratov` - Europe/Saratov * `Europe/Simferopol` - Europe/Simferopol * `Europe/Skopje` - Europe/Skopje * `Europe/Sofia` - Europe/Sofia * `Europe/Stockholm` - Europe/Stockholm * `Europe/Tallinn` - Europe/Tallinn * `Europe/Tirane` - Europe/Tirane * `Europe/Ulyanovsk` - Europe/Ulyanovsk * `Europe/Vaduz` - Europe/Vaduz * `Europe/Vatican` - Europe/Vatican * `Europe/Vienna` - Europe/Vienna * `Europe/Vilnius` - Europe/Vilnius * `Europe/Volgograd` - Europe/Volgograd * `Europe/Warsaw` - Europe/Warsaw * `Europe/Zagreb` - Europe/Zagreb * `Europe/Zurich` - Europe/Zurich * `GMT` - GMT * `Indian/Antananarivo` - Indian/Antananarivo * `Indian/Chagos` - Indian/Chagos * `Indian/Christmas` - Indian/Christmas * `Indian/Cocos` - Indian/Cocos * `Indian/Comoro` - Indian/Comoro * `Indian/Kerguelen` - Indian/Kerguelen * `Indian/Mahe` - Indian/Mahe * `Indian/Maldives` - Indian/Maldives * `Indian/Mauritius` - Indian/Mauritius * `Indian/Mayotte` - Indian/Mayotte * `Indian/Reunion` - Indian/Reunion * `Pacific/Apia` - Pacific/Apia * `Pacific/Auckland` - Pacific/Auckland * `Pacific/Bougainville` - Pacific/Bougainville * `Pacific/Chatham` - Pacific/Chatham * `Pacific/Chuuk` - Pacific/Chuuk * `Pacific/Easter` - Pacific/Easter * `Pacific/Efate` - Pacific/Efate * `Pacific/Fakaofo` - Pacific/Fakaofo * `Pacific/Fiji` - Pacific/Fiji * `Pacific/Funafuti` - Pacific/Funafuti * `Pacific/Galapagos` - Pacific/Galapagos * `Pacific/Gambier` - Pacific/Gambier * `Pacific/Guadalcanal` - Pacific/Guadalcanal * `Pacific/Guam` - Pacific/Guam * `Pacific/Honolulu` - Pacific/Honolulu * `Pacific/Kanton` - Pacific/Kanton * `Pacific/Kiritimati` - Pacific/Kiritimati * `Pacific/Kosrae` - Pacific/Kosrae * `Pacific/Kwajalein` - Pacific/Kwajalein * `Pacific/Majuro` - Pacific/Majuro * `Pacific/Marquesas` - Pacific/Marquesas * `Pacific/Midway` - Pacific/Midway * `Pacific/Nauru` - Pacific/Nauru * `Pacific/Niue` - Pacific/Niue * `Pacific/Norfolk` - Pacific/Norfolk * `Pacific/Noumea` - Pacific/Noumea * `Pacific/Pago_Pago` - Pacific/Pago_Pago * `Pacific/Palau` - Pacific/Palau * `Pacific/Pitcairn` - Pacific/Pitcairn * `Pacific/Pohnpei` - Pacific/Pohnpei * `Pacific/Port_Moresby` - Pacific/Port_Moresby * `Pacific/Rarotonga` - Pacific/Rarotonga * `Pacific/Saipan` - Pacific/Saipan * `Pacific/Tahiti` - Pacific/Tahiti * `Pacific/Tarawa` - Pacific/Tarawa * `Pacific/Tongatapu` - Pacific/Tongatapu * `Pacific/Wake` - Pacific/Wake * `Pacific/Wallis` - Pacific/Wallis * `UTC` - UTC oneOf: - $ref: '#/components/schemas/LocalTimezoneEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' bootswatch_theme: type: integer nullable: true description: Bootswatch theme for light mode UserProfileRequest: type: object description: |- User profile serializer with preference settings. Provides access to user-specific configuration including: - Date and time format preferences - Timezone settings (home and local) - UI theme customization properties: date_format: allOf: - $ref: '#/components/schemas/DateFormatEnum' description: |- Preferred date display format * `YYYY-MM-DD` - 2024-12-25 * `DD/MM/YYYY` - 25/12/2024 * `MM/DD/YYYY` - 12/25/2024 * `DD.MM.YYYY` - 25.12.2024 * `DD-MM-YYYY` - 25-12-2024 time_format: allOf: - $ref: '#/components/schemas/TimeFormatEnum' description: |- 12-hour or 24-hour time format * `12-hour` - 12-hour (3:30 PM) * `24-hour` - 24-hour (15:30) home_timezone: allOf: - $ref: '#/components/schemas/HomeTimezoneEnum' description: |- User's home/permanent timezone * `Africa/Abidjan` - Africa/Abidjan * `Africa/Accra` - Africa/Accra * `Africa/Addis_Ababa` - Africa/Addis_Ababa * `Africa/Algiers` - Africa/Algiers * `Africa/Asmara` - Africa/Asmara * `Africa/Bamako` - Africa/Bamako * `Africa/Bangui` - Africa/Bangui * `Africa/Banjul` - Africa/Banjul * `Africa/Bissau` - Africa/Bissau * `Africa/Blantyre` - Africa/Blantyre * `Africa/Brazzaville` - Africa/Brazzaville * `Africa/Bujumbura` - Africa/Bujumbura * `Africa/Cairo` - Africa/Cairo * `Africa/Casablanca` - Africa/Casablanca * `Africa/Ceuta` - Africa/Ceuta * `Africa/Conakry` - Africa/Conakry * `Africa/Dakar` - Africa/Dakar * `Africa/Dar_es_Salaam` - Africa/Dar_es_Salaam * `Africa/Djibouti` - Africa/Djibouti * `Africa/Douala` - Africa/Douala * `Africa/El_Aaiun` - Africa/El_Aaiun * `Africa/Freetown` - Africa/Freetown * `Africa/Gaborone` - Africa/Gaborone * `Africa/Harare` - Africa/Harare * `Africa/Johannesburg` - Africa/Johannesburg * `Africa/Juba` - Africa/Juba * `Africa/Kampala` - Africa/Kampala * `Africa/Khartoum` - Africa/Khartoum * `Africa/Kigali` - Africa/Kigali * `Africa/Kinshasa` - Africa/Kinshasa * `Africa/Lagos` - Africa/Lagos * `Africa/Libreville` - Africa/Libreville * `Africa/Lome` - Africa/Lome * `Africa/Luanda` - Africa/Luanda * `Africa/Lubumbashi` - Africa/Lubumbashi * `Africa/Lusaka` - Africa/Lusaka * `Africa/Malabo` - Africa/Malabo * `Africa/Maputo` - Africa/Maputo * `Africa/Maseru` - Africa/Maseru * `Africa/Mbabane` - Africa/Mbabane * `Africa/Mogadishu` - Africa/Mogadishu * `Africa/Monrovia` - Africa/Monrovia * `Africa/Nairobi` - Africa/Nairobi * `Africa/Ndjamena` - Africa/Ndjamena * `Africa/Niamey` - Africa/Niamey * `Africa/Nouakchott` - Africa/Nouakchott * `Africa/Ouagadougou` - Africa/Ouagadougou * `Africa/Porto-Novo` - Africa/Porto-Novo * `Africa/Sao_Tome` - Africa/Sao_Tome * `Africa/Tripoli` - Africa/Tripoli * `Africa/Tunis` - Africa/Tunis * `Africa/Windhoek` - Africa/Windhoek * `America/Adak` - America/Adak * `America/Anchorage` - America/Anchorage * `America/Anguilla` - America/Anguilla * `America/Antigua` - America/Antigua * `America/Araguaina` - America/Araguaina * `America/Argentina/Buenos_Aires` - America/Argentina/Buenos_Aires * `America/Argentina/Catamarca` - America/Argentina/Catamarca * `America/Argentina/Cordoba` - America/Argentina/Cordoba * `America/Argentina/Jujuy` - America/Argentina/Jujuy * `America/Argentina/La_Rioja` - America/Argentina/La_Rioja * `America/Argentina/Mendoza` - America/Argentina/Mendoza * `America/Argentina/Rio_Gallegos` - America/Argentina/Rio_Gallegos * `America/Argentina/Salta` - America/Argentina/Salta * `America/Argentina/San_Juan` - America/Argentina/San_Juan * `America/Argentina/San_Luis` - America/Argentina/San_Luis * `America/Argentina/Tucuman` - America/Argentina/Tucuman * `America/Argentina/Ushuaia` - America/Argentina/Ushuaia * `America/Aruba` - America/Aruba * `America/Asuncion` - America/Asuncion * `America/Atikokan` - America/Atikokan * `America/Bahia` - America/Bahia * `America/Bahia_Banderas` - America/Bahia_Banderas * `America/Barbados` - America/Barbados * `America/Belem` - America/Belem * `America/Belize` - America/Belize * `America/Blanc-Sablon` - America/Blanc-Sablon * `America/Boa_Vista` - America/Boa_Vista * `America/Bogota` - America/Bogota * `America/Boise` - America/Boise * `America/Cambridge_Bay` - America/Cambridge_Bay * `America/Campo_Grande` - America/Campo_Grande * `America/Cancun` - America/Cancun * `America/Caracas` - America/Caracas * `America/Cayenne` - America/Cayenne * `America/Cayman` - America/Cayman * `America/Chicago` - America/Chicago * `America/Chihuahua` - America/Chihuahua * `America/Ciudad_Juarez` - America/Ciudad_Juarez * `America/Costa_Rica` - America/Costa_Rica * `America/Coyhaique` - America/Coyhaique * `America/Creston` - America/Creston * `America/Cuiaba` - America/Cuiaba * `America/Curacao` - America/Curacao * `America/Danmarkshavn` - America/Danmarkshavn * `America/Dawson` - America/Dawson * `America/Dawson_Creek` - America/Dawson_Creek * `America/Denver` - America/Denver * `America/Detroit` - America/Detroit * `America/Dominica` - America/Dominica * `America/Edmonton` - America/Edmonton * `America/Eirunepe` - America/Eirunepe * `America/El_Salvador` - America/El_Salvador * `America/Fort_Nelson` - America/Fort_Nelson * `America/Fortaleza` - America/Fortaleza * `America/Glace_Bay` - America/Glace_Bay * `America/Goose_Bay` - America/Goose_Bay * `America/Grand_Turk` - America/Grand_Turk * `America/Grenada` - America/Grenada * `America/Guadeloupe` - America/Guadeloupe * `America/Guatemala` - America/Guatemala * `America/Guayaquil` - America/Guayaquil * `America/Guyana` - America/Guyana * `America/Halifax` - America/Halifax * `America/Havana` - America/Havana * `America/Hermosillo` - America/Hermosillo * `America/Indiana/Indianapolis` - America/Indiana/Indianapolis * `America/Indiana/Knox` - America/Indiana/Knox * `America/Indiana/Marengo` - America/Indiana/Marengo * `America/Indiana/Petersburg` - America/Indiana/Petersburg * `America/Indiana/Tell_City` - America/Indiana/Tell_City * `America/Indiana/Vevay` - America/Indiana/Vevay * `America/Indiana/Vincennes` - America/Indiana/Vincennes * `America/Indiana/Winamac` - America/Indiana/Winamac * `America/Inuvik` - America/Inuvik * `America/Iqaluit` - America/Iqaluit * `America/Jamaica` - America/Jamaica * `America/Juneau` - America/Juneau * `America/Kentucky/Louisville` - America/Kentucky/Louisville * `America/Kentucky/Monticello` - America/Kentucky/Monticello * `America/Kralendijk` - America/Kralendijk * `America/La_Paz` - America/La_Paz * `America/Lima` - America/Lima * `America/Los_Angeles` - America/Los_Angeles * `America/Lower_Princes` - America/Lower_Princes * `America/Maceio` - America/Maceio * `America/Managua` - America/Managua * `America/Manaus` - America/Manaus * `America/Marigot` - America/Marigot * `America/Martinique` - America/Martinique * `America/Matamoros` - America/Matamoros * `America/Mazatlan` - America/Mazatlan * `America/Menominee` - America/Menominee * `America/Merida` - America/Merida * `America/Metlakatla` - America/Metlakatla * `America/Mexico_City` - America/Mexico_City * `America/Miquelon` - America/Miquelon * `America/Moncton` - America/Moncton * `America/Monterrey` - America/Monterrey * `America/Montevideo` - America/Montevideo * `America/Montserrat` - America/Montserrat * `America/Nassau` - America/Nassau * `America/New_York` - America/New_York * `America/Nome` - America/Nome * `America/Noronha` - America/Noronha * `America/North_Dakota/Beulah` - America/North_Dakota/Beulah * `America/North_Dakota/Center` - America/North_Dakota/Center * `America/North_Dakota/New_Salem` - America/North_Dakota/New_Salem * `America/Nuuk` - America/Nuuk * `America/Ojinaga` - America/Ojinaga * `America/Panama` - America/Panama * `America/Paramaribo` - America/Paramaribo * `America/Phoenix` - America/Phoenix * `America/Port-au-Prince` - America/Port-au-Prince * `America/Port_of_Spain` - America/Port_of_Spain * `America/Porto_Velho` - America/Porto_Velho * `America/Puerto_Rico` - America/Puerto_Rico * `America/Punta_Arenas` - America/Punta_Arenas * `America/Rankin_Inlet` - America/Rankin_Inlet * `America/Recife` - America/Recife * `America/Regina` - America/Regina * `America/Resolute` - America/Resolute * `America/Rio_Branco` - America/Rio_Branco * `America/Santarem` - America/Santarem * `America/Santiago` - America/Santiago * `America/Santo_Domingo` - America/Santo_Domingo * `America/Sao_Paulo` - America/Sao_Paulo * `America/Scoresbysund` - America/Scoresbysund * `America/Sitka` - America/Sitka * `America/St_Barthelemy` - America/St_Barthelemy * `America/St_Johns` - America/St_Johns * `America/St_Kitts` - America/St_Kitts * `America/St_Lucia` - America/St_Lucia * `America/St_Thomas` - America/St_Thomas * `America/St_Vincent` - America/St_Vincent * `America/Swift_Current` - America/Swift_Current * `America/Tegucigalpa` - America/Tegucigalpa * `America/Thule` - America/Thule * `America/Tijuana` - America/Tijuana * `America/Toronto` - America/Toronto * `America/Tortola` - America/Tortola * `America/Vancouver` - America/Vancouver * `America/Whitehorse` - America/Whitehorse * `America/Winnipeg` - America/Winnipeg * `America/Yakutat` - America/Yakutat * `Antarctica/Casey` - Antarctica/Casey * `Antarctica/Davis` - Antarctica/Davis * `Antarctica/DumontDUrville` - Antarctica/DumontDUrville * `Antarctica/Macquarie` - Antarctica/Macquarie * `Antarctica/Mawson` - Antarctica/Mawson * `Antarctica/McMurdo` - Antarctica/McMurdo * `Antarctica/Palmer` - Antarctica/Palmer * `Antarctica/Rothera` - Antarctica/Rothera * `Antarctica/Syowa` - Antarctica/Syowa * `Antarctica/Troll` - Antarctica/Troll * `Antarctica/Vostok` - Antarctica/Vostok * `Arctic/Longyearbyen` - Arctic/Longyearbyen * `Asia/Aden` - Asia/Aden * `Asia/Almaty` - Asia/Almaty * `Asia/Amman` - Asia/Amman * `Asia/Anadyr` - Asia/Anadyr * `Asia/Aqtau` - Asia/Aqtau * `Asia/Aqtobe` - Asia/Aqtobe * `Asia/Ashgabat` - Asia/Ashgabat * `Asia/Atyrau` - Asia/Atyrau * `Asia/Baghdad` - Asia/Baghdad * `Asia/Bahrain` - Asia/Bahrain * `Asia/Baku` - Asia/Baku * `Asia/Bangkok` - Asia/Bangkok * `Asia/Barnaul` - Asia/Barnaul * `Asia/Beirut` - Asia/Beirut * `Asia/Bishkek` - Asia/Bishkek * `Asia/Brunei` - Asia/Brunei * `Asia/Chita` - Asia/Chita * `Asia/Colombo` - Asia/Colombo * `Asia/Damascus` - Asia/Damascus * `Asia/Dhaka` - Asia/Dhaka * `Asia/Dili` - Asia/Dili * `Asia/Dubai` - Asia/Dubai * `Asia/Dushanbe` - Asia/Dushanbe * `Asia/Famagusta` - Asia/Famagusta * `Asia/Gaza` - Asia/Gaza * `Asia/Hebron` - Asia/Hebron * `Asia/Ho_Chi_Minh` - Asia/Ho_Chi_Minh * `Asia/Hong_Kong` - Asia/Hong_Kong * `Asia/Hovd` - Asia/Hovd * `Asia/Irkutsk` - Asia/Irkutsk * `Asia/Jakarta` - Asia/Jakarta * `Asia/Jayapura` - Asia/Jayapura * `Asia/Jerusalem` - Asia/Jerusalem * `Asia/Kabul` - Asia/Kabul * `Asia/Kamchatka` - Asia/Kamchatka * `Asia/Karachi` - Asia/Karachi * `Asia/Kathmandu` - Asia/Kathmandu * `Asia/Khandyga` - Asia/Khandyga * `Asia/Kolkata` - Asia/Kolkata * `Asia/Krasnoyarsk` - Asia/Krasnoyarsk * `Asia/Kuala_Lumpur` - Asia/Kuala_Lumpur * `Asia/Kuching` - Asia/Kuching * `Asia/Kuwait` - Asia/Kuwait * `Asia/Macau` - Asia/Macau * `Asia/Magadan` - Asia/Magadan * `Asia/Makassar` - Asia/Makassar * `Asia/Manila` - Asia/Manila * `Asia/Muscat` - Asia/Muscat * `Asia/Nicosia` - Asia/Nicosia * `Asia/Novokuznetsk` - Asia/Novokuznetsk * `Asia/Novosibirsk` - Asia/Novosibirsk * `Asia/Omsk` - Asia/Omsk * `Asia/Oral` - Asia/Oral * `Asia/Phnom_Penh` - Asia/Phnom_Penh * `Asia/Pontianak` - Asia/Pontianak * `Asia/Pyongyang` - Asia/Pyongyang * `Asia/Qatar` - Asia/Qatar * `Asia/Qostanay` - Asia/Qostanay * `Asia/Qyzylorda` - Asia/Qyzylorda * `Asia/Riyadh` - Asia/Riyadh * `Asia/Sakhalin` - Asia/Sakhalin * `Asia/Samarkand` - Asia/Samarkand * `Asia/Seoul` - Asia/Seoul * `Asia/Shanghai` - Asia/Shanghai * `Asia/Singapore` - Asia/Singapore * `Asia/Srednekolymsk` - Asia/Srednekolymsk * `Asia/Taipei` - Asia/Taipei * `Asia/Tashkent` - Asia/Tashkent * `Asia/Tbilisi` - Asia/Tbilisi * `Asia/Tehran` - Asia/Tehran * `Asia/Thimphu` - Asia/Thimphu * `Asia/Tokyo` - Asia/Tokyo * `Asia/Tomsk` - Asia/Tomsk * `Asia/Ulaanbaatar` - Asia/Ulaanbaatar * `Asia/Urumqi` - Asia/Urumqi * `Asia/Ust-Nera` - Asia/Ust-Nera * `Asia/Vientiane` - Asia/Vientiane * `Asia/Vladivostok` - Asia/Vladivostok * `Asia/Yakutsk` - Asia/Yakutsk * `Asia/Yangon` - Asia/Yangon * `Asia/Yekaterinburg` - Asia/Yekaterinburg * `Asia/Yerevan` - Asia/Yerevan * `Atlantic/Azores` - Atlantic/Azores * `Atlantic/Bermuda` - Atlantic/Bermuda * `Atlantic/Canary` - Atlantic/Canary * `Atlantic/Cape_Verde` - Atlantic/Cape_Verde * `Atlantic/Faroe` - Atlantic/Faroe * `Atlantic/Madeira` - Atlantic/Madeira * `Atlantic/Reykjavik` - Atlantic/Reykjavik * `Atlantic/South_Georgia` - Atlantic/South_Georgia * `Atlantic/St_Helena` - Atlantic/St_Helena * `Atlantic/Stanley` - Atlantic/Stanley * `Australia/Adelaide` - Australia/Adelaide * `Australia/Brisbane` - Australia/Brisbane * `Australia/Broken_Hill` - Australia/Broken_Hill * `Australia/Darwin` - Australia/Darwin * `Australia/Eucla` - Australia/Eucla * `Australia/Hobart` - Australia/Hobart * `Australia/Lindeman` - Australia/Lindeman * `Australia/Lord_Howe` - Australia/Lord_Howe * `Australia/Melbourne` - Australia/Melbourne * `Australia/Perth` - Australia/Perth * `Australia/Sydney` - Australia/Sydney * `Europe/Amsterdam` - Europe/Amsterdam * `Europe/Andorra` - Europe/Andorra * `Europe/Astrakhan` - Europe/Astrakhan * `Europe/Athens` - Europe/Athens * `Europe/Belgrade` - Europe/Belgrade * `Europe/Berlin` - Europe/Berlin * `Europe/Bratislava` - Europe/Bratislava * `Europe/Brussels` - Europe/Brussels * `Europe/Bucharest` - Europe/Bucharest * `Europe/Budapest` - Europe/Budapest * `Europe/Busingen` - Europe/Busingen * `Europe/Chisinau` - Europe/Chisinau * `Europe/Copenhagen` - Europe/Copenhagen * `Europe/Dublin` - Europe/Dublin * `Europe/Gibraltar` - Europe/Gibraltar * `Europe/Guernsey` - Europe/Guernsey * `Europe/Helsinki` - Europe/Helsinki * `Europe/Isle_of_Man` - Europe/Isle_of_Man * `Europe/Istanbul` - Europe/Istanbul * `Europe/Jersey` - Europe/Jersey * `Europe/Kaliningrad` - Europe/Kaliningrad * `Europe/Kirov` - Europe/Kirov * `Europe/Kyiv` - Europe/Kyiv * `Europe/Lisbon` - Europe/Lisbon * `Europe/Ljubljana` - Europe/Ljubljana * `Europe/London` - Europe/London * `Europe/Luxembourg` - Europe/Luxembourg * `Europe/Madrid` - Europe/Madrid * `Europe/Malta` - Europe/Malta * `Europe/Mariehamn` - Europe/Mariehamn * `Europe/Minsk` - Europe/Minsk * `Europe/Monaco` - Europe/Monaco * `Europe/Moscow` - Europe/Moscow * `Europe/Oslo` - Europe/Oslo * `Europe/Paris` - Europe/Paris * `Europe/Podgorica` - Europe/Podgorica * `Europe/Prague` - Europe/Prague * `Europe/Riga` - Europe/Riga * `Europe/Rome` - Europe/Rome * `Europe/Samara` - Europe/Samara * `Europe/San_Marino` - Europe/San_Marino * `Europe/Sarajevo` - Europe/Sarajevo * `Europe/Saratov` - Europe/Saratov * `Europe/Simferopol` - Europe/Simferopol * `Europe/Skopje` - Europe/Skopje * `Europe/Sofia` - Europe/Sofia * `Europe/Stockholm` - Europe/Stockholm * `Europe/Tallinn` - Europe/Tallinn * `Europe/Tirane` - Europe/Tirane * `Europe/Ulyanovsk` - Europe/Ulyanovsk * `Europe/Vaduz` - Europe/Vaduz * `Europe/Vatican` - Europe/Vatican * `Europe/Vienna` - Europe/Vienna * `Europe/Vilnius` - Europe/Vilnius * `Europe/Volgograd` - Europe/Volgograd * `Europe/Warsaw` - Europe/Warsaw * `Europe/Zagreb` - Europe/Zagreb * `Europe/Zurich` - Europe/Zurich * `GMT` - GMT * `Indian/Antananarivo` - Indian/Antananarivo * `Indian/Chagos` - Indian/Chagos * `Indian/Christmas` - Indian/Christmas * `Indian/Cocos` - Indian/Cocos * `Indian/Comoro` - Indian/Comoro * `Indian/Kerguelen` - Indian/Kerguelen * `Indian/Mahe` - Indian/Mahe * `Indian/Maldives` - Indian/Maldives * `Indian/Mauritius` - Indian/Mauritius * `Indian/Mayotte` - Indian/Mayotte * `Indian/Reunion` - Indian/Reunion * `Pacific/Apia` - Pacific/Apia * `Pacific/Auckland` - Pacific/Auckland * `Pacific/Bougainville` - Pacific/Bougainville * `Pacific/Chatham` - Pacific/Chatham * `Pacific/Chuuk` - Pacific/Chuuk * `Pacific/Easter` - Pacific/Easter * `Pacific/Efate` - Pacific/Efate * `Pacific/Fakaofo` - Pacific/Fakaofo * `Pacific/Fiji` - Pacific/Fiji * `Pacific/Funafuti` - Pacific/Funafuti * `Pacific/Galapagos` - Pacific/Galapagos * `Pacific/Gambier` - Pacific/Gambier * `Pacific/Guadalcanal` - Pacific/Guadalcanal * `Pacific/Guam` - Pacific/Guam * `Pacific/Honolulu` - Pacific/Honolulu * `Pacific/Kanton` - Pacific/Kanton * `Pacific/Kiritimati` - Pacific/Kiritimati * `Pacific/Kosrae` - Pacific/Kosrae * `Pacific/Kwajalein` - Pacific/Kwajalein * `Pacific/Majuro` - Pacific/Majuro * `Pacific/Marquesas` - Pacific/Marquesas * `Pacific/Midway` - Pacific/Midway * `Pacific/Nauru` - Pacific/Nauru * `Pacific/Niue` - Pacific/Niue * `Pacific/Norfolk` - Pacific/Norfolk * `Pacific/Noumea` - Pacific/Noumea * `Pacific/Pago_Pago` - Pacific/Pago_Pago * `Pacific/Palau` - Pacific/Palau * `Pacific/Pitcairn` - Pacific/Pitcairn * `Pacific/Pohnpei` - Pacific/Pohnpei * `Pacific/Port_Moresby` - Pacific/Port_Moresby * `Pacific/Rarotonga` - Pacific/Rarotonga * `Pacific/Saipan` - Pacific/Saipan * `Pacific/Tahiti` - Pacific/Tahiti * `Pacific/Tarawa` - Pacific/Tarawa * `Pacific/Tongatapu` - Pacific/Tongatapu * `Pacific/Wake` - Pacific/Wake * `Pacific/Wallis` - Pacific/Wallis * `UTC` - UTC local_timezone: nullable: true description: |- User's current local timezone (if traveling) * `Africa/Abidjan` - Africa/Abidjan * `Africa/Accra` - Africa/Accra * `Africa/Addis_Ababa` - Africa/Addis_Ababa * `Africa/Algiers` - Africa/Algiers * `Africa/Asmara` - Africa/Asmara * `Africa/Bamako` - Africa/Bamako * `Africa/Bangui` - Africa/Bangui * `Africa/Banjul` - Africa/Banjul * `Africa/Bissau` - Africa/Bissau * `Africa/Blantyre` - Africa/Blantyre * `Africa/Brazzaville` - Africa/Brazzaville * `Africa/Bujumbura` - Africa/Bujumbura * `Africa/Cairo` - Africa/Cairo * `Africa/Casablanca` - Africa/Casablanca * `Africa/Ceuta` - Africa/Ceuta * `Africa/Conakry` - Africa/Conakry * `Africa/Dakar` - Africa/Dakar * `Africa/Dar_es_Salaam` - Africa/Dar_es_Salaam * `Africa/Djibouti` - Africa/Djibouti * `Africa/Douala` - Africa/Douala * `Africa/El_Aaiun` - Africa/El_Aaiun * `Africa/Freetown` - Africa/Freetown * `Africa/Gaborone` - Africa/Gaborone * `Africa/Harare` - Africa/Harare * `Africa/Johannesburg` - Africa/Johannesburg * `Africa/Juba` - Africa/Juba * `Africa/Kampala` - Africa/Kampala * `Africa/Khartoum` - Africa/Khartoum * `Africa/Kigali` - Africa/Kigali * `Africa/Kinshasa` - Africa/Kinshasa * `Africa/Lagos` - Africa/Lagos * `Africa/Libreville` - Africa/Libreville * `Africa/Lome` - Africa/Lome * `Africa/Luanda` - Africa/Luanda * `Africa/Lubumbashi` - Africa/Lubumbashi * `Africa/Lusaka` - Africa/Lusaka * `Africa/Malabo` - Africa/Malabo * `Africa/Maputo` - Africa/Maputo * `Africa/Maseru` - Africa/Maseru * `Africa/Mbabane` - Africa/Mbabane * `Africa/Mogadishu` - Africa/Mogadishu * `Africa/Monrovia` - Africa/Monrovia * `Africa/Nairobi` - Africa/Nairobi * `Africa/Ndjamena` - Africa/Ndjamena * `Africa/Niamey` - Africa/Niamey * `Africa/Nouakchott` - Africa/Nouakchott * `Africa/Ouagadougou` - Africa/Ouagadougou * `Africa/Porto-Novo` - Africa/Porto-Novo * `Africa/Sao_Tome` - Africa/Sao_Tome * `Africa/Tripoli` - Africa/Tripoli * `Africa/Tunis` - Africa/Tunis * `Africa/Windhoek` - Africa/Windhoek * `America/Adak` - America/Adak * `America/Anchorage` - America/Anchorage * `America/Anguilla` - America/Anguilla * `America/Antigua` - America/Antigua * `America/Araguaina` - America/Araguaina * `America/Argentina/Buenos_Aires` - America/Argentina/Buenos_Aires * `America/Argentina/Catamarca` - America/Argentina/Catamarca * `America/Argentina/Cordoba` - America/Argentina/Cordoba * `America/Argentina/Jujuy` - America/Argentina/Jujuy * `America/Argentina/La_Rioja` - America/Argentina/La_Rioja * `America/Argentina/Mendoza` - America/Argentina/Mendoza * `America/Argentina/Rio_Gallegos` - America/Argentina/Rio_Gallegos * `America/Argentina/Salta` - America/Argentina/Salta * `America/Argentina/San_Juan` - America/Argentina/San_Juan * `America/Argentina/San_Luis` - America/Argentina/San_Luis * `America/Argentina/Tucuman` - America/Argentina/Tucuman * `America/Argentina/Ushuaia` - America/Argentina/Ushuaia * `America/Aruba` - America/Aruba * `America/Asuncion` - America/Asuncion * `America/Atikokan` - America/Atikokan * `America/Bahia` - America/Bahia * `America/Bahia_Banderas` - America/Bahia_Banderas * `America/Barbados` - America/Barbados * `America/Belem` - America/Belem * `America/Belize` - America/Belize * `America/Blanc-Sablon` - America/Blanc-Sablon * `America/Boa_Vista` - America/Boa_Vista * `America/Bogota` - America/Bogota * `America/Boise` - America/Boise * `America/Cambridge_Bay` - America/Cambridge_Bay * `America/Campo_Grande` - America/Campo_Grande * `America/Cancun` - America/Cancun * `America/Caracas` - America/Caracas * `America/Cayenne` - America/Cayenne * `America/Cayman` - America/Cayman * `America/Chicago` - America/Chicago * `America/Chihuahua` - America/Chihuahua * `America/Ciudad_Juarez` - America/Ciudad_Juarez * `America/Costa_Rica` - America/Costa_Rica * `America/Coyhaique` - America/Coyhaique * `America/Creston` - America/Creston * `America/Cuiaba` - America/Cuiaba * `America/Curacao` - America/Curacao * `America/Danmarkshavn` - America/Danmarkshavn * `America/Dawson` - America/Dawson * `America/Dawson_Creek` - America/Dawson_Creek * `America/Denver` - America/Denver * `America/Detroit` - America/Detroit * `America/Dominica` - America/Dominica * `America/Edmonton` - America/Edmonton * `America/Eirunepe` - America/Eirunepe * `America/El_Salvador` - America/El_Salvador * `America/Fort_Nelson` - America/Fort_Nelson * `America/Fortaleza` - America/Fortaleza * `America/Glace_Bay` - America/Glace_Bay * `America/Goose_Bay` - America/Goose_Bay * `America/Grand_Turk` - America/Grand_Turk * `America/Grenada` - America/Grenada * `America/Guadeloupe` - America/Guadeloupe * `America/Guatemala` - America/Guatemala * `America/Guayaquil` - America/Guayaquil * `America/Guyana` - America/Guyana * `America/Halifax` - America/Halifax * `America/Havana` - America/Havana * `America/Hermosillo` - America/Hermosillo * `America/Indiana/Indianapolis` - America/Indiana/Indianapolis * `America/Indiana/Knox` - America/Indiana/Knox * `America/Indiana/Marengo` - America/Indiana/Marengo * `America/Indiana/Petersburg` - America/Indiana/Petersburg * `America/Indiana/Tell_City` - America/Indiana/Tell_City * `America/Indiana/Vevay` - America/Indiana/Vevay * `America/Indiana/Vincennes` - America/Indiana/Vincennes * `America/Indiana/Winamac` - America/Indiana/Winamac * `America/Inuvik` - America/Inuvik * `America/Iqaluit` - America/Iqaluit * `America/Jamaica` - America/Jamaica * `America/Juneau` - America/Juneau * `America/Kentucky/Louisville` - America/Kentucky/Louisville * `America/Kentucky/Monticello` - America/Kentucky/Monticello * `America/Kralendijk` - America/Kralendijk * `America/La_Paz` - America/La_Paz * `America/Lima` - America/Lima * `America/Los_Angeles` - America/Los_Angeles * `America/Lower_Princes` - America/Lower_Princes * `America/Maceio` - America/Maceio * `America/Managua` - America/Managua * `America/Manaus` - America/Manaus * `America/Marigot` - America/Marigot * `America/Martinique` - America/Martinique * `America/Matamoros` - America/Matamoros * `America/Mazatlan` - America/Mazatlan * `America/Menominee` - America/Menominee * `America/Merida` - America/Merida * `America/Metlakatla` - America/Metlakatla * `America/Mexico_City` - America/Mexico_City * `America/Miquelon` - America/Miquelon * `America/Moncton` - America/Moncton * `America/Monterrey` - America/Monterrey * `America/Montevideo` - America/Montevideo * `America/Montserrat` - America/Montserrat * `America/Nassau` - America/Nassau * `America/New_York` - America/New_York * `America/Nome` - America/Nome * `America/Noronha` - America/Noronha * `America/North_Dakota/Beulah` - America/North_Dakota/Beulah * `America/North_Dakota/Center` - America/North_Dakota/Center * `America/North_Dakota/New_Salem` - America/North_Dakota/New_Salem * `America/Nuuk` - America/Nuuk * `America/Ojinaga` - America/Ojinaga * `America/Panama` - America/Panama * `America/Paramaribo` - America/Paramaribo * `America/Phoenix` - America/Phoenix * `America/Port-au-Prince` - America/Port-au-Prince * `America/Port_of_Spain` - America/Port_of_Spain * `America/Porto_Velho` - America/Porto_Velho * `America/Puerto_Rico` - America/Puerto_Rico * `America/Punta_Arenas` - America/Punta_Arenas * `America/Rankin_Inlet` - America/Rankin_Inlet * `America/Recife` - America/Recife * `America/Regina` - America/Regina * `America/Resolute` - America/Resolute * `America/Rio_Branco` - America/Rio_Branco * `America/Santarem` - America/Santarem * `America/Santiago` - America/Santiago * `America/Santo_Domingo` - America/Santo_Domingo * `America/Sao_Paulo` - America/Sao_Paulo * `America/Scoresbysund` - America/Scoresbysund * `America/Sitka` - America/Sitka * `America/St_Barthelemy` - America/St_Barthelemy * `America/St_Johns` - America/St_Johns * `America/St_Kitts` - America/St_Kitts * `America/St_Lucia` - America/St_Lucia * `America/St_Thomas` - America/St_Thomas * `America/St_Vincent` - America/St_Vincent * `America/Swift_Current` - America/Swift_Current * `America/Tegucigalpa` - America/Tegucigalpa * `America/Thule` - America/Thule * `America/Tijuana` - America/Tijuana * `America/Toronto` - America/Toronto * `America/Tortola` - America/Tortola * `America/Vancouver` - America/Vancouver * `America/Whitehorse` - America/Whitehorse * `America/Winnipeg` - America/Winnipeg * `America/Yakutat` - America/Yakutat * `Antarctica/Casey` - Antarctica/Casey * `Antarctica/Davis` - Antarctica/Davis * `Antarctica/DumontDUrville` - Antarctica/DumontDUrville * `Antarctica/Macquarie` - Antarctica/Macquarie * `Antarctica/Mawson` - Antarctica/Mawson * `Antarctica/McMurdo` - Antarctica/McMurdo * `Antarctica/Palmer` - Antarctica/Palmer * `Antarctica/Rothera` - Antarctica/Rothera * `Antarctica/Syowa` - Antarctica/Syowa * `Antarctica/Troll` - Antarctica/Troll * `Antarctica/Vostok` - Antarctica/Vostok * `Arctic/Longyearbyen` - Arctic/Longyearbyen * `Asia/Aden` - Asia/Aden * `Asia/Almaty` - Asia/Almaty * `Asia/Amman` - Asia/Amman * `Asia/Anadyr` - Asia/Anadyr * `Asia/Aqtau` - Asia/Aqtau * `Asia/Aqtobe` - Asia/Aqtobe * `Asia/Ashgabat` - Asia/Ashgabat * `Asia/Atyrau` - Asia/Atyrau * `Asia/Baghdad` - Asia/Baghdad * `Asia/Bahrain` - Asia/Bahrain * `Asia/Baku` - Asia/Baku * `Asia/Bangkok` - Asia/Bangkok * `Asia/Barnaul` - Asia/Barnaul * `Asia/Beirut` - Asia/Beirut * `Asia/Bishkek` - Asia/Bishkek * `Asia/Brunei` - Asia/Brunei * `Asia/Chita` - Asia/Chita * `Asia/Colombo` - Asia/Colombo * `Asia/Damascus` - Asia/Damascus * `Asia/Dhaka` - Asia/Dhaka * `Asia/Dili` - Asia/Dili * `Asia/Dubai` - Asia/Dubai * `Asia/Dushanbe` - Asia/Dushanbe * `Asia/Famagusta` - Asia/Famagusta * `Asia/Gaza` - Asia/Gaza * `Asia/Hebron` - Asia/Hebron * `Asia/Ho_Chi_Minh` - Asia/Ho_Chi_Minh * `Asia/Hong_Kong` - Asia/Hong_Kong * `Asia/Hovd` - Asia/Hovd * `Asia/Irkutsk` - Asia/Irkutsk * `Asia/Jakarta` - Asia/Jakarta * `Asia/Jayapura` - Asia/Jayapura * `Asia/Jerusalem` - Asia/Jerusalem * `Asia/Kabul` - Asia/Kabul * `Asia/Kamchatka` - Asia/Kamchatka * `Asia/Karachi` - Asia/Karachi * `Asia/Kathmandu` - Asia/Kathmandu * `Asia/Khandyga` - Asia/Khandyga * `Asia/Kolkata` - Asia/Kolkata * `Asia/Krasnoyarsk` - Asia/Krasnoyarsk * `Asia/Kuala_Lumpur` - Asia/Kuala_Lumpur * `Asia/Kuching` - Asia/Kuching * `Asia/Kuwait` - Asia/Kuwait * `Asia/Macau` - Asia/Macau * `Asia/Magadan` - Asia/Magadan * `Asia/Makassar` - Asia/Makassar * `Asia/Manila` - Asia/Manila * `Asia/Muscat` - Asia/Muscat * `Asia/Nicosia` - Asia/Nicosia * `Asia/Novokuznetsk` - Asia/Novokuznetsk * `Asia/Novosibirsk` - Asia/Novosibirsk * `Asia/Omsk` - Asia/Omsk * `Asia/Oral` - Asia/Oral * `Asia/Phnom_Penh` - Asia/Phnom_Penh * `Asia/Pontianak` - Asia/Pontianak * `Asia/Pyongyang` - Asia/Pyongyang * `Asia/Qatar` - Asia/Qatar * `Asia/Qostanay` - Asia/Qostanay * `Asia/Qyzylorda` - Asia/Qyzylorda * `Asia/Riyadh` - Asia/Riyadh * `Asia/Sakhalin` - Asia/Sakhalin * `Asia/Samarkand` - Asia/Samarkand * `Asia/Seoul` - Asia/Seoul * `Asia/Shanghai` - Asia/Shanghai * `Asia/Singapore` - Asia/Singapore * `Asia/Srednekolymsk` - Asia/Srednekolymsk * `Asia/Taipei` - Asia/Taipei * `Asia/Tashkent` - Asia/Tashkent * `Asia/Tbilisi` - Asia/Tbilisi * `Asia/Tehran` - Asia/Tehran * `Asia/Thimphu` - Asia/Thimphu * `Asia/Tokyo` - Asia/Tokyo * `Asia/Tomsk` - Asia/Tomsk * `Asia/Ulaanbaatar` - Asia/Ulaanbaatar * `Asia/Urumqi` - Asia/Urumqi * `Asia/Ust-Nera` - Asia/Ust-Nera * `Asia/Vientiane` - Asia/Vientiane * `Asia/Vladivostok` - Asia/Vladivostok * `Asia/Yakutsk` - Asia/Yakutsk * `Asia/Yangon` - Asia/Yangon * `Asia/Yekaterinburg` - Asia/Yekaterinburg * `Asia/Yerevan` - Asia/Yerevan * `Atlantic/Azores` - Atlantic/Azores * `Atlantic/Bermuda` - Atlantic/Bermuda * `Atlantic/Canary` - Atlantic/Canary * `Atlantic/Cape_Verde` - Atlantic/Cape_Verde * `Atlantic/Faroe` - Atlantic/Faroe * `Atlantic/Madeira` - Atlantic/Madeira * `Atlantic/Reykjavik` - Atlantic/Reykjavik * `Atlantic/South_Georgia` - Atlantic/South_Georgia * `Atlantic/St_Helena` - Atlantic/St_Helena * `Atlantic/Stanley` - Atlantic/Stanley * `Australia/Adelaide` - Australia/Adelaide * `Australia/Brisbane` - Australia/Brisbane * `Australia/Broken_Hill` - Australia/Broken_Hill * `Australia/Darwin` - Australia/Darwin * `Australia/Eucla` - Australia/Eucla * `Australia/Hobart` - Australia/Hobart * `Australia/Lindeman` - Australia/Lindeman * `Australia/Lord_Howe` - Australia/Lord_Howe * `Australia/Melbourne` - Australia/Melbourne * `Australia/Perth` - Australia/Perth * `Australia/Sydney` - Australia/Sydney * `Europe/Amsterdam` - Europe/Amsterdam * `Europe/Andorra` - Europe/Andorra * `Europe/Astrakhan` - Europe/Astrakhan * `Europe/Athens` - Europe/Athens * `Europe/Belgrade` - Europe/Belgrade * `Europe/Berlin` - Europe/Berlin * `Europe/Bratislava` - Europe/Bratislava * `Europe/Brussels` - Europe/Brussels * `Europe/Bucharest` - Europe/Bucharest * `Europe/Budapest` - Europe/Budapest * `Europe/Busingen` - Europe/Busingen * `Europe/Chisinau` - Europe/Chisinau * `Europe/Copenhagen` - Europe/Copenhagen * `Europe/Dublin` - Europe/Dublin * `Europe/Gibraltar` - Europe/Gibraltar * `Europe/Guernsey` - Europe/Guernsey * `Europe/Helsinki` - Europe/Helsinki * `Europe/Isle_of_Man` - Europe/Isle_of_Man * `Europe/Istanbul` - Europe/Istanbul * `Europe/Jersey` - Europe/Jersey * `Europe/Kaliningrad` - Europe/Kaliningrad * `Europe/Kirov` - Europe/Kirov * `Europe/Kyiv` - Europe/Kyiv * `Europe/Lisbon` - Europe/Lisbon * `Europe/Ljubljana` - Europe/Ljubljana * `Europe/London` - Europe/London * `Europe/Luxembourg` - Europe/Luxembourg * `Europe/Madrid` - Europe/Madrid * `Europe/Malta` - Europe/Malta * `Europe/Mariehamn` - Europe/Mariehamn * `Europe/Minsk` - Europe/Minsk * `Europe/Monaco` - Europe/Monaco * `Europe/Moscow` - Europe/Moscow * `Europe/Oslo` - Europe/Oslo * `Europe/Paris` - Europe/Paris * `Europe/Podgorica` - Europe/Podgorica * `Europe/Prague` - Europe/Prague * `Europe/Riga` - Europe/Riga * `Europe/Rome` - Europe/Rome * `Europe/Samara` - Europe/Samara * `Europe/San_Marino` - Europe/San_Marino * `Europe/Sarajevo` - Europe/Sarajevo * `Europe/Saratov` - Europe/Saratov * `Europe/Simferopol` - Europe/Simferopol * `Europe/Skopje` - Europe/Skopje * `Europe/Sofia` - Europe/Sofia * `Europe/Stockholm` - Europe/Stockholm * `Europe/Tallinn` - Europe/Tallinn * `Europe/Tirane` - Europe/Tirane * `Europe/Ulyanovsk` - Europe/Ulyanovsk * `Europe/Vaduz` - Europe/Vaduz * `Europe/Vatican` - Europe/Vatican * `Europe/Vienna` - Europe/Vienna * `Europe/Vilnius` - Europe/Vilnius * `Europe/Volgograd` - Europe/Volgograd * `Europe/Warsaw` - Europe/Warsaw * `Europe/Zagreb` - Europe/Zagreb * `Europe/Zurich` - Europe/Zurich * `GMT` - GMT * `Indian/Antananarivo` - Indian/Antananarivo * `Indian/Chagos` - Indian/Chagos * `Indian/Christmas` - Indian/Christmas * `Indian/Cocos` - Indian/Cocos * `Indian/Comoro` - Indian/Comoro * `Indian/Kerguelen` - Indian/Kerguelen * `Indian/Mahe` - Indian/Mahe * `Indian/Maldives` - Indian/Maldives * `Indian/Mauritius` - Indian/Mauritius * `Indian/Mayotte` - Indian/Mayotte * `Indian/Reunion` - Indian/Reunion * `Pacific/Apia` - Pacific/Apia * `Pacific/Auckland` - Pacific/Auckland * `Pacific/Bougainville` - Pacific/Bougainville * `Pacific/Chatham` - Pacific/Chatham * `Pacific/Chuuk` - Pacific/Chuuk * `Pacific/Easter` - Pacific/Easter * `Pacific/Efate` - Pacific/Efate * `Pacific/Fakaofo` - Pacific/Fakaofo * `Pacific/Fiji` - Pacific/Fiji * `Pacific/Funafuti` - Pacific/Funafuti * `Pacific/Galapagos` - Pacific/Galapagos * `Pacific/Gambier` - Pacific/Gambier * `Pacific/Guadalcanal` - Pacific/Guadalcanal * `Pacific/Guam` - Pacific/Guam * `Pacific/Honolulu` - Pacific/Honolulu * `Pacific/Kanton` - Pacific/Kanton * `Pacific/Kiritimati` - Pacific/Kiritimati * `Pacific/Kosrae` - Pacific/Kosrae * `Pacific/Kwajalein` - Pacific/Kwajalein * `Pacific/Majuro` - Pacific/Majuro * `Pacific/Marquesas` - Pacific/Marquesas * `Pacific/Midway` - Pacific/Midway * `Pacific/Nauru` - Pacific/Nauru * `Pacific/Niue` - Pacific/Niue * `Pacific/Norfolk` - Pacific/Norfolk * `Pacific/Noumea` - Pacific/Noumea * `Pacific/Pago_Pago` - Pacific/Pago_Pago * `Pacific/Palau` - Pacific/Palau * `Pacific/Pitcairn` - Pacific/Pitcairn * `Pacific/Pohnpei` - Pacific/Pohnpei * `Pacific/Port_Moresby` - Pacific/Port_Moresby * `Pacific/Rarotonga` - Pacific/Rarotonga * `Pacific/Saipan` - Pacific/Saipan * `Pacific/Tahiti` - Pacific/Tahiti * `Pacific/Tarawa` - Pacific/Tarawa * `Pacific/Tongatapu` - Pacific/Tongatapu * `Pacific/Wake` - Pacific/Wake * `Pacific/Wallis` - Pacific/Wallis * `UTC` - UTC oneOf: - $ref: '#/components/schemas/LocalTimezoneEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' bootswatch_theme: type: integer nullable: true description: Bootswatch theme for light mode Vendor: type: object properties: id: type: integer readOnly: true name: type: string legal_name: type: string abbreviated_name: type: string overview: type: string history: type: string services_provided: type: string vendor_type: type: string employee_count: type: integer nullable: true revenue: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true assets: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true fiscal_year_end: type: string format: date nullable: true partner_portal_url: type: string format: uri is_competitor: type: boolean deal_registration_notes: type: string parent_organization: type: string readOnly: true parent_relationship_type: type: string readOnly: true is_multi_role_organization: type: string readOnly: true child_organizations_count: type: string readOnly: true required: - child_organizations_count - id - is_multi_role_organization - parent_organization - parent_relationship_type VendorRequest: type: object properties: name: type: string legal_name: type: string abbreviated_name: type: string overview: type: string history: type: string services_provided: type: string vendor_type: type: string employee_count: type: integer nullable: true revenue: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true assets: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true fiscal_year_end: type: string format: date nullable: true partner_portal_url: type: string format: uri is_competitor: type: boolean deal_registration_notes: type: string VendorSolution: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 vendor: allOf: - $ref: '#/components/schemas/Vendor' readOnly: true description: type: string title: Solution Information description: Detailed solution description with URL support url: type: string format: uri maxLength: 200 notes: type: string description: Additional notes about the solution category: type: string maxLength: 100 release_date: type: string format: date nullable: true end_of_life_date: type: string format: date nullable: true documentation_url: type: string format: uri maxLength: 200 created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true required: - created_at - id - name - updated_at - vendor VendorSolutionRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 vendor_id: type: integer writeOnly: true description: type: string minLength: 1 title: Solution Information description: Detailed solution description with URL support url: type: string format: uri maxLength: 200 notes: type: string minLength: 1 description: Additional notes about the solution category: type: string maxLength: 100 release_date: type: string format: date nullable: true end_of_life_date: type: string format: date nullable: true documentation_url: type: string format: uri maxLength: 200 required: - name - vendor_id Workshop: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 date: type: string format: date time: type: string format: time duration: allOf: - $ref: '#/components/schemas/DurationEnum' minimum: -2147483648 maximum: 2147483647 workshop_type: $ref: '#/components/schemas/WorkshopTypeEnum' participants: type: array items: $ref: '#/components/schemas/Contact' readOnly: true notes: type: string required: - date - duration - id - name - participants - time - workshop_type WorkshopRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 date: type: string format: date time: type: string format: time duration: allOf: - $ref: '#/components/schemas/DurationEnum' minimum: -2147483648 maximum: 2147483647 workshop_type: $ref: '#/components/schemas/WorkshopTypeEnum' participant_ids: type: array items: type: integer writeOnly: true notes: type: string required: - date - duration - name - time - workshop_type WorkshopTypeEnum: enum: - Exploration - Discovery - Prioritization - Maturity type: string description: |- * `Exploration` - Exploration * `Discovery` - Discovery * `Prioritization` - Prioritization * `Maturity` - Maturity securitySchemes: ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Use format: Api-Key {your-api-key}' servers: - url: http://localhost:8000 description: Development server - url: https://api.athena.example.com description: Production server tags: - name: Core description: Core system functionality - name: Orbit description: Business relationship management - name: Location Tools description: Client location management with automatic version numbering - name: Location Sets description: Versioned location collections with automatic numbering - name: Locations description: Individual location records with custom fields - name: Custom Fields description: Custom field definitions for location data - name: Table Sources description: Location data table source configurations - name: CSV Operations description: Bulk import/export operations for location data - name: Engagement description: Client engagement management - name: Advisor description: Advisory tools and recommendations - name: BMC description: Business Model Canvas tools - name: Pricing description: Pricing and cost management - name: Gallery description: Media and document management - name: RAID description: Risk, Assumption, Issue, Dependency tracking - name: Stakeholder description: Stakeholder management - name: Timeline description: Timeline and milestone management