Back to skills
SKILL.md
Telnyx Porting Out Ruby
ASecurityManage port-out requests when numbers are being ported away from Telnyx. List, view, and update port-out status. This skill provides Ruby SDK examples.
- 220 stars
- 0 votes
- 0 copies
- 1 view
- Added February 7, 2026
Works with
Security analysis
100/100npx -y skills add team-telnyx/telnyx-ext-agent-skills --skill telnyx-porting-out-ruby --agent claude-codeAre you the author of Telnyx Porting Out Ruby?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/team-telnyx-telnyx-porting-out-ruby)---
name: telnyx-porting-out-ruby
description: >-
Manage port-out requests when numbers are being ported away from Telnyx. List,
view, and update port-out status. This skill provides Ruby SDK examples.
metadata:
author: telnyx
product: porting-out
language: ruby
generated_by: telnyx-openapi-pipeline
---
<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->
# Telnyx Porting Out - Ruby
## Installation
```bash
gem install telnyx
```
## Setup
```ruby
require "telnyx"
client = Telnyx::Client.new(
api_key: ENV["TELNYX_API_KEY"], # This is the default and can be omitted
)
```
All examples below assume `client` is already initialized as shown above.
## Error 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:
```ruby
begin
result = client.messages.send_(to: "+13125550001", from: "+13125550002", text: "Hello")
rescue Telnyx::Errors::APIConnectionError
puts "Network error — check connectivity and retry"
rescue Telnyx::Errors::RateLimitError
# 429: rate limited — wait and retry with exponential backoff
sleep(1) # Check Retry-After header for actual delay
rescue Telnyx::Errors::APIStatusError => e
puts "API error #{e.status}: #{e.message}"
if e.status == 422
puts "Validation error — check required fields and formats"
end
end
```
Common error codes: `401` invalid API key, `403` insufficient permissions,
`404` resource not found, `422` validation error (check field formats),
`429` rate limited (retry with exponential backoff).
## Important Notes
- **Pagination:** Use `.auto_paging_each` for automatic iteration: `page.auto_paging_each { |item| puts item.id }`.
## List portout requests
Returns the portout requests according to filters
`GET /portouts`
```ruby
page = client.portouts.list
puts(page)
```
Returns: `already_ported` (boolean), `authorized_name` (string), `carrier_name` (string), `city` (string), `created_at` (string), `current_carrier` (string), `end_user_name` (string), `foc_date` (string), `host_messaging` (boolean), `id` (string), `inserted_at` (string), `lsr` (array[string]), `phone_numbers` (array[string]), `pon` (string), `reason` (string | null), `record_type` (string), `rejection_code` (integer), `requested_foc_date` (string), `service_address` (string), `spid` (string), `state` (string), `status` (enum: pending, authorized, ported, rejected, rejected-pending, canceled), `support_key` (string), `updated_at` (string), `user_id` (uuid), `vendor` (uuid), `zip` (string)
## List all port-out events
Returns a list of all port-out events.
`GET /portouts/events`
```ruby
page = client.portouts.events.list
puts(page)
```
Returns: `available_notification_methods` (array[string]), `created_at` (date-time), `event_type` (enum: portout.status_changed, portout.foc_date_changed, portout.new_comment), `id` (uuid), `payload` (object), `payload_status` (enum: created, completed), `portout_id` (uuid), `record_type` (string), `updated_at` (date-time)
## Show a port-out event
Show a specific port-out event.
`GET /portouts/events/{id}`
```ruby
event = client.portouts.events.retrieve("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
puts(event)
```
Returns: `available_notification_methods` (array[string]), `created_at` (date-time), `event_type` (enum: portout.status_changed, portout.foc_date_changed, portout.new_comment), `id` (uuid), `payload` (object), `payload_status` (enum: created, completed), `portout_id` (uuid), `record_type` (string), `updated_at` (date-time)
## Republish a port-out event
Republish a specific port-out event.
`POST /portouts/events/{id}/republish`
```ruby
result = client.portouts.events.republish("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
puts(result)
```
## 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}`
```ruby
response = client.portouts.list_rejection_codes("329d6658-8f93-405d-862f-648776e8afd7")
puts(response)
```
Returns: `code` (integer), `description` (string), `reason_required` (boolean)
## List port-out related reports
List the reports generated about port-out operations.
`GET /portouts/reports`
```ruby
page = client.portouts.reports.list
puts(page)
```
Returns: `created_at` (date-time), `document_id` (uuid), `id` (uuid), `params` (object), `record_type` (string), `report_type` (enum: export_portouts_csv), `status` (enum: pending, completed), `updated_at` (date-time)
## Create a port-out related report
Generate reports about port-out operations.
`POST /portouts/reports`
```ruby
report = client.portouts.reports.create(params: {filters: {}}, report_type: :export_portouts_csv)
puts(report)
```
Returns: `created_at` (date-time), `document_id` (uuid), `id` (uuid), `params` (object), `record_type` (string), `report_type` (enum: export_portouts_csv), `status` (enum: pending, completed), `updated_at` (date-time)
## Retrieve a report
Retrieve a specific report generated.
`GET /portouts/reports/{id}`
```ruby
report = client.portouts.reports.retrieve("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
puts(report)
```
Returns: `created_at` (date-time), `document_id` (uuid), `id` (uuid), `params` (object), `record_type` (string), `report_type` (enum: export_portouts_csv), `status` (enum: pending, completed), `updated_at` (date-time)
## Get a portout request
Returns the portout request based on the ID provided
`GET /portouts/{id}`
```ruby
portout = client.portouts.retrieve("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
puts(portout)
```
Returns: `already_ported` (boolean), `authorized_name` (string), `carrier_name` (string), `city` (string), `created_at` (string), `current_carrier` (string), `end_user_name` (string), `foc_date` (string), `host_messaging` (boolean), `id` (string), `inserted_at` (string), `lsr` (array[string]), `phone_numbers` (array[string]), `pon` (string), `reason` (string | null), `record_type` (string), `rejection_code` (integer), `requested_foc_date` (string), `service_address` (string), `spid` (string), `state` (string), `status` (enum: pending, authorized, ported, rejected, rejected-pending, canceled), `support_key` (string), `updated_at` (string), `user_id` (uuid), `vendor` (uuid), `zip` (string)
## List all comments for a portout request
Returns a list of comments for a portout request.
`GET /portouts/{id}/comments`
```ruby
comments = client.portouts.comments.list("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
puts(comments)
```
Returns: `body` (string), `created_at` (string), `id` (string), `portout_id` (string), `record_type` (string), `user_id` (string)
## Create a comment on a portout request
Creates a comment on a portout request.
`POST /portouts/{id}/comments`
Optional: `body` (string)
```ruby
comment = client.portouts.comments.create("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
puts(comment)
```
Returns: `body` (string), `created_at` (string), `id` (string), `portout_id` (string), `record_type` (string), `user_id` (string)
## List supporting documents on a portout request
List every supporting documents for a portout request.
`GET /portouts/{id}/supporting_documents`
```ruby
supporting_documents = client.portouts.supporting_documents.list("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
puts(supporting_documents)
```
Returns: `created_at` (string), `document_id` (uuid), `id` (uuid), `portout_id` (uuid), `record_type` (string), `type` (enum: loa, invoice), `updated_at` (string)
## Create a list of supporting documents on a portout request
Creates a list of supporting documents on a portout request.
`POST /portouts/{id}/supporting_documents`
Optional: `documents` (array[object])
```ruby
supporting_document = client.portouts.supporting_documents.create("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
puts(supporting_document)
```
Returns: `created_at` (string), `document_id` (uuid), `id` (uuid), `portout_id` (uuid), `record_type` (string), `type` (enum: loa, invoice), `updated_at` (string)
## Update Status
Authorize or reject portout request
`PATCH /portouts/{id}/{status}` — Required: `reason`
Optional: `host_messaging` (boolean)
```ruby
response = client.portouts.update_status(
:authorized,
id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
reason: "I do not recognize this transaction"
)
puts(response)
```
Returns: `already_ported` (boolean), `authorized_name` (string), `carrier_name` (string), `city` (string), `created_at` (string), `current_carrier` (string), `end_user_name` (string), `foc_date` (string), `host_messaging` (boolean), `id` (string), `inserted_at` (string), `lsr` (array[string]), `phone_numbers` (array[string]), `pon` (string), `reason` (string | null), `record_type` (string), `rejection_code` (integer), `requested_foc_date` (string), `service_address` (string), `spid` (string), `state` (string), `status` (enum: pending, authorized, ported, rejected, rejected-pending, canceled), `support_key` (string), `updated_at` (string), `user_id` (uuid), `vendor` (uuid), `zip` (string)
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.