Class: Veryfi::Api::Document

Inherits:
Object
  • Object
show all
Defined in:
lib/veryfi/api/document.rb

Overview

Receipts & invoices endpoints (/partner/documents/).

Constant Summary collapse

CATEGORIES =

Default categories sent with process / process_url when the caller does not supply their own :categories list. Veryfi will bucket the document into one of these values for the category field on the response.

[
  "Advertising & Marketing",
  "Automotive",
  "Bank Charges & Fees",
  "Legal & Professional Services",
  "Insurance",
  "Meals & Entertainment",
  "Office Supplies & Software",
  "Taxes & Licenses",
  "Travel",
  "Rent & Lease",
  "Repairs & Maintenance",
  "Payroll",
  "Utilities",
  "Job Supplies",
  "Grocery"
].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request) ⇒ Document

Returns a new instance of Document.



35
36
37
# File 'lib/veryfi/api/document.rb', line 35

def initialize(request)
  @request = request
end

Instance Attribute Details

#requestObject (readonly)

Returns the value of attribute request.



33
34
35
# File 'lib/veryfi/api/document.rb', line 33

def request
  @request
end

Instance Method Details

#all(params = {}) ⇒ Veryfi::Resource

List previously processed documents.

Parameters:

  • params (Hash) (defaults to: {})

    query-string parameters (all optional)

Options Hash (params):

  • :q (String)

    free-text search query

  • :external_id (String)

    filter by your own document id

  • :tag (String)

    filter by tag name

  • :created__gt (String)

    "YYYY-MM-DD HH:MM:SS" — strictly after

  • :created__gte (String)

    "YYYY-MM-DD HH:MM:SS" — after or equal

  • :created__lt (String)

    "YYYY-MM-DD HH:MM:SS" — strictly before

  • :created__lte (String)

    "YYYY-MM-DD HH:MM:SS" — before or equal

  • :page (Integer)

    1-indexed page number (default 1)

  • :page_size (Integer)

    items per page (default 50)

Returns:

See Also:



55
56
57
# File 'lib/veryfi/api/document.rb', line 55

def all(params = {})
  request.get("/partner/documents/", params)
end

#delete(id) ⇒ Veryfi::Resource

Delete a document.

Parameters:

  • id (Integer)

Returns:

See Also:



182
183
184
# File 'lib/veryfi/api/document.rb', line 182

def delete(id)
  request.delete("/partner/documents/#{id}")
end

#get(id, params = {}) ⇒ Veryfi::Resource

Fetch a single document by id.

Parameters:

  • id (Integer)

    document id

  • params (Hash) (defaults to: {})

    query-string parameters (all optional)

Options Hash (params):

  • :bounding_boxes (Boolean) — default: `false`

    Include bounding boxes in the response.

  • :confidence_details (Boolean) — default: `false`

    Include per-field confidence scores.

Returns:

See Also:



158
159
160
# File 'lib/veryfi/api/document.rb', line 158

def get(id, params = {})
  request.get("/partner/documents/#{id}", params)
end

#process(raw_params) ⇒ Veryfi::Resource

Upload a local file and extract its data.

Required:

  • :file_path — path on disk to the file to process.

All other keys below are optional. Omitting a key is equivalent to passing its default value — both produce the same API call. Pass a key explicitly only when you want a non-default value or when you want to make the intent explicit in your code.

Parameters:

  • raw_params (Hash)

Options Hash (raw_params):

  • :file_path (String)

    required. Local path to the file.

  • :file_name (String) — default: basename of `:file_path`, extension stripped

    Display name sent to Veryfi.

  • :categories (Array<String>) — default: {CATEGORIES}

    Restrict Veryfi's categorization to this set.

  • :tags (Array<String>) — default: `nil`

    Tags to attach to the resulting document.

  • :auto_delete (Boolean) — default: `false`

    If true, delete from Veryfi storage right after extraction.

  • :boost_mode (Boolean) — default: `false`

    Skip data enrichment for faster, less-accurate processing.

  • :async (Boolean) — default: `false`

    Return immediately; the document keeps processing server-side. Prefer the dedicated async endpoint where available.

  • :external_id (String) — default: `nil`

    Your own identifier to associate with the document.

  • :max_pages_to_process (Integer) — default: `nil` = all pages

    Cap pages read, starting from page 1.

  • :bounding_boxes (Hash) — default: `false`

    Return bounding-box info for extracted fields.

  • :confidence_details (Hash) — default: `false`

    Return confidence score details.

Returns:

See Also:



96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/veryfi/api/document.rb', line 96

def process(raw_params)
  params = setup_create_params(raw_params)

  file_content = File.read(params[:file_path])
  file_data = Base64.encode64(file_content).gsub("\n", "")
  file_name = params[:file_name] || File.basename(params[:file_path], ".*")

  payload = params.reject { |k| k == :file_path }.merge(
    file_name: file_name,
    file_data: file_data
  )

  request.post("/partner/documents/", payload)
end

#process_bulk(file_urls) ⇒ Veryfi::Resource

Note:

This endpoint must be enabled for your account. Contact support@veryfi.com.

Bulk-process many documents from URLs in a single call.

Parameters:

  • file_urls (Array<String>)

    publicly accessible URLs

Returns:

See Also:



144
145
146
# File 'lib/veryfi/api/document.rb', line 144

def process_bulk(file_urls)
  request.post("/partner/documents/bulk/", file_urls: file_urls)
end

#process_url(raw_params) ⇒ Veryfi::Resource

Process a document from a public URL.

Either :file_url (single) or :file_urls (multiple, processed as one logical document) must be present. All other params behave the same as in #process.

Parameters:

  • raw_params (Hash)

Options Hash (raw_params):

  • :file_url (String)

    publicly accessible URL to a single file

  • :file_urls (Array<String>)

    list of publicly accessible URLs

  • :categories (Array<String>) — default: {CATEGORIES}
  • :tags (Array<String>) — default: `nil`
  • :auto_delete (Boolean) — default: `false`
  • :boost_mode (Boolean) — default: `false`
  • :async (Boolean) — default: `false`
  • :external_id (String) — default: `nil`
  • :max_pages_to_process (Integer) — default: `nil` = all pages

Returns:

See Also:



131
132
133
134
135
# File 'lib/veryfi/api/document.rb', line 131

def process_url(raw_params)
  params = setup_create_params(raw_params)

  request.post("/partner/documents/", params)
end

#update(id, params) ⇒ Veryfi::Resource

Update writable fields on a previously processed document.

Examples:

client.document.update(44_691_518, date: "2021-01-01", notes: "look what I did")

Parameters:

  • id (Integer)

    document id

  • params (Hash)

    any writable fields you want to change

Returns:

See Also:



172
173
174
# File 'lib/veryfi/api/document.rb', line 172

def update(id, params)
  request.put("/partner/documents/#{id}", params)
end