{"id":"e8e6609b-7682-4b6e-bf33-1699c61ff5c9","shortId":"gT23WZ","kind":"skill","title":"telnyx-porting-in-ruby","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Porting In - Ruby\n\n## Installation\n\n```bash\ngem install telnyx\n```\n\n## Setup\n\n```ruby\nrequire \"telnyx\"\n\nclient = Telnyx::Client.new(\n  api_key: ENV[\"TELNYX_API_KEY\"], # This is the default and can be omitted\n)\n```\n\nAll examples below assume `client` is already initialized as shown above.\n\n## Error Handling\n\nAll API calls can fail with network errors, rate limits (429), validation errors (422),\nor authentication errors (401). Always handle errors in production code:\n\n```ruby\nbegin\n  result = client.messages.send_(to: \"+13125550001\", from: \"+13125550002\", text: \"Hello\")\nrescue Telnyx::Errors::APIConnectionError\n  puts \"Network error — check connectivity and retry\"\nrescue Telnyx::Errors::RateLimitError\n  # 429: rate limited — wait and retry with exponential backoff\n  sleep(1) # Check Retry-After header for actual delay\nrescue Telnyx::Errors::APIStatusError => e\n  puts \"API error #{e.status}: #{e.message}\"\n  if e.status == 422\n    puts \"Validation error — check required fields and formats\"\n  end\nend\n```\n\nCommon error codes: `401` invalid API key, `403` insufficient permissions,\n`404` resource not found, `422` validation error (check field formats),\n`429` rate limited (retry with exponential backoff).\n\n## Important Notes\n\n- **Phone numbers** must be in E.164 format (e.g., `+13125550001`). Include the `+` prefix and country code. No spaces, dashes, or parentheses.\n- **Pagination:** Use `.auto_paging_each` for automatic iteration: `page.auto_paging_each { |item| puts item.id }`.\n\n## Run a portability check\n\nRuns a portability check, returning the results immediately.\n\n`POST /portability_checks`\n\nOptional: `phone_numbers` (array[string])\n\n```ruby\nresponse = client.portability_checks.run(phone_numbers: [\"+18005550101\"])\nputs(response)\n```\n\nReturns: `fast_portable` (boolean), `not_portable_reason` (string), `phone_number` (string), `portable` (boolean), `record_type` (string)\n\n## List all porting events\n\nReturns a list of all porting events.\n\n`GET /porting/events`\n\n```ruby\npage = client.porting.events.list\n\nputs(page)\n```\n\nReturns: `available_notification_methods` (array[string]), `event_type` (enum: porting_order.deleted), `id` (uuid), `payload` (object), `payload_status` (enum: created, completed), `porting_order_id` (uuid)\n\n## Show a porting event\n\nShow a specific porting event.\n\n`GET /porting/events/{id}`\n\n```ruby\nevent = client.porting.events.retrieve(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(event)\n```\n\nReturns: `available_notification_methods` (array[string]), `event_type` (enum: porting_order.deleted), `id` (uuid), `payload` (object), `payload_status` (enum: created, completed), `porting_order_id` (uuid)\n\n## Republish a porting event\n\nRepublish a specific porting event.\n\n`POST /porting/events/{id}/republish`\n\n```ruby\nresult = client.porting.events.republish(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(result)\n```\n\n## List LOA configurations\n\nList the LOA configurations.\n\n`GET /porting/loa_configurations`\n\n```ruby\npage = client.porting.loa_configurations.list\n\nputs(page)\n```\n\nReturns: `address` (object), `company_name` (string), `contact` (object), `created_at` (date-time), `id` (uuid), `logo` (object), `name` (string), `organization_id` (string), `record_type` (string), `updated_at` (date-time)\n\n## Create a LOA configuration\n\nCreate a LOA configuration.\n\n`POST /porting/loa_configurations`\n\n```ruby\nloa_configuration = client.porting.loa_configurations.create(\n  address: {city: \"Austin\", country_code: \"US\", state: \"TX\", street_address: \"600 Congress Avenue\", zip_code: \"78701\"},\n  company_name: \"Telnyx\",\n  contact: {email: \"testing@client.com\", phone_number: \"+12003270001\"},\n  logo: {document_id: \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\"},\n  name: \"My LOA Configuration\"\n)\n\nputs(loa_configuration)\n```\n\nReturns: `address` (object), `company_name` (string), `contact` (object), `created_at` (date-time), `id` (uuid), `logo` (object), `name` (string), `organization_id` (string), `record_type` (string), `updated_at` (date-time)\n\n## Preview the LOA configuration parameters\n\nPreview the LOA template that would be generated without need to create LOA configuration.\n\n`POST /porting/loa_configurations/preview`\n\n```ruby\nresponse = client.porting.loa_configurations.preview(\n  address: {city: \"Austin\", country_code: \"US\", state: \"TX\", street_address: \"600 Congress Avenue\", zip_code: \"78701\"},\n  company_name: \"Telnyx\",\n  contact: {email: \"testing@client.com\", phone_number: \"+12003270001\"},\n  logo: {document_id: \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\"},\n  name: \"My LOA Configuration\"\n)\n\nputs(response)\n```\n\n## Retrieve a LOA configuration\n\nRetrieve a specific LOA configuration.\n\n`GET /porting/loa_configurations/{id}`\n\n```ruby\nloa_configuration = client.porting.loa_configurations.retrieve(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(loa_configuration)\n```\n\nReturns: `address` (object), `company_name` (string), `contact` (object), `created_at` (date-time), `id` (uuid), `logo` (object), `name` (string), `organization_id` (string), `record_type` (string), `updated_at` (date-time)\n\n## Update a LOA configuration\n\nUpdate a specific LOA configuration.\n\n`PATCH /porting/loa_configurations/{id}`\n\n```ruby\nloa_configuration = client.porting.loa_configurations.update(\n  \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n  address: {city: \"Austin\", country_code: \"US\", state: \"TX\", street_address: \"600 Congress Avenue\", zip_code: \"78701\"},\n  company_name: \"Telnyx\",\n  contact: {email: \"testing@client.com\", phone_number: \"+12003270001\"},\n  logo: {document_id: \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\"},\n  name: \"My LOA Configuration\"\n)\n\nputs(loa_configuration)\n```\n\nReturns: `address` (object), `company_name` (string), `contact` (object), `created_at` (date-time), `id` (uuid), `logo` (object), `name` (string), `organization_id` (string), `record_type` (string), `updated_at` (date-time)\n\n## Delete a LOA configuration\n\nDelete a specific LOA configuration.\n\n`DELETE /porting/loa_configurations/{id}`\n\n```ruby\nresult = client.porting.loa_configurations.delete(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(result)\n```\n\n## Preview a LOA configuration\n\nPreview a specific LOA configuration.\n\n`GET /porting/loa_configurations/{id}/preview`\n\n```ruby\nresponse = client.porting.loa_configurations.preview_1(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(response)\n```\n\n## List porting related reports\n\nList the reports generated about porting operations.\n\n`GET /porting/reports`\n\n```ruby\npage = client.porting.reports.list\n\nputs(page)\n```\n\nReturns: `created_at` (date-time), `document_id` (uuid), `id` (uuid), `params` (object), `record_type` (string), `report_type` (enum: export_porting_orders_csv), `status` (enum: pending, completed), `updated_at` (date-time)\n\n## Create a porting related report\n\nGenerate reports about porting operations.\n\n`POST /porting/reports`\n\n```ruby\nreport = client.porting.reports.create(params: {filters: {}}, report_type: :export_porting_orders_csv)\n\nputs(report)\n```\n\nReturns: `created_at` (date-time), `document_id` (uuid), `id` (uuid), `params` (object), `record_type` (string), `report_type` (enum: export_porting_orders_csv), `status` (enum: pending, completed), `updated_at` (date-time)\n\n## Retrieve a report\n\nRetrieve a specific report generated.\n\n`GET /porting/reports/{id}`\n\n```ruby\nreport = client.porting.reports.retrieve(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(report)\n```\n\nReturns: `created_at` (date-time), `document_id` (uuid), `id` (uuid), `params` (object), `record_type` (string), `report_type` (enum: export_porting_orders_csv), `status` (enum: pending, completed), `updated_at` (date-time)\n\n## List available carriers in the UK\n\nList available carriers in the UK.\n\n`GET /porting/uk_carriers`\n\n```ruby\nresponse = client.porting.list_uk_carriers\n\nputs(response)\n```\n\nReturns: `alternative_cupids` (array[string]), `created_at` (date-time), `cupid` (string), `id` (uuid), `name` (string), `record_type` (string), `updated_at` (date-time)\n\n## List all porting orders\n\nReturns a list of your porting order.\n\n`GET /porting_orders`\n\n```ruby\npage = client.porting_orders.list\n\nputs(page)\n```\n\nReturns: `activation_settings` (object), `additional_steps` (array[string]), `created_at` (date-time), `customer_group_reference` (string | null), `customer_reference` (string | null), `description` (string), `documents` (object), `end_user` (object), `id` (uuid), `messaging` (object), `misc` (object), `old_service_provider_ocn` (string), `parent_support_key` (string | null), `phone_number_configuration` (object), `phone_number_type` (enum: landline, local, mobile, national, shared_cost, toll_free), `phone_numbers` (array[object]), `porting_phone_numbers_count` (integer), `record_type` (string), `requirements` (array[object]), `requirements_met` (boolean), `status` (object), `support_key` (string | null), `updated_at` (date-time), `user_feedback` (object), `user_id` (uuid), `webhook_url` (uri)\n\n## Create a porting order\n\nCreates a new porting order object.\n\n`POST /porting_orders` — Required: `phone_numbers`\n\nOptional: `customer_group_reference` (string), `customer_reference` (string | null)\n\n```ruby\nporting_order = client.porting_orders.create(phone_numbers: [\"+13035550000\", \"+13035550001\", \"+13035550002\"])\n\nputs(porting_order)\n```\n\nReturns: `activation_settings` (object), `additional_steps` (array[string]), `created_at` (date-time), `customer_group_reference` (string | null), `customer_reference` (string | null), `description` (string), `documents` (object), `end_user` (object), `id` (uuid), `messaging` (object), `misc` (object), `old_service_provider_ocn` (string), `parent_support_key` (string | null), `phone_number_configuration` (object), `phone_number_type` (enum: landline, local, mobile, national, shared_cost, toll_free), `phone_numbers` (array[object]), `porting_phone_numbers_count` (integer), `record_type` (string), `requirements` (array[object]), `requirements_met` (boolean), `status` (object), `support_key` (string | null), `updated_at` (date-time), `user_feedback` (object), `user_id` (uuid), `webhook_url` (uri)\n\n## List all exception types\n\nReturns a list of all possible exception types for a porting order.\n\n`GET /porting_orders/exception_types`\n\n```ruby\nresponse = client.porting_orders.retrieve_exception_types\n\nputs(response)\n```\n\nReturns: `code` (enum: ACCOUNT_NUMBER_MISMATCH, AUTH_PERSON_MISMATCH, BTN_ATN_MISMATCH, ENTITY_NAME_MISMATCH, FOC_EXPIRED, FOC_REJECTED, LOCATION_MISMATCH, LSR_PENDING, MAIN_BTN_PORTING, OSP_IRRESPONSIVE, OTHER, PASSCODE_PIN_INVALID, PHONE_NUMBER_HAS_SPECIAL_FEATURE, PHONE_NUMBER_MISMATCH, PHONE_NUMBER_NOT_PORTABLE, PORT_TYPE_INCORRECT, PORTING_ORDER_SPLIT_REQUIRED, POSTAL_CODE_MISMATCH, RATE_CENTER_NOT_PORTABLE, SV_CONFLICT, SV_UNKNOWN_FAILURE), `description` (string)\n\n## List all phone number configurations\n\nReturns a list of phone number configurations paginated.\n\n`GET /porting_orders/phone_number_configurations`\n\n```ruby\npage = client.porting_orders.phone_number_configurations.list\n\nputs(page)\n```\n\nReturns: `created_at` (date-time), `id` (uuid), `porting_phone_number_id` (uuid), `record_type` (string), `updated_at` (date-time), `user_bundle_id` (uuid)\n\n## Create a list of phone number configurations\n\nCreates a list of phone number configurations.\n\n`POST /porting_orders/phone_number_configurations`\n\n```ruby\nphone_number_configuration = client.porting_orders.phone_number_configurations.create\n\nputs(phone_number_configuration)\n```\n\nReturns: `created_at` (date-time), `id` (uuid), `porting_phone_number_id` (uuid), `record_type` (string), `updated_at` (date-time), `user_bundle_id` (uuid)\n\n## Retrieve a porting order\n\nRetrieves the details of an existing porting order.\n\n`GET /porting_orders/{id}`\n\n```ruby\nporting_order = client.porting_orders.retrieve(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(porting_order)\n```\n\nReturns: `activation_settings` (object), `additional_steps` (array[string]), `created_at` (date-time), `customer_group_reference` (string | null), `customer_reference` (string | null), `description` (string), `documents` (object), `end_user` (object), `id` (uuid), `messaging` (object), `misc` (object), `old_service_provider_ocn` (string), `parent_support_key` (string | null), `phone_number_configuration` (object), `phone_number_type` (enum: landline, local, mobile, national, shared_cost, toll_free), `phone_numbers` (array[object]), `porting_phone_numbers_count` (integer), `record_type` (string), `requirements` (array[object]), `requirements_met` (boolean), `status` (object), `support_key` (string | null), `updated_at` (date-time), `user_feedback` (object), `user_id` (uuid), `webhook_url` (uri)\n\n## Edit a porting order\n\nEdits the details of an existing porting order. Any or all of a porting orders attributes may be included in the resource object included in a PATCH request. If a request does not include all of the attributes for a resource, the system will interpret the missing attributes as if they were included with their current values.\n\n`PATCH /porting_orders/{id}`\n\nOptional: `activation_settings` (object), `customer_group_reference` (string), `customer_reference` (string), `documents` (object), `end_user` (object), `messaging` (object), `misc` (object), `phone_number_configuration` (object), `requirement_group_id` (uuid), `requirements` (array[object]), `user_feedback` (object), `webhook_url` (uri)\n\n```ruby\nporting_order = client.porting_orders.update(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(porting_order)\n```\n\nReturns: `activation_settings` (object), `additional_steps` (array[string]), `created_at` (date-time), `customer_group_reference` (string | null), `customer_reference` (string | null), `description` (string), `documents` (object), `end_user` (object), `id` (uuid), `messaging` (object), `misc` (object), `old_service_provider_ocn` (string), `parent_support_key` (string | null), `phone_number_configuration` (object), `phone_number_type` (enum: landline, local, mobile, national, shared_cost, toll_free), `phone_numbers` (array[object]), `porting_phone_numbers_count` (integer), `record_type` (string), `requirements` (array[object]), `requirements_met` (boolean), `status` (object), `support_key` (string | null), `updated_at` (date-time), `user_feedback` (object), `user_id` (uuid), `webhook_url` (uri)\n\n## Delete a porting order\n\nDeletes an existing porting order. This operation is restrict to porting orders in draft state.\n\n`DELETE /porting_orders/{id}`\n\n```ruby\nresult = client.porting_orders.delete(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(result)\n```\n\n## Activate every number in a porting order asynchronously.\n\nActivate each number in a porting order asynchronously. This operation is limited to US FastPort orders only.\n\n`POST /porting_orders/{id}/actions/activate`\n\n```ruby\nresponse = client.porting_orders.actions.activate(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(response)\n```\n\nReturns: `activate_at` (date-time), `activation_type` (enum: scheduled, on-demand), `activation_windows` (array[object]), `created_at` (date-time), `id` (uuid), `record_type` (string), `status` (enum: created, in-process, completed, failed), `updated_at` (date-time)\n\n## Cancel a porting order\n\n`POST /porting_orders/{id}/actions/cancel`\n\n```ruby\nresponse = client.porting_orders.actions.cancel(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(response)\n```\n\nReturns: `activation_settings` (object), `additional_steps` (array[string]), `created_at` (date-time), `customer_group_reference` (string | null), `customer_reference` (string | null), `description` (string), `documents` (object), `end_user` (object), `id` (uuid), `messaging` (object), `misc` (object), `old_service_provider_ocn` (string), `parent_support_key` (string | null), `phone_number_configuration` (object), `phone_number_type` (enum: landline, local, mobile, national, shared_cost, toll_free), `phone_numbers` (array[object]), `porting_phone_numbers_count` (integer), `record_type` (string), `requirements` (array[object]), `requirements_met` (boolean), `status` (object), `support_key` (string | null), `updated_at` (date-time), `user_feedback` (object), `user_id` (uuid), `webhook_url` (uri)\n\n## Submit a porting order.\n\nConfirm and submit your porting order.\n\n`POST /porting_orders/{id}/actions/confirm`\n\n```ruby\nresponse = client.porting_orders.actions.confirm(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(response)\n```\n\nReturns: `activation_settings` (object), `additional_steps` (array[string]), `created_at` (date-time), `customer_group_reference` (string | null), `customer_reference` (string | null), `description` (string), `documents` (object), `end_user` (object), `id` (uuid), `messaging` (object), `misc` (object), `old_service_provider_ocn` (string), `parent_support_key` (string | null), `phone_number_configuration` (object), `phone_number_type` (enum: landline, local, mobile, national, shared_cost, toll_free), `phone_numbers` (array[object]), `porting_phone_numbers_count` (integer), `record_type` (string), `requirements` (array[object]), `requirements_met` (boolean), `status` (object), `support_key` (string | null), `updated_at` (date-time), `user_feedback` (object), `user_id` (uuid), `webhook_url` (uri)\n\n## Share a porting order\n\nCreates a sharing token for a porting order. The token can be used to share the porting order with non-Telnyx users.\n\n`POST /porting_orders/{id}/actions/share`\n\n```ruby\nresponse = client.porting_orders.actions.share(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(response)\n```\n\nReturns: `created_at` (date-time), `expires_at` (date-time), `expires_in_seconds` (integer), `id` (uuid), `permissions` (array[string]), `porting_order_id` (uuid), `record_type` (string), `token` (string)\n\n## List all porting activation jobs\n\nReturns a list of your porting activation jobs.\n\n`GET /porting_orders/{id}/activation_jobs`\n\n```ruby\npage = client.porting_orders.activation_jobs.list(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(page)\n```\n\nReturns: `activate_at` (date-time), `activation_type` (enum: scheduled, on-demand), `activation_windows` (array[object]), `created_at` (date-time), `id` (uuid), `record_type` (string), `status` (enum: created, in-process, completed, failed), `updated_at` (date-time)\n\n## Retrieve a porting activation job\n\nReturns a porting activation job.\n\n`GET /porting_orders/{id}/activation_jobs/{activationJobId}`\n\n```ruby\nactivation_job = client.porting_orders.activation_jobs.retrieve(\n  \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n  id: \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\"\n)\n\nputs(activation_job)\n```\n\nReturns: `activate_at` (date-time), `activation_type` (enum: scheduled, on-demand), `activation_windows` (array[object]), `created_at` (date-time), `id` (uuid), `record_type` (string), `status` (enum: created, in-process, completed, failed), `updated_at` (date-time)\n\n## Update a porting activation job\n\nUpdates the activation time of a porting activation job.\n\n`PATCH /porting_orders/{id}/activation_jobs/{activationJobId}`\n\n```ruby\nactivation_job = client.porting_orders.activation_jobs.update(\n  \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n  id: \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\"\n)\n\nputs(activation_job)\n```\n\nReturns: `activate_at` (date-time), `activation_type` (enum: scheduled, on-demand), `activation_windows` (array[object]), `created_at` (date-time), `id` (uuid), `record_type` (string), `status` (enum: created, in-process, completed, failed), `updated_at` (date-time)\n\n## List additional documents\n\nReturns a list of additional documents for a porting order.\n\n`GET /porting_orders/{id}/additional_documents`\n\n```ruby\npage = client.porting_orders.additional_documents.list(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(page)\n```\n\nReturns: `content_type` (string), `created_at` (date-time), `document_id` (uuid), `document_type` (enum: loa, invoice, csr, other), `filename` (string), `id` (uuid), `porting_order_id` (uuid), `record_type` (string), `updated_at` (date-time)\n\n## Create a list of additional documents\n\nCreates a list of additional documents for a porting order.\n\n`POST /porting_orders/{id}/additional_documents`\n\n```ruby\nadditional_document = client.porting_orders.additional_documents.create(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(additional_document)\n```\n\nReturns: `content_type` (string), `created_at` (date-time), `document_id` (uuid), `document_type` (enum: loa, invoice, csr, other), `filename` (string), `id` (uuid), `porting_order_id` (uuid), `record_type` (string), `updated_at` (date-time)\n\n## Delete an additional document\n\nDeletes an additional document for a porting order.\n\n`DELETE /porting_orders/{id}/additional_documents/{additional_document_id}`\n\n```ruby\nresult = client.porting_orders.additional_documents.delete(\n  \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n  id: \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\"\n)\n\nputs(result)\n```\n\n## List allowed FOC dates\n\nReturns a list of allowed FOC dates for a porting order.\n\n`GET /porting_orders/{id}/allowed_foc_windows`\n\n```ruby\nresponse = client.porting_orders.retrieve_allowed_foc_windows(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(response)\n```\n\nReturns: `ended_at` (date-time), `record_type` (string), `started_at` (date-time)\n\n## List all comments of a porting order\n\nReturns a list of all comments of a porting order.\n\n`GET /porting_orders/{id}/comments`\n\n```ruby\npage = client.porting_orders.comments.list(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(page)\n```\n\nReturns: `body` (string), `created_at` (date-time), `id` (uuid), `porting_order_id` (uuid), `record_type` (string), `user_type` (enum: admin, user, system)\n\n## Create a comment for a porting order\n\nCreates a new comment for a porting order.\n\n`POST /porting_orders/{id}/comments`\n\nOptional: `body` (string)\n\n```ruby\ncomment = client.porting_orders.comments.create(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(comment)\n```\n\nReturns: `body` (string), `created_at` (date-time), `id` (uuid), `porting_order_id` (uuid), `record_type` (string), `user_type` (enum: admin, user, system)\n\n## Download a porting order loa template\n\n`GET /porting_orders/{id}/loa_template`\n\n```ruby\nresponse = client.porting_orders.retrieve_loa_template(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(response)\n```\n\n## List porting order requirements\n\nReturns a list of all requirements based on country/number type for this porting order.\n\n`GET /porting_orders/{id}/requirements`\n\n```ruby\npage = client.porting_orders.retrieve_requirements(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(page)\n```\n\nReturns: `field_type` (enum: document, textual), `field_value` (string), `record_type` (string), `requirement_status` (string), `requirement_type` (object)\n\n## Retrieve the associated V1 sub_request_id and port_request_id\n\n`GET /porting_orders/{id}/sub_request`\n\n```ruby\nresponse = client.porting_orders.retrieve_sub_request(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(response)\n```\n\nReturns: `port_request_id` (string), `sub_request_id` (string)\n\n## List verification codes\n\nReturns a list of verification codes for a porting order.\n\n`GET /porting_orders/{id}/verification_codes`\n\n```ruby\npage = client.porting_orders.verification_codes.list(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(page)\n```\n\nReturns: `created_at` (date-time), `id` (uuid), `phone_number` (string), `porting_order_id` (uuid), `record_type` (string), `updated_at` (date-time), `verified` (boolean)\n\n## Send the verification codes\n\nSend the verification code for all porting phone numbers.\n\n`POST /porting_orders/{id}/verification_codes/send`\n\n```ruby\nresult = client.porting_orders.verification_codes.send_(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(result)\n```\n\n## Verify the verification code for a list of phone numbers\n\nVerifies the verification code for a list of phone numbers.\n\n`POST /porting_orders/{id}/verification_codes/verify`\n\n```ruby\nresponse = client.porting_orders.verification_codes.verify(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(response)\n```\n\nReturns: `created_at` (date-time), `id` (uuid), `phone_number` (string), `porting_order_id` (uuid), `record_type` (string), `updated_at` (date-time), `verified` (boolean)\n\n## List action requirements for a porting order\n\nReturns a list of action requirements for a specific porting order.\n\n`GET /porting_orders/{porting_order_id}/action_requirements`\n\n```ruby\npage = client.porting_orders.action_requirements.list(\"porting_order_id\")\n\nputs(page)\n```\n\nReturns: `action_type` (string), `action_url` (string | null), `cancel_reason` (string | null), `created_at` (date-time), `id` (string), `porting_order_id` (string), `record_type` (enum: porting_action_requirement), `requirement_type_id` (string), `status` (enum: created, pending, completed, cancelled, failed), `updated_at` (date-time)\n\n## Initiate an action requirement\n\nInitiates a specific action requirement for a porting order.\n\n`POST /porting_orders/{porting_order_id}/action_requirements/{id}/initiate`\n\n```ruby\nresponse = client.porting_orders.action_requirements.initiate(\n  \"id\",\n  porting_order_id: \"550e8400-e29b-41d4-a716-446655440000\",\n  params: {first_name: \"John\", last_name: \"Doe\"}\n)\n\nputs(response)\n```\n\nReturns: `action_type` (string), `action_url` (string | null), `cancel_reason` (string | null), `created_at` (date-time), `id` (string), `porting_order_id` (string), `record_type` (enum: porting_action_requirement), `requirement_type_id` (string), `status` (enum: created, pending, completed, cancelled, failed), `updated_at` (date-time)\n\n## List all associated phone numbers\n\nReturns a list of all associated phone numbers for a porting order. Associated phone numbers are used for partial porting in GB to specify which phone numbers should be kept or disconnected.\n\n`GET /porting_orders/{porting_order_id}/associated_phone_numbers`\n\n```ruby\npage = client.porting_orders.associated_phone_numbers.list(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(page)\n```\n\nReturns: `action` (enum: keep, disconnect), `country_code` (string), `created_at` (date-time), `id` (uuid), `phone_number_range` (object), `phone_number_type` (enum: landline, local, mobile, national, shared_cost, toll_free), `porting_order_id` (uuid), `record_type` (string), `updated_at` (date-time)\n\n## Create an associated phone number\n\nCreates a new associated phone number for a porting order. This is used for partial porting in GB to specify which phone numbers should be kept or disconnected.\n\n`POST /porting_orders/{porting_order_id}/associated_phone_numbers`\n\n```ruby\nassociated_phone_number = client.porting_orders.associated_phone_numbers.create(\n  \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n  action: :keep,\n  phone_number_range: {}\n)\n\nputs(associated_phone_number)\n```\n\nReturns: `action` (enum: keep, disconnect), `country_code` (string), `created_at` (date-time), `id` (uuid), `phone_number_range` (object), `phone_number_type` (enum: landline, local, mobile, national, shared_cost, toll_free), `porting_order_id` (uuid), `record_type` (string), `updated_at` (date-time)\n\n## Delete an associated phone number\n\nDeletes an associated phone number from a porting order.\n\n`DELETE /porting_orders/{porting_order_id}/associated_phone_numbers/{id}`\n\n```ruby\nassociated_phone_number = client.porting_orders.associated_phone_numbers.delete(\n  \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n  porting_order_id: \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\"\n)\n\nputs(associated_phone_number)\n```\n\nReturns: `action` (enum: keep, disconnect), `country_code` (string), `created_at` (date-time), `id` (uuid), `phone_number_range` (object), `phone_number_type` (enum: landline, local, mobile, national, shared_cost, toll_free), `porting_order_id` (uuid), `record_type` (string), `updated_at` (date-time)\n\n## List all phone number blocks\n\nReturns a list of all phone number blocks of a porting order.\n\n`GET /porting_orders/{porting_order_id}/phone_number_blocks`\n\n```ruby\npage = client.porting_orders.phone_number_blocks.list(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(page)\n```\n\nReturns: `activation_ranges` (array[object]), `country_code` (string), `created_at` (date-time), `id` (uuid), `phone_number_range` (object), `phone_number_type` (enum: landline, local, mobile, national, shared_cost, toll_free), `record_type` (string), `updated_at` (date-time)\n\n## Create a phone number block\n\nCreates a new phone number block.\n\n`POST /porting_orders/{porting_order_id}/phone_number_blocks`\n\n```ruby\nphone_number_block = client.porting_orders.phone_number_blocks.create(\n  \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n  activation_ranges: [{end_at: \"+4930244999910\", start_at: \"+4930244999901\"}],\n  phone_number_range: {end_at: \"+4930244999910\", start_at: \"+4930244999901\"}\n)\n\nputs(phone_number_block)\n```\n\nReturns: `activation_ranges` (array[object]), `country_code` (string), `created_at` (date-time), `id` (uuid), `phone_number_range` (object), `phone_number_type` (enum: landline, local, mobile, national, shared_cost, toll_free), `record_type` (string), `updated_at` (date-time)\n\n## Delete a phone number block\n\nDeletes a phone number block.\n\n`DELETE /porting_orders/{porting_order_id}/phone_number_blocks/{id}`\n\n```ruby\nphone_number_block = client.porting_orders.phone_number_blocks.delete(\n  \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n  porting_order_id: \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\"\n)\n\nputs(phone_number_block)\n```\n\nReturns: `activation_ranges` (array[object]), `country_code` (string), `created_at` (date-time), `id` (uuid), `phone_number_range` (object), `phone_number_type` (enum: landline, local, mobile, national, shared_cost, toll_free), `record_type` (string), `updated_at` (date-time)\n\n## List all phone number extensions\n\nReturns a list of all phone number extensions of a porting order.\n\n`GET /porting_orders/{porting_order_id}/phone_number_extensions`\n\n```ruby\npage = client.porting_orders.phone_number_extensions.list(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(page)\n```\n\nReturns: `activation_ranges` (array[object]), `created_at` (date-time), `extension_range` (object), `id` (uuid), `porting_phone_number_id` (uuid), `record_type` (string), `updated_at` (date-time)\n\n## Create a phone number extension\n\nCreates a new phone number extension.\n\n`POST /porting_orders/{porting_order_id}/phone_number_extensions`\n\n```ruby\nphone_number_extension = client.porting_orders.phone_number_extensions.create(\n  \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n  activation_ranges: [{end_at: 10, start_at: 1}],\n  extension_range: {end_at: 10, start_at: 1},\n  porting_phone_number_id: \"f24151b6-3389-41d3-8747-7dd8c681e5e2\"\n)\n\nputs(phone_number_extension)\n```\n\nReturns: `activation_ranges` (array[object]), `created_at` (date-time), `extension_range` (object), `id` (uuid), `porting_phone_number_id` (uuid), `record_type` (string), `updated_at` (date-time)\n\n## Delete a phone number extension\n\nDeletes a phone number extension.\n\n`DELETE /porting_orders/{porting_order_id}/phone_number_extensions/{id}`\n\n```ruby\nphone_number_extension = client.porting_orders.phone_number_extensions.delete(\n  \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n  porting_order_id: \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\"\n)\n\nputs(phone_number_extension)\n```\n\nReturns: `activation_ranges` (array[object]), `created_at` (date-time), `extension_range` (object), `id` (uuid), `porting_phone_number_id` (uuid), `record_type` (string), `updated_at` (date-time)\n\n## List all porting phone numbers\n\nReturns a list of your porting phone numbers.\n\n`GET /porting_phone_numbers`\n\n```ruby\npage = client.porting_phone_numbers.list\n\nputs(page)\n```\n\nReturns: `activation_status` (enum: New, Pending, Conflict, Cancel Pending, Failed, Concurred, Activate RDY, Disconnect Pending, Concurrence Sent, Old, Sending, Active, Cancelled), `phone_number` (string), `phone_number_type` (enum: landline, local, mobile, national, shared_cost, toll_free), `portability_status` (enum: pending, confirmed, provisional), `porting_order_id` (uuid), `porting_order_status` (enum: draft, in-process, submitted, exception, foc-date-confirmed, cancel-pending, ported, cancelled), `record_type` (string), `requirements_status` (enum: requirement-info-pending, requirement-info-under-review, requirement-info-exception, approved), `support_key` (string)","tags":["telnyx","porting","ruby","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-porting-in-ruby","topic-agent-skills","topic-ai-coding-agent","topic-claude-code","topic-cpaas","topic-cursor","topic-iot","topic-llm","topic-sdk","topic-sip","topic-sms","topic-speech-to-text","topic-telephony"],"categories":["ai"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/team-telnyx/ai/telnyx-porting-in-ruby","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add team-telnyx/ai","source_repo":"https://github.com/team-telnyx/ai","install_from":"skills.sh"}},"qualityScore":"0.533","qualityRationale":"deterministic score 0.53 from registry signals: · indexed on github topic:agent-skills · 167 github stars · SKILL.md body (32,151 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T06:54:45.960Z","embedding":null,"createdAt":"2026-04-18T22:07:31.672Z","updatedAt":"2026-04-22T06:54:45.960Z","lastSeenAt":"2026-04-22T06:54:45.960Z","tsv":"'+12003270001':439,534,651 '+13035550000':1099 '+13035550001':1100 '+13035550002':1101 '+13125550001':78,177 '+13125550002':80 '+18005550101':227 '+4930244999901':3516,3525 '+4930244999910':3513,3522 '-3389':3760 '-41':3761 '-7':3764 '-8747':3763 '/action_requirements':2979,3051 '/actions/activate':1790 '/actions/cancel':1849 '/actions/confirm':1973 '/actions/share':2114 '/activation_jobs':2171,2236,2315 '/additional_documents':2393,2459,2523 '/allowed_foc_windows':2563 '/associated_phone_numbers':3163,3256,3339 '/comments':2612,2665 '/initiate':3053 '/loa_template':2712 '/phone_number_blocks':3430,3497,3584 '/phone_number_extensions':3671,3727,3813 '/portability_checks':216 '/porting/events':258,297,343 '/porting/loa_configurations':365,410,560,615,708,731 '/porting/loa_configurations/preview':506 '/porting/reports':758,807,862 '/porting/uk_carriers':920 '/porting_orders':964,1080,1402,1578,1749,1788,1847,1971,2112,2169,2234,2313,2391,2457,2521,2561,2610,2663,2710,2745,2790,2829,2882,2917,2975,3047,3159,3252,3335,3426,3493,3580,3667,3723,3809 '/porting_orders/exception_types':1221 '/porting_orders/phone_number_configurations':1308,1354 '/porting_phone_numbers':3881 '/preview':733 '/republish':345 '/requirements':2747 '/sub_request':2792 '/verification_codes':2831 '/verification_codes/send':2884 '/verification_codes/verify':2919 '1':108,737,3746,3754 '10':3743,3751 '182bd5e5':303,350,444,539,567,622,656,714,739,868,1409,1622,1755,1795,1854,1978,2119,2176,2243,2250,2322,2329,2398,2465,2531,2538,2571,2617,2673,2719,2753,2799,2836,2889,2924,3168,3263,3347,3356,3435,3504,3592,3601,3676,3734,3821,3830 '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e':302,349,443,538,566,621,655,713,738,867,1408,1621,1754,1794,1853,1977,2118,2175,2242,2249,2321,2328,2397,2464,2530,2537,2570,2616,2672,2718,2752,2798,2835,2888,2923,3167,3262,3346,3355,3434,3503,3591,3600,3675,3733,3820,3829 '401':66,143 '403':147 '404':150 '41d4':3064 '422':62,129,154 '429':59,98,160 '446655440000':3066 '4fe4':305,352,446,541,569,624,658,716,741,870,1411,1624,1757,1797,1856,1980,2121,2178,2245,2252,2324,2331,2400,2467,2533,2540,2573,2619,2675,2721,2755,2801,2838,2891,2926,3170,3265,3349,3358,3437,3506,3594,3603,3678,3736,3823,3832 '550e8400':3061 '600':425,520,637 '6e1a':304,351,445,540,568,623,657,715,740,869,1410,1623,1756,1796,1855,1979,2120,2177,2244,2251,2323,2330,2399,2466,2532,2539,2572,2618,2674,2720,2754,2800,2837,2890,2925,3169,3264,3348,3357,3436,3505,3593,3602,3677,3735,3822,3831 '78701':430,525,642 'a716':3065 'a799':306,353,447,542,570,625,659,717,742,871,1412,1625,1758,1798,1857,1981,2122,2179,2246,2253,2325,2332,2401,2468,2534,2541,2574,2620,2676,2722,2756,2802,2839,2892,2927,3171,3266,3350,3359,3438,3507,3595,3604,3679,3737,3824,3833 'aa6d9a6ab26e':307,354,448,543,571,626,660,718,743,872,1413,1626,1759,1799,1858,1982,2123,2180,2247,2254,2326,2333,2402,2469,2535,2542,2575,2621,2677,2723,2757,2803,2840,2893,2928,3172,3267,3351,3360,3439,3508,3596,3605,3680,3738,3825,3834 'account':1232 'action':2957,2967,2989,2992,3015,3035,3040,3077,3080,3103,3176,3268,3278,3366 'activ':971,1106,1418,1581,1631,1762,1770,1803,1808,1815,1862,1986,2158,2166,2184,2189,2196,2226,2231,2239,2256,2259,2264,2271,2301,2305,2310,2318,2335,2338,2343,2350,3443,3509,3531,3611,3684,3739,3771,3840,3888,3898,3906 'activationjobid':2237,2316 'actual':115 'addit':974,1109,1421,1634,1865,1989,2378,2384,2444,2450,2461,2471,2510,2514,2524 'address':372,415,424,457,510,519,576,627,636,669 'admin':2644,2700 'allow':2546,2553,2567 'alreadi':42 'altern':929 'alway':67 'api':22,26,50,123,145 'apiconnectionerror':86 'apistatuserror':120 'approv':3971 'array':220,268,314,931,976,1033,1044,1111,1168,1179,1423,1480,1491,1609,1636,1693,1704,1817,1867,1924,1935,1991,2048,2059,2144,2198,2273,2352,3445,3533,3613,3686,3773,3842 'associ':2780,3123,3131,3138,3220,3226,3258,3274,3322,3327,3342,3362 'assum':39 'asynchron':1769,1777 'atn':1239 'attribut':1535,1557,1567 'austin':417,512,629 'auth':1235 'authent':64 'auto':191 'automat':195 'avail':265,311,908,914 'avenu':427,522,639 'backoff':106,166 'base':2736 'bash':11 'begin':74 'block':3412,3420,3485,3491,3501,3529,3573,3578,3589,3609 'bodi':2625,2667,2681 'boolean':233,242,1048,1183,1495,1708,1939,2063,2867,2955 'btn':1238,1253 'bundl':1336,1386 'call':51 'cancel':1842,2996,3026,3084,3114,3894,3907,3948,3951 'cancel-pend':3947 'carrier':909,915,925 'center':1284 'check':90,109,133,157,206,210 'citi':416,511,628 'client':19,40 'client.messages.send':76 'client.new':21 'client.portability_checks.run':224 'client.porting.events.list':261 'client.porting.events.republish':348 'client.porting.events.retrieve':301 'client.porting.list':923 'client.porting.loa_configurations.create':414 'client.porting.loa_configurations.delete':712 'client.porting.loa_configurations.list':368 'client.porting.loa_configurations.preview':509,736 'client.porting.loa_configurations.retrieve':565 'client.porting.loa_configurations.update':620 'client.porting.reports.create':810 'client.porting.reports.list':761 'client.porting.reports.retrieve':866 'client.porting_orders.action_requirements.initiate':3056 'client.porting_orders.action_requirements.list':2982 'client.porting_orders.actions.activate':1793 'client.porting_orders.actions.cancel':1852 'client.porting_orders.actions.confirm':1976 'client.porting_orders.actions.share':2117 'client.porting_orders.activation_jobs.list':2174 'client.porting_orders.activation_jobs.retrieve':2241 'client.porting_orders.activation_jobs.update':2320 'client.porting_orders.additional_documents.create':2463 'client.porting_orders.additional_documents.delete':2529 'client.porting_orders.additional_documents.list':2396 'client.porting_orders.associated_phone_numbers.create':3261 'client.porting_orders.associated_phone_numbers.delete':3345 'client.porting_orders.associated_phone_numbers.list':3166 'client.porting_orders.comments.create':2671 'client.porting_orders.comments.list':2615 'client.porting_orders.create':1096 'client.porting_orders.delete':1753 'client.porting_orders.list':967 'client.porting_orders.phone_number_blocks.create':3502 'client.porting_orders.phone_number_blocks.delete':3590 'client.porting_orders.phone_number_blocks.list':3433 'client.porting_orders.phone_number_configurations.create':1359 'client.porting_orders.phone_number_configurations.list':1311 'client.porting_orders.phone_number_extensions.create':3732 'client.porting_orders.phone_number_extensions.delete':3819 'client.porting_orders.phone_number_extensions.list':3674 'client.porting_orders.retrieve':1224,1407,2566,2715,2750,2795 'client.porting_orders.update':1620 'client.porting_orders.verification_codes.list':2834 'client.porting_orders.verification_codes.send':2887 'client.porting_orders.verification_codes.verify':2922 'client.porting_phone_numbers.list':3884 'code':72,142,183,419,429,514,524,631,641,1230,1281,2817,2823,2871,2875,2899,2909,3181,3283,3371,3448,3536,3616 'comment':2594,2604,2649,2657,2670,2679 'common':140 'compani':374,431,459,526,578,643,671 'complet':282,328,790,847,901,1835,2216,2291,2370,3025,3113 'concur':3897 'concurr':3902 'configur':359,363,404,408,413,452,455,489,504,547,553,558,564,574,608,613,619,664,667,701,706,724,729,1017,1152,1298,1305,1345,1352,1358,1363,1464,1602,1677,1908,2032 'confirm':1964,3927,3946 'conflict':1288,3893 'congress':426,521,638 'connect':91 'contact':377,434,462,529,581,646,674 'content':2406,2474 'cost':1028,1163,1475,1688,1919,2043,3203,3305,3393,3470,3558,3638,3920 'count':1038,1173,1485,1698,1929,2053 'countri':182,418,513,630,3180,3282,3370,3447,3535,3615 'country/number':2738 'creat':281,327,379,401,405,464,502,583,676,765,796,822,876,933,978,1069,1073,1113,1315,1339,1346,1365,1425,1638,1819,1831,1869,1993,2088,2127,2200,2212,2275,2287,2354,2366,2409,2440,2446,2477,2627,2647,2654,2683,2844,2932,3000,3023,3088,3111,3183,3218,3223,3285,3373,3450,3481,3486,3538,3618,3688,3711,3716,3775,3844 'csr':2422,2490 'csv':786,818,843,897 'cupid':930,938 'current':1575 'custom':983,988,1085,1089,1118,1123,1430,1435,1584,1588,1643,1648,1874,1879,1998,2003 'd3':3762 'dash':186 'date':382,399,467,484,586,603,679,696,768,794,825,851,879,905,936,950,981,1058,1116,1193,1318,1333,1368,1383,1428,1505,1641,1718,1806,1822,1840,1872,1949,1996,2073,2130,2135,2187,2203,2221,2262,2278,2296,2341,2357,2375,2412,2438,2480,2506,2548,2555,2582,2590,2630,2686,2847,2864,2935,2952,3003,3031,3091,3119,3186,3216,3288,3318,3376,3406,3453,3479,3541,3567,3621,3647,3691,3709,3778,3796,3847,3865,3945 'date-tim':381,398,466,483,585,602,678,695,767,793,824,850,878,904,935,949,980,1057,1115,1192,1317,1332,1367,1382,1427,1504,1640,1717,1805,1821,1839,1871,1948,1995,2072,2129,2134,2186,2202,2220,2261,2277,2295,2340,2356,2374,2411,2437,2479,2505,2581,2589,2629,2685,2846,2863,2934,2951,3002,3030,3090,3118,3185,3215,3287,3317,3375,3405,3452,3478,3540,3566,3620,3646,3690,3708,3777,3795,3846,3864 'dd8c681e5e2':3765 'default':31 'delay':116 'delet':698,702,707,1729,1733,1748,2508,2512,2520,3320,3325,3334,3569,3574,3579,3798,3803,3808 'demand':1814,2195,2270,2349 'descript':992,1127,1292,1439,1652,1883,2007 'detail':1395,1522 'disconnect':3157,3179,3250,3281,3369,3900 'document':441,536,653,770,827,881,994,1129,1441,1591,1654,1885,2009,2379,2385,2414,2417,2445,2451,2462,2472,2482,2485,2511,2515,2525,2764 'doe':3073 'download':2703 'draft':1746,3937 'e':121 'e.164':174 'e.g':176 'e.message':126 'e.status':125,128 'e29b':3063 'e29b-41d4-a716':3062 'edit':1516,1520 'email':435,530,647 'end':138,139,996,1131,1443,1593,1656,1887,2011,2579,3511,3520,3741,3749 'entiti':1241 'enum':272,280,318,326,782,788,839,845,893,899,1022,1157,1231,1469,1682,1810,1830,1913,2037,2191,2211,2266,2286,2345,2365,2419,2487,2643,2699,2763,3013,3022,3101,3110,3177,3197,3279,3299,3367,3387,3464,3552,3632,3890,3914,3925,3936,3957 'env':24 'error':47,56,61,65,69,85,89,96,119,124,132,141,156 'event':249,256,270,290,295,300,309,316,336,341 'everi':1763 'exampl':37 'except':1206,1214,1225,3942,3970 'exist':1398,1525,1735 'expir':1245,2132,2137 'exponenti':105,165 'export':783,815,840,894 'extens':3653,3661,3693,3715,3721,3731,3747,3769,3780,3802,3807,3818,3838,3849 'f24151b6':3759 'fail':53,1836,2217,2292,2371,3027,3115,3896 'failur':1291 'fast':231 'fastport':1784 'featur':1265 'feedback':1061,1196,1508,1612,1721,1952,2076 'field':135,158,2761,2766 'filenam':2424,2492 'filter':812 'first':3068 'foc':1244,1246,2547,2554,2568,3944 'foc-date-confirm':3943 'format':137,159,175 'found':153 'free':1030,1165,1477,1690,1921,2045,3205,3307,3395,3472,3560,3640,3922 'gb':3147,3240 'gem':12 'generat':498,753,801,860 'get':257,296,364,559,730,757,861,919,963,1220,1307,1401,2168,2233,2390,2560,2609,2709,2744,2789,2828,2974,3158,3425,3666,3880 'group':984,1086,1119,1431,1585,1605,1644,1875,1999 'handl':48,68 'header':113 'hello':82 'id':274,285,298,320,331,344,384,391,442,469,476,537,561,588,595,616,654,681,688,709,732,771,773,828,830,863,882,884,940,999,1064,1134,1199,1320,1325,1337,1370,1375,1387,1403,1446,1511,1579,1606,1659,1724,1750,1789,1824,1848,1890,1955,1972,2014,2079,2113,2141,2148,2170,2205,2235,2248,2280,2314,2327,2359,2392,2415,2426,2430,2458,2483,2494,2498,2522,2526,2536,2562,2611,2632,2636,2664,2688,2692,2711,2746,2784,2788,2791,2809,2813,2830,2849,2856,2883,2918,2937,2944,2978,2985,3005,3009,3019,3050,3052,3057,3060,3093,3097,3107,3162,3188,3208,3255,3290,3310,3338,3340,3354,3378,3398,3429,3455,3496,3543,3583,3585,3599,3623,3670,3696,3701,3726,3758,3783,3788,3812,3814,3828,3852,3857,3931 'immedi':214 'import':167 'in-process':1832,2213,2288,2367,3938 'includ':178,1538,1543,1553,1572 'incorrect':1275 'info':3960,3964,3969 'initi':43,3033,3037 'instal':10,13 'insuffici':148 'integ':1039,1174,1486,1699,1930,2054,2140 'interpret':1564 'invalid':144,1260 'invoic':2421,2489 'irrespons':1256 'item':200 'item.id':202 'iter':196 'job':2159,2167,2227,2232,2240,2257,2302,2311,2319,2336 'john':3070 'keep':3178,3269,3280,3368 'kept':3155,3248 'key':23,27,146,1012,1052,1147,1187,1459,1499,1672,1712,1903,1943,2027,2067,3973 'landlin':1023,1158,1470,1683,1914,2038,3198,3300,3388,3465,3553,3633,3915 'last':3071 'limit':58,100,162,1781 'list':246,252,357,360,746,750,907,913,952,958,1204,1210,1294,1301,1341,1348,2155,2162,2377,2382,2442,2448,2545,2551,2592,2601,2726,2732,2815,2820,2902,2912,2956,2965,3121,3128,3408,3415,3649,3656,3867,3874 'loa':358,362,403,407,412,451,454,488,493,503,546,552,557,563,573,607,612,618,663,666,700,705,723,728,2420,2488,2707,2716 'local':1024,1159,1471,1684,1915,2039,3199,3301,3389,3466,3554,3634,3916 'locat':1248 'logo':386,440,471,535,590,652,683 'lsr':1250 'main':1252 'may':1536 'messag':1001,1136,1448,1596,1661,1892,2016 'met':1047,1182,1494,1707,1938,2062 'method':267,313 'misc':1003,1138,1450,1598,1663,1894,2018 'mismatch':1234,1237,1240,1243,1249,1268,1282 'miss':1566 'mobil':1025,1160,1472,1685,1916,2040,3200,3302,3390,3467,3555,3635,3917 'must':171 'name':375,388,432,449,460,473,527,544,579,592,644,661,672,685,942,1242,3069,3072 'nation':1026,1161,1473,1686,1917,2041,3201,3303,3391,3468,3556,3636,3918 'need':500 'network':55,88 'new':1075,2656,3225,3488,3718,3891 'non':2108 'non-telnyx':2107 'note':168 'notif':266,312 'null':987,991,1014,1054,1092,1122,1126,1149,1189,1434,1438,1461,1501,1647,1651,1674,1714,1878,1882,1905,1945,2002,2006,2029,2069,2995,2999,3083,3087 'number':170,219,226,239,438,533,650,1016,1020,1032,1037,1083,1098,1151,1155,1167,1172,1233,1262,1267,1270,1297,1304,1324,1344,1351,1357,1362,1374,1463,1467,1479,1484,1601,1676,1680,1692,1697,1764,1772,1907,1911,1923,1928,2031,2035,2047,2052,2852,2880,2905,2915,2940,3125,3133,3140,3152,3191,3195,3222,3228,3245,3260,3271,3276,3293,3297,3324,3329,3344,3364,3381,3385,3411,3419,3458,3462,3484,3490,3500,3518,3528,3546,3550,3572,3577,3588,3608,3626,3630,3652,3660,3700,3714,3720,3730,3757,3768,3787,3801,3806,3817,3837,3856,3871,3879,3909,3912 'object':277,323,373,378,387,458,463,472,577,582,591,670,675,684,776,833,887,973,995,998,1002,1004,1018,1034,1045,1050,1062,1078,1108,1130,1133,1137,1139,1153,1169,1180,1185,1197,1420,1442,1445,1449,1451,1465,1481,1492,1497,1509,1542,1583,1592,1595,1597,1599,1603,1610,1613,1633,1655,1658,1662,1664,1678,1694,1705,1710,1722,1818,1864,1886,1889,1893,1895,1909,1925,1936,1941,1953,1988,2010,2013,2017,2019,2033,2049,2060,2065,2077,2199,2274,2353,2777,3193,3295,3383,3446,3460,3534,3548,3614,3628,3687,3695,3774,3782,3843,3851 'ocn':1008,1143,1455,1668,1899,2023 'old':1005,1140,1452,1665,1896,2020,3904 'omit':35 'on-demand':1812,2193,2268,2347 'oper':756,805,1739,1779 'option':217,1084,1580,2666 'order':284,330,785,817,842,896,955,962,1072,1077,1095,1104,1219,1277,1392,1400,1406,1416,1519,1527,1534,1619,1629,1732,1737,1744,1768,1776,1785,1845,1963,1969,2087,2095,2105,2147,2389,2429,2455,2497,2519,2559,2598,2608,2635,2653,2661,2691,2706,2728,2743,2827,2855,2943,2962,2973,2977,2984,3008,3045,3049,3059,3096,3137,3161,3207,3232,3254,3309,3333,3337,3353,3397,3424,3428,3495,3582,3598,3665,3669,3725,3811,3827,3930,3934 'organ':390,475,594,687 'osp':1255 'page':192,198,260,263,367,370,760,763,966,969,1310,1313,2173,2182,2395,2404,2614,2623,2749,2759,2833,2842,2981,2987,3165,3174,3432,3441,3673,3682,3883,3886 'page.auto':197 'pagin':189,1306 'param':775,811,832,886,3067 'paramet':490 'parent':1010,1145,1457,1670,1901,2025 'parenthes':188 'partial':3144,3237 'passcod':1258 'patch':614,1546,1577,2312 'payload':276,278,322,324 'pend':789,846,900,1251,3024,3112,3892,3895,3901,3926,3949,3961 'permiss':149,2143 'person':1236 'phone':169,218,225,238,437,532,649,1015,1019,1031,1036,1082,1097,1150,1154,1166,1171,1261,1266,1269,1296,1303,1323,1343,1350,1356,1361,1373,1462,1466,1478,1483,1600,1675,1679,1691,1696,1906,1910,1922,1927,2030,2034,2046,2051,2851,2879,2904,2914,2939,3124,3132,3139,3151,3190,3194,3221,3227,3244,3259,3270,3275,3292,3296,3323,3328,3343,3363,3380,3384,3410,3418,3457,3461,3483,3489,3499,3517,3527,3545,3549,3571,3576,3587,3607,3625,3629,3651,3659,3699,3713,3719,3729,3756,3767,3786,3800,3805,3816,3836,3855,3870,3878,3908,3911 'pin':1259 'port':3,7,248,255,283,289,294,329,335,340,747,755,784,798,804,816,841,895,954,961,1035,1071,1076,1094,1103,1170,1218,1254,1273,1276,1322,1372,1391,1399,1405,1415,1482,1518,1526,1533,1618,1628,1695,1731,1736,1743,1767,1775,1844,1926,1962,1968,2050,2086,2094,2104,2146,2157,2165,2225,2230,2300,2309,2388,2428,2454,2496,2518,2558,2597,2607,2634,2652,2660,2690,2705,2727,2742,2786,2807,2826,2854,2878,2942,2961,2972,2976,2983,3007,3014,3044,3048,3058,3095,3102,3136,3145,3160,3206,3231,3238,3253,3308,3332,3336,3352,3396,3423,3427,3494,3581,3597,3664,3668,3698,3724,3755,3785,3810,3826,3854,3869,3877,3929,3933,3950 'portabl':205,209,232,235,241,1272,1286,3923 'porting_order.deleted':273,319 'possibl':1213 'post':215,342,409,505,806,1079,1353,1787,1846,1970,2111,2456,2662,2881,2916,3046,3251,3492,3722 'postal':1280 'prefix':180 'preview':486,491,721,725 'process':1834,2215,2290,2369,3940 'product':71 'provid':1007,1142,1454,1667,1898,2022 'provision':3928 'put':87,122,130,201,228,262,308,355,369,453,548,572,665,719,744,762,819,873,926,968,1102,1227,1312,1360,1414,1627,1760,1800,1859,1983,2124,2181,2255,2334,2403,2470,2543,2576,2622,2678,2724,2758,2804,2841,2894,2929,2986,3074,3173,3273,3361,3440,3526,3606,3681,3766,3835,3885 'rang':3192,3272,3294,3382,3444,3459,3510,3519,3532,3547,3612,3627,3685,3694,3740,3748,3772,3781,3841,3850 'rate':57,99,161,1283 'ratelimiterror':97 'rdi':3899 'reason':236,2997,3085 'record':243,393,478,597,690,777,834,888,944,1040,1175,1327,1377,1487,1700,1826,1931,2055,2150,2207,2282,2361,2432,2500,2584,2638,2694,2769,2858,2946,3011,3099,3210,3312,3400,3473,3561,3641,3703,3790,3859,3952 'refer':985,989,1087,1090,1120,1124,1432,1436,1586,1589,1645,1649,1876,1880,2000,2004 'reject':1247 'relat':748,799 'report':749,752,780,800,802,809,813,820,837,855,859,865,874,891 'republish':333,337 'request':1547,1550,2783,2787,2797,2808,2812 'requir':17,134,1043,1046,1081,1178,1181,1279,1490,1493,1604,1608,1703,1706,1934,1937,2058,2061,2729,2735,2751,2772,2775,2958,2968,3016,3017,3036,3041,3104,3105,3955,3959,3963,3968 'requirement-info-except':3967 'requirement-info-pend':3958 'requirement-info-under-review':3962 'rescu':83,94,117 'resourc':151,1541,1560 'respons':223,229,508,549,735,745,922,927,1223,1228,1792,1801,1851,1860,1975,1984,2116,2125,2565,2577,2714,2725,2794,2805,2921,2930,3055,3075 'restrict':1741 'result':75,213,347,356,711,720,1752,1761,2528,2544,2886,2895 'retri':93,103,111,163 'retriev':550,554,853,856,1389,1393,2223,2778 'retry-aft':110 'return':211,230,250,264,310,371,456,575,668,764,821,875,928,956,970,1105,1208,1229,1299,1314,1364,1417,1630,1802,1861,1985,2126,2160,2183,2228,2258,2337,2380,2405,2473,2549,2578,2599,2624,2680,2730,2760,2806,2818,2843,2931,2963,2988,3076,3126,3175,3277,3365,3413,3442,3530,3610,3654,3683,3770,3839,3872,3887 'review':3966 'rubi':5,9,16,73,222,259,299,346,366,411,507,562,617,710,734,759,808,864,921,965,1093,1222,1309,1355,1404,1617,1751,1791,1850,1974,2115,2172,2238,2317,2394,2460,2527,2564,2613,2669,2713,2748,2793,2832,2885,2920,2980,3054,3164,3257,3341,3431,3498,3586,3672,3728,3815,3882 'run':203,207 'schedul':1811,2192,2267,2346 'second':2139 'send':2868,2872,3905 'sent':3903 'servic':1006,1141,1453,1666,1897,2021 'set':972,1107,1419,1582,1632,1863,1987 'setup':15 'share':1027,1162,1474,1687,1918,2042,2084,2090,2102,3202,3304,3392,3469,3557,3637,3919 'show':287,291 'shown':45 'skill' 'skill-telnyx-porting-in-ruby' 'sleep':107 'source-team-telnyx' 'space':185 'special':1264 'specif':293,339,556,611,704,727,858,2971,3039 'specifi':3149,3242 'split':1278 'start':2587,3514,3523,3744,3752 'state':421,516,633,1747 'status':279,325,787,844,898,1049,1184,1496,1709,1829,1940,2064,2210,2285,2364,2773,3021,3109,3889,3924,3935,3956 'step':975,1110,1422,1635,1866,1990 'street':423,518,635 'string':221,237,240,245,269,315,376,389,392,395,461,474,477,480,580,593,596,599,673,686,689,692,779,836,890,932,939,943,946,977,986,990,993,1009,1013,1042,1053,1088,1091,1112,1121,1125,1128,1144,1148,1177,1188,1293,1329,1379,1424,1433,1437,1440,1456,1460,1489,1500,1587,1590,1637,1646,1650,1653,1669,1673,1702,1713,1828,1868,1877,1881,1884,1900,1904,1933,1944,1992,2001,2005,2008,2024,2028,2057,2068,2145,2152,2154,2209,2284,2363,2408,2425,2434,2476,2493,2502,2586,2626,2640,2668,2682,2696,2768,2771,2774,2810,2814,2853,2860,2941,2948,2991,2994,2998,3006,3010,3020,3079,3082,3086,3094,3098,3108,3182,3212,3284,3314,3372,3402,3449,3475,3537,3563,3617,3643,3705,3792,3861,3910,3954,3974 'sub':2782,2796,2811 'submit':1960,1966,3941 'support':1011,1051,1146,1186,1458,1498,1671,1711,1902,1942,2026,2066,3972 'sv':1287,1289 'system':1562,2646,2702 'telnyx':2,6,14,18,20,25,84,95,118,433,528,645,2109 'telnyx-porting-in-rubi':1 'templat':494,2708,2717 'testing@client.com':436,531,648 'text':81 'textual':2765 'time':383,400,468,485,587,604,680,697,769,795,826,852,880,906,937,951,982,1059,1117,1194,1319,1334,1369,1384,1429,1506,1642,1719,1807,1823,1841,1873,1950,1997,2074,2131,2136,2188,2204,2222,2263,2279,2297,2306,2342,2358,2376,2413,2439,2481,2507,2583,2591,2631,2687,2848,2865,2936,2953,3004,3032,3092,3120,3187,3217,3289,3319,3377,3407,3454,3480,3542,3568,3622,3648,3692,3710,3779,3797,3848,3866 'token':2091,2097,2153 'toll':1029,1164,1476,1689,1920,2044,3204,3306,3394,3471,3559,3639,3921 'topic-agent-skills' 'topic-ai-coding-agent' 'topic-claude-code' 'topic-cpaas' 'topic-cursor' 'topic-iot' 'topic-llm' 'topic-sdk' 'topic-sip' 'topic-sms' 'topic-speech-to-text' 'topic-telephony' 'tx':422,517,634 'type':244,271,317,394,479,598,691,778,781,814,835,838,889,892,945,1021,1041,1156,1176,1207,1215,1226,1274,1328,1378,1468,1488,1681,1701,1809,1827,1912,1932,2036,2056,2151,2190,2208,2265,2283,2344,2362,2407,2418,2433,2475,2486,2501,2585,2639,2642,2695,2698,2739,2762,2770,2776,2859,2947,2990,3012,3018,3078,3100,3106,3196,3211,3298,3313,3386,3401,3463,3474,3551,3562,3631,3642,3704,3791,3860,3913,3953 'uk':912,918,924 'unknown':1290 'updat':396,481,600,605,609,693,791,848,902,947,1055,1190,1330,1380,1502,1715,1837,1946,2070,2218,2293,2298,2303,2372,2435,2503,2861,2949,3028,3116,3213,3315,3403,3476,3564,3644,3706,3793,3862 'uri':1068,1203,1515,1616,1728,1959,2083 'url':1067,1202,1514,1615,1727,1958,2082,2993,3081 'us':420,515,632,1783 'use':190,2100,3142,3235 'user':997,1060,1063,1132,1195,1198,1335,1385,1444,1507,1510,1594,1611,1657,1720,1723,1888,1951,1954,2012,2075,2078,2110,2641,2645,2697,2701 'uuid':275,286,321,332,385,470,589,682,772,774,829,831,883,885,941,1000,1065,1135,1200,1321,1326,1338,1371,1376,1388,1447,1512,1607,1660,1725,1825,1891,1956,2015,2080,2142,2149,2206,2281,2360,2416,2427,2431,2484,2495,2499,2633,2637,2689,2693,2850,2857,2938,2945,3189,3209,3291,3311,3379,3399,3456,3544,3624,3697,3702,3784,3789,3853,3858,3932 'v1':2781 'valid':60,131,155 'valu':1576,2767 'verif':2816,2822,2870,2874,2898,2908 'verifi':2866,2896,2906,2954 'wait':101 'webhook':1066,1201,1513,1614,1726,1957,2081 'window':1816,2197,2272,2351,2569 'without':499 'would':496 'zip':428,523,640","prices":[{"id":"2bc0a436-d0f0-4872-8047-3c4c53409146","listingId":"e8e6609b-7682-4b6e-bf33-1699c61ff5c9","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"team-telnyx","category":"ai","install_from":"skills.sh"},"createdAt":"2026-04-18T22:07:31.672Z"}],"sources":[{"listingId":"e8e6609b-7682-4b6e-bf33-1699c61ff5c9","source":"github","sourceId":"team-telnyx/ai/telnyx-porting-in-ruby","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-porting-in-ruby","isPrimary":false,"firstSeenAt":"2026-04-18T22:07:31.672Z","lastSeenAt":"2026-04-22T06:54:45.960Z"}],"details":{"listingId":"e8e6609b-7682-4b6e-bf33-1699c61ff5c9","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-porting-in-ruby","github":{"repo":"team-telnyx/ai","stars":167,"topics":["agent-skills","ai","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk","sip","sms","speech-to-text","telephony","telnyx","tts","twilio-migration","voice-agents","voice-ai","webrtc","windsurf"],"license":"mit","html_url":"https://github.com/team-telnyx/ai","pushed_at":"2026-04-21T22:09:49Z","description":"Official one-stop shop for AI Agents and developers building with Telnyx.","skill_md_sha":"300f4e947e78f3701464abd9e36a2ddc0e0bab38","skill_md_path":"skills/telnyx-porting-in-ruby/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-porting-in-ruby"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-porting-in-ruby","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-porting-in-ruby"},"updatedAt":"2026-04-22T06:54:45.960Z"}}