Class: Pinnacle::Forms::Client
- Inherits:
-
Object
- Object
- Pinnacle::Forms::Client
- Defined in:
- lib/pinnacle/forms/client.rb
Instance Method Summary collapse
-
#create(request_options: {}, **params) ⇒ Pinnacle::Types::Form
Create a hosted form without sending it.
-
#get(request_options: {}, **params) ⇒ Pinnacle::Types::Form
Retrieve a form by id.
- #initialize(client:) ⇒ void constructor
-
#list(request_options: {}, **params) ⇒ Pinnacle::Types::ListFormsResponse
Paginated list of forms on your team, sorted by creation date (newest first).
-
#send_(request_options: {}, **params) ⇒ Pinnacle::Forms::Types::FormsSendResponse
Send a form to a recipient over SMS or RCS, or mint a standalone submission URL.
- #submissions ⇒ Pinnacle::Submissions::Client
-
#update(request_options: {}, **params) ⇒ Pinnacle::Types::Form
Partial update.
Constructor Details
#initialize(client:) ⇒ void
9 10 11 |
# File 'lib/pinnacle/forms/client.rb', line 9 def initialize(client:) @client = client end |
Instance Method Details
#create(request_options: {}, **params) ⇒ Pinnacle::Types::Form
Create a hosted form without sending it.
Returns the form object including its public URL — ‘forms.pinnacle.sh/form_id`.
To also deliver the URL to a recipient over SMS or RCS in a single call, use [‘POST /forms/send`](/api-reference/forms/send-form).
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/pinnacle/forms/client.rb', line 137 def create(request_options: {}, **params) params = Pinnacle::Internal::Types::Utils.normalize_keys(params) request = Pinnacle::Internal::JSON::Request.new( base_url: [:base_url], method: "POST", path: "forms", body: params, request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Pinnacle::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Pinnacle::Types::Form.load(response.body) else error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |
#get(request_options: {}, **params) ⇒ Pinnacle::Types::Form
Retrieve a form by id. Includes submission count, last submission timestamp, and archive state.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/pinnacle/forms/client.rb', line 25 def get(request_options: {}, **params) params = Pinnacle::Internal::Types::Utils.normalize_keys(params) request = Pinnacle::Internal::JSON::Request.new( base_url: [:base_url], method: "GET", path: "forms/#{URI.encode_uri_component(params[:id].to_s)}", request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Pinnacle::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Pinnacle::Types::Form.load(response.body) else error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |
#list(request_options: {}, **params) ⇒ Pinnacle::Types::ListFormsResponse
Paginated list of forms on your team, sorted by creation date (newest first). Includes archived forms.
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/pinnacle/forms/client.rb', line 98 def list(request_options: {}, **params) params = Pinnacle::Internal::Types::Utils.normalize_keys(params) request = Pinnacle::Internal::JSON::Request.new( base_url: [:base_url], method: "POST", path: "forms/list", body: Pinnacle::Forms::Types::ListFormsParams.new(params).to_h, request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Pinnacle::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Pinnacle::Types::ListFormsResponse.load(response.body) else error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |
#send_(request_options: {}, **params) ⇒ Pinnacle::Forms::Types::FormsSendResponse
Send a form to a recipient over SMS or RCS, or mint a standalone submission URL.
Pass ‘form` as either an existing form id (`form_*`) or an inline `{ fields, … }` definition to mint a new form for this send.
The delivery channel is inferred from ‘from`:
-
‘from: “agent_*”` → RCS (with optional SMS `fallback`)
-
‘from: “+E.164”` → SMS
When ‘to` is provided, Pinnacle dispatches a message whose body contains the submission URL and the recipient is recorded on the response: `submission.to` echoes the same E.164 number and `message_id` is the id of the outbound SMS/RCS.
When ‘to` is omitted, no message is sent — `submission.to` and `message_id` are both `null` — which is useful for embedding the URL in your own outreach.
On completion, a ‘FORM.SUBMISSION` webhook event is delivered to webhooks subscribed to the sender. See [Receiving Messages and User Events](/guides/messages/receiving).
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/pinnacle/forms/client.rb', line 188 def send_(request_options: {}, **params) params = Pinnacle::Internal::Types::Utils.normalize_keys(params) request = Pinnacle::Internal::JSON::Request.new( base_url: [:base_url], method: "POST", path: "forms/send", body: Pinnacle::Types::SendFormParams.new(params).to_h, request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Pinnacle::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Pinnacle::Forms::Types::FormsSendResponse.load(response.body) else error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |
#submissions ⇒ Pinnacle::Submissions::Client
212 213 214 |
# File 'lib/pinnacle/forms/client.rb', line 212 def submissions @submissions ||= Pinnacle::Forms::Submissions::Client.new(client: @client) end |
#update(request_options: {}, **params) ⇒ Pinnacle::Types::Form
Partial update. Only keys present in the body are applied. Archived forms (non-null ‘archived_at`) cannot be updated — restore the form by setting `archived_at: null` in a PATCH first.
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/pinnacle/forms/client.rb', line 60 def update(request_options: {}, **params) params = Pinnacle::Internal::Types::Utils.normalize_keys(params) request_data = Pinnacle::Forms::Types::UpdateFormParams.new(params).to_h non_body_param_names = ["id"] body = request_data.except(*non_body_param_names) request = Pinnacle::Internal::JSON::Request.new( base_url: [:base_url], method: "PATCH", path: "forms/#{URI.encode_uri_component(params[:id].to_s)}", body: body, request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Pinnacle::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Pinnacle::Types::Form.load(response.body) else error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |