{"openapi":"3.0.0","paths":{"/api":{"get":{"operationId":"AppController_getApiInfo","summary":"Get API information and available endpoints","parameters":[],"responses":{"200":{"description":"API information returned"}},"tags":["API Info"]}},"/api/campaigns":{"post":{"operationId":"CampaignsController_create","summary":"Create a new campaign with Creative ID","description":"Links to Modern Postcard Creative ID - NO file uploads supported","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCampaignDto"}}}},"responses":{"201":{"description":"Resource created successfully"},"400":{"description":"Validation failed"},"401":{"description":"Invalid or missing API key"}},"tags":["Campaigns"],"security":[{"api-key":[]}]},"get":{"operationId":"CampaignsController_findAll","summary":"Get all campaigns","parameters":[],"responses":{"200":{"description":"List of all campaigns"},"401":{"description":"Invalid or missing API key"}},"tags":["Campaigns"],"security":[{"api-key":[]}]}},"/api/campaigns/{id}":{"get":{"operationId":"CampaignsController_findOne","summary":"Get a campaign by ID","parameters":[{"name":"id","required":true,"in":"path","description":"Campaign ID","schema":{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"responses":{"200":{"description":"Campaign found"},"401":{"description":"Invalid or missing API key"},"404":{"description":"Resource not found"}},"tags":["Campaigns"],"security":[{"api-key":[]}]},"patch":{"operationId":"CampaignsController_update","summary":"Update a campaign","parameters":[{"name":"id","required":true,"in":"path","description":"Campaign ID","schema":{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCampaignDto"}}}},"responses":{"200":{"description":"Resource updated successfully"},"400":{"description":"Validation failed"},"401":{"description":"Invalid or missing API key"},"404":{"description":"Resource not found"}},"tags":["Campaigns"],"security":[{"api-key":[]}]},"delete":{"operationId":"CampaignsController_remove","summary":"Soft delete a campaign","parameters":[{"name":"id","required":true,"in":"path","description":"Campaign ID","schema":{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"responses":{"200":{"description":"Resource deleted successfully"},"401":{"description":"Invalid or missing API key"},"404":{"description":"Resource not found"}},"tags":["Campaigns"],"security":[{"api-key":[]}]}},"/api/clients":{"post":{"operationId":"ClientsController_create","summary":"Create a new client","description":"Creates a new SMB client account","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateClientDto"}}}},"responses":{"201":{"description":"Client created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientResponseDto"}}}},"400":{"description":"Bad Request - Invalid input data"},"401":{"description":"Unauthorized - Invalid or missing API key"},"500":{"description":"Internal server error"}},"tags":["Clients"],"security":[{"api-key":[]}]},"get":{"operationId":"ClientsController_findAll","summary":"Get all clients","description":"Retrieves all SMB client accounts with pagination and filtering","parameters":[{"name":"page","required":false,"in":"query","description":"Page number (default: 1)","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Items per page (default: 10, max: 100)","schema":{"minimum":1,"maximum":100,"default":10,"example":10,"type":"number"}},{"name":"name","required":false,"in":"query","description":"Filter by name (partial match)","schema":{"example":"Acme","type":"string"}},{"name":"active","required":false,"in":"query","description":"Filter by active status","schema":{"example":true,"type":"boolean"}}],"responses":{"200":{"description":"Paginated list of clients"},"401":{"description":"Unauthorized - Invalid or missing API key"},"500":{"description":"Internal server error"}},"tags":["Clients"],"security":[{"api-key":[]}]}},"/api/clients/{id}":{"get":{"operationId":"ClientsController_findOne","summary":"Get client by ID","description":"Retrieves a single client account by ID","parameters":[{"name":"id","required":true,"in":"path","description":"Client UUID","schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"Client details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientResponseDto"}}}},"401":{"description":"Unauthorized - Invalid or missing API key"},"404":{"description":"Not Found - Resource does not exist"},"500":{"description":"Internal server error"}},"tags":["Clients"],"security":[{"api-key":[]}]},"patch":{"operationId":"ClientsController_update","summary":"Update client","description":"Updates an existing client account (partial update)","parameters":[{"name":"id","required":true,"in":"path","description":"Client UUID","schema":{"format":"uuid","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateClientDto"}}}},"responses":{"200":{"description":"Client updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientResponseDto"}}}},"400":{"description":"Bad Request - Invalid input data"},"401":{"description":"Unauthorized - Invalid or missing API key"},"404":{"description":"Not Found - Resource does not exist"},"500":{"description":"Internal server error"}},"tags":["Clients"],"security":[{"api-key":[]}]},"delete":{"operationId":"ClientsController_remove","summary":"Disable client","description":"Disables a client account (soft delete by setting active=false). Matches legacy API behavior.","parameters":[{"name":"id","required":true,"in":"path","description":"Client UUID","schema":{"format":"uuid","type":"string"}},{"name":"force","required":false,"in":"query","description":"Force deletion even with dependent records","schema":{"type":"boolean"}}],"responses":{"204":{"description":"No Content - Resource deleted successfully"},"401":{"description":"Unauthorized - Invalid or missing API key"},"404":{"description":"Not Found - Resource does not exist"},"500":{"description":"Internal server error"}},"tags":["Clients"],"security":[{"api-key":[]}]}},"/api/domains":{"post":{"operationId":"DomainsController_create","summary":"Create a new domain with access key","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDomainDto"}}}},"responses":{"201":{"description":"Domain created successfully"},"400":{"description":"Invalid input"},"401":{"description":"Unauthorized"}},"tags":["Domains"],"security":[{"api-key":[]}]},"get":{"operationId":"DomainsController_findAll","summary":"Get all domains","parameters":[],"responses":{"200":{"description":"List of all domains"},"401":{"description":"Unauthorized"}},"tags":["Domains"],"security":[{"api-key":[]}]}},"/api/domains/{id}":{"get":{"operationId":"DomainsController_findOne","summary":"Get a domain by ID","parameters":[{"name":"id","required":true,"in":"path","description":"Domain ID","schema":{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"responses":{"200":{"description":"Domain found"},"401":{"description":"Unauthorized"},"404":{"description":"Domain not found"}},"tags":["Domains"],"security":[{"api-key":[]}]},"patch":{"operationId":"DomainsController_update","summary":"Update a domain","parameters":[{"name":"id","required":true,"in":"path","description":"Domain ID","schema":{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDomainDto"}}}},"responses":{"200":{"description":"Domain updated successfully"},"400":{"description":"Invalid input"},"401":{"description":"Unauthorized"},"404":{"description":"Domain not found"}},"tags":["Domains"],"security":[{"api-key":[]}]},"delete":{"operationId":"DomainsController_remove","summary":"Soft delete a domain","parameters":[{"name":"id","required":true,"in":"path","description":"Domain ID","schema":{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"responses":{"200":{"description":"Domain deleted successfully"},"401":{"description":"Unauthorized"},"404":{"description":"Domain not found"}},"tags":["Domains"],"security":[{"api-key":[]}]}},"/api/geo-targeting/campaigns/{campaignId}":{"post":{"operationId":"GeoTargetingController_create","summary":"Add geo targeting to campaign","description":"Add zip code or state-based targeting. Either zip OR state must be provided, not both. If zip is provided, optional radius in miles can be specified.","parameters":[{"name":"campaignId","required":true,"in":"path","description":"Campaign ID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGeoTargetingDto"}}}},"responses":{"201":{"description":"Geo targeting added"},"400":{"description":"Invalid input - both zip and state provided"},"401":{"description":"Unauthorized"}},"tags":["Geo Targeting"],"security":[{"api-key":[]}]},"get":{"operationId":"GeoTargetingController_list","summary":"List all geo targeting for campaign","parameters":[{"name":"campaignId","required":true,"in":"path","description":"Campaign ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Geo targeting list retrieved"},"401":{"description":"Unauthorized"}},"tags":["Geo Targeting"],"security":[{"api-key":[]}]}},"/api/geo-targeting/campaigns/{campaignId}/zip/{zipCode}":{"post":{"operationId":"GeoTargetingController_addZip","summary":"Add ZIP code targeting to campaign","description":"Quick endpoint to add a single ZIP code without radius","parameters":[{"name":"campaignId","required":true,"in":"path","description":"Campaign ID","schema":{"type":"string"}},{"name":"zipCode","required":true,"in":"path","description":"5-digit ZIP code","schema":{"type":"string"}}],"responses":{"201":{"description":"ZIP targeting added"},"401":{"description":"Unauthorized"}},"tags":["Geo Targeting"],"security":[{"api-key":[]}]},"delete":{"operationId":"GeoTargetingController_removeZip","summary":"Remove ZIP code targeting from campaign","parameters":[{"name":"campaignId","required":true,"in":"path","description":"Campaign ID","schema":{"type":"string"}},{"name":"zipCode","required":true,"in":"path","description":"5-digit ZIP code","schema":{"type":"string"}}],"responses":{"200":{"description":"ZIP targeting removed"},"401":{"description":"Unauthorized"}},"tags":["Geo Targeting"],"security":[{"api-key":[]}]}},"/api/geo-targeting/campaigns/{campaignId}/state/{stateCode}":{"post":{"operationId":"GeoTargetingController_addState","summary":"Add state targeting to campaign","parameters":[{"name":"campaignId","required":true,"in":"path","description":"Campaign ID","schema":{"type":"string"}},{"name":"stateCode","required":true,"in":"path","description":"State code (e.g., CA, NY)","schema":{"type":"string"}}],"responses":{"201":{"description":"State targeting added"},"401":{"description":"Unauthorized"}},"tags":["Geo Targeting"],"security":[{"api-key":[]}]},"delete":{"operationId":"GeoTargetingController_removeState","summary":"Remove state targeting from campaign","parameters":[{"name":"campaignId","required":true,"in":"path","description":"Campaign ID","schema":{"type":"string"}},{"name":"stateCode","required":true,"in":"path","description":"State code (e.g., CA, NY)","schema":{"type":"string"}}],"responses":{"200":{"description":"State targeting removed"},"401":{"description":"Unauthorized"}},"tags":["Geo Targeting"],"security":[{"api-key":[]}]}},"/api/health":{"get":{"operationId":"HealthController_check","summary":"Health check endpoint with database connectivity","parameters":[],"responses":{"200":{"description":"The Health Check is successful","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","example":"ok"},"info":{"type":"object","example":{"database":{"status":"up"}},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true},"nullable":true},"error":{"type":"object","example":{},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true},"nullable":true},"details":{"type":"object","example":{"database":{"status":"up"}},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true}}}}}}},"503":{"description":"The Health Check is not successful","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","example":"error"},"info":{"type":"object","example":{"database":{"status":"up"}},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true},"nullable":true},"error":{"type":"object","example":{"redis":{"status":"down","message":"Could not connect"}},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true},"nullable":true},"details":{"type":"object","example":{"database":{"status":"up"},"redis":{"status":"down","message":"Could not connect"}},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true}}}}}}}},"tags":["Health"]}},"/api/health/live":{"get":{"operationId":"HealthController_liveness","summary":"Liveness probe - checks if app is running","parameters":[],"responses":{"200":{"description":"Application is alive"}},"tags":["Health"]}},"/api/health/ready":{"get":{"operationId":"HealthController_readiness","summary":"Readiness probe - checks if app is ready to serve traffic including database","parameters":[],"responses":{"200":{"description":"The Health Check is successful","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","example":"ok"},"info":{"type":"object","example":{"database":{"status":"up"}},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true},"nullable":true},"error":{"type":"object","example":{},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true},"nullable":true},"details":{"type":"object","example":{"database":{"status":"up"}},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true}}}}}}},"503":{"description":"The Health Check is not successful","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","example":"error"},"info":{"type":"object","example":{"database":{"status":"up"}},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true},"nullable":true},"error":{"type":"object","example":{"redis":{"status":"down","message":"Could not connect"}},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true},"nullable":true},"details":{"type":"object","example":{"database":{"status":"up"},"redis":{"status":"down","message":"Could not connect"}},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true}}}}}}}},"tags":["Health"]}},"/api/output":{"post":{"operationId":"OutputController_create","summary":"Create output record","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOutputDto"}}}},"responses":{"201":{"description":"Output created successfully"}},"tags":["Output"],"security":[{"api-key":[]}]},"get":{"operationId":"OutputController_findAll","summary":"Get all output records","parameters":[{"name":"limit","required":false,"in":"query","description":"Limit results","schema":{"type":"number"}}],"responses":{"200":{"description":"List of output records"}},"tags":["Output"],"security":[{"api-key":[]}]}},"/api/output/campaign/{campaignId}":{"get":{"operationId":"OutputController_findByCampaign","summary":"Get output by campaign ID","parameters":[{"name":"campaignId","required":true,"in":"path","description":"Campaign UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Campaign output records"}},"tags":["Output"],"security":[{"api-key":[]}]}},"/api/output/{id}":{"get":{"operationId":"OutputController_findOne","summary":"Get output by ID","parameters":[{"name":"id","required":true,"in":"path","description":"Output ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Output details"}},"tags":["Output"],"security":[{"api-key":[]}]},"patch":{"operationId":"OutputController_update","summary":"Update output record","parameters":[{"name":"id","required":true,"in":"path","description":"Output ID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOutputDto"}}}},"responses":{"200":{"description":"Output updated successfully"}},"tags":["Output"],"security":[{"api-key":[]}]},"delete":{"operationId":"OutputController_remove","summary":"Delete output record","parameters":[{"name":"id","required":true,"in":"path","description":"Output ID","schema":{"type":"string"}}],"responses":{"204":{"description":"Output deleted successfully"}},"tags":["Output"],"security":[{"api-key":[]}]}},"/api/segments":{"post":{"operationId":"SegmentsController_create","summary":"Create a new segment","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSegmentDto"}}}},"responses":{"201":{"description":"Segment created successfully"},"400":{"description":"Invalid input"},"401":{"description":"Unauthorized"}},"tags":["Segments"],"security":[{"api-key":[]}]},"get":{"operationId":"SegmentsController_findAll","summary":"Get all segments","parameters":[],"responses":{"200":{"description":"List of all segments"},"401":{"description":"Unauthorized"}},"tags":["Segments"],"security":[{"api-key":[]}]}},"/api/segments/{id}":{"get":{"operationId":"SegmentsController_findOne","summary":"Get a segment by ID","parameters":[{"name":"id","required":true,"in":"path","description":"Segment ID","schema":{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"responses":{"200":{"description":"Segment found"},"401":{"description":"Unauthorized"},"404":{"description":"Segment not found"}},"tags":["Segments"],"security":[{"api-key":[]}]},"patch":{"operationId":"SegmentsController_update","summary":"Update a segment","parameters":[{"name":"id","required":true,"in":"path","description":"Segment ID","schema":{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSegmentDto"}}}},"responses":{"200":{"description":"Segment updated successfully"},"400":{"description":"Invalid input"},"401":{"description":"Unauthorized"},"404":{"description":"Segment not found"}},"tags":["Segments"],"security":[{"api-key":[]}]},"delete":{"operationId":"SegmentsController_remove","summary":"Soft delete a segment","parameters":[{"name":"id","required":true,"in":"path","description":"Segment ID","schema":{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"responses":{"200":{"description":"Segment deleted successfully"},"401":{"description":"Unauthorized"},"404":{"description":"Segment not found"}},"tags":["Segments"],"security":[{"api-key":[]}]}}},"info":{"title":"Zazmic Platform API","description":"API for managing clients, domains, campaigns, segments, and geo-targeting","version":"1.0.0","contact":{}},"tags":[{"name":"API Info","description":"API information and endpoints"},{"name":"Clients","description":"Client management"},{"name":"Domains","description":"Domain management"},{"name":"Campaigns","description":"Campaign management"},{"name":"Segments","description":"Audience segments"},{"name":"Geo Targeting","description":"Geographic targeting"},{"name":"Output","description":"Output tracking"},{"name":"Health","description":"Health checks"}],"servers":[],"components":{"securitySchemes":{"api-key":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API Key for authentication"}},"schemas":{"CreateCampaignDto":{"type":"object","properties":{"name":{"type":"string","description":"Campaign name","example":"Summer Sale 2025"},"clientId":{"type":"string","description":"Client ID","example":"123e4567-e89b-12d3-a456-426614174000"},"creativeId":{"type":"string","description":"Modern Postcard Creative ID (NO file uploads!)","example":"MP-12345"}},"required":["name","clientId"]},"UpdateCampaignDto":{"type":"object","properties":{"name":{"type":"string","description":"Campaign name","example":"Summer Sale 2025"},"clientId":{"type":"string","description":"Client ID","example":"123e4567-e89b-12d3-a456-426614174000"},"creativeId":{"type":"string","description":"Modern Postcard Creative ID (NO file uploads!)","example":"MP-12345"}}},"CreateClientDto":{"type":"object","properties":{"name":{"type":"string","description":"Client/company name","example":"Acme Corporation","maxLength":255},"email":{"type":"string","description":"Contact email address","example":"contact@acme.com","maxLength":255},"lookupKey":{"type":"string","description":"Lookup key for client identification","example":"acme-corp","maxLength":255}},"required":["name"]},"ClientResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Client unique identifier","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Client/company name","example":"Acme Corporation"},"email":{"type":"object","description":"Contact email address","example":"contact@acme.com","nullable":true},"lookupKey":{"type":"object","description":"Lookup key for external integrations","example":"acme-corp","nullable":true},"createdAt":{"format":"date-time","type":"string","description":"Creation timestamp","example":"2025-01-01T00:00:00.000Z"},"updatedAt":{"type":"object","description":"Last update timestamp","example":"2025-01-15T10:30:00.000Z","nullable":true}},"required":["id","name","email","lookupKey","createdAt","updatedAt"]},"UpdateClientDto":{"type":"object","properties":{"name":{"type":"string","description":"Client/company name","example":"Acme Corporation","maxLength":255},"email":{"type":"string","description":"Contact email address","example":"contact@acme.com","maxLength":255},"lookupKey":{"type":"string","description":"Lookup key for client identification","example":"acme-corp","maxLength":255}}},"CreateDomainDto":{"type":"object","properties":{"domainName":{"type":"string","description":"Domain name","example":"example.com"},"clientId":{"type":"string","description":"Client ID","example":"123e4567-e89b-12d3-a456-426614174000"}},"required":["domainName","clientId"]},"UpdateDomainDto":{"type":"object","properties":{"domainName":{"type":"string","description":"Domain name","example":"example.com"},"clientId":{"type":"string","description":"Client ID","example":"123e4567-e89b-12d3-a456-426614174000"}}},"CreateGeoTargetingDto":{"type":"object","properties":{"campaignId":{"type":"string","description":"Campaign ID","example":"123e4567-e89b-12d3-a456-426614174000"},"zip":{"type":"string","description":"ZIP code for targeting (5-digit US postal code). Cannot be used with stateCode.","example":"90210"},"radius":{"type":"number","description":"Radius in miles around the zip code center. Requires zip to be set.","example":25},"stateCode":{"type":"string","description":"State code (2 letters, e.g., CA, NY). Cannot be used with zip.","example":"CA"},"suppress":{"type":"boolean","description":"Whether to suppress (exclude) this geo area. False means include only this area. Default is false.","example":false,"default":false},"creativeId":{"type":"number","description":"Creative ID to associate with this geo targeting (Modern Postcard Creative ID)","example":12345}},"required":["campaignId","suppress"]},"CreateOutputDto":{"type":"object","properties":{"campaignId":{"type":"string","description":"Campaign ID"},"productTypeId":{"type":"number","description":"Product type ID"},"dateStamp":{"type":"string","description":"Date stamp"},"total":{"type":"number","description":"Total output"},"monthly":{"type":"number","description":"Monthly output"},"dailyAvg":{"type":"number","description":"Daily average"}},"required":["campaignId","productTypeId","dateStamp","total","monthly","dailyAvg"]},"UpdateOutputDto":{"type":"object","properties":{"campaignId":{"type":"string","description":"Campaign ID"},"productTypeId":{"type":"number","description":"Product type ID"},"dateStamp":{"type":"string","description":"Date stamp"},"total":{"type":"number","description":"Total output"},"monthly":{"type":"number","description":"Monthly output"},"dailyAvg":{"type":"number","description":"Daily average"}}},"CreateSegmentDto":{"type":"object","properties":{"name":{"type":"string","description":"Segment name","example":"High Value Customers"},"description":{"type":"string","description":"Segment description","example":"Customers with lifetime value over $1000"},"domainId":{"type":"string","description":"Domain ID this segment belongs to","example":"123e4567-e89b-12d3-a456-426614174000"}},"required":["name","domainId"]},"UpdateSegmentDto":{"type":"object","properties":{"name":{"type":"string","description":"Segment name","example":"High Value Customers"},"description":{"type":"string","description":"Segment description","example":"Customers with lifetime value over $1000"},"domainId":{"type":"string","description":"Domain ID this segment belongs to","example":"123e4567-e89b-12d3-a456-426614174000"}}}}}}