telnyx-numbers-go
npx skills add https://github.com/team-telnyx/telnyx-ext-agent-skills --skill telnyx-numbers-go
Agent 安装分布
Skill 文档
Telnyx Numbers – Go
Installation
go get github.com/team-telnyx/telnyx-go
Setup
import (
"context"
"fmt"
"os"
"github.com/team-telnyx/telnyx-go"
"github.com/team-telnyx/telnyx-go/option"
)
client := telnyx.NewClient(
option.WithAPIKey(os.Getenv("TELNYX_API_KEY")),
)
All examples below assume client is already initialized as shown above.
Get country coverage
GET /country_coverage
countryCoverage, err := client.CountryCoverage.Get(context.TODO())
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", countryCoverage.Data)
Get coverage for a specific country
GET /country_coverage/countries/{country_code}
response, err := client.CountryCoverage.GetCountry(context.TODO(), "US")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
Create an inventory coverage request
Creates an inventory coverage request.
GET /inventory_coverage
inventoryCoverages, err := client.InventoryCoverage.List(context.TODO(), telnyx.InventoryCoverageListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", inventoryCoverages.Data)
List number reservations
Gets a paginated list of phone number reservations.
GET /number_reservations
page, err := client.NumberReservations.List(context.TODO(), telnyx.NumberReservationListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", page)
Create a number reservation
Creates a Phone Number Reservation for multiple numbers.
POST /number_reservations
Optional: created_at (date-time), customer_reference (string), id (uuid), phone_numbers (array[object]), record_type (string), status (enum), updated_at (date-time)
numberReservation, err := client.NumberReservations.New(context.TODO(), telnyx.NumberReservationNewParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", numberReservation.Data)
Retrieve a number reservation
Gets a single phone number reservation.
GET /number_reservations/{number_reservation_id}
numberReservation, err := client.NumberReservations.Get(context.TODO(), "number_reservation_id")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", numberReservation.Data)
Extend a number reservation
Extends reservation expiry time on all phone numbers.
POST /number_reservations/{number_reservation_id}/actions/extend
response, err := client.NumberReservations.Actions.Extend(context.TODO(), "number_reservation_id")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
List number orders
Get a paginated list of number orders.
GET /number_orders
page, err := client.NumberOrders.List(context.TODO(), telnyx.NumberOrderListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", page)
Create a number order
Creates a phone number order.
POST /number_orders
Optional: billing_group_id (string), connection_id (string), customer_reference (string), messaging_profile_id (string), phone_numbers (array[object])
numberOrder, err := client.NumberOrders.New(context.TODO(), telnyx.NumberOrderNewParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", numberOrder.Data)
Retrieve a number order
Get an existing phone number order.
GET /number_orders/{number_order_id}
numberOrder, err := client.NumberOrders.Get(context.TODO(), "number_order_id")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", numberOrder.Data)
Update a number order
Updates a phone number order.
PATCH /number_orders/{number_order_id}
Optional: customer_reference (string), regulatory_requirements (array[object])
numberOrder, err := client.NumberOrders.Update(
context.TODO(),
"number_order_id",
telnyx.NumberOrderUpdateParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", numberOrder.Data)
List number block orders
Get a paginated list of number block orders.
GET /number_block_orders
page, err := client.NumberBlockOrders.List(context.TODO(), telnyx.NumberBlockOrderListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", page)
Create a number block order
Creates a phone number block order.
POST /number_block_orders â Required: starting_number, range
Optional: connection_id (string), created_at (date-time), customer_reference (string), errors (string), id (uuid), messaging_profile_id (string), phone_numbers_count (integer), record_type (string), requirements_met (boolean), status (enum), updated_at (date-time)
numberBlockOrder, err := client.NumberBlockOrders.New(context.TODO(), telnyx.NumberBlockOrderNewParams{
Range: 10,
StartingNumber: "+19705555000",
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", numberBlockOrder.Data)
Retrieve a number block order
Get an existing phone number block order.
GET /number_block_orders/{number_block_order_id}
numberBlockOrder, err := client.NumberBlockOrders.Get(context.TODO(), "number_block_order_id")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", numberBlockOrder.Data)
Retrieve a list of phone numbers associated to orders
Get a list of phone numbers associated to orders.
GET /number_order_phone_numbers
numberOrderPhoneNumbers, err := client.NumberOrderPhoneNumbers.List(context.TODO(), telnyx.NumberOrderPhoneNumberListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", numberOrderPhoneNumbers.Data)
Update requirement group for a phone number order
POST /number_order_phone_numbers/{id}/requirement_group â Required: requirement_group_id
response, err := client.NumberOrderPhoneNumbers.UpdateRequirementGroup(
context.TODO(),
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
telnyx.NumberOrderPhoneNumberUpdateRequirementGroupParams{
RequirementGroupID: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
Retrieve a single phone number within a number order.
Get an existing phone number in number order.
GET /number_order_phone_numbers/{number_order_phone_number_id}
numberOrderPhoneNumber, err := client.NumberOrderPhoneNumbers.Get(context.TODO(), "number_order_phone_number_id")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", numberOrderPhoneNumber.Data)
Update requirements for a single phone number within a number order.
Updates requirements for a single phone number within a number order.
PATCH /number_order_phone_numbers/{number_order_phone_number_id}
Optional: regulatory_requirements (array[object])
response, err := client.NumberOrderPhoneNumbers.UpdateRequirements(
context.TODO(),
"number_order_phone_number_id",
telnyx.NumberOrderPhoneNumberUpdateRequirementsParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
List sub number orders
Get a paginated list of sub number orders.
GET /sub_number_orders
subNumberOrders, err := client.SubNumberOrders.List(context.TODO(), telnyx.SubNumberOrderListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", subNumberOrders.Data)
Update requirement group for a sub number order
POST /sub_number_orders/{id}/requirement_group â Required: requirement_group_id
response, err := client.SubNumberOrders.UpdateRequirementGroup(
context.TODO(),
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
telnyx.SubNumberOrderUpdateRequirementGroupParams{
RequirementGroupID: "a4b201f9-8646-4e54-a7d2-b2e403eeaf8c",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
Retrieve a sub number order
Get an existing sub number order.
GET /sub_number_orders/{sub_number_order_id}
subNumberOrder, err := client.SubNumberOrders.Get(
context.TODO(),
"sub_number_order_id",
telnyx.SubNumberOrderGetParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", subNumberOrder.Data)
Update a sub number order’s requirements
Updates a sub number order.
PATCH /sub_number_orders/{sub_number_order_id}
Optional: regulatory_requirements (array[object])
subNumberOrder, err := client.SubNumberOrders.Update(
context.TODO(),
"sub_number_order_id",
telnyx.SubNumberOrderUpdateParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", subNumberOrder.Data)
Cancel a sub number order
Allows you to cancel a sub number order in ‘pending’ status.
PATCH /sub_number_orders/{sub_number_order_id}/cancel
response, err := client.SubNumberOrders.Cancel(context.TODO(), "sub_number_order_id")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
Create a sub number orders report
Create a CSV report for sub number orders.
POST /sub_number_orders/report
Optional: country_code (string), created_at_gt (date-time), created_at_lt (date-time), customer_reference (string), order_request_id (uuid), status (enum)
subNumberOrdersReport, err := client.SubNumberOrdersReport.New(context.TODO(), telnyx.SubNumberOrdersReportNewParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", subNumberOrdersReport.Data)
Retrieve a sub number orders report
Get the status and details of a sub number orders report.
GET /sub_number_orders/report/{report_id}
subNumberOrdersReport, err := client.SubNumberOrdersReport.Get(context.TODO(), "12ade33a-21c0-473b-b055-b3c836e1c293")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", subNumberOrdersReport.Data)
Download a sub number orders report
Download the CSV file for a completed sub number orders report.
GET /sub_number_orders/report/{report_id}/download
response, err := client.SubNumberOrdersReport.Download(context.TODO(), "12ade33a-21c0-473b-b055-b3c836e1c293")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response)
List Advanced Orders
GET /advanced_orders
advancedOrders, err := client.AdvancedOrders.List(context.TODO())
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", advancedOrders.Data)
Create Advanced Order
POST /advanced_orders
Optional: area_code (string), comments (string), country_code (string), customer_reference (string), features (array[object]), phone_number_type (enum), quantity (integer), requirement_group_id (uuid)
advancedOrder, err := client.AdvancedOrders.New(context.TODO(), telnyx.AdvancedOrderNewParams{
AdvancedOrder: telnyx.AdvancedOrderParam{},
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", advancedOrder.ID)
Update Advanced Order
PATCH /advanced_orders/{advanced-order-id}/requirement_group
Optional: area_code (string), comments (string), country_code (string), customer_reference (string), features (array[object]), phone_number_type (enum), quantity (integer), requirement_group_id (uuid)
response, err := client.AdvancedOrders.UpdateRequirementGroup(
context.TODO(),
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
telnyx.AdvancedOrderUpdateRequirementGroupParams{
AdvancedOrder: telnyx.AdvancedOrderParam{},
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.ID)
Get Advanced Order
GET /advanced_orders/{order_id}
advancedOrder, err := client.AdvancedOrders.Get(context.TODO(), "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", advancedOrder.ID)
List inexplicit number orders
Get a paginated list of inexplicit number orders.
GET /inexplicit_number_orders
page, err := client.InexplicitNumberOrders.List(context.TODO(), telnyx.InexplicitNumberOrderListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", page)
Create an inexplicit number order
Create an inexplicit number order to programmatically purchase phone numbers without specifying exact numbers.
POST /inexplicit_number_orders â Required: ordering_groups
Optional: billing_group_id (string), connection_id (string), customer_reference (string), messaging_profile_id (string)
inexplicitNumberOrder, err := client.InexplicitNumberOrders.New(context.TODO(), telnyx.InexplicitNumberOrderNewParams{
OrderingGroups: []telnyx.InexplicitNumberOrderNewParamsOrderingGroup{{
CountRequested: "count_requested",
CountryISO: "US",
PhoneNumberType: "phone_number_type",
}},
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", inexplicitNumberOrder.Data)
Retrieve an inexplicit number order
Get an existing inexplicit number order by ID.
GET /inexplicit_number_orders/{id}
inexplicitNumberOrder, err := client.InexplicitNumberOrders.Get(context.TODO(), "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", inexplicitNumberOrder.Data)
Retrieve all comments
GET /comments
comments, err := client.Comments.List(context.TODO(), telnyx.CommentListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", comments.Data)
Create a comment
POST /comments
Optional: body (string), comment_record_id (uuid), comment_record_type (enum), commenter (string), commenter_type (enum), created_at (date-time), id (uuid), read_at (date-time), updated_at (date-time)
comment, err := client.Comments.New(context.TODO(), telnyx.CommentNewParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", comment.Data)
Retrieve a comment
GET /comments/{id}
comment, err := client.Comments.Get(context.TODO(), "id")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", comment.Data)
Mark a comment as read
PATCH /comments/{id}/read
response, err := client.Comments.MarkAsRead(context.TODO(), "id")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
List available phone number blocks
GET /available_phone_number_blocks
availablePhoneNumberBlocks, err := client.AvailablePhoneNumberBlocks.List(context.TODO(), telnyx.AvailablePhoneNumberBlockListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", availablePhoneNumberBlocks.Data)
List available phone numbers
GET /available_phone_numbers
availablePhoneNumbers, err := client.AvailablePhoneNumbers.List(context.TODO(), telnyx.AvailablePhoneNumberListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", availablePhoneNumbers.Data)
Retrieve the features for a list of numbers
POST /numbers_features â Required: phone_numbers
numbersFeature, err := client.NumbersFeatures.New(context.TODO(), telnyx.NumbersFeatureNewParams{
PhoneNumbers: []string{"string"},
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", numbersFeature.Data)
Webhooks
The following webhook events are sent to your configured webhook URL.
All webhooks include telnyx-timestamp and telnyx-signature-ed25519 headers for verification (Standard Webhooks compatible).
| Event | Description |
|---|---|
numberOrderStatusUpdate |
Number Order Status Update |
Webhook payload fields
numberOrderStatusUpdate
| Field | Type | Description |
|---|---|---|
data.event_type |
string | The type of event being sent |
data.id |
uuid | Unique identifier for the event |
data.occurred_at |
date-time | ISO 8601 timestamp of when the event occurred |
data.payload.id |
uuid | |
data.payload.record_type |
string | |
data.payload.phone_numbers_count |
integer | The count of phone numbers in the number order. |
data.payload.connection_id |
string | Identifies the connection associated with this phone number. |
data.payload.messaging_profile_id |
string | Identifies the messaging profile associated with the phone number. |
data.payload.billing_group_id |
string | Identifies the messaging profile associated with the phone number. |
data.payload.phone_numbers |
array[object] | |
data.payload.sub_number_orders_ids |
array[string] | |
data.payload.status |
enum | The status of the order. |
data.payload.customer_reference |
string | A customer reference string for customer look ups. |
data.payload.created_at |
date-time | An ISO 8901 datetime string denoting when the number order was created. |
data.payload.updated_at |
date-time | An ISO 8901 datetime string for when the number order was updated. |
data.payload.requirements_met |
boolean | True if all requirements are met for every phone number, false otherwise. |
data.record_type |
string | Type of record |
meta.attempt |
integer | Webhook delivery attempt number |
meta.delivered_to |
uri | URL where the webhook was delivered |