{"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- **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":"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":"Number Inventory","description":"Search and query number inventory"},{"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":"ROC","description":"Resp Org Change workflow management"},{"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":"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":"Number Inventory Audit","description":"Three-phase inventory audit operations"},{"name":"Messaging Number NNID","description":"Assign or remove NNIDs on phone numbers (nnSR push)"},{"name":"Toll-Free Sync","description":"Toll-free number inventory synchronization"},{"name":"Messaging NNIDs","description":"NetNumber ID management for SMS provisioning"},{"name":"Bulk Port","description":"Bulk port project management"},{"name":"Inventory Map","description":"Geographic inventory visualization data"},{"name":"Port Project Documents","description":"Supporting documents (LOA/BILL/CSR/OTHER) for LNP port-in projects"}],"paths":{"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}},"/api/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"}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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/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 /api/v1/port-projects/projects). This endpoint will be removed in v3.0.0.","operationId":"create","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":[]}]}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/v1/tollfree/activate":{"post":{"tags":["Toll-Free"],"summary":"Activate TFNs","description":"Create pointer records to activate reserved toll-free numbers with a CPR template","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":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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":{"$ref":"#/components/schemas/ReportJobResponse"}}}}}}},"/api/v1/port-protection-rules":{"get":{"tags":["port-protection-rule-controller"],"operationId":"list","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_1","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"}}}}}}},"/api/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"}}}}}}}},"/api/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"}}}}}}},"/api/v1/port-projects/projects/{projectId}/validate":{"post":{"tags":["Bulk Port"],"summary":"Trigger validation for all TNs in the project","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"}}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}}},"/api/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"}}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/v1/messaging/nnids":{"get":{"tags":["Messaging NNIDs"],"summary":"List NNIDs","description":"List all NNIDs for the customer","operationId":"listNnids","parameters":[{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"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"}}}}}}},"/api/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"}}}}}}},"/api/v1/messaging/campaigns":{"get":{"tags":["Messaging Campaigns"],"summary":"List campaigns","description":"List all 10DLC campaigns, optionally filtered by brand","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"}}],"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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/v1/messaging/brands":{"get":{"tags":["Messaging Brands"],"summary":"List brands","description":"List all 10DLC brands for the authenticated customer","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"}}],"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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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 /api/v1/reports/jobs with reportType=INVENTORY_XLSX.","operationId":"exportInventoryToCsv","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportRequest"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/v1/inventory/numbers/{telephoneNumber}/release":{"post":{"tags":["Number Inventory"],"summary":"Release number","description":"Release a telephone number back to available pool","operationId":"releaseNumber","parameters":[{"name":"telephoneNumber","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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)","operationId":"releaseNumberById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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","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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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/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":{"200":{"description":"Query successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoaQueryResponse"}},"application/xml":{"schema":{"$ref":"#/components/schemas/SoaQueryResponse"}}}},"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"}}}},"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":[]}]}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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}},"/api/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"}}}}}}},"/api/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"}}}}}}}},"/api/v1/port-projects/projects/{projectId}/documents":{"get":{"tags":["Port Project Documents"],"summary":"List documents for a port-in project","operationId":"list_1","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"}}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/v1/inventory/bulk":{"get":{"tags":["Bulk Operations"],"summary":"List bulk operations","description":"Customer-scoped, newest first.","operationId":"list_2","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}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageBulkOperationResponse"}}}}}}},"/api/v1/inventory/bulk/{id}":{"get":{"tags":["Bulk Operations"],"summary":"Get a bulk operation","description":"Order detail with live counts.","operationId":"get_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BulkOperationResponse"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}},"/api/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"}}}}}}}},"/api/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"}}}}}}},"/api/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"}}}},"/api/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"}}}},"/api/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"}}}}}}},"/api/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"}}},"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"}}}},"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_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"}}},"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"},"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"},"soa_status":{"type":"string"},"lsr_status":{"type":"string","enum":["NONE","SENT","EBOND","FAILED","SKIPPED"]},"csr_status":{"type":"string","enum":["NONE","SENT","EBOND"]},"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"},"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"}}},"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"}}},"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"},"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"},"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"},"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","SENT","EBOND","FAILED","SKIPPED"]},"csrStatus":{"type":"string","enum":["NONE","SENT","EBOND"]},"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"},"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"},"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"}}},"CreateNnidRequest":{"required":["nnid"],"type":"object","properties":{"nnid":{"type":"string"},"description":{"type":"string"},"carrierCode":{"type":"string"},"spid":{"type":"string"},"isDefault":{"type":"boolean"}}},"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"}}},"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"}}},"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"},"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"}}},"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"]},"params":{"type":"object","additionalProperties":{"type":"object"}}}},"ReportJobResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"reportType":{"type":"string","enum":["SOA_QUEUE_SNAPSHOT","PORT_OUTS","PORT_INS","INVENTORY_XLSX"]},"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"}}},"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"}}},"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"}}},"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"},"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"}}},"PortProjectActionRequest":{"required":["tns"],"type":"object","properties":{"tns":{"type":"array","items":{"type":"string"}},"action":{"type":"string","enum":["ACTIVATE","CANCEL","SUP_DDD","DELETE","REVALIDATE","SUBMIT","RESUBMIT"]},"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"}}},"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"}}},"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"}}},"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"}}}},"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"}}},"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"},"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"},"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"}}},"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"}}},"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"}}},"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"}}},"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"}}}}