{"openapi":"3.0.1","info":{"title":"TNIQ by Ringer — Customer API","description":"External API for TNIQ customers.\n\nProvides endpoints for:\n- **SOA Operations** — Port request lifecycle (activate, cancel, release, disconnect, conflict, IntraSP)\n- **Number Inventory** — Search, reserve, assign, release, audit, and report on telephone numbers\n- **Toll-Free** — Somos TFN Registry integration (search, reserve, activate PTR, disconnect)\n- **Messaging / 10DLC** — TCR brand and campaign registration, CNP election, number assignment\n- **CNAM** — Caller Name ID management\n- **ROC** — Responsible Organization Change workflows\n- **Reference Data** — Read-only CIC, NNID, credentialed Resp Org, and credentialed NPAC SPID directories\n- **Port Projects** — Bulk port order management with CSV/Excel upload\n- **Port-Out Releases** — NPAC release management\n\nAuthentication: Include your API token in the Authorization header:\n`Authorization: Bearer YOUR_TOKEN`","contact":{"name":"Ringer API Support","url":"https://ringer.tel","email":"api-support@ringer.tel"},"version":"v1"},"servers":[{"url":"https://api.tniq.ringer.tel","description":"Production"},{"url":"https://tniq-api.ringer.tel","description":"Production (legacy alias)"},{"url":"https://staging-api.ringer.tel","description":"Staging"}],"tags":[{"name":"Carrier Email","description":"Carrier coordination email (#336)"},{"name":"Messaging NNID Hold","description":"Per-SPID NNID hold policy, collision-safe backfill, and overwrite findings (#245)"},{"name":"Port-Out Release","description":"Port-out release project management for NPAC releases"},{"name":"Reports","description":"Queue async reports that are emailed to the requesting user as CSV/XLSX attachments."},{"name":"Messaging Enums","description":"TCR reference data: use cases, verticals, entity types"},{"name":"Managed Port Processing","description":"Customer-safe TNIQ-managed carrier and NPAC processing"},{"name":"Messaging NNID Overwrite Requests","description":"nnSR overwrite-request approval queue: list, approve, reject, LOA attach (#245 W3)"},{"name":"Messaging Campaigns","description":"10DLC campaign management and phone number assignment"},{"name":"Messaging Brands","description":"10DLC brand registration and management"},{"name":"Bulk Operations","description":"Submit and track bulk inventory operations (metadata, PIN, CNAM) with order references."},{"name":"Number Inventory Audit","description":"Three-phase inventory audit operations"},{"name":"Messaging Number NNID","description":"Assign or remove NNIDs on phone numbers (nnSR push)"},{"name":"Bulk Port","description":"Bulk port project management"},{"name":"Port Project Documents","description":"Supporting documents (LOA/BILL/CSR/OTHER) for LNP port-in projects"},{"name":"Toll-Free","description":"Toll-free number management via Somos TFN Registry"},{"name":"Bulk Port Jobs","description":"Background job monitoring and management"},{"name":"Number Inventory Query","description":"Query-based inventory search with powerful filter language"},{"name":"Telecom Reference Data","description":"Authenticated read-only CIC, NNID, Resp Org, and NPAC SPID reference directories"},{"name":"Number Inventory","description":"Search and query number inventory"},{"name":"ROC","description":"Resp Org Change workflow management"},{"name":"Activity Journal","description":"Tenant-wide activity journal (read-only)"},{"name":"TCR Webhooks","description":"TCR webhook event receiver and event history"},{"name":"Inventory Reports","description":"Generate and download inventory reports"},{"name":"SOA Operations","description":"Service Order Administration endpoints for Local Number Portability"},{"name":"Job Runs","description":"Operator-facing job run lifecycle (sync history, attempts, warnings)"},{"name":"Toll-Free Sync","description":"Toll-free number inventory synchronization"},{"name":"Messaging NNIDs","description":"NetNumber ID management for SMS provisioning"},{"name":"Inventory Map","description":"Geographic inventory visualization data"},{"name":"CIC Reference Data","description":"Authenticated NANPA FGD assignment reference data; not carrier routing configuration"}],"paths":{"/v1/tollfree/templates":{"get":{"tags":["Toll-Free"],"summary":"List templates","description":"List available CPR templates for a RespOrg","operationId":"listTemplates","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"put":{"tags":["Toll-Free"],"summary":"Update template","description":"Update an existing CPR template on Somos","operationId":"updateTemplate","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"post":{"tags":["Toll-Free"],"summary":"Create template","description":"Create a new CPR template on Somos","operationId":"createTemplate","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/templates/{tmplName}/unlock":{"put":{"tags":["Toll-Free"],"summary":"Unlock template","description":"Unlock a template after editing","operationId":"unlockTemplate","parameters":[{"name":"tmplName","in":"path","required":true,"schema":{"type":"string"}},{"name":"effDtTm","in":"query","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/templates/{tmplName}/lock":{"put":{"tags":["Toll-Free"],"summary":"Lock template","description":"Lock a template for editing","operationId":"lockTemplate","parameters":[{"name":"tmplName","in":"path","required":true,"schema":{"type":"string"}},{"name":"effDtTm","in":"query","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/query":{"put":{"tags":["Toll-Free"],"summary":"Query TFN status","description":"Query toll-free number status and details from Somos registry","operationId":"queryNumbers","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/projects/{projectId}/tfns/remove":{"put":{"tags":["ROC"],"summary":"Remove TFNs from open ROC transaction","operationId":"removeTfns","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/projects/{projectId}/cancel":{"put":{"tags":["ROC"],"summary":"Cancel ROC","operationId":"cancelRoc","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/inbound/projects/{projectId}/process":{"put":{"tags":["ROC"],"summary":"Process inbound ROC (approve/deny per TFN)","operationId":"processInboundRoc","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RocProcessRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/inbound/projects/{projectId}/checkout":{"put":{"tags":["ROC"],"summary":"Checkout inbound ROC for processing","operationId":"checkoutInboundRoc","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/inbound/projects/{projectId}/checkin":{"put":{"tags":["ROC"],"summary":"Checkin inbound ROC","operationId":"checkinInboundRoc","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/port-protection-rules/{ruleId}":{"get":{"tags":["port-protection-rule-controller"],"operationId":"get","parameters":[{"name":"ruleId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProtectionRuleResponse"}}}}}},"put":{"tags":["port-protection-rule-controller"],"operationId":"update","parameters":[{"name":"ruleId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRuleRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProtectionRuleResponse"}}}}}},"delete":{"tags":["port-protection-rule-controller"],"operationId":"delete","parameters":[{"name":"ruleId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/v1/port-projects/projects/{projectId}":{"get":{"tags":["Bulk Port"],"summary":"Get a specific bulk port project","operationId":"getProject_1","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProjectResponse"}}}}}},"put":{"tags":["Bulk Port"],"summary":"Update a bulk port project","operationId":"updateProject","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortProjectUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProjectResponse"}}}}}},"delete":{"tags":["Bulk Port"],"summary":"Delete a bulk port project","operationId":"deleteProject","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/v1/port-projects/projects/{projectId}/details/{tn}":{"put":{"tags":["Bulk Port"],"summary":"Update a specific TN detail in the project","operationId":"updateProjectDetail","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"tn","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortProjectUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProjectDetailResponse"}}}}}}},"/v1/port-projects/projects/{projectId}/auto-activation":{"get":{"tags":["Bulk Port"],"summary":"Get auto-activation settings for a project","operationId":"getAutoActivationSettings","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AutoActivationSettingsResponse"}}}}}},"put":{"tags":["Bulk Port"],"summary":"Update auto-activation settings for a project","operationId":"updateAutoActivationSettings","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoActivationSettingsRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProjectResponse"}}}}}}},"/v1/port-out-releases/projects/{projectId}/details/{tn}":{"put":{"tags":["Port-Out Release"],"summary":"Update TN details in a port-out release project","description":"Updates subscriber data for a TN (for manual entry when not in inventory)","operationId":"updateDetail","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"tn","in":"path","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortProjectDetail"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProjectDetailResponse"}}}}}}},"/v1/messaging/nnids/{nnidId}":{"get":{"tags":["Messaging NNIDs"],"summary":"Get NNID","operationId":"getNnid","parameters":[{"name":"nnidId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"put":{"tags":["Messaging NNIDs"],"summary":"Update NNID","operationId":"updateNnid","parameters":[{"name":"nnidId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateNnidRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"delete":{"tags":["Messaging NNIDs"],"summary":"Delete NNID","operationId":"deleteNnid","parameters":[{"name":"nnidId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/nnid-hold/policies/{spid}":{"put":{"tags":["Messaging NNID Hold"],"summary":"Set NNID hold policy","description":"Enable/disable the hold policy for a SPID and set its hold NNID (upserts)","operationId":"setPolicy","parameters":[{"name":"spid","in":"path","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NnidHoldPolicyRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns/{campaignId}":{"get":{"tags":["Messaging Campaigns"],"summary":"Get campaign","operationId":"getCampaign","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"put":{"tags":["Messaging Campaigns"],"summary":"Update campaign","operationId":"updateCampaign","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCampaignRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns/{campaignId}/resubmit":{"put":{"tags":["Messaging Campaigns"],"summary":"Resubmit campaign","description":"Resubmit campaign to specified MNOs","operationId":"resubmitCampaign","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns/{campaignId}/application":{"put":{"tags":["Messaging Campaigns"],"summary":"Bind consumer application association (local only)","description":"Local binding only — never contacts The Campaign Registry. Stamps applicationId/applicationMetadata (#267's consumer-association key) onto an EXISTING campaign without rebuilding/forwarding a TCR update, unlike PUT /campaigns/{campaignId} which would push a destructive sparse update to TCR. For consumer (WARP) application binding during their link-table retirement backfill; see issue #371.","operationId":"bindCampaignApplication","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BindApplicationRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands/{brandId}":{"get":{"tags":["Messaging Brands"],"summary":"Get brand","description":"Get a specific 10DLC brand by ID","operationId":"getBrand","parameters":[{"name":"brandId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"put":{"tags":["Messaging Brands"],"summary":"Update brand","description":"Update an existing 10DLC brand","operationId":"updateBrand","parameters":[{"name":"brandId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBrandRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"delete":{"tags":["Messaging Brands"],"summary":"Delete brand","description":"Delete a 10DLC brand (must have no campaigns)","operationId":"deleteBrand","parameters":[{"name":"brandId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands/{brandId}/revet":{"put":{"tags":["Messaging Brands"],"summary":"Resubmit brand for verification","operationId":"revet","parameters":[{"name":"brandId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands/{brandId}/application":{"put":{"tags":["Messaging Brands"],"summary":"Bind consumer application association (local only)","description":"Local binding only — never contacts The Campaign Registry. Stamps applicationId/applicationMetadata (#267's consumer-association key) onto an EXISTING brand without rebuilding/forwarding a TCR update, unlike PUT /{brandId} which would push a destructive sparse update to TCR. For consumer (WARP) application binding during their link-table retirement backfill; see issue #371.","operationId":"bindBrandApplication","parameters":[{"name":"brandId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BindApplicationRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/numbers/{telephoneNumber}/pin":{"put":{"tags":["Number Inventory"],"summary":"Set port-out PIN","description":"Set or clear the port-out PIN for a telephone number. Send null or empty to clear.","operationId":"updatePortOutPin","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/numbers/{telephoneNumber}/metadata":{"put":{"tags":["Number Inventory"],"summary":"Update metadata","description":"Update custom metadata for an assigned telephone number","operationId":"updateMetadata","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/numbers/by-id/{id}/metadata":{"put":{"tags":["Number Inventory"],"summary":"Update metadata by ID","description":"Update metadata using record ID (avoids duplicate TN issues)","operationId":"updateMetadataById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/templates/{tmplName}/disconnect":{"post":{"tags":["Toll-Free"],"summary":"Disconnect template","description":"Disconnect a template on Somos","operationId":"disconnectTemplate","parameters":[{"name":"tmplName","in":"path","required":true,"schema":{"type":"string"}},{"name":"effDtTm","in":"query","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/templates/drafts":{"get":{"tags":["Toll-Free"],"summary":"List drafts","description":"List template drafts for a customer","operationId":"listDrafts","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"post":{"tags":["Toll-Free"],"summary":"Save draft","description":"Create or update a template draft","operationId":"saveDraft","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateDraftDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/templates/drafts/{draftId}/push":{"post":{"tags":["Toll-Free"],"summary":"Push draft to Somos","description":"Push a template draft to Somos (create or update)","operationId":"pushDraftToSomos","parameters":[{"name":"draftId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/templates/copy":{"post":{"tags":["Toll-Free"],"summary":"Copy template","description":"Copy a template to a new name or future effective date","operationId":"copyTemplate","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateCopyRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/sync/{syncJobId}/reject":{"post":{"tags":["Toll-Free Sync"],"summary":"Reject staged sync","description":"Discard the staged toll-free sync results without applying them to live inventory","operationId":"rejectSync","parameters":[{"name":"syncJobId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectRequest"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/sync/{syncJobId}/commit":{"post":{"tags":["Toll-Free Sync"],"summary":"Commit staged sync","description":"Apply the staged toll-free sync results to live inventory","operationId":"commitSync","parameters":[{"name":"syncJobId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/sync/start":{"post":{"tags":["Toll-Free Sync"],"summary":"Start inventory sync","description":"Start a background toll-free inventory sync for a customer. By default the run stages results for review (autoCommit=false); set autoCommit=true to apply changes directly to the live inventory.","operationId":"startSync","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartSyncRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/search-spare":{"post":{"tags":["Toll-Free"],"summary":"Search spare numbers","description":"Search for available toll-free numbers by wildcard pattern (search only, does not reserve)","operationId":"searchSpareNumbers","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpareSearchRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/search-and-reserve":{"post":{"tags":["Toll-Free"],"summary":"Search & reserve","description":"Search for spare toll-free numbers and reserve them in one operation","operationId":"searchAndReserve","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpareSearchRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/reserve":{"post":{"tags":["Toll-Free"],"summary":"Reserve specific numbers","description":"Reserve specific toll-free numbers by number list","operationId":"reserveNumbers","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReserveRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/ptr-operations/{id}/retry":{"post":{"tags":["Toll-Free"],"summary":"Retry a failed/timed-out PTR operation","description":"Clone target_template_name + svc_order_num from the source op into a fresh op; returns 202 with the new op","operationId":"retryPtrOperation","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TollFreePtrOperationDto"}}}}}}},"/v1/tollfree/disconnect/{num}":{"post":{"tags":["Toll-Free"],"summary":"Disconnect TFN","description":"Disconnect an active toll-free number (WORKING → DISCONNECT)","operationId":"disconnectNumber","parameters":[{"name":"num","in":"path","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/change-resporg":{"post":{"tags":["Toll-Free"],"summary":"Change RespOrg","description":"Transfer toll-free numbers to a different RespOrg within the same entity","operationId":"changeRespOrg","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/activate":{"post":{"tags":["Toll-Free"],"summary":"Activate TFNs","description":"Create pointer records to activate reserved toll-free numbers with a CPR template. svcOrderNum: 4-13 alphanumerics, first character alphabetic (no hyphens). effDtTm: 'NOW' or ISO UTC time; minutes are snapped forward to quarter-hour boundaries (00/15/30/45) and the adjusted time is echoed per item.","operationId":"activateNumbers","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivateRequest"}}},"required":true},"responses":{"422":{"description":"Every number in the batch failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ActivateBatchResponse"}}}},"200":{"description":"At least one number activated (check per-item success)","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ActivateBatchResponse"}}}},"400":{"description":"Invalid svcOrderNum/effDtTm or template preflight failure","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/runs/{id}/ack":{"post":{"tags":["Job Runs"],"summary":"Acknowledge a run's warnings/failure","description":"Non-admin callers may only acknowledge runs scoped to their own customer(s). Only terminal runs can be acknowledged (409 while still IN_PROGRESS). Ack is first-wins and idempotent: a repeat call returns the original ack (alreadyAcked=true) without overwriting it.","operationId":"acknowledge","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/JobRunAckResponse"}}}}}}},"/v1/roc/webhook":{"post":{"tags":["ROC"],"summary":"Somos ROC webhook receiver","description":"Receives push notifications from Somos when ROC status changes. No JWT required.","operationId":"handleWebhook","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/sync":{"post":{"tags":["ROC"],"summary":"Sync ROC requests from Somos search","operationId":"syncFromSomos","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RocSyncRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/projects":{"get":{"tags":["ROC"],"summary":"List ROC projects","operationId":"listProjects","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"direction","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":50}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"post":{"tags":["ROC"],"summary":"Create ROC project","description":"Create a new outbound ROC request (DRAFT)","operationId":"createProject","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RocCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/projects/{projectId}/submit":{"post":{"tags":["ROC"],"summary":"Submit ROC to Somos","operationId":"submitRoc","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RocSubmitRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/projects/{projectId}/refresh":{"post":{"tags":["ROC"],"summary":"Refresh ROC status from Somos","operationId":"refreshProject","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/projects/{projectId}/loa/upload":{"post":{"tags":["ROC"],"summary":"Upload LOA file","operationId":"uploadLoa","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/projects/{projectId}/loa/generate":{"post":{"tags":["ROC"],"summary":"Generate LOA from Somos","operationId":"generateLoa","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RocLoaGenerateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/projects/{projectId}/escalate-hdi":{"post":{"tags":["ROC"],"summary":"Escalate to Somos Help Desk","operationId":"escalateToHdi","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":true,"schema":{"type":"string"}},{"name":"loaId","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/projects/{projectId}/documents/upload":{"post":{"tags":["ROC"],"summary":"Upload additional document","operationId":"uploadDocument","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":true,"schema":{"type":"string"}},{"name":"fileTitle","in":"query","required":false,"schema":{"type":"string"}},{"name":"notes","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/reports/jobs":{"get":{"tags":["Reports"],"summary":"List my recent report jobs","description":"Returns the requesting user's most recent report jobs, newest first.","operationId":"listMyJobs","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReportJobResponse"}}}}}}},"post":{"tags":["Reports"],"summary":"Queue a new report job","description":"Creates a QUEUED report job. The file is emailed to the authenticated user when generation completes.","operationId":"queueJob","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReportJobRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/reference-data/spids/resolve":{"post":{"tags":["Telecom Reference Data"],"summary":"Resolve up to 100 distinct SPIDs to NPAC registration identities in one bounded request","operationId":"resolveSpids","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpidResolveRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SpidResolveResponse"}}}}}}},"/v1/reference-data/resp-orgs/resolve":{"post":{"tags":["Telecom Reference Data"],"summary":"Resolve up to 100 distinct Resp Org IDs to directory identities in one bounded request","operationId":"resolveRespOrgs","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RespOrgResolveRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RespOrgResolveResponse"}}}}}}},"/v1/reference-data/nnids/resolve":{"post":{"tags":["Telecom Reference Data"],"summary":"Resolve up to 100 distinct NNIDs to GCMR identities in one bounded request","operationId":"resolveNnids","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NnidResolveRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/NnidResolveResponse"}}}}}}},"/v1/reference-data/cics/resolve":{"post":{"tags":["CIC Reference Data"],"summary":"Resolve up to 100 distinct CICs in one bounded request","operationId":"resolve","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CicResolveRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CicResolveResponse"}}}}}}},"/v1/port-protection-rules":{"get":{"tags":["port-protection-rule-controller"],"operationId":"list_2","parameters":[{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PortProtectionRuleResponse"}}}}}}},"post":{"tags":["port-protection-rule-controller"],"operationId":"create","parameters":[{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRuleRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProtectionRuleResponse"}}}}}}},"/v1/port-projects/workflow-rules":{"get":{"tags":["Bulk Port"],"summary":"Get workflow rules for customer","operationId":"getWorkflowRules","parameters":[{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"activeOnly","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"post":{"tags":["Bulk Port"],"summary":"Create workflow automation rule","operationId":"createWorkflowRule","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/port-projects/projects":{"get":{"tags":["Bulk Port"],"summary":"Get all bulk port projects for the authenticated customer","operationId":"getProjects","parameters":[{"name":"spid","in":"query","required":false,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string"}},{"name":"pageable","in":"query","required":true,"schema":{"$ref":"#/components/schemas/Pageable"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagePortProjectResponse"}}}}}},"post":{"tags":["Bulk Port"],"summary":"Create a new bulk port project","operationId":"createProject_1","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortProjectCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProjectResponse"}}}}}}},"/v1/port-projects/projects/{projectId}/validate":{"post":{"tags":["Bulk Port"],"summary":"Trigger validation for all pre-submission TNs in the project","description":"Returns 202 when jobs are queued. Returns 409 VALIDATION_IN_PROGRESS when a fresh validation is already running. Stale stuck progress rows do not block a new run.","operationId":"validateProject","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"/v1/port-projects/projects/{projectId}/upload":{"post":{"tags":["Bulk Port"],"summary":"Upload CSV or Excel file with TNs to port","operationId":"uploadFile","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"autoAssignLrn","in":"query","description":"Auto-assign first LRN when multiple are available","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","description":"CSV or Excel file containing TNs","format":"binary"}}}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProjectUploadResponse"}}}}}}},"/v1/port-projects/projects/{projectId}/tns":{"post":{"tags":["Bulk Port"],"summary":"Add TNs to a project via JSON","description":"Adds a JSON array of TNs (with optional LRNs) to a project. Processed through the same validation pipeline as the file /upload endpoint.","operationId":"addTns","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddTnsRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProjectUploadResponse"}}}}}}},"/v1/port-projects/projects/{projectId}/sync":{"post":{"tags":["Bulk Port"],"summary":"Sync project port states with NPAC reality (async reconciliation)","operationId":"syncProjectWithNpac","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/port-projects/projects/{projectId}/submit":{"post":{"tags":["Bulk Port"],"summary":"Submit all valid TNs in the project to SOA","operationId":"submitProject","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"dueDate","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"/v1/port-projects/projects/{projectId}/sms-impact-check":{"post":{"tags":["Bulk Port"],"summary":"Queue an NNID/SMS impact check for this project's TNs","description":"Dips nnSR for every TN in the project and reports which carry third-party SMS association that porting would break. Capped at 1,000 TNs; the report is emailed and the affected TNs are advisory-stamped with an nnid_warning.","operationId":"runSmsImpactCheck","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/port-projects/projects/{projectId}/resubmit-failed":{"post":{"tags":["Bulk Port"],"summary":"Correct & Resubmit — re-drive all FAILED TNs on a rejected project","operationId":"resubmitAllFailed","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResubmitFailedRequest"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/port-projects/projects/{projectId}/repair-lrn-data":{"post":{"tags":["Bulk Port"],"summary":"Dry-run or apply canonical LRN/LATA repair without changing port lifecycle","operationId":"repairLrnData","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"dryRun","in":"query","required":false,"schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProjectLrnRepairResult"}}}}}}},"/v1/port-projects/projects/{projectId}/progress/detailed":{"post":{"tags":["Bulk Port"],"summary":"Get detailed progress with events and error grouping","operationId":"getDetailedProgress","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortProjectProgressRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProjectProgressResponse"}}}}}}},"/v1/port-projects/projects/{projectId}/priority":{"post":{"tags":["Bulk Port"],"summary":"Set project priority","operationId":"setProjectPriority","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"priority","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProjectResponse"}}}}}}},"/v1/port-projects/projects/{projectId}/managed-processing":{"get":{"tags":["Managed Port Processing"],"summary":"Poll the customer-safe managed-processing state","operationId":"get_1","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ManagedProcessingResponse"}}}}}},"post":{"tags":["Managed Port Processing"],"summary":"Submit a prepared port project to TNIQ-managed processing","description":"Idempotently starts carrier routing, LSR/CSR handling, and gated NPAC processing.","operationId":"submit","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","description":"1-200 printable ASCII characters","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitManagedProcessingRequest"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ManagedProcessingResponse"}}}}}}},"/v1/port-projects/projects/{projectId}/managed-processing/actions/{actionId}/satisfy":{"post":{"tags":["Managed Port Processing"],"summary":"Satisfy one open managed-processing customer action","operationId":"satisfy","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"actionId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatisfyActionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ManagedProcessingResponse"}}}}}}},"/v1/port-projects/projects/{projectId}/emails":{"get":{"tags":["Carrier Email"],"summary":"List emails on this project (newest first)","operationId":"list_3","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CarrierEmailDto"}}}}}}},"post":{"tags":["Carrier Email"],"summary":"Send a carrier coordination email (multipart: payload JSON + optional files)","operationId":"send","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"required":["payload"],"type":"object","properties":{"payload":{"$ref":"#/components/schemas/CarrierEmailSendRequest"},"files":{"type":"array","items":{"type":"string","format":"binary"}}}}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CarrierEmailDto"}}}}}}},"/v1/port-projects/projects/{projectId}/emails/lsr-preview":{"post":{"tags":["Carrier Email"],"summary":"Render the filled LSR form for preview (no send, no persistence)","operationId":"lsrPreview","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LsrPreviewRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LsrPreviewResponse"}}}}}}},"/v1/port-projects/projects/{projectId}/documents/upload":{"post":{"tags":["Port Project Documents"],"summary":"Upload a supporting document to a port-in project","operationId":"upload","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"documentType","in":"query","required":true,"schema":{"type":"string","enum":["LOA","BILL","LSR","CSR","OTHER"]}},{"name":"tn","in":"query","required":false,"schema":{"type":"string"}},{"name":"notes","in":"query","required":false,"schema":{"type":"string"}},{"name":"signerName","in":"query","required":false,"schema":{"type":"string"}},{"name":"signedAt","in":"query","required":false,"schema":{"type":"string"}},{"name":"signerIp","in":"query","required":false,"schema":{"type":"string"}},{"name":"replacesDocumentId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProjectDocumentResponse"}}}}}}},"/v1/port-projects/projects/{projectId}/details/{tn}/fix-ddd-mismatch":{"post":{"tags":["Bulk Port"],"summary":"Fix DDD mismatch error by applying corrected due date","operationId":"fixDddMismatch","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"tn","in":"path","required":true,"schema":{"type":"string"}},{"name":"correctedDdd","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/port-projects/projects/{projectId}/cancel":{"post":{"tags":["Bulk Port"],"summary":"Cancel entire project - cancels all TNs and sets project to CANCELLED","operationId":"cancelProject","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CancelProjectResult"}}}}}}},"/v1/port-projects/projects/{projectId}/auto-fix":{"post":{"tags":["Bulk Port"],"summary":"Apply auto-fix to TNs with resolvable errors","operationId":"applyAutoFix","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"errorGroupId","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/port-projects/projects/{projectId}/amendments":{"post":{"tags":["Bulk Port"],"summary":"Amend editable fields across selected (or all) TNs in a port project","operationId":"amendProjectTns","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAmendmentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AmendmentResult"}}}}}}},"/v1/port-projects/projects/{projectId}/actions":{"post":{"tags":["Bulk Port"],"summary":"Perform bulk actions on selected TNs","operationId":"performBulkAction","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortProjectActionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/port-projects/port-window-check":{"post":{"tags":["Bulk Port"],"summary":"Port window preflight — check a desired due date against per-carrier minimum lead times","operationId":"portWindowCheck","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortWindowCheckRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortWindowCheckResult"}}}}}}},"/v1/port-projects/jobs/retry/{jobId}":{"post":{"tags":["Bulk Port Jobs"],"summary":"Retry a specific failed job","operationId":"retryFailedJob","parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RetryJobResponse"}}}}}}},"/v1/port-projects/jobs/retry/project/{projectId}":{"post":{"tags":["Bulk Port Jobs"],"summary":"Retry all failed TNs for a project","operationId":"retryAllFailedForProject","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RetryJobResponse"}}}}}}},"/v1/port-projects/filter-presets":{"get":{"tags":["Bulk Port"],"summary":"Get saved filter presets","operationId":"getFilterPresets","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"post":{"tags":["Bulk Port"],"summary":"Save filter preset","operationId":"saveFilterPreset","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/port-out-releases/projects":{"get":{"tags":["Port-Out Release"],"summary":"Get port-out release projects","description":"Returns all port-out release projects for the specified customer","operationId":"getProjects_1","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"pageable","in":"query","required":true,"schema":{"$ref":"#/components/schemas/Pageable"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagePortProjectResponse"}}}}}},"post":{"tags":["Port-Out Release"],"summary":"Create a port-out release project","description":"Creates a project with LOSING direction for releasing TNs to NPAC","operationId":"createProject_2","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortOutProjectCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProjectResponse"}}}}}}},"/v1/port-out-releases/projects/{projectId}/submit":{"post":{"tags":["Port-Out Release"],"summary":"Submit port-out releases to NPAC","description":"Submits soareleaseport for all TNs in the project","operationId":"submitProject_1","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"dueDate","in":"query","description":"Due date in MM/dd/yyyy format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SubmitResultResponse"}}}}}}},"/v1/port-out-releases/projects/{projectId}/retry":{"post":{"tags":["Port-Out Release"],"summary":"Retry failed TNs in a port-out release project","description":"Retries soareleaseport for TNs that previously failed","operationId":"retryFailedTns","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"dueDate","in":"query","description":"Due date in MM/dd/yyyy format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SubmitResultResponse"}}}}}}},"/v1/port-out-releases/lookup":{"post":{"tags":["Port-Out Release"],"summary":"Lookup TNs for port-out release","description":"Checks inventory and Telique to gather SPID info and subscriber data for release","operationId":"lookupTns","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TnLookupRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TnLookupResponse"}}}}}}},"/v1/messaging/webhooks/test/{eventType}":{"post":{"tags":["TCR Webhooks"],"summary":"Send mock webhook","description":"Triggers TCR to send a mock webhook event to our registered endpoint","operationId":"sendMockWebhook","parameters":[{"name":"eventType","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/numbers/nnid":{"post":{"tags":["Messaging Number NNID"],"summary":"Assign NNID to numbers","description":"Queues nnSR entries (action=A) for the given TNs. Campaign linkage is optional. Returns 202 with a push reference.","operationId":"assign","parameters":[{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignNumbersNnidRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"delete":{"tags":["Messaging Number NNID"],"summary":"Remove NNID from numbers","description":"Queues nnSR deletes (action=D). When nnid is omitted, each TN's locally recorded NNID is used; TNs with neither are skipped.","operationId":"remove","parameters":[{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveNumbersNnidRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/nnids":{"get":{"tags":["Messaging NNIDs"],"summary":"List NNIDs","description":"List NNIDs for the customer. Optional spid= filters to that SPID's allow-list (Phase B TN-card source). Omit spid for the full customer_nnids list.","operationId":"listNnids","parameters":[{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"spid","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"post":{"tags":["Messaging NNIDs"],"summary":"Create NNID","description":"Add a new NNID for the customer","operationId":"createNnid","parameters":[{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateNnidRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/nnid-requests/{id}/reject":{"post":{"tags":["Messaging NNID Overwrite Requests"],"summary":"Reject an nnSR overwrite request","description":"Registry-call-first, same semantics as approve.","operationId":"reject","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NnidOverwriteDecisionRequest"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/NnidOverwriteRequestResponse"}}}}}}},"/v1/messaging/nnid-requests/{id}/loa":{"post":{"tags":["Messaging NNID Overwrite Requests"],"summary":"Attach an LOA to a pending overwrite request","description":"PENDING rows only. Stored at sms-control/loa/{requestId}/{filename}.","operationId":"uploadLoa_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"/v1/messaging/nnid-requests/{id}/approve":{"post":{"tags":["Messaging NNID Overwrite Requests"],"summary":"Approve an nnSR overwrite request","description":"Registry-call-first: calls netnumber's overwrite-request response API before recording the decision locally. A registry failure leaves the row PENDING and propagates the error — no silent local success.","operationId":"approve","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NnidOverwriteDecisionRequest"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/NnidOverwriteRequestResponse"}}}}}}},"/v1/messaging/nnid-hold/reclaim":{"post":{"tags":["Messaging NNID Hold"],"summary":"Reclaim TN(s) to the SPID's hold NNID","description":"Single-entry SET_NNID push of the given TN(s) back to the caller's configured hold NNID via the existing durable nnSR pipeline (spec §C3). The current holder then has the standard 48h nnSR window to reject before it auto-approves.","operationId":"reclaim","parameters":[{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NnidHoldReclaimRequest"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/nnid-hold/policies/{spid}/backfill":{"post":{"tags":["Messaging NNID Hold"],"summary":"Commit hold backfill","description":"Push the eligible TNs to the hold NNID via the durable nnSR pipeline. Requires collisionRiskAcknowledged=true.","operationId":"commitBackfill","parameters":[{"name":"spid","in":"path","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NnidHoldBackfillRequest"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/nnid-hold/policies/{spid}/backfill/preview":{"post":{"tags":["Messaging NNID Hold"],"summary":"Preview hold backfill","description":"Preview the TNs a hold backfill would touch, plus exclusions and collision warnings","operationId":"previewBackfill","parameters":[{"name":"spid","in":"path","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/nnid-hold/findings/{id}/resolve":{"post":{"tags":["Messaging NNID Hold"],"summary":"Resolve an NNID overwrite finding","description":"Marks an OPEN finding RESOLVED (e.g. after manual review or action taken outside this queue). Does not itself push anything to nnSR — pair with the reclaim endpoint below when the resolution IS a reclaim.","operationId":"resolveFinding","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NnidFindingResolveRequest"}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/cnp-backfill":{"post":{"tags":["Messaging Campaigns"],"summary":"Backfill CNP registration","description":"Register all unregistered brands and campaigns with the customer's CNP. Used to push existing records after CNP integration is enabled.","operationId":"backfillCnpRegistration","parameters":[{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns":{"get":{"tags":["Messaging Campaigns"],"summary":"List campaigns","description":"List all 10DLC campaigns, optionally filtered by brand. Results are constrained to the resolved customer (the token's customer, or `customerId` when the caller is authorized for it). `applicationId` filters within that customer by the consumer-association key (#267).","operationId":"listCampaigns","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":25}},{"name":"brandId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"applicationId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"post":{"tags":["Messaging Campaigns"],"summary":"Create campaign","description":"Register a new 10DLC campaign with TCR","operationId":"createCampaign","parameters":[{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCampaignRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns/{campaignId}/transfer":{"post":{"tags":["Messaging Campaigns"],"summary":"Transfer (re-home) a campaign to another customer","description":"#267: updates the owning customer_id on the campaign. Allowed ONLY when the campaign's brand already belongs to the target customer (409 BRAND_MISMATCH otherwise — a campaign's TCR identity is permanently bound to its brand, so transfer the brand instead, which cascades its campaigns). TCR/CNP identifiers and approval state are untouched. Caller must be authorized for BOTH source and target customers.","operationId":"transferCampaign","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns/{campaignId}/numbers":{"get":{"tags":["Messaging Campaigns"],"summary":"List assigned numbers","operationId":"listAssignedNumbers","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":50}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"post":{"tags":["Messaging Campaigns"],"summary":"Assign numbers to campaign","operationId":"assignNumbers","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignNumbersRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"delete":{"tags":["Messaging Campaigns"],"summary":"Remove numbers from campaign","operationId":"removeNumbers","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignNumbersRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns/{campaignId}/nudge":{"post":{"tags":["Messaging Campaigns"],"summary":"Nudge CNP","description":"Send a nudge to the CNP to review or appeal a campaign","operationId":"nudgeCampaign","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns/{campaignId}/cnp":{"post":{"tags":["Messaging Campaigns"],"summary":"Elect CNP","description":"Elect a Connectivity Partner for a campaign","operationId":"electCnp","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns/{campaignId}/cnp-register":{"post":{"tags":["Messaging Campaigns"],"summary":"Retry CNP registration","description":"Retry campaign registration with the customer's connectivity partner (e.g., Sinch/Inteliquent)","operationId":"retryCnpRegistration","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns/{campaignId}/cnp-provision-numbers":{"post":{"tags":["Messaging Campaigns"],"summary":"Provision campaign TNs with the CNP","description":"Enqueue a durable push (or, with remove=true, withdrawal) of a batch of TNs to the campaign's elected connectivity partner (e.g., Sinch) so the DCA routes MO/MT. Defaults to the campaign's currently-assigned numbers when phoneNumbers is omitted. Returns the push reference; completion is async via webhook/reconcile.","operationId":"provisionCnpNumbers","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns/{campaignId}/cnp-migration":{"get":{"tags":["Messaging Campaigns"],"summary":"Get CNP migration status","description":"Get the current CNP migration status for a campaign","operationId":"getCnpMigrationStatus","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"post":{"tags":["Messaging Campaigns"],"summary":"Initiate CNP migration","description":"Begin migrating a campaign to a new upstream connectivity partner","operationId":"initiateCnpMigration","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"delete":{"tags":["Messaging Campaigns"],"summary":"Cancel CNP migration","description":"Cancel an in-progress CNP migration for a campaign","operationId":"cancelCnpMigration","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"explanation","in":"query","required":false,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns/link":{"post":{"tags":["Messaging Campaigns"],"summary":"Link existing TCR campaign","description":"Link an existing TCR campaign (own or partner) to this customer","operationId":"linkCampaign","parameters":[{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkCampaignRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands":{"get":{"tags":["Messaging Brands"],"summary":"List brands","description":"List all 10DLC brands for the authenticated customer. Results are constrained to the resolved customer (the token's customer, or `customerId` when the caller is authorized for it). `applicationId` filters within that customer by the consumer-association key (#267).","operationId":"listBrands","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":25}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"applicationId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"post":{"tags":["Messaging Brands"],"summary":"Create brand","description":"Register a new 10DLC brand with TCR","operationId":"createBrand","parameters":[{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBrandRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands/{brandId}/vetting":{"post":{"tags":["Messaging Brands"],"summary":"Request external vetting for a brand","operationId":"submitVetting","parameters":[{"name":"brandId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitVettingRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands/{brandId}/vetting/{vettingId}/appeal":{"post":{"tags":["Messaging Brands"],"summary":"Submit an appeal against an existing external vet","operationId":"appealVetting","parameters":[{"name":"brandId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"vettingId","in":"path","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitVetAppealRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands/{brandId}/vetting/import":{"post":{"tags":["Messaging Brands"],"summary":"Import an existing external vet","operationId":"importVetting","parameters":[{"name":"brandId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportVettingRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands/{brandId}/transfer":{"post":{"tags":["Messaging Brands"],"summary":"Transfer (re-home) a brand to another customer","description":"#267: updates the owning customer_id on the brand AND all its campaigns in one transaction. TCR/CNP identifiers and approval state are untouched. Caller must be authorized for BOTH source and target customers.","operationId":"transferBrand","parameters":[{"name":"brandId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands/{brandId}/cnp-register":{"post":{"tags":["Messaging Brands"],"summary":"Retry CNP registration","description":"Retry brand registration with the customer's connectivity partner (e.g., Sinch/Inteliquent)","operationId":"retryCnpRegistration_1","parameters":[{"name":"brandId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands/{brandId}/appeal":{"post":{"tags":["Messaging Brands"],"summary":"Submit an appeal against brand identity status","operationId":"appealIdentity","parameters":[{"name":"brandId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitIdentityAppealRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands/{brandId}/appeal-evidence":{"post":{"tags":["Messaging Brands"],"summary":"Upload an evidence file for future brand appeals","operationId":"uploadEvidence","parameters":[{"name":"brandId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands/link":{"post":{"tags":["Messaging Brands"],"summary":"Link existing TCR brand","description":"Link an existing TCR brand to this customer's account","operationId":"linkBrand","parameters":[{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkBrandRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/lnp/soa/release":{"post":{"tags":["SOA Operations"],"summary":"Release a port request","description":"Releases a telephone number from a port request","operationId":"release","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaReleaseRequest"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaReleaseRequest"}}},"required":true},"responses":{"200":{"description":"Release successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"404":{"description":"Port request not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"403":{"description":"SPID not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/lnp/soa/lrn/remove":{"post":{"tags":["SOA Operations"],"summary":"Remove an LRN","description":"Removes an existing Local Routing Number","operationId":"removeLrn","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaLrnRemoveRequest"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaLrnRemoveRequest"}}},"required":true},"responses":{"200":{"description":"LRN removed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"404":{"description":"LRN not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"403":{"description":"SPID not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/lnp/soa/lrn/create":{"post":{"tags":["SOA Operations"],"summary":"Create an LRN","description":"Creates a new Local Routing Number","operationId":"createLrn","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaLrnCreateRequest"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaLrnCreateRequest"}}},"required":true},"responses":{"201":{"description":"LRN created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"403":{"description":"SPID not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"409":{"description":"LRN already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/lnp/soa/intrasp":{"post":{"tags":["SOA Operations"],"summary":"IntraSP transfer","description":"Performs an intra-service provider number portability transfer, updating the LRN without a full port order","operationId":"intraSp","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaIntraSpRequest"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaIntraSpRequest"}}},"required":true},"responses":{"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"200":{"description":"IntraSP transfer successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"403":{"description":"SPID not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"400":{"description":"Pre-flight validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/lnp/soa/events/{recno}/acknowledge":{"post":{"tags":["SOA Operations"],"summary":"Acknowledge an event","description":"Acknowledges a specific SOA event by record number","operationId":"acknowledgeEvent","parameters":[{"name":"recno","in":"path","description":"Record number of the event to acknowledge","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Event acknowledged successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"404":{"description":"Event not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/lnp/soa/disconnect":{"post":{"tags":["SOA Operations"],"summary":"Disconnect a number","description":"Disconnects a telephone number from service","operationId":"disconnect","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaDisconnectRequest"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaDisconnectRequest"}}},"required":true},"responses":{"200":{"description":"Disconnection successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"403":{"description":"SPID not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/lnp/soa/create":{"post":{"tags":["SOA Operations"],"summary":"Create a new port request [DEPRECATED]","description":"DEPRECATED: Use Port Orders system instead (POST /v1/port-projects/projects). This endpoint will be removed in v3.0.0.","operationId":"create_1","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaCreateRequest"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaCreateRequest"}}},"required":true},"responses":{"410":{"description":"Gone - Use Port Orders system","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}},"application/xml":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}},"application/xml":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}},"application/xml":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}},"deprecated":true,"security":[{"bearerAuth":[]}]}},"/v1/lnp/soa/conflict/remove":{"post":{"tags":["SOA Operations"],"summary":"Remove a conflict","description":"Removes a telephone number from conflict status","operationId":"removeConflict","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaConflictRemoveRequest"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaConflictRemoveRequest"}}},"required":true},"responses":{"200":{"description":"Conflict removed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/lnp/soa/conflict/create":{"post":{"tags":["SOA Operations"],"summary":"Create a conflict","description":"Places a telephone number into conflict status","operationId":"createConflict","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaConflictCreateRequest"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaConflictCreateRequest"}}},"required":true},"responses":{"200":{"description":"Conflict created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/lnp/soa/cancel":{"post":{"tags":["SOA Operations"],"summary":"Cancel a port request","description":"Cancels an existing port request for a telephone number","operationId":"cancel","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaCancelRequest"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaCancelRequest"}}},"required":true},"responses":{"200":{"description":"Cancellation successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"404":{"description":"Port request not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"403":{"description":"SPID not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/lnp/soa/activate":{"post":{"tags":["SOA Operations"],"summary":"Activate a ported number","description":"Activates a telephone number that has been ported","operationId":"activate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaActivateRequest"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaActivateRequest"}}},"required":true},"responses":{"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"200":{"description":"Activation successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"403":{"description":"SPID not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/inventory/query":{"post":{"tags":["Number Inventory Query"],"summary":"Query inventory","description":"Execute a query using the query language syntax","operationId":"queryInventory","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueryRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/query/validate":{"post":{"tags":["Number Inventory Query"],"summary":"Validate query","description":"Validate query syntax without executing it","operationId":"validateQuery","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/query/export":{"post":{"tags":["Number Inventory Query"],"summary":"Export inventory to CSV","description":"Stream inventory query results as CSV. For XLSX, use POST /v1/reports/jobs with reportType=INVENTORY_XLSX.","operationId":"exportInventoryToCsv","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportRequest"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/v1/inventory/numbers/{telephoneNumber}/snapback":{"get":{"tags":["Number Inventory"],"summary":"Snapback eligibility","description":"Whether a recently ported-out number can be snapped back (port-in to original SPID). Window default 72h; reasons: ELIGIBLE, NO_LOCAL_RECORD, NO_ORIGINAL_SPID, WINDOW_EXPIRED.","operationId":"snapbackEligibility","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"post":{"tags":["Number Inventory"],"summary":"Initiate snapback","description":"Creates a port-in project targeting the number's original SPID and queues the TN for validation. The project still requires operator review and submit.","operationId":"initiateSnapback","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/numbers/{telephoneNumber}/reserve":{"post":{"tags":["Number Inventory"],"summary":"Reserve number","description":"Reserve a telephone number for an application","operationId":"reserveNumber","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/numbers/{telephoneNumber}/release":{"post":{"tags":["Number Inventory"],"summary":"Release number","description":"Release a telephone number back to available pool. #365: if the number is currently assigned (applicationId set), the release is rejected with 409 {code:\"ASSIGNED\", applicationId} unless force=true or a matching expectedApplicationId is provided (mismatch rejects even with force).","operationId":"releaseNumber","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"type":"string"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"expectedApplicationId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/numbers/{telephoneNumber}/reassign":{"post":{"tags":["Number Inventory"],"summary":"Atomically reassign number to another application","description":"#365-3c: transfers ownership fromApplicationId -> toApplicationId in one transaction; the TN never transits AVAILABLE. 409 {code:\"MISMATCH\", applicationId} when fromApplicationId is not the current owner; 409 {code:\"NOT_ASSIGNED\"} when the TN has no owner. No force flag by design — reconcile first (see /v1/journal/events).","operationId":"reassignNumber","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReassignRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/numbers/{telephoneNumber}/quarantine":{"post":{"tags":["Number Inventory"],"summary":"Enter quarantine","description":"Place an IN_USE/RESERVED number into the aging hold. Body: reason (DISCONNECT|NPAC_INITIATED|MANUAL|MIGRATION, default MANUAL), and either expiresAt (ISO-8601) or days (default 90).","operationId":"enterQuarantine","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"type":"string"}},{"name":"spid","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"delete":{"tags":["Number Inventory"],"summary":"Release from quarantine","description":"Transition a quarantined number immediately back to AVAILABLE.","operationId":"releaseFromQuarantine","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"type":"string"}},{"name":"spid","in":"query","required":true,"schema":{"type":"string"}},{"name":"reason","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"patch":{"tags":["Number Inventory"],"summary":"Adjust quarantine expiry","description":"Extend or shorten the quarantine_expires_at on a number currently in QUARANTINE.","operationId":"adjustQuarantine","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"type":"string"}},{"name":"spid","in":"query","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/numbers/{telephoneNumber}/disconnect":{"post":{"tags":["Number Inventory"],"summary":"Disconnect number","description":"Disconnect a number from the upstream registry. For TFNs calls Somos PTR disconnect; for DIDs calls AstroSOA soadisconnect. Sets local status=DISCONNECTED on success.","operationId":"disconnectNumber_1","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"type":"string"}},{"name":"cooldownDays","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/numbers/{telephoneNumber}/assign":{"post":{"tags":["Number Inventory"],"summary":"Assign number","description":"Assign a telephone number to an application with custom metadata","operationId":"assignNumber","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/numbers/by-id/{id}/reserve":{"post":{"tags":["Number Inventory"],"summary":"Reserve number by ID","description":"Reserve a telephone number using record ID (avoids duplicate TN issues)","operationId":"reserveNumberById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/numbers/by-id/{id}/release":{"post":{"tags":["Number Inventory"],"summary":"Release number by ID","description":"Release a telephone number using record ID (avoids duplicate TN issues). Same #365 assigned-release guard as /numbers/{tn}/release.","operationId":"releaseNumberById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"expectedApplicationId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/numbers/by-id/{id}/reassign":{"post":{"tags":["Number Inventory"],"summary":"Atomically reassign number to another application by ID","description":"Reassign using record ID (avoids duplicate TN issues). See /numbers/{telephoneNumber}/reassign for the transfer semantics.","operationId":"reassignNumberById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReassignRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/numbers/by-id/{id}/disconnect":{"post":{"tags":["Number Inventory"],"summary":"Disconnect number by ID","description":"Disconnect a number using record ID (avoids duplicate TN issues). See /numbers/{telephoneNumber}/disconnect.","operationId":"disconnectNumberById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"cooldownDays","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/numbers/by-id/{id}/assign":{"post":{"tags":["Number Inventory"],"summary":"Assign number by ID","description":"Assign a telephone number using record ID (avoids duplicate TN issues)","operationId":"assignNumberById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/map/data":{"post":{"tags":["Inventory Map"],"summary":"Get inventory map data","description":"Returns aggregated inventory statistics by geographic region (state, LATA, rate center, etc.). Results are automatically filtered to customer's allowed SPIDs.","operationId":"getMapData","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InventoryMapRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/bulk/{id}/retry-failed":{"post":{"tags":["Bulk Operations"],"summary":"Retry failed items as a new linked order","operationId":"retryFailed","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/bulk/{id}/cancel":{"post":{"tags":["Bulk Operations"],"summary":"Cancel a queued/running bulk operation","description":"Stops at the next per-TN boundary. Processed items stay done (PARTIAL accounting).","operationId":"cancel_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/bulk/{action}":{"post":{"tags":["Bulk Operations"],"summary":"Submit a bulk operation","description":"Body carries exactly one of tns[] or query (Query Builder DSL). Returns 202 with the order; execution is asynchronous.","operationId":"submit_1","parameters":[{"name":"action","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBulkOperationRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/bulk/{action}/preview":{"post":{"tags":["Bulk Operations"],"summary":"Preview a bulk operation","description":"Resolves the selection to a count, a sample, and advisory warnings (e.g. non-wireless OCN for P2P SET_NNID). Persists nothing.","operationId":"preview","parameters":[{"name":"action","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBulkOperationRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/audit/{auditJobId}/reject":{"post":{"tags":["Number Inventory Audit"],"summary":"Reject dry-run","description":"Rejects staging data and cleans up","operationId":"rejectAudit","parameters":[{"name":"auditJobId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/audit/{auditJobId}/commit":{"post":{"tags":["Number Inventory Audit"],"summary":"Commit dry-run","description":"Commits staging data to live inventory tables","operationId":"commitAudit","parameters":[{"name":"auditJobId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/audit/start":{"post":{"tags":["Number Inventory Audit"],"summary":"Start inventory audit","description":"Initiates a three-phase inventory audit for the specified SPID","operationId":"startAudit","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartAuditRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/aggregate":{"post":{"tags":["Number Inventory Query"],"summary":"Aggregate inventory","description":"Get grouped counts of inventory numbers by one or more dimensions","operationId":"aggregateInventory","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AggregateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/cnam/activate":{"post":{"tags":["trans-union-cnam-controller"],"operationId":"activateCnam","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CnamActivateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/tollfree/templates/{tmplName}":{"get":{"tags":["Toll-Free"],"summary":"Retrieve full template","description":"Get full template record with CPR data from Somos","operationId":"getTemplate","parameters":[{"name":"tmplName","in":"path","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}},{"name":"effDtTm","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"delete":{"tags":["Toll-Free"],"summary":"Delete template","description":"Delete a future-effective template on Somos","operationId":"deleteTemplate","parameters":[{"name":"tmplName","in":"path","required":true,"schema":{"type":"string"}},{"name":"effDtTm","in":"query","required":true,"schema":{"type":"string"}},{"name":"recVersionId","in":"query","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/templates/{tmplName}/history":{"get":{"tags":["Toll-Free"],"summary":"Template history","description":"Get change history for a template","operationId":"getTemplateHistory","parameters":[{"name":"tmplName","in":"path","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/templates/{tmplName}/history/{effDtTm}/{activityTimestamp}":{"get":{"tags":["Toll-Free"],"summary":"Template history version","description":"Retrieve a specific historical version of a template","operationId":"getTemplateHistoryVersion","parameters":[{"name":"tmplName","in":"path","required":true,"schema":{"type":"string"}},{"name":"effDtTm","in":"path","required":true,"schema":{"type":"string"}},{"name":"activityTimestamp","in":"path","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/templates/drafts/{draftId}":{"get":{"tags":["Toll-Free"],"summary":"Get draft","description":"Get a specific template draft","operationId":"getDraft","parameters":[{"name":"draftId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"delete":{"tags":["Toll-Free"],"summary":"Delete draft","description":"Delete a template draft","operationId":"deleteDraft","parameters":[{"name":"draftId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/sync/{syncJobId}":{"get":{"tags":["Toll-Free Sync"],"summary":"Get sync status","description":"Get the current status and progress of a sync job","operationId":"getSyncStatus","parameters":[{"name":"syncJobId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"delete":{"tags":["Toll-Free Sync"],"summary":"Cancel sync","description":"Cancel a running sync job","operationId":"cancelSync","parameters":[{"name":"syncJobId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/sync/{syncJobId}/diff":{"get":{"tags":["Toll-Free Sync"],"summary":"Get sync diff summary","description":"Returns the staged-vs-live change summary for a completed toll-free sync","operationId":"getDiff","parameters":[{"name":"syncJobId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/sync/{syncJobId}/diff/download":{"get":{"tags":["Toll-Free Sync"],"summary":"Download sync diff report","description":"Downloads the staged-vs-live diff for a toll-free sync as an Excel workbook","operationId":"downloadDiff","parameters":[{"name":"syncJobId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/sync/history":{"get":{"tags":["Toll-Free Sync"],"summary":"Get sync history","description":"Get recent sync jobs for a customer","operationId":"getSyncHistory","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/status":{"get":{"tags":["Toll-Free"],"summary":"Check Somos availability","description":"Check if Somos integration is active","operationId":"getSomosStatus","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/reserved-numbers":{"get":{"tags":["Toll-Free"],"summary":"List reserved numbers","description":"Get all reserved toll-free numbers for a customer's RespOrg","operationId":"getReservedNumbers","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/ptr-operations":{"get":{"tags":["Toll-Free"],"summary":"List PTR operations for a TFN","description":"Return all toll-free PTR operation records for the given TFN, newest first","operationId":"listPtrOperations","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"telephoneNumber","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TollFreePtrOperationDto"}}}}}}}},"/v1/tollfree/ptr-operations/{id}":{"get":{"tags":["Toll-Free"],"summary":"Get a single PTR operation","description":"Return one toll-free PTR operation record by id, or 404 if not found","operationId":"getPtrOperation","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TollFreePtrOperationDto"}}}}}}},"/v1/tollfree/pointer-record/{num}":{"get":{"tags":["Toll-Free"],"summary":"Query pointer record","description":"Get pointer record details for a TFN","operationId":"queryPointerRecord","parameters":[{"name":"num","in":"path","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/inventory":{"get":{"tags":["Toll-Free"],"summary":"Get inventory list","description":"Paginated list of toll-free numbers from local database","operationId":"getInventory","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}},{"name":"search","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":50}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/inventory/summary":{"get":{"tags":["Toll-Free"],"summary":"Get inventory summary","description":"Get toll-free inventory counts grouped by RespOrg and status from local database","operationId":"getInventorySummary","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/history/{tfn}":{"get":{"tags":["Toll-Free"],"summary":"Get TFN history","description":"Query Number Admin History for a toll-free number from Somos","operationId":"getTfnHistory","parameters":[{"name":"tfn","in":"path","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/entities/{entityId}/respOrgs":{"get":{"tags":["Toll-Free"],"summary":"Get RespOrgs for entity","description":"List all RespOrgs under a Somos entity","operationId":"getRespOrgsByEntity","parameters":[{"name":"entityId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/entities/{entityId}/respOrgs/active":{"get":{"tags":["Toll-Free"],"summary":"Get active RespOrgs","description":"List only active RespOrgs under a Somos entity","operationId":"getActiveRespOrgsByEntity","parameters":[{"name":"entityId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/tollfree/customer-config":{"get":{"tags":["Toll-Free"],"summary":"Get toll-free config","description":"Get the toll-free configuration for a customer","operationId":"getCustomerTollFreeConfig","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/runs":{"get":{"tags":["Job Runs"],"summary":"List job runs","description":"Runs visible to the caller's customer scope (null scope = superAdmin wildcard), newest first. kind narrows the listing on its own; kind+subjectRef looks up that specific run's history. subjectRef without kind is ignored (subject refs are only meaningful within a kind). All filters are applied at the query level and remain scope-filtered. internalDetail on attempts is redacted for non-admin callers.","operationId":"list","parameters":[{"name":"kind","in":"query","required":false,"schema":{"type":"string"}},{"name":"subjectRef","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":50}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/JobRunDto"}}}}}}}},"/v1/roc/projects/{projectId}":{"get":{"tags":["ROC"],"summary":"Get ROC project details","operationId":"getProject","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/projects/{projectId}/documents":{"get":{"tags":["ROC"],"summary":"Get documents for ROC project","operationId":"getProjectDocuments","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/projects/{projectId}/documents/{documentId}/download":{"get":{"tags":["ROC"],"summary":"Download document","operationId":"downloadDocument","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"documentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/projects/{projectId}/details":{"get":{"tags":["ROC"],"summary":"Get per-TFN details for ROC project","operationId":"getProjectDetails","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/roc/projects/{projectId}/audit":{"get":{"tags":["ROC"],"summary":"Get audit log for ROC project","operationId":"getProjectAudit","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/reports/jobs/{id}":{"get":{"tags":["Reports"],"summary":"Poll a report job's status","description":"Returns the status of a single report job. Callers may only access their own jobs unless they are superAdmin.","operationId":"getJob","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ReportJobResponse"}}}}}}},"/v1/reference-data/spids":{"get":{"tags":["Telecom Reference Data"],"summary":"Search published NPAC SPID registration identities","description":"Returns credentialed identity summaries for vetted TNIQ customers with NPAC rights","operationId":"spids","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string"}},{"name":"region","in":"query","required":false,"schema":{"type":"string"}},{"name":"active","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"maximum":200,"minimum":1,"type":"integer","format":"int32","default":50}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"spid,asc"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/NpacSpidDirectoryPageDto"}}}}}}},"/v1/reference-data/spids/{spid}":{"get":{"tags":["Telecom Reference Data"],"summary":"Inspect one published NPAC SPID registration record","description":"Returns published registration contacts for LNP operations; raw source records and database metadata are never returned","operationId":"spid","parameters":[{"name":"spid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/NpacSpidDirectoryDetailDto"}}}}}}},"/v1/reference-data/resp-orgs":{"get":{"tags":["Telecom Reference Data"],"summary":"Search published Somos Resp Org identities","description":"Returns bounded identity summaries; open one Resp Org ID for its complete order-processing contact detail","operationId":"respOrgs","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string"}},{"name":"entityId","in":"query","required":false,"schema":{"type":"string"}},{"name":"active","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"maximum":200,"minimum":1,"type":"integer","format":"int32","default":50}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"respOrgId,asc"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RespOrgDirectoryPageDto"}}}}}}},"/v1/reference-data/resp-orgs/{respOrgId}":{"get":{"tags":["Telecom Reference Data"],"summary":"Inspect one published Somos Resp Org record","description":"Returns the complete published address, primary contact, change contact, and notes; raw source records and database metadata are never returned","operationId":"respOrg","parameters":[{"name":"respOrgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RespOrgDirectoryReadDetailDto"}}}}}}},"/v1/reference-data/nnids":{"get":{"tags":["Telecom Reference Data"],"summary":"Search the published NetNumber GCMR directory","operationId":"nnids","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string"}},{"name":"serviceType","in":"query","required":false,"schema":{"type":"string"}},{"name":"countryIso2","in":"query","required":false,"schema":{"type":"string"}},{"name":"active","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"maximum":200,"minimum":1,"type":"integer","format":"int32","default":50}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"nnid,asc"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/NnidDirectoryPageDto"}}}}}}},"/v1/reference-data/nnids/{nnid}":{"get":{"tags":["Telecom Reference Data"],"summary":"Inspect one published NetNumber GCMR directory record","operationId":"nnid","parameters":[{"name":"nnid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/NnidDirectoryDetailDto"}}}}}}},"/v1/reference-data/cics":{"get":{"tags":["CIC Reference Data"],"summary":"Search NANPA Feature Group D CIC assignments","operationId":"list_1","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"active","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"maximum":200,"minimum":1,"type":"integer","format":"int32","default":50}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageCicDirectorySummaryDto"}}}}}}},"/v1/reference-data/cics/{cic}":{"get":{"tags":["CIC Reference Data"],"summary":"Inspect one NANPA Feature Group D CIC assignment","operationId":"detail","parameters":[{"name":"cic","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CicDirectoryDetailDto"}}}}}}},"/v1/port-protection-rules/effective":{"get":{"tags":["port-protection-rule-controller"],"operationId":"effective","parameters":[{"name":"tn","in":"query","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EffectivePolicyResponse"}}}}}}},"/v1/port-projects/projects/{projectId}/statistics":{"get":{"tags":["Bulk Port"],"summary":"Get project statistics summary (fast aggregation)","description":"Returns project statistics using database aggregation for optimal performance. Replaces the need to fetch 10,000 records for basic statistics. Typical response time: <100ms for projects with 1,000+ TNs.","operationId":"getProjectStatistics","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProjectStatisticsResponse"}}}}}}},"/v1/port-projects/projects/{projectId}/progress":{"get":{"tags":["Bulk Port"],"summary":"Get project validation progress for polling","operationId":"getProjectProgress","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProjectProgressResponse"}}}}}}},"/v1/port-projects/projects/{projectId}/progress/stream":{"get":{"tags":["Bulk Port"],"summary":"Stream batch validation progress via SSE (for large uploads)","operationId":"streamBatchProgress","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"text/event-stream":{"schema":{"$ref":"#/components/schemas/SseEmitter"}}}}}}},"/v1/port-projects/projects/{projectId}/progress-old":{"get":{"tags":["Bulk Port"],"summary":"Get validation progress for a bulk port project - OLD","operationId":"getProjectProgressOld","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}},"deprecated":true}},"/v1/port-projects/projects/{projectId}/lifecycle-summary":{"get":{"tags":["Bulk Port"],"summary":"Get port lifecycle state summary for project","operationId":"getLifecycleSummary","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortLifecycleSummaryResponse"}}}}}}},"/v1/port-projects/projects/{projectId}/error-groups":{"get":{"tags":["Bulk Port"],"summary":"Get error groups for batch resolution","operationId":"getErrorGroups","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/port-projects/projects/{projectId}/emails/{emailId}":{"get":{"tags":["Carrier Email"],"summary":"Fetch one email including body and attachment metadata","operationId":"get_2","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"emailId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CarrierEmailDto"}}}}}}},"/v1/port-projects/projects/{projectId}/emails/{emailId}/attachments/{index}":{"get":{"tags":["Carrier Email"],"summary":"Download an email attachment (302 redirect to a signed URL, 1-hour expiration)","operationId":"downloadAttachment","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"emailId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"index","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}}}},"/v1/port-projects/projects/{projectId}/emails/prefill":{"get":{"tags":["Carrier Email"],"summary":"Carrier groups + suggested subject/body for the compose modal","operationId":"prefill","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CarrierEmailPrefillResponse"}}}}}}},"/v1/port-projects/projects/{projectId}/documents":{"get":{"tags":["Port Project Documents"],"summary":"List documents for a port-in project","operationId":"list_4","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"documentType","in":"query","required":false,"schema":{"type":"string","enum":["LOA","BILL","LSR","CSR","OTHER"]}},{"name":"tn","in":"query","required":false,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PortProjectDocumentResponse"}}}}}}}},"/v1/port-projects/projects/{projectId}/documents/{documentId}/download":{"get":{"tags":["Port Project Documents"],"summary":"Download a document (authenticated proxy stream; no public URL)","operationId":"download","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"documentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"binary"}}}}}}},"/v1/port-projects/projects/{projectId}/details":{"get":{"tags":["Bulk Port"],"summary":"Get project details (TNs) with pagination and filtering","operationId":"getProjectDetails_1","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"search","in":"query","required":false,"schema":{"type":"string"}},{"name":"validationStatus","in":"query","required":false,"schema":{"type":"string","enum":["PENDING","VALIDATING","VALID","ERROR"]}},{"name":"lifecycleStates","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","enum":["DRAFT","VALIDATING","VALIDATION_ERROR","READY_FOR_SUBMISSION","LSR_PENDING","LSR_SUBMITTED","CSR_PENDING","CSR_APPROVED","CSR_MISMATCH","SUPPLEMENT_REQUESTED","PENDING_FOC","FOC_RECEIVED","PORT_CONFLICT","PORT_EXCEPTION","AWAITING_DUE_DATE","READY_FOR_ACTIVATION","ACTIVATING","ACTIVATED","INTRASP_PENDING","INTRASP_TIMEOUT","INTRASP_COMPLETED","PORT_OUT_REQUESTED","PORT_OUT_CSR_ISSUED","PORT_OUT_PENDING","PORTED_OUT","CANCELLED","FAILED","LRN_CREATED","DISCONNECTED"]}}},{"name":"pageable","in":"query","required":true,"schema":{"$ref":"#/components/schemas/Pageable"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagePortProjectDetailResponse"}}}}}}},"/v1/port-projects/projects/{projectId}/batch-operations":{"get":{"tags":["Bulk Port"],"summary":"Get batch operation history","operationId":"getBatchOperations","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"object","additionalProperties":{"type":"object"}}}}}}}}},"/v1/port-projects/jobs/stats":{"get":{"tags":["Bulk Port Jobs"],"summary":"Get overall job statistics","operationId":"getJobStats","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/JobStatsResponse"}}}}}}},"/v1/port-projects/jobs/state/{state}":{"get":{"tags":["Bulk Port Jobs"],"summary":"Get jobs in a specific state","operationId":"getJobsByState","parameters":[{"name":"state","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/JobResponse"}}}}}}}},"/v1/port-projects/jobs/project/{projectId}/status":{"get":{"tags":["Bulk Port Jobs"],"summary":"Get job status for a specific project","operationId":"getProjectJobStatus","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProjectJobStatusResponse"}}}}}}},"/v1/port-projects/jobs/failed":{"get":{"tags":["Bulk Port Jobs"],"summary":"Get list of failed jobs","operationId":"getFailedJobs","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FailedJobResponse"}}}}}}}},"/v1/port-out-releases/projects/{projectId}":{"get":{"tags":["Port-Out Release"],"summary":"Get a port-out release project","description":"Returns details of a specific port-out release project","operationId":"getProject_2","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PortProjectResponse"}}}}}}},"/v1/port-out-releases/projects/{projectId}/details":{"get":{"tags":["Port-Out Release"],"summary":"Get TNs in a port-out release project","description":"Returns all TNs with their details for a port-out release project","operationId":"getProjectDetails_2","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"pageable","in":"query","required":true,"schema":{"$ref":"#/components/schemas/Pageable"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagePortProjectDetailResponse"}}}}}}},"/v1/messaging/webhooks/subscriptions":{"get":{"tags":["TCR Webhooks"],"summary":"List webhook subscriptions","description":"Returns current TCR webhook subscriptions with registered URLs","operationId":"listSubscriptions","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/webhooks/event-types":{"get":{"tags":["TCR Webhooks"],"summary":"List webhook event types","description":"Returns all available TCR webhook event types","operationId":"listEventTypes","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/overview":{"get":{"tags":["Messaging Campaigns"],"summary":"Messaging overview","description":"Get summary statistics for messaging/10DLC","operationId":"getOverview","parameters":[{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/numbers/nnid/pushes/{reference}":{"get":{"tags":["Messaging Number NNID"],"summary":"Get NNID push status","description":"Counters for a queued NNID push (NP-... reference)","operationId":"getPush","parameters":[{"name":"reference","in":"path","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/nnid-requests":{"get":{"tags":["Messaging NNID Overwrite Requests"],"summary":"List nnSR overwrite requests","description":"Customer-scoped to the caller's accessible customers. A NULL customerId row (TN not, or no longer, in our inventory) is visible only to superAdmin (wildcard) callers.","operationId":"list_5","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"PENDING"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageNnidOverwriteRequestResponse"}}}}}}},"/v1/messaging/nnid-hold/policies":{"get":{"tags":["Messaging NNID Hold"],"summary":"List NNID hold policies","description":"List all per-SPID NNID hold policies for the customer","operationId":"listPolicies","parameters":[{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/nnid-hold/findings":{"get":{"tags":["Messaging NNID Hold"],"summary":"List NNID overwrite findings","description":"List backfill/enrichment overwrite findings for the customer, filtered by status","operationId":"listFindings","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"OPEN"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/enums/verticals":{"get":{"tags":["Messaging Enums"],"summary":"List verticals","description":"Get available TCR brand verticals","operationId":"getVerticals","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/enums/use-cases":{"get":{"tags":["Messaging Enums"],"summary":"List use cases","description":"Get available TCR campaign use cases","operationId":"getUseCases","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/enums/mnos":{"get":{"tags":["Messaging Enums"],"summary":"List MNOs","description":"Get major mobile network operators","operationId":"getMnos","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/enums/entity-types":{"get":{"tags":["Messaging Enums"],"summary":"List entity types","description":"Get available TCR brand entity types","operationId":"getEntityTypes","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/enums/cnps":{"get":{"tags":["Messaging Enums"],"summary":"List CNPs","description":"Get available Connectivity Partners from TCR","operationId":"listCnps","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns/{campaignId}/sharing":{"get":{"tags":["Messaging Campaigns"],"summary":"Get sharing status","description":"Get campaign sharing/CNP status from TCR","operationId":"getCampaignSharing","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns/{campaignId}/numbers/status":{"get":{"tags":["Messaging Campaigns"],"summary":"List assigned numbers with CNP provisioning status","description":"Returns each active assigned TN enriched with per-TN messaging/CNP provisioning status (smsStatus, cnpProvisioningStatus, cnpCarrierCode, cnpProvisioningError) from number_inventory.","operationId":"listAssignedNumberStatuses","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns/{campaignId}/mno-status":{"get":{"tags":["Messaging Campaigns"],"summary":"Get MNO status","operationId":"getMnoStatus","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns/{campaignId}/events":{"get":{"tags":["TCR Webhooks"],"summary":"Campaign event history","description":"Returns TCR webhook events for a campaign","operationId":"getCampaignEvents","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":50}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/campaigns/lookup/{tcrCampaignId}":{"get":{"tags":["Messaging Campaigns"],"summary":"Lookup campaign from TCR","description":"Preview a TCR campaign before linking (tries own, then partner)","operationId":"lookupCampaign","parameters":[{"name":"tcrCampaignId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands/{brandId}/events":{"get":{"tags":["TCR Webhooks"],"summary":"Brand event history","description":"Returns TCR webhook events for a brand","operationId":"getBrandEvents","parameters":[{"name":"brandId","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":50}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands/vetting/providers":{"get":{"tags":["Messaging Brands"],"summary":"List TCR external vetting providers (cached 24h)","operationId":"listVettingProviders","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands/lookup/{tcrBrandId}":{"get":{"tags":["Messaging Brands"],"summary":"Lookup brand from TCR","description":"Preview an existing TCR brand before linking","operationId":"lookupBrand","parameters":[{"name":"tcrBrandId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands/appeal-categories/vet":{"get":{"tags":["Messaging Brands"],"summary":"List TCR external-vet appeal categories (cached 24h)","operationId":"listVetAppealCategories","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/messaging/brands/appeal-categories/identity":{"get":{"tags":["Messaging Brands"],"summary":"List TCR brand-identity appeal categories (cached 24h)","operationId":"listIdentityAppealCategories","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/lnp/soa/status/{tn}":{"get":{"tags":["SOA Operations"],"summary":"Get number status","description":"Gets the current status of a telephone number","operationId":"getStatus","parameters":[{"name":"tn","in":"path","description":"10-digit telephone number","required":true,"schema":{"type":"string"},"example":2125551234}],"responses":{"404":{"description":"Number not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaStatusResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaStatusResponse"}}}},"200":{"description":"Status retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaStatusResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaStatusResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaStatusResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaStatusResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/lnp/soa/spid/{tn}":{"get":{"tags":["SOA Operations"],"summary":"Get SPID for number","description":"Gets the current SPID information for a telephone number","operationId":"getSpid","parameters":[{"name":"tn","in":"path","description":"10-digit telephone number","required":true,"schema":{"type":"string"},"example":2125551234}],"responses":{"404":{"description":"Number not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaSpidResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaSpidResponse"}}}},"200":{"description":"SPID retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaSpidResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaSpidResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaSpidResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaSpidResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/lnp/soa/query/{tn}":{"get":{"tags":["SOA Operations"],"summary":"Query port status","description":"Queries the current status and details of a telephone number","operationId":"query","parameters":[{"name":"tn","in":"path","description":"10-digit telephone number","required":true,"schema":{"type":"string"},"example":2125551234},{"name":"newspid","in":"query","description":"4-character SPID","required":false,"schema":{"type":"string"},"example":1234},{"name":"region","in":"query","description":"4-character region ID","required":false,"schema":{"type":"string"},"example":"EAST"}],"responses":{"404":{"description":"Number not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaQueryResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaQueryResponse"}}}},"403":{"description":"SPID not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaQueryResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaQueryResponse"}}}},"200":{"description":"Query successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaQueryResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaQueryResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaQueryResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaQueryResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/lnp/soa/events":{"get":{"tags":["SOA Operations"],"summary":"Get SOA events","description":"Retrieves unacknowledged SOA events","operationId":"getEvents","responses":{"200":{"description":"Events retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaEventsResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaEventsResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaEventsResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaEventsResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/lnp/soa/activation-ready/{newspid}":{"get":{"tags":["SOA Operations"],"summary":"Get activation-ready numbers","description":"Gets all numbers ready for activation for a specific SPID","operationId":"getActivationReady","parameters":[{"name":"newspid","in":"path","description":"4-character new SPID","required":true,"schema":{"type":"string"},"example":1234}],"responses":{"403":{"description":"SPID not authorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaActReadyResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaActReadyResponse"}}}},"200":{"description":"Numbers retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaActReadyResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaActReadyResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaActReadyResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaActReadyResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/journal":{"get":{"tags":["Activity Journal"],"summary":"List journal entries (newest first) with filters","operationId":"list_6","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":50}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"types","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"actor","in":"query","required":false,"schema":{"type":"string"}},{"name":"tn","in":"query","required":false,"schema":{"type":"string"}},{"name":"correlationId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/journal/export":{"get":{"tags":["Activity Journal"],"summary":"Export journal entries as CSV (same filters as list, capped at 100k rows)","operationId":"export","parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"types","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"actor","in":"query","required":false,"schema":{"type":"string"}},{"name":"tn","in":"query","required":false,"schema":{"type":"string"}},{"name":"correlationId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/v1/journal/events":{"get":{"tags":["Activity Journal"],"summary":"Pollable journal event feed (monotonic cursor)","description":"Machine-consumable feed over the activity journal (#365-2). Returns events with seq strictly greater than `since`, ascending, capped at `limit` (max 1000). Events younger than ~3s are withheld (commit-visibility grace) — poll again. `nextCursor` is the seq to pass as `since` on the next poll; idempotent by construction. While a long-running batch transaction (e.g. an inventory audit) is in flight, the cutoff is additionally held back to its start (#367) so its rows lag the feed instead of committing behind an already-served cursor; the holdback is capped (~30 min default), so consumers needing absolute completeness should still run a periodic reconciliation. A negative `since` is clamped to 0 and `nextCursor` echoes the clamped value.","operationId":"events","parameters":[{"name":"since","in":"query","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":200}},{"name":"category","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"types","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/summary":{"get":{"tags":["Number Inventory"],"summary":"Get inventory summary","description":"Get summary statistics for a SPID","operationId":"getInventorySummary_1","parameters":[{"name":"spid","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/reports/nruf":{"get":{"tags":["Inventory Reports"],"summary":"Generate NRUF report","description":"Generate FCC Form 502 (NRUF) XLSX for a SPID","operationId":"generateNrufReport","parameters":[{"name":"spid","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/numbers/{telephoneNumber}":{"get":{"tags":["Number Inventory"],"summary":"Get number details","description":"Retrieve details for a specific telephone number","operationId":"getNumber","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"type":"string"}},{"name":"spid","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/numbers/{telephoneNumber}/activity":{"get":{"tags":["Number Inventory"],"summary":"Get number activity timeline","description":"Per-TN lifecycle activity ledger: assign/release/quarantine/disconnect/snapback/port events with actor identity","operationId":"getNumberActivity","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":50}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/map/states":{"get":{"tags":["Inventory Map"],"summary":"Get available states","description":"Returns list of states with inventory, filtered to customer's allowed SPIDs","operationId":"getAvailableStates","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/map/rate-centers":{"get":{"tags":["Inventory Map"],"summary":"Get available rate centers","description":"Returns list of rate centers with inventory, optionally filtered by state and LATA","operationId":"getAvailableRateCenters","parameters":[{"name":"state","in":"query","required":false,"schema":{"type":"string"}},{"name":"lata","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/map/latas":{"get":{"tags":["Inventory Map"],"summary":"Get available LATAs","description":"Returns list of LATAs with inventory, optionally filtered by state","operationId":"getAvailableLatas","parameters":[{"name":"state","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/bulk":{"get":{"tags":["Bulk Operations"],"summary":"List bulk operations","description":"Customer-scoped, newest first. Optional exact-match `reference` (e.g. \"BO-2026-000123\") resolves a single order for direct lookup (e.g. ⌘K search) instead of paging the full list.","operationId":"list_7","parameters":[{"name":"reference","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":25}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageBulkOperationResponse"}}}}}}},"/v1/inventory/bulk/{id}":{"get":{"tags":["Bulk Operations"],"summary":"Get a bulk operation","description":"Order detail with live counts.","operationId":"get_3","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BulkOperationResponse"}}}}}}},"/v1/inventory/bulk/{id}/items":{"get":{"tags":["Bulk Operations"],"summary":"Page a bulk operation's per-TN results","operationId":"items","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":50}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageBulkOperationItemResponse"}}}}}}},"/v1/inventory/audit/{auditJobId}":{"get":{"tags":["Number Inventory Audit"],"summary":"Get audit status","description":"Retrieves the current status and progress of an audit job","operationId":"getAuditStatus","parameters":[{"name":"auditJobId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"delete":{"tags":["Number Inventory Audit"],"summary":"Cancel audit","description":"Cancels a running audit job","operationId":"cancelAudit","parameters":[{"name":"auditJobId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/audit/{auditJobId}/diff":{"get":{"tags":["Number Inventory Audit"],"summary":"Get diff summary","description":"Returns change summary between staging and live data","operationId":"getDiffSummary","parameters":[{"name":"auditJobId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/audit/{auditJobId}/diff/download":{"get":{"tags":["Number Inventory Audit"],"summary":"Download diff report","description":"Downloads a detailed Excel change report","operationId":"downloadDiffReport","parameters":[{"name":"auditJobId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/inventory/audit/history":{"get":{"tags":["Number Inventory Audit"],"summary":"Get audit history","description":"Retrieves recent audit history for a SPID","operationId":"getAuditHistory","parameters":[{"name":"spid","in":"query","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/cnam/query/{telephoneNumber}":{"get":{"tags":["trans-union-cnam-controller"],"operationId":"queryCnam","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"pattern":"[2-9][0-9]{2}[2-9][0-9]{6}","type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/tollfree/reserve/{tfn}":{"delete":{"tags":["Toll-Free"],"summary":"Release reservation","description":"Release a reserved toll-free number back to spare","operationId":"releaseReservation","parameters":[{"name":"tfn","in":"path","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"respOrgId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/port-projects/projects/{projectId}/documents/{documentId}":{"delete":{"tags":["Port Project Documents"],"summary":"Delete a document","operationId":"delete_1","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"documentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/v1/port-projects/jobs/{jobId}":{"delete":{"tags":["Bulk Port Jobs"],"summary":"Cancel/delete a specific job","operationId":"cancelJob","parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/v1/messaging/brands/{brandId}/appeal-evidence/{attachmentId}":{"delete":{"tags":["Messaging Brands"],"summary":"Delete a previously-uploaded evidence file","operationId":"deleteEvidence","parameters":[{"name":"brandId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"attachmentId","in":"path","required":true,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/cnam/{telephoneNumber}":{"delete":{"tags":["trans-union-cnam-controller"],"operationId":"deactivateCnam","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"pattern":"[2-9][0-9]{2}[2-9][0-9]{6}","type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}}},"components":{"schemas":{"TemplateUpdateRequest":{"required":["effDtTm","recVersionId","tmplName"],"type":"object","properties":{"tmplName":{"pattern":"^[*][a-zA-Z0-9]{2}[a-zA-Z0-9\\-]{1,12}$","type":"string"},"effDtTm":{"type":"string"},"tmplDesc":{"type":"string"},"cmd":{"type":"string"},"timezone":{"type":"string"},"dayLightSavings":{"type":"string"},"priInterLT":{"type":"string"},"priIntraLT":{"type":"string"},"interLATACarrier":{"type":"array","items":{"type":"string"}},"intraLATACarrier":{"type":"array","items":{"type":"string"}},"numTermLine":{"type":"integer","format":"int32"},"conName":{"type":"string"},"conTel":{"type":"string"},"notes":{"type":"string"},"aos":{"type":"object"},"cprSectName":{"type":"array","items":{"type":"object"}},"lbl":{"type":"array","items":{"type":"object"}},"recVersionId":{"type":"string"},"tmplRecCompPart":{"type":"string"}}},"RocProcessRequest":{"required":["actions","respOrgId"],"type":"object","properties":{"respOrgId":{"type":"string"},"actions":{"type":"array","items":{"$ref":"#/components/schemas/TfnActionDto"}}}},"TfnActionDto":{"required":["actionCode","tfn"],"type":"object","properties":{"tfn":{"type":"string"},"actionCode":{"type":"string"},"rejectNote":{"type":"string"}}},"UpdateRuleRequest":{"required":["action"],"type":"object","properties":{"action":{"type":"string","enum":["BLOCK","ALLOW","REQUIRE_APPROVAL","REQUIRE_PIN","HOLD_PERIOD"]},"holdPeriodHours":{"maximum":168,"minimum":1,"type":"integer","format":"int32"},"reason":{"maxLength":4000,"minLength":0,"type":"string"},"expiresAt":{"type":"string","format":"date-time"}}},"PortProtectionRuleResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customerId":{"type":"string","format":"uuid"},"scope":{"type":"string","enum":["CUSTOMER","SPID","TN"]},"target":{"type":"string"},"action":{"type":"string","enum":["BLOCK","ALLOW","REQUIRE_APPROVAL","REQUIRE_PIN","HOLD_PERIOD"]},"holdPeriodHours":{"type":"integer","format":"int32"},"reason":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"},"createdByUserId":{"type":"string","format":"uuid"},"createdBy":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"systemManaged":{"type":"boolean"}}},"ApplicationAssignmentIntentRequest":{"required":["applicationId"],"type":"object","properties":{"applicationId":{"maxLength":255,"minLength":0,"type":"string"},"metadata":{"type":"object","additionalProperties":{"type":"object"}},"orderReference":{"maxLength":100,"minLength":0,"type":"string"}}},"PortProjectUpdateRequest":{"type":"object","properties":{"name":{"type":"string"},"status":{"type":"string"},"gaining_lrn":{"pattern":"^[0-9]{10}$","type":"string"},"notes":{"type":"object","additionalProperties":{"type":"object"}},"validation_errors":{"type":"object","additionalProperties":{"type":"object"}},"pin":{"type":"string"},"accountNumber":{"type":"string"},"btn":{"pattern":"^[0-9]{10}$","type":"string"},"endUserName":{"type":"string"},"businessName":{"type":"string"},"serviceAddress":{"type":"string"},"streetNumber":{"type":"string"},"streetName":{"type":"string"},"streetType":{"type":"string"},"unit":{"type":"string"},"city":{"type":"string"},"serviceAddressState":{"type":"string"},"postalCode":{"type":"string"},"billing_name":{"type":"string"},"billing_street":{"type":"string"},"billing_floor":{"type":"string"},"billing_room_mail_stop":{"type":"string"},"billing_city":{"type":"string"},"billing_state":{"type":"string"},"billing_zip":{"type":"string"},"billing_account_number":{"type":"string"},"port_out_pin":{"type":"string"},"lsr_workflow_enabled":{"type":"boolean"},"lsr_gate_mode":{"type":"string"},"assignment":{"$ref":"#/components/schemas/ApplicationAssignmentIntentRequest"}}},"ApplicationAssignmentIntentResponse":{"type":"object","properties":{"applicationId":{"type":"string"},"metadata":{"type":"object","additionalProperties":{"type":"object"}},"orderReference":{"type":"string"},"frozen":{"type":"boolean"}}},"PortProjectResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"customer_id":{"type":"string","format":"uuid"},"customer_name":{"type":"string"},"spid":{"type":"string"},"status":{"type":"string"},"total_tns":{"type":"integer","format":"int32"},"valid_tns":{"type":"integer","format":"int32"},"error_tns":{"type":"integer","format":"int32"},"validated_tns":{"type":"integer","format":"int32"},"submitted_tns":{"type":"integer","format":"int32"},"activated_tns":{"type":"integer","format":"int32"},"cancelled_tns":{"type":"integer","format":"int32"},"completed_tns":{"type":"integer","format":"int32"},"progressPercentage":{"type":"integer","format":"int32"},"currentStage":{"type":"string"},"stageMessage":{"type":"string"},"created_by":{"type":"string"},"created_by_name":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"derived_status":{"type":"string"},"derived_status_display":{"type":"string"},"derived_status_description":{"type":"string"},"can_submit":{"type":"boolean"},"can_activate":{"type":"boolean"},"can_cancel":{"type":"boolean"},"can_update_due_date":{"type":"boolean"},"submit_blocker_reason":{"type":"string"},"activate_blocker_reason":{"type":"string"},"is_pushed_release":{"type":"boolean"},"auto_activation_mode":{"type":"string"},"scheduled_activation_at":{"type":"string","format":"date-time"},"last_auto_activation_attempt":{"type":"string","format":"date-time"},"auto_activation_failure_count":{"type":"integer","format":"int32"},"lsr_workflow_enabled":{"type":"boolean"},"lsr_gate_mode":{"type":"string"},"desired_due_date":{"type":"string","format":"date"},"foc_date":{"type":"string","format":"date"},"billing_name":{"type":"string"},"billing_street":{"type":"string"},"billing_floor":{"type":"string"},"billing_room_mail_stop":{"type":"string"},"billing_city":{"type":"string"},"billing_state":{"type":"string"},"billing_zip":{"type":"string"},"billing_account_number":{"type":"string"},"port_out_pin_set":{"type":"boolean"},"assignment":{"$ref":"#/components/schemas/ApplicationAssignmentIntentResponse"}}},"CarrierReleaseRecoveryProjection":{"type":"object","properties":{"state":{"type":"string","enum":["NONE","QUEUED","SUBMITTING","AWAITING_CARRIER","AWAITING_NPAC_RELEASE","READY_TO_RESUBMIT","FAILED","OUTCOME_UNKNOWN","VERIFICATION_REQUIRED"]},"requested_due_date":{"type":"string","format":"date"},"carrier_display_name":{"type":"string"},"carrier_order_id":{"type":"string"},"carrier_foc_date":{"type":"string","format":"date"},"npac_release_due_date":{"type":"string","format":"date"},"can_request":{"type":"boolean"},"can_resubmit":{"type":"boolean"},"blocker_code":{"type":"string"},"message":{"type":"string"}}},"LifecycleStatusDisplay":{"type":"object","properties":{"display_text":{"type":"string"},"color":{"type":"string"},"icon":{"type":"string"},"description":{"type":"string"},"next_action":{"type":"string"},"metadata":{"type":"object","additionalProperties":{"type":"object"}}}},"PortProjectDetailResponse":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid"},"tn":{"type":"string"},"lata":{"type":"string"},"current_lata_source":{"type":"string"},"gaining_lata_source":{"type":"string"},"state":{"type":"string"},"locality":{"type":"string"},"npac_region":{"type":"string"},"current_ocn":{"type":"string"},"current_lrn":{"type":"string"},"current_spid":{"type":"string"},"current_tandem":{"type":"string"},"current_tandem_name":{"type":"string"},"gaining_ocn":{"type":"string"},"gaining_lrn":{"type":"string"},"gaining_spid":{"type":"string"},"gaining_tandem":{"type":"string"},"gaining_tandem_name":{"type":"string"},"user_provided_lrn":{"type":"string"},"btn":{"type":"string"},"soa_status":{"type":"string"},"lsr_status":{"type":"string","enum":["NONE","SENDING","SENT","EBOND","FAILED","SKIPPED","UNRECOGNIZED"]},"csr_status":{"type":"string","enum":["NONE","SENT","EBOND","MANUAL_APPROVAL"]},"lsr_submitted_at":{"type":"string","format":"date-time"},"foc_date":{"type":"string","format":"date"},"lifecycle_state":{"type":"string"},"lifecycle_state_display":{"type":"string"},"lifecycle_status_display":{"$ref":"#/components/schemas/LifecycleStatusDisplay"},"can_activate":{"type":"boolean"},"can_activate_early":{"type":"boolean"},"can_update_due_date":{"type":"boolean"},"activation_blocker":{"type":"string"},"reconciliation_source":{"type":"string"},"reconciliation_validation_status":{"type":"string"},"failure_reason":{"type":"string"},"validation_status":{"type":"string","enum":["PENDING","VALIDATING","VALID","ERROR"]},"validation_errors":{"type":"object","additionalProperties":{"type":"object"}},"notes":{"type":"object","additionalProperties":{"type":"object"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"is_pushed_release":{"type":"boolean"},"pushed_ddd":{"type":"string","format":"date"},"pushed_release_event_id":{"type":"string","format":"uuid"},"carrier_release_recovery":{"$ref":"#/components/schemas/CarrierReleaseRecoveryProjection"}}},"AutoActivationSettingsRequest":{"required":["auto_activation_mode"],"type":"object","properties":{"auto_activation_mode":{"pattern":"^(DISABLED|ASAP|SCHEDULED)$","type":"string","description":"Auto-activation mode: DISABLED (manual), ASAP (immediate after DDD), SCHEDULED (specific datetime)","example":"ASAP","enum":["DISABLED","ASAP","SCHEDULED"]},"scheduled_activation_at":{"type":"string","description":"ISO 8601 datetime for scheduled activation (UTC). Required when mode is SCHEDULED. Must be >= DDD.","example":"2025-12-15T06:00:00.000Z"},"reset_failure_count":{"type":"boolean","description":"Set to true to reset the auto-activation failure counter back to 0","example":false}},"description":"Request to update auto-activation settings for a port project"},"ApiCustomer":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customerName":{"type":"string"},"email":{"type":"string"},"company":{"type":"string"},"isActive":{"type":"boolean"},"rateLimit":{"type":"integer","format":"int32"},"notes":{"type":"string"},"lastApiCall":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"createdBy":{"type":"string"},"metadata":{"type":"object","additionalProperties":{"type":"object"}},"metadataDisplayConfig":{"type":"array","items":{"$ref":"#/components/schemas/MetadataDisplayColumn"}},"respOrgEntityId":{"type":"string"},"respOrgId":{"type":"string"},"tollFreeEnabled":{"type":"boolean"},"tollFreeContactName":{"type":"string"},"tollFreeContactPhone":{"type":"string"},"tollFreeContactEmail":{"type":"string"},"customerSpids":{"uniqueItems":true,"type":"array","items":{"$ref":"#/components/schemas/CustomerSpid"}},"activeSpids":{"uniqueItems":true,"type":"array","items":{"type":"string"}}}},"CustomerSpid":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customer":{"$ref":"#/components/schemas/ApiCustomer"},"spid":{"type":"string"},"description":{"type":"string"},"isActive":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"createdBy":{"type":"string"},"ccna":{"type":"string"},"acna":{"type":"string"},"lsrName":{"type":"string"},"lsrStreet":{"type":"string"},"lsrCity":{"type":"string"},"lsrState":{"type":"string"},"lsrZip":{"type":"string"},"lsrContactPhone":{"type":"string"},"p2pCnpCarrierCode":{"type":"string"},"messagingAccountId":{"type":"string","format":"uuid"}}},"MetadataDisplayColumn":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"}}},"PortProject":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"customer":{"$ref":"#/components/schemas/ApiCustomer"},"spid":{"type":"string"},"lastActivityAt":{"type":"string","format":"date-time"},"isPushedRelease":{"type":"boolean"},"autoActivationMode":{"type":"string","enum":["DISABLED","ASAP","SCHEDULED"]},"scheduledActivationAt":{"type":"string","format":"date-time"},"lastAutoActivationAttempt":{"type":"string","format":"date-time"},"autoActivationFailureCount":{"type":"integer","format":"int32"},"autoAssignLrn":{"type":"boolean"},"lsrWorkflowEnabled":{"type":"boolean"},"lsrGateMode":{"type":"string","enum":["DISABLED","SOFT_WARNING","HARD_GATE"]},"desiredDueDate":{"type":"string","format":"date"},"portDirection":{"type":"string","enum":["GAINING","LOSING"]},"gainingCarrierSpid":{"type":"string"},"syncNotifyEmail":{"type":"string"},"activeReconciliationJobId":{"type":"string"},"applicationId":{"type":"string"},"applicationMetadata":{"type":"object","additionalProperties":{"type":"object"}},"orderReference":{"type":"string"},"assignmentSetBy":{"type":"string"},"assignmentSetAt":{"type":"string","format":"date-time"},"assignmentFrozenAt":{"type":"string","format":"date-time"},"snapbackOriginatingInventoryId":{"type":"string","format":"uuid"},"snapbackOriginatingFinalizationId":{"type":"string","format":"uuid"},"snapbackRegisteredBy":{"type":"string"},"snapbackRegisteredAt":{"type":"string","format":"date-time"},"billingName":{"type":"string"},"billingStreet":{"type":"string"},"billingFloor":{"type":"string"},"billingRoomMailStop":{"type":"string"},"billingCity":{"type":"string"},"billingState":{"type":"string"},"billingZip":{"type":"string"},"billingAccountNumber":{"type":"string"},"portOutPin":{"type":"string"},"createdBy":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"PortProjectDetail":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid"},"tn":{"type":"string"},"project":{"$ref":"#/components/schemas/PortProject"},"lata":{"type":"string"},"currentLataSource":{"type":"string"},"gainingLataSource":{"type":"string"},"state":{"type":"string"},"locality":{"type":"string"},"npacRegion":{"type":"string"},"currentOcn":{"type":"string"},"currentLrn":{"type":"string"},"currentSpid":{"type":"string"},"currentSpidName":{"type":"string"},"currentTandem":{"type":"string"},"currentTandemName":{"type":"string"},"gainingOcn":{"type":"string"},"gainingLrn":{"type":"string"},"gainingSpid":{"type":"string"},"gainingTandem":{"type":"string"},"gainingTandemName":{"type":"string"},"userProvidedLrn":{"type":"string"},"soaStatus":{"type":"string"},"lsrStatus":{"type":"string","enum":["NONE","SENDING","SENT","EBOND","FAILED","SKIPPED","UNRECOGNIZED"]},"csrStatus":{"type":"string","enum":["NONE","SENT","EBOND","MANUAL_APPROVAL"]},"focDate":{"type":"string","format":"date"},"lifecycleState":{"type":"string","enum":["DRAFT","VALIDATING","VALIDATION_ERROR","READY_FOR_SUBMISSION","LSR_PENDING","LSR_SUBMITTED","CSR_PENDING","CSR_APPROVED","CSR_MISMATCH","SUPPLEMENT_REQUESTED","PENDING_FOC","FOC_RECEIVED","PORT_CONFLICT","PORT_EXCEPTION","AWAITING_DUE_DATE","READY_FOR_ACTIVATION","ACTIVATING","ACTIVATED","INTRASP_PENDING","INTRASP_TIMEOUT","INTRASP_COMPLETED","PORT_OUT_REQUESTED","PORT_OUT_CSR_ISSUED","PORT_OUT_PENDING","PORTED_OUT","CANCELLED","FAILED","LRN_CREATED","DISCONNECTED"]},"validationStatus":{"type":"string","enum":["PENDING","VALIDATING","VALID","ERROR"]},"validationErrors":{"type":"object","additionalProperties":{"type":"object"}},"notes":{"type":"object","additionalProperties":{"type":"object"}},"pushedDdd":{"type":"string","format":"date"},"isPushedRelease":{"type":"boolean"},"pushedReleaseEventId":{"type":"string","format":"uuid"},"detectedCarrierCode":{"type":"string"},"carrierOverride":{"type":"string"},"carrierDetectionSource":{"type":"string"},"endUserName":{"type":"string"},"businessName":{"type":"string"},"serviceAddress":{"type":"string"},"accountNumber":{"type":"string"},"pin":{"type":"string"},"btn":{"type":"string"},"streetNumber":{"type":"string"},"streetName":{"type":"string"},"streetType":{"type":"string"},"unit":{"type":"string"},"city":{"type":"string"},"serviceAddressState":{"type":"string"},"postalCode":{"type":"string"},"lsrSubmittedAt":{"type":"string","format":"date-time"},"lsrSubmissionMethod":{"type":"string"},"lsrConfirmationNumber":{"type":"string"},"lsrMetadata":{"type":"object","additionalProperties":{"type":"object"}},"lsrFailedAt":{"type":"string","format":"date-time"},"lsrFailureReason":{"type":"string"},"lsrFailureCode":{"type":"string"},"lsrFailureInternalDetail":{"type":"string"},"lsrRetryCount":{"type":"integer","format":"int32"},"lsrLastRetryAt":{"type":"string","format":"date-time"},"csrReceivedAt":{"type":"string","format":"date-time"},"csrSource":{"type":"string"},"csrData":{"type":"object","additionalProperties":{"type":"object"}},"csrDocumentUrl":{"type":"string"},"csrValidationStatus":{"type":"string"},"csrMatchConfidence":{"type":"integer","format":"int32"},"csrMismatchFields":{"type":"object","additionalProperties":{"type":"object"}},"csrValidatedAt":{"type":"string","format":"date-time"},"csrValidatedBy":{"type":"string"},"supplementRequestedAt":{"type":"string","format":"date-time"},"supplementCount":{"type":"integer","format":"int32"},"csrAccountNumber":{"type":"string"},"csrBtn":{"type":"string"},"csrEndUserName":{"type":"string"},"csrServiceAddress":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"lifecycleStatusDisplay":{"$ref":"#/components/schemas/LifecycleStatusDisplay"},"carrierReleaseRecovery":{"$ref":"#/components/schemas/CarrierReleaseRecoveryProjection"}}},"CreateNnidRequest":{"required":["nnid"],"type":"object","properties":{"nnid":{"type":"string"},"description":{"type":"string"},"carrierCode":{"type":"string"},"spid":{"type":"string"},"isDefault":{"type":"boolean"}}},"NnidHoldPolicyRequest":{"required":["holdNnid"],"type":"object","properties":{"enabled":{"type":"boolean"},"holdNnid":{"type":"string"}}},"CreateCampaignRequest":{"required":["brandId","description","messageFlow","sampleMessages","useCase"],"type":"object","properties":{"brandId":{"type":"string","format":"uuid"},"useCase":{"type":"string"},"description":{"maxLength":2147483647,"minLength":40,"type":"string"},"messageFlow":{"maxLength":2147483647,"minLength":40,"type":"string"},"sampleMessages":{"maxItems":5,"minItems":1,"type":"array","items":{"type":"string"}},"subUseCases":{"type":"array","items":{"type":"string"}},"resellerId":{"type":"string"},"subscriberOptin":{"type":"boolean"},"subscriberOptout":{"type":"boolean"},"subscriberHelp":{"type":"boolean"},"optinKeywords":{"type":"string"},"optinMessage":{"type":"string"},"optoutKeywords":{"type":"string"},"optoutMessage":{"type":"string"},"helpKeywords":{"type":"string"},"helpMessage":{"type":"string"},"embeddedLink":{"type":"boolean"},"embeddedPhone":{"type":"boolean"},"numberPool":{"type":"boolean"},"ageGated":{"type":"boolean"},"directLending":{"type":"boolean"},"affiliateMarketing":{"type":"boolean"},"privacyPolicyUrl":{"type":"string"},"termsUrl":{"type":"string"},"autoRenewal":{"type":"boolean"},"applicationId":{"type":"string"},"applicationMetadata":{"type":"object","additionalProperties":{"type":"object"}}}},"BindApplicationRequest":{"required":["applicationId"],"type":"object","properties":{"applicationId":{"type":"string"},"applicationMetadata":{"type":"object","additionalProperties":{"type":"object"}}}},"CreateBrandRequest":{"required":["displayName","entityType","legalName"],"type":"object","properties":{"displayName":{"type":"string"},"legalName":{"type":"string"},"companyName":{"type":"string"},"entityType":{"type":"string"},"taxId":{"type":"string"},"vertical":{"type":"string"},"website":{"type":"string"},"brandRelationship":{"type":"string"},"country":{"type":"string"},"state":{"type":"string"},"city":{"type":"string"},"street":{"type":"string"},"postalCode":{"type":"string"},"primaryContactName":{"type":"string"},"primaryContactEmail":{"type":"string"},"primaryContactPhone":{"type":"string"},"stockExchange":{"type":"string"},"stockSymbol":{"type":"string"},"altBusinessId":{"type":"string"},"altBusinessIdType":{"type":"string"},"applicationId":{"type":"string"},"applicationMetadata":{"type":"object","additionalProperties":{"type":"object"}}}},"TemplateCreateRequest":{"required":["effDtTm","tmplName"],"type":"object","properties":{"tmplName":{"pattern":"^[*][a-zA-Z0-9]{2}[a-zA-Z0-9\\-]{1,12}$","type":"string"},"effDtTm":{"type":"string"},"tmplDesc":{"type":"string"},"cmd":{"type":"string"},"timezone":{"type":"string"},"dayLightSavings":{"type":"string"},"priInterLT":{"type":"string"},"priIntraLT":{"type":"string"},"interLATACarrier":{"type":"array","items":{"type":"string"}},"intraLATACarrier":{"type":"array","items":{"type":"string"}},"numTermLine":{"type":"integer","format":"int32"},"conName":{"type":"string"},"conTel":{"type":"string"},"notes":{"type":"string"},"aos":{"type":"object"},"cprSectName":{"type":"array","items":{"type":"object"}},"lbl":{"type":"array","items":{"type":"object"}}}},"TemplateDraftDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customerId":{"type":"string","format":"uuid"},"tmplName":{"type":"string"},"effDtTm":{"type":"string"},"status":{"type":"string"},"cprData":{"type":"object"},"createdBy":{"type":"string"},"updatedBy":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"somosRecVersionId":{"type":"string"}}},"TemplateCopyRequest":{"required":["srcEffDtTm","srcTmplName","tgtEffDtTm","tgtTmplName"],"type":"object","properties":{"srcTmplName":{"type":"string"},"srcEffDtTm":{"type":"string"},"tgtTmplName":{"pattern":"^[*][a-zA-Z0-9]{2}[a-zA-Z0-9\\-]{1,12}$","type":"string"},"tgtEffDtTm":{"type":"string"}}},"RejectRequest":{"type":"object","properties":{"reason":{"type":"string"}}},"StartSyncRequest":{"type":"object","properties":{"customerId":{"type":"string","format":"uuid"},"autoCommit":{"type":"boolean"}}},"SpareSearchRequest":{"required":["pattern"],"type":"object","properties":{"pattern":{"type":"string"},"quantity":{"type":"integer","format":"int32"}}},"ReserveRequest":{"required":["numbers"],"type":"object","properties":{"numbers":{"type":"array","items":{"type":"string"}}}},"TollFreePtrOperationDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customerId":{"type":"string","format":"uuid"},"telephoneNumber":{"type":"string"},"operationType":{"type":"string"},"actingRespOrgId":{"type":"string"},"srcTemplateName":{"type":"string"},"srcTemplateCrn":{"type":"string"},"srcEffDtTm":{"type":"string"},"srcRecVersionId":{"type":"string"},"targetTemplateName":{"type":"string"},"targetTemplateCrn":{"type":"string"},"targetEffDtTm":{"type":"string"},"targetRespOrgId":{"type":"string"},"svcOrderNum":{"type":"string"},"status":{"type":"string","enum":["PENDING_PRECHECK","PENDING_SUBMIT","SUBMITTED","APPLIED","FAILED","TIMEOUT","CANCELLED"]},"errorCode":{"type":"string","enum":["PRECHECK_TEMPLATE_NOT_FOUND","PRECHECK_TEMPLATE_INACTIVE","PRECHECK_TEMPLATE_LOCKED","PRECHECK_CROSS_RESPORG","OPERATION_ALREADY_PENDING","SUBMIT_REJECTED","APPLY_REJECTED","APPLY_TIMEOUT","SOMOS_UNREACHABLE","UNKNOWN_ERROR"]},"errorMessage":{"type":"string"},"pollAttempts":{"type":"integer","format":"int32"},"nextPollAt":{"type":"string","format":"date-time"},"timeoutAt":{"type":"string","format":"date-time"},"submittedAt":{"type":"string","format":"date-time"},"appliedAt":{"type":"string","format":"date-time"},"failedAt":{"type":"string","format":"date-time"},"timedOutAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"createdBy":{"type":"string"},"parentOperationId":{"type":"string","format":"uuid"}}},"ActivateRequest":{"required":["effDtTm","numbers","svcOrderNum","tmplName"],"type":"object","properties":{"numbers":{"type":"array","items":{"type":"string"}},"tmplName":{"type":"string"},"effDtTm":{"type":"string"},"svcOrderNum":{"type":"string"}}},"ActivateBatchResponse":{"type":"object","properties":{"results":{"type":"array","description":"Per-number activation outcomes","items":{"$ref":"#/components/schemas/ActivationResultDto"}},"successCount":{"type":"integer","description":"Numbers whose pointer-record submit was accepted by Somos","format":"int64"},"failureCount":{"type":"integer","description":"Numbers that failed validation or were rejected by Somos","format":"int64"}},"description":"Batch activation result. HTTP 200 = at least one number succeeded; HTTP 422 = every number failed. Always check per-item 'success'."},"ActivationResultDto":{"type":"object","properties":{"num":{"type":"string","description":"10-digit toll-free number"},"success":{"type":"boolean","description":"Whether the pointer-record submit was accepted — MUST be checked per item"},"tmplName":{"type":"string","description":"CPR template applied"},"effDtTm":{"type":"string","description":"Normalized effective date/time actually sent to Somos (quarter-hour aligned)"},"errorMessage":{"type":"string","description":"Failure detail incl. Somos error codes (e.g. '599049: Service Order: ...')"},"operationId":{"type":"string","description":"tollfree_ptr_operations row id for this attempt","format":"uuid"},"inventoryId":{"type":"string","description":"number_inventory row id written through on success","format":"uuid"}},"description":"Per-number activation outcomes"},"JobRunAckResponse":{"type":"object","properties":{"runId":{"type":"string","format":"uuid"},"ackedBy":{"type":"string"},"ackedAt":{"type":"string","format":"date-time"},"alreadyAcked":{"type":"boolean"}}},"RocSyncRequest":{"required":["customerId","direction","endDate","respOrgId","startDate"],"type":"object","properties":{"customerId":{"type":"string","format":"uuid"},"respOrgId":{"type":"string"},"direction":{"type":"string"},"startDate":{"type":"string"},"endDate":{"type":"string"}}},"RocCreateRequest":{"required":["entityId","newRespOrgId","requestType","tfns"],"type":"object","properties":{"entityId":{"type":"string"},"newRespOrgId":{"pattern":"^[a-zA-Z0-9]{5}$","type":"string"},"requestType":{"type":"string"},"tfns":{"type":"array","items":{"pattern":"^[0-9]{10}$","type":"string"}},"effectiveDate":{"type":"string","format":"date"},"notes":{"maxLength":1000,"minLength":0,"type":"string"}}},"RocSubmitRequest":{"required":["respOrgId"],"type":"object","properties":{"respOrgId":{"type":"string"},"contactInformation":{"type":"string"}}},"RocLoaGenerateRequest":{"required":["address1","city","contactName","contactPhone","contactTitle","custName","respOrgId","state","zipCode"],"type":"object","properties":{"respOrgId":{"type":"string"},"custName":{"type":"string"},"address1":{"type":"string"},"address2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"zipCode":{"type":"string"},"contactName":{"type":"string"},"contactTitle":{"type":"string"},"contactPhone":{"type":"string"},"email":{"type":"string"}}},"CreateReportJobRequest":{"required":["reportType"],"type":"object","properties":{"reportType":{"type":"string","enum":["SOA_QUEUE_SNAPSHOT","PORT_OUTS","PORT_INS","INVENTORY_XLSX","INVENTORY_MAP_XLSX","NNID_SMS_IMPACT"]},"params":{"type":"object","additionalProperties":{"type":"object"}}}},"SpidResolveRequest":{"required":["spids"],"type":"object","properties":{"spids":{"maxItems":500,"minItems":0,"type":"array","items":{"type":"string"}}}},"NpacSpidDatasetFreshnessDto":{"type":"object","properties":{"sourceName":{"type":"string"},"sourceAsOf":{"type":"string","format":"date-time"},"retrievedAt":{"type":"string","format":"date-time"},"freshness":{"type":"string"}}},"SpidResolutionDto":{"type":"object","properties":{"spid":{"type":"string"},"found":{"type":"boolean"},"regionalCustomerNames":{"type":"array","items":{"type":"string"}},"customerTypes":{"type":"array","items":{"type":"string"}},"regions":{"type":"array","items":{"type":"string"}},"contactCount":{"type":"integer","format":"int32"},"retired":{"type":"boolean"}}},"SpidResolveResponse":{"type":"object","properties":{"results":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SpidResolutionDto"}},"dataset":{"$ref":"#/components/schemas/NpacSpidDatasetFreshnessDto"}}},"RespOrgResolveRequest":{"required":["respOrgIds"],"type":"object","properties":{"respOrgIds":{"maxItems":500,"minItems":0,"type":"array","items":{"type":"string"}}}},"RespOrgDatasetFreshnessDto":{"type":"object","properties":{"sourceName":{"type":"string"},"sourceAsOf":{"type":"string","format":"date-time"},"retrievedAt":{"type":"string","format":"date-time"},"freshness":{"type":"string"}}},"RespOrgResolutionDto":{"type":"object","properties":{"respOrgId":{"type":"string"},"found":{"type":"boolean"},"entityId":{"type":"string"},"companyName":{"type":"string"},"retired":{"type":"boolean"}}},"RespOrgResolveResponse":{"type":"object","properties":{"results":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/RespOrgResolutionDto"}},"dataset":{"$ref":"#/components/schemas/RespOrgDatasetFreshnessDto"}}},"NnidResolveRequest":{"required":["nnids"],"type":"object","properties":{"nnids":{"maxItems":500,"minItems":0,"type":"array","items":{"type":"string"}}}},"NnidDatasetFreshnessDto":{"type":"object","properties":{"sourceName":{"type":"string"},"sourceAsOf":{"type":"string","format":"date-time"},"retrievedAt":{"type":"string","format":"date-time"},"freshness":{"type":"string"}}},"NnidResolutionDto":{"type":"object","properties":{"nnid":{"type":"string"},"found":{"type":"boolean"},"companyName":{"type":"string"},"brandName":{"type":"string"},"serviceType":{"type":"string"},"countryIso2":{"type":"string"},"retired":{"type":"boolean"}}},"NnidResolveResponse":{"type":"object","properties":{"results":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/NnidResolutionDto"}},"dataset":{"$ref":"#/components/schemas/NnidDatasetFreshnessDto"}}},"CicResolveRequest":{"required":["cics"],"type":"object","properties":{"cics":{"maxItems":500,"minItems":0,"type":"array","items":{"type":"string"}}}},"CicDatasetFreshnessDto":{"type":"object","properties":{"sourceName":{"type":"string"},"sourceAsOf":{"type":"string","format":"date-time"},"retrievedAt":{"type":"string","format":"date-time"},"freshness":{"type":"string"}}},"CicResolutionDto":{"type":"object","properties":{"cic":{"type":"string"},"found":{"type":"boolean"},"assigneeName":{"type":"string"},"recordStatus":{"type":"string"},"retired":{"type":"boolean"}}},"CicResolveResponse":{"type":"object","properties":{"results":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/CicResolutionDto"}},"dataset":{"$ref":"#/components/schemas/CicDatasetFreshnessDto"}}},"CreateRuleRequest":{"required":["action","scope"],"type":"object","properties":{"scope":{"type":"string","enum":["CUSTOMER","SPID","TN"]},"target":{"maxLength":32,"minLength":0,"type":"string"},"action":{"type":"string","enum":["BLOCK","ALLOW","REQUIRE_APPROVAL","REQUIRE_PIN","HOLD_PERIOD"]},"holdPeriodHours":{"maximum":168,"minimum":1,"type":"integer","format":"int32"},"pin":{"maxLength":255,"minLength":0,"type":"string"},"reason":{"maxLength":4000,"minLength":0,"type":"string"},"expiresAt":{"type":"string","format":"date-time"}}},"PortProjectCreateRequest":{"required":["customer_id","name","spid"],"type":"object","properties":{"customer_id":{"type":"string","format":"uuid"},"spid":{"pattern":"^[0-9A-Z]{4}$","type":"string"},"name":{"maxLength":255,"minLength":1,"type":"string"},"desired_due_date":{"type":"string","format":"date"},"auto_activation_mode":{"pattern":"^(DISABLED|ASAP|SCHEDULED)$","type":"string"},"scheduled_activation_at":{"type":"string"},"billing_name":{"type":"string"},"billing_street":{"type":"string"},"billing_floor":{"type":"string"},"billing_room_mail_stop":{"type":"string"},"billing_city":{"type":"string"},"billing_state":{"type":"string"},"billing_zip":{"type":"string"},"billing_account_number":{"type":"string"},"port_out_pin":{"type":"string"},"assignment":{"$ref":"#/components/schemas/ApplicationAssignmentIntentRequest"}}},"PortProjectUploadResponse":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid"},"totalTns":{"type":"integer","format":"int32"},"status":{"type":"string"},"message":{"type":"string"},"duplicatesRemoved":{"type":"integer","format":"int32"},"lrnsFiltered":{"type":"integer","format":"int32"}}},"AddTnsRequest":{"required":["tns"],"type":"object","properties":{"tns":{"type":"array","items":{"$ref":"#/components/schemas/TnEntry"}},"auto_assign_lrn":{"type":"boolean"}}},"TnEntry":{"required":["tn"],"type":"object","properties":{"tn":{"pattern":"^[0-9]{10}$","type":"string"},"lrn":{"pattern":"^[0-9]{10}$","type":"string"}}},"ResubmitFailedRequest":{"type":"object","properties":{"new_ddd":{"pattern":"^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z|\\d{4}-\\d{2}-\\d{2}|\\d{1,3})$","type":"string"}}},"Change":{"type":"object","properties":{"tn":{"type":"string"},"lifecycleState":{"type":"string"},"validationStatusBefore":{"type":"string"},"validationStatusAfter":{"type":"string"},"currentLrn":{"type":"string"},"gainingLrn":{"type":"string"},"oldLata":{"type":"string"},"newLata":{"type":"string"},"currentLataSource":{"type":"string"},"gainingLataSource":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}}}},"ProjectLrnRepairResult":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid"},"dryRun":{"type":"boolean"},"inspected":{"type":"integer","format":"int32"},"changed":{"type":"integer","format":"int32"},"validationStatusesRestored":{"type":"integer","format":"int32"},"changes":{"type":"array","items":{"$ref":"#/components/schemas/Change"}}}},"PortProjectProgressRequest":{"required":["project_id"],"type":"object","properties":{"project_id":{"type":"string","description":"The bulk port project ID","format":"uuid"},"include_events":{"type":"boolean","description":"Include recent progress events","default":false},"event_limit":{"type":"integer","description":"Maximum number of events to return","format":"int32","default":10},"include_statistics":{"type":"boolean","description":"Include detailed statistics","default":true}},"description":"Request for real-time bulk port progress tracking"},"BatchOperationStatus":{"type":"object","properties":{"operation_id":{"type":"string","format":"uuid"},"operation_type":{"type":"string"},"status":{"type":"string"},"total_items":{"type":"integer","format":"int32"},"processed_items":{"type":"integer","format":"int32"},"successful_items":{"type":"integer","format":"int32"},"failed_items":{"type":"integer","format":"int32"},"started_at":{"type":"string","format":"date-time"},"completed_at":{"type":"string","format":"date-time"}},"description":"Active batch operations"},"ErrorGroup":{"type":"object","properties":{"error_code":{"type":"string"},"error_message":{"type":"string"},"count":{"type":"integer","format":"int32"},"sample_tns":{"type":"array","description":"Sample of affected TNs (max 5)","items":{"type":"string","description":"Sample of affected TNs (max 5)"}},"auto_fix_available":{"type":"boolean"},"suggested_action":{"type":"string"}},"description":"Summary of errors grouped by type"},"PortProjectProgressResponse":{"type":"object","properties":{"project_id":{"type":"string","description":"The bulk port project ID","format":"uuid"},"project_name":{"type":"string","description":"The project name"},"current_stage":{"type":"string","description":"Current processing stage","example":"VALIDATING"},"progress_percentage":{"type":"integer","description":"Overall progress percentage (0-100)","format":"int32"},"stage_message":{"type":"string","description":"Human-readable message about current stage"},"statistics":{"$ref":"#/components/schemas/ProgressStatistics"},"estimated_completion_time":{"type":"string","description":"Estimated completion time based on current progress","format":"date-time"},"recent_events":{"type":"array","description":"Recent progress events","items":{"$ref":"#/components/schemas/ProgressEvent"}},"error_summary":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ErrorGroup"},"description":"Summary of errors grouped by type"},"batch_operations":{"type":"array","description":"Active batch operations","items":{"$ref":"#/components/schemas/BatchOperationStatus"}}},"description":"Real-time bulk port progress information"},"ProgressEvent":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"event_type":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string"},"event_data":{"type":"object","additionalProperties":{"type":"object"}},"created_at":{"type":"string","format":"date-time"},"acknowledged":{"type":"boolean"}},"description":"Recent progress events"},"ProgressStatistics":{"type":"object","properties":{"total_tns":{"type":"integer","format":"int32"},"processed_tns":{"type":"integer","format":"int32"},"valid_tns":{"type":"integer","format":"int32"},"error_tns":{"type":"integer","format":"int32"},"pending_tns":{"type":"integer","format":"int32"},"submitted_tns":{"type":"integer","format":"int32"},"activated_tns":{"type":"integer","format":"int32"},"cancelled_tns":{"type":"integer","format":"int32"},"processing_rate":{"type":"number","description":"TNs processed per minute","format":"double"},"success_rate":{"type":"number","description":"Percentage of successful validations","format":"double"}},"description":"Detailed statistics"},"SubmitManagedProcessingRequest":{"type":"object","properties":{"desiredDueDate":{"type":"string","format":"date"}}},"ActionScope":{"type":"object","properties":{"groupId":{"type":"string","format":"uuid"},"tns":{"type":"array","items":{"type":"string"}}}},"CustomerActionResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"code":{"type":"string"},"message":{"type":"string"},"scope":{"$ref":"#/components/schemas/ActionScope"},"allowedResponse":{"type":"string"},"requiredDocumentType":{"type":"string"},"openedAt":{"type":"string","format":"date-time"}}},"ManagedProcessingResponse":{"type":"object","properties":{"processId":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"state":{"type":"string"},"version":{"type":"integer","format":"int64"},"customerActions":{"type":"array","items":{"$ref":"#/components/schemas/CustomerActionResponse"}},"errorCode":{"type":"string"},"message":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"SatisfyActionRequest":{"required":["responseType"],"type":"object","properties":{"responseType":{"type":"string"},"documentId":{"type":"string","format":"uuid"},"fields":{"type":"object","additionalProperties":{"type":"string"}},"desiredDueDate":{"type":"string","format":"date"},"acknowledged":{"type":"boolean"}}},"CarrierEmailSendRequest":{"type":"object","properties":{"losingSpid":{"type":"string"},"to":{"type":"array","items":{"type":"string"}},"cc":{"type":"array","items":{"type":"string"}},"subject":{"type":"string"},"body":{"type":"string"},"tns":{"type":"array","items":{"type":"string"}},"generateLsrForm":{"type":"boolean"},"saveContact":{"type":"boolean"}}},"AttachmentDto":{"type":"object","properties":{"filename":{"type":"string"},"size":{"type":"integer","format":"int64"},"mimeType":{"type":"string"}}},"CarrierEmailDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"direction":{"type":"string"},"purpose":{"type":"string"},"messageId":{"type":"string"},"fromIdentity":{"type":"string"},"replyTo":{"type":"string"},"toRecipients":{"type":"array","items":{"type":"string"}},"ccRecipients":{"type":"array","items":{"type":"string"}},"subject":{"type":"string"},"body":{"type":"string"},"attachments":{"type":"array","items":{"$ref":"#/components/schemas/AttachmentDto"}},"tns":{"type":"array","items":{"type":"string"}},"losingSpid":{"type":"string"},"carrierName":{"type":"string"},"status":{"type":"string"},"failureReason":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}},"LsrPreviewRequest":{"type":"object","properties":{"losingSpid":{"type":"string"},"tns":{"type":"array","items":{"type":"string"}}}},"LsrPreviewResponse":{"type":"object","properties":{"html":{"type":"string"},"warnings":{"type":"array","items":{"type":"string"}}}},"PortProjectDocumentResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"project_id":{"type":"string","format":"uuid"},"tn":{"type":"string"},"document_type":{"type":"string","enum":["LOA","BILL","LSR","CSR","OTHER"]},"file_name":{"type":"string"},"content_type":{"type":"string"},"file_size_bytes":{"type":"integer","format":"int64"},"notes":{"type":"string"},"signer_name":{"type":"string"},"signed_at":{"type":"string","format":"date-time"},"signer_ip":{"type":"string"},"uploaded_by":{"type":"string"},"uploaded_at":{"type":"string","format":"date-time"},"replaces_document_id":{"type":"string","format":"uuid"}}},"CancelProjectResult":{"type":"object","properties":{"totalTns":{"type":"integer","format":"int32"},"cancelledCount":{"type":"integer","format":"int32"},"alreadyTerminalCount":{"type":"integer","format":"int32"},"failedToCancelCount":{"type":"integer","format":"int32"},"failedTns":{"type":"array","items":{"type":"string"}},"message":{"type":"string"},"projectCancelled":{"type":"boolean"}}},"Fields":{"type":"object","properties":{"pin":{"type":"string"},"accountNumber":{"type":"string"},"btn":{"pattern":"^[0-9]{10}$","type":"string"},"endUserName":{"type":"string"},"businessName":{"type":"string"},"serviceAddress":{"type":"string"},"streetNumber":{"type":"string"},"streetName":{"type":"string"},"streetType":{"type":"string"},"unit":{"type":"string"},"city":{"type":"string"},"serviceAddressState":{"type":"string"},"postalCode":{"type":"string"},"notes":{"type":"object","additionalProperties":{"type":"object"}}}},"ProjectAmendmentRequest":{"type":"object","properties":{"tns":{"type":"array","items":{"type":"string"}},"fields":{"$ref":"#/components/schemas/Fields"}}},"AmendmentResult":{"type":"object","properties":{"perTn":{"type":"object","additionalProperties":{"type":"string","enum":["AMENDED","LOCKED_LSR","TERMINAL","NOT_FOUND"]}},"amendedCount":{"type":"integer","format":"int32"},"lockedLsrCount":{"type":"integer","format":"int32"},"terminalCount":{"type":"integer","format":"int32"},"notFoundCount":{"type":"integer","format":"int32"}}},"LsrData":{"type":"object","properties":{"end_user_name":{"type":"string"},"business_name":{"type":"string"},"service_address":{"type":"string"},"street_number":{"type":"string"},"street_name":{"type":"string"},"street_type":{"type":"string"},"unit":{"type":"string"},"city":{"type":"string"},"service_address_state":{"type":"string"},"postal_code":{"type":"string"},"account_number":{"type":"string"},"btn":{"type":"string"},"pin":{"type":"string"}}},"PortProjectActionRequest":{"required":["tns"],"type":"object","properties":{"tns":{"type":"array","items":{"type":"string"}},"action":{"type":"string","enum":["ACTIVATE","CANCEL","SUP_DDD","DELETE","REVALIDATE","SUBMIT","RESUBMIT","REQUEST_RE_RELEASE"]},"new_ddd":{"pattern":"^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z|\\d{4}-\\d{2}-\\d{2}|\\d{1,3})$","type":"string"},"override_due_date":{"type":"boolean"},"lsr_data":{"$ref":"#/components/schemas/LsrData"}}},"PortWindowCheckRequest":{"required":["desiredDueDate","tns"],"type":"object","properties":{"tns":{"maxItems":500,"minItems":0,"type":"array","items":{"type":"string"}},"desiredDueDate":{"type":"string","format":"date"}}},"PortWindowCheckResult":{"type":"object","properties":{"valid":{"type":"boolean"},"earliestDate":{"type":"string","format":"date"},"carrierLabel":{"type":"string"},"requiredDays":{"type":"integer","format":"int32"},"offendingTns":{"type":"array","items":{"type":"string"}}}},"RetryJobResponse":{"type":"object","properties":{"jobId":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"success":{"type":"boolean"},"message":{"type":"string"},"retriedCount":{"type":"integer","format":"int32"}}},"PortOutProjectCreateRequest":{"required":["customerId","gainingSpid","sourceSpid","tns"],"type":"object","properties":{"customerId":{"type":"string","description":"Customer UUID","format":"uuid"},"sourceSpid":{"pattern":"^[0-9A-Z]{4}$","type":"string","description":"Source SPID (our SPID releasing the numbers)","example":"781K"},"gainingSpid":{"pattern":"^[0-9A-Z]{4}$","type":"string","description":"Gaining carrier SPID (receiving the numbers)","example":"5678"},"name":{"maxLength":255,"minLength":0,"type":"string","description":"Optional project name (auto-generated if not provided)"},"tns":{"maxItems":1000,"minItems":0,"type":"array","description":"List of TNs with subscriber data","items":{"$ref":"#/components/schemas/TnDetail"}}},"description":"Request to create a port-out release project"},"TnDetail":{"required":["tn"],"type":"object","properties":{"tn":{"pattern":"^[0-9]{10}$","type":"string","description":"10-digit telephone number"},"accountNumber":{"type":"string","description":"Account number for subscriber"},"endUserName":{"type":"string","description":"End user name"},"streetNum":{"type":"string","description":"Street number"},"streetName":{"type":"string","description":"Street name"},"streetType":{"type":"string","description":"Street type (St, Ave, Blvd, etc.)"},"city":{"type":"string","description":"City"},"state":{"maxLength":2,"minLength":0,"type":"string","description":"State (2-letter code)"},"postalCode":{"maxLength":10,"minLength":0,"type":"string","description":"Postal code"},"pin":{"type":"string","description":"PIN for authorization"},"npacRegion":{"type":"string","description":"NPAC region (auto-detected if not provided)"}},"description":"Individual TN details for release"},"SubmitResultResponse":{"type":"object","properties":{"totalTns":{"type":"integer","format":"int32"},"submitted":{"type":"integer","format":"int32"},"failed":{"type":"integer","format":"int32"},"details":{"type":"array","items":{"$ref":"#/components/schemas/TnSubmitResultResponse"}}}},"TnSubmitResultResponse":{"type":"object","properties":{"tn":{"type":"string"},"success":{"type":"boolean"},"confirmationNumber":{"type":"string"},"errorMessage":{"type":"string"}}},"TnLookupRequest":{"required":["tns"],"type":"object","properties":{"tns":{"maxItems":1000,"minItems":0,"type":"array","description":"List of 10-digit telephone numbers to lookup","items":{"type":"string","description":"List of 10-digit telephone numbers to lookup"}}},"description":"Request to lookup TNs for port-out release"},"LookupSummary":{"type":"object","properties":{"totalRequested":{"type":"integer","format":"int32"},"foundInInventory":{"type":"integer","format":"int32"},"foundViaTelique":{"type":"integer","format":"int32"},"notFound":{"type":"integer","format":"int32"},"uniqueSpids":{"type":"integer","format":"int32"}},"description":"Summary of lookup results"},"RoutingData":{"type":"object","properties":{"currentLrn":{"type":"string"},"currentOcn":{"type":"string"},"npacRegion":{"type":"string"}},"description":"TN routing information"},"SubscriberData":{"type":"object","properties":{"accountNumber":{"type":"string"},"endUserName":{"type":"string"},"streetNum":{"type":"string"},"streetName":{"type":"string"},"streetType":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"},"pin":{"type":"string"},"btn":{"type":"string"}},"description":"Subscriber account information"},"TnLookupResponse":{"type":"object","properties":{"results":{"type":"array","description":"Individual TN lookup results","items":{"$ref":"#/components/schemas/TnLookupResult"}},"spidGroups":{"type":"object","additionalProperties":{"type":"array","description":"TNs grouped by source SPID for project creation","items":{"type":"string","description":"TNs grouped by source SPID for project creation"}},"description":"TNs grouped by source SPID for project creation"},"notFound":{"type":"array","description":"TNs not found in inventory or Telique","items":{"type":"string","description":"TNs not found in inventory or Telique"}},"summary":{"$ref":"#/components/schemas/LookupSummary"}},"description":"TN lookup results with SPID grouping"},"TnLookupResult":{"type":"object","properties":{"tn":{"type":"string","description":"10-digit telephone number"},"sourceSpid":{"type":"string","description":"Source SPID (current owner)"},"foundInInventory":{"type":"boolean","description":"Whether TN was found in our inventory"},"foundViaTelique":{"type":"boolean","description":"Whether TN was found via Telique LRN lookup"},"subscriberData":{"$ref":"#/components/schemas/SubscriberData"},"routingData":{"$ref":"#/components/schemas/RoutingData"},"error":{"type":"string","description":"Error message if lookup failed"}},"description":"Individual TN lookup result"},"AssignNumbersNnidRequest":{"required":["nnid","tns"],"type":"object","properties":{"tns":{"maxItems":50000,"minItems":0,"type":"array","items":{"type":"string"}},"nnid":{"type":"string"},"tcrCampaignId":{"type":"string"},"contextA2P":{"type":"boolean"},"context":{"pattern":"A2P|P2P","type":"string"}}},"NnidOverwriteDecisionRequest":{"type":"object","properties":{"reason":{"type":"string"}}},"NnidOverwriteRequestResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"tn":{"type":"string"},"customerId":{"type":"string","format":"uuid"},"spid":{"type":"string"},"requesterPid":{"type":"string"},"requestedNnid":{"type":"string"},"registryRequestId":{"type":"string"},"receivedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"status":{"type":"string"},"decidedBy":{"type":"string"},"decidedAt":{"type":"string","format":"date-time"},"decisionReason":{"type":"string"},"loaDocumentPath":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"NnidHoldReclaimRequest":{"type":"object","properties":{"tns":{"type":"array","items":{"type":"string"}}}},"NnidHoldBackfillRequest":{"type":"object","properties":{"collisionRiskAcknowledged":{"type":"boolean"}}},"NnidFindingResolveRequest":{"type":"object","properties":{"note":{"type":"string"}}},"TransferRequest":{"type":"object","properties":{"toCustomerId":{"type":"string","format":"uuid"}}},"AssignNumbersRequest":{"required":["phoneNumbers"],"type":"object","properties":{"phoneNumbers":{"maxItems":2147483647,"minItems":1,"type":"array","items":{"type":"string"}},"source":{"type":"string","description":"Origin of the assignment request. If 'bulk_csv', triggers a customer notification email.","example":"bulk_csv"}}},"LinkCampaignRequest":{"required":["tcrCampaignId"],"type":"object","properties":{"tcrCampaignId":{"type":"string"}}},"SubmitVettingRequest":{"required":["evpId","vettingClass"],"type":"object","properties":{"evpId":{"type":"string"},"vettingClass":{"type":"string"},"additionalRequestPayload":{"type":"string"}}},"SubmitVetAppealRequest":{"required":["appealCategories","evpId"],"type":"object","properties":{"evpId":{"type":"string"},"appealCategories":{"type":"array","items":{"type":"string"}},"explanation":{"maxLength":1024,"minLength":0,"type":"string"},"attachmentUuids":{"type":"array","items":{"type":"string"}}}},"ImportVettingRequest":{"required":["evpId","vettingId"],"type":"object","properties":{"evpId":{"type":"string"},"vettingId":{"type":"string"},"vettingToken":{"type":"string"}}},"SubmitIdentityAppealRequest":{"required":["appealCategories"],"type":"object","properties":{"appealCategories":{"type":"array","items":{"type":"string"}},"explanation":{"maxLength":1024,"minLength":0,"type":"string"},"attachmentUuids":{"type":"array","items":{"type":"string"}}}},"LinkBrandRequest":{"required":["tcrBrandId"],"type":"object","properties":{"tcrBrandId":{"type":"string"}}},"SoaReleaseRequest":{"required":["ddd","newspid","oldspid","tn"],"type":"object","properties":{"tn":{"pattern":"^[0-9]{10}$","type":"string","description":"10-digit telephone number","example":"2125551234"},"oldspid":{"pattern":"^[0-9A-Z]{4}$","type":"string","description":"4-character losing SPID","example":"5678"},"newspid":{"pattern":"^[0-9A-Z]{4}$","type":"string","description":"4-character gaining SPID","example":"1234"},"ddd":{"type":"string","description":"Due date","example":"12/31/2024"},"region":{"maxLength":4,"type":"string","description":"4-character region ID (optional)","example":"EAST"}},"description":"Request to release a telephone number"},"SoaResponse":{"type":"object","properties":{"timestamp":{"type":"string","description":"Response timestamp","format":"date-time","example":"2024-12-27T10:30:00Z"},"status":{"type":"string","description":"Operation status","example":"SUCCESS"},"message":{"type":"string","description":"Response message","example":"Port request created successfully"},"transactionId":{"type":"string","description":"Transaction ID if applicable"},"error":{"type":"string","description":"Error details if status is FAILED"}},"description":"Generic SOA operation response"},"SoaLrnRemoveRequest":{"required":["newspid","region","tn"],"type":"object","properties":{"tn":{"pattern":"^[0-9]{10}$","type":"string","description":"10-digit LRN to remove","example":"2125550000"},"newspid":{"pattern":"^[0-9A-Z]{4}$","type":"string","description":"4-character gaining SPID","example":"1234"},"region":{"maxLength":4,"type":"string","description":"4-character region ID","example":"EAST"}},"description":"Request to remove an LRN"},"SoaLrnCreateRequest":{"required":["newspid","region","tn"],"type":"object","properties":{"tn":{"pattern":"^[0-9]{10}$","type":"string","description":"10-digit LRN to create","example":"2125550000"},"newspid":{"pattern":"^[0-9A-Z]{4}$","type":"string","description":"4-character gaining SPID","example":"1234"},"region":{"maxLength":4,"type":"string","description":"4-character region ID","example":"EAST"}},"description":"Request to create an LRN"},"SoaIntraSpRequest":{"required":["lrn","newspid","tn"],"type":"object","properties":{"tn":{"pattern":"^[0-9]{10}$","type":"string","description":"10-digit telephone number","example":"2125551234"},"lrn":{"pattern":"^[0-9]{10}$","type":"string","description":"10-digit LRN","example":"2125550000"},"newspid":{"pattern":"^[0-9A-Z]{4}$","type":"string","description":"4-character gaining SPID","example":"1234"},"ddd":{"type":"string","description":"Due date (optional)","example":"12/31/2024"},"region":{"maxLength":4,"type":"string","description":"4-character region ID (optional)","example":"EAST"}},"description":"Request for intra-SPID port"},"SoaDisconnectRequest":{"required":["spid","tn"],"type":"object","properties":{"tn":{"pattern":"^[0-9]{10}$","type":"string","description":"10-digit telephone number","example":"2125551234"},"spid":{"pattern":"^[0-9A-Z]{4}$","type":"string","description":"4-character current SPID","example":"1234"},"region":{"maxLength":4,"type":"string","description":"4-character region ID (optional)","example":"EAST"}},"description":"Request to disconnect a telephone number"},"SoaCreateRequest":{"required":["lrn","tn"],"type":"object","properties":{"tn":{"pattern":"^[0-9]{10}$","type":"string","description":"10-digit telephone number to port","example":"2125551234"},"lrn":{"pattern":"^[0-9]{10}$","type":"string","description":"10-digit Location Routing Number","example":"2125550000"},"newspid":{"type":"string","description":"4-character gaining SPID (auto-detected from target LRN if not provided)","example":"1234"},"oldspid":{"type":"string","description":"4-character losing SPID (auto-detected from current TN if not provided)","example":"5678"},"ddd":{"type":"string","description":"Port due date in ISO instant format (auto-set to tomorrow midnight UTC if not provided)","example":"2025-11-07T05:00:00.000Z"},"region":{"maxLength":4,"type":"string","description":"4-character region ID (optional)","example":"EAST"}},"description":"Request to create a new port order"},"SoaConflictRemoveRequest":{"required":["tn"],"type":"object","properties":{"tn":{"pattern":"^[0-9]{10}$","type":"string","description":"10-digit telephone number","example":"2125551234"}},"description":"Request to remove a conflict from a telephone number"},"SoaConflictCreateRequest":{"required":["tn"],"type":"object","properties":{"tn":{"pattern":"^[0-9]{10}$","type":"string","description":"10-digit telephone number","example":"2125551234"}},"description":"Request to create a conflict for a telephone number"},"SoaCancelRequest":{"required":["newspid","tn"],"type":"object","properties":{"tn":{"pattern":"^[0-9]{10}$","type":"string","description":"10-digit telephone number","example":"2125551234"},"newspid":{"pattern":"^[0-9A-Z]{4}$","type":"string","description":"4-character gaining SPID","example":"1234"}},"description":"Request to cancel a port order"},"SoaActivateRequest":{"required":["tn"],"type":"object","properties":{"tn":{"pattern":"^[0-9]{10}$","type":"string","description":"10-digit telephone number to activate","example":"2125551234"},"newspid":{"pattern":"^[0-9A-Z]{4}$","type":"string","description":"4-character gaining SPID (optional)","example":"1234"},"region":{"maxLength":4,"type":"string","description":"4-character region ID (optional)","example":"EAST"}},"description":"Request to activate a ported telephone number"},"QueryRequest":{"type":"object","properties":{"query":{"type":"string"},"page":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"sortBy":{"type":"string"},"sortDirection":{"type":"string"},"spids":{"type":"array","items":{"type":"string"}},"fields":{"type":"array","items":{"type":"string"}}}},"ExportRequest":{"type":"object","properties":{"query":{"type":"string"},"spids":{"type":"array","items":{"type":"string"}},"sortBy":{"type":"string"},"sortDirection":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}}}},"ReassignRequest":{"type":"object","properties":{"fromApplicationId":{"type":"string"},"toApplicationId":{"type":"string"},"metadata":{"type":"object","additionalProperties":{"type":"object"}}}},"InventoryMapRequestDto":{"type":"object","properties":{"regionType":{"type":"string","enum":["STATE","LATA","RATE_CENTER","ZIP_CODE","NPA_NXX"]},"states":{"type":"array","items":{"type":"string"}},"latas":{"type":"array","items":{"type":"integer","format":"int32"}},"spids":{"type":"array","items":{"type":"string"}},"localities":{"type":"array","items":{"type":"string"}},"npas":{"type":"array","items":{"type":"string"}},"minAvailabilityPercentage":{"type":"number","format":"double"},"maxAvailabilityPercentage":{"type":"number","format":"double"},"minAvailableCount":{"type":"integer","format":"int64"},"includeEmpty":{"type":"boolean"}}},"CreateBulkOperationRequest":{"type":"object","properties":{"tns":{"type":"array","items":{"type":"string"}},"query":{"type":"string"},"params":{"type":"object","additionalProperties":{"type":"object"}},"customerId":{"type":"string","format":"uuid"}}},"StartAuditRequest":{"required":["spid"],"type":"object","properties":{"spid":{"pattern":"^[A-Z0-9]{4}$","type":"string"},"phaseSelection":{"type":"string","enum":["ALL","PHASE_1_ONLY","PHASE_2_ONLY","PHASE_3_ONLY"]},"purgeInventoryFirst":{"type":"boolean"},"includeCnam":{"type":"boolean"},"autoCommit":{"type":"boolean"}}},"AggregateRequest":{"type":"object","properties":{"query":{"type":"string"},"spids":{"type":"array","items":{"type":"string"}},"groupBy":{"type":"array","items":{"type":"string"}},"limit":{"type":"integer","format":"int32"},"orderBy":{"type":"string"}}},"CnamActivateRequest":{"required":["cnam","telephoneNumber"],"type":"object","properties":{"telephoneNumber":{"pattern":"[2-9][0-9]{2}[2-9][0-9]{6}","type":"string"},"lrn":{"type":"string"},"cnam":{"maxLength":15,"minLength":1,"pattern":".*[a-zA-Z].*","type":"string"},"privacyIndicator":{"pattern":"[AR]","type":"string"},"extendedFirstName":{"maxLength":30,"minLength":0,"type":"string"},"extendedLastName":{"maxLength":30,"minLength":0,"type":"string"},"extendedBusinessName":{"maxLength":60,"minLength":0,"type":"string"}}},"AttemptDto":{"type":"object","properties":{"attemptNumber":{"type":"integer","format":"int32"},"outcome":{"type":"string"},"errorClass":{"type":"string"},"operatorMessage":{"type":"string"},"internalDetail":{"type":"string"},"scheduledBy":{"type":"string"},"startedAt":{"type":"string","format":"date-time"},"endedAt":{"type":"string","format":"date-time"}}},"JobRunDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"kind":{"type":"string"},"subjectRef":{"type":"string"},"status":{"type":"string"},"recovering":{"type":"boolean"},"attemptCount":{"type":"integer","format":"int32"},"maxAttempts":{"type":"integer","format":"int32"},"nextRetryAt":{"type":"string","format":"date-time"},"warningCount":{"type":"integer","format":"int32"},"warningSummary":{"type":"object","additionalProperties":{"type":"object"}},"ackRequired":{"type":"boolean"},"ackedBy":{"type":"string"},"ackedAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time"},"endedAt":{"type":"string","format":"date-time"},"attempts":{"type":"array","items":{"$ref":"#/components/schemas/AttemptDto"}}}},"ReportJobResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"reportType":{"type":"string","enum":["SOA_QUEUE_SNAPSHOT","PORT_OUTS","PORT_INS","INVENTORY_XLSX","INVENTORY_MAP_XLSX","NNID_SMS_IMPACT"]},"status":{"type":"string","enum":["QUEUED","RUNNING","COMPLETE","FAILED"]},"userEmail":{"type":"string"},"params":{"type":"object","additionalProperties":{"type":"object"}},"rowCount":{"type":"integer","format":"int32"},"sizeBytes":{"type":"integer","format":"int64"},"errorMessage":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"}}},"NpacSpidDirectoryPageDto":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/NpacSpidDirectorySummaryDto"}},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"number":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"dataset":{"$ref":"#/components/schemas/NpacSpidDatasetFreshnessDto"}}},"NpacSpidDirectorySummaryDto":{"type":"object","properties":{"spid":{"type":"string"},"regionalCustomerNames":{"type":"array","items":{"type":"string"}},"customerTypes":{"type":"array","items":{"type":"string"}},"regions":{"type":"array","items":{"type":"string"}},"contactCount":{"type":"integer","format":"int32"},"retired":{"type":"boolean"}}},"NpacSpidContactDto":{"type":"object","properties":{"regionalCustomerName":{"type":"string"},"customerType":{"type":"string"},"contactType":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"},"primaryPhone":{"type":"string"},"secondaryPhone":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}}}},"NpacSpidDirectoryDetailDto":{"type":"object","properties":{"spid":{"type":"string"},"regionalCustomerNames":{"type":"array","items":{"type":"string"}},"customerTypes":{"type":"array","items":{"type":"string"}},"regions":{"type":"array","items":{"type":"string"}},"contactCount":{"type":"integer","format":"int32"},"retired":{"type":"boolean"},"contacts":{"type":"array","items":{"$ref":"#/components/schemas/NpacSpidContactDto"}},"dataset":{"$ref":"#/components/schemas/NpacSpidDatasetFreshnessDto"}}},"RespOrgDirectoryPageDto":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/RespOrgDirectorySummaryDto"}},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"number":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"dataset":{"$ref":"#/components/schemas/RespOrgDatasetFreshnessDto"}}},"RespOrgDirectorySummaryDto":{"type":"object","properties":{"respOrgId":{"type":"string"},"entityId":{"type":"string"},"companyName":{"type":"string"},"sourceAsOf":{"type":"string","format":"date-time"},"retired":{"type":"boolean"},"freshness":{"type":"string"}}},"RespOrgDirectoryReadDetailDto":{"type":"object","properties":{"respOrgId":{"type":"string"},"entityId":{"type":"string"},"companyName":{"type":"string"},"companyAddress":{"type":"string"},"primaryContact":{"type":"string"},"changeContact":{"type":"string"},"notes":{"type":"string"},"sourceAsOf":{"type":"string","format":"date-time"},"retired":{"type":"boolean"},"freshness":{"type":"string"}}},"NnidDirectoryPageDto":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/NnidDirectorySummaryDto"}},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"number":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"dataset":{"$ref":"#/components/schemas/NnidDatasetFreshnessDto"}}},"NnidDirectorySummaryDto":{"type":"object","properties":{"nnid":{"type":"string"},"companyName":{"type":"string"},"brandName":{"type":"string"},"serviceType":{"type":"string"},"countryName":{"type":"string"},"countryIso2":{"type":"string"},"retired":{"type":"boolean"}}},"NnidDirectoryDetailDto":{"type":"object","properties":{"nnid":{"type":"string"},"companyName":{"type":"string"},"brandName":{"type":"string"},"serviceType":{"type":"string"},"countryName":{"type":"string"},"countryCallingCode":{"type":"string"},"countryIso2":{"type":"string"},"rawMccList":{"type":"string"},"rawMncList":{"type":"string"},"rawMccMncList":{"type":"string"},"mobileNetworks":{"type":"array","items":{"$ref":"#/components/schemas/NnidMobileNetworkDto"}},"retired":{"type":"boolean"},"dataset":{"$ref":"#/components/schemas/NnidDatasetFreshnessDto"}}},"NnidMobileNetworkDto":{"type":"object","properties":{"plmn":{"type":"string"},"mcc":{"type":"string"},"mnc":{"type":"string"}}},"CicDirectorySummaryDto":{"type":"object","properties":{"cic":{"type":"string"},"assigneeName":{"type":"string"},"recordStatus":{"type":"string"},"assignmentDate":{"type":"string","format":"date"},"sourceAsOf":{"type":"string","format":"date-time"},"retired":{"type":"boolean"},"freshness":{"type":"string"}}},"PageCicDirectorySummaryDto":{"type":"object","properties":{"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/CicDirectorySummaryDto"}},"number":{"type":"integer","format":"int32"},"sort":{"$ref":"#/components/schemas/SortObject"},"numberOfElements":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"last":{"type":"boolean"},"empty":{"type":"boolean"}}},"PageableObject":{"type":"object","properties":{"offset":{"type":"integer","format":"int64"},"sort":{"$ref":"#/components/schemas/SortObject"},"pageSize":{"type":"integer","format":"int32"},"pageNumber":{"type":"integer","format":"int32"},"paged":{"type":"boolean"},"unpaged":{"type":"boolean"}}},"SortObject":{"type":"object","properties":{"empty":{"type":"boolean"},"sorted":{"type":"boolean"},"unsorted":{"type":"boolean"}}},"CicDirectoryDetailDto":{"type":"object","properties":{"cic":{"type":"string"},"featureGroup":{"type":"string"},"iacCode":{"type":"string"},"assigneeName":{"type":"string"},"recordStatus":{"type":"string"},"assignmentDate":{"type":"string","format":"date"},"contactName":{"type":"string"},"contactPhone":{"type":"string"},"contactEmail":{"type":"string"},"street":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"postalCode":{"type":"string"},"sourceAsOf":{"type":"string","format":"date-time"},"retrievedAt":{"type":"string","format":"date-time"},"retired":{"type":"boolean"},"freshness":{"type":"string"}}},"EffectivePolicyResponse":{"type":"object","properties":{"tn":{"type":"string"},"decision":{"$ref":"#/components/schemas/ProtectionDecision"}}},"ProtectionDecision":{"type":"object","properties":{"action":{"type":"string","enum":["BLOCK","ALLOW","REQUIRE_APPROVAL","REQUIRE_PIN","HOLD_PERIOD"]},"matchedRuleId":{"type":"string","format":"uuid"},"matchedScope":{"type":"string","enum":["CUSTOMER","SPID","TN"]},"reason":{"type":"string"},"holdPeriodHours":{"type":"integer","format":"int32"}}},"Pageable":{"type":"object","properties":{"page":{"minimum":0,"type":"integer","format":"int32"},"size":{"minimum":1,"type":"integer","format":"int32"},"sort":{"type":"array","items":{"type":"string"}}}},"PagePortProjectResponse":{"type":"object","properties":{"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/PortProjectResponse"}},"number":{"type":"integer","format":"int32"},"sort":{"$ref":"#/components/schemas/SortObject"},"numberOfElements":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"last":{"type":"boolean"},"empty":{"type":"boolean"}}},"ProjectStatisticsResponse":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"valid":{"type":"integer","format":"int64"},"error":{"type":"integer","format":"int64"},"submitted":{"type":"integer","format":"int64"},"activated":{"type":"integer","format":"int64"},"cancelled":{"type":"integer","format":"int64"}}},"SseEmitter":{"type":"object","properties":{"timeout":{"type":"integer","format":"int64"}}},"PortLifecycleSummaryResponse":{"type":"object","properties":{"project_id":{"type":"string"},"total_tns":{"type":"integer","format":"int32"},"ready_for_activation_count":{"type":"integer","format":"int32"},"awaiting_due_date_count":{"type":"integer","format":"int32"},"pending_foc_count":{"type":"integer","format":"int32"},"foc_received_count":{"type":"integer","format":"int32"},"activated_count":{"type":"integer","format":"int32"},"activating_count":{"type":"integer","format":"int32"},"validation_error_count":{"type":"integer","format":"int32"},"failed_count":{"type":"integer","format":"int32"},"requires_action_count":{"type":"integer","format":"int32"},"state_counts":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}},"earliest_due_date":{"type":"string","format":"date"},"next_activation_ready_date":{"type":"string","format":"date"},"all_ready_for_activation":{"type":"boolean"},"has_blockers":{"type":"boolean"},"blocker_summary":{"type":"string"}}},"CarrierEmailPrefillResponse":{"type":"object","properties":{"carrierGroups":{"type":"array","items":{"$ref":"#/components/schemas/CarrierGroup"}},"operatorEmail":{"type":"string"}}},"CarrierGroup":{"type":"object","properties":{"spid":{"type":"string"},"carrierName":{"type":"string"},"contactEmail":{"type":"string"},"tradingPartnerExists":{"type":"boolean"},"tnCount":{"type":"integer","format":"int32"},"tns":{"type":"array","items":{"type":"string"}},"suggestedSubject":{"type":"string"},"suggestedBody":{"type":"string"},"contactSource":{"type":"string"}}},"PagePortProjectDetailResponse":{"type":"object","properties":{"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/PortProjectDetailResponse"}},"number":{"type":"integer","format":"int32"},"sort":{"$ref":"#/components/schemas/SortObject"},"numberOfElements":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"last":{"type":"boolean"},"empty":{"type":"boolean"}}},"AutoActivationSettingsResponse":{"type":"object","properties":{"project_id":{"type":"string","description":"The project ID","format":"uuid"},"project_name":{"type":"string","description":"The project name"},"auto_activation_mode":{"type":"string","description":"Auto-activation mode: DISABLED (manual), ASAP (immediate after DDD), SCHEDULED (specific datetime)","example":"ASAP","enum":["DISABLED","ASAP","SCHEDULED"]},"scheduled_activation_at":{"type":"string","description":"ISO 8601 datetime for scheduled activation (UTC). Only present when mode is SCHEDULED.","format":"date-time","example":"2025-12-15T06:00:00Z"},"last_auto_activation_attempt":{"type":"string","description":"Timestamp of last auto-activation attempt","format":"date-time"},"auto_activation_failure_count":{"type":"integer","description":"Number of consecutive failed auto-activation attempts","format":"int32"},"max_retry_attempts":{"type":"integer","description":"Maximum allowed retry attempts before auto-activation stops","format":"int32"},"retry_cooldown_minutes":{"type":"integer","description":"Cooldown period in minutes between retry attempts","format":"int32"},"can_auto_activate":{"type":"boolean","description":"Whether auto-activation can run (not at max retries)"}},"description":"Auto-activation settings for a port project"},"JobStatsResponse":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"awaiting":{"type":"integer","format":"int64"},"scheduled":{"type":"integer","format":"int64"},"enqueued":{"type":"integer","format":"int64"},"processing":{"type":"integer","format":"int64"},"succeeded":{"type":"integer","format":"int64"},"failed":{"type":"integer","format":"int64"},"deleted":{"type":"integer","format":"int64"},"recurringJobs":{"type":"integer","format":"int64"},"backgroundJobServers":{"type":"integer","format":"int32"}}},"JobResponse":{"type":"object","properties":{"jobId":{"type":"string","format":"uuid"},"jobName":{"type":"string"},"state":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"ProjectJobStatusResponse":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid"},"totalTns":{"type":"integer","format":"int64"},"pendingTns":{"type":"integer","format":"int64"},"validatedTns":{"type":"integer","format":"int64"},"validTns":{"type":"integer","format":"int64"},"errorTns":{"type":"integer","format":"int64"},"percentComplete":{"type":"integer","format":"int32"}}},"FailedJobResponse":{"type":"object","properties":{"jobId":{"type":"string","format":"uuid"},"jobName":{"type":"string"},"exception":{"type":"string"},"failedAt":{"type":"string","format":"date-time"},"numberOfRetries":{"type":"integer","format":"int32"}}},"PageNnidOverwriteRequestResponse":{"type":"object","properties":{"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/NnidOverwriteRequestResponse"}},"number":{"type":"integer","format":"int32"},"sort":{"$ref":"#/components/schemas/SortObject"},"numberOfElements":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"last":{"type":"boolean"},"empty":{"type":"boolean"}}},"SoaStatusResponse":{"type":"object","properties":{"timestamp":{"type":"string","description":"Response timestamp","format":"date-time","example":"2024-12-27T10:30:00Z"},"status":{"type":"string","description":"Port status","example":"PENDING"},"message":{"type":"string","description":"Response message"},"currentSpid":{"type":"string","description":"Current SPID","example":"567G"},"newSpid":{"type":"string","description":"New SPID (target)","example":"616J"},"oldSpid":{"type":"string","description":"Old SPID (source)","example":"567G"},"lrn":{"type":"string","description":"Location Routing Number","example":"7208441000"},"dueDate":{"type":"string","description":"Due date in MM/dd/yyyy format","example":"07/02/2025"},"lastAction":{"type":"string","description":"Last action taken","example":"CREATE"},"lastActionDate":{"type":"string","description":"Last action timestamp","format":"date-time"},"activationDate":{"type":"string","description":"Activation timestamp if completed","format":"date-time"},"error":{"type":"string","description":"Error details if any"},"dataSource":{"type":"string"}},"description":"SOA port status response"},"SoaSpidResponse":{"type":"object","properties":{"timestamp":{"type":"string","description":"Response timestamp","format":"date-time","example":"2024-12-27T10:30:00Z"},"status":{"type":"string","description":"Operation status","example":"SUCCESS"},"tn":{"type":"string","description":"Telephone number","example":"3036298301"},"spid":{"type":"string","description":"Current SPID","example":"567G"},"lrn":{"type":"string","description":"Location Routing Number","example":"7207081999"},"spName":{"type":"string","description":"Service provider name","example":"Verizon"},"error":{"type":"string","description":"Error message if status is ERROR"}},"description":"SOA SPID query response"},"SoaQueryResponse":{"type":"object","properties":{"timestamp":{"type":"string","description":"Response timestamp","format":"date-time","example":"2024-12-27T10:30:00Z"},"status":{"type":"string","description":"Operation status","example":"SUCCESS"},"tn":{"type":"string","description":"Telephone number","example":"3036298301"},"currentSpid":{"type":"string","description":"Current SPID","example":"567G"},"lrn":{"type":"string","description":"Location Routing Number","example":"7207081999"},"portStatus":{"type":"string","description":"Port status","example":"PENDING"},"subscriptionVersionState":{"type":"string","description":"AstroSOA subscription-version state","example":"VSAC"},"newSpDueDate":{"type":"string","description":"New service provider due date from the subscription version"},"oldSpDueDate":{"type":"string","description":"Old service provider due date from the subscription version"},"oldSpAuthorization":{"type":"string","description":"Old service provider authorization","example":"Released"},"createTimestamp":{"type":"string","description":"Subscription-version create timestamp"},"lnpType":{"type":"string","description":"LNP type","example":"WIRELINE"},"currentSpName":{"type":"string","description":"Current service provider name","example":"Verizon"},"currentSpType":{"type":"string","description":"Current service provider type","example":"WIRELESS"},"rateCenter":{"type":"string","description":"Rate center","example":"DENVER"},"state":{"type":"string","description":"State","example":"CO"},"error":{"type":"string","description":"Error message if status is ERROR"}},"description":"SOA query response"},"SoaEventsResponse":{"type":"object","properties":{"timestamp":{"type":"string","description":"Response timestamp","format":"date-time","example":"2024-12-27T10:30:00Z"},"status":{"type":"string","description":"Operation status","example":"SUCCESS"},"events":{"type":"array","description":"List of events","items":{"type":"object","additionalProperties":{"type":"object","description":"List of events"},"description":"List of events"}},"eventCount":{"type":"integer","description":"Total number of events","format":"int32"},"error":{"type":"string","description":"Error message if status is ERROR"}},"description":"SOA events response"},"SoaActReadyResponse":{"type":"object","properties":{"timestamp":{"type":"string","description":"Response timestamp","format":"date-time","example":"2024-12-27T10:30:00Z"},"status":{"type":"string","description":"Operation status","example":"SUCCESS"},"spid":{"type":"string","description":"SPID","example":"616J"},"readyCount":{"type":"integer","description":"Number of ports ready for activation","format":"int32"},"readyNumbers":{"type":"array","description":"List of telephone numbers ready for activation","items":{"type":"string","description":"List of telephone numbers ready for activation"}},"error":{"type":"string","description":"Error message if status is ERROR"},"readyTns":{"type":"array","items":{"type":"string"}},"dataSource":{"type":"string"}},"description":"SOA activation ready response"},"BulkOperationResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"reference":{"type":"string"},"action":{"type":"string"},"status":{"type":"string"},"selectionQuery":{"type":"string"},"changeSummary":{"type":"string"},"totalCount":{"type":"integer","format":"int32"},"processedCount":{"type":"integer","format":"int32"},"successCount":{"type":"integer","format":"int32"},"failureCount":{"type":"integer","format":"int32"},"requestedBy":{"type":"string"},"parentOperationId":{"type":"string","format":"uuid"},"errorMessage":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"}}},"PageBulkOperationResponse":{"type":"object","properties":{"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/BulkOperationResponse"}},"number":{"type":"integer","format":"int32"},"sort":{"$ref":"#/components/schemas/SortObject"},"numberOfElements":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"last":{"type":"boolean"},"empty":{"type":"boolean"}}},"BulkOperationItemResponse":{"type":"object","properties":{"telephoneNumber":{"type":"string"},"status":{"type":"string"},"errorMessage":{"type":"string"},"processedAt":{"type":"string","format":"date-time"}}},"PageBulkOperationItemResponse":{"type":"object","properties":{"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/BulkOperationItemResponse"}},"number":{"type":"integer","format":"int32"},"sort":{"$ref":"#/components/schemas/SortObject"},"numberOfElements":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"last":{"type":"boolean"},"empty":{"type":"boolean"}}},"RemoveNumbersNnidRequest":{"required":["tns"],"type":"object","properties":{"tns":{"maxItems":50000,"minItems":0,"type":"array","items":{"type":"string"}},"nnid":{"type":"string"}}}},"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer token authentication. Pass your API token or user JWT in the Authorization header: Authorization: Bearer YOUR_TOKEN","scheme":"bearer","bearerFormat":"JWT"}}}}