OpenAPI / docs gaps — for the API owner
Compiled 2026-06-16 during a 10-agent pass that deepened every product skill (.mintlify/skills/*) and the matching API doc pages. Throughout, openapi.yaml
was treated as the source of truth and docs were corrected to match it.
The items below are the opposite case: things the docs assert that
openapi.yaml does not define (so they could not be verified), plus
internal openapi.yaml inconsistencies. Nothing here was invented in the docs —
each entry is either left as documented (and flagged) or needs a spec change.
A. Documented but missing from openapi.yaml
These contracts live only in the MDX docs and could not be cross-checked against
a schema. Either add them to the spec or confirm/correct the docs.
- XML & WebSocket webhook callback payloads — every
<Gather>/<Dial>/<Record>/<Conference>/<Redirect>action-callback payload, the answer/hangup webhook params (CallUUID,From,To,Direction,CallStatus,Digits,DialStatus,RecordUrl, …), and the audio-stream status-callback events (StartStream/PlayedStream/StopStream) exist only in docs. The spec is REST-only. - KYC webhooks — events (
kyc.initiated/submitted/completed/failed/session_expired/session_revoked), payload shape, and theX-Vobiz-SignatureHMAC-SHA256 contract (secret = parentauth_token) are doc-only. - Trunk webhooks —
CallInitiated(withAllowed/Reason) andHangup(withbillsec/MOS) payloads + the signature header/secret are doc-only. (The spec’sbillsec/mosbelong to the CDR object, a different schema.) - transfer-call —
POST /api/v1/Account/{auth_id}/Call/{call_uuid}/is documented but the spec only definesGET(retrieve-queued) on that path. - Conference member-level Speak —
conference/members.mdxlinks “Speak Text to a Member” / “Stop Speaking to a Member” rows, but no such REST endpoint exists in the spec. - recording/export-historical-recordings —
POST /api/v1/Account/{auth_id}/export/recording/is documented in full but absent from the spec. - Recording DELETE has no doc page/nav —
DELETE …/Recording/{recording_id}/exists in the spec (returns 204) but has no page; documented inline inrecording/recording-object.mdx. Consider addingrecording/delete-recording.mdx. - Partner endpoints —
POST /login(JWT),GET /analytics,GET /accounts/{id},GET /accounts/{id}/balance, and globalGET /transactions,GET /cdrs,GET /cdrs/{call_uuid},GET /numbersare documented but not in the spec.partner/api.mdxclaims 21 endpoints; the spec defines 11. - WhatsApp — the spec has no WhatsApp schemas at all (only a
whatsapp_voice_ratepricing field). Also: docs/introductionimply interactive (buttons/lists) and location outbound sends, but the documented send contract accepts onlytext/template/media — interactive/location may be inbound-only. Needs confirmation + real request examples if outbound is supported. - make-call extra params —
ring_url,ring_method,hangup_url,fallback_url,caller_name,send_digits,send_on_preanswer,time_limit,hangup_on_ring, and allmachine_detection_*; plusrecordtranscription_url/callback_method,playlength/mix,speakloop/mix— present in docs/ examples but not in the spec request schemas. - No
402on purchase —purchase-from-inventoryonly documents404(not in inventory) and500(failed debit). The expected402 insufficient_balanceis not in the spec; left unverified rather than invented.
B. Internal openapi.yaml inconsistencies (spec bugs)
- Stale
components/schemas/Trunk— uses legacy field names (id,trunk_type,sip_domain,enabled) that don’t match real trunk responses (trunk_id,trunk_domain,trunk_status,trunk_direction, …). Inline examples carry the real shape; docs follow the examples. - Endpoint SIP host mismatch — endpoint list/retrieve examples use
registrar.vobiz.aiwhile the schema/canonical host issip.vobiz.ai. - IP ACL field name — create example uses
cidr_ip, but the schema field isip_address. audio_trackdefault — spec saysboth; a REST doc saidinbound(docs aligned toboth).- start-stream status — spec
200(Stream started) vs docs202(audio streaming started). - stream codec field — spec request uses
audio_format: [pcm, mulaw]while every doc usescontent_type(audio/x-l16/audio/x-mulaw;rate=).content_typeis the real field; theaudio_formatenum looks outdated. - phone-number list paging —
list-account-phone-numbersrequest params arelimit/offsetbut the response is paginated withpage/per_page/total. - Endpoint username rule — docs/skills say “alphanumeric only” but every spec
example username uses underscores (
john_doe). Constraint softened to “may be rejected”; true rule unverifiable.
C. Navigation suggestions (docs.json, not changed)
- Trunks group (
"root": "trunks") has notrunks/overview.mdxlanding page (sub-resources have index pages). - Add
recording/delete-recording.mdx+ nav entry for the existing DELETE endpoint (see A.7). - XML Overview group has no
rootlanding page. account-phone-number/assign-subaccountandunassign-subaccountlive under the Sub-Accounts nav group, not Phone Numbers (intentional cross-grouping? confirm).