onfido

package module
v0.0.0-...-88df9ac Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 16, 2018 License: MIT Imports: 18 Imported by: 0

README

go-onfido CircleCI Go Report Card

Client for the Onfido API

go-doc

This library was built for Utility Warehouse internal projects, so priority was given to supporting the features we needed. If the library is missing a feature from the API, raise an issue or ideally open a PR.

Installation

To install go-onfido, use go get:

go get github.com/uw-labs/go-onfio

Usage

First you're going to need to instantiate a client (grab your sandbox API key)

client := onfido.NewClient("test_123")

Or you can instantiate usign the env variable ONFIDO_TOKEN

client, err := onfido.NewClientFromEnv()

Now checkout some of the examples

Documentation

Index

Constants

View Source
const (
	CheckTypeExpress  CheckType = "express"
	CheckTypeStandard CheckType = "standard"

	CheckStatusInProgress        CheckStatus = "in_progress"
	CheckStatusAwaitingApplicant CheckStatus = "awaiting_applicant"
	CheckStatusComplete          CheckStatus = "complete"
	CheckStatusWithdrawn         CheckStatus = "withdrawn"
	CheckStatusPaused            CheckStatus = "paused"
	CheckStatusReopened          CheckStatus = "reopened"

	CheckResultClear    CheckResult = "clear"
	CheckResultConsider CheckResult = "consider"
)

Supported check types

View Source
const (
	DocumentTypeUnknown        DocumentType = "unknown"
	DocumentTypePassport       DocumentType = "passport"
	DocumentTypeIDCard         DocumentType = "national_identity_card"
	DocumentTypeDrivingLicense DocumentType = "driving_licence"
	DocumentTypeUKBRP          DocumentType = "uk_biometric_residence_permit"
	DocumentTypeTaxID          DocumentType = "tax_id"
	DocumentTypeVoterID        DocumentType = "voter_id"

	DocumentSideFront DocumentSide = "front"
	DocumentSideBack  DocumentSide = "back"
)

Supported document types and sides

View Source
const (
	ClientVersion   = "0.1.0"
	DefaultEndpoint = "https://api.onfido.com/v2"
	TokenEnv        = "ONFIDO_TOKEN"
)

Constants

View Source
const (
	ReportNameIdentity         ReportName = "identity"
	ReportNameDocument         ReportName = "document"
	ReportNameFacialSimilarity ReportName = "facial_similarity"
	ReportNameStreetLevel      ReportName = "street_level"

	ReportResultClear        ReportResult = "clear"
	ReportResultConsider     ReportResult = "consider"
	ReportResultUnidentified ReportResult = "unidentified"

	ReportSubResultClear     ReportSubResult = "clear"
	ReportSubResultRejected  ReportSubResult = "rejected"
	ReportSubResultSuspected ReportSubResult = "suspected"
	ReportSubResultCaution   ReportSubResult = "caution"

	ReportVariantStandard ReportVariant = "standard"
	ReportVariantKYC      ReportVariant = "kyc"
	ReportVariantVideo    ReportVariant = "video"
)

Supported report names, results, subresults, and variants

View Source
const (
	WebhookSignatureHeader = "X-Signature"
	WebhookTokenEnv        = "ONFIDO_WEBHOOK_TOKEN"
)

Constants

Variables

View Source
var (
	ErrInvalidWebhookSignature = errors.New("invalid request, payload hash doesn't match signature")
	ErrMissingWebhookToken     = errors.New("webhook token not found in environmental variable")
)

Webhook errors

View Source
var (
	// ErrEmptyPostcode means that an empty postcode param was passed
	ErrEmptyPostcode = errors.New("empty postcode")
)

Functions

This section is empty.

Types

type Address

type Address struct {
	FlatNumber     string `json:"flat_number"`
	BuildingNumber string `json:"building_number"`
	BuildingName   string `json:"building_name"`
	Street         string `json:"street"`
	SubStreet      string `json:"sub_street"`
	Town           string `json:"town"`
	State          string `json:"state"`
	Postcode       string `json:"postcode"`
	Country        string `json:"country"`

	// Applicant specific
	StartDate string `json:"start_date,omitempty"`
	EndDate   string `json:"end_date,omitempty"`
}

Address represents an address from the Onfido API

type Addresses

type Addresses struct {
	Addresses []*Address `json:"addresses"`
}

Addresses represents a list of addresses from the Onfido API

type Applicant

type Applicant struct {
	ID                string     `json:"id,omitempty"`
	CreatedAt         *time.Time `json:"created_at,omitempty"`
	Sandbox           bool       `json:"sandbox,omitempty"`
	Title             string     `json:"title,omitempty"`
	FirstName         string     `json:"first_name,omitempty"`
	LastName          string     `json:"last_name,omitempty"`
	MiddleName        string     `json:"middle_name,omitempty"`
	Email             string     `json:"email,omitempty"`
	Gender            string     `json:"gender,omitempty"`
	DOB               string     `json:"dob,omitempty"`
	Telephone         string     `json:"telephone,omitempty"`
	Mobile            string     `json:"mobile,omitempty"`
	Country           string     `json:"country,omitempty"`
	MothersMaidenName string     `json:"mothers_maiden_name,omitempty"`
	PreviousLastName  string     `json:"previous_last_name,omitempty"`
	Nationality       string     `json:"nationality,omitempty"`
	CountryOfBirth    string     `json:"country_of_birth,omitempty"`
	TownOfBirth       string     `json:"town_of_birth,omitempty"`
	IDNumbers         []IDNumber `json:"id_numbers,omitempty"`
	Addresses         []Address  `json:"addresses,omitempty"`
}

Applicant represents an applicant from the Onfido API

type ApplicantIter

type ApplicantIter struct {
	// contains filtered or unexported fields
}

ApplicantIter represents an applicant iterator

func (*ApplicantIter) Applicant

func (i *ApplicantIter) Applicant() *Applicant

Applicant returns the current applicant on the iterator.

func (ApplicantIter) Current

func (it ApplicantIter) Current() interface{}

func (ApplicantIter) Err

func (it ApplicantIter) Err() error

func (ApplicantIter) Next

func (it ApplicantIter) Next(ctx context.Context) bool

type Applicants

type Applicants struct {
	Applicants []*Applicant `json:"applicants"`
}

Applicants represents a list of applicants from the Onfido API

type Check

type Check struct {
	ID          string      `json:"id,omitempty"`
	CreatedAt   *time.Time  `json:"created_at,omitempty"`
	Href        string      `json:"href,omitempty"`
	Type        CheckType   `json:"type,omitempty"`
	Status      CheckStatus `json:"status,omitempty"`
	Result      CheckResult `json:"result,omitempty"`
	DownloadURI string      `json:"download_uri,omitempty"`
	FormURI     string      `json:"form_uri,omitempty"`
	RedirectURI string      `json:"redirect_uri,omitempty"`
	ResultsURI  string      `json:"results_uri,omitempty"`
	Reports     []*Report   `json:"reports,omitempty"`
	Tags        []string    `json:"tags,omitempty"`
}

Check represents a check in Onfido API

type CheckIter

type CheckIter struct {
	// contains filtered or unexported fields
}

CheckIter represents a check iterator

func (*CheckIter) Check

func (i *CheckIter) Check() *Check

Check returns the current item in the iterator as a Check.

func (CheckIter) Current

func (it CheckIter) Current() interface{}

func (CheckIter) Err

func (it CheckIter) Err() error

func (CheckIter) Next

func (it CheckIter) Next(ctx context.Context) bool

type CheckRequest

type CheckRequest struct {
	Type                    CheckType `json:"type"`
	RedirectURI             string    `json:"redirect_uri,omitempty"`
	Reports                 []*Report `json:"reports"`
	Tags                    []string  `json:"tags,omitempty"`
	SupressFormEmails       bool      `json:"suppress_form_emails,omitempty"`
	Async                   bool      `json:"async,omitempty"`
	ChargeApplicantForCheck bool      `json:"charge_applicant_for_check,omitempty"`
}

CheckRequest represents a check request to Onfido API

type CheckResult

type CheckResult string

CheckResult represents a result of a check (clear, consider)

type CheckStatus

type CheckStatus string

CheckStatus represents a status of a check

type CheckType

type CheckType string

CheckType represents a check type (express, standard)

type Checks

type Checks struct {
	Checks []*Check `json:"checks"`
}

Checks represents a list of checks in Onfido API

type Client

type Client struct {
	Endpoint   string
	HTTPClient HTTPRequester
	Token      Token
}

Client represents an Onfido API client

func NewClient

func NewClient(token string) *Client

NewClient creates a new Onfido client.

func NewClientFromEnv

func NewClientFromEnv() (*Client, error)

NewClientFromEnv creates a new Onfido client using configuration from environment variables.

func (*Client) CancelReport

func (c *Client) CancelReport(ctx context.Context, checkID, id string) error

CancelReport cancels a report by its ID. see https://documentation.onfido.com/?shell#cancel-report

func (*Client) CreateApplicant

func (c *Client) CreateApplicant(ctx context.Context, a Applicant) (*Applicant, error)

CreateApplicant creates a new applicant. see https://documentation.onfido.com/?shell#create-applicant

func (*Client) CreateCheck

func (c *Client) CreateCheck(ctx context.Context, applicantID string, cr CheckRequest) (*Check, error)

CreateCheck creates a new check for the provided applicant. see https://documentation.onfido.com/?shell#create-check

func (*Client) DeleteApplicant

func (c *Client) DeleteApplicant(ctx context.Context, id string) error

DeleteApplicant deletes an applicant by its id. see https://documentation.onfido.com/?shell#delete-applicant

func (*Client) GetApplicant

func (c *Client) GetApplicant(ctx context.Context, id string) (*Applicant, error)

GetApplicant retrieves an applicant by its id. see https://documentation.onfido.com/?shell#retrieve-applicant

func (*Client) GetCheck

func (c *Client) GetCheck(ctx context.Context, applicantID, id string) (*Check, error)

GetCheck retrieves a check for the provided applicant by its ID. see https://documentation.onfido.com/?shell#retrieve-check

func (*Client) GetDocument

func (c *Client) GetDocument(ctx context.Context, applicantID, id string) (*Document, error)

GetDocument retrieves a single document for the provided applicant by its ID. see https://documentation.onfido.com/?shell#retrieve-document

func (*Client) GetReport

func (c *Client) GetReport(ctx context.Context, checkID, id string) (*Report, error)

GetReport retrieves a report for the provided check by its ID. see https://documentation.onfido.com/?shell#retrieve-report

func (*Client) ListApplicants

func (c *Client) ListApplicants() *ApplicantIter

ListApplicants retrieves the list of applicants. see https://documentation.onfido.com/?shell#list-applicants

func (*Client) ListChecks

func (c *Client) ListChecks(applicantID string) *CheckIter

ListChecks retrieves the list of checks for the provided applicant. see https://documentation.onfido.com/?shell#list-checks

func (*Client) ListDocuments

func (c *Client) ListDocuments(applicantID string) *DocumentIter

ListDocuments retrieves the list of documents for the provided applicant. see https://documentation.onfido.com/?shell#list-documents

func (*Client) ListReports

func (c *Client) ListReports(checkID string) *ReportIter

ListReports retrieves the list of reports for the provided check. see https://documentation.onfido.com/?shell#list-reports

func (*Client) NewSdkToken

func (c *Client) NewSdkToken(ctx context.Context, id, referrer string) (*SdkToken, error)

NewSdkToken returns a JWT token to used by the Javascript SDK

func (*Client) PickAddresses

func (c *Client) PickAddresses(postcode string) *PickerIter

PickAddresses retrieves the list of addresses matched against the provided postcode. see https://documentation.onfido.com/?shell#address-picker

func (*Client) ResumeCheck

func (c *Client) ResumeCheck(ctx context.Context, id string) (*Check, error)

ResumeCheck resumes a paused check by its ID. see https://documentation.onfido.com/?shell#resume-check

func (*Client) ResumeReport

func (c *Client) ResumeReport(ctx context.Context, checkID, id string) error

ResumeReport resumes a paused report by its ID. see https://documentation.onfido.com/?shell#resume-report

func (*Client) UpdateApplicant

func (c *Client) UpdateApplicant(ctx context.Context, a Applicant) (*Applicant, error)

UpdateApplicant updates an applicant by its id. see https://documentation.onfido.com/?shell#update-applicant

func (*Client) UploadDocument

func (c *Client) UploadDocument(ctx context.Context, applicantID string, dr DocumentRequest) (*Document, error)

UploadDocument uploads a document for the provided applicant. see https://documentation.onfido.com/?shell#upload-document

type Document

type Document struct {
	ID           string       `json:"id,omitempty"`
	CreatedAt    *time.Time   `json:"created_at,omitempty"`
	Href         string       `json:"href,omitempty"`
	DownloadHref string       `json:"download_href,omitempty"`
	FileName     string       `json:"file_name,omitempty"`
	FileType     string       `json:"file_type,omitempty"`
	FileSize     int          `json:"file_size,omitempty"`
	Type         DocumentType `json:"type,omitempty"`
	Side         DocumentSide `json:"side,omitempty"`
}

Document represents a document in Onfido API

type DocumentIter

type DocumentIter struct {
	// contains filtered or unexported fields
}

DocumentIter represents a document iterator

func (DocumentIter) Current

func (it DocumentIter) Current() interface{}

func (*DocumentIter) Document

func (i *DocumentIter) Document() *Document

Document returns the current item in the iterator as a Document.

func (DocumentIter) Err

func (it DocumentIter) Err() error

func (DocumentIter) Next

func (it DocumentIter) Next(ctx context.Context) bool

type DocumentRequest

type DocumentRequest struct {
	File io.ReadSeeker
	Type DocumentType
	Side DocumentSide
}

DocumentRequest represents a document request to Onfido API

type DocumentSide

type DocumentSide string

DocumentSide represents a document side (front, back)

type DocumentType

type DocumentType string

DocumentType represents a document type (passport, ID, etc)

type Documents

type Documents struct {
	Documents []*Document `json:"documents"`
}

Documents represents a list of documents from the Onfido API

type Error

type Error struct {
	Resp *http.Response
	Err  struct {
		ID     string                                 `json:"id"`
		Type   string                                 `json:"type"`
		Msg    string                                 `json:"message"`
		Fields map[string]struct{ Messages []string } `json:"fields"`
	} `json:"error"`
}

Error represents an Onfido API error response

func (*Error) Error

func (e *Error) Error() string

type HTTPRequester

type HTTPRequester interface {
	Do(*http.Request) (*http.Response, error)
}

HTTPRequester represents an HTTP requester

type IDNumber

type IDNumber struct {
	Type      IDNumberType `json:"type,omitempty"`
	Value     string       `json:"value,omitempty"`
	StateCode string       `json:"state_code,omitempty"`
}

IDNumber represents an ID number from the Onfido API

type IDNumberType

type IDNumberType string

IDNumberType represents an ID type (ssn, social insurance, etc)

const (
	IDNumberTypeSSN             IDNumberType = "ssn"
	IDNumberTypeSocialInsurance IDNumberType = "social_insurance"
	IDNumberTypeTaxID           IDNumberType = "tax_id"
	IDNumberTypeIdentityCard    IDNumberType = "identity_card"
	IDNumberTypeDrivingLicense  IDNumberType = "driving_license"
)

Supported ID number types

type PickerIter

type PickerIter struct {
	// contains filtered or unexported fields
}

PickerIter represents an address picker iterator

func (*PickerIter) Address

func (i *PickerIter) Address() *Address

Address returns the current address on the iterator.

func (PickerIter) Current

func (it PickerIter) Current() interface{}

func (PickerIter) Err

func (it PickerIter) Err() error

func (PickerIter) Next

func (it PickerIter) Next(ctx context.Context) bool

type Report

type Report struct {
	ID         string                 `json:"id,omitempty"`
	Name       ReportName             `json:"name,omitempty"`
	CreatedAt  *time.Time             `json:"created_at,omitempty"`
	Status     string                 `json:"status,omitempty"`
	Result     ReportResult           `json:"result,omitempty"`
	SubResult  ReportSubResult        `json:"sub_result,omitempty"`
	Variant    ReportVariant          `json:"variant,omitempty"`
	Href       string                 `json:"href,omitempty"`
	Options    map[string]interface{} `json:"options,omitempty"`
	Breakdown  map[string]interface{} `json:"breakdown,omitempty"`
	Properties map[string]interface{} `json:"properties,omitempty"`
}

Report represents a report from the Onfido API

type ReportIter

type ReportIter struct {
	// contains filtered or unexported fields
}

ReportIter represents a document iterator

func (ReportIter) Current

func (it ReportIter) Current() interface{}

func (ReportIter) Err

func (it ReportIter) Err() error

func (ReportIter) Next

func (it ReportIter) Next(ctx context.Context) bool

func (*ReportIter) Report

func (i *ReportIter) Report() *Report

Report returns the current item in the iterator as a Report.

type ReportName

type ReportName string

ReportName represents a report type name

type ReportResult

type ReportResult string

ReportResult represents a report result

type ReportSubResult

type ReportSubResult string

ReportSubResult represents a report sub result

type ReportVariant

type ReportVariant string

ReportVariant represents a report variant

type Reports

type Reports struct {
	Reports []*Report `json:"reports"`
}

Reports represents a list of reports from the Onfido API

type SdkToken

type SdkToken struct {
	ApplicantID string `json:"applicant_id,omitempty"`
	Referrer    string `json:"referrer,omitempty"`
	Token       string `json:"token,omitempty"`
}

SdkToken represents the response for a request for a JWT token

type Token

type Token string

Token is an Onfido authentication token

func (Token) Prod

func (t Token) Prod() bool

Prod checks if this is a production token or not.

func (Token) String

func (t Token) String() string

String returns the token as a string.

type Webhook

type Webhook struct {
	Token string
}

Webhook represents a webhook handler

func NewWebhook

func NewWebhook(token string) *Webhook

NewWebhook creates a new webhook handler

func NewWebhookFromEnv

func NewWebhookFromEnv() (*Webhook, error)

NewWebhookFromEnv creates a new webhook handler using configuration from environment variables.

func (*Webhook) ParseFromRequest

func (wh *Webhook) ParseFromRequest(req *http.Request) (*WebhookRequest, error)

ParseFromRequest parses the webhook request body and returns it as WebhookRequest if the request signature is valid.

func (*Webhook) ValidateSignature

func (wh *Webhook) ValidateSignature(body []byte, signature string) error

ValidateSignature validates the request body against the signature header.

type WebhookRequest

type WebhookRequest struct {
	Payload struct {
		ResourceType string `json:"resource_type"`
		Action       string `json:"action"`
		Object       struct {
			ID          string `json:"id"`
			Status      string `json:"status"`
			CompletedAt string `json:"completed_at"`
			Href        string `json:"href"`
		} `json:"object"`
	} `json:"payload"`
}

WebhookRequest represents an incoming webhook request from Onfido

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL