Class: Assinafy::Resources::FieldResource
- Inherits:
-
BaseResource
- Object
- BaseResource
- Assinafy::Resources::FieldResource
- Defined in:
- lib/assinafy/resources/field_resource.rb,
sig/assinafy.rbs
Overview
Field definitions (reusable input fields) and per-value validation.
See https://api.assinafy.com.br/v1/docs#field-definition for the documentation of these endpoints.
Constant Summary
Constants inherited from BaseResource
BaseResource::AUTH_HEADERS, BaseResource::PAGINATION_HEADERS, BaseResource::PATH_SEGMENT
Instance Method Summary collapse
-
#create(payload, account_id_override = nil) ⇒ Hash
Create a field definition.
-
#delete(field_id, account_id_override = nil) ⇒ nil
Delete a field definition.
-
#get(field_id, account_id_override = nil) ⇒ Hash
Fetch a field definition by ID.
-
#list(params = {}, account_id_override = nil) ⇒ Hash{Symbol=>Array,nil}
List field definitions.
-
#types ⇒ Array<Hash{String=>String}>
List the catalog of supported field types.
-
#update(field_id, payload, account_id_override = nil) ⇒ Hash
Update a field definition.
-
#validate(field_id, value, account_id_override = nil, signer_access_code: nil) ⇒ Hash{String=>Object}
Validate a single value against a field definition.
-
#validate_multiple(values, account_id_override = nil, signer_access_code: nil) ⇒ Array<Hash>
Validate many
{ field_id:, value: }pairs in a single call.
Methods inherited from BaseResource
Constructor Details
This class inherits a constructor from Assinafy::Resources::BaseResource
Instance Method Details
#create(payload, account_id_override = nil) ⇒ Hash
Create a field definition.
39 40 41 42 43 44 45 46 |
# File 'lib/assinafy/resources/field_resource.rb', line 39 def create(payload, account_id_override = nil) acc_id = account_id(account_id_override) body = body_params(require_payload(payload)) call('Failed to create field definition') do http_post("accounts/#{acc_id}/fields", body) end end |
#delete(field_id, account_id_override = nil) ⇒ nil
Delete a field definition. Fields used by any document cannot be deleted.
170 171 172 173 174 175 176 177 |
# File 'lib/assinafy/resources/field_resource.rb', line 170 def delete(field_id, account_id_override = nil) acc_id = account_id(account_id_override) fid = require_id(field_id, 'Field ID') call_void('Failed to delete field definition') do http_delete("accounts/#{acc_id}/fields/#{fid}") end end |
#get(field_id, account_id_override = nil) ⇒ Hash
Fetch a field definition by ID.
108 109 110 111 112 113 114 115 |
# File 'lib/assinafy/resources/field_resource.rb', line 108 def get(field_id, account_id_override = nil) acc_id = account_id(account_id_override) fid = require_id(field_id, 'Field ID') call('Failed to fetch field definition') do http_get("accounts/#{acc_id}/fields/#{fid}") end end |
#list(params = {}, account_id_override = nil) ⇒ Hash{Symbol=>Array,nil}
List field definitions.
NOTE: this endpoint does not send pagination headers, so meta is always
nil here (unlike other list endpoints which return a pagination Hash).
78 79 80 81 82 83 84 |
# File 'lib/assinafy/resources/field_resource.rb', line 78 def list(params = {}, account_id_override = nil) acc_id = account_id(account_id_override) call_list('Failed to list field definitions') do http_get("accounts/#{acc_id}/fields", params) end end |
#types ⇒ Array<Hash{String=>String}>
List the catalog of supported field types.
275 276 277 278 279 |
# File 'lib/assinafy/resources/field_resource.rb', line 275 def types call_array('Failed to list field types') do http_get('field-types') end end |
#update(field_id, payload, account_id_override = nil) ⇒ Hash
Update a field definition. The update endpoint accepts only name,
regex, and is_active (unlike #create, it does not accept type
or is_required).
148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/assinafy/resources/field_resource.rb', line 148 def update(field_id, payload, account_id_override = nil) acc_id = account_id(account_id_override) fid = require_id(field_id, 'Field ID') raw = require_payload(payload) body = body_params(raw) body['regex'] = nil if (raw.key?(:regex) && raw[:regex].nil?) || (raw.key?('regex') && raw['regex'].nil?) call('Failed to update field definition') do http_put("accounts/#{acc_id}/fields/#{fid}", body) end end |
#validate(field_id, value, account_id_override = nil, signer_access_code: nil) ⇒ Hash{String=>Object}
Validate a single value against a field definition.
The OpenAPI declares workspace Authorization. The deployed API also
accepts signer-access-code authentication; pass signer_access_code:
to use that compatibility path without sending workspace credentials.
202 203 204 205 206 207 208 209 210 211 212 213 |
# File 'lib/assinafy/resources/field_resource.rb', line 202 def validate(field_id, value, account_id_override = nil, signer_access_code: nil) acc_id = account_id(account_id_override) fid = require_id(field_id, 'Field ID') raise ValidationError.new('Field value is required') if value.nil? access_code = signer_access_code.nil? ? nil : require_signer_access_code(signer_access_code) call('Failed to validate field value') do http_post("accounts/#{acc_id}/fields/#{fid}/validate", body_params(value: value), { signer_access_code: access_code }, workspace_auth: access_code.nil?) end end |
#validate_multiple(values, account_id_override = nil, signer_access_code: nil) ⇒ Array<Hash>
Validate many { field_id:, value: } pairs in a single call.
As with #validate, signer-access-code support is a deployed-API compatibility extension beyond the current OpenAPI security declaration.
243 244 245 246 247 248 249 250 251 252 253 |
# File 'lib/assinafy/resources/field_resource.rb', line 243 def validate_multiple(values, account_id_override = nil, signer_access_code: nil) acc_id = account_id(account_id_override) list = require_array(values, 'Field values') access_code = signer_access_code.nil? ? nil : require_signer_access_code(signer_access_code) call_array('Failed to validate field values') do http_post("accounts/#{acc_id}/fields/validate-multiple", list.map { |item| field_value_payload(item) }, { signer_access_code: access_code }, workspace_auth: access_code.nil?) end end |