openapi: 3.2.0 info: title: GPT Backend Company Profile API version: 0.1.0 servers: - url: https://api.usepomo.ai description: Base URL declared by the provider in apis.yml (roadmap#122). tags: - name: company-profile paths: /api/company-profile/: get: tags: - company-profile summary: Get Company Profiles description: 'Get company profiles the current user has access to in the ACTIVE organization. RBAC Logic: - Org owners/admins see ALL profiles in the active organization - Members see only profiles they have explicit CompanyProfileAccess to - Only org admins/owners can query archived or deleted profiles or all profiles (no status filter) Multi-org Support: - Uses X-Organization-Id header to determine which organization''s profiles to return - Only returns profiles from the active organization - Validates user has access to the organization via get_active_organization_id dependency' operationId: get_company_profiles_api_company_profile__get security: - HTTPBearer: [] parameters: - name: status in: query required: false schema: anyOf: - $ref: '#/components/schemas/CompanyProfileStatus' - type: 'null' description: Filter profiles by status (active, archived, deleted). If not specified, returns all profiles. Only org admins can view non-active profiles. title: Status description: Filter profiles by status (active, archived, deleted). If not specified, returns all profiles. Only org admins can view non-active profiles. - name: scope in: query required: false schema: anyOf: - $ref: '#/components/schemas/CompanyProfileListScope' - type: 'null' description: Optional scoped list query. 'active_org' returns active profiles in the active organization for admins. 'my_accessible' returns active profiles visible to the current user. title: Scope description: Optional scoped list query. 'active_org' returns active profiles in the active organization for admins. 'my_accessible' returns active profiles visible to the current user. - name: force_refresh in: query required: false schema: type: boolean description: Bypass the shared response cache default: false title: Force Refresh description: Bypass the shared response cache - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/CompanyProfileResponse' title: Response Get Company Profiles Api Company Profile Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - company-profile summary: Create Company Profile description: 'Create a new company profile (project) in the user''s organization. Each profile represents a separate project the organization is working on. Multi-org: Creates profile in the active organization resolved from X-Organization-Id (with fallback to the user''s first active organization).' operationId: create_company_profile_api_company_profile__post security: - HTTPBearer: [] parameters: - name: allow_inactive_subscription in: query required: false schema: type: boolean default: false title: Allow Inactive Subscription - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CompanyProfileCreate' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CompanyProfileResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/company-profile/summaries: get: tags: - company-profile summary: Get Company Profile Summaries description: Return the compact active/archived profile list used by workspace navigation. operationId: get_company_profile_summaries_api_company_profile_summaries_get security: - HTTPBearer: [] parameters: - name: force_refresh in: query required: false schema: type: boolean description: Bypass the shared response cache default: false title: Force Refresh description: Bypass the shared response cache - name: X-Organization-Id in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Organization-Id responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/CompanyProfileSummaryResponse' title: Response Get Company Profile Summaries Api Company Profile Summaries Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/company-profile/{profile_id}: get: tags: - company-profile summary: Get Company Profile By Id description: 'Get a specific company profile by ID. Validates that the profile belongs to the user''s organization.' operationId: get_company_profile_by_id_api_company_profile__profile_id__get security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id - name: force_refresh in: query required: false schema: type: boolean description: Bypass the shared response cache default: false title: Force Refresh description: Bypass the shared response cache responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CompanyProfileResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - company-profile summary: Update Company Profile description: 'Update an existing company profile. Requires contributor or admin access.' operationId: update_company_profile_api_company_profile__profile_id__put security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CompanyProfileUpdate' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CompanyProfileResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - company-profile summary: Delete Company Profile description: 'Hard delete a company profile (permanently removes from database). Requires ownership-level access (org owner/admin or profile creator). Note: Consider using PATCH /{profile_id}/status with status=''deleted'' for soft delete instead.' operationId: delete_company_profile_api_company_profile__profile_id__delete security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/company-profile/{profile_id}/status: patch: tags: - company-profile summary: Update Company Profile Status description: 'Update the status of a company profile (archive, delete, or restore to active). Requires ownership-level access (org owner/admin or profile creator). This is a soft delete/archive - data is preserved. - Setting to ACTIVE restores the profile - Restoring a DELETED profile does not restart deleted onboarding workflows - Setting to ARCHIVED/DELETED hides the profile from normal views' operationId: update_company_profile_status_api_company_profile__profile_id__status_patch security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CompanyProfileStatusUpdateRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CompanyProfileStatusUpdateResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/company-profile/{profile_id}/company-messages: post: tags: - company-profile summary: Add Company Message description: 'Add a company message to a specific company profile. Validates that the profile belongs to the user''s organization.' operationId: add_company_message_api_company_profile__profile_id__company_messages_post security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CompanyMessageCreate' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CompanyProfileResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/company-profile/{profile_id}/company-messages/{message_id}: delete: tags: - company-profile summary: Delete Company Message description: 'Delete a company message from a specific company profile. Validates that the profile belongs to the user''s organization.' operationId: delete_company_message_api_company_profile__profile_id__company_messages__message_id__delete security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id - name: message_id in: path required: true schema: type: string format: uuid title: Message Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CompanyProfileResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/company-profile/{profile_id}/upload-image: post: tags: - company-profile summary: Upload Image description: 'Upload an example image to GCS for a specific company profile. Validates that the profile belongs to the user''s organization.' operationId: upload_image_api_company_profile__profile_id__upload_image_post security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/Body_upload_image_api_company_profile__profile_id__upload_image_post' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CompanyProfileResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/company-profile/{profile_id}/company-images/{image_id}: delete: tags: - company-profile summary: Delete Company Image description: 'Delete a company image from a specific company profile. Validates that the profile belongs to the user''s organization.' operationId: delete_company_image_api_company_profile__profile_id__company_images__image_id__delete security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id - name: image_id in: path required: true schema: type: string format: uuid title: Image Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CompanyProfileResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/company-profile/{profile_id}/stylebook: get: tags: - company-profile summary: Get Company Stylebook operationId: get_company_stylebook_api_company_profile__profile_id__stylebook_get security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CompanyStylebookResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - company-profile summary: Update Company Stylebook operationId: update_company_stylebook_api_company_profile__profile_id__stylebook_put security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CompanyStylebookUpdateRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CompanyStylebookResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/company-profile/{profile_id}/stylebook/generate: post: tags: - company-profile summary: Generate Company Stylebook operationId: generate_company_stylebook_api_company_profile__profile_id__stylebook_generate_post security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CompanyStylebookGenerateRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CompanyStylebookResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/company-profile/{profile_id}/is-complete: get: tags: - company-profile summary: Check Profile Completion description: "Check if a specific company profile and marketing profile are complete.\nValidates that the profile belongs to the user's organization.\n\nTwo signals, two meanings:\n* ``is_completed`` — profile-content signal (name/description/brand\n attributes filled in). Mutated here if the underlying columns are now\n populated. This is NOT the onboarding-completion signal.\n* ``marketing_profile_completed`` — onboarding signal derived from the\n shared ``get_marketing_profile_completion`` helper, which reads the\n BrandGenerationWorkflow projection the same way list/detail responses do." operationId: check_profile_completion_api_company_profile__profile_id__is_complete_get security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/company-profile/{profile_id}/competitive-analysis: put: tags: - company-profile summary: Update Competitive Analysis description: 'Update competitive analysis for a specific company profile. Validates that the profile belongs to the user''s organization.' operationId: update_competitive_analysis_api_company_profile__profile_id__competitive_analysis_put security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id requestBody: required: true content: application/json: schema: type: object additionalProperties: true title: Competitive Analysis responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/company-profile/{profile_id}/marketing-strategy: put: tags: - company-profile summary: Update Marketing Strategy description: 'Update marketing strategy for a specific company profile. Validates that the profile belongs to the user''s organization.' operationId: update_marketing_strategy_api_company_profile__profile_id__marketing_strategy_put security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id requestBody: required: true content: application/json: schema: type: object additionalProperties: true title: Marketing Strategy responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/company-profile/{profile_id}/upload-logo: post: tags: - company-profile summary: Upload Company Logo description: 'Upload a custom logo for a specific company profile. Validates that the profile belongs to the user''s organization.' operationId: upload_company_logo_api_company_profile__profile_id__upload_logo_post security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/Body_upload_company_logo_api_company_profile__profile_id__upload_logo_post' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CompanyProfileResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/company-profile/{profile_id}/files: get: tags: - company-profile summary: Get Company Files description: 'Get all files associated with a company profile. Validates that the profile belongs to the user''s organization.' operationId: get_company_files_api_company_profile__profile_id__files_get security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/company-profile/{profile_id}/files/{file_id}/download: get: tags: - company-profile summary: Download Company File description: 'Download a specific file associated with a company profile. Validates that the profile belongs to the user''s organization.' operationId: download_company_file_api_company_profile__profile_id__files__file_id__download_get security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id - name: file_id in: path required: true schema: type: string format: uuid title: File Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/company-profile/{profile_id}/files/{file_id}/info: get: tags: - company-profile summary: Get File Info description: 'Get detailed information about a specific file. Validates that the profile belongs to the user''s organization.' operationId: get_file_info_api_company_profile__profile_id__files__file_id__info_get security: - HTTPBearer: [] parameters: - name: profile_id in: path required: true schema: type: string format: uuid title: Profile Id - name: file_id in: path required: true schema: type: string format: uuid title: File Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: Body_upload_image_api_company_profile__profile_id__upload_image_post: properties: file: type: string format: binary title: File type: object required: - file title: Body_upload_image_api_company_profile__profile_id__upload_image_post HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError CompanyProfileStatusUpdateRequest: properties: status: $ref: '#/components/schemas/CompanyProfileStatus' description: New status for the company profile (archived or deleted) type: object required: - status title: CompanyProfileStatusUpdateRequest CompanyStylebookUpdateRequest: properties: payload: $ref: '#/components/schemas/CompanyStylebookPayload-Input' type: object required: - payload title: CompanyStylebookUpdateRequest CompanyStylebookPayload-Input: properties: hero: $ref: '#/components/schemas/CompanyStylebookHero' logo: $ref: '#/components/schemas/CompanyStylebookLogo' colors: $ref: '#/components/schemas/CompanyStylebookColors' promo_references: $ref: '#/components/schemas/CompanyStylebookPromoReferences' value_propositions: $ref: '#/components/schemas/CompanyStylebookListSection' target_audience: $ref: '#/components/schemas/CompanyStylebookChipSection' business_model: $ref: '#/components/schemas/CompanyStylebookBusinessModel' categories: $ref: '#/components/schemas/CompanyStylebookChipSection' available_reference_images: items: $ref: '#/components/schemas/CompanyStylebookImageItem' type: array title: Available Reference Images brand_nuance: $ref: '#/components/schemas/CompanyStylebookBrandNuance' brand_foundation: additionalProperties: true type: object title: Brand Foundation messaging_pillars: items: type: string type: array title: Messaging Pillars must_preserve: items: type: string type: array title: Must Preserve canonical_profile: additionalProperties: true type: object title: Canonical Profile design_tokens: additionalProperties: true type: object title: Design Tokens visual_system: additionalProperties: true type: object title: Visual System accessibility_system: additionalProperties: true type: object title: Accessibility System asset_usage_system: additionalProperties: true type: object title: Asset Usage System messaging_system: additionalProperties: true type: object title: Messaging System content_style_system: additionalProperties: true type: object title: Content Style System products_audiences: additionalProperties: true type: object title: Products Audiences campaign_playbook: additionalProperties: true type: object title: Campaign Playbook market_learning: additionalProperties: true type: object title: Market Learning brand_validation_system: additionalProperties: true type: object title: Brand Validation System source_inventory: additionalProperties: true type: object title: Source Inventory stylebook_governance: additionalProperties: true type: object title: Stylebook Governance pages: items: $ref: '#/components/schemas/CompanyStylebookPage' type: array title: Pages type: object required: - hero - logo - colors - promo_references - value_propositions - target_audience - business_model - categories title: CompanyStylebookPayload CompanyProfileStatusUpdateResponse: properties: success: type: boolean title: Success message: type: string title: Message profile: $ref: '#/components/schemas/CompanyProfileResponse' type: object required: - success - message - profile title: CompanyProfileStatusUpdateResponse CompanyStylebookPage: properties: id: type: string title: Id title: type: string title: Title summary: type: string title: Summary default: '' sections: items: $ref: '#/components/schemas/CompanyStylebookPageSection' type: array title: Sections type: object required: - id - title title: CompanyStylebookPage CompanyStylebookBusinessModel: properties: summary: type: string title: Summary type: object required: - summary title: CompanyStylebookBusinessModel CompanyStylebookHero: properties: company_name: type: string title: Company Name summary: type: string title: Summary location_value: type: string title: Location Value company_size_value: type: string title: Company Size Value map_regions: items: type: string type: array title: Map Regions type: object required: - company_name - summary - location_value - company_size_value title: CompanyStylebookHero CompanyProfileListScope: type: string enum: - active_org - my_accessible title: CompanyProfileListScope CompanyStylebookBrandNuance: properties: implicit_brand_differentiators: items: type: string type: array title: Implicit Brand Differentiators distinctive_positioning: type: string title: Distinctive Positioning default: '' generic_positioning_to_avoid: items: type: string type: array title: Generic Positioning To Avoid must_preserve_in_downstream_generation: items: type: string type: array title: Must Preserve In Downstream Generation value_propositions: items: type: string type: array title: Value Propositions messaging_pillars: items: type: string type: array title: Messaging Pillars type: object title: CompanyStylebookBrandNuance CompanyMessageCreate: properties: message_type: type: string title: Message Type content: type: string title: Content message_metadata: anyOf: - additionalProperties: true type: object - type: 'null' title: Message Metadata type: object required: - message_type - content title: CompanyMessageCreate Body_upload_company_logo_api_company_profile__profile_id__upload_logo_post: properties: file: type: string format: binary title: File type: object required: - file title: Body_upload_company_logo_api_company_profile__profile_id__upload_logo_post CompanyStylebookLogo: properties: image_url: anyOf: - type: string - type: 'null' title: Image Url description: type: string title: Description type: object required: - description title: CompanyStylebookLogo CompanyProfileResponse: properties: name: anyOf: - type: string - type: 'null' title: Name description: anyOf: - type: string - type: 'null' title: Description company_links: anyOf: - items: type: string type: array - type: 'null' title: Company Links brand_attributes: anyOf: - additionalProperties: true type: object - type: 'null' title: Brand Attributes categories: anyOf: - {} - type: 'null' title: Categories primary_business_model: anyOf: - type: string - type: 'null' title: Primary Business Model secondary_business_models: anyOf: - items: type: string type: array - type: 'null' title: Secondary Business Models business_model_metadata: anyOf: - additionalProperties: true type: object - type: 'null' title: Business Model Metadata additional_metadata: anyOf: - additionalProperties: true type: object - type: 'null' title: Additional Metadata competitive_analysis: anyOf: - additionalProperties: true type: object - type: 'null' title: Competitive Analysis recommended_marketing_strategy: anyOf: - additionalProperties: true type: object - type: 'null' title: Recommended Marketing Strategy marketing_goal: anyOf: - type: string - type: 'null' title: Marketing Goal marketing_campaign_goal: anyOf: - type: string - type: 'null' title: Marketing Campaign Goal campaign_custom_instructions: anyOf: - type: string - type: 'null' title: Campaign Custom Instructions average_monthly_campaign_budget: anyOf: - type: number - type: 'null' title: Average Monthly Campaign Budget average_monthly_campaign_budget_currency: anyOf: - type: string - type: 'null' title: Average Monthly Campaign Budget Currency document_summaries: anyOf: - additionalProperties: true type: object - type: 'null' title: Document Summaries operating_regions: anyOf: - items: type: string type: array - type: 'null' title: Operating Regions logo_image: anyOf: - type: string - type: 'null' title: Logo Image logo_url: anyOf: - type: string - type: 'null' title: Logo Url is_completed: anyOf: - type: boolean - type: 'null' title: Is Completed default: false status: anyOf: - type: string - type: 'null' id: anyOf: - type: string - type: 'null' title: Id organization_id: anyOf: - type: string - type: 'null' title: Organization Id creator_id: anyOf: - type: string - type: 'null' title: Creator Id created_at: anyOf: - type: string - type: 'null' title: Created At updated_at: anyOf: - type: string - type: 'null' title: Updated At company_messages: items: $ref: '#/components/schemas/CompanyMessageResponse' type: array title: Company Messages default: [] company_images: items: $ref: '#/components/schemas/CompanyImageResponse' type: array title: Company Images default: [] category_attributes: anyOf: - {} - type: 'null' title: Category Attributes marketing_profile_completed: type: boolean title: Marketing Profile Completed default: false type: object required: - id - organization_id - creator_id - created_at - updated_at title: CompanyProfileResponse CompanyProfileSummaryResponse: properties: id: anyOf: - type: string - type: 'null' title: Id organization_id: anyOf: - type: string - type: 'null' title: Organization Id name: anyOf: - type: string - type: 'null' title: Name company_links: items: type: string type: array title: Company Links logo_url: anyOf: - type: string - type: 'null' title: Logo Url status: type: string marketing_profile_completed: type: boolean title: Marketing Profile Completed default: false type: object required: - id - organization_id - status title: CompanyProfileSummaryResponse description: Compact company-profile projection for workspace navigation. CompanyStylebookImageItem: properties: id: type: string title: Id image_url: type: string title: Image Url label: type: string title: Label source: anyOf: - type: string - type: 'null' title: Source type: object required: - id - image_url - label title: CompanyStylebookImageItem ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError CompanyStylebookSwatch: properties: label: type: string title: Label hex: type: string title: Hex type: object required: - label - hex title: CompanyStylebookSwatch CompanyStylebookPromoReferences: properties: subtitle: type: string title: Subtitle items: items: $ref: '#/components/schemas/CompanyStylebookImageItem' type: array title: Items type: object required: - subtitle title: CompanyStylebookPromoReferences CompanyStylebookPageSection: properties: title: type: string title: Title body: type: string title: Body default: '' bullets: items: type: string type: array title: Bullets chips: items: type: string type: array title: Chips evidence_refs: items: type: string type: array title: Evidence Refs examples: items: additionalProperties: true type: object type: array title: Examples confidence: anyOf: - type: string enum: - high - medium - low - type: 'null' title: Confidence type: object required: - title title: CompanyStylebookPageSection CompanyProfileUpdate: properties: name: anyOf: - type: string - type: 'null' title: Name description: anyOf: - type: string - type: 'null' title: Description company_links: anyOf: - items: type: string type: array - type: 'null' title: Company Links brand_attributes: anyOf: - additionalProperties: true type: object - type: 'null' title: Brand Attributes categories: anyOf: - {} - type: 'null' title: Categories primary_business_model: anyOf: - type: string - type: 'null' title: Primary Business Model secondary_business_models: anyOf: - items: type: string type: array - type: 'null' title: Secondary Business Models business_model_metadata: anyOf: - additionalProperties: true type: object - type: 'null' title: Business Model Metadata additional_metadata: anyOf: - additionalProperties: true type: object - type: 'null' title: Additional Metadata competitive_analysis: anyOf: - additionalProperties: true type: object - type: 'null' title: Competitive Analysis recommended_marketing_strategy: anyOf: - additionalProperties: true type: object - type: 'null' title: Recommended Marketing Strategy marketing_goal: anyOf: - type: string - type: 'null' title: Marketing Goal marketing_campaign_goal: anyOf: - type: string - type: 'null' title: Marketing Campaign Goal campaign_custom_instructions: anyOf: - type: string - type: 'null' title: Campaign Custom Instructions average_monthly_campaign_budget: anyOf: - type: number - type: 'null' title: Average Monthly Campaign Budget average_monthly_campaign_budget_currency: anyOf: - type: string - type: 'null' title: Average Monthly Campaign Budget Currency document_summaries: anyOf: - additionalProperties: true type: object - type: 'null' title: Document Summaries operating_regions: anyOf: - items: type: string type: array - type: 'null' title: Operating Regions logo_image: anyOf: - type: string - type: 'null' title: Logo Image logo_url: anyOf: - type: string - type: 'null' title: Logo Url is_completed: anyOf: - type: boolean - type: 'null' title: Is Completed default: false status: anyOf: - $ref: '#/components/schemas/CompanyProfileStatus' - type: 'null' default: active type: object title: CompanyProfileUpdate CompanyStylebookResponse: properties: status: type: string enum: - pending - processing - ready - failed title: Status schema_version: type: integer title: Schema Version generated_at: anyOf: - type: string - type: 'null' title: Generated At updated_at: anyOf: - type: string - type: 'null' title: Updated At manually_edited: type: boolean title: Manually Edited default: false retryable: type: boolean title: Retryable default: false error_message: anyOf: - type: string - type: 'null' title: Error Message payload: anyOf: - $ref: '#/components/schemas/CompanyStylebookPayload-Output' - type: 'null' type: object required: - status - schema_version title: CompanyStylebookResponse CompanyProfileCreate: properties: name: anyOf: - type: string - type: 'null' title: Name description: anyOf: - type: string - type: 'null' title: Description company_links: anyOf: - items: type: string type: array - type: 'null' title: Company Links brand_attributes: anyOf: - additionalProperties: true type: object - type: 'null' title: Brand Attributes categories: anyOf: - {} - type: 'null' title: Categories primary_business_model: anyOf: - type: string - type: 'null' title: Primary Business Model secondary_business_models: anyOf: - items: type: string type: array - type: 'null' title: Secondary Business Models business_model_metadata: anyOf: - additionalProperties: true type: object - type: 'null' title: Business Model Metadata additional_metadata: anyOf: - additionalProperties: true type: object - type: 'null' title: Additional Metadata competitive_analysis: anyOf: - additionalProperties: true type: object - type: 'null' title: Competitive Analysis recommended_marketing_strategy: anyOf: - additionalProperties: true type: object - type: 'null' title: Recommended Marketing Strategy marketing_goal: anyOf: - type: string - type: 'null' title: Marketing Goal marketing_campaign_goal: anyOf: - type: string - type: 'null' title: Marketing Campaign Goal campaign_custom_instructions: anyOf: - type: string - type: 'null' title: Campaign Custom Instructions average_monthly_campaign_budget: anyOf: - type: number - type: 'null' title: Average Monthly Campaign Budget average_monthly_campaign_budget_currency: anyOf: - type: string - type: 'null' title: Average Monthly Campaign Budget Currency document_summaries: anyOf: - additionalProperties: true type: object - type: 'null' title: Document Summaries operating_regions: anyOf: - items: type: string type: array - type: 'null' title: Operating Regions logo_image: anyOf: - type: string - type: 'null' title: Logo Image logo_url: anyOf: - type: string - type: 'null' title: Logo Url is_completed: anyOf: - type: boolean - type: 'null' title: Is Completed default: false status: anyOf: - $ref: '#/components/schemas/CompanyProfileStatus' - type: 'null' default: active type: object title: CompanyProfileCreate CompanyStylebookListSection: properties: items: items: type: string type: array title: Items type: object title: CompanyStylebookListSection CompanyImageResponse: properties: image_type: type: string title: Image Type image_url: type: string title: Image Url alt_text: anyOf: - type: string - type: 'null' title: Alt Text image_metadata: anyOf: - additionalProperties: true type: object - type: 'null' title: Image Metadata id: anyOf: - type: string - type: 'null' title: Id company_profile_id: anyOf: - type: string - type: 'null' title: Company Profile Id created_at: anyOf: - type: string - type: 'null' title: Created At type: object required: - image_type - image_url - id - company_profile_id - created_at title: CompanyImageResponse CompanyStylebookChipSection: properties: chips: items: type: string type: array title: Chips type: object title: CompanyStylebookChipSection CompanyProfileStatus: type: string enum: - active - archived - deleted title: CompanyProfileStatus description: Lifecycle status for a company profile. CompanyStylebookGenerateRequest: properties: workflow_id: anyOf: - type: string format: uuid - type: 'null' title: Workflow Id force: type: boolean title: Force default: false type: object title: CompanyStylebookGenerateRequest CompanyMessageResponse: properties: message_type: type: string title: Message Type content: type: string title: Content message_metadata: anyOf: - additionalProperties: true type: object - type: 'null' title: Message Metadata id: anyOf: - type: string - type: 'null' title: Id company_profile_id: anyOf: - type: string - type: 'null' title: Company Profile Id created_at: anyOf: - type: string - type: 'null' title: Created At type: object required: - message_type - content - id - company_profile_id - created_at title: CompanyMessageResponse CompanyStylebookColors: properties: description: type: string title: Description swatches: items: $ref: '#/components/schemas/CompanyStylebookSwatch' type: array title: Swatches type: object required: - description title: CompanyStylebookColors CompanyStylebookPayload-Output: properties: hero: $ref: '#/components/schemas/CompanyStylebookHero' logo: $ref: '#/components/schemas/CompanyStylebookLogo' colors: $ref: '#/components/schemas/CompanyStylebookColors' promo_references: $ref: '#/components/schemas/CompanyStylebookPromoReferences' value_propositions: $ref: '#/components/schemas/CompanyStylebookListSection' target_audience: $ref: '#/components/schemas/CompanyStylebookChipSection' business_model: $ref: '#/components/schemas/CompanyStylebookBusinessModel' categories: $ref: '#/components/schemas/CompanyStylebookChipSection' available_reference_images: items: $ref: '#/components/schemas/CompanyStylebookImageItem' type: array title: Available Reference Images brand_nuance: $ref: '#/components/schemas/CompanyStylebookBrandNuance' brand_foundation: additionalProperties: true type: object title: Brand Foundation messaging_pillars: items: type: string type: array title: Messaging Pillars must_preserve: items: type: string type: array title: Must Preserve canonical_profile: additionalProperties: true type: object title: Canonical Profile design_tokens: additionalProperties: true type: object title: Design Tokens visual_system: additionalProperties: true type: object title: Visual System accessibility_system: additionalProperties: true type: object title: Accessibility System asset_usage_system: additionalProperties: true type: object title: Asset Usage System messaging_system: additionalProperties: true type: object title: Messaging System content_style_system: additionalProperties: true type: object title: Content Style System products_audiences: additionalProperties: true type: object title: Products Audiences campaign_playbook: additionalProperties: true type: object title: Campaign Playbook market_learning: additionalProperties: true type: object title: Market Learning brand_validation_system: additionalProperties: true type: object title: Brand Validation System source_inventory: additionalProperties: true type: object title: Source Inventory stylebook_governance: additionalProperties: true type: object title: Stylebook Governance pages: items: $ref: '#/components/schemas/CompanyStylebookPage' type: array title: Pages type: object required: - hero - logo - colors - promo_references - value_propositions - target_audience - business_model - categories title: CompanyStylebookPayload securitySchemes: HTTPBearer: type: http scheme: bearer