Class: Assinafy::Resources::SignerDocumentResource
- Inherits:
-
BaseResource
- Object
- BaseResource
- Assinafy::Resources::SignerDocumentResource
- Defined in:
- lib/assinafy/resources/signer_document_resource.rb,
sig/assinafy.rbs
Overview
Signer-authenticated views over a signer's assigned documents.
Authentication varies by endpoint (verified against the live API):
- #current/#document, #sign_multiple, #decline_multiple require the
signer-access-codeURL parameter. - #list accepts EITHER the workspace
X-Api-Keyheader OR the access code; passsigner_access_code:only when authenticating as the signer. - #download only needs the document/artifact IDs.
See https://api.assinafy.com.br/v1/docs#signer for the full documentation of these endpoints.
Constant Summary
Constants inherited from BaseResource
BaseResource::AUTH_HEADERS, BaseResource::PAGINATION_HEADERS, BaseResource::PATH_SEGMENT
Instance Method Summary collapse
-
#current(signer_id, signer_access_code:) ⇒ Hash
(also: #document)
Fetch the signer's "current" document (the one referenced by the access code).
-
#decline_multiple(document_ids, decline_reason:, signer_access_code:) ⇒ Array
Decline multiple documents in a single call.
-
#download(signer_id, document_id, artifact_name = 'certificated', signer_access_code: nil) ⇒ String
Download an artifact for one of the signer's documents.
-
#list(signer_id, params = {}, signer_access_code: nil) ⇒ Hash{Symbol=>Array,Hash}
List all documents the signer has access to, with pagination metadata.
-
#search(signer_id, query, params = {}, signer_access_code: nil) ⇒ Hash{Symbol=>Array,Hash}
Lightweight search over the signer's documents.
-
#sign_multiple(document_ids, signer_access_code:) ⇒ Array
Sign multiple virtual-method documents in a single call.
Methods inherited from BaseResource
Constructor Details
This class inherits a constructor from Assinafy::Resources::BaseResource
Instance Method Details
#current(signer_id, signer_access_code:) ⇒ Hash Also known as: document
Fetch the signer's "current" document (the one referenced by the access code).
Resolves the document, assignment, and current signer directly from the
access code; it does not require code verification or data confirmation.
The shape mirrors the signing endpoints, and assignment.items is
filtered to only the current signer's items.
50 51 52 53 54 55 56 57 |
# File 'lib/assinafy/resources/signer_document_resource.rb', line 50 def current(signer_id, signer_access_code:) sid = require_id(signer_id, 'Signer ID') access_code = require_signer_access_code(signer_access_code) call('Failed to fetch signer document') do http_get("signers/#{sid}/document", { signer_access_code: access_code }, workspace_auth: false) end end |
#decline_multiple(document_ids, decline_reason:, signer_access_code:) ⇒ Array
Decline multiple documents in a single call.
183 184 185 186 187 188 189 190 191 192 193 |
# File 'lib/assinafy/resources/signer_document_resource.rb', line 183 def decline_multiple(document_ids, decline_reason:, signer_access_code:) ids = require_array(document_ids, 'Document IDs').map { |id| require_id(id, 'Document ID') } reason = require_string(decline_reason, 'Decline reason') access_code = require_signer_access_code(signer_access_code) call_array('Failed to decline documents') do http_put('signers/documents/decline-multiple', body_params(document_ids: ids, decline_reason: reason), { signer_access_code: access_code }, workspace_auth: false) end end |
#download(signer_id, document_id, artifact_name = 'certificated', signer_access_code: nil) ⇒ String
Download an artifact for one of the signer's documents.
This endpoint is public (no auth required) — only the document and
artifact IDs are needed — so signer_access_code: is optional and
omitted from the query when nil.
215 216 217 218 219 220 221 222 223 224 225 226 227 228 |
# File 'lib/assinafy/resources/signer_document_resource.rb', line 215 def download(signer_id, document_id, artifact_name = 'certificated', signer_access_code: nil) sid = require_id(signer_id, 'Signer ID') did = require_id(document_id, 'Document ID') art = require_id(artifact_name, 'Artifact name') unless DocumentResource::ARTIFACT_TYPES.include?(art) raise ValidationError.new('Invalid artifact type', { artifact_name: artifact_name }) end require_signer_access_code(signer_access_code) unless signer_access_code.nil? call_binary('Failed to download signer document') do http_get("signers/#{sid}/documents/#{did}/download/#{art}", {}, workspace_auth: false) end end |
#list(signer_id, params = {}, signer_access_code: nil) ⇒ Hash{Symbol=>Array,Hash}
List all documents the signer has access to, with pagination metadata.
This endpoint accepts either the workspace X-Api-Key header or the
signer access code, so signer_access_code: is optional here; when nil
it is omitted from the query and the header auth is used.
94 95 96 97 98 99 100 101 102 |
# File 'lib/assinafy/resources/signer_document_resource.rb', line 94 def list(signer_id, params = {}, signer_access_code: nil) sid = require_id(signer_id, 'Signer ID') query, access_code = signer_query(params, signer_access_code) call_list('Failed to list signer documents') do http_get("signers/#{sid}/documents", query.merge(signer_access_code: access_code), workspace_auth: access_code.nil?) end end |
#search(signer_id, query, params = {}, signer_access_code: nil) ⇒ Hash{Symbol=>Array,Hash}
Lightweight search over the signer's documents. Like #list, this
accepts either the workspace X-Api-Key header or the signer access
code, so signer_access_code: is optional.
129 130 131 132 133 134 135 136 137 138 |
# File 'lib/assinafy/resources/signer_document_resource.rb', line 129 def search(signer_id, query, params = {}, signer_access_code: nil) sid = require_id(signer_id, 'Signer ID') filters, access_code = signer_query(params, signer_access_code) call_list('Failed to search signer documents') do http_get("signers/#{sid}/documents/search", filters.merge(search: query, signer_access_code: access_code), workspace_auth: access_code.nil?) end end |
#sign_multiple(document_ids, signer_access_code:) ⇒ Array
Sign multiple virtual-method documents in a single call.
Each document must be prepared for the "virtual" signature method.
156 157 158 159 160 161 162 163 164 165 |
# File 'lib/assinafy/resources/signer_document_resource.rb', line 156 def sign_multiple(document_ids, signer_access_code:) ids = require_array(document_ids, 'Document IDs').map { |id| require_id(id, 'Document ID') } access_code = require_signer_access_code(signer_access_code) call_array('Failed to sign documents') do http_put('signers/documents/sign-multiple', body_params(document_ids: ids), { signer_access_code: access_code }, workspace_auth: false) end end |