AgentSkillsCN

telnyx-porting-in-javascript

将电话号码迁移至 Telnyx。检查号码可携性、创建迁移订单、上传 LOA 文件并跟踪迁移状态。本技能提供 JavaScript SDK 示例。

SKILL.md
--- frontmatter
name: telnyx-porting-in-javascript
description: >-
  Port phone numbers into Telnyx. Check portability, create port orders, upload
  LOA documents, and track porting status. This skill provides JavaScript SDK
  examples.
metadata:
  author: telnyx
  product: porting-in
  language: javascript

Telnyx Porting In - JavaScript

Installation

bash
npm install telnyx

Setup

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 client is already initialized as shown above.

List all porting events

Returns a list of all porting events.

GET /porting/events

javascript
// Automatically fetches more pages as needed.
for await (const eventListResponse of client.porting.events.list()) {
  console.log(eventListResponse);
}

Show a porting event

Show a specific porting event.

GET /porting/events/{id}

javascript
const event = await client.porting.events.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');

console.log(event.data);

Republish a porting event

Republish a specific porting event.

POST /porting/events/{id}/republish

javascript
await client.porting.events.republish('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');

Preview the LOA configuration parameters

Preview the LOA template that would be generated without need to create LOA configuration.

POST /porting/loa_configuration_preview

javascript
const response = await client.porting.loaConfigurations.preview0({
  address: {
    city: 'Austin',
    country_code: 'US',
    state: 'TX',
    street_address: '600 Congress Avenue',
    zip_code: '78701',
  },
  company_name: 'Telnyx',
  contact: { email: 'testing@telnyx.com', phone_number: '+12003270001' },
  logo: { document_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
  name: 'My LOA Configuration',
});

console.log(response);

const content = await response.blob();
console.log(content);

List LOA configurations

List the LOA configurations.

GET /porting/loa_configurations

javascript
// Automatically fetches more pages as needed.
for await (const portingLoaConfiguration of client.porting.loaConfigurations.list()) {
  console.log(portingLoaConfiguration.id);
}

Create a LOA configuration

Create a LOA configuration.

POST /porting/loa_configurations

javascript
const loaConfiguration = await client.porting.loaConfigurations.create({
  address: {
    city: 'Austin',
    country_code: 'US',
    state: 'TX',
    street_address: '600 Congress Avenue',
    zip_code: '78701',
  },
  company_name: 'Telnyx',
  contact: { email: 'testing@telnyx.com', phone_number: '+12003270001' },
  logo: { document_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
  name: 'My LOA Configuration',
});

console.log(loaConfiguration.data);

Retrieve a LOA configuration

Retrieve a specific LOA configuration.

GET /porting/loa_configurations/{id}

javascript
const loaConfiguration = await client.porting.loaConfigurations.retrieve(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);

console.log(loaConfiguration.data);

Update a LOA configuration

Update a specific LOA configuration.

PATCH /porting/loa_configurations/{id}

javascript
const loaConfiguration = await client.porting.loaConfigurations.update(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
  {
    address: {
      city: 'Austin',
      country_code: 'US',
      state: 'TX',
      street_address: '600 Congress Avenue',
      zip_code: '78701',
    },
    company_name: 'Telnyx',
    contact: { email: 'testing@telnyx.com', phone_number: '+12003270001' },
    logo: { document_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
    name: 'My LOA Configuration',
  },
);

console.log(loaConfiguration.data);

Delete a LOA configuration

Delete a specific LOA configuration.

DELETE /porting/loa_configurations/{id}

javascript
await client.porting.loaConfigurations.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');

Preview a LOA configuration

Preview a specific LOA configuration.

GET /porting/loa_configurations/{id}/preview

javascript
const response = await client.porting.loaConfigurations.preview1(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);

console.log(response);

const content = await response.blob();
console.log(content);

List all porting orders

Returns a list of your porting order.

GET /porting_orders

javascript
// Automatically fetches more pages as needed.
for await (const portingOrder of client.portingOrders.list()) {
  console.log(portingOrder.id);
}

Create a porting order

Creates a new porting order object.

POST /porting_orders — Required: phone_numbers

javascript
const portingOrder = await client.portingOrders.create({
  phone_numbers: ['+13035550000', '+13035550001', '+13035550002'],
});

console.log(portingOrder.data);

Retrieve a porting order

Retrieves the details of an existing porting order.

GET /porting_orders/{id}

javascript
const portingOrder = await client.portingOrders.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');

console.log(portingOrder.data);

Edit a porting order

Edits the details of an existing porting order.

PATCH /porting_orders/{id}

javascript
const portingOrder = await client.portingOrders.update('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');

console.log(portingOrder.data);

Delete a porting order

Deletes an existing porting order.

DELETE /porting_orders/{id}

javascript
await client.portingOrders.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');

Activate every number in a porting order asynchronously.

Activate each number in a porting order asynchronously.

POST /porting_orders/{id}/actions/activate

javascript
const response = await client.portingOrders.actions.activate(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);

console.log(response.data);

Cancel a porting order

POST /porting_orders/{id}/actions/cancel

javascript
const response = await client.portingOrders.actions.cancel('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');

console.log(response.data);

Submit a porting order.

Confirm and submit your porting order.

POST /porting_orders/{id}/actions/confirm

javascript
const response = await client.portingOrders.actions.confirm('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');

console.log(response.data);

Share a porting order

Creates a sharing token for a porting order.

POST /porting_orders/{id}/actions/share

javascript
const response = await client.portingOrders.actions.share('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');

console.log(response.data);

List all porting activation jobs

Returns a list of your porting activation jobs.

GET /porting_orders/{id}/activation_jobs

javascript
// Automatically fetches more pages as needed.
for await (const portingOrdersActivationJob of client.portingOrders.activationJobs.list(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
  console.log(portingOrdersActivationJob.id);
}

Retrieve a porting activation job

Returns a porting activation job.

GET /porting_orders/{id}/activation_jobs/{activationJobId}

javascript
const activationJob = await client.portingOrders.activationJobs.retrieve(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
  { id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);

console.log(activationJob.data);

Update a porting activation job

Updates the activation time of a porting activation job.

PATCH /porting_orders/{id}/activation_jobs/{activationJobId}

javascript
const activationJob = await client.portingOrders.activationJobs.update(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
  { id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);

console.log(activationJob.data);

List additional documents

Returns a list of additional documents for a porting order.

GET /porting_orders/{id}/additional_documents

javascript
// Automatically fetches more pages as needed.
for await (const additionalDocumentListResponse of client.portingOrders.additionalDocuments.list(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
  console.log(additionalDocumentListResponse.id);
}

Create a list of additional documents

Creates a list of additional documents for a porting order.

POST /porting_orders/{id}/additional_documents

javascript
const additionalDocument = await client.portingOrders.additionalDocuments.create(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);

console.log(additionalDocument.data);

Delete an additional document

Deletes an additional document for a porting order.

DELETE /porting_orders/{id}/additional_documents/{additional_document_id}

javascript
await client.portingOrders.additionalDocuments.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
  id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
});

List allowed FOC dates

Returns a list of allowed FOC dates for a porting order.

GET /porting_orders/{id}/allowed_foc_windows

javascript
const response = await client.portingOrders.retrieveAllowedFocWindows(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);

console.log(response.data);

List all comments of a porting order

Returns a list of all comments of a porting order.

GET /porting_orders/{id}/comments

javascript
// Automatically fetches more pages as needed.
for await (const commentListResponse of client.portingOrders.comments.list(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
  console.log(commentListResponse.id);
}

Create a comment for a porting order

Creates a new comment for a porting order.

POST /porting_orders/{id}/comments

javascript
const comment = await client.portingOrders.comments.create('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');

console.log(comment.data);

Download a porting order loa template

GET /porting_orders/{id}/loa_template

javascript
const response = await client.portingOrders.retrieveLoaTemplate(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);

console.log(response);

const content = await response.blob();
console.log(content);

List porting order requirements

Returns a list of all requirements based on country/number type for this porting order.

GET /porting_orders/{id}/requirements

javascript
// Automatically fetches more pages as needed.
for await (const portingOrderRetrieveRequirementsResponse of client.portingOrders.retrieveRequirements(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
  console.log(portingOrderRetrieveRequirementsResponse.field_type);
}

Retrieve the associated V1 sub_request_id and port_request_id

GET /porting_orders/{id}/sub_request

javascript
const response = await client.portingOrders.retrieveSubRequest(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);

console.log(response.data);

List verification codes

Returns a list of verification codes for a porting order.

GET /porting_orders/{id}/verification_codes

javascript
// Automatically fetches more pages as needed.
for await (const verificationCodeListResponse of client.portingOrders.verificationCodes.list(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
  console.log(verificationCodeListResponse.id);
}

Send the verification codes

Send the verification code for all porting phone numbers.

POST /porting_orders/{id}/verification_codes/send

javascript
await client.portingOrders.verificationCodes.send('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');

Verify the verification code for a list of phone numbers

Verifies the verification code for a list of phone numbers.

POST /porting_orders/{id}/verification_codes/verify

javascript
const response = await client.portingOrders.verificationCodes.verify(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);

console.log(response.data);

List action requirements for a porting order

Returns a list of action requirements for a specific porting order.

GET /porting_orders/{porting_order_id}/action_requirements

javascript
// Automatically fetches more pages as needed.
for await (const actionRequirementListResponse of client.portingOrders.actionRequirements.list(
  'porting_order_id',
)) {
  console.log(actionRequirementListResponse.id);
}

Initiate an action requirement

Initiates a specific action requirement for a porting order.

POST /porting_orders/{porting_order_id}/action_requirements/{id}/initiate

javascript
const response = await client.portingOrders.actionRequirements.initiate('id', {
  porting_order_id: 'porting_order_id',
  params: { first_name: 'John', last_name: 'Doe' },
});

console.log(response.data);

List all associated phone numbers

Returns a list of all associated phone numbers for a porting order.

GET /porting_orders/{porting_order_id}/associated_phone_numbers

javascript
// Automatically fetches more pages as needed.
for await (const portingAssociatedPhoneNumber of client.portingOrders.associatedPhoneNumbers.list(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
  console.log(portingAssociatedPhoneNumber.id);
}

Create an associated phone number

Creates a new associated phone number for a porting order.

POST /porting_orders/{porting_order_id}/associated_phone_numbers

javascript
const associatedPhoneNumber = await client.portingOrders.associatedPhoneNumbers.create(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
  {
    action: 'keep',
    phone_number_range: {},
  },
);

console.log(associatedPhoneNumber.data);

Delete an associated phone number

Deletes an associated phone number from a porting order.

DELETE /porting_orders/{porting_order_id}/associated_phone_numbers/{id}

javascript
const associatedPhoneNumber = await client.portingOrders.associatedPhoneNumbers.delete(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
  { porting_order_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);

console.log(associatedPhoneNumber.data);

List all phone number blocks

Returns a list of all phone number blocks of a porting order.

GET /porting_orders/{porting_order_id}/phone_number_blocks

javascript
// Automatically fetches more pages as needed.
for await (const portingPhoneNumberBlock of client.portingOrders.phoneNumberBlocks.list(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
  console.log(portingPhoneNumberBlock.id);
}

Create a phone number block

Creates a new phone number block.

POST /porting_orders/{porting_order_id}/phone_number_blocks

javascript
const phoneNumberBlock = await client.portingOrders.phoneNumberBlocks.create(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
  {
    activation_ranges: [{ end_at: '+4930244999910', start_at: '+4930244999901' }],
    phone_number_range: { end_at: '+4930244999910', start_at: '+4930244999901' },
  },
);

console.log(phoneNumberBlock.data);

Delete a phone number block

Deletes a phone number block.

DELETE /porting_orders/{porting_order_id}/phone_number_blocks/{id}

javascript
const phoneNumberBlock = await client.portingOrders.phoneNumberBlocks.delete(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
  { porting_order_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);

console.log(phoneNumberBlock.data);

List all phone number extensions

Returns a list of all phone number extensions of a porting order.

GET /porting_orders/{porting_order_id}/phone_number_extensions

javascript
// Automatically fetches more pages as needed.
for await (const portingPhoneNumberExtension of client.portingOrders.phoneNumberExtensions.list(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
  console.log(portingPhoneNumberExtension.id);
}

Create a phone number extension

Creates a new phone number extension.

POST /porting_orders/{porting_order_id}/phone_number_extensions

javascript
const phoneNumberExtension = await client.portingOrders.phoneNumberExtensions.create(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
  {
    activation_ranges: [{ end_at: 10, start_at: 1 }],
    extension_range: { end_at: 10, start_at: 1 },
    porting_phone_number_id: 'f24151b6-3389-41d3-8747-7dd8c681e5e2',
  },
);

console.log(phoneNumberExtension.data);

Delete a phone number extension

Deletes a phone number extension.

DELETE /porting_orders/{porting_order_id}/phone_number_extensions/{id}

javascript
const phoneNumberExtension = await client.portingOrders.phoneNumberExtensions.delete(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
  { porting_order_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);

console.log(phoneNumberExtension.data);

List all exception types

Returns a list of all possible exception types for a porting order.

GET /porting_orders/exception_types

javascript
const response = await client.portingOrders.retrieveExceptionTypes();

console.log(response.data);

List all phone number configurations

Returns a list of phone number configurations paginated.

GET /porting_orders/phone_number_configurations

javascript
// Automatically fetches more pages as needed.
for await (const phoneNumberConfigurationListResponse of client.portingOrders.phoneNumberConfigurations.list()) {
  console.log(phoneNumberConfigurationListResponse.id);
}

Create a list of phone number configurations

Creates a list of phone number configurations.

POST /porting_orders/phone_number_configurations

javascript
const phoneNumberConfiguration = await client.portingOrders.phoneNumberConfigurations.create();

console.log(phoneNumberConfiguration.data);

List all porting phone numbers

Returns a list of your porting phone numbers.

GET /porting/phone_numbers

javascript
// Automatically fetches more pages as needed.
for await (const portingPhoneNumberListResponse of client.portingPhoneNumbers.list()) {
  console.log(portingPhoneNumberListResponse.porting_order_id);
}

List porting related reports

List the reports generated about porting operations.

GET /porting/reports

javascript
// Automatically fetches more pages as needed.
for await (const portingReport of client.porting.reports.list()) {
  console.log(portingReport.id);
}

Create a porting related report

Generate reports about porting operations.

POST /porting/reports

javascript
const report = await client.porting.reports.create({
  params: { filters: {} },
  report_type: 'export_porting_orders_csv',
});

console.log(report.data);

Retrieve a report

Retrieve a specific report generated.

GET /porting/reports/{id}

javascript
const report = await client.porting.reports.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');

console.log(report.data);

List available carriers in the UK

List available carriers in the UK.

GET /porting/uk_carriers

javascript
const response = await client.porting.listUkCarriers();

console.log(response.data);

Run a portability check

Runs a portability check, returning the results immediately.

POST /portability_checks

javascript
const response = await client.portabilityChecks.run();

console.log(response.data);