This is a Crystal shard for integrating with Yoti for identification verification.
API documentation can be found on Yoti Developers guide.
-
Add the dependency to your
shard.yml
:dependencies: yoti: github: jwoertink/yoti-crystal-sdk
-
Run
shards install
require "yoti"
Yoti.configure do |config|
config.client_sdk_id = ENV["YOTI_CLIENT_SDK_ID"]
config.key_file_path = ENV['YOTI_KEY_FILE_PATH']
end
payload = Yoti::DocScan::SessionSpecification.build do |specification|
specification.with_user_tracking_id("<YOUR_USER_ID>")
.with_requested_checks {
Yoti::DocScan::SessionSpecification::RequestedCheck.build(specification.builder) do |requested_check|
requested_check.with_type("ID_DOCUMENT_AUTHENTICITY").with_config
end
Yoti::DocScan::SessionSpecification::RequestedCheck.build(specification.builder) do |requested_check|
requested_check.with_type("LIVENESS").with_config({liveness_type: "ZOOM", max_retries: 3})
end
}
end
response = Yoti::DocScan::Client.new.create_session(payload)
if error = response.error
# Yoti::Errors::ErrorResponse
puts error.message
end
session = Yoti::DocScan::Client::Session.from_json(response.body)
# Render the form
iframe_url = "#{Yoti.doc_scan_api_endpoint}/web/index.html?sessionID=#{session.session_id}&sessionToken=#{session.client_session_token}"
# Find an existing session
response = Yoti::DocScan::Client.new.get_session(session.session_id)
session = JSON.parse(response.body)
media_id = session.dig("resources", "id_documents").as_a[0].dig("document_id_photo", "media", "id").as_s
# Fetch specific media content
media = Yoti::DocScan::Client.new.get_media_content(session.session_id, media_id)
File.write("/path/to/document.png", media.content)
- write code
- write spec
- crystal tool format spec/ src/
- ./bin/ameba
- crystal spec
- repeat
- Fork it (https://github.com/jwoertink/yoti-crystal-sdk/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
- Jeremy Woertink - creator and maintainer