Skip to content

Releases: getyoti/yoti-go-sdk

v3.12.0

28 Feb 14:46
b3f3dab
Compare
Choose a tag to compare

Added

Support for Share V2 Create Session
Support for Share V2 Retrieve Session
Support for Share V2 Create Qr Code
Support for Share V2 Retrieve Qr Code
Support for Share V2 Retrieve Receipt
Support for advanced identity profiles to Share V2 and examples

Please view digitalidentity project under _examples folder

v3.11.0

14 Nov 11:31
7c9c611
Compare
Choose a tag to compare

Added

  • Support for enable/disable mobile handoff

Example:

sdkConfig, err := NewSdkConfigBuilder().WithAllowHandOff(true).Build()
  • Support for advanced identity profile requirements for idv and share v1.

Example:

advancedIdentityProfile := []byte(`{
		"profiles": [
			{
				"trust_framework": "YOTI_GLOBAL",
				"schemes": [
					{
						"label": "LB321",
						"type": "IDENTITY",
						"objective": "AL_L1"
					}
				]
			}
		]
	}`)

// For share v1 dynamic scenario
policy, err := (&dynamic.PolicyBuilder{}).
	WithAdvancedIdentityProfileRequirements(advancedIdentityProfile).
	Build()
if err != nil {
	return err
}

scenario, err := (&dynamic.ScenarioBuilder{}).WithPolicy(policy).Build()
if err != nil {
	return err
}

// For idv
sessionSpec, err := create.NewSessionSpecificationBuilder().
	WithAdvancedIdentityProfileRequirements(advancedIdentityProfile).
	WithCreateIdentityProfilePreview(true).
	Build()
if err != nil {
	return err
}

v3.10.0

28 Jun 15:02
Compare
Choose a tag to compare

Added

  • Support for NonLatin Documents and Allow Expired Documents feature for Document Restrictions

Requested with

docRestriction, err := filter.NewRequestedDocumentRestrictionBuilder().
		WithDocumentTypes([]string{"PASSPORT"}).
		WithCountryCodes([]string{"GBR"}).
		Build()
	if err != nil {
		return nil, err
	}

	docFilter, err := filter.NewRequestedDocumentRestrictionsFilterBuilder().
		ForIncludeList().
		WithDocumentRestriction(docRestriction).
		WithAllowNonLatinDocuments(true).
		WithExpiredDocuments(false).
		Build()
	if err != nil {
		return nil, err
	}
  • Added Expanded Document Fields Feature
var textExtractionTask *task.RequestedTextExtractionTask
	textExtractionTask, err = task.NewRequestedTextExtractionTaskBuilder().
		WithManualCheckAlways().
		WithExpandedDocumentFields(true).
		Build()
	if err != nil {
		return nil, err
	}

Example available when running the idv example project at https://localhost:8080

v3.9.0

06 Feb 13:54
650b910
Compare
Choose a tag to compare

Added

  • ImportToken to Session Specification Builder and a ImportTokenBuilder

Requested with

ttl := time.Hour * 24 * 30
importToken, err := create.NewImportTokenBuilder().
	WithTTL(int(ttl.Seconds())).
	Build()
if err != nil {
	return nil, err
}

sessionSpec, err = create.NewSessionSpecificationBuilder().
		WithClientSessionTokenTTL(6000).
		WithResourcesTTL(900000).
		WithUserTrackingID("some-tracking-id").
		WithSDKConfig(sdkConfig).
		WithIdentityProfileRequirements(identityProfile).
		WithCreateIdentityProfilePreview(true).
		WithSubject(subject).
                WithImportToken(importToken).
		Build()
  • ImportTokenResponse to IDV GetSessionResult:
getSessionResult, err := client.GetSession(sessionId)
if err != nil {
        return err
}
importTokenResponse := getSessionResult.ImportTokenResponse

Example available when running the idv example project at https://localhost:8080/dbs

v3.7.0

07 Dec 15:46
b1b6d24
Compare
Choose a tag to compare

IDV

Added

  • Identity Profile Requirements to Session Specification Builder

Requested With

identityProfile := []byte({
		"trust_framework": "UK_TFIDA",
		"scheme": {
			"type":      "DBS",
			"objective": "STANDARD"
		}
	})

	sessionSpec, err = create.NewSessionSpecificationBuilder().
		WithClientSessionTokenTTL(600).
		WithResourcesTTL(90000).
		WithUserTrackingID("some-tracking-id").
		WithSDKConfig(sdkConfig).
		WithIdentityProfileRequirements(identityProfile).
		Build()

Example available when running the idv example project at https://localhost:8080/dbs

Added

  • IdentityProfile to IDV GetSessionResult:
getSessionResult, err := client.GetSession(sessionId)
if err != nil {
        return err
}
identityProfile := getSessionResult.IdentityProfileResponse
subjectId := identityProfile.SubjectId
result := identityProfile.Result
failureReasonCode := identityProfile.FailureReasonResponse.ReasonCode

example IdentityProfile.Report value:

"trust_framework": "UK_TFIDA",
"schemes_compliance": [{
		"scheme": {
			"type": "DBS",
			"objective": "STANDARD"
		},
		"requirements_met": true,
		"requirements_not_met_info": "info here"
	}
],
"media": {
	"id": "c69ff2db-6caf-4e74-8386-037711bbc8d7",
	"type": "IMAGE",
	"created": "2022-03-29T11:39:24Z",
	"last_updated": "2022-03-29T11:39:24Z"
}

MediaID can be retrieved with:

media := result.IdentityProfileResponse.Report["media"].(map[string]interface{})
mediaId := media["id"].(string)

and used to retrieve the full identity profile report as JSON with a separate call:

mediaValue, err := client.GetMediaContent("your-session-id", mediaId)

Added

  • Subject to IDV request

requested with:

	subject := []byte(`{
		"subject_id": "subject ID"
	}`)

	sessionSpecification, err := NewSessionSpecificationBuilder().
		WithSubject(subject).
		Build()

example of Session Result containing the subject_id specified when the session was crated:

{
  "session_id": "a1746488-efcc-4c59-bd28-f849dcb933a2",
  "client_session_token_ttl": 599,
  "user_tracking_id": "user-tracking-id",
  "biometric_consent": "2022-03-29T11:39:08.473Z",
  "state": "COMPLETED",
  "client_session_token": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "identity_profile": {
    "subject_id": "subject ID",
    "result": "DONE",
    "failure_reason": {
      "reason_code": "MANDATORY_DOCUMENT_COULD_NOT_BE_PROVIDED"
    },
    "identity_profile_report": {
      "trust_framework": "UK_TFIDA",
      "schemes_compliance": [{
        "scheme": {
          "type": "DBS",
          "objective": "STANDARD"
        },
        "requirements_met": true,
        "requirements_not_met_info": "some string here"
      }],
      "media": {
        "id": "c69ff2db-6caf-4e74-8386-037711bbc8d7",
        "type": "IMAGE",
        "created": "2022-03-29T11:39:24Z",
        "last_updated": "2022-03-29T11:39:24Z"
      }
    }
  }
}

Added
WithIdDocumentTextExtractionCategoryAttempts, WithIdDocumentTextExtractionReclassificationAttempts, WithIdDocumentTextExtractiongenericAttempts to the SdkConfig

sdkConfig, err := NewSdkConfigBuilder().
	WithIdDocumentTextExtractionGenericAttempts(3).
	WithIdDocumentTextExtractionCategoryAttempts("CATEGORY", 2).
	WithIdDocumentTextExtractionReclassificationAttempts(2).
	Build()

Added

  • IdentityProfilePreview to Session Specification Builder

Requested with

sessionSpec, err = create.NewSessionSpecificationBuilder().
		WithClientSessionTokenTTL(6000).
		WithResourcesTTL(900000).
		WithUserTrackingID("some-tracking-id").
		WithSDKConfig(sdkConfig).
		WithIdentityProfileRequirements(identityProfile).
		WithCreateIdentityProfilePreview(true).
		WithSubject(subject).
		Build()
  • IdentityProfilePreview to IDV GetSessionResult:
getSessionResult, err := client.GetSession(sessionId)
if err != nil {
        return err
}
identityProfilePreview := getSessionResult.IdentityProfilePreview

Example available when running the idv example project at https://localhost:8080/dbs

v3.6.0

12 Jul 09:31
ffeaaf8
Compare
Choose a tag to compare

Profile

Added

  • UserProfile
    • GetAttributeByID
    • GetSelfieAttributeByID
    • GetDocumentImagesAttributeByID
    • Identity Profile Report attribute:
var identityProfileReportValue map[string]interface{} = userProfile.IdentityProfileReport().Value() // JSON

See examples for usage

  • Generate Identity Scheme (DBS/RTW/RTR) QR code with:
identityProfile := []byte(`{
	"trust_framework": "UK_TFIDA",
	"scheme": {
		"type":      "DBS",
		"objective": "BASIC"
	}
}`)

policy, err := (&dynamic.PolicyBuilder{}).
	WithIdentityProfileRequirements(identityProfile).
	Build()
if err != nil {
	return err
}

subject := []byte(`{
	"subject_id": "my_subject_id"
}`)
scenario, err := (&dynamic.ScenarioBuilder{}).
	WithPolicy(policy).
	WithSubject(subject).
	WithCallbackEndpoint(yourEndpoint).Build()

IDV

Added

  • Watchlist Screening Check
watchlistScreeningCheck, err := NewRequestedWatchlistScreeningCheckBuilder().
		WithAdverseMediaCategory().
		WithSanctionsCategory().
		Build()
  • Advanced CA Check
advancedCAYotiAccountCheck, err := check.NewRequestedWatchlistAdvancedCACheckYotiAccountBuilder().
	WithRemoveDeceased(true).
	WithShareURL(true).
	WithSources(check.RequestedTypeListSources{
		Types: []string{"pep", "fitness-probity", "warning"}}).
	WithMatchingStrategy(check.RequestedFuzzyMatchingStrategy{Fuzziness: 0.5}).
	Build()

OR

advancedCACustomAccountCheck, err := check.NewRequestedWatchlistAdvancedCACheckCustomAccountBuilder().
	WithAPIKey("api-key").
	WithMonitoring(true).
	WithTags(map[string]string{
		"tag_name": "value",
	}).
	WithClientRef("client-ref").
	WithMatchingStrategy(check.RequestedExactMatchingStrategy{ExactMatch: true}).
	Build()

Response retrieved with:

getSessionResult.WatchlistScreeningChecks()
getSessionResult.WatchlistAdvancedCAChecks()

v3.5.0

12 Aug 13:50
86e6c39
Compare
Choose a tag to compare

Added

  • Ability to specify optional for a wanted attribute in dynamic scenarios

v3.4.0

13 Apr 13:05
a15220b
Compare
Choose a tag to compare

Doc Scan

Added

  • Support for Third Party Identity checks
  • Support for custom privacy policy URL

v3.3.0

04 Nov 14:36
62c3d67
Compare
Choose a tag to compare

Doc Scan

Added

  • Supplementary Document Support

Fixed

  • func (c *Client) GetMediaContent() will now return nil media for 204 responses

Deprecated

  • func (g *GetSessionResult) TextDataChecks() replaced by IDDocumentTextDataChecks()

Doc Scan Sandbox

Added

  • Support for setting supplementary document text extraction task results
  • Support for setting supplementary document text data check results
  • Support for setting in session feedback

v3.2.0

20 Oct 12:16
4d52474
Compare
Choose a tag to compare

Doc Scan

Added

  • Support for ID document comparison checks
  • Ability to block the collection of biometric consent
  • Allow the configuration of the manual_check value for requested Document Authenticity checks

Doc Scan Sandbox

Added

  • Document ID photo support
  • ID document comparison support