Atoms API: audit consolidation
Consolidated corrections to the Atoms OpenAPI reference. Regenerate if you consume the spec; the shipped items below reach generated SDKs.
POST /agent/from-templatenow returns201 Created. The reference previously said200.GET /events: thecallIdquery parameter is required. Sending nocallIdreturns400 {"status": false, "errors": ["CallId is required"]}. Three404cases are documented: an unresolvable organization returns"Not authorized"; acallIdthat belongs to another organization returns"Agent not found"; a non-existent call returns"Call log not found". A completed call returns400 "Call is already completed".- Telephony provider enums narrowed to what the backend actually accepts.
GET /product/get-available-numbersandPOST /product/rent-numbernow list[twilio, plivo]only.whatsappandcustomwere never bookable on those flows (SupportedProvider = TWILIO | PLIVOinatoms-types). - Widget REST endpoints (
GET /agent/{id}/widget-config,PATCH /agent/{id}/widget-config,POST /agent/{id}/avatar/presigned-url) removed from the reference. Configure the widget and avatar from the dashboard. The three previously-published URLs now301to the Deprecation Notices Widget section. - Server-applied defaults on
POST /agentare now shown explicitly (synthesizer.voiceConfig.voiceId,gender,synthesizer.speed,synthesizer.sampleRate,slmModel, language,workflowType).transcriberTypeis called out as a read/serve-time default, not persisted at create. transcriberTyperequest placement: dropped fromCreateAgentRequest(POST/agentsilently drops it) and kept onUpdateAgentRequest(PATCH/agent/{id}, accepted on non-versioned agents) andDraftConfigRequest. All three request schemas are typed as a closed enum:pulse,pulse-legacy,gpt-realtime,gpt-realtime-mini. Response schemas keep it as an open string so clients tolerate additional values the server may return.CreateAgentRequest.synthesizer.voiceConfig.modelnow lists the current and older enginesPOST /agentaccepts, not only the four current ones.AgentDTO.synthesizer.voiceConfig.modelis an open string on the response side, since older agents may also returnwaves_lightning_large_voice_clone.PaymentErrorResponseextracted as a shared component and referenced from/payment/v1/*error responses. Envelope shape and error codes are unchanged from what the payment service already emits:{success: false, error: {code, message, details?}}, withcodevaluesvalidation_errorandnot_found(lowercase snake), matchingpayment-service/src/lib/errors.tsandmiddleware/error-handler.ts.GET /payment/v1/invoices/{invoiceId}/pdf: 404 description narrowed to what the controller enforces (a foreign-organization invoice id, returned in place of 403). A truly nonexistent id surfaces the underlying Stripe rejection, so it is not covered by the documented 404 example.POST /product/release-number: the200body exposesdata.product(the updated product document) anddata.message.data.successis alwaystrueon a200; failure paths return400.- Prose corrections: dropped internal-storage jargon (
Mongo _id,MongoDB ObjectId) from customer-facing descriptions in favor of “24-character hex id”; realigned versioning wording to the v2 branch path.