telnyx-porting-out-javascript
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinese<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->
<!-- 由Telnyx OpenAPI规范自动生成,请勿编辑。 -->
Telnyx Porting Out - JavaScript
Telnyx 号码转出 - JavaScript
Installation
安装
bash
npm install telnyxbash
npm install telnyxSetup
初始化
javascript
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});All examples below assume is already initialized as shown above.
clientjavascript
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // 这是默认配置,可省略
});以下所有示例均假设已按上述方式完成初始化。
clientError Handling
错误处理
All API calls can fail with network errors, rate limits (429), validation errors (422),
or authentication errors (401). Always handle errors in production code:
javascript
try {
const result = await client.messages.send({ to: '+13125550001', from: '+13125550002', text: 'Hello' });
} catch (err) {
if (err instanceof Telnyx.APIConnectionError) {
console.error('Network error — check connectivity and retry');
} else if (err instanceof Telnyx.RateLimitError) {
// 429: rate limited — wait and retry with exponential backoff
const retryAfter = err.headers?.['retry-after'] || 1;
await new Promise(r => setTimeout(r, retryAfter * 1000));
} else if (err instanceof Telnyx.APIError) {
console.error(`API error ${err.status}: ${err.message}`);
if (err.status === 422) {
console.error('Validation error — check required fields and formats');
}
}
}Common error codes: invalid API key, insufficient permissions,
resource not found, validation error (check field formats),
rate limited (retry with exponential backoff).
401403404422429所有API调用都可能因网络错误、速率限制(429)、验证错误(422)或身份验证错误(401)而失败。生产环境代码中务必处理错误:
javascript
try {
const result = await client.messages.send({ to: '+13125550001', from: '+13125550002', text: 'Hello' });
} catch (err) {
if (err instanceof Telnyx.APIConnectionError) {
console.error('网络错误 — 检查连接后重试');
} else if (err instanceof Telnyx.RateLimitError) {
// 429: 速率受限 — 等待后使用指数退避策略重试
const retryAfter = err.headers?.['retry-after'] || 1;
await new Promise(r => setTimeout(r, retryAfter * 1000));
} else if (err instanceof Telnyx.APIError) {
console.error(`API错误 ${err.status}: ${err.message}`);
if (err.status === 422) {
console.error('验证错误 — 检查必填字段和格式');
}
}
}常见错误码: API密钥无效, 权限不足, 资源未找到, 验证错误(检查字段格式), 速率受限(使用指数退避策略重试)。
401403404422429Important Notes
重要说明
- Pagination: List methods return an auto-paginating iterator. Use to iterate through all pages automatically.
for await (const item of result) { ... }
- 分页: 列表方法返回自动分页迭代器。使用自动遍历所有页面。
for await (const item of result) { ... }
List portout requests
列出端口转出请求
Returns the portout requests according to filters
GET /portoutsjavascript
// Automatically fetches more pages as needed.
for await (const portoutDetails of client.portouts.list()) {
console.log(portoutDetails.id);
}Returns: (boolean), (string), (string), (string), (string), (string), (string), (string), (boolean), (string), (string), (array[string]), (array[string]), (string), (string | null), (string), (integer), (string), (string), (string), (string), (enum: pending, authorized, ported, rejected, rejected-pending, canceled), (string), (string), (uuid), (uuid), (string)
already_portedauthorized_namecarrier_namecitycreated_atcurrent_carrierend_user_namefoc_datehost_messagingidinserted_atlsrphone_numbersponreasonrecord_typerejection_coderequested_foc_dateservice_addressspidstatestatussupport_keyupdated_atuser_idvendorzip根据筛选条件返回端口转出请求
GET /portoutsjavascript
// 自动按需获取更多页面
for await (const portoutDetails of client.portouts.list()) {
console.log(portoutDetails.id);
}返回字段:(布尔值),(字符串),(字符串),(字符串),(字符串),(字符串),(字符串),(字符串),(布尔值),(字符串),(字符串),(字符串数组),(字符串数组),(字符串),(字符串 | null),(字符串),(整数),(字符串),(字符串),(字符串),(字符串),(枚举值:pending, authorized, ported, rejected, rejected-pending, canceled),(字符串),(字符串),(uuid),(uuid),(字符串)
already_portedauthorized_namecarrier_namecitycreated_atcurrent_carrierend_user_namefoc_datehost_messagingidinserted_atlsrphone_numbersponreasonrecord_typerejection_coderequested_foc_dateservice_addressspidstatestatussupport_keyupdated_atuser_idvendorzipList all port-out events
列出所有端口转出事件
Returns a list of all port-out events.
GET /portouts/eventsjavascript
// Automatically fetches more pages as needed.
for await (const eventListResponse of client.portouts.events.list()) {
console.log(eventListResponse);
}Returns: (array[string]), (date-time), (enum: portout.status_changed, portout.foc_date_changed, portout.new_comment), (uuid), (object), (enum: created, completed), (uuid), (string), (date-time)
available_notification_methodscreated_atevent_typeidpayloadpayload_statusportout_idrecord_typeupdated_at返回所有端口转出事件的列表
GET /portouts/eventsjavascript
// 自动按需获取更多页面
for await (const eventListResponse of client.portouts.events.list()) {
console.log(eventListResponse);
}返回字段:(字符串数组),(日期时间),(枚举值:portout.status_changed, portout.foc_date_changed, portout.new_comment),(uuid),(对象),(枚举值:created, completed),(uuid),(字符串),(日期时间)
available_notification_methodscreated_atevent_typeidpayloadpayload_statusportout_idrecord_typeupdated_atShow a port-out event
查看单个端口转出事件
Show a specific port-out event.
GET /portouts/events/{id}javascript
const event = await client.portouts.events.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(event.data);Returns: (array[string]), (date-time), (enum: portout.status_changed, portout.foc_date_changed, portout.new_comment), (uuid), (object), (enum: created, completed), (uuid), (string), (date-time)
available_notification_methodscreated_atevent_typeidpayloadpayload_statusportout_idrecord_typeupdated_at查看指定的端口转出事件
GET /portouts/events/{id}javascript
const event = await client.portouts.events.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(event.data);返回字段:(字符串数组),(日期时间),(枚举值:portout.status_changed, portout.foc_date_changed, portout.new_comment),(uuid),(对象),(枚举值:created, completed),(uuid),(字符串),(日期时间)
available_notification_methodscreated_atevent_typeidpayloadpayload_statusportout_idrecord_typeupdated_atRepublish a port-out event
重新发布端口转出事件
Republish a specific port-out event.
POST /portouts/events/{id}/republishjavascript
await client.portouts.events.republish('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');重新发布指定的端口转出事件
POST /portouts/events/{id}/republishjavascript
await client.portouts.events.republish('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');List eligible port-out rejection codes for a specific order
列出指定订单的合格端口转出拒绝码
Given a port-out ID, list rejection codes that are eligible for that port-out
GET /portouts/rejections/{portout_id}javascript
const response = await client.portouts.listRejectionCodes('329d6658-8f93-405d-862f-648776e8afd7');
console.log(response.data);Returns: (integer), (string), (boolean)
codedescriptionreason_required根据端口转出ID,列出该端口转出请求可用的拒绝码
GET /portouts/rejections/{portout_id}javascript
const response = await client.portouts.listRejectionCodes('329d6658-8f93-405d-862f-648776e8afd7');
console.log(response.data);返回字段:(整数),(字符串),(布尔值)
codedescriptionreason_requiredList port-out related reports
列出端口转出相关报告
List the reports generated about port-out operations.
GET /portouts/reportsjavascript
// Automatically fetches more pages as needed.
for await (const portoutReport of client.portouts.reports.list()) {
console.log(portoutReport.id);
}Returns: (date-time), (uuid), (uuid), (object), (string), (enum: export_portouts_csv), (enum: pending, completed), (date-time)
created_atdocument_ididparamsrecord_typereport_typestatusupdated_at列出端口转出操作生成的报告
GET /portouts/reportsjavascript
// 自动按需获取更多页面
for await (const portoutReport of client.portouts.reports.list()) {
console.log(portoutReport.id);
}返回字段:(日期时间),(uuid),(uuid),(对象),(字符串),(枚举值:export_portouts_csv),(枚举值:pending, completed),(日期时间)
created_atdocument_ididparamsrecord_typereport_typestatusupdated_atCreate a port-out related report
创建端口转出相关报告
Generate reports about port-out operations.
POST /portouts/reportsjavascript
const report = await client.portouts.reports.create({
params: { filters: {} },
report_type: 'export_portouts_csv',
});
console.log(report.data);Returns: (date-time), (uuid), (uuid), (object), (string), (enum: export_portouts_csv), (enum: pending, completed), (date-time)
created_atdocument_ididparamsrecord_typereport_typestatusupdated_at生成端口转出操作的报告
POST /portouts/reportsjavascript
const report = await client.portouts.reports.create({
params: { filters: {} },
report_type: 'export_portouts_csv',
});
console.log(report.data);返回字段:(日期时间),(uuid),(uuid),(对象),(字符串),(枚举值:export_portouts_csv),(枚举值:pending, completed),(日期时间)
created_atdocument_ididparamsrecord_typereport_typestatusupdated_atRetrieve a report
获取报告
Retrieve a specific report generated.
GET /portouts/reports/{id}javascript
const report = await client.portouts.reports.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(report.data);Returns: (date-time), (uuid), (uuid), (object), (string), (enum: export_portouts_csv), (enum: pending, completed), (date-time)
created_atdocument_ididparamsrecord_typereport_typestatusupdated_at获取指定的已生成报告
GET /portouts/reports/{id}javascript
const report = await client.portouts.reports.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(report.data);返回字段:(日期时间),(uuid),(uuid),(对象),(字符串),(枚举值:export_portouts_csv),(枚举值:pending, completed),(日期时间)
created_atdocument_ididparamsrecord_typereport_typestatusupdated_atGet a portout request
获取端口转出请求
Returns the portout request based on the ID provided
GET /portouts/{id}javascript
const portout = await client.portouts.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(portout.data);Returns: (boolean), (string), (string), (string), (string), (string), (string), (string), (boolean), (string), (string), (array[string]), (array[string]), (string), (string | null), (string), (integer), (string), (string), (string), (string), (enum: pending, authorized, ported, rejected, rejected-pending, canceled), (string), (string), (uuid), (uuid), (string)
already_portedauthorized_namecarrier_namecitycreated_atcurrent_carrierend_user_namefoc_datehost_messagingidinserted_atlsrphone_numbersponreasonrecord_typerejection_coderequested_foc_dateservice_addressspidstatestatussupport_keyupdated_atuser_idvendorzip根据提供的ID返回端口转出请求
GET /portouts/{id}javascript
const portout = await client.portouts.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(portout.data);返回字段:(布尔值),(字符串),(字符串),(字符串),(字符串),(字符串),(字符串),(字符串),(布尔值),(字符串),(字符串),(字符串数组),(字符串数组),(字符串),(字符串 | null),(字符串),(整数),(字符串),(字符串),(字符串),(字符串),(枚举值:pending, authorized, ported, rejected, rejected-pending, canceled),(字符串),(字符串),(uuid),(uuid),(字符串)
already_portedauthorized_namecarrier_namecitycreated_atcurrent_carrierend_user_namefoc_datehost_messagingidinserted_atlsrphone_numbersponreasonrecord_typerejection_coderequested_foc_dateservice_addressspidstatestatussupport_keyupdated_atuser_idvendorzipList all comments for a portout request
列出端口转出请求的所有评论
Returns a list of comments for a portout request.
GET /portouts/{id}/commentsjavascript
const comments = await client.portouts.comments.list('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(comments.data);Returns: (string), (string), (string), (string), (string), (string)
bodycreated_atidportout_idrecord_typeuser_id返回指定端口转出请求的评论列表
GET /portouts/{id}/commentsjavascript
const comments = await client.portouts.comments.list('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(comments.data);返回字段:(字符串),(字符串),(字符串),(字符串),(字符串),(字符串)
bodycreated_atidportout_idrecord_typeuser_idCreate a comment on a portout request
为端口转出请求添加评论
Creates a comment on a portout request.
POST /portouts/{id}/commentsOptional: (string)
bodyjavascript
const comment = await client.portouts.comments.create('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(comment.data);Returns: (string), (string), (string), (string), (string), (string)
bodycreated_atidportout_idrecord_typeuser_id为指定端口转出请求创建评论
POST /portouts/{id}/comments可选参数:(字符串)
bodyjavascript
const comment = await client.portouts.comments.create('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(comment.data);返回字段:(字符串),(字符串),(字符串),(字符串),(字符串),(字符串)
bodycreated_atidportout_idrecord_typeuser_idList supporting documents on a portout request
列出端口转出请求的支持文档
List every supporting documents for a portout request.
GET /portouts/{id}/supporting_documentsjavascript
const supportingDocuments = await client.portouts.supportingDocuments.list(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(supportingDocuments.data);Returns: (string), (uuid), (uuid), (uuid), (string), (enum: loa, invoice), (string)
created_atdocument_ididportout_idrecord_typetypeupdated_at列出指定端口转出请求的所有支持文档
GET /portouts/{id}/supporting_documentsjavascript
const supportingDocuments = await client.portouts.supportingDocuments.list(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(supportingDocuments.data);返回字段:(字符串),(uuid),(uuid),(uuid),(字符串),(枚举值:loa, invoice),(字符串)
created_atdocument_ididportout_idrecord_typetypeupdated_atCreate a list of supporting documents on a portout request
为端口转出请求添加支持文档
Creates a list of supporting documents on a portout request.
POST /portouts/{id}/supporting_documentsOptional: (array[object])
documentsjavascript
const supportingDocument = await client.portouts.supportingDocuments.create(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(supportingDocument.data);Returns: (string), (uuid), (uuid), (uuid), (string), (enum: loa, invoice), (string)
created_atdocument_ididportout_idrecord_typetypeupdated_at为指定端口转出请求创建支持文档列表
POST /portouts/{id}/supporting_documents可选参数:(对象数组)
documentsjavascript
const supportingDocument = await client.portouts.supportingDocuments.create(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(supportingDocument.data);返回字段:(字符串),(uuid),(uuid),(uuid),(字符串),(枚举值:loa, invoice),(字符串)
created_atdocument_ididportout_idrecord_typetypeupdated_atUpdate Status
更新状态
Authorize or reject portout request
PATCH /portouts/{id}/{status}reasonOptional: (boolean)
host_messagingjavascript
const response = await client.portouts.updateStatus('authorized', {
id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
reason: 'I do not recognize this transaction',
});
console.log(response.data);Returns: (boolean), (string), (string), (string), (string), (string), (string), (string), (boolean), (string), (string), (array[string]), (array[string]), (string), (string | null), (string), (integer), (string), (string), (string), (string), (enum: pending, authorized, ported, rejected, rejected-pending, canceled), (string), (string), (uuid), (uuid), (string)
already_portedauthorized_namecarrier_namecitycreated_atcurrent_carrierend_user_namefoc_datehost_messagingidinserted_atlsrphone_numbersponreasonrecord_typerejection_coderequested_foc_dateservice_addressspidstatestatussupport_keyupdated_atuser_idvendorzip批准或拒绝端口转出请求
PATCH /portouts/{id}/{status}reason可选参数:(布尔值)
host_messagingjavascript
const response = await client.portouts.updateStatus('authorized', {
id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
reason: '我不认可此交易',
});
console.log(response.data);返回字段:(布尔值),(字符串),(字符串),(字符串),(字符串),(字符串),(字符串),(字符串),(布尔值),(字符串),(字符串),(字符串数组),(字符串数组),(字符串),(字符串 | null),(字符串),(整数),(字符串),(字符串),(字符串),(字符串),(枚举值:pending, authorized, ported, rejected, rejected-pending, canceled),(字符串),(字符串),(uuid),(uuid),(字符串)
already_portedauthorized_namecarrier_namecitycreated_atcurrent_carrierend_user_namefoc_datehost_messagingidinserted_atlsrphone_numbersponreasonrecord_typerejection_coderequested_foc_dateservice_addressspidstatestatussupport_keyupdated_atuser_idvendorzip