voicetel 2.2.10 → 2.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +12 -11
- data/lib/voicetel/internal/transport.rb +4 -2
- data/lib/voicetel/models/account.rb +168 -0
- data/lib/voicetel/models/acl.rb +59 -0
- data/lib/voicetel/models/authentication.rb +52 -0
- data/lib/voicetel/models/base.rb +94 -0
- data/lib/voicetel/models/common.rb +20 -0
- data/lib/voicetel/models/e911.rb +72 -0
- data/lib/voicetel/models/gateways.rb +52 -0
- data/lib/voicetel/models/i_numbering.rb +140 -0
- data/lib/voicetel/models/lookups.rb +29 -0
- data/lib/voicetel/models/messaging.rb +143 -0
- data/lib/voicetel/models/numbers.rb +276 -0
- data/lib/voicetel/models/support.rb +191 -0
- data/lib/voicetel/models.rb +18 -0
- data/lib/voicetel/resources/account.rb +35 -12
- data/lib/voicetel/resources/acl.rb +14 -5
- data/lib/voicetel/resources/authentication.rb +14 -7
- data/lib/voicetel/resources/base.rb +6 -0
- data/lib/voicetel/resources/e911.rb +22 -6
- data/lib/voicetel/resources/gateways.rb +23 -6
- data/lib/voicetel/resources/i_numbering.rb +23 -8
- data/lib/voicetel/resources/lookups.rb +8 -2
- data/lib/voicetel/resources/messaging.rb +28 -8
- data/lib/voicetel/resources/numbers.rb +121 -28
- data/lib/voicetel/resources/support.rb +36 -10
- data/lib/voicetel/version.rb +3 -3
- data/lib/voicetel.rb +1 -0
- data/sig/voicetel.rbs +1252 -79
- data/voicetel.gemspec +3 -3
- metadata +18 -5
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
|
|
5
|
+
module VoiceTel
|
|
6
|
+
module Models
|
|
7
|
+
# ------------------------------------------------------------- requests ---
|
|
8
|
+
# Body for POST /v2.2/orders. numbers holds up to 100 entries — plain
|
|
9
|
+
# 10-digit strings or OrderNumberSpec objects for per-number routing.
|
|
10
|
+
OrderCreateRequest = Data.define(:numbers) do
|
|
11
|
+
include Request
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Per-number routing override inside OrderCreateRequest.
|
|
15
|
+
OrderNumberSpec = Data.define(:number, :route) do
|
|
16
|
+
include Request
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# LIDB feature for a port-in TN.
|
|
20
|
+
PortFeatureLidb = Data.define(:name) do
|
|
21
|
+
include Request
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Routing feature for a port-in TN.
|
|
25
|
+
PortFeatureRouting = Data.define(:gateway_id) do
|
|
26
|
+
include Request
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# SMS feature for a port-in TN.
|
|
30
|
+
PortFeatureSms = Data.define(:campaign_id) do
|
|
31
|
+
include Request
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Per-TN feature configuration applied after a port completes. routing,
|
|
35
|
+
# lidb, and sms may be the matching feature objects or plain hashes.
|
|
36
|
+
PortFeature = Data.define(:number, :routing, :lidb, :sms) do
|
|
37
|
+
include Request
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Body for POST /v2.2/ports — submit a port-in order.
|
|
41
|
+
PortSubmitRequest = Data.define(
|
|
42
|
+
:did, :name, :name_type, :lc_btn, :lc_account_number, :street_number, :street,
|
|
43
|
+
:street_type, :city, :state, :zip, :country, :auth_person, :street_prefix,
|
|
44
|
+
:street_suffix, :floor, :room, :building, :unit_value, :desired_due_date, :pin,
|
|
45
|
+
:features
|
|
46
|
+
) do
|
|
47
|
+
include Request
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# ------------------------------------------------- entities & data ---
|
|
51
|
+
# A single TN available for assignment.
|
|
52
|
+
InventoryItem = Data.define(:number, :rate_center, :city, :province, :lata) do
|
|
53
|
+
extend Base
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# One aggregated availability bucket. Which members are populated
|
|
57
|
+
# depends on the countBy of the query.
|
|
58
|
+
InventoryCoverageItem = Data.define(
|
|
59
|
+
:count, :npa, :nxx, :block, :city, :rc_abbre, :lata, :loc_state
|
|
60
|
+
) do
|
|
61
|
+
extend Base
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# One row in the customer port-status list.
|
|
65
|
+
PortSummary = Data.define(:status, :id, :pid, :foc, :created_at, :message) do
|
|
66
|
+
extend Base
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Full detail for a single port-in record.
|
|
70
|
+
PortDetail = Data.define(
|
|
71
|
+
:status, :id, :pid, :name, :email, :foc, :created_at, :numbers, :message
|
|
72
|
+
) do
|
|
73
|
+
extend Base
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# ------------------------------------------------------ response data ---
|
|
77
|
+
# Data payload from GET /v2.2/inventory.
|
|
78
|
+
InventorySearchData = Data.define(:numbers) do
|
|
79
|
+
extend Base
|
|
80
|
+
|
|
81
|
+
def self.nested
|
|
82
|
+
{ numbers: InventoryItem }
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# Data payload from GET /v2.2/inventory/coverage.
|
|
87
|
+
InventoryCoverageData = Data.define(:coverage) do
|
|
88
|
+
extend Base
|
|
89
|
+
|
|
90
|
+
def self.nested
|
|
91
|
+
{ coverage: InventoryCoverageItem }
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# One row in OrderCreateData.failed.
|
|
96
|
+
OrderFailedEntry = Data.define(:number, :reason) do
|
|
97
|
+
extend Base
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Data payload from POST /v2.2/orders. amount_charged is the amount
|
|
101
|
+
# deducted from the account balance.
|
|
102
|
+
OrderCreateData = Data.define(:order_id, :amount_charged, :numbers_ordered, :failed) do
|
|
103
|
+
extend Base
|
|
104
|
+
|
|
105
|
+
def self.nested
|
|
106
|
+
{ failed: OrderFailedEntry }
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Data payload from GET /v2.2/ports.
|
|
111
|
+
PortListData = Data.define(:ports) do
|
|
112
|
+
extend Base
|
|
113
|
+
|
|
114
|
+
def self.nested
|
|
115
|
+
{ ports: PortSummary }
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# Data payload from GET /v2.2/ports/{id}.
|
|
120
|
+
PortDetailData = Data.define(:port) do
|
|
121
|
+
extend Base
|
|
122
|
+
|
|
123
|
+
def self.nested
|
|
124
|
+
{ port: PortDetail }
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Data payload from POST /v2.2/ports.
|
|
129
|
+
PortSubmitData = Data.define(:pid, :ticket, :message, :loa_url, :port_url) do
|
|
130
|
+
extend Base
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# Data payload from GET /v2.2/ports/availability/{number}.
|
|
134
|
+
PortAvailabilityData = Data.define(
|
|
135
|
+
:number, :portable, :losing_carrier, :local_routing_number, :rate_center_tier, :reason
|
|
136
|
+
) do
|
|
137
|
+
extend Base
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
|
|
5
|
+
module VoiceTel
|
|
6
|
+
module Models
|
|
7
|
+
# Data payload from GET /v2.2/cnam/{number}.
|
|
8
|
+
CnamData = Data.define(:cnam, :number) do
|
|
9
|
+
extend Base
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# LRN dip result. Returned nested inside LrnLookupData for the full
|
|
13
|
+
# /v2.2/lrn/{n}/{ani} form.
|
|
14
|
+
LrnData = Data.define(
|
|
15
|
+
:lrn, :state, :city, :rc, :lata, :ocn, :lec, :lec_type, :jurisdiction, :local
|
|
16
|
+
) do
|
|
17
|
+
extend Base
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Data payload from GET /v2.2/lrn/{number}/{ani}.
|
|
21
|
+
LrnLookupData = Data.define(:ani, :destination, :lrn) do
|
|
22
|
+
extend Base
|
|
23
|
+
|
|
24
|
+
def self.nested
|
|
25
|
+
{ lrn: LrnData }
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
|
|
5
|
+
module VoiceTel
|
|
6
|
+
module Models
|
|
7
|
+
# ------------------------------------------------------------- requests ---
|
|
8
|
+
# Body for POST /v2.2/messages — send an SMS or MMS. media_urls switches
|
|
9
|
+
# the message type to MMS (and unlocks subject). Note the wire field
|
|
10
|
+
# names fromNumber / toNumber.
|
|
11
|
+
MessageSendRequest = Data.define(
|
|
12
|
+
:from_number, :to_number, :text, :subject, :media_urls
|
|
13
|
+
) do
|
|
14
|
+
include Request
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Body for POST /v2.2/messaging/brands.
|
|
18
|
+
MessagingBrandCreateRequest = Data.define(
|
|
19
|
+
:messaging_brand_id, :messaging_brand_name, :messaging_brand_description
|
|
20
|
+
) do
|
|
21
|
+
include Request
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Body for POST /v2.2/messaging/campaigns. Passed through to the
|
|
25
|
+
# campaign registration service; campaign_class_name (from the campaign
|
|
26
|
+
# registry) and campaign_start_date (today) are auto-populated if
|
|
27
|
+
# omitted.
|
|
28
|
+
MessagingCampaignCreateRequest = Data.define(
|
|
29
|
+
:messaging_brand_id, :external_campaign_id, :campaign_description,
|
|
30
|
+
:campaign_class_name, :campaign_start_date
|
|
31
|
+
) do
|
|
32
|
+
include Request
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# ------------------------------------------------------ response data ---
|
|
36
|
+
# Per-record fields inside MessageRecord. Shape varies by type:
|
|
37
|
+
# sms/mms populate source_number, destination_number, direction, rate,
|
|
38
|
+
# message; dlr populates source_number and destination_number only.
|
|
39
|
+
MessageRecordValue = Data.define(
|
|
40
|
+
:source_number, :destination_number, :direction, :rate, :number, :message
|
|
41
|
+
) do
|
|
42
|
+
extend Base
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# One row in MessageHistoryData.messages. key is a composite range key —
|
|
46
|
+
# for sms/mms [destinationNumber, timestamp]; for dlr
|
|
47
|
+
# [accountId, fromNumberWithCountryCode, timestamp] — with mixed types.
|
|
48
|
+
MessageRecord = Data.define(:id, :key, :value) do
|
|
49
|
+
extend Base
|
|
50
|
+
|
|
51
|
+
def self.nested
|
|
52
|
+
{ value: MessageRecordValue }
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Data payload from GET /v2.2/messages.
|
|
57
|
+
MessageHistoryData = Data.define(:number, :type, :from_ts, :to_ts, :messages) do
|
|
58
|
+
extend Base
|
|
59
|
+
|
|
60
|
+
def self.nested
|
|
61
|
+
{ messages: MessageRecord }
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Data payload from POST /v2.2/messages.
|
|
66
|
+
MessageSendData = Data.define(
|
|
67
|
+
:id, :type, :from_number, :to_number, :parts, :subject, :media_urls
|
|
68
|
+
) do
|
|
69
|
+
extend Base
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Status payload for brand registration. status_code is the HTTP status
|
|
73
|
+
# as a string; "200" on success.
|
|
74
|
+
BrandRegistrationResult = Data.define(:status_code, :status) do
|
|
75
|
+
extend Base
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Data payload from POST /v2.2/messaging/brands.
|
|
79
|
+
MessagingBrandCreateData = Data.define(:result) do
|
|
80
|
+
extend Base
|
|
81
|
+
|
|
82
|
+
def self.nested
|
|
83
|
+
{ result: BrandRegistrationResult }
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Status payload for campaign registration.
|
|
88
|
+
CampaignRegistrationResult = Data.define(:status_code, :status) do
|
|
89
|
+
extend Base
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Data payload from POST /v2.2/messaging/campaigns.
|
|
93
|
+
MessagingCampaignCreateData = Data.define(:result) do
|
|
94
|
+
extend Base
|
|
95
|
+
|
|
96
|
+
def self.nested
|
|
97
|
+
{ result: CampaignRegistrationResult }
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# One carrier's latest DCA decision in CampaignDca. status is one of
|
|
102
|
+
# ACTIVE, REJECTED, SUSPENDED, UNSUNSPENDED or TERMINATED; detail is the
|
|
103
|
+
# reviewer's note, as given.
|
|
104
|
+
CampaignDcaCarrier = Data.define(:carrier, :status, :detail, :updated_at) do
|
|
105
|
+
extend Base
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# Carrier (DCA) review progress for a campaign. nil for
|
|
109
|
+
# CAMPAIGN_INVALID_ID statuses.
|
|
110
|
+
CampaignDca = Data.define(:election_complete, :elected_carriers, :carriers) do
|
|
111
|
+
extend Base
|
|
112
|
+
|
|
113
|
+
def self.nested
|
|
114
|
+
{ carriers: CampaignDcaCarrier }
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# A single campaign and its current numbers. status is one of
|
|
119
|
+
# CAMPAIGN_DCA_COMPLETE (ready: carrier review finished, numbers
|
|
120
|
+
# assigned), CAMPAIGN_DCA_COMPLETE_NO_NUMBERS_ASSIGNED,
|
|
121
|
+
# CAMPAIGN_PENDING_DCA (active at the campaign registry, but carrier
|
|
122
|
+
# (DCA) review is not finished yet; numbers cannot be enabled until it
|
|
123
|
+
# is), CAMPAIGN_DCA_REJECTED (a carrier's DCA rejected or suspended the
|
|
124
|
+
# campaign; see dca.carriers), CAMPAIGN_<registry status>, or
|
|
125
|
+
# CAMPAIGN_INVALID_ID.
|
|
126
|
+
CampaignStatusItem = Data.define(:id, :status, :numbers, :dca) do
|
|
127
|
+
extend Base
|
|
128
|
+
|
|
129
|
+
def self.nested
|
|
130
|
+
{ dca: CampaignDca }
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# Data payload from GET /v2.2/messaging/campaigns.
|
|
135
|
+
MessagingCampaignStatusData = Data.define(:campaigns) do
|
|
136
|
+
extend Base
|
|
137
|
+
|
|
138
|
+
def self.nested
|
|
139
|
+
{ campaigns: CampaignStatusItem }
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
|
|
5
|
+
module VoiceTel
|
|
6
|
+
module Models
|
|
7
|
+
# ------------------------------------------------------------- requests ---
|
|
8
|
+
# Body for POST /v2.2/numbers.
|
|
9
|
+
NumberAddRequest = Data.define(:number, :route) do
|
|
10
|
+
include Request
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Body for PUT /v2.2/numbers/{number}/route.
|
|
14
|
+
NumberRouteRequest = Data.define(:route) do
|
|
15
|
+
include Request
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Body for PUT /v2.2/numbers/{number}/cnam — inbound CNAM toggle.
|
|
19
|
+
NumberCnamRequest = Data.define(:enabled) do
|
|
20
|
+
include Request
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Body for PUT /v2.2/numbers/{number}/lidb — outbound caller name.
|
|
24
|
+
NumberLidbRequest = Data.define(:cnam, :customer_order_reference) do
|
|
25
|
+
include Request
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Body for PUT /v2.2/numbers/{number}/fax.
|
|
29
|
+
NumberFaxRequest = Data.define(:email) do
|
|
30
|
+
include Request
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Body for PUT /v2.2/numbers/{number}/forward.
|
|
34
|
+
NumberForwardRequest = Data.define(:destination) do
|
|
35
|
+
include Request
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Body for PUT /v2.2/numbers/{number}/translation.
|
|
39
|
+
NumberTranslationRequest = Data.define(:translation) do
|
|
40
|
+
include Request
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Body for PUT /v2.2/numbers/{number}/sms. type is "email", "webhook",
|
|
44
|
+
# or "sip"; resource is the matching destination.
|
|
45
|
+
NumberSmsRequest = Data.define(:type, :resource) do
|
|
46
|
+
include Request
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Body for PATCH /v2.2/numbers/{number}/messaging — update inbound
|
|
50
|
+
# and/or outbound routing. route_in must be a numbers_sms row id owned
|
|
51
|
+
# by the authenticated account, or 0 to detach. route_out is the
|
|
52
|
+
# outbound carrier id — 0 (outbound off) or the route the number is
|
|
53
|
+
# enabled on; to move a number to another campaign or messaging path
|
|
54
|
+
# use PUT /v2.2/numbers/{number}/messaging-campaign.
|
|
55
|
+
NumberMessagingPatchRequest = Data.define(:route_in, :route_out) do
|
|
56
|
+
include Request
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Body for PUT /v2.2/numbers/{number}/messaging-campaign.
|
|
60
|
+
NumberCampaignAssignRequest = Data.define(:campaign_id) do
|
|
61
|
+
include Request
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Body for PATCH /v2.2/numbers/{number} — move to another account.
|
|
65
|
+
NumberMoveRequest = Data.define(:account_id, :route) do
|
|
66
|
+
include Request
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Body for PATCH /v2.2/numbers/{number}/port-out-pin.
|
|
70
|
+
PortOutPinUpdateRequest = Data.define(:pin) do
|
|
71
|
+
include Request
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# ------------------------------------------------- entities & data ---
|
|
75
|
+
# Per-number routing / feature state. Returned by GET /v2.2/numbers and
|
|
76
|
+
# GET /v2.2/numbers/{number}.
|
|
77
|
+
NumberDetail = Data.define(
|
|
78
|
+
:number, :translated, :route, :gateway, :cnam, :forward, :forward_to, :carrier,
|
|
79
|
+
:sms_enabled, :fax_enabled
|
|
80
|
+
) do
|
|
81
|
+
extend Base
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# The campaign bound to a number, with its CSP-side status.
|
|
85
|
+
CampaignBinding = Data.define(:id, :network, :status, :upstream_cnp_id) do
|
|
86
|
+
extend Base
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# State of an asynchronous (path C) enablement. Attached to a campaign
|
|
90
|
+
# assignment (status "pending") or surfaced by
|
|
91
|
+
# GET /v2.2/numbers/{number}/messaging while provisioning is in flight.
|
|
92
|
+
# state is one of queued, hosting, assigning, routing, done, or failed
|
|
93
|
+
# (queued -> hosting -> assigning -> routing -> done, or failed — see
|
|
94
|
+
# message; the number keeps its previous routing until done).
|
|
95
|
+
MessagingEnablementJob = Data.define(
|
|
96
|
+
:campaign_id, :state, :message, :created_at, :updated_at
|
|
97
|
+
) do
|
|
98
|
+
extend Base
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# Current messaging routing state for one number.
|
|
102
|
+
#
|
|
103
|
+
# network — messaging path the number is currently on ("A", "B", or
|
|
104
|
+
# "C"); nil when carrier is 0 or any non-messaging carrier. pending —
|
|
105
|
+
# async path-C enablement in progress, nil when none.
|
|
106
|
+
NumberMessagingState = Data.define(
|
|
107
|
+
:number, :on_account, :enabled, :carrier, :route_in, :resource, :network, :campaign,
|
|
108
|
+
:pending
|
|
109
|
+
) do
|
|
110
|
+
extend Base
|
|
111
|
+
|
|
112
|
+
def self.nested
|
|
113
|
+
{ campaign: CampaignBinding, pending: MessagingEnablementJob }
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Data payload from POST /v2.2/numbers.
|
|
118
|
+
NumberAddData = Data.define(:number, :route) do
|
|
119
|
+
extend Base
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# Data payload from PUT /v2.2/numbers/{number}/cnam.
|
|
123
|
+
NumberCnamData = Data.define(:number, :cnam) do
|
|
124
|
+
extend Base
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Data payload from GET/PUT /v2.2/numbers/{number}/fax.
|
|
128
|
+
NumberFaxData = Data.define(:number, :email) do
|
|
129
|
+
extend Base
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
# Data payload from PUT /v2.2/numbers/{number}/forward.
|
|
133
|
+
NumberForwardData = Data.define(:number, :forward_to) do
|
|
134
|
+
extend Base
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# Data payload from PUT /v2.2/numbers/{number}/lidb.
|
|
138
|
+
NumberLidbData = Data.define(:number, :cnam, :customer_order_reference, :carrier_status) do
|
|
139
|
+
extend Base
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
# Data payload from PATCH /v2.2/numbers/{number}/messaging. updated is
|
|
143
|
+
# the subset of {routeIn, routeOut} the request changed.
|
|
144
|
+
NumberMessagingPatchData = Data.define(:number, :updated) do
|
|
145
|
+
extend Base
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
# Data payload from PATCH /v2.2/numbers/{number}.
|
|
149
|
+
NumberMoveData = Data.define(:number, :account_id, :route) do
|
|
150
|
+
extend Base
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
# Data payload from PUT /v2.2/numbers/{number}/route.
|
|
154
|
+
NumberRouteData = Data.define(:number, :route) do
|
|
155
|
+
extend Base
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
# Data payload from GET/PUT /v2.2/numbers/{number}/sms.
|
|
159
|
+
NumberSmsData = Data.define(:number, :type, :resource) do
|
|
160
|
+
extend Base
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# Data payload from PUT /v2.2/numbers/{number}/translation.
|
|
164
|
+
NumberTranslationData = Data.define(:number, :translation) do
|
|
165
|
+
extend Base
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
# Data payload from PUT /v2.2/numbers/{number}/messaging-campaign —
|
|
169
|
+
# the result of binding a single number to a 10DLC campaign.
|
|
170
|
+
#
|
|
171
|
+
# status — "enabled" = bound now (path B); "already" = the number was
|
|
172
|
+
# already bound to this campaign (records reconciled, no new order);
|
|
173
|
+
# "pending" = accepted and being provisioned (path C) — poll
|
|
174
|
+
# GET /v2.2/numbers/{number}/messaging (pending) until state is done or
|
|
175
|
+
# failed.
|
|
176
|
+
#
|
|
177
|
+
# network — messaging path the campaign resolves to (from the CSP
|
|
178
|
+
# sharing record): "B" (assigned synchronously) or "C" (provisioned
|
|
179
|
+
# asynchronously, status "pending").
|
|
180
|
+
#
|
|
181
|
+
# upstream_cnp_id — CNP ID from the CSP sharing record: SB8TWLO = path
|
|
182
|
+
# B, BANDW = path C. (Campaigns on path A, SFL9UTQ, are being migrated
|
|
183
|
+
# and take no new numbers.)
|
|
184
|
+
#
|
|
185
|
+
# carrier — outbound carrier id the number routes through once enabled
|
|
186
|
+
# (19 = path B, 1 = path C). For a pending path-C enablement the number
|
|
187
|
+
# keeps its current routing until provisioning completes.
|
|
188
|
+
#
|
|
189
|
+
# already_assigned — true when the number was already bound to this
|
|
190
|
+
# campaign on the target messaging path; records are reconciled and no
|
|
191
|
+
# new network order is placed.
|
|
192
|
+
#
|
|
193
|
+
# order_id — network order id created for a path-B assignment. nil for
|
|
194
|
+
# path C (see job), idempotent no-ops, and assignments confirmed without
|
|
195
|
+
# a new order.
|
|
196
|
+
#
|
|
197
|
+
# previous_network — messaging path the number was bound to before this
|
|
198
|
+
# call ("A" or "B"), nil if there was no prior binding.
|
|
199
|
+
#
|
|
200
|
+
# warning — non-fatal condition detected during the assignment (for
|
|
201
|
+
# example a stale registration on the other messaging path whose removal
|
|
202
|
+
# has been requested).
|
|
203
|
+
#
|
|
204
|
+
# message — human-readable note for a pending enablement.
|
|
205
|
+
#
|
|
206
|
+
# job — async path-C enablement job, nil otherwise.
|
|
207
|
+
NumberMessagingCampaignAssignData = Data.define(
|
|
208
|
+
:number, :campaign_id, :status, :network, :upstream_cnp_id, :carrier,
|
|
209
|
+
:already_assigned, :order_id, :previous_network, :previous_network_cleared,
|
|
210
|
+
:warning, :message, :job
|
|
211
|
+
) do
|
|
212
|
+
extend Base
|
|
213
|
+
|
|
214
|
+
def self.nested
|
|
215
|
+
{ job: MessagingEnablementJob }
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
# Data payload from DELETE /v2.2/numbers/{number}/messaging-campaign.
|
|
220
|
+
NumberMessagingCampaignUnassignData = Data.define(
|
|
221
|
+
:number, :campaign_id, :network, :upstream_cnp_id, :unassigned
|
|
222
|
+
) do
|
|
223
|
+
extend Base
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
# One row in the failure list returned by bulk unassign.
|
|
227
|
+
CampaignUnassignFailure = Data.define(:number, :reason) do
|
|
228
|
+
extend Base
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
# Data payload from DELETE /v2.2/numbers/messaging-campaign (bulk).
|
|
232
|
+
NumbersMessagingCampaignUnassignData = Data.define(
|
|
233
|
+
:campaign_id, :network, :upstream_cnp_id, :unassigned_numbers, :failed
|
|
234
|
+
) do
|
|
235
|
+
extend Base
|
|
236
|
+
|
|
237
|
+
def self.nested
|
|
238
|
+
{ failed: CampaignUnassignFailure }
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
# Data payload from GET /v2.2/numbers.
|
|
243
|
+
NumbersListData = Data.define(:numbers) do
|
|
244
|
+
extend Base
|
|
245
|
+
|
|
246
|
+
def self.nested
|
|
247
|
+
{ numbers: NumberDetail }
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
# Data payload from GET /v2.2/numbers/messaging.
|
|
252
|
+
NumbersMessagingListData = Data.define(:numbers) do
|
|
253
|
+
extend Base
|
|
254
|
+
|
|
255
|
+
def self.nested
|
|
256
|
+
{ numbers: NumberMessagingState }
|
|
257
|
+
end
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
# Data payload from PATCH /v2.2/numbers/{number}/port-out-pin.
|
|
261
|
+
#
|
|
262
|
+
# The call is idempotent: a PIN is locked for 30 days once set, so a
|
|
263
|
+
# number that already has one returns it unchanged with changed=false;
|
|
264
|
+
# both cases return HTTP 200.
|
|
265
|
+
#
|
|
266
|
+
# number — ten-digit telephone number whose PIN is reported.
|
|
267
|
+
# port_out_pin — the port-out PIN now on file for this number (the value
|
|
268
|
+
# just set, or the existing value if the number was already locked).
|
|
269
|
+
# changed — true if this request set the PIN; false if the number
|
|
270
|
+
# already had one, which is locked for 30 days once set and is returned
|
|
271
|
+
# unchanged.
|
|
272
|
+
PortOutPinUpdateData = Data.define(:number, :port_out_pin, :changed) do
|
|
273
|
+
extend Base
|
|
274
|
+
end
|
|
275
|
+
end
|
|
276
|
+
end
|