Help us shape the future of Go! Take the 2026 Go Developer Survey

didit

package module
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Oct 29, 2026 License: MIT Imports: 28 Imported by: 0

README

Didit Go SDK

The official Didit Go library.

Identity verification (KYC), business verification (KYB), AML screening, biometrics, transaction monitoring, Travel Rule and customer Authentication, from your Go backend. Every server API of Didit is available with full types, webhooks are verified safely, and Authentication tokens are validated locally.

Install

go get github.com/didit-protocol/sdk-go

Go 1.22 or later. The module has no dependencies outside the standard library.

Quickstart

Create a verification session, read its decision, and verify the webhook Didit sends when it changes.

package main

import (
	"context"
	"fmt"
	"io"
	"log"
	"net/http"
	"os"

	"github.com/didit-protocol/sdk-go"
	"github.com/didit-protocol/sdk-go/webhook"
)

func main() {
	ctx := context.Background()
	client := didit.NewClient() // reads DIDIT_API_KEY

	session, err := client.Sessions.Create(ctx, didit.SessionsCreateParams{
		WorkflowID: os.Getenv("DIDIT_WORKFLOW_ID"),
		VendorData: didit.String("user-42"),
	})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("send the user to", session.URL)

	decision, err := client.Sessions.RetrieveDecision(ctx, session.SessionID, didit.SessionsRetrieveDecisionParams{})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("status:", decision.Status)

	// Webhooks: verify the raw body with the destination's secret.
	http.HandleFunc("POST /webhooks/didit", func(w http.ResponseWriter, r *http.Request) {
		body, err := io.ReadAll(http.MaxBytesReader(w, r.Body, 1<<20))
		if err != nil {
			http.Error(w, "bad body", http.StatusBadRequest)
			return
		}
		event, err := webhook.Verify(body, r.Header, os.Getenv("DIDIT_WEBHOOK_SECRET"))
		if err != nil {
			http.Error(w, "invalid webhook", http.StatusBadRequest)
			return
		}
		if e, ok := event.(*webhook.StatusUpdatedEvent); ok {
			fmt.Println("session", e.SessionID, "is now", e.Status)
		}
		w.WriteHeader(http.StatusOK)
	})
	log.Fatal(http.ListenAndServe(":8080", nil))
}

More runnable programs are in examples/: standalone ID verification, AML screening, transaction screening, Travel Rule, wallet screening, Authentication token verification, and webhook receivers for net/http, Gin, Echo, Chi and Fiber.

Configuration

client := didit.NewClient(
	option.WithAPIKey("..."),           // default: DIDIT_API_KEY
	option.WithOrganizationID("..."),   // default: DIDIT_ORGANIZATION_ID
	option.WithApplicationID("..."),    // default: DIDIT_APPLICATION_ID
	option.WithTimeout(30*time.Second), // per attempt, default 60 s
	option.WithMaxRetries(3),           // default 2
)
Option Default Notes
WithAPIKey DIDIT_API_KEY Sent as x-api-key, only ever to the base URL's origin.
WithBaseURL https://verification.didit.me
WithAccountBaseURL https://apx.didit.me/auth/v2 For client.Account.
WithOrganizationID, WithApplicationID DIDIT_ORGANIZATION_ID, DIDIT_APPLICATION_ID Needed by application-scoped resources (cases, networks, transaction rules, ...). Without them those calls fail before sending.
WithAccountToken none Bearer token from client.Account.Login.
WithTimeout 60 s Per attempt. A context deadline bounds the whole call.
WithMaxRetries 2 See Retries.
WithHeader, WithHeaderAdd, WithQuery Extra headers and query parameters.
WithHTTPClient Your own *http.Client (proxies, tracing).
WithLogger DIDIT_LOG=debug Debug log of method, path, status, duration and request id. Never bodies, headers or keys.
WithResponseInto The raw *http.Response of a call.

Every option works for the whole client or for one call, as the last arguments of any method. client.WithOptions(...) returns a copy with more options. The client is safe for concurrent use: create one per process.

Each method takes a context.Context first, then the path parameters, then a parameters struct when the operation has a body or query parameters, then options:

client.Sessions.Imports.Create(ctx, params)
client.Cases.Notes.List(ctx, caseUUID, didit.CasesNotesListParams{Limit: didit.Int(50)})
Optional fields

Optional request fields have the type didit.Opt[T]. Their zero value is not sent at all, so a Go zero value never reaches the API by accident:

didit.SessionsCreateParams{
	WorkflowID: workflowID,                // required: a plain value
	VendorData: didit.String("user-42"),   // sent
	Callback:   didit.Null[string](),      // sent as null
	Language:   didit.Some(didit.SessionsCreateParamsLanguageEn),
	// every other Opt field: not sent
}

Constructors: didit.String, didit.Int, didit.Float, didit.Bool, didit.Time, didit.Some and didit.Null.

Responses

Response types are plain structs. Unknown enum values are kept as they are (enums are string types with constants for the known values), and decoding is lenient: a value that does not fit its Go field leaves it at its zero value instead of failing the call. Every response struct has a JSON field:

decision.JSON.Raw()               // the object as received
decision.JSON.Present("metadata") // the key was sent, maybe as null
decision.JSON.Null("metadata")    // the key was sent as null
decision.JSON.ExtraFields()       // keys this SDK version does not know yet

When the API reference declares no schema for a response (today Account.Applications.List), the method returns the body as json.RawMessage for you to decode.

Errors

Every error the SDK returns implements didit.Error. Use errors.As with the concrete types:

_, err := client.Sessions.RetrieveDecision(ctx, id, didit.SessionsRetrieveDecisionParams{})
var notFound *didit.NotFoundError
var apiErr *didit.APIStatusError
switch {
case errors.As(err, &notFound):
	// 404
case errors.As(err, &apiErr):
	log.Println(apiErr.StatusCode, apiErr.Body, apiErr.RequestID)
}
Type When
*APIStatusError any non-2xx status: StatusCode, Body (parsed JSON), RawBody, Header, RequestID
*BadRequestError 400, *AuthenticationError 401, *PermissionDeniedError 403, *NotFoundError 404, *ConflictError 409, *UnprocessableEntityError 422, *RateLimitError 429, *InternalServerError 5xx unwrap to *APIStatusError
*APIConnectionError, *APITimeoutError no response (errors.Is(err, context.DeadlineExceeded) works)
*ConfigurationError missing API key, organization or application id, invalid option; nothing was sent
*UnexpectedResponseError a 2xx response that is not JSON, or a next page link to another origin or back to a page already fetched
*WebhookVerificationError webhook verification failed, with a machine-readable Reason
*TokenVerificationError an Authentication token failed verification, with a machine-readable Reason

Errors never hold the API key: a key the server echoes reads [redacted] in RawBody and Response.Body, and so does the X-Api-Key header of Response.Request.

Retries

Failed calls are retried up to WithMaxRetries times (default 2) with exponential backoff from 0.5 s, capped at 8 s, with full jitter, honouring Retry-After (capped at 60 s). GET, PUT and DELETE are retried on connection errors, timeouts, 408, 429 and 5xx. POST and PATCH are never retried once the request may have reached the server: only when the connection failed before the request was sent, or on 429. Upload bodies are buffered, so a retry sends the same bytes.

Pagination

List methods return one *didit.Page[T] (Count, Next, Previous, Results, GetNextPage). Their AutoPaging variants iterate over every item of every page:

// Go 1.23 and later
for session, err := range client.Sessions.ListAutoPaging(ctx, didit.SessionsListParams{}).All() {
	if err != nil {
		return err
	}
	fmt.Println(session.SessionID)
}

// Go 1.22
iter := client.Sessions.ListAutoPaging(ctx, didit.SessionsListParams{})
for iter.Next() {
	fmt.Println(iter.Current().SessionID)
}
if err := iter.Err(); err != nil {
	return err
}

A next page link on another origin than the base URL is refused, so the API key never leaves it. So is a next page link back to a page the iteration already fetched, which would loop forever.

Files

Uploads take a didit.File from a path, bytes or a reader, with an optional name and content type:

res, err := client.IDVerification.Verify(ctx, didit.IDVerificationVerifyParams{
	FrontImage: didit.FileFromPath("front.jpg"),
	BackImage:  didit.Some(didit.FileFromReader(reader, "back.png")),
})

File responses (PDF reports, CSV templates, attachments) return the *http.Response; read its body and close it:

resp, err := client.Sessions.GeneratePDF(ctx, sessionID)
if err != nil {
	return err
}
defer resp.Body.Close()
_, err = io.Copy(file, resp.Body)

Webhooks

webhook.Verify(body, header, secret) checks a delivery and returns a typed event; it has no framework dependency.

  • Pass the raw body. X-Signature signs the exact bytes and X-Signature-V2 the canonical JSON, which survives middleware that re-encodes the body; either is accepted.
  • During a secret rotation, deliveries also carry -Previous signatures made with the old secret. A receiver that already switched can accept both with webhook.WithSecrets(oldSecret).
  • The body's timestamp must be within 5 minutes of now (webhook.WithTolerance). Deduplicate on event.Envelope().EventID.
  • X-Signature-Simple is deprecated and counts only with webhook.WithAllowSimple(); the event then reports Authenticated() == false and the record should be re-fetched from the API.
  • webhook.VerifyParsed is for frameworks that only expose the decoded body (decode with json.Decoder.UseNumber).
  • Anyone can call your endpoint, so until a signature matches, verification costs time and memory in proportion to the body's size. The canonical JSON is built only for a well-formed X-Signature-V2, and floats such as 1e308, which expand to hundreds of digits in it, may add at most 64 KiB; Didit never sends them.
switch e := event.(type) {
case *webhook.StatusUpdatedEvent:            // status.updated: e.SessionID, e.Status, e.Decision
case *webhook.TransactionStatusUpdatedEvent: // transaction.status.updated: e.TransactionID, e.Status, e.Score
case *webhook.TravelRuleStatusUpdatedEvent:  // travel_rule.status.updated
case *webhook.UnknownEvent:                  // a type this version does not know: e.Payload
}

Failures are *didit.WebhookVerificationError with Reason one of missing_signature, invalid_signature, timestamp_mismatch, timestamp_out_of_tolerance, missing_timestamp and invalid_payload.

Transactions, wallet screening and Travel Rule

tx, err := client.Transactions.Create(ctx, didit.TransactionsCreateParams{
	TransactionID:       "txn-1001",
	TransactionCategory: didit.TransactionsCreateParamsTransactionCategoryFinance,
	TransactionDetails:  didit.TransactionsCreateParamsTransactionDetails{ /* amount, currency, direction */ },
	Subject:             didit.TransactionsCreateParamsSubject{ /* your customer */ },
})

screening, err := client.WalletScreening.Screen(ctx, didit.WalletScreeningScreenParams{ /* address, chain */ })

// The PDF report takes the screening result back, signature included.
var result didit.WalletScreeningResultParam
err = json.Unmarshal([]byte(screening.JSON.Raw()), &result)
pdf, err := client.WalletScreening.ScreenPDF(ctx, result) // read and close pdf.Body

vasps := client.TravelRule.ListVASPsAutoPaging(ctx, didit.TravelRuleListVASPsParams{})

Rules (client.Transactions.Rules), Travel Rule transfers (client.Transactions.TravelRule), Travel Rule settings and wallet addresses (client.TravelRule, client.TravelRule.WalletAddresses) are covered too; the webhooks transaction.created, transaction.status.updated and travel_rule.status.updated have typed events.

Bank verification prices

The list prices of every Bank Verification method, by country, come from a public endpoint that needs no credentials:

prices, err := client.Pricing.BankVerification(ctx)

Authentication

The authentication package validates the tokens of Didit Authentication (customer sign-in for your application's users) in your backend. It talks to your application's issuer and never needs the API key.

auth, err := authentication.NewFromPublishableKey(os.Getenv("DIDIT_PUBLISHABLE_KEY"))
// or authentication.New("https://acme.auth.didit.me")

claims, err := auth.VerifyAccessToken(ctx, bearerToken)
if err != nil {
	// *didit.TokenVerificationError: expired, invalid_signature, invalid_issuer, ...
}
fmt.Println(claims.Subject, claims.VendorData)
  • Tokens are ES256 JWTs checked locally against the issuer's keys, which are fetched once and cached; any other algorithm is rejected.
  • VerifyIDToken checks ID tokens and their nonce. CreatePKCE, CreateState and CreateNonce help with the authorization code flow.
  • ExchangeCode and Refresh call the token endpoint. Serialise refreshes for one session: reusing a consumed refresh token revokes the session.
  • GetSession checks a session instantly (revocation), RevokeSession signs it out.
  • CreateStepUp and RetrieveStepUp drive step-up verification. Act only on status approved.

Language notes

Choices this SDK makes where docs/DESIGN.md leaves room:

  • Packages. didit holds the client, every resource and every type; option the client and request options; webhook and authentication are separate packages. Generated files end in _gen.go.
  • Names. API names become Go identifiers with the usual initialisms: id_verification is IDVerification, retrieve_decision is RetrieveDecision, schema VaspDirectoryEntry is VASPDirectoryEntry. A schema component used by both requests and responses has a request copy with the Param suffix (WalletScreeningResultParam), whose optional fields use Opt.
  • Parameters. An operation whose body is a schema component takes that type. When it also has header or query parameters, its <Resource><Method>Params struct holds the component in Body. Header parameters such as Idempotency-Key are fields of the parameters struct.
  • Unions. oneOf/anyOf objects become one struct with the fields of every variant; the discriminating field (for example type or session_kind) says which apply. Unions of different JSON kinds (a string or an object) are any.
  • Absent and null. Requests distinguish them with Opt[T]. Responses use plain fields; JSON.Present and JSON.Null tell them apart.
  • Pagination. iter.Seq2 needs Go 1.23, so PageIterator.All is built only on Go 1.23 and later; Next/Current/Err work on Go 1.22. Extra top-level list fields (kpis, total_transactions) are read with page.JSON.Field.
  • Errors. Go has no exception hierarchy: the status-specific types embed *APIStatusError and unwrap to it, and didit.Error is the common interface. Invalid path parameters (empty, . or ..) are a *ConfigurationError. *UnexpectedResponseError is Go-specific.
  • Raw responses. option.WithResponseInto(&resp) instead of a wrapper type.
  • Redirects. The SDK never follows a redirect to another origin, whatever your http.Client does.

Supported Go versions

Go 1.22 and later. CI tests Go 1.22 to 1.27 on Linux, and the newest Go on macOS and Windows.

Versioning

Semantic versioning. Releases are cut by release-please from conventional commits; CHANGELOG.md is generated. Until the first public release the version stays 0.x. A future major version follows Go's semantic import versioning (github.com/didit-protocol/sdk-go/v2).

The SDK is generated from Didit's OpenAPI documents (openapi/), and a daily job opens a pull request when the API changes. Removed operations stay available, marked deprecated, for one minor version.

Contributing and security

See CONTRIBUTING.md for how to regenerate, test and release, and SECURITY.md to report a vulnerability.

License

MIT, see LICENSE.

Documentation

Overview

Package didit is the official Didit Go library: identity verification (KYC), business verification (KYB), AML screening, biometrics, transaction monitoring, Travel Rule and account management from your Go backend.

Create one client per process and reuse it; it is safe for concurrent use:

client := didit.NewClient() // reads DIDIT_API_KEY
session, err := client.Sessions.Create(ctx, didit.SessionsCreateParams{
	WorkflowID: workflowID,
	VendorData: didit.String("user-42"),
})

Every field of Client is a resource of the API, and every method is one operation: a context first, then the path parameters, then a parameters struct when the operation has a body or query parameters, then github.com/didit-protocol/sdk-go/option.RequestOption values that override the client's settings for that call.

Optional request fields have the type Opt: their zero value is not sent. Response types are plain structs decoded leniently; their JSON field (ResponseJSON) gives the raw object, which keys were present or null, and keys this version does not know.

Errors implement Error; use errors.As with *APIStatusError or a status-specific type such as *NotFoundError. Failed requests are retried with backoff, except a POST or PATCH that may have reached the server.

List methods return a Page; their AutoPaging variants return a PageIterator over every item of every page.

Webhooks are verified by package github.com/didit-protocol/sdk-go/webhook and Authentication tokens by package github.com/didit-protocol/sdk-go/authentication.

API reference: https://docs.didit.me

Most of this package is generated from Didit's OpenAPI documents; see https://github.com/didit-protocol/sdk-go for the design and the generator.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewAPIStatusError

func NewAPIStatusError(e *APIStatusError) error

NewAPIStatusError returns the most specific error type for e.StatusCode: *BadRequestError for 400, *NotFoundError for 404, and so on, or e itself when no specific type exists. The other packages of this module use it so that every HTTP error has the same shape.

Types

type AMLDatasetFreshness

type AMLDatasetFreshness struct {
	// When Didit read the dataset catalog this freshness comes from.
	CapturedAt time.Time `json:"captured_at"`

	// Opaque identifier of the AML data source. Treat it as an opaque string; do
	// not branch on it.
	Provider string `json:"provider"`

	// Version identifier of the dataset catalog, when the source reports one.
	CatalogVersion string `json:"catalog_version"`

	// Freshness per dataset family. A family whose datasets reported no update date
	// is absent rather than filled with `null`.
	Sources AMLDatasetFreshnessSources `json:"sources"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLDatasetFreshness: How current the AML datasets were when a screening ran. Dates are never estimated.

func (*AMLDatasetFreshness) UnmarshalJSON

func (r *AMLDatasetFreshness) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLDatasetFreshness leniently.

type AMLDatasetFreshnessSources

type AMLDatasetFreshnessSources struct {
	Sanctions    AMLDatasetSourceFreshness `json:"sanctions"`
	PEP          AMLDatasetSourceFreshness `json:"pep"`
	Warnings     AMLDatasetSourceFreshness `json:"warnings"`
	AdverseMedia AMLDatasetSourceFreshness `json:"adverse_media"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLDatasetFreshnessSources: Freshness per dataset family. A family whose datasets reported no update date is absent rather than filled with `null`.

func (*AMLDatasetFreshnessSources) UnmarshalJSON

func (r *AMLDatasetFreshnessSources) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLDatasetFreshnessSources leniently.

type AMLDatasetSourceFreshness

type AMLDatasetSourceFreshness struct {
	// Most recent update of any dataset in the family.
	LastUpdatedAt time.Time `json:"last_updated_at"`

	// Staleness bound: every dataset in the family is at least this current. `null`
	// when at least one dataset in the family reported no update date, because the
	// bound is then unknown.
	OldestUpdatedAt time.Time `json:"oldest_updated_at"`

	// Number of datasets in the family.
	DatasetCount int64 `json:"dataset_count"`

	// Number of those datasets that reported an update date.
	DatedDatasetCount int64 `json:"dated_dataset_count"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLDatasetSourceFreshness: Freshness of one family of AML datasets.

func (*AMLDatasetSourceFreshness) UnmarshalJSON

func (r *AMLDatasetSourceFreshness) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLDatasetSourceFreshness leniently.

type AMLMonitoringRetrieveJobResponse

type AMLMonitoringRetrieveJobResponse struct {
	JobID  string                                 `json:"job_id"`
	Status AMLMonitoringRetrieveJobResponseStatus `json:"status"`

	// true when the job enables monitoring, false when it disables it.
	IsEnabled bool `json:"is_enabled"`

	// Which profile family the job toggles.
	TargetType AMLMonitoringRetrieveJobResponseTargetType `json:"target_type"`

	// Profiles the job processes.
	Total int64 `json:"total"`

	// Profiles processed so far.
	Processed int64 `json:"processed"`

	// Per-record outcome counters. Every selected profile resolves to exactly one
	// counter; nothing is silently skipped.
	Outcomes AMLMonitoringRetrieveJobResponseOutcomes `json:"outcomes"`

	// One entry per processed profile, in processing order. Grows while the job
	// runs; complete once status is COMPLETED. Recorded for jobs started through
	// the API; a job started from the Business Console reports counters only.
	Results []AMLMonitoringRetrieveJobResponseResults `json:"results"`

	// Generic failure message when status is FAILED; the detailed cause is kept on
	// the platform side.
	Error       string    `json:"error"`
	CreatedAt   time.Time `json:"created_at"`
	CompletedAt time.Time `json:"completed_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLMonitoringRetrieveJobResponse is a response object.

func (*AMLMonitoringRetrieveJobResponse) UnmarshalJSON

func (r *AMLMonitoringRetrieveJobResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLMonitoringRetrieveJobResponse leniently.

type AMLMonitoringRetrieveJobResponseOutcomes

type AMLMonitoringRetrieveJobResponseOutcomes struct {
	// Monitoring enabled on an existing AML screening.
	Enabled int64 `json:"enabled"`

	// A new AML screening was created (billed) and monitoring enabled on it.
	ScreenedAndEnabled int64 `json:"screened_and_enabled"`

	// Monitoring was already active; nothing changed and nothing was billed.
	AlreadyEnabled int64 `json:"already_enabled"`

	// Monitoring turned off across every AML screening of the profile.
	Disabled int64 `json:"disabled"`

	// Skipped: the profile lacks the full name, date of birth and country (users)
	// or a name (businesses) needed to screen.
	SkippedNoIdentityData int64 `json:"skipped_no_identity_data"`

	// Skipped: the user is blocked.
	SkippedBlocked int64 `json:"skipped_blocked"`

	// Skipped: sandbox application, no screening is created.
	SkippedSandbox int64 `json:"skipped_sandbox"`

	// The screening could not be completed; retry later.
	FailedProvider int64 `json:"failed_provider"`

	// Balance ran out while the job was running.
	FailedInsufficientBalance int64 `json:"failed_insufficient_balance"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLMonitoringRetrieveJobResponseOutcomes: Per-record outcome counters. Every selected profile resolves to exactly one counter; nothing is silently skipped.

func (*AMLMonitoringRetrieveJobResponseOutcomes) UnmarshalJSON

func (r *AMLMonitoringRetrieveJobResponseOutcomes) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLMonitoringRetrieveJobResponseOutcomes leniently.

type AMLMonitoringRetrieveJobResponseResults

type AMLMonitoringRetrieveJobResponseResults struct {
	// Didit internal id of the profile.
	DiditInternalID string `json:"didit_internal_id"`

	// Your own identifier for the profile.
	VendorData string                                         `json:"vendor_data"`
	Outcome    AMLMonitoringRetrieveJobResponseResultsOutcome `json:"outcome"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLMonitoringRetrieveJobResponseResults is a response object.

func (*AMLMonitoringRetrieveJobResponseResults) UnmarshalJSON

func (r *AMLMonitoringRetrieveJobResponseResults) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLMonitoringRetrieveJobResponseResults leniently.

type AMLMonitoringRetrieveJobResponseResultsOutcome

type AMLMonitoringRetrieveJobResponseResultsOutcome string

AMLMonitoringRetrieveJobResponseResultsOutcome is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLMonitoringRetrieveJobResponseResultsOutcomeEnabled                   AMLMonitoringRetrieveJobResponseResultsOutcome = "enabled"
	AMLMonitoringRetrieveJobResponseResultsOutcomeScreenedAndEnabled        AMLMonitoringRetrieveJobResponseResultsOutcome = "screened_and_enabled"
	AMLMonitoringRetrieveJobResponseResultsOutcomeAlreadyEnabled            AMLMonitoringRetrieveJobResponseResultsOutcome = "already_enabled"
	AMLMonitoringRetrieveJobResponseResultsOutcomeDisabled                  AMLMonitoringRetrieveJobResponseResultsOutcome = "disabled"
	AMLMonitoringRetrieveJobResponseResultsOutcomeSkippedNoIdentityData     AMLMonitoringRetrieveJobResponseResultsOutcome = "skipped_no_identity_data"
	AMLMonitoringRetrieveJobResponseResultsOutcomeSkippedBlocked            AMLMonitoringRetrieveJobResponseResultsOutcome = "skipped_blocked"
	AMLMonitoringRetrieveJobResponseResultsOutcomeSkippedSandbox            AMLMonitoringRetrieveJobResponseResultsOutcome = "skipped_sandbox"
	AMLMonitoringRetrieveJobResponseResultsOutcomeFailedProvider            AMLMonitoringRetrieveJobResponseResultsOutcome = "failed_provider"
	AMLMonitoringRetrieveJobResponseResultsOutcomeFailedInsufficientBalance AMLMonitoringRetrieveJobResponseResultsOutcome = "failed_insufficient_balance"
)

Known values of AMLMonitoringRetrieveJobResponseResultsOutcome.

type AMLMonitoringRetrieveJobResponseStatus

type AMLMonitoringRetrieveJobResponseStatus string

AMLMonitoringRetrieveJobResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLMonitoringRetrieveJobResponseStatusPending    AMLMonitoringRetrieveJobResponseStatus = "PENDING"
	AMLMonitoringRetrieveJobResponseStatusProcessing AMLMonitoringRetrieveJobResponseStatus = "PROCESSING"
	AMLMonitoringRetrieveJobResponseStatusCompleted  AMLMonitoringRetrieveJobResponseStatus = "COMPLETED"
	AMLMonitoringRetrieveJobResponseStatusFailed     AMLMonitoringRetrieveJobResponseStatus = "FAILED"
)

Known values of AMLMonitoringRetrieveJobResponseStatus.

type AMLMonitoringRetrieveJobResponseTargetType

type AMLMonitoringRetrieveJobResponseTargetType string

AMLMonitoringRetrieveJobResponseTargetType: Which profile family the job toggles.

AMLMonitoringRetrieveJobResponseTargetType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLMonitoringRetrieveJobResponseTargetTypeUser     AMLMonitoringRetrieveJobResponseTargetType = "user"
	AMLMonitoringRetrieveJobResponseTargetTypeBusiness AMLMonitoringRetrieveJobResponseTargetType = "business"
)

Known values of AMLMonitoringRetrieveJobResponseTargetType.

type AMLMonitoringService

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

AMLMonitoringService holds the aml_monitoring operations. Use it through Client.AMLMonitoring.

func (*AMLMonitoringService) RetrieveJob

RetrieveJob: Get AML ongoing monitoring job.

Status, outcome counters and per-record results of a monitoring toggle job started from `POST /v3/users/aml-monitoring/` or `POST /v3/businesses/aml-monitoring/`. Poll every couple of seconds while `status` is `PENDING` or `PROCESSING`; `results` is complete once it is `COMPLETED`.

GET /v3/aml-monitoring/jobs/{job_id}/

type AMLRetrieveDatasetFreshnessResponse

type AMLRetrieveDatasetFreshnessResponse struct {
	// The latest reading, or `null` when `availability` is not `available`.
	DatasetFreshness AMLDatasetFreshness `json:"dataset_freshness"`

	// `available` when a reading exists; `not_configured` when dataset dates are
	// not collected in this environment; `not_yet_collected` when collection is set
	// up but no reading exists yet.
	Availability AMLRetrieveDatasetFreshnessResponseAvailability `json:"availability"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLRetrieveDatasetFreshnessResponse is a response object.

func (*AMLRetrieveDatasetFreshnessResponse) UnmarshalJSON

func (r *AMLRetrieveDatasetFreshnessResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLRetrieveDatasetFreshnessResponse leniently.

type AMLRetrieveDatasetFreshnessResponseAvailability

type AMLRetrieveDatasetFreshnessResponseAvailability string

AMLRetrieveDatasetFreshnessResponseAvailability: `available` when a reading exists; `not_configured` when dataset dates are not collected in this environment; `not_yet_collected` when collection is set up but no reading exists yet.

AMLRetrieveDatasetFreshnessResponseAvailability is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLRetrieveDatasetFreshnessResponseAvailabilityAvailable       AMLRetrieveDatasetFreshnessResponseAvailability = "available"
	AMLRetrieveDatasetFreshnessResponseAvailabilityNotConfigured   AMLRetrieveDatasetFreshnessResponseAvailability = "not_configured"
	AMLRetrieveDatasetFreshnessResponseAvailabilityNotYetCollected AMLRetrieveDatasetFreshnessResponseAvailability = "not_yet_collected"
)

Known values of AMLRetrieveDatasetFreshnessResponseAvailability.

type AMLScreenParams

type AMLScreenParams struct {
	// Full name of the person or company to screen. Minimum **2 characters** - the
	// screening provider's own floor. A shorter or blank name returns `400` on this
	// field before any screening runs, so nothing is billed. Required.
	FullName string `json:"full_name"`

	// Type of entity to screen. Defaults to `person`.
	EntityType Opt[AMLScreenParamsEntityType] `json:"entity_type"`

	// Date of birth (persons) or incorporation date (companies), `YYYY-MM-DD`.
	// Improves match precision via the DOB weight.
	DateOfBirth Opt[string] `json:"date_of_birth"`

	// ISO 3166-1 **alpha-2** country code (e.g. `ES`). Invalid codes return `400`.
	// Improves match precision via the country weight.
	Nationality Opt[string] `json:"nationality"`

	// Identity document number. Not weighted - acts as a golden key: an exact match
	// overrides the hit's `match_score` to 100, a hard mismatch penalizes it. Sent
	// to the screening provider as a search filter only when it is **2-50
	// characters**; a value outside that range is accepted and stored, and the
	// screening still runs and is billed, just not narrowed by document number.
	DocumentNumber Opt[string] `json:"document_number"`

	// Risk-score threshold at or below which the result is `Approved`. Must be ≤
	// `aml_score_review_threshold` (else `400`).
	AMLScoreApproveThreshold Opt[float64] `json:"aml_score_approve_threshold"`

	// Risk-score threshold above which the result is `Declined`. Scores between the
	// two thresholds produce `In Review`.
	AMLScoreReviewThreshold Opt[float64] `json:"aml_score_review_threshold"`

	// Weight of name similarity in the per-hit match score. The three weights must
	// sum to exactly 100 (else `400`).
	AMLNameWeight Opt[int64] `json:"aml_name_weight"`

	// Weight of date of birth in the per-hit match score.
	AMLDOBWeight Opt[int64] `json:"aml_dob_weight"`

	// Weight of country/nationality in the per-hit match score.
	AMLCountryWeight Opt[int64] `json:"aml_country_weight"`

	// Per-hit cutoff: hits with `match_score` below this are `False Positive`
	// (excluded from risk assessment); at or above are `Unreviewed` possible
	// matches.
	AMLMatchScoreThreshold Opt[int64] `json:"aml_match_score_threshold"`

	// Also search news media for negative coverage. Adds up to ~30 s of latency
	// while results are gathered - use a ≥60 s client timeout.
	IncludeAdverseMedia Opt[bool] `json:"include_adverse_media"`

	// Keep re-screening this profile and push changes via webhook. Requires
	// `save_api_request=true` (else `400`).
	IncludeOngoingMonitoring Opt[bool] `json:"include_ongoing_monitoring"`

	// Persist the screening as a session (console visibility, decision endpoint,
	// webhooks, hit review). Set to `false` for a stateless check.
	SaveAPIRequest Opt[bool] `json:"save_api_request"`

	// Your identifier for the screened user; echoed back and stored with the
	// session.
	VendorData Opt[string] `json:"vendor_data"`

	// Free-form JSON stored with the request and echoed back.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox-only scenario slug. Only accepted when the API key belongs to a
	// sandbox-mode application; rejected on live applications. A standalone
	// screening has no session to arm, so the slug goes on the screening request
	// itself: `decline_aml_hit` returns one production-shaped hit and settles the
	// screening as `Declined`, `review_aml_possible_match` settles it `In Review`,
	// and a scenario that arms no AML outcome leaves the screening clean. See the
	// scenario catalog at GET /v1/sandbox/scenarios/ or [Sandbox & Test
	// Data](/integration/sandbox-testing).
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// Optional retry-safety key, up to 255 characters. Reusing the same key with
	// the same request body returns the original response without running or
	// billing a second screening. Reusing the key with a different body returns
	// `409`.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

AMLScreenParams holds the parameters of Client.AML.Screen.

func (AMLScreenParams) MarshalJSON

func (r AMLScreenParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type AMLScreenParamsEntityType

type AMLScreenParamsEntityType string

AMLScreenParamsEntityType: Type of entity to screen. Defaults to `person`.

AMLScreenParamsEntityType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLScreenParamsEntityTypePerson  AMLScreenParamsEntityType = "person"
	AMLScreenParamsEntityTypeCompany AMLScreenParamsEntityType = "company"
)

Known values of AMLScreenParamsEntityType.

type AMLScreenResponse

type AMLScreenResponse struct {
	// Persisted session id when `save_api_request=true` (usable with `GET
	// /v3/session/{sessionId}/decision/`); otherwise a transient correlation UUID.
	RequestID string               `json:"request_id"`
	AML       AMLScreenResponseAML `json:"aml"`

	// Echo of the `vendor_data` you sent.
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` you sent.
	Metadata  map[string]any `json:"metadata"`
	CreatedAt time.Time      `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreenResponse is a response object.

func (*AMLScreenResponse) UnmarshalJSON

func (r *AMLScreenResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreenResponse leniently.

type AMLScreenResponseAML

type AMLScreenResponseAML struct {
	// `Declined` when `score` > `aml_score_review_threshold`; `In Review` when
	// `score` > `aml_score_approve_threshold`; `Approved` otherwise (including when
	// no score is available).
	Status AMLScreenResponseAMLStatus `json:"status"`

	// Number of entries in `hits`.
	TotalHits int64 `json:"total_hits"`

	// Echo of the screened entity type.
	EntityType AMLScreenResponseAMLEntityType `json:"entity_type"`
	Hits       []AMLScreenResponseAMLHits     `json:"hits"`

	// Overall AML risk score (0-100): the highest `risk_score` among hits that are
	// not False Positives. Drives `status` via the two thresholds.
	Score float64 `json:"score"`

	// Echo of what was screened: `full_name`, `date_of_birth`, `nationality`,
	// `document_number` (absent fields are `null`).
	ScreenedData AMLScreenResponseAMLScreenedData `json:"screened_data"`

	// Contains a `POSSIBLE_MATCH_FOUND` warning whenever `score` is non-zero and ≥
	// `aml_score_approve_threshold` (a score of exactly 0 never warns); empty
	// otherwise.
	Warnings []AMLScreenResponseAMLWarnings `json:"warnings"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreenResponseAML is a response object.

func (*AMLScreenResponseAML) UnmarshalJSON

func (r *AMLScreenResponseAML) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreenResponseAML leniently.

type AMLScreenResponseAMLEntityType

type AMLScreenResponseAMLEntityType string

AMLScreenResponseAMLEntityType: Echo of the screened entity type.

AMLScreenResponseAMLEntityType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLScreenResponseAMLEntityTypePerson  AMLScreenResponseAMLEntityType = "person"
	AMLScreenResponseAMLEntityTypeCompany AMLScreenResponseAMLEntityType = "company"
)

Known values of AMLScreenResponseAMLEntityType.

type AMLScreenResponseAMLHits

type AMLScreenResponseAMLHits struct {
	// Stable identifier of the matched entity in the screening datasets.
	ID string `json:"id"`

	// Source URL for the matched entity, when available.
	URL string `json:"url"`

	// Legacy exact-match flag. Prefer `match_score` + `review_status`.
	Match bool `json:"match"`

	// DEPRECATED weighted match score in the 0-1 range. Use `match_score` instead.
	Score float64 `json:"score"`

	// Identity confidence (0-100). Compared against `aml_match_score_threshold` to
	// split False Positives from Possible Matches.
	MatchScore float64 `json:"match_score"`

	// Entity risk score (0-100). The highest `risk_score` among non-false-positive
	// hits becomes the top-level `aml.score`.
	RiskScore float64 `json:"risk_score"`
	Target    bool    `json:"target"`

	// Display name of the matched entity.
	Caption string `json:"caption"`

	// Datasets the entity appears in (e.g. `PEP`, `PEP Level 1`, sanctions list
	// names).
	Datasets []string       `json:"datasets"`
	Features map[string]any `json:"features"`

	// Entity profile: `name`, `alias`, `notes`, `gender`, `birthDate`,
	// `birthPlace`, `nationality`, `position`, and other biographical arrays (each
	// nullable).
	Properties map[string]any `json:"properties"`

	// Name of the related close associate through which the entity was matched,
	// when the hit is an RCA.
	RcaName string `json:"rca_name"`

	// PEP list entries backing this hit.
	PEPMatches []AMLScreenResponseAMLHitsPEPMatches `json:"pep_matches"`

	// Sanctions list entries backing this hit (same backing-list shape as
	// `pep_matches`, plus sanction-specific fields).
	SanctionMatches []map[string]any `json:"sanction_matches"`

	// Warning/watchlist entries backing this hit.
	WarningMatches []map[string]any `json:"warning_matches"`

	// Adverse-media articles. Populated only when `include_adverse_media=true`.
	AdverseMediaMatches []AMLScreenResponseAMLHitsAdverseMediaMatches `json:"adverse_media_matches"`

	// Aggregated adverse-media sentiment for the entity (`sentiment`,
	// `sentiment_score`, `adverse_keywords` frequency map). Populated only when
	// `include_adverse_media=true`.
	AdverseMediaDetails map[string]any `json:"adverse_media_details"`

	// When the entity first appeared in the datasets.
	FirstSeen time.Time `json:"first_seen"`

	// Most recent dataset refresh that included the entity.
	LastSeen time.Time `json:"last_seen"`

	// Known relationships of the matched entity (family, associates, companies).
	LinkedEntities []AMLScreenResponseAMLHitsLinkedEntities `json:"linked_entities"`

	// Per-dimension risk breakdown (`crimes`, `countries`, `categories`,
	// `custom_list`), each with `score`, `weightage`, `risk_level`, and a
	// `risk_scores` map.
	RiskView map[string]any `json:"risk_view"`

	// Free-form extra context, e.g. a `flag_summary` array explaining why the
	// entity is flagged.
	AdditionalInformation map[string]any `json:"additional_information"`

	// `False Positive` - `match_score` below `aml_match_score_threshold`, excluded
	// from risk assessment. `Unreviewed` - possible match awaiting review.
	// `Confirmed Match` / `Inconclusive` - set manually by a reviewer (via the
	// Business Console) on saved sessions; that review capability is not part of
	// this spec.
	ReviewStatus AMLScreenResponseAMLHitsReviewStatus `json:"review_status"`

	// How `match_score` was computed. Name, date of birth, and country each
	// contribute `<component>_score` × `<component>_weight_normalized` points;
	// weights are re-normalized when a component is missing from the screened data.
	// The document number is not weighted - it acts as a 'golden key': `MATCH`
	// overrides the score to 100, `NEUTRAL` leaves it unchanged, `HARD_MISMATCH`
	// applies a penalty.
	ScoreBreakdown AMLScreenResponseAMLHitsScoreBreakdown `json:"score_breakdown"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreenResponseAMLHits: One screening hit. `match_score` (0-100) measures identity confidence - hits below `aml_match_score_threshold` are tagged `review_status: "False Positive"` and excluded from the risk assessment; hits at or above it are `"Unreviewed"` possible matches. `risk_score` (0-100) measures how risky the matched entity is and drives the top-level `aml.score`.

func (*AMLScreenResponseAMLHits) UnmarshalJSON

func (r *AMLScreenResponseAMLHits) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreenResponseAMLHits leniently.

type AMLScreenResponseAMLHitsAdverseMediaMatches

type AMLScreenResponseAMLHitsAdverseMediaMatches struct {
	Headline        string   `json:"headline"`
	Summary         string   `json:"summary"`
	Sentiment       string   `json:"sentiment"`
	SentimentScore  float64  `json:"sentiment_score"`
	SourceURL       string   `json:"source_url"`
	Thumbnail       string   `json:"thumbnail"`
	Country         string   `json:"country"`
	AuthorName      string   `json:"author_name"`
	PublicationDate string   `json:"publication_date"`
	AdverseKeywords []string `json:"adverse_keywords"`
	OtherSources    []string `json:"other_sources"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreenResponseAMLHitsAdverseMediaMatches is a response object.

func (*AMLScreenResponseAMLHitsAdverseMediaMatches) UnmarshalJSON

func (r *AMLScreenResponseAMLHitsAdverseMediaMatches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreenResponseAMLHitsAdverseMediaMatches leniently.

type AMLScreenResponseAMLHitsLinkedEntities

type AMLScreenResponseAMLHitsLinkedEntities struct {
	Name     []string `json:"name"`
	Relation []string `json:"relation"`
	Status   []string `json:"status"`
	Details  []string `json:"details"`
	Active   []string `json:"active"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreenResponseAMLHitsLinkedEntities is a response object.

func (*AMLScreenResponseAMLHitsLinkedEntities) UnmarshalJSON

func (r *AMLScreenResponseAMLHitsLinkedEntities) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreenResponseAMLHitsLinkedEntities leniently.

type AMLScreenResponseAMLHitsPEPMatches

type AMLScreenResponseAMLHitsPEPMatches struct {
	ListName     string   `json:"list_name"`
	Publisher    string   `json:"publisher"`
	SourceURL    string   `json:"source_url"`
	Description  string   `json:"description"`
	MatchedName  string   `json:"matched_name"`
	PEPPosition  string   `json:"pep_position"`
	DateOfBirth  string   `json:"date_of_birth"`
	PlaceOfBirth string   `json:"place_of_birth"`
	Aliases      []string `json:"aliases"`
	Education    []string `json:"education"`
	OtherSources []string `json:"other_sources"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreenResponseAMLHitsPEPMatches is a response object.

func (*AMLScreenResponseAMLHitsPEPMatches) UnmarshalJSON

func (r *AMLScreenResponseAMLHitsPEPMatches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreenResponseAMLHitsPEPMatches leniently.

type AMLScreenResponseAMLHitsReviewStatus

type AMLScreenResponseAMLHitsReviewStatus string

AMLScreenResponseAMLHitsReviewStatus: `False Positive` - `match_score` below `aml_match_score_threshold`, excluded from risk assessment. `Unreviewed` - possible match awaiting review. `Confirmed Match` / `Inconclusive` - set manually by a reviewer (via the Business Console) on saved sessions; that review capability is not part of this spec.

AMLScreenResponseAMLHitsReviewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLScreenResponseAMLHitsReviewStatusFalsePositive  AMLScreenResponseAMLHitsReviewStatus = "False Positive"
	AMLScreenResponseAMLHitsReviewStatusUnreviewed     AMLScreenResponseAMLHitsReviewStatus = "Unreviewed"
	AMLScreenResponseAMLHitsReviewStatusConfirmedMatch AMLScreenResponseAMLHitsReviewStatus = "Confirmed Match"
	AMLScreenResponseAMLHitsReviewStatusInconclusive   AMLScreenResponseAMLHitsReviewStatus = "Inconclusive"
)

Known values of AMLScreenResponseAMLHitsReviewStatus.

type AMLScreenResponseAMLHitsScoreBreakdown

type AMLScreenResponseAMLHitsScoreBreakdown struct {
	// Raw name similarity (0-100).
	NameScore int64 `json:"name_score"`

	// Configured name weight (`aml_name_weight`).
	NameWeight int64 `json:"name_weight"`

	// Name weight after re-normalization (0-100).
	NameWeightNormalized float64 `json:"name_weight_normalized"`

	// Points the name contributed to `total_score`.
	NameContribution float64 `json:"name_contribution"`

	// Date-of-birth score as a percentage of its weight (−100 to 100).
	DOBScore int64 `json:"dob_score"`

	// Configured DOB weight (`aml_dob_weight`).
	DOBWeight int64 `json:"dob_weight"`

	// DOB weight after re-normalization (0-100).
	DOBWeightNormalized float64 `json:"dob_weight_normalized"`

	// Points the DOB contributed to `total_score`.
	DOBContribution float64 `json:"dob_contribution"`

	// Country score as a percentage of its weight (−100 to 100).
	CountryScore int64 `json:"country_score"`

	// Configured country weight (`aml_country_weight`).
	CountryWeight int64 `json:"country_weight"`

	// Country weight after re-normalization (0-100).
	CountryWeightNormalized float64 `json:"country_weight_normalized"`

	// Points the country contributed to `total_score`.
	CountryContribution float64 `json:"country_contribution"`

	// Golden-key result for the document number comparison.
	DocumentNumberMatchType AMLScreenResponseAMLHitsScoreBreakdownDocumentNumberMatchType `json:"document_number_match_type"`

	// Human-readable description of the document-number effect.
	DocumentNumberEffect string `json:"document_number_effect"`

	// Final weighted match score (0-100) - mirrors `match_score`.
	TotalScore int64 `json:"total_score"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreenResponseAMLHitsScoreBreakdown: How `match_score` was computed. Name, date of birth, and country each contribute `<component>_score` × `<component>_weight_normalized` points; weights are re-normalized when a component is missing from the screened data. The document number is not weighted - it acts as a 'golden key': `MATCH` overrides the score to 100, `NEUTRAL` leaves it unchanged, `HARD_MISMATCH` applies a penalty.

func (*AMLScreenResponseAMLHitsScoreBreakdown) UnmarshalJSON

func (r *AMLScreenResponseAMLHitsScoreBreakdown) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreenResponseAMLHitsScoreBreakdown leniently.

type AMLScreenResponseAMLHitsScoreBreakdownDocumentNumberMatchType

type AMLScreenResponseAMLHitsScoreBreakdownDocumentNumberMatchType string

AMLScreenResponseAMLHitsScoreBreakdownDocumentNumberMatchType: Golden-key result for the document number comparison.

AMLScreenResponseAMLHitsScoreBreakdownDocumentNumberMatchType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLScreenResponseAMLHitsScoreBreakdownDocumentNumberMatchTypeMatch        AMLScreenResponseAMLHitsScoreBreakdownDocumentNumberMatchType = "MATCH"
	AMLScreenResponseAMLHitsScoreBreakdownDocumentNumberMatchTypeNeutral      AMLScreenResponseAMLHitsScoreBreakdownDocumentNumberMatchType = "NEUTRAL"
	AMLScreenResponseAMLHitsScoreBreakdownDocumentNumberMatchTypeHardMismatch AMLScreenResponseAMLHitsScoreBreakdownDocumentNumberMatchType = "HARD_MISMATCH"
)

Known values of AMLScreenResponseAMLHitsScoreBreakdownDocumentNumberMatchType.

type AMLScreenResponseAMLScreenedData

type AMLScreenResponseAMLScreenedData struct {
	FullName       string `json:"full_name"`
	DateOfBirth    string `json:"date_of_birth"`
	Nationality    string `json:"nationality"`
	DocumentNumber string `json:"document_number"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreenResponseAMLScreenedData: Echo of what was screened: `full_name`, `date_of_birth`, `nationality`, `document_number` (absent fields are `null`).

func (*AMLScreenResponseAMLScreenedData) UnmarshalJSON

func (r *AMLScreenResponseAMLScreenedData) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreenResponseAMLScreenedData leniently.

type AMLScreenResponseAMLStatus

type AMLScreenResponseAMLStatus string

AMLScreenResponseAMLStatus: `Declined` when `score` > `aml_score_review_threshold`; `In Review` when `score` > `aml_score_approve_threshold`; `Approved` otherwise (including when no score is available).

AMLScreenResponseAMLStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLScreenResponseAMLStatusApproved AMLScreenResponseAMLStatus = "Approved"
	AMLScreenResponseAMLStatusInReview AMLScreenResponseAMLStatus = "In Review"
	AMLScreenResponseAMLStatusDeclined AMLScreenResponseAMLStatus = "Declined"
)

Known values of AMLScreenResponseAMLStatus.

type AMLScreenResponseAMLWarnings

type AMLScreenResponseAMLWarnings struct {
	// Feature that raised the warning.
	Feature string `json:"feature"`

	// Machine-readable risk identifier.
	Risk string `json:"risk"`

	// Extra context for the warning, when available.
	AdditionalData map[string]any `json:"additional_data"`

	// `warning`, `information`, or `error` - how the risk affected the outcome.
	LogType string `json:"log_type"`

	// One-line human-readable summary.
	ShortDescription string `json:"short_description"`

	// Full human-readable explanation.
	LongDescription string `json:"long_description"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreenResponseAMLWarnings is a response object.

func (*AMLScreenResponseAMLWarnings) UnmarshalJSON

func (r *AMLScreenResponseAMLWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreenResponseAMLWarnings leniently.

type AMLScreening

type AMLScreening struct {
	// Unique identifier for this AML step in the workflow graph.
	NodeID string `json:"node_id"`

	// Feature-level status of this AML screening. Independent of the top-level
	// session `status` - a session can reach its overall decision while an
	// individual feature stays `In Review`.
	Status AMLScreeningStatus `json:"status"`

	// Total number of matches found
	TotalHits int64 `json:"total_hits"`

	// Type of entity screened: person or company
	EntityType string             `json:"entity_type"`
	Hits       []AMLScreeningHits `json:"hits"`

	// Overall AML screening score - the highest risk score across all hits (float,
	// 0-100). `null` until computed.
	Score        float64                  `json:"score"`
	ScreenedData AMLScreeningScreenedData `json:"screened_data"`

	// Whether AML ongoing monitoring is enabled for this screening. When `true`,
	// the entity is re-screened periodically and any new hits update the report.
	IsOngoingMonitoringEnabled bool `json:"is_ongoing_monitoring_enabled"`

	// Date (YYYY-MM-DD) when this ongoing-monitoring subscription will next be
	// billed. Computed as the date of the last ongoing-monitoring billing plus 365
	// days when `is_ongoing_monitoring_enabled = true`; otherwise `null`. This is a
	// billing date, not a screening date - use `last_ongoing_screening_at` for
	// that.
	NextOngoingMonitoringBillDate string `json:"next_ongoing_monitoring_bill_date"`

	// When ongoing monitoring last completed a re-screening of this record, whether
	// or not the result changed. `null` when the record has never been re-screened;
	// it is never back-filled from the enablement or billing date.
	LastOngoingScreeningAt time.Time `json:"last_ongoing_screening_at"`

	// The most recent AML dataset update date the provider reported at the time of
	// that screening. `null` when the provider reported no dataset dates; never
	// estimated.
	LastOngoingScreeningDatasetsUpdatedAt time.Time              `json:"last_ongoing_screening_datasets_updated_at"`
	Warnings                              []AMLScreeningWarnings `json:"warnings"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreening is a response object.

func (*AMLScreening) UnmarshalJSON

func (r *AMLScreening) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreening leniently.

type AMLScreeningHits

type AMLScreeningHits struct {
	// Unique identifier of the match
	ID string `json:"id"`

	// Source URL for the match
	URL string `json:"url"`

	// Whether this is a confirmed match
	Match bool `json:"match"`

	// Deprecated weighted match score in the 0-1 range (e.g. `0.73`). Use
	// `match_score` (0-100) instead.
	Score float64 `json:"score"`

	// Whether the matched entity is the direct target of the listing (as opposed to
	// a related party). `null` when the source does not specify it.
	Target bool `json:"target"`

	// Caption or title of the match
	Caption string `json:"caption"`

	// List of dataset categories where the match was found. Indicates whether the
	// entity appeared in PEP lists (with level), sanctions databases, adverse
	// media, warnings/regulatory enforcement, or other compliance datasets.
	Datasets []AMLScreeningHitsDatasets `json:"datasets"`

	// Additional features of the match
	Features map[string]any `json:"features"`

	// RCA name if applicable
	RcaName string `json:"rca_name"`

	// Date when match was last seen
	LastSeen time.Time                `json:"last_seen"`
	RiskView AMLScreeningHitsRiskView `json:"risk_view"`

	// Date when match was first seen
	FirstSeen  time.Time                  `json:"first_seen"`
	Properties AMLScreeningHitsProperties `json:"properties"`

	// Weighted identity confidence score (0-100) calculated from name similarity,
	// date of birth, and country matching. Used to determine if hit is a False
	// Positive or Possible Match.
	MatchScore float64 `json:"match_score"`

	// Entity risk score (0-100). Used to determine final AML status (Approved/In
	// Review/Declined) based on the highest risk_score among non-False-Positive
	// hits.
	RiskScore float64 `json:"risk_score"`

	// Review status for this hit. Can be 'Unreviewed', 'Confirmed Match', 'False
	// Positive', or 'Inconclusive'.
	ReviewStatus AMLScreeningHitsReviewStatus `json:"review_status"`

	// Detailed breakdown of how the match_score was calculated.
	ScoreBreakdown AMLScreeningHitsScoreBreakdown   `json:"score_breakdown"`
	PEPMatches     []AMLScreeningHitsPEPMatches     `json:"pep_matches"`
	LinkedEntities []AMLScreeningHitsLinkedEntities `json:"linked_entities"`

	// List of warning and regulatory enforcement matches. Includes entries from
	// categories: Warning, SIP, Warnings and Regulatory Enforcement, Fitness and
	// Probity, SIE, and Insolvency.
	WarningMatches []AMLScreeningHitsWarningMatches `json:"warning_matches"`

	// List of sanction list matches found for this entity.
	SanctionMatches       []AMLScreeningHitsSanctionMatches     `json:"sanction_matches"`
	AdverseMediaDetails   AMLScreeningHitsAdverseMediaDetails   `json:"adverse_media_details"`
	AdverseMediaMatches   []AMLScreeningHitsAdverseMediaMatches `json:"adverse_media_matches"`
	AdditionalInformation map[string]any                        `json:"additional_information"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningHits is a response object.

func (*AMLScreeningHits) UnmarshalJSON

func (r *AMLScreeningHits) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningHits leniently.

type AMLScreeningHitsAdverseMediaDetails

type AMLScreeningHitsAdverseMediaDetails struct {
	Sentiment       string           `json:"sentiment"`
	EntityType      string           `json:"entity_type"`
	SentimentScore  int64            `json:"sentiment_score"`
	AdverseKeywords map[string]int64 `json:"adverse_keywords"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningHitsAdverseMediaDetails is a response object.

func (*AMLScreeningHitsAdverseMediaDetails) UnmarshalJSON

func (r *AMLScreeningHitsAdverseMediaDetails) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningHitsAdverseMediaDetails leniently.

type AMLScreeningHitsAdverseMediaMatches

type AMLScreeningHitsAdverseMediaMatches struct {
	Country         string    `json:"country"`
	Summary         string    `json:"summary"`
	Headline        string    `json:"headline"`
	Sentiment       string    `json:"sentiment"`
	Thumbnail       string    `json:"thumbnail"`
	SourceURL       string    `json:"source_url"`
	AuthorName      string    `json:"author_name"`
	OtherSources    []string  `json:"other_sources"`
	AdverseKeywords []string  `json:"adverse_keywords"`
	SentimentScore  int64     `json:"sentiment_score"`
	PublicationDate time.Time `json:"publication_date"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningHitsAdverseMediaMatches is a response object.

func (*AMLScreeningHitsAdverseMediaMatches) UnmarshalJSON

func (r *AMLScreeningHitsAdverseMediaMatches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningHitsAdverseMediaMatches leniently.

type AMLScreeningHitsDatasets

type AMLScreeningHitsDatasets string

AMLScreeningHitsDatasets is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLScreeningHitsDatasetsPEP                              AMLScreeningHitsDatasets = "PEP"
	AMLScreeningHitsDatasetsPEPLevel1                        AMLScreeningHitsDatasets = "PEP Level 1"
	AMLScreeningHitsDatasetsPEPLevel2                        AMLScreeningHitsDatasets = "PEP Level 2"
	AMLScreeningHitsDatasetsPEPLevel3                        AMLScreeningHitsDatasets = "PEP Level 3"
	AMLScreeningHitsDatasetsPEPLevel4                        AMLScreeningHitsDatasets = "PEP Level 4"
	AMLScreeningHitsDatasetsSanctions                        AMLScreeningHitsDatasets = "Sanctions"
	AMLScreeningHitsDatasetsAdverseMedia                     AMLScreeningHitsDatasets = "Adverse Media"
	AMLScreeningHitsDatasetsWarningsAndRegulatoryEnforcement AMLScreeningHitsDatasets = "Warnings and Regulatory Enforcement"
	AMLScreeningHitsDatasetsFitnessAndProbity                AMLScreeningHitsDatasets = "Fitness and Probity"
	AMLScreeningHitsDatasetsSip                              AMLScreeningHitsDatasets = "SIP"
	AMLScreeningHitsDatasetsSie                              AMLScreeningHitsDatasets = "SIE"
	AMLScreeningHitsDatasetsInsolvency                       AMLScreeningHitsDatasets = "Insolvency"
)

Known values of AMLScreeningHitsDatasets.

type AMLScreeningHitsLinkedEntities

type AMLScreeningHitsLinkedEntities struct {
	Name     []string `json:"name"`
	Active   []string `json:"active"`
	Status   []string `json:"status"`
	Details  []string `json:"details"`
	Relation []string `json:"relation"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningHitsLinkedEntities is a response object.

func (*AMLScreeningHitsLinkedEntities) UnmarshalJSON

func (r *AMLScreeningHitsLinkedEntities) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningHitsLinkedEntities leniently.

type AMLScreeningHitsPEPMatches

type AMLScreeningHitsPEPMatches struct {
	Aliases      []string `json:"aliases"`
	Education    []string `json:"education"`
	ListName     string   `json:"list_name"`
	Publisher    string   `json:"publisher"`
	SourceURL    string   `json:"source_url"`
	Description  string   `json:"description"`
	MatchedName  string   `json:"matched_name"`
	PEPPosition  string   `json:"pep_position"`
	DateOfBirth  string   `json:"date_of_birth"`
	OtherSources []string `json:"other_sources"`
	PlaceOfBirth string   `json:"place_of_birth"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningHitsPEPMatches is a response object.

func (*AMLScreeningHitsPEPMatches) UnmarshalJSON

func (r *AMLScreeningHitsPEPMatches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningHitsPEPMatches leniently.

type AMLScreeningHitsProperties

type AMLScreeningHitsProperties struct {
	Name        []string `json:"name"`
	Alias       []string `json:"alias"`
	Notes       []string `json:"notes"`
	Title       string   `json:"title"`
	Gender      []string `json:"gender"`
	Height      string   `json:"height"`
	Topics      string   `json:"topics"`
	Weight      string   `json:"weight"`
	Address     string   `json:"address"`
	Country     string   `json:"country"`
	Website     string   `json:"website"`
	EyeColor    string   `json:"eyeColor"`
	Keywords    string   `json:"keywords"`
	LastName    []string `json:"lastName"`
	Position    string   `json:"position"`
	Religion    string   `json:"religion"`
	BirthDate   []string `json:"birthDate"`
	Education   []string `json:"education"`
	Ethnicity   string   `json:"ethnicity"`
	FirstName   []string `json:"firstName"`
	HairColor   string   `json:"hairColor"`
	WeakAlias   string   `json:"weakAlias"`
	BirthPlace  []string `json:"birthPlace"`
	ModifiedAt  string   `json:"modifiedAt"`
	WikidataID  string   `json:"wikidataId"`
	Citizenship string   `json:"citizenship"`
	Nationality string   `json:"nationality"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningHitsProperties is a response object.

func (*AMLScreeningHitsProperties) UnmarshalJSON

func (r *AMLScreeningHitsProperties) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningHitsProperties leniently.

type AMLScreeningHitsReviewStatus

type AMLScreeningHitsReviewStatus string

AMLScreeningHitsReviewStatus: Review status for this hit. Can be 'Unreviewed', 'Confirmed Match', 'False Positive', or 'Inconclusive'.

AMLScreeningHitsReviewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLScreeningHitsReviewStatusUnreviewed     AMLScreeningHitsReviewStatus = "Unreviewed"
	AMLScreeningHitsReviewStatusConfirmedMatch AMLScreeningHitsReviewStatus = "Confirmed Match"
	AMLScreeningHitsReviewStatusFalsePositive  AMLScreeningHitsReviewStatus = "False Positive"
	AMLScreeningHitsReviewStatusInconclusive   AMLScreeningHitsReviewStatus = "Inconclusive"
)

Known values of AMLScreeningHitsReviewStatus.

type AMLScreeningHitsRiskView

type AMLScreeningHitsRiskView struct {
	Crimes     AMLScreeningHitsRiskViewCrimes     `json:"crimes"`
	Countries  AMLScreeningHitsRiskViewCountries  `json:"countries"`
	Categories AMLScreeningHitsRiskViewCategories `json:"categories"`
	CustomList map[string]any                     `json:"custom_list"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningHitsRiskView is a response object.

func (*AMLScreeningHitsRiskView) UnmarshalJSON

func (r *AMLScreeningHitsRiskView) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningHitsRiskView leniently.

type AMLScreeningHitsRiskViewCategories

type AMLScreeningHitsRiskViewCategories struct {
	Score      int64          `json:"score"`
	Weightage  int64          `json:"weightage"`
	RiskLevel  string         `json:"risk_level"`
	RiskScores map[string]any `json:"risk_scores"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningHitsRiskViewCategories is a response object.

func (*AMLScreeningHitsRiskViewCategories) UnmarshalJSON

func (r *AMLScreeningHitsRiskViewCategories) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningHitsRiskViewCategories leniently.

type AMLScreeningHitsRiskViewCountries

type AMLScreeningHitsRiskViewCountries struct {
	Score      int64          `json:"score"`
	Weightage  int64          `json:"weightage"`
	RiskLevel  string         `json:"risk_level"`
	RiskScores map[string]any `json:"risk_scores"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningHitsRiskViewCountries is a response object.

func (*AMLScreeningHitsRiskViewCountries) UnmarshalJSON

func (r *AMLScreeningHitsRiskViewCountries) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningHitsRiskViewCountries leniently.

type AMLScreeningHitsRiskViewCrimes

type AMLScreeningHitsRiskViewCrimes struct {
	Score      int64          `json:"score"`
	Weightage  int64          `json:"weightage"`
	RiskLevel  string         `json:"risk_level"`
	RiskScores map[string]any `json:"risk_scores"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningHitsRiskViewCrimes is a response object.

func (*AMLScreeningHitsRiskViewCrimes) UnmarshalJSON

func (r *AMLScreeningHitsRiskViewCrimes) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningHitsRiskViewCrimes leniently.

type AMLScreeningHitsSanctionMatches

type AMLScreeningHitsSanctionMatches struct {
	// Name(s) of the sanction list(s)
	ListName []string `json:"list_name"`

	// Name matched in the sanction list
	MatchedName string `json:"matched_name"`

	// Description of the sanction entry
	Description string `json:"description"`

	// Free-text reason why the entity was sanctioned. Joined from the sanction
	// list's reason entries. Examples: 'Executive Order 13224 (Terrorism)',
	// 'Support for actions undermining Ukraine's sovereignty', 'Listed due to
	// national security concerns.'
	Reason string `json:"reason"`

	// URL to the source of the sanction
	SourceURL string `json:"source_url"`

	// Additional source URLs
	OtherSources []string `json:"other_sources"`

	// Additional details about the sanction
	Details []string `json:"details"`

	// Legal basis for the sanction
	LegalBasis []string `json:"legal_basis"`

	// Date(s) when the entity was listed
	ListedOn []string `json:"listed_on"`

	// Sanction list identifier(s)
	SanctionList []string `json:"sanction_list"`

	// Sanction program(s) the entity is listed under
	SanctionProgram []string `json:"sanction_program"`

	// Authority/authorities that imposed the sanction
	SanctioningAuthority []string `json:"sanctioning_authority"`

	// Date(s) when the sanction entry was last updated
	UpdatedOn []string `json:"updated_on"`

	// Additional data from the sanction source not captured in the main fields
	AdditionalData map[string]any `json:"additional_data"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningHitsSanctionMatches is a response object.

func (*AMLScreeningHitsSanctionMatches) UnmarshalJSON

func (r *AMLScreeningHitsSanctionMatches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningHitsSanctionMatches leniently.

type AMLScreeningHitsScoreBreakdown

type AMLScreeningHitsScoreBreakdown struct {
	// Raw name similarity percentage (0-100).
	NameScore int64 `json:"name_score"`

	// Original weight for name from config (0-100).
	NameWeight int64 `json:"name_weight"`

	// Normalized weight for name after re-weighting for missing data (0-100).
	NameWeightNormalized float64 `json:"name_weight_normalized"`

	// Points contributed by name to the total score.
	NameContribution float64 `json:"name_contribution"`

	// DOB match score (-100 to 100).
	DOBScore int64 `json:"dob_score"`

	// Original weight for DOB from config (0-100).
	DOBWeight int64 `json:"dob_weight"`

	// Normalized weight for DOB after re-weighting for missing data (0-100).
	DOBWeightNormalized float64 `json:"dob_weight_normalized"`

	// Points contributed by DOB to the total score.
	DOBContribution float64 `json:"dob_contribution"`

	// Country match score (-100 to 100).
	CountryScore int64 `json:"country_score"`

	// Original weight for country from config (0-100).
	CountryWeight int64 `json:"country_weight"`

	// Normalized weight for country after re-weighting for missing data (0-100).
	CountryWeightNormalized float64 `json:"country_weight_normalized"`

	// Points contributed by country to the total score.
	CountryContribution float64 `json:"country_contribution"`

	// Result of document number 'Golden Key' evaluation.
	DocumentNumberMatchType AMLScreeningHitsScoreBreakdownDocumentNumberMatchType `json:"document_number_match_type"`

	// Human-readable description of the document number effect on the score.
	DocumentNumberEffect string `json:"document_number_effect"`

	// Final weighted match score (0-100).
	TotalScore int64 `json:"total_score"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningHitsScoreBreakdown: Detailed breakdown of how the match_score was calculated.

func (*AMLScreeningHitsScoreBreakdown) UnmarshalJSON

func (r *AMLScreeningHitsScoreBreakdown) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningHitsScoreBreakdown leniently.

type AMLScreeningHitsScoreBreakdownDocumentNumberMatchType

type AMLScreeningHitsScoreBreakdownDocumentNumberMatchType string

AMLScreeningHitsScoreBreakdownDocumentNumberMatchType: Result of document number 'Golden Key' evaluation.

AMLScreeningHitsScoreBreakdownDocumentNumberMatchType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLScreeningHitsScoreBreakdownDocumentNumberMatchTypeMatch        AMLScreeningHitsScoreBreakdownDocumentNumberMatchType = "MATCH"
	AMLScreeningHitsScoreBreakdownDocumentNumberMatchTypeNeutral      AMLScreeningHitsScoreBreakdownDocumentNumberMatchType = "NEUTRAL"
	AMLScreeningHitsScoreBreakdownDocumentNumberMatchTypeHardMismatch AMLScreeningHitsScoreBreakdownDocumentNumberMatchType = "HARD_MISMATCH"
)

Known values of AMLScreeningHitsScoreBreakdownDocumentNumberMatchType.

type AMLScreeningHitsWarningMatches

type AMLScreeningHitsWarningMatches struct {
	// Name of the warning list publisher
	ListName string `json:"list_name"`

	// Name matched in the warning list
	MatchedName string `json:"matched_name"`

	// Description of the warning entry
	Description string `json:"description"`

	// Publisher or source of the warning
	Publisher string `json:"publisher"`

	// URL to the source of the warning
	SourceURL string `json:"source_url"`

	// Additional source URLs
	OtherSources []string `json:"other_sources"`

	// Countries associated with the warning
	Countries []string `json:"countries"`

	// Date the warning entry was created
	CreatedAt string `json:"created_at"`

	// Date the warning entry was last updated
	UpdatedAt string `json:"updated_at"`

	// Additional data from the warning source. May contain a `data` object with
	// `case_details` array.
	AdditionalData AMLScreeningHitsWarningMatchesAdditionalData `json:"additional_data"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningHitsWarningMatches is a response object.

func (*AMLScreeningHitsWarningMatches) UnmarshalJSON

func (r *AMLScreeningHitsWarningMatches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningHitsWarningMatches leniently.

type AMLScreeningHitsWarningMatchesAdditionalData

type AMLScreeningHitsWarningMatchesAdditionalData struct {
	Data AMLScreeningHitsWarningMatchesAdditionalDataData `json:"data"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningHitsWarningMatchesAdditionalData: Additional data from the warning source. May contain a `data` object with `case_details` array.

func (*AMLScreeningHitsWarningMatchesAdditionalData) UnmarshalJSON

func (r *AMLScreeningHitsWarningMatchesAdditionalData) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningHitsWarningMatchesAdditionalData leniently.

type AMLScreeningHitsWarningMatchesAdditionalDataData

type AMLScreeningHitsWarningMatchesAdditionalDataData struct {
	// Details of warning cases associated with this match
	CaseDetails []AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetails `json:"case_details"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningHitsWarningMatchesAdditionalDataData is a response object.

func (*AMLScreeningHitsWarningMatchesAdditionalDataData) UnmarshalJSON

UnmarshalJSON decodes AMLScreeningHitsWarningMatchesAdditionalDataData leniently.

type AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetails

type AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetails struct {
	// Type of the warning case
	CaseType AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType `json:"case_type"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetails is a response object.

func (*AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetails) UnmarshalJSON

UnmarshalJSON decodes AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetails leniently.

type AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType

type AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType string

AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType: Type of the warning case

AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseTypeAccusation              AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType = "Accusation"
	AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseTypeArrest                  AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType = "Arrest"
	AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseTypeBribery                 AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType = "Bribery"
	AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseTypeCriminal                AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType = "Criminal"
	AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseTypeFraud                   AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType = "Fraud"
	AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseTypeIllegalFundraising      AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType = "Illegal Fundraising"
	AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseTypeNonConvictionTerror     AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType = "Non-conviction Terror"
	AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseTypeProclaimedOffender      AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType = "Proclaimed Offender"
	AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseTypeRegulatoryEnforcement   AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType = "Regulatory Enforcement"
	AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseTypeTerrorism               AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType = "Terrorism"
	AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseTypeTerrorismRelated        AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType = "Terrorism-related"
	AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseTypeTerrorismRelatedListing AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType = "Terrorism-related listing"
)

Known values of AMLScreeningHitsWarningMatchesAdditionalDataDataCaseDetailsCaseType.

type AMLScreeningRun

type AMLScreeningRun struct {
	// Identifier of this screening run.
	UUID string `json:"uuid"`

	// When this subject's re-screen finished. Results are ordered by it, newest
	// first.
	CompletedAt time.Time `json:"completed_at"`

	// When the monitoring batch this re-screen belongs to started.
	StartedAt time.Time `json:"started_at"`

	// `NO_CHANGE`: completed and the result did not move. `CHANGED`: completed and
	// the score, status, hit count or hits changed. `FAILED`: no usable answer for
	// this subject, so the check was left as it was.
	Outcome AMLScreeningRunOutcome `json:"outcome"`

	// What started the screening. Always `ONGOING_MONITORING` today.
	Trigger AMLScreeningRunTrigger `json:"trigger"`

	// Opaque identifier of the AML data source that answered. Treat it as an opaque
	// string; do not branch on it.
	Provider string `json:"provider"`

	// AML check status this run left the check in.
	Status AMLScreeningRunStatus `json:"status"`

	// AML score this run left the check in.
	Score float64 `json:"score"`

	// Number of hits this run left the check in.
	TotalHits int64 `json:"total_hits"`

	// Dataset freshness behind this run, or `null` when no dates were available.
	DatasetFreshness AMLDatasetFreshness `json:"dataset_freshness"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningRun: One completed ongoing-monitoring re-screen of an AML check.

func (*AMLScreeningRun) UnmarshalJSON

func (r *AMLScreeningRun) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningRun leniently.

type AMLScreeningRunOutcome

type AMLScreeningRunOutcome string

AMLScreeningRunOutcome: `NO_CHANGE`: completed and the result did not move. `CHANGED`: completed and the score, status, hit count or hits changed. `FAILED`: no usable answer for this subject, so the check was left as it was.

AMLScreeningRunOutcome is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLScreeningRunOutcomeNoChange AMLScreeningRunOutcome = "NO_CHANGE"
	AMLScreeningRunOutcomeChanged  AMLScreeningRunOutcome = "CHANGED"
	AMLScreeningRunOutcomeFailed   AMLScreeningRunOutcome = "FAILED"
)

Known values of AMLScreeningRunOutcome.

type AMLScreeningRunStatus

type AMLScreeningRunStatus string

AMLScreeningRunStatus: AML check status this run left the check in.

AMLScreeningRunStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLScreeningRunStatusNotFinished    AMLScreeningRunStatus = "Not Finished"
	AMLScreeningRunStatusApproved       AMLScreeningRunStatus = "Approved"
	AMLScreeningRunStatusDeclined       AMLScreeningRunStatus = "Declined"
	AMLScreeningRunStatusInReview       AMLScreeningRunStatus = "In Review"
	AMLScreeningRunStatusResubRequested AMLScreeningRunStatus = "Resub Requested"
)

Known values of AMLScreeningRunStatus.

type AMLScreeningRunTrigger

type AMLScreeningRunTrigger string

AMLScreeningRunTrigger: What started the screening. Always `ONGOING_MONITORING` today.

AMLScreeningRunTrigger is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLScreeningRunTriggerOngoingMonitoring AMLScreeningRunTrigger = "ONGOING_MONITORING"
)

Known values of AMLScreeningRunTrigger.

type AMLScreeningScreenedData

type AMLScreeningScreenedData struct {
	FullName       string `json:"full_name"`
	Nationality    string `json:"nationality"`
	DateOfBirth    string `json:"date_of_birth"`
	DocumentNumber string `json:"document_number"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningScreenedData is a response object.

func (*AMLScreeningScreenedData) UnmarshalJSON

func (r *AMLScreeningScreenedData) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningScreenedData leniently.

type AMLScreeningStatus

type AMLScreeningStatus string

AMLScreeningStatus: Feature-level status of this AML screening. Independent of the top-level session `status` - a session can reach its overall decision while an individual feature stays `In Review`.

AMLScreeningStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLScreeningStatusNotFinished    AMLScreeningStatus = "Not Finished"
	AMLScreeningStatusApproved       AMLScreeningStatus = "Approved"
	AMLScreeningStatusDeclined       AMLScreeningStatus = "Declined"
	AMLScreeningStatusInReview       AMLScreeningStatus = "In Review"
	AMLScreeningStatusResubRequested AMLScreeningStatus = "Resub Requested"
)

Known values of AMLScreeningStatus.

type AMLScreeningWarnings

type AMLScreeningWarnings struct {
	// The feature that generated this warning. The value identifies the feature
	// block the warning belongs to. Within an AML screening this is typically
	// `AML`, but the enum above is authoritative across all feature warnings on the
	// decision payload.
	Feature          AMLScreeningWarningsFeature `json:"feature"`
	Risk             string                      `json:"risk"`
	AdditionalData   map[string]any              `json:"additional_data"`
	LogType          string                      `json:"log_type"`
	ShortDescription string                      `json:"short_description"`
	LongDescription  string                      `json:"long_description"`

	// The workflow graph node ID that generated this warning
	NodeID string `json:"node_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AMLScreeningWarnings is a response object.

func (*AMLScreeningWarnings) UnmarshalJSON

func (r *AMLScreeningWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AMLScreeningWarnings leniently.

type AMLScreeningWarningsFeature

type AMLScreeningWarningsFeature string

AMLScreeningWarningsFeature: The feature that generated this warning. The value identifies the feature block the warning belongs to. Within an AML screening this is typically `AML`, but the enum above is authoritative across all feature warnings on the decision payload.

AMLScreeningWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AMLScreeningWarningsFeatureIDVerification     AMLScreeningWarningsFeature = "ID_VERIFICATION"
	AMLScreeningWarningsFeatureNFC                AMLScreeningWarningsFeature = "NFC"
	AMLScreeningWarningsFeatureLiveness           AMLScreeningWarningsFeature = "LIVENESS"
	AMLScreeningWarningsFeatureFacematch          AMLScreeningWarningsFeature = "FACEMATCH"
	AMLScreeningWarningsFeatureProofOfAddress     AMLScreeningWarningsFeature = "PROOF_OF_ADDRESS"
	AMLScreeningWarningsFeaturePhone              AMLScreeningWarningsFeature = "PHONE"
	AMLScreeningWarningsFeatureEmail              AMLScreeningWarningsFeature = "EMAIL"
	AMLScreeningWarningsFeatureAML                AMLScreeningWarningsFeature = "AML"
	AMLScreeningWarningsFeatureLocation           AMLScreeningWarningsFeature = "LOCATION"
	AMLScreeningWarningsFeatureDatabaseValidation AMLScreeningWarningsFeature = "DATABASE_VALIDATION"
	AMLScreeningWarningsFeatureQuestionnaire      AMLScreeningWarningsFeature = "QUESTIONNAIRE"
	AMLScreeningWarningsFeatureDocumentAi         AMLScreeningWarningsFeature = "DOCUMENT_AI"
	AMLScreeningWarningsFeatureKYBRegistry        AMLScreeningWarningsFeature = "KYB_REGISTRY"
	AMLScreeningWarningsFeatureKYBDocuments       AMLScreeningWarningsFeature = "KYB_DOCUMENTS"
	AMLScreeningWarningsFeatureKYBKeyPeople       AMLScreeningWarningsFeature = "KYB_KEY_PEOPLE"
)

Known values of AMLScreeningWarningsFeature.

type AMLService

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

AMLService holds the aml operations. Use it through Client.AML.

func (*AMLService) RetrieveDatasetFreshness

func (r *AMLService) RetrieveDatasetFreshness(ctx context.Context, opts ...option.RequestOption) (*AMLRetrieveDatasetFreshnessResponse, error)

RetrieveDatasetFreshness: Get AML dataset freshness.

Report how current the datasets behind AML screening are, per source family (`sanctions`, `pep`, `warnings`, `adverse_media`), as audit evidence for [ongoing AML monitoring](https://docs.didit.me/core-technology/aml-screening/continuous-monitoring-aml-screening#proving-that-monitoring-ran). The answer is platform-wide: no session in the path, no customer data in the body, the same answer for every application.

Always `200` for an accepted key. Check `availability` first: when it is not `available`, `dataset_freshness` is `null`. Dates are never estimated: a family whose datasets reported no date is absent from `sources`, and a family where only some datasets reported one has `oldest_updated_at: null`. Readings are taken while ongoing monitoring runs, not on each call; `captured_at` says when.

A scoped API key needs `sessions: read`; a key limited to some workflows or to approved sessions cannot call this endpoint. Nothing is billed.

GET /v3/aml/dataset-freshness/

func (*AMLService) Screen

Screen: AML screening (standalone).

Screen a person or company against PEP, sanctions, warning/watchlist, and adverse-media datasets in one call.

**Two-score model.** Each hit carries a `match_score` (0-100, identity confidence) and a `risk_score` (0-100, entity risk). Hits whose `match_score` is below `aml_match_score_threshold` (default **93**) are tagged `review_status: "False Positive"` and ignored for risk purposes; the highest `risk_score` among the remaining hits becomes `aml.score`. The final `aml.status` follows your thresholds: `score` > `aml_score_review_threshold` (default **100**) → `Declined`; `score` > `aml_score_approve_threshold` (default **80**) → `In Review`; otherwise `Approved`. Whenever `score` is non-zero and ≥ the approve threshold a `POSSIBLE_MATCH_FOUND` warning is added (a score of exactly 0 never warns).

**Match-score weights.** `aml_name_weight` + `aml_dob_weight` + `aml_country_weight` must sum to exactly 100 (defaults 60/25/15). Components missing from the request are re-normalized away; a matching `document_number` acts as a golden key that overrides `match_score` to 100.

**Latency.** Plain screenings typically complete in a few seconds. With `include_adverse_media=true` the API waits for adverse-media enrichment (an initial ~5 s pause plus up to ~25 s of polling) - configure a client timeout of **at least 60 seconds**.

**Persistence.** `save_api_request` defaults to **true**: the screening is stored as a session (`request_id` works with `GET /v3/session/{sessionId}/decision/`), it appears in the console, a `status.updated` webhook fires, and hit review statuses can be updated later. With `save_api_request=false` nothing is stored and `request_id` is a transient correlation id. `include_ongoing_monitoring=true` keeps re-screening the profile and requires `save_api_request=true` (enforced with a `400`).

**Idempotency.** Send an `Idempotency-Key` header when retrying after a timeout or transient error. The key is scoped to your application and the exact request body. The first completed request stores its response; later identical retries return that same response and do not run or bill another AML screening. If the original request is still running, retry later with the same key. If the same key is reused with a different body, the API returns `409`.

**Billing.** One AML API credit is charged after the first successful screening. Replayed idempotent responses are not charged again; an insufficient balance returns `403` before any new screening happens.

**Sandbox.** Keys from sandbox applications skip screening and billing entirely and return a mocked result - `Approved` with zero hits unless you pass `sandbox_scenario`. `save_api_request` works the same as on live keys, so a saved sandbox screening is retrievable through `GET /v3/session/{sessionId}/decision/` and `GET /v3/session/{sessionId}/generate-pdf/`.

POST /v3/aml/

type APIConnectionError

type APIConnectionError struct {
	Method string
	// URL is the request URL without query string or credentials.
	URL   string
	Cause error
}

APIConnectionError reports a request that got no HTTP response: DNS and connection failures, TLS errors, a connection dropped while the response was read, or a cancelled context. Cause holds the underlying error.

func (*APIConnectionError) Error

func (e *APIConnectionError) Error() string

func (*APIConnectionError) Unwrap

func (e *APIConnectionError) Unwrap() error

type APIStatusError

type APIStatusError struct {
	StatusCode int
	// Body is the response body parsed as JSON when possible (map[string]any,
	// []any, ...), otherwise the body as a string, or nil when empty.
	Body any
	// RawBody is the response body as received, with the API key replaced
	// by "[redacted]" if the server echoed it.
	RawBody []byte
	Header  http.Header
	// RequestID is the request id of the response (X-Request-Id, Request-Id,
	// X-Amzn-Requestid or X-Correlation-Id), if any.
	RequestID string
	Method    string
	// URL is the request URL without query string or credentials.
	URL string
	// Response is the HTTP response. Its body reads RawBody, and its
	// request's X-Api-Key header is redacted.
	Response *http.Response
}

APIStatusError reports a response with a status code outside 2xx.

Use errors.As with *APIStatusError for every status, or with one of the status-specific types (*NotFoundError, *RateLimitError, ...) which all unwrap to *APIStatusError.

func (*APIStatusError) Error

func (e *APIStatusError) Error() string

type APITimeoutError

type APITimeoutError struct {
	*APIConnectionError
}

APITimeoutError reports a request that timed out before a complete response arrived. It unwraps to the *APIConnectionError that carries the details.

func (*APITimeoutError) Error

func (e *APITimeoutError) Error() string

func (*APITimeoutError) Unwrap

func (e *APITimeoutError) Unwrap() error

type AccountApplicationsListParams

type AccountApplicationsListParams struct {
	// Page size. Defaults to 50.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based offset of the first result.
	Offset Opt[int64] `json:"-" query:"offset"`
}

AccountApplicationsListParams holds the parameters of Client.Account.Applications.List.

func (AccountApplicationsListParams) MarshalJSON

func (r AccountApplicationsListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type AccountApplicationsService

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

AccountApplicationsService holds the account applications operations. Use it through Client.Account.Applications.

func (*AccountApplicationsService) Create

Create: Create Application.

Create an application inside an organization. The response includes `api_key`; persist it now (recoverable via GET). Requires owner/admin JWT.

POST /organizations/me/{org_id}/applications/

func (*AccountApplicationsService) List

List: List the organization's applications.

List the organization's applications, 50 per page by default. Use this to discover `app_id` values when recovering credentials from a new machine, then call `GET /organizations/me/{org_id}/applications/{app_id}/` for the API key. Requires an owner or admin Bearer token.

It returns one page; ListAutoPaging iterates over every item of every page.

GET /organizations/me/{org_id}/applications/

func (*AccountApplicationsService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*AccountApplicationsService) Retrieve

func (r *AccountApplicationsService) Retrieve(ctx context.Context, orgID string, appID string, opts ...option.RequestOption) (*Application, error)

Retrieve: Get Application Credentials.

Read one application's full record including `client_id` and `api_key`. Use this to recover a lost `api_key`.

GET /organizations/me/{org_id}/applications/{app_id}/

func (*AccountApplicationsService) Update

Update: Update Application.

Update application metadata (name, URLs, redirect URIs). `api_key` and `client_id` are never rotated. `products` is read-only: a `products` key in the body is ignored. Requires owner/admin JWT.

PATCH /organizations/me/{org_id}/applications/{app_id}/

type AccountOrganizationsListParams

type AccountOrganizationsListParams struct {
	// Page size. Defaults to 50.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based offset of the first result.
	Offset Opt[int64] `json:"-" query:"offset"`
}

AccountOrganizationsListParams holds the parameters of Client.Account.Organizations.List.

func (AccountOrganizationsListParams) MarshalJSON

func (r AccountOrganizationsListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type AccountOrganizationsService

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

AccountOrganizationsService holds the account organizations operations. Use it through Client.Account.Organizations.

func (*AccountOrganizationsService) List

List: List My Organizations.

List organizations the authenticated user belongs to. Each entry's `uuid` is the `org_id` used on the application endpoints.

It returns one page; ListAutoPaging iterates over every item of every page.

GET /organizations/me/

func (*AccountOrganizationsService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

type AccountResendOTPParams

type AccountResendOTPParams struct {
	// Email of the pending (unverified) account. Required.
	Email string `json:"email"`

	// Password chosen at registration. Required.
	Password string `json:"password"`
}

AccountResendOTPParams holds the parameters of Client.Account.ResendOTP.

func (AccountResendOTPParams) MarshalJSON

func (r AccountResendOTPParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type AccountResendOTPResponse

type AccountResendOTPResponse struct {
	// Always `A new verification code has been sent to your email.`
	Message string `json:"message"`

	// The address the code was sent to, normalized: lowercased, with any `+tag`
	// removed from the local part (`Dev+test@Example.com` becomes
	// `dev@example.com`).
	Email string `json:"email"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AccountResendOTPResponse is a response object.

func (*AccountResendOTPResponse) UnmarshalJSON

func (r *AccountResendOTPResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AccountResendOTPResponse leniently.

type AccountService

type AccountService struct {
	Applications  *AccountApplicationsService
	Organizations *AccountOrganizationsService
	// contains filtered or unexported fields
}

AccountService holds the account operations. Use it through Client.Account.

func (*AccountService) Login

Login: Programmatic Login.

Authenticate any verified email/password Didit account and receive an RS256 JWT pair (default lifetime 86400s). Console-created email/password accounts can use this endpoint; OAuth-only console accounts must set a password first.

POST /programmatic/login/

func (*AccountService) Register

Register: Register Account.

Step 1 of programmatic onboarding. Creates a pending account and emails a 6-char code (10 min TTL). Rate limit: 5/IP/hour.

POST /programmatic/register/

func (*AccountService) ResendOTP

ResendOTP: Resend the email verification code.

Resend the 6-character verification code for an unverified programmatic account. Requires the account's email and password so only the owner can trigger a new code (no console Basic Auth). A fresh code replaces the previous one and is valid for 10 minutes.

Rate limits: a per-email cooldown of 60 seconds between resends (HTTP 429 with `Retry-After`), and the same 5-per-IP-per-hour budget as registration.

POST /programmatic/resend-otp/

func (*AccountService) VerifyEmail

VerifyEmail: Verify Email and Issue Credentials.

Step 2 of onboarding. Exchanges the 6-char code for a verified account, a default org+app, and a JWT pair. Persist the returned `api_key`.

POST /programmatic/verify-email/

type AgeEstimationEstimateParams

type AgeEstimationEstimateParams struct {
	// Face photo to analyze (e.g. a selfie). Submit a single front-facing photo
	// with the subject's face clearly visible and well lit. Allowed extensions:
	// `tiff`, `jpg`, `jpeg`, `png`, `webp` (no PDF). Maximum upload size: **5 MB**
	// (larger files are rejected with `400`). Images are automatically compressed
	// to ~0.3 MB before processing, so very high resolutions do not improve
	// accuracy. Required.
	UserImage File `json:"-" form:"user_image"`

	// Liveness threshold (0-100). A liveness `score` **at or below** this value
	// adds a `LOW_LIVENESS_SCORE` warning and declines. Raise it for stricter
	// anti-spoofing; values outside 0-100 return `400`.
	FaceLivenessScoreDeclineThreshold Opt[float64] `json:"face_liveness_score_decline_threshold"`

	// Minimum acceptable estimated age in years. An estimated age **below** this
	// value adds an `AGE_BELOW_MINIMUM` warning and declines. Set `0` to disable
	// the age check (the call then only runs liveness + age estimation without an
	// age-based decision).
	AgeEstimationDeclineThreshold Opt[int64] `json:"age_estimation_decline_threshold"`

	// When `true`, the service tries the input image in 90-degree increments (0,
	// 90, 180, 270) and uses the orientation that yields the best face detection -
	// useful for mobile captures with missing EXIF orientation. Adds latency, so
	// only enable it if you cannot guarantee upright images.
	RotateImage Opt[bool] `json:"rotate_image"`

	// When `true` (default), persists the call as an API-type session - visible in
	// the Business Console, retrievable via `GET /v3/session/{sessionId}/decision/`
	// using the returned `request_id`, announced through a `status.updated`
	// webhook, and with the detected face added to your application's face index.
	// When `false`, nothing is stored and `request_id` is a transient UUID for
	// response correlation only.
	SaveAPIRequest Opt[bool] `json:"save_api_request"`

	// Optional opaque string (your internal user id, email, UUID…) stored on the
	// persisted session and echoed back in the response. Use it to correlate API
	// calls with your own records and to filter sessions later.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the session (when `save_api_request=true`)
	// and echoed back in the response. In multipart requests, send it as a
	// JSON-encoded string field (e.g. `metadata={"flow":"age-gate"}`) - it is
	// parsed into an object.
	Metadata Opt[map[string]any] `json:"metadata"`
}

AgeEstimationEstimateParams holds the parameters of Client.AgeEstimation.Estimate.

func (AgeEstimationEstimateParams) MarshalJSON

func (r AgeEstimationEstimateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type AgeEstimationEstimateResponse

type AgeEstimationEstimateResponse struct {
	// Persisted session id when `save_api_request=true` (usable with `GET
	// /v3/session/{sessionId}/decision/`); otherwise a transient correlation UUID.
	RequestID     string                                     `json:"request_id"`
	AgeEstimation AgeEstimationEstimateResponseAgeEstimation `json:"age_estimation"`

	// Echo of the `vendor_data` you sent, or `null`.
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` object you sent, or `null`.
	Metadata map[string]any `json:"metadata"`

	// ISO 8601 timestamp (UTC) of when the response was generated.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AgeEstimationEstimateResponse is a response object.

func (*AgeEstimationEstimateResponse) UnmarshalJSON

func (r *AgeEstimationEstimateResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AgeEstimationEstimateResponse leniently.

type AgeEstimationEstimateResponseAgeEstimation

type AgeEstimationEstimateResponseAgeEstimation struct {
	// `Approved` when no warnings were raised; `Declined` otherwise (every warning
	// this endpoint produces declines).
	Status AgeEstimationEstimateResponseAgeEstimationStatus `json:"status"`

	// Liveness method. Always `PASSIVE` on this endpoint (single-image, no user
	// challenge).
	Method AgeEstimationEstimateResponseAgeEstimationMethod `json:"method"`

	// Passive-liveness score from 0 to 100 - the model's confidence that the photo
	// shows a live person. Compared against
	// `face_liveness_score_decline_threshold`; at or below it the call declines
	// with `LOW_LIVENESS_SCORE`. `null` when the liveness model returns no
	// confidence - the call still declines with `LOW_LIVENESS_SCORE` because null
	// is treated as 0 for the threshold comparison.
	Score float64 `json:"score"`

	// Face-detection results for the analyzed image.
	UserImage AgeEstimationEstimateResponseAgeEstimationUserImage `json:"user_image"`

	// Model-predicted age in years of the **largest** detected face. `null` when no
	// face age could be estimated (an `AGE_NOT_DETECTED` warning is added and the
	// call declines).
	AgeEstimation float64 `json:"age_estimation"`

	// Empty on a clean approval. Any entry sets `status` to `Declined`.
	Warnings []AgeEstimationEstimateResponseAgeEstimationWarnings `json:"warnings"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AgeEstimationEstimateResponseAgeEstimation is a response object.

func (*AgeEstimationEstimateResponseAgeEstimation) UnmarshalJSON

func (r *AgeEstimationEstimateResponseAgeEstimation) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AgeEstimationEstimateResponseAgeEstimation leniently.

type AgeEstimationEstimateResponseAgeEstimationMethod

type AgeEstimationEstimateResponseAgeEstimationMethod string

AgeEstimationEstimateResponseAgeEstimationMethod: Liveness method. Always `PASSIVE` on this endpoint (single-image, no user challenge).

AgeEstimationEstimateResponseAgeEstimationMethod is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AgeEstimationEstimateResponseAgeEstimationMethodPassive AgeEstimationEstimateResponseAgeEstimationMethod = "PASSIVE"
)

Known values of AgeEstimationEstimateResponseAgeEstimationMethod.

type AgeEstimationEstimateResponseAgeEstimationStatus

type AgeEstimationEstimateResponseAgeEstimationStatus string

AgeEstimationEstimateResponseAgeEstimationStatus: `Approved` when no warnings were raised; `Declined` otherwise (every warning this endpoint produces declines).

AgeEstimationEstimateResponseAgeEstimationStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AgeEstimationEstimateResponseAgeEstimationStatusApproved AgeEstimationEstimateResponseAgeEstimationStatus = "Approved"
	AgeEstimationEstimateResponseAgeEstimationStatusDeclined AgeEstimationEstimateResponseAgeEstimationStatus = "Declined"
)

Known values of AgeEstimationEstimateResponseAgeEstimationStatus.

type AgeEstimationEstimateResponseAgeEstimationUserImage

type AgeEstimationEstimateResponseAgeEstimationUserImage struct {
	// One entry per detected face. Empty when no face was found (then
	// `age_estimation` is `null` and an `AGE_NOT_DETECTED` warning is added).
	Entities []AgeEstimationEstimateResponseAgeEstimationUserImageEntities `json:"entities"`

	// Rotation (degrees: 0, 90, 180, or 270) that produced the best face detection.
	// Only non-zero when `rotate_image=true` corrected the orientation.
	BestAngle int64 `json:"best_angle"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AgeEstimationEstimateResponseAgeEstimationUserImage: Face-detection results for the analyzed image.

func (*AgeEstimationEstimateResponseAgeEstimationUserImage) UnmarshalJSON

UnmarshalJSON decodes AgeEstimationEstimateResponseAgeEstimationUserImage leniently.

type AgeEstimationEstimateResponseAgeEstimationUserImageEntities

type AgeEstimationEstimateResponseAgeEstimationUserImageEntities struct {
	// Model-estimated age of this face, in years.
	Age float64 `json:"age"`

	// Bounding box of the detected face as `[x_min, y_min, x_max, y_max]` pixel
	// coordinates in the processed image.
	Bbox []int64 `json:"bbox"`

	// Face-detection confidence (0-1).
	Confidence float64 `json:"confidence"`

	// Model-predicted gender of the detected face (`male` or `female`).
	// Informational only.
	Gender string `json:"gender"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AgeEstimationEstimateResponseAgeEstimationUserImageEntities is a response object.

func (*AgeEstimationEstimateResponseAgeEstimationUserImageEntities) UnmarshalJSON

UnmarshalJSON decodes AgeEstimationEstimateResponseAgeEstimationUserImageEntities leniently.

type AgeEstimationEstimateResponseAgeEstimationWarnings

type AgeEstimationEstimateResponseAgeEstimationWarnings struct {
	// Machine-readable risk code. `NO_FACE_DETECTED` - the liveness model found no
	// face; `LOW_LIVENESS_SCORE` - liveness `score` at or below
	// `face_liveness_score_decline_threshold`; `LIVENESS_FACE_ATTACK` - a
	// presentation attack (photo/screen/mask) was detected; `AGE_NOT_DETECTED` - no
	// face age could be estimated; `AGE_BELOW_MINIMUM` - estimated age below
	// `age_estimation_decline_threshold`. `NO_FACE_DETECTED` and
	// `LOW_LIVENESS_SCORE` are mutually exclusive - when no face is found only
	// `NO_FACE_DETECTED` is emitted.
	Risk AgeEstimationEstimateResponseAgeEstimationWarningsRisk `json:"risk"`

	// Feature that raised the warning. Always `LIVENESS` on this endpoint.
	Feature AgeEstimationEstimateResponseAgeEstimationWarningsFeature `json:"feature"`

	// Always `null` for age-estimation warnings.
	AdditionalData map[string]any `json:"additional_data"`

	// Severity. Every warning this endpoint produces is an `error` and sets
	// `status` to `Declined`.
	LogType AgeEstimationEstimateResponseAgeEstimationWarningsLogType `json:"log_type"`

	// Human-readable one-line summary of the risk.
	ShortDescription string `json:"short_description"`

	// Human-readable explanation of the risk.
	LongDescription string `json:"long_description"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AgeEstimationEstimateResponseAgeEstimationWarnings is a response object.

func (*AgeEstimationEstimateResponseAgeEstimationWarnings) UnmarshalJSON

UnmarshalJSON decodes AgeEstimationEstimateResponseAgeEstimationWarnings leniently.

type AgeEstimationEstimateResponseAgeEstimationWarningsFeature

type AgeEstimationEstimateResponseAgeEstimationWarningsFeature string

AgeEstimationEstimateResponseAgeEstimationWarningsFeature: Feature that raised the warning. Always `LIVENESS` on this endpoint.

AgeEstimationEstimateResponseAgeEstimationWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AgeEstimationEstimateResponseAgeEstimationWarningsFeatureLiveness AgeEstimationEstimateResponseAgeEstimationWarningsFeature = "LIVENESS"
)

Known values of AgeEstimationEstimateResponseAgeEstimationWarningsFeature.

type AgeEstimationEstimateResponseAgeEstimationWarningsLogType

type AgeEstimationEstimateResponseAgeEstimationWarningsLogType string

AgeEstimationEstimateResponseAgeEstimationWarningsLogType: Severity. Every warning this endpoint produces is an `error` and sets `status` to `Declined`.

AgeEstimationEstimateResponseAgeEstimationWarningsLogType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AgeEstimationEstimateResponseAgeEstimationWarningsLogTypeError AgeEstimationEstimateResponseAgeEstimationWarningsLogType = "error"
)

Known values of AgeEstimationEstimateResponseAgeEstimationWarningsLogType.

type AgeEstimationEstimateResponseAgeEstimationWarningsRisk

type AgeEstimationEstimateResponseAgeEstimationWarningsRisk string

AgeEstimationEstimateResponseAgeEstimationWarningsRisk: Machine-readable risk code. `NO_FACE_DETECTED` - the liveness model found no face; `LOW_LIVENESS_SCORE` - liveness `score` at or below `face_liveness_score_decline_threshold`; `LIVENESS_FACE_ATTACK` - a presentation attack (photo/screen/mask) was detected; `AGE_NOT_DETECTED` - no face age could be estimated; `AGE_BELOW_MINIMUM` - estimated age below `age_estimation_decline_threshold`. `NO_FACE_DETECTED` and `LOW_LIVENESS_SCORE` are mutually exclusive - when no face is found only `NO_FACE_DETECTED` is emitted.

AgeEstimationEstimateResponseAgeEstimationWarningsRisk is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AgeEstimationEstimateResponseAgeEstimationWarningsRiskNoFaceDetected     AgeEstimationEstimateResponseAgeEstimationWarningsRisk = "NO_FACE_DETECTED"
	AgeEstimationEstimateResponseAgeEstimationWarningsRiskLowLivenessScore   AgeEstimationEstimateResponseAgeEstimationWarningsRisk = "LOW_LIVENESS_SCORE"
	AgeEstimationEstimateResponseAgeEstimationWarningsRiskLivenessFaceAttack AgeEstimationEstimateResponseAgeEstimationWarningsRisk = "LIVENESS_FACE_ATTACK"
	AgeEstimationEstimateResponseAgeEstimationWarningsRiskAgeNotDetected     AgeEstimationEstimateResponseAgeEstimationWarningsRisk = "AGE_NOT_DETECTED"
	AgeEstimationEstimateResponseAgeEstimationWarningsRiskAgeBelowMinimum    AgeEstimationEstimateResponseAgeEstimationWarningsRisk = "AGE_BELOW_MINIMUM"
)

Known values of AgeEstimationEstimateResponseAgeEstimationWarningsRisk.

type AgeEstimationService

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

AgeEstimationService holds the age_estimation operations. Use it through Client.AgeEstimation.

func (*AgeEstimationService) Estimate

Estimate: Age Estimation (face age + passive liveness).

Estimate a person's age from a single face photo and run a passive liveness check in the same call - returns the model-predicted `age_estimation` (in years), a liveness `score` (0-100), and an `Approved`/`Declined` `status`. The age is **model-predicted from the face, not verified against a document** - use it for age gates and low-friction checks, not as legal proof of age.

**How it works.** The image is analyzed for faces (set `rotate_image=true` if captures may be sideways or upside down); each detected face gets an estimated age, and the largest face in the frame drives `age_estimation`. In parallel, a passive liveness model scores whether the photo shows a live person (no user challenge required) and detects presentation attacks (photos of photos, screens, masks). Submit one clear, front-facing, well-lit face per image for best results.

**Decision logic.** Any warning declines: `status` is `Approved` only when the `warnings` array is empty. A liveness `score` at or below `face_liveness_score_decline_threshold` (default `30`) adds `LOW_LIVENESS_SCORE`; a detected attack adds `LIVENESS_FACE_ATTACK`; no face found by the liveness model adds `NO_FACE_DETECTED`; no estimable face age adds `AGE_NOT_DETECTED` (`age_estimation` is `null`); an estimated age below `age_estimation_decline_threshold` (default `18`) adds `AGE_BELOW_MINIMUM`. Borderline ages near your threshold deserve a fallback to document-based verification - the model's error grows for faces close to the limit.

**Billing.** Each `200` response consumes one Age Estimation API credit (standalone APIs have no free tier). When the organization's balance cannot cover the call, the endpoint returns `403` with the not-enough-credits error before any image processing.

**Session persistence (`save_api_request`, default `true`).** When `true`, the call is persisted as an API-type session: it appears in the Business Console, the returned `request_id` is a real session id you can pass to `GET /v3/session/{sessionId}/decision/` (the result is exposed there in `liveness_checks[]`, with `features: ["AGE_ESTIMATION"]`), the face crop and reference image are stored, the face embedding is added to your application's face index (used by face search and duplicate detection), and a `status.updated` webhook is emitted. When `false`, nothing is stored and `request_id` is a one-off correlation UUID that cannot be looked up later.

**Sandbox.** Sandbox API keys skip all processing and billing: after request validation (malformed input still returns `400`), the endpoint returns a static `Approved` mock payload (`age_estimation: 30`, no warnings), no session is persisted, and no credits are consumed.

**Authentication.** Send your application's API key in the `x-api-key` header. Missing or invalid credentials return `403` (`{"detail": "You do not have permission to perform this action."}`) - this API never returns `401`.

**Rate limit.** Shared write budget of 300 requests/min per API key across all POST/PATCH/DELETE endpoints; exceeding it returns `429`.

POST /v3/age-estimation/

type AnalyticsRetrieveParams

type AnalyticsRetrieveParams struct {
	// First day of the range, `YYYY-MM-DD`, inclusive (UTC). Send it together with
	// `end_date`: when either is missing, both are ignored and the range runs from
	// 30 days before today through today.
	StartDate Opt[string] `json:"-" query:"start_date"`

	// Last day of the range, `YYYY-MM-DD`, inclusive (UTC). A future date counts as
	// today. The range may not exceed 730 days.
	EndDate Opt[string] `json:"-" query:"end_date"`

	// Dashboard tab to return widgets for (case-insensitive). Omit it, together
	// with `widget_keys`, for the KYC summary. Sending only `widget_keys` implies
	// `kyc`. `home` accepts any KYC, KYB or transaction widget and defaults to the
	// application's saved home layout.
	Scope Opt[AnalyticsRetrieveParamsScope] `json:"-" query:"scope"`

	// Comma-separated widget keys, answered in this order. Keys the scope does not
	// accept are dropped; when none is left you get the scope's defaults. KYC:
	// `kyc_sessions_volume`, `kyc_warning_insights`, `kyc_id_locations`,
	// `kyc_ip_locations`, `kyc_workflow_funnel`, `kyc_average_verification_time`,
	// `kyc_conversion_rate`, `kyc_conversion_by_country`,
	// `kyc_resubmission_insights`, `kyc_original_status_distribution`,
	// `kyc_database_validation_coverage`, `kyc_database_validation_latency`,
	// `kyc_demographics`, `kyc_device_details`. KYB: `kyb_sessions_volume`,
	// `kyb_workflow_funnel`, `kyb_average_verification_time`, `kyb_ip_locations`,
	// `kyb_business_country_distribution`, `kyb_warning_insights`,
	// `kyb_conversion_rate`, `kyb_conversion_by_country`, `kyb_industry_breakdown`,
	// `kyb_resubmission_insights`, `kyb_original_status_distribution`,
	// `kyb_registry_coverage`, `kyb_registry_data_completeness`,
	// `kyb_device_details`. Transactions: `tx_count_total`, `tx_count_daily`,
	// `tx_volume_total_preferred_currency`, `tx_volume_daily_preferred_currency`,
	// `tx_average_amount`, `tx_average_amount_daily`,
	// `tx_transaction_category_breakdown`, `tx_action_type_breakdown`,
	// `tx_status_volume_trend`, `tx_user_ip_or_country_distribution`,
	// `tx_tag_breakdown`, `tx_top_rules_triggered`, `tx_team_member_performance`,
	// `tx_score_histogram`.
	WidgetKeys Opt[string] `json:"-" query:"widget_keys"`

	// Comma-separated workflow IDs. Limits the KYC summary and the KYC and KYB
	// widgets to those workflows. Values that are not UUIDs are ignored; when none
	// is valid the filter is dropped. The summary also accepts `workflow_id`.
	WorkflowIDs Opt[string] `json:"-" query:"workflow_ids"`

	// Comma-separated workflow version numbers. Applies only together with
	// `workflow_ids`; values that are not whole numbers are ignored. `version` is
	// accepted as an alias.
	Versions Opt[string] `json:"-" query:"versions"`

	// Comma-separated branch path IDs. Applies only together with `workflow_ids`,
	// and only to KYC figures. Figures are currently recorded only for `default`
	// (all paths combined), so any other value returns empty figures.
	// `branch_path_id` is accepted as an alias.
	BranchPathIDs Opt[string] `json:"-" query:"branch_path_ids"`

	// Transaction widgets only: comma-separated tag UUIDs or tag names.
	Tag Opt[string] `json:"-" query:"tag"`

	// Transaction widgets only: comma-separated transaction categories.
	TransactionType Opt[string] `json:"-" query:"transaction_type"`

	// Transaction widgets only: comma-separated action types (case-insensitive).
	ActionType Opt[string] `json:"-" query:"action_type"`
}

AnalyticsRetrieveParams holds the parameters of Client.Analytics.Retrieve.

func (AnalyticsRetrieveParams) MarshalJSON

func (r AnalyticsRetrieveParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type AnalyticsRetrieveParamsScope

type AnalyticsRetrieveParamsScope string

AnalyticsRetrieveParamsScope is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AnalyticsRetrieveParamsScopeHome         AnalyticsRetrieveParamsScope = "home"
	AnalyticsRetrieveParamsScopeKYC          AnalyticsRetrieveParamsScope = "kyc"
	AnalyticsRetrieveParamsScopeKYB          AnalyticsRetrieveParamsScope = "kyb"
	AnalyticsRetrieveParamsScopeTransactions AnalyticsRetrieveParamsScope = "transactions"
)

Known values of AnalyticsRetrieveParamsScope.

type AnalyticsRetrieveResponse

type AnalyticsRetrieveResponse struct {
	// One point per day, from the first day with sessions in the range to
	// `end_date`. Always daily, whatever `grouping_mode` says.
	DataPoints       []ApplicationAnalyticsDataPoint      `json:"data_points"`
	RequestBreakdown ApplicationAnalyticsRequestBreakdown `json:"request_breakdown"`

	// Daily points for the period of the same length right before `start_date`.
	PreviousDataPoints       []ApplicationAnalyticsDataPoint      `json:"previous_data_points"`
	PreviousRequestBreakdown ApplicationAnalyticsRequestBreakdown `json:"previous_request_breakdown"`

	// `total_approved / (total_approved + total_declined + total_in_review) x 100`,
	// one decimal. `null` when nothing finished.
	ConversionRate        float64                                       `json:"conversion_rate"`
	LocationStats         ApplicationAnalyticsLocationStats             `json:"location_stats"`
	DemographicStats      ApplicationAnalyticsDemographicStats          `json:"demographic_stats"`
	DeviceDetails         ApplicationAnalyticsDeviceDetails             `json:"device_details"`
	WorkflowFunnelStats   map[string]ApplicationAnalyticsWorkflowFunnel `json:"workflow_funnel_stats"`
	VerificationTimeStats ApplicationAnalyticsVerificationTimeStats     `json:"verification_time_stats"`
	ResubmissionStats     ApplicationAnalyticsResubmissionStats         `json:"resubmission_stats"`
	WarningStats          map[string]ApplicationAnalyticsWarningStats   `json:"warning_stats"`
	OriginalStatusStats   ApplicationAnalyticsOriginalStatusStats       `json:"original_status_stats"`

	// How the `*_time_series` lists are grouped: `day` for up to 14 days, `week` up
	// to 90, `month` beyond. Measured from the first day with sessions in the
	// range.
	GroupingMode               AnalyticsRetrieveResponseGroupingMode       `json:"grouping_mode"`
	DemographicTimeSeries      []ApplicationAnalyticsDemographicPoint      `json:"demographic_time_series"`
	DeviceTimeSeries           []ApplicationAnalyticsDevicePoint           `json:"device_time_series"`
	VerificationTimeTimeSeries []ApplicationAnalyticsVerificationTimePoint `json:"verification_time_time_series"`
	ResubmissionTimeSeries     []ApplicationAnalyticsResubmissionPoint     `json:"resubmission_time_series"`
	OriginalStatusTimeSeries   []ApplicationAnalyticsOriginalStatusPoint   `json:"original_status_time_series"`

	// Dashboard tab.
	Scope AnalyticsRetrieveResponseScope `json:"scope"`

	// Every widget key this scope accepts.
	AvailableWidgetKeys []string `json:"available_widget_keys"`

	// The widget keys answered, in order: your valid `widget_keys`, or the scope's
	// defaults.
	RequestedWidgetKeys []string `json:"requested_widget_keys"`

	// Keyed by widget key, in the order of `requested_widget_keys`.
	Widgets map[string]ApplicationAnalyticsWidget `json:"widgets"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

AnalyticsRetrieveResponse is a response object.

func (*AnalyticsRetrieveResponse) UnmarshalJSON

func (r *AnalyticsRetrieveResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes AnalyticsRetrieveResponse leniently.

type AnalyticsRetrieveResponseGroupingMode

type AnalyticsRetrieveResponseGroupingMode string

AnalyticsRetrieveResponseGroupingMode: How the `*_time_series` lists are grouped: `day` for up to 14 days, `week` up to 90, `month` beyond. Measured from the first day with sessions in the range.

AnalyticsRetrieveResponseGroupingMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AnalyticsRetrieveResponseGroupingModeDay   AnalyticsRetrieveResponseGroupingMode = "day"
	AnalyticsRetrieveResponseGroupingModeWeek  AnalyticsRetrieveResponseGroupingMode = "week"
	AnalyticsRetrieveResponseGroupingModeMonth AnalyticsRetrieveResponseGroupingMode = "month"
)

Known values of AnalyticsRetrieveResponseGroupingMode.

type AnalyticsRetrieveResponseScope

type AnalyticsRetrieveResponseScope string

AnalyticsRetrieveResponseScope: Dashboard tab.

AnalyticsRetrieveResponseScope is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	AnalyticsRetrieveResponseScopeHome         AnalyticsRetrieveResponseScope = "home"
	AnalyticsRetrieveResponseScopeKYC          AnalyticsRetrieveResponseScope = "kyc"
	AnalyticsRetrieveResponseScopeKYB          AnalyticsRetrieveResponseScope = "kyb"
	AnalyticsRetrieveResponseScopeTransactions AnalyticsRetrieveResponseScope = "transactions"
)

Known values of AnalyticsRetrieveResponseScope.

type AnalyticsService

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

AnalyticsService holds the analytics operations. Use it through Client.Analytics.

func (*AnalyticsService) Retrieve

Retrieve: Get application analytics.

Read the numbers behind the Business Console [analytics dashboard](https://docs.didit.me/console/analytics) for a date range. Without `scope` and `widget_keys` the response is the user verification (KYC) summary (`ApplicationAnalyticsSummary`): daily session counts, status totals, conversion rate, the same figures for the preceding period of equal length, locations, demographics, devices, workflow funnels, active verification time, resubmissions, warnings and time series. With `scope` or `widget_keys` it is the widgets of one dashboard tab (`ApplicationAnalyticsWidgetResponse`): `kyc`, `kyb`, `transactions` or `home`.

Session counts are by session creation date (UTC) and reflect each session's current status. They come from daily rollups refreshed in the background, so the newest activity can take a short while to appear. Invalid workflow IDs and versions are ignored rather than rejected. Nothing is billed.

Only a full-access API key can call this endpoint: every scoped key gets `403`, whatever access it holds, and so does a key of another application. See [API keys](https://docs.didit.me/console/api-keys).

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/analytics/

type Application

type Application struct {
	// Application UUID. Use as `{app_id}` in subsequent calls.
	UUID string `json:"uuid"`

	// Application display name shown in the Didit console.
	Name string `json:"name"`

	// Public client identifier, safe to embed in OAuth-style flows.
	ClientID string `json:"client_id"`

	// Long-lived secret (also called `client_secret`). Use as the `x-api-key`
	// header for every call to `https://verification.didit.me/v3/...` (sessions,
	// workflows, AML, etc.). Treat as a credential; never expose client-side. New
	// keys start with `sk_live_` (live application) or `sk_test_` (sandbox
	// application), followed by 43 URL-safe characters (letters, digits, `-` and
	// `_`). Keys created before this format have no prefix and keep working
	// unchanged.
	APIKey string `json:"api_key"`

	// Website or app URL associated with this application.
	WebsiteURL string `json:"website_url"`

	// Allowed redirect URIs for OAuth-style and verification redirect flows.
	RedirectURIs []string `json:"redirect_uris"`

	// Terms of service URL shown in the verification flow.
	TermsURL string `json:"terms_url"`

	// Privacy policy URL shown in the verification flow.
	PrivacyURL string `json:"privacy_url"`

	// Internal description for the application (not shown to end users).
	Description string    `json:"description"`
	CreatedAt   time.Time `json:"created_at"`

	// The application's products. Always all three, in this order: `identity`,
	// `transactions`, `authentication`. A new application has `identity` enabled
	// with every module on, and `transactions` and `authentication` disabled.
	// Read-only: a `products` key in a create or update body is ignored.
	Products []ApplicationProduct `json:"products"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

Application: Full application record. `uuid`, `client_id`, and `api_key` never change after creation.

func (*Application) UnmarshalJSON

func (r *Application) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes Application leniently.

type ApplicationAnalyticsCountryCount

type ApplicationAnalyticsCountryCount struct {
	// Country name.
	Country string `json:"country"`

	// Two-letter country code.
	CountryCode string `json:"country_code"`

	// Sessions from that country.
	SessionCount int64 `json:"session_count"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsCountryCount is a response object.

func (*ApplicationAnalyticsCountryCount) UnmarshalJSON

func (r *ApplicationAnalyticsCountryCount) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsCountryCount leniently.

type ApplicationAnalyticsDataPoint

type ApplicationAnalyticsDataPoint struct {
	// The day, `YYYY-MM-DD`.
	RoundedDate string `json:"rounded_date"`

	// Sessions created that day.
	Total int64 `json:"total"`

	// Of those, sessions `Approved` or `Kyc Expired`.
	Approved int64 `json:"approved"`

	// Sessions `Declined`.
	Declined int64 `json:"declined"`

	// Sessions `Expired` or `Abandoned`.
	Canceled int64 `json:"canceled"`

	// Sessions `Not Started`, `In Progress` or `In Review`.
	Pending int64 `json:"pending"`

	// Sessions `In Review`.
	InReview int64 `json:"in_review"`

	// Sessions `Expired`.
	Expired int64 `json:"expired"`

	// Sessions `Abandoned`.
	Abandoned int64 `json:"abandoned"`

	// Sessions `In Progress`.
	InProgress int64 `json:"in_progress"`

	// Sessions `Not Started`.
	NotStarted int64 `json:"not_started"`

	// Sessions a reviewer approved after the workflow gave another verdict.
	ManuallyApproved int64 `json:"manually_approved"`

	// Sessions a reviewer declined after the workflow gave another verdict.
	ManuallyDeclined int64 `json:"manually_declined"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsDataPoint: Session counts for one day, by creation date (UTC). Each count reflects the session's current status. Points of the previous period carry at least the required fields.

func (*ApplicationAnalyticsDataPoint) UnmarshalJSON

func (r *ApplicationAnalyticsDataPoint) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsDataPoint leniently.

type ApplicationAnalyticsDemographicPoint

type ApplicationAnalyticsDemographicPoint struct {
	// Period key: `YYYY-MM-DD` for a day, the Monday of a week, or `YYYY-MM` for a
	// month, following `grouping_mode`.
	Date               string           `json:"date"`
	AgeDistribution    map[string]int64 `json:"age_distribution"`
	GenderDistribution map[string]int64 `json:"gender_distribution"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsDemographicPoint is a response object.

func (*ApplicationAnalyticsDemographicPoint) UnmarshalJSON

func (r *ApplicationAnalyticsDemographicPoint) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsDemographicPoint leniently.

type ApplicationAnalyticsDemographicStats

type ApplicationAnalyticsDemographicStats struct {
	// Sessions per age band from the ID document. Empty when there is no data.
	AgeDistribution ApplicationAnalyticsDemographicStatsAgeDistribution `json:"age_distribution"`

	// Sessions per document gender code: `M`, `F` or `U` (unknown).
	GenderDistribution map[string]int64 `json:"gender_distribution"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsDemographicStats is a response object.

func (*ApplicationAnalyticsDemographicStats) UnmarshalJSON

func (r *ApplicationAnalyticsDemographicStats) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsDemographicStats leniently.

type ApplicationAnalyticsDemographicStatsAgeDistribution

type ApplicationAnalyticsDemographicStatsAgeDistribution struct {
	Under18     int64 `json:"under_18"`
	Field1824   int64 `json:"18_24"`
	Field2534   int64 `json:"25_34"`
	Field3544   int64 `json:"35_44"`
	Field4564   int64 `json:"45_64"`
	Field65Plus int64 `json:"65_plus"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsDemographicStatsAgeDistribution: Sessions per age band from the ID document. Empty when there is no data.

func (*ApplicationAnalyticsDemographicStatsAgeDistribution) UnmarshalJSON

UnmarshalJSON decodes ApplicationAnalyticsDemographicStatsAgeDistribution leniently.

type ApplicationAnalyticsDeviceDetails

type ApplicationAnalyticsDeviceDetails struct {
	// Device brands: `Apple`, `Android`, `LG`, everything else grouped as `Other`.
	DeviceModels []ApplicationAnalyticsDeviceDetailsDeviceModels `json:"device_models"`

	// Browsers: `Chrome`, `Safari`, `Didit App`, `Firefox`, everything else grouped
	// as `Other`.
	Browsers []ApplicationAnalyticsDeviceDetailsBrowsers `json:"browsers"`

	// Operating systems.
	OperatingSystems []ApplicationAnalyticsDeviceDetailsOperatingSystems `json:"operating_systems"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsDeviceDetails: Top five of each, most sessions first.

func (*ApplicationAnalyticsDeviceDetails) UnmarshalJSON

func (r *ApplicationAnalyticsDeviceDetails) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsDeviceDetails leniently.

type ApplicationAnalyticsDeviceDetailsBrowsers

type ApplicationAnalyticsDeviceDetailsBrowsers struct {
	Browser string `json:"browser"`
	Count   int64  `json:"count"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsDeviceDetailsBrowsers is a response object.

func (*ApplicationAnalyticsDeviceDetailsBrowsers) UnmarshalJSON

func (r *ApplicationAnalyticsDeviceDetailsBrowsers) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsDeviceDetailsBrowsers leniently.

type ApplicationAnalyticsDeviceDetailsDeviceModels

type ApplicationAnalyticsDeviceDetailsDeviceModels struct {
	Device string `json:"device"`
	Count  int64  `json:"count"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsDeviceDetailsDeviceModels is a response object.

func (*ApplicationAnalyticsDeviceDetailsDeviceModels) UnmarshalJSON

func (r *ApplicationAnalyticsDeviceDetailsDeviceModels) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsDeviceDetailsDeviceModels leniently.

type ApplicationAnalyticsDeviceDetailsOperatingSystems

type ApplicationAnalyticsDeviceDetailsOperatingSystems struct {
	Os    string `json:"os"`
	Count int64  `json:"count"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsDeviceDetailsOperatingSystems is a response object.

func (*ApplicationAnalyticsDeviceDetailsOperatingSystems) UnmarshalJSON

UnmarshalJSON decodes ApplicationAnalyticsDeviceDetailsOperatingSystems leniently.

type ApplicationAnalyticsDevicePoint

type ApplicationAnalyticsDevicePoint struct {
	// Period key: `YYYY-MM-DD` for a day, the Monday of a week, or `YYYY-MM` for a
	// month, following `grouping_mode`.
	Date             string           `json:"date"`
	Devices          map[string]int64 `json:"devices"`
	Browsers         map[string]int64 `json:"browsers"`
	OperatingSystems map[string]int64 `json:"operating_systems"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsDevicePoint is a response object.

func (*ApplicationAnalyticsDevicePoint) UnmarshalJSON

func (r *ApplicationAnalyticsDevicePoint) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsDevicePoint leniently.

type ApplicationAnalyticsLocationStats

type ApplicationAnalyticsLocationStats struct {
	// Countries of the users' IP addresses, most sessions first.
	IPCountries []ApplicationAnalyticsCountryCount `json:"ip_countries"`

	// Same list as `ip_countries`.
	Countries []ApplicationAnalyticsCountryCount `json:"countries"`

	// Issuing countries of the verified ID documents, most sessions first.
	IDCountries []ApplicationAnalyticsCountryCount `json:"id_countries"`

	// Per document issuing country: finished sessions (approved, declined or in
	// review) and how many were approved. Most finished first.
	ConversionByCountry []ApplicationAnalyticsLocationStatsConversionByCountry `json:"conversion_by_country"`

	// Up to 100 IP cities, most sessions first.
	Cities []ApplicationAnalyticsLocationStatsCities `json:"cities"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsLocationStats is a response object.

func (*ApplicationAnalyticsLocationStats) UnmarshalJSON

func (r *ApplicationAnalyticsLocationStats) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsLocationStats leniently.

type ApplicationAnalyticsLocationStatsCities

type ApplicationAnalyticsLocationStatsCities struct {
	// `City, Country`.
	Location     string  `json:"location"`
	SessionCount int64   `json:"session_count"`
	Latitude     float64 `json:"latitude"`
	Longitude    float64 `json:"longitude"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsLocationStatsCities is a response object.

func (*ApplicationAnalyticsLocationStatsCities) UnmarshalJSON

func (r *ApplicationAnalyticsLocationStatsCities) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsLocationStatsCities leniently.

type ApplicationAnalyticsLocationStatsConversionByCountry

type ApplicationAnalyticsLocationStatsConversionByCountry struct {
	Country     string `json:"country"`
	CountryCode string `json:"country_code"`
	Finished    int64  `json:"finished"`
	Approved    int64  `json:"approved"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsLocationStatsConversionByCountry is a response object.

func (*ApplicationAnalyticsLocationStatsConversionByCountry) UnmarshalJSON

UnmarshalJSON decodes ApplicationAnalyticsLocationStatsConversionByCountry leniently.

type ApplicationAnalyticsOriginalStatusPoint

type ApplicationAnalyticsOriginalStatusPoint struct {
	// Period key: `YYYY-MM-DD` for a day, the Monday of a week, or `YYYY-MM` for a
	// month, following `grouping_mode`.
	Date     string `json:"date"`
	Approved int64  `json:"approved"`
	InReview int64  `json:"in_review"`
	Declined int64  `json:"declined"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsOriginalStatusPoint is a response object.

func (*ApplicationAnalyticsOriginalStatusPoint) UnmarshalJSON

func (r *ApplicationAnalyticsOriginalStatusPoint) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsOriginalStatusPoint leniently.

type ApplicationAnalyticsOriginalStatusStats

type ApplicationAnalyticsOriginalStatusStats struct {
	Approved int64 `json:"approved"`
	InReview int64 `json:"in_review"`
	Declined int64 `json:"declined"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsOriginalStatusStats: The workflow's automatic verdict, before any reviewer changed it.

func (*ApplicationAnalyticsOriginalStatusStats) UnmarshalJSON

func (r *ApplicationAnalyticsOriginalStatusStats) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsOriginalStatusStats leniently.

type ApplicationAnalyticsRequestBreakdown

type ApplicationAnalyticsRequestBreakdown struct {
	// Sessions `Approved` or `Kyc Expired`.
	TotalApproved int64 `json:"total_approved"`

	// Sessions `In Review`.
	TotalInReview int64 `json:"total_in_review"`

	// Sessions `Declined`.
	TotalDeclined int64 `json:"total_declined"`

	// Sessions `Expired` or `Abandoned`.
	TotalCanceled int64 `json:"total_canceled"`

	// Sessions `Not Started`, `In Progress` or `In Review` (includes
	// `total_in_review`).
	TotalPending int64 `json:"total_pending"`

	// Sessions `Expired`.
	TotalExpired int64 `json:"total_expired"`

	// Sessions `Abandoned`.
	TotalAbandoned int64 `json:"total_abandoned"`

	// Sessions `In Progress`.
	TotalInProgress int64 `json:"total_in_progress"`

	// Sessions `Not Started`.
	TotalNotStarted int64 `json:"total_not_started"`

	// Approved by a reviewer.
	TotalManuallyApproved int64 `json:"total_manually_approved"`

	// Declined by a reviewer.
	TotalManuallyDeclined int64 `json:"total_manually_declined"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsRequestBreakdown: Status totals for the range. The previous-period breakdown carries at least the required fields.

func (*ApplicationAnalyticsRequestBreakdown) UnmarshalJSON

func (r *ApplicationAnalyticsRequestBreakdown) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsRequestBreakdown leniently.

type ApplicationAnalyticsResubmissionPoint

type ApplicationAnalyticsResubmissionPoint struct {
	// Period key: `YYYY-MM-DD` for a day, the Monday of a week, or `YYYY-MM` for a
	// month, following `grouping_mode`.
	Date      string `json:"date"`
	FirstPass int64  `json:"first_pass"`
	Second    int64  `json:"second"`
	ThirdPlus int64  `json:"third_plus"`
	Abandoned int64  `json:"abandoned"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsResubmissionPoint is a response object.

func (*ApplicationAnalyticsResubmissionPoint) UnmarshalJSON

func (r *ApplicationAnalyticsResubmissionPoint) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsResubmissionPoint leniently.

type ApplicationAnalyticsResubmissionStats

type ApplicationAnalyticsResubmissionStats struct {
	// Finished sessions with no resubmission.
	FirstPass int64 `json:"first_pass"`

	// Finished sessions resubmitted once.
	Second int64 `json:"second"`

	// Finished sessions resubmitted two or more times.
	ThirdPlus int64 `json:"third_plus"`

	// Abandoned sessions.
	Abandoned int64 `json:"abandoned"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsResubmissionStats is a response object.

func (*ApplicationAnalyticsResubmissionStats) UnmarshalJSON

func (r *ApplicationAnalyticsResubmissionStats) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsResubmissionStats leniently.

type ApplicationAnalyticsVerificationTimePoint

type ApplicationAnalyticsVerificationTimePoint struct {
	// Period key: `YYYY-MM-DD` for a day, the Monday of a week, or `YYYY-MM` for a
	// month, following `grouping_mode`.
	Date string `json:"date"`

	// Average active seconds per session.
	OverallAvg float64 `json:"overall_avg"`

	// Average active seconds per feature.
	PerFeature map[string]float64 `json:"per_feature"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsVerificationTimePoint is a response object.

func (*ApplicationAnalyticsVerificationTimePoint) UnmarshalJSON

func (r *ApplicationAnalyticsVerificationTimePoint) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsVerificationTimePoint leniently.

type ApplicationAnalyticsVerificationTimeStats

type ApplicationAnalyticsVerificationTimeStats struct {
	// Average per session, one decimal.
	OverallAvgSeconds float64 `json:"overall_avg_seconds"`

	// Sessions measured.
	OverallCount int64 `json:"overall_count"`

	// Keyed by feature, for example `OCR` or `LIVENESS`.
	PerFeature map[string]ApplicationAnalyticsVerificationTimeStatsPerFeature `json:"per_feature"`

	// Keyed by feature, then by sub-step, for example `front_id_photo`.
	PerSubStep map[string]map[string]ApplicationAnalyticsVerificationTimeStatsPerSubStep `json:"per_sub_step"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsVerificationTimeStats: Active time users spent verifying, ignoring idle gaps. An empty object when there is no data.

func (*ApplicationAnalyticsVerificationTimeStats) UnmarshalJSON

func (r *ApplicationAnalyticsVerificationTimeStats) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsVerificationTimeStats leniently.

type ApplicationAnalyticsVerificationTimeStatsPerFeature

type ApplicationAnalyticsVerificationTimeStatsPerFeature struct {
	AvgSeconds   float64 `json:"avg_seconds"`
	TotalSeconds float64 `json:"total_seconds"`
	Count        int64   `json:"count"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsVerificationTimeStatsPerFeature is a response object.

func (*ApplicationAnalyticsVerificationTimeStatsPerFeature) UnmarshalJSON

UnmarshalJSON decodes ApplicationAnalyticsVerificationTimeStatsPerFeature leniently.

type ApplicationAnalyticsVerificationTimeStatsPerSubStep

type ApplicationAnalyticsVerificationTimeStatsPerSubStep struct {
	AvgSeconds   float64 `json:"avg_seconds"`
	TotalSeconds float64 `json:"total_seconds"`
	Count        int64   `json:"count"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsVerificationTimeStatsPerSubStep is a response object.

func (*ApplicationAnalyticsVerificationTimeStatsPerSubStep) UnmarshalJSON

UnmarshalJSON decodes ApplicationAnalyticsVerificationTimeStatsPerSubStep leniently.

type ApplicationAnalyticsWarningStats

type ApplicationAnalyticsWarningStats struct {
	Total int64                                            `json:"total"`
	Risks map[string]ApplicationAnalyticsWarningStatsRisks `json:"risks"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsWarningStats is a response object.

func (*ApplicationAnalyticsWarningStats) UnmarshalJSON

func (r *ApplicationAnalyticsWarningStats) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsWarningStats leniently.

type ApplicationAnalyticsWarningStatsRisks

type ApplicationAnalyticsWarningStatsRisks struct {
	Error       int64 `json:"error"`
	Warning     int64 `json:"warning"`
	Information int64 `json:"information"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsWarningStatsRisks is a response object.

func (*ApplicationAnalyticsWarningStatsRisks) UnmarshalJSON

func (r *ApplicationAnalyticsWarningStatsRisks) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsWarningStatsRisks leniently.

type ApplicationAnalyticsWidget

type ApplicationAnalyticsWidget struct {
	// Widget type.
	Kind ApplicationAnalyticsWidgetKind `json:"kind"`

	// Display title, for example `Verification volume`.
	Title string `json:"title"`

	// How the `*_time_series` lists are grouped: `day` for up to 14 days, `week` up
	// to 90, `month` beyond. Measured from the first day with sessions in the
	// range.
	GroupingMode               ApplicationAnalyticsWidgetGroupingMode        `json:"grouping_mode"`
	DataPoints                 []ApplicationAnalyticsDataPoint               `json:"data_points"`
	RequestBreakdown           ApplicationAnalyticsRequestBreakdown          `json:"request_breakdown"`
	PreviousDataPoints         []ApplicationAnalyticsDataPoint               `json:"previous_data_points"`
	PreviousRequestBreakdown   ApplicationAnalyticsRequestBreakdown          `json:"previous_request_breakdown"`
	ConversionRate             float64                                       `json:"conversion_rate"`
	WorkflowFunnelStats        map[string]ApplicationAnalyticsWorkflowFunnel `json:"workflow_funnel_stats"`
	VerificationTimeStats      ApplicationAnalyticsVerificationTimeStats     `json:"verification_time_stats"`
	VerificationTimeTimeSeries []ApplicationAnalyticsVerificationTimePoint   `json:"verification_time_time_series"`
	WarningStats               map[string]ApplicationAnalyticsWarningStats   `json:"warning_stats"`
	ResubmissionStats          ApplicationAnalyticsResubmissionStats         `json:"resubmission_stats"`
	ResubmissionTimeSeries     []ApplicationAnalyticsResubmissionPoint       `json:"resubmission_time_series"`
	OriginalStatusStats        ApplicationAnalyticsOriginalStatusStats       `json:"original_status_stats"`
	OriginalStatusTimeSeries   []ApplicationAnalyticsOriginalStatusPoint     `json:"original_status_time_series"`
	DemographicStats           ApplicationAnalyticsDemographicStats          `json:"demographic_stats"`
	DemographicTimeSeries      []ApplicationAnalyticsDemographicPoint        `json:"demographic_time_series"`
	DeviceDetails              ApplicationAnalyticsDeviceDetails             `json:"device_details"`
	DeviceTimeSeries           []ApplicationAnalyticsDevicePoint             `json:"device_time_series"`

	// Entries of a list widget. `country_distribution` (KYC): `country`,
	// `country_code`, `session_count`. `conversion_by_country`: `country`,
	// `country_code`, `finished`, `approved`. `time_series`: `date`, `value`.
	// `status_time_series`: `date`, `approved`, `declined`, `flagged`. `breakdown`:
	// `transaction_type` or `action_type` with `count` and `volume`, or `tag_id`,
	// `tag_name`, `count`. `leaderboard`: `rule_title`, `trigger_count` or
	// `assignee`, `handled_count`, `average_processing_seconds`, each with
	// `approved_percentage`, `declined_percentage`, `flagged_percentage`.
	// `histogram`: `score`, `count`.
	Items []map[string]any `json:"items"`

	// Transaction time series for the period of the same length right before
	// `start_date`.
	PreviousItems []map[string]any `json:"previous_items"`

	// `metric` widgets: the figure for the range.
	Value float64 `json:"value"`

	// Transaction volume and amount widgets: the application's default transaction
	// currency.
	Currency string `json:"currency"`

	// `histogram` widget: the application's review and decline score thresholds.
	Thresholds ApplicationAnalyticsWidgetThresholds `json:"thresholds"`

	// `kyb_registry_coverage` widget: registry search totals.
	Search ApplicationAnalyticsWidgetSearch `json:"search"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsWidget: One dashboard widget. Every widget has `kind` and `title`; the other fields depend on `kind`. The session widgets reuse the summary objects (`data_points`, `request_breakdown`, `workflow_funnel_stats` and so on); list widgets put their entries in `items`; transaction metrics use `value`.

func (*ApplicationAnalyticsWidget) UnmarshalJSON

func (r *ApplicationAnalyticsWidget) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsWidget leniently.

type ApplicationAnalyticsWidgetGroupingMode

type ApplicationAnalyticsWidgetGroupingMode string

ApplicationAnalyticsWidgetGroupingMode: How the `*_time_series` lists are grouped: `day` for up to 14 days, `week` up to 90, `month` beyond. Measured from the first day with sessions in the range.

ApplicationAnalyticsWidgetGroupingMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ApplicationAnalyticsWidgetGroupingModeDay   ApplicationAnalyticsWidgetGroupingMode = "day"
	ApplicationAnalyticsWidgetGroupingModeWeek  ApplicationAnalyticsWidgetGroupingMode = "week"
	ApplicationAnalyticsWidgetGroupingModeMonth ApplicationAnalyticsWidgetGroupingMode = "month"
)

Known values of ApplicationAnalyticsWidgetGroupingMode.

type ApplicationAnalyticsWidgetKind

type ApplicationAnalyticsWidgetKind string

ApplicationAnalyticsWidgetKind: Widget type.

ApplicationAnalyticsWidgetKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ApplicationAnalyticsWidgetKindSessionsVolume              ApplicationAnalyticsWidgetKind = "sessions_volume"
	ApplicationAnalyticsWidgetKindWorkflowFunnel              ApplicationAnalyticsWidgetKind = "workflow_funnel"
	ApplicationAnalyticsWidgetKindAverageVerificationTime     ApplicationAnalyticsWidgetKind = "average_verification_time"
	ApplicationAnalyticsWidgetKindCountryDistribution         ApplicationAnalyticsWidgetKind = "country_distribution"
	ApplicationAnalyticsWidgetKindWarningInsights             ApplicationAnalyticsWidgetKind = "warning_insights"
	ApplicationAnalyticsWidgetKindConversionRate              ApplicationAnalyticsWidgetKind = "conversion_rate"
	ApplicationAnalyticsWidgetKindConversionByCountry         ApplicationAnalyticsWidgetKind = "conversion_by_country"
	ApplicationAnalyticsWidgetKindResubmissionInsights        ApplicationAnalyticsWidgetKind = "resubmission_insights"
	ApplicationAnalyticsWidgetKindOriginalStatusDistribution  ApplicationAnalyticsWidgetKind = "original_status_distribution"
	ApplicationAnalyticsWidgetKindDatabaseValidationCoverage  ApplicationAnalyticsWidgetKind = "database_validation_coverage"
	ApplicationAnalyticsWidgetKindDatabaseValidationLatency   ApplicationAnalyticsWidgetKind = "database_validation_latency"
	ApplicationAnalyticsWidgetKindDemographics                ApplicationAnalyticsWidgetKind = "demographics"
	ApplicationAnalyticsWidgetKindDeviceDetails               ApplicationAnalyticsWidgetKind = "device_details"
	ApplicationAnalyticsWidgetKindHorizontalBar               ApplicationAnalyticsWidgetKind = "horizontal_bar"
	ApplicationAnalyticsWidgetKindKYBRegistryCoverage         ApplicationAnalyticsWidgetKind = "kyb_registry_coverage"
	ApplicationAnalyticsWidgetKindKYBRegistryDataCompleteness ApplicationAnalyticsWidgetKind = "kyb_registry_data_completeness"
	ApplicationAnalyticsWidgetKindMetric                      ApplicationAnalyticsWidgetKind = "metric"
	ApplicationAnalyticsWidgetKindTimeSeries                  ApplicationAnalyticsWidgetKind = "time_series"
	ApplicationAnalyticsWidgetKindBreakdown                   ApplicationAnalyticsWidgetKind = "breakdown"
	ApplicationAnalyticsWidgetKindStatusTimeSeries            ApplicationAnalyticsWidgetKind = "status_time_series"
	ApplicationAnalyticsWidgetKindLeaderboard                 ApplicationAnalyticsWidgetKind = "leaderboard"
	ApplicationAnalyticsWidgetKindHistogram                   ApplicationAnalyticsWidgetKind = "histogram"
)

Known values of ApplicationAnalyticsWidgetKind.

type ApplicationAnalyticsWidgetSearch

type ApplicationAnalyticsWidgetSearch struct {
	SearchesTotal            int64 `json:"searches_total"`
	SearchesWithNoCandidates int64 `json:"searches_with_no_candidates"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsWidgetSearch: `kyb_registry_coverage` widget: registry search totals.

func (*ApplicationAnalyticsWidgetSearch) UnmarshalJSON

func (r *ApplicationAnalyticsWidgetSearch) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsWidgetSearch leniently.

type ApplicationAnalyticsWidgetThresholds

type ApplicationAnalyticsWidgetThresholds struct {
	Review  int64 `json:"review"`
	Decline int64 `json:"decline"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsWidgetThresholds: `histogram` widget: the application's review and decline score thresholds.

func (*ApplicationAnalyticsWidgetThresholds) UnmarshalJSON

func (r *ApplicationAnalyticsWidgetThresholds) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsWidgetThresholds leniently.

type ApplicationAnalyticsWorkflowFunnel

type ApplicationAnalyticsWorkflowFunnel struct {
	Total int64                                              `json:"total"`
	Steps map[string]ApplicationAnalyticsWorkflowFunnelSteps `json:"steps"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsWorkflowFunnel is a response object.

func (*ApplicationAnalyticsWorkflowFunnel) UnmarshalJSON

func (r *ApplicationAnalyticsWorkflowFunnel) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsWorkflowFunnel leniently.

type ApplicationAnalyticsWorkflowFunnelSteps

type ApplicationAnalyticsWorkflowFunnelSteps struct {
	Reached int64 `json:"reached"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationAnalyticsWorkflowFunnelSteps is a response object.

func (*ApplicationAnalyticsWorkflowFunnelSteps) UnmarshalJSON

func (r *ApplicationAnalyticsWorkflowFunnelSteps) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationAnalyticsWorkflowFunnelSteps leniently.

type ApplicationCreateRequest

type ApplicationCreateRequest struct {
	// Application display name. Defaults to `"<organization name> App"`.
	Name Opt[string] `json:"name"`

	// Website or app URL associated with this application.
	WebsiteURL Opt[string] `json:"website_url"`

	// Allowed redirect URIs for OAuth-style and verification redirect flows.
	RedirectURIs Opt[[]string] `json:"redirect_uris"`

	// Terms of service URL shown in the verification flow.
	TermsURL Opt[string] `json:"terms_url"`

	// Privacy policy URL shown in the verification flow.
	PrivacyURL Opt[string] `json:"privacy_url"`

	// Internal description for the application (not shown to end users).
	Description Opt[string] `json:"description"`
}

ApplicationCreateRequest: All fields are optional. Sending an empty body creates an application with a default name.

func (ApplicationCreateRequest) MarshalJSON

func (r ApplicationCreateRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type ApplicationCredentialsSummary

type ApplicationCredentialsSummary struct {
	UUID     string `json:"uuid"`
	Name     string `json:"name"`
	ClientID string `json:"client_id"`

	// Use this as `x-api-key` on every verification API call. New keys start with
	// `sk_live_` (live application) or `sk_test_` (sandbox application), followed
	// by 43 URL-safe characters (letters, digits, `-` and `_`). Keys created before
	// this format have no prefix and keep working unchanged.
	APIKey string `json:"api_key"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationCredentialsSummary: Minimal application shape returned inline by `POST /programmatic/verify-email/`. Persist the `api_key` immediately.

func (*ApplicationCredentialsSummary) UnmarshalJSON

func (r *ApplicationCredentialsSummary) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationCredentialsSummary leniently.

type ApplicationProduct

type ApplicationProduct struct {
	// `identity` (Identity verification), `transactions` (Transaction monitoring)
	// or `authentication` (Authentication).
	Product ApplicationProductProduct `json:"product"`

	// Whether the product is on for this application. `early_access` applies only
	// to `authentication`, which Didit turns on for you.
	Status ApplicationProductStatus `json:"status"`

	// Module switches of the product, each `true` or `false`. `identity` has
	// `user_verification`, `business_verification` and `case_management`.
	// `transactions` has `travel_rule` and `case_management`. `authentication` has
	// none (`{}`). `case_management` is one setting shown under both `identity` and
	// `transactions`, so it has the same value on both.
	Modules map[string]bool `json:"modules"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ApplicationProduct: One product of an application and its state. Read-only: the application endpoints return it and ignore it in a request body.

func (*ApplicationProduct) UnmarshalJSON

func (r *ApplicationProduct) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ApplicationProduct leniently.

type ApplicationProductProduct

type ApplicationProductProduct string

ApplicationProductProduct: `identity` (Identity verification), `transactions` (Transaction monitoring) or `authentication` (Authentication).

ApplicationProductProduct is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ApplicationProductProductIdentity       ApplicationProductProduct = "identity"
	ApplicationProductProductTransactions   ApplicationProductProduct = "transactions"
	ApplicationProductProductAuthentication ApplicationProductProduct = "authentication"
)

Known values of ApplicationProductProduct.

type ApplicationProductStatus

type ApplicationProductStatus string

ApplicationProductStatus: Whether the product is on for this application. `early_access` applies only to `authentication`, which Didit turns on for you.

ApplicationProductStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ApplicationProductStatusEnabled     ApplicationProductStatus = "enabled"
	ApplicationProductStatusEarlyAccess ApplicationProductStatus = "early_access"
	ApplicationProductStatusDisabled    ApplicationProductStatus = "disabled"
)

Known values of ApplicationProductStatus.

type ApplicationUpdateRequest

type ApplicationUpdateRequest struct {
	// Application display name.
	Name Opt[string] `json:"name"`

	// Website or app URL associated with this application.
	WebsiteURL Opt[string] `json:"website_url"`

	// Allowed redirect URIs for OAuth-style and verification redirect flows.
	RedirectURIs Opt[[]string] `json:"redirect_uris"`

	// Terms of service URL shown in the verification flow.
	TermsURL Opt[string] `json:"terms_url"`

	// Privacy policy URL shown in the verification flow.
	PrivacyURL Opt[string] `json:"privacy_url"`

	// Internal description for the application.
	Description Opt[string] `json:"description"`
}

ApplicationUpdateRequest: PATCH body for application metadata. Send only the fields you want to change; omitted fields are preserved. `uuid`, `client_id`, and `api_key` cannot be updated. `products` is read-only: a `products` key in the body is ignored.

func (ApplicationUpdateRequest) MarshalJSON

func (r ApplicationUpdateRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type AuthenticationError

type AuthenticationError struct{ *APIStatusError }

AuthenticationError is an *APIStatusError with status 401: the API key is missing, wrong, revoked or expired.

func (*AuthenticationError) Unwrap

func (e *AuthenticationError) Unwrap() error

type BadRequestError

type BadRequestError struct{ *APIStatusError }

BadRequestError is an *APIStatusError with status 400.

func (*BadRequestError) Unwrap

func (e *BadRequestError) Unwrap() error

type BankAccountCheckHolder

type BankAccountCheckHolder struct {
	// The full name of the person who should hold the account.
	FullName Opt[string] `json:"full_name"`

	// The name of the company that should hold the account. Checks a business
	// account.
	BusinessName Opt[string] `json:"business_name"`
}

BankAccountCheckHolder: The name the account is checked against. Send exactly one of `full_name` and `business_name`.

func (BankAccountCheckHolder) MarshalJSON

func (r BankAccountCheckHolder) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type BankAccountCheckPricing

type BankAccountCheckPricing struct {
	// `true` only where Didit serves the account check in this country in
	// production.
	Available bool `json:"available"`

	// List price of one account check the bank answers. `null` when not available.
	// Decimal string with 4 decimals, in USD.
	PriceUsd string `json:"price_usd"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BankAccountCheckPricing: Account check: the person types their account number and Didit checks it with the bank. Priced per country.

func (*BankAccountCheckPricing) UnmarshalJSON

func (r *BankAccountCheckPricing) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BankAccountCheckPricing leniently.

type BankAccountCheckRequest

type BankAccountCheckRequest struct {
	// The account's country, as an ISO 3166-1 alpha-3 code, for example `GBR`.
	// Lowercase is accepted. Required.
	Country string `json:"country"`

	// The account the way its country writes it: an `iban`, or an `account_number`
	// with the bank or branch code the country needs (`sort_code`,
	// `routing_number`, `transit_institution`, `bsb`, `ifsc`, `bank_code` or
	// `bic`). Mexico takes a `clabe` and Argentina a `cbu_cvu`, which already name
	// the bank. A business account adds a `registration_id` where the country asks
	// for one. Spaces, dashes and dots are ignored. Keys the country's check does
	// not use are ignored; a key it needs and does not get is a `400` that names
	// it. Required.
	Account BankAccountCheckRequestAccount `json:"account"`

	// Required.
	Holder BankAccountCheckHolder `json:"holder"`

	// Your own reference for this check, returned unchanged.
	VendorData Opt[string] `json:"vendor_data"`
}

BankAccountCheckRequest is a request object.

func (BankAccountCheckRequest) MarshalJSON

func (r BankAccountCheckRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type BankAccountCheckRequestAccount

type BankAccountCheckRequestAccount struct {
	// The IBAN, in a country that uses IBANs. It must belong to `country`.
	IBAN Opt[string] `json:"iban"`

	// The account number, in a country that writes the account with a separate bank
	// or branch code.
	AccountNumber Opt[string] `json:"account_number"`

	// United Kingdom: the 6-digit sort code.
	SortCode Opt[string] `json:"sort_code"`

	// United States: the 9-digit ABA routing number.
	RoutingNumber Opt[string] `json:"routing_number"`

	// Canada: the 8-digit transit and institution number.
	TransitInstitution Opt[string] `json:"transit_institution"`

	// Australia: the 6-digit BSB.
	Bsb Opt[string] `json:"bsb"`

	// India: the 11-character IFSC.
	Ifsc Opt[string] `json:"ifsc"`

	// The bank's code, where the country needs one, for example in Nigeria.
	BankCode Opt[string] `json:"bank_code"`

	// The bank's BIC, where the country's check asks for one.
	BIC Opt[string] `json:"bic"`

	// Mexico: the 18-digit CLABE. It already names the bank.
	Clabe Opt[string] `json:"clabe"`

	// Argentina: the 22-digit CBU or CVU. It already names the bank.
	CbuCvu Opt[string] `json:"cbu_cvu"`

	// A business account's registration number, where the country asks for one.
	RegistrationID Opt[string] `json:"registration_id"`
}

BankAccountCheckRequestAccount: The account the way its country writes it: an `iban`, or an `account_number` with the bank or branch code the country needs (`sort_code`, `routing_number`, `transit_institution`, `bsb`, `ifsc`, `bank_code` or `bic`). Mexico takes a `clabe` and Argentina a `cbu_cvu`, which already name the bank. A business account adds a `registration_id` where the country asks for one. Spaces, dashes and dots are ignored. Keys the country's check does not use are ignored; a key it needs and does not get is a `400` that names it.

func (BankAccountCheckRequestAccount) MarshalJSON

func (r BankAccountCheckRequestAccount) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type BankAccountCheckResponse

type BankAccountCheckResponse struct {
	// The ID of this check.
	RequestID string `json:"request_id"`

	// `match`: the bank holds the account under the name you sent. `close_match`:
	// under a close name, for example a missing middle name or a typo. `no_match`:
	// under another name, or there is no such account. `cannot_verify`: the bank
	// answered without comparing the name, for example for a blocked or closed
	// account.
	Result BankAccountCheckResponseResult `json:"result"`

	// Only on a `close_match`, and only when the bank returned it: the name on the
	// account, as the bank holds it. `null` otherwise.
	HolderName string `json:"holder_name"`

	// The account, masked to its last 4 characters.
	Account string `json:"account"`

	// Your own reference, as you sent it.
	VendorData string `json:"vendor_data"`

	// When the check ran, in UTC.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BankAccountCheckResponse is a response object.

func (*BankAccountCheckResponse) UnmarshalJSON

func (r *BankAccountCheckResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BankAccountCheckResponse leniently.

type BankAccountCheckResponseResult

type BankAccountCheckResponseResult string

BankAccountCheckResponseResult: `match`: the bank holds the account under the name you sent. `close_match`: under a close name, for example a missing middle name or a typo. `no_match`: under another name, or there is no such account. `cannot_verify`: the bank answered without comparing the name, for example for a blocked or closed account.

BankAccountCheckResponseResult is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankAccountCheckResponseResultMatch        BankAccountCheckResponseResult = "match"
	BankAccountCheckResponseResultCloseMatch   BankAccountCheckResponseResult = "close_match"
	BankAccountCheckResponseResultNoMatch      BankAccountCheckResponseResult = "no_match"
	BankAccountCheckResponseResultCannotVerify BankAccountCheckResponseResult = "cannot_verify"
)

Known values of BankAccountCheckResponseResult.

type BankService

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

BankService holds the bank operations. Use it through Client.Bank.

func (*BankService) AccountCheck

AccountCheck: Check a bank account.

Check that a bank account belongs to the person or company you name, before you send money to it. No session and no sign-in: send the name and the account, read the result. It is the [account check](/core-technology/bank-verification/account-check) of the Bank Verification step, run from your backend.

**What you send.** The account's `country` (ISO 3166-1 alpha-3), the `account` the way that country writes it, and the `holder` name: `full_name` for a person or `business_name` for a company. A business name checks a business account.

**What you get back.** `result` is `match`, `close_match`, `no_match` or `cannot_verify`. On a `close_match`, `holder_name` is the name the bank holds the account under, when the bank returned it. `account` comes back masked to its last 4 characters.

**Billing.** Each check the bank answers is billed once at the Account check price of the account's country, whatever the result: a `no_match`, an account that does not exist and a `cannot_verify` are billed too. A request answered with an error is never billed.

**Every request is a new check.** There is no idempotency key and no endpoint to read a check back, so a retried request runs, and is billed, again. Store the response.

**Sandbox.** A sandbox key calls no bank and is charged nothing. The last 4 characters of the IBAN, else of the account number, choose the answer: `0001` a `close_match` with a `holder_name`, `0002` a `close_match` without one, `0003` and `0006` a `no_match`, `0004` `cannot_verify`, `0005` a `503` and `0009` a `400`. Any other ending is a `match`.

**API keys.** A scoped API key needs write access to sessions.

POST /v3/bank/account-check/

type BankSignInPricing

type BankSignInPricing struct {
	// `true` only where Didit serves bank sign-in in this country in production.
	Available bool `json:"available"`

	// The market whose price applies. `null` when not available.
	Market string `json:"market"`

	// List price of one bank sign-in. `null` when not available. Decimal string
	// with 4 decimals, in USD.
	PriceUsd string `json:"price_usd"`

	// Add-ons priced in this country, each a decimal string with 4 decimals in USD,
	// added to the bank sign-in price. Only the add-ons the country offers are
	// listed; empty when bank sign-in is not available.
	AddOns BankSignInPricingAddOns `json:"add_ons"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BankSignInPricing: Bank sign-in: the person signs in to their bank. Priced by market, the same for every bank in it.

func (*BankSignInPricing) UnmarshalJSON

func (r *BankSignInPricing) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BankSignInPricing leniently.

type BankSignInPricingAddOns

type BankSignInPricingAddOns struct {
	// Account balance add-on.
	Balance string `json:"balance"`

	// Transactions add-on.
	Transactions string `json:"transactions"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BankSignInPricingAddOns: Add-ons priced in this country, each a decimal string with 4 decimals in USD, added to the bank sign-in price. Only the add-ons the country offers are listed; empty when bank sign-in is not available.

func (*BankSignInPricingAddOns) UnmarshalJSON

func (r *BankSignInPricingAddOns) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BankSignInPricingAddOns leniently.

type BankStatementUploadPricing

type BankStatementUploadPricing struct {
	// Price of a statement upload after a charged bank attempt. Decimal string with
	// 4 decimals, in USD.
	PriceUsd string `json:"price_usd"`

	// `true` when the upload is included at no extra charge after a charged bank
	// attempt in the same session.
	IncludedAfterChargedBankAttempt bool `json:"included_after_charged_bank_attempt"`

	// `true` when a statement upload can run on its own, with no bank attempt
	// first. `false` in production; sandbox sessions can test it without billing.
	StandaloneAvailable bool `json:"standalone_available"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BankStatementUploadPricing: How the bank statement upload is priced.

func (*BankStatementUploadPricing) UnmarshalJSON

func (r *BankStatementUploadPricing) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BankStatementUploadPricing leniently.

type BankVerificationPricing

type BankVerificationPricing struct {
	// Currency of every price in the response.
	Currency        BankVerificationPricingCurrency `json:"currency"`
	StatementUpload BankStatementUploadPricing      `json:"statement_upload"`

	// Fee for each billable ownership check on a route that uses your own provider
	// contract instead of Didit's, charged whatever the result. A cancelled, timed
	// out or abandoned connection is not billed. Decimal string with 4 decimals, in
	// USD.
	OwnProviderFeeUsd string `json:"own_provider_fee_usd"`

	// Every country, keyed by ISO 3166-1 alpha-3 code.
	Countries map[string]BankVerificationPricingCountry `json:"countries"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BankVerificationPricing: Public Bank Verification list prices: the statement upload, the own provider key fee and each country's methods.

func (*BankVerificationPricing) UnmarshalJSON

func (r *BankVerificationPricing) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BankVerificationPricing leniently.

type BankVerificationPricingCountry

type BankVerificationPricingCountry struct {
	// Country name in English.
	Name    string                         `json:"name"`
	Methods BankVerificationPricingMethods `json:"methods"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BankVerificationPricingCountry: One country's Bank Verification methods and their list prices.

func (*BankVerificationPricingCountry) UnmarshalJSON

func (r *BankVerificationPricingCountry) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BankVerificationPricingCountry leniently.

type BankVerificationPricingCurrency

type BankVerificationPricingCurrency string

BankVerificationPricingCurrency: Currency of every price in the response.

BankVerificationPricingCurrency is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankVerificationPricingCurrencyUsd BankVerificationPricingCurrency = "USD"
)

Known values of BankVerificationPricingCurrency.

type BankVerificationPricingMethods

type BankVerificationPricingMethods struct {
	OpenBanking   BankSignInPricing       `json:"open_banking"`
	AccountLookup BankAccountCheckPricing `json:"account_lookup"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BankVerificationPricingMethods: The two Bank Verification methods in a country.

func (*BankVerificationPricingMethods) UnmarshalJSON

func (r *BankVerificationPricingMethods) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BankVerificationPricingMethods leniently.

type BankVerificationResult

type BankVerificationResult struct {
	// Version of this result shape. `1` today.
	SchemaVersion int64 `json:"schema_version"`

	// The ID of this result.
	BankVerificationID string `json:"bank_verification_id"`

	// The workflow node this result belongs to.
	NodeID string `json:"node_id"`

	// The step's verdict, after its actions and status rules.
	Status BankVerificationResultStatus `json:"status"`

	// The first verdict the step reached, before any later change such as a manual
	// review.
	OriginalStatus string `json:"original_status"`

	// How the account was verified: `open_banking` (bank sign-in: the person signed
	// in at their bank), `account_lookup` (account check: the person typed the
	// account details and the bank confirmed the name), `microdeposits` or
	// `statement` (a statement upload). `none` when the person continued without a
	// bank before any attempt was evaluated, so no account was verified. After an
	// evaluated attempt, it stays the method of that attempt. `null` until an
	// account is evaluated, and when the workflow narrows the data it returns.
	// Workflow rules read the same value as `bank.method`.
	Method BankVerificationResultMethod `json:"method"`

	// The key of the route that ran the connection. Read `method`, not this key, to
	// tell how the account was verified.
	Provider string `json:"provider"`

	// `native`: Didit's own route, billed to your Didit balance. `byok`: a
	// marketplace provider you connected with your own credentials.
	CredentialSource BankVerificationResultCredentialSource `json:"credential_source"`

	// The route chosen before consent. It never changes afterwards.
	Route BankVerificationResultRoute `json:"route"`

	// The latest attempt's connection. `null` before the first attempt.
	Connection BankVerificationResultConnection `json:"connection"`

	// The evaluated account. `null` until an account is evaluated.
	Account BankVerificationResultAccount `json:"account"`

	// How the account holder compared with the verified identity. `null` until an
	// account is evaluated.
	Ownership BankVerificationResultOwnership `json:"ownership"`

	// The financial data the step read. Only bank sign-in reads it.
	FinancialData BankVerificationResultFinancialData `json:"financial_data"`
	Billing       BankVerificationResultBilling       `json:"billing"`

	// The identity the holder was compared against, with its source.
	ReferenceIdentity map[string]any `json:"reference_identity"`

	// Account signals read from the transaction history, when the step read one.
	Signals map[string]any `json:"signals"`

	// Whether the step ended without a match after the person left at their bank.
	ConnectionAbandoned bool `json:"connection_abandoned"`

	// Whether the person's bank or country could not be reached on this step. Also
	// `true` when the person continued without a bank because no method could
	// verify their country or bank.
	NotCovered bool `json:"not_covered"`

	// Whether the person left the step with **Continue without your bank**.
	// `continuation` then says why. `method` is `none` when no attempt was
	// evaluated before they continued. After an evaluated attempt, such as a holder
	// that does not match, `method` stays the method of that attempt and its
	// verdict and reason codes stand. Returned even when the workflow narrows the
	// data it returns.
	ContinuedWithoutBank bool `json:"continued_without_bank"`

	// How the person continued without a bank. `null` when they did not. When the
	// workflow narrows the data it returns, `reason` is still returned and every
	// other key is `null`.
	Continuation BankVerificationResultContinuation `json:"continuation"`

	// When the bank evidence was deleted under `bank_evidence_retention_days`.
	// `null` otherwise.
	EvidencePurgedAt time.Time `json:"evidence_purged_at"`

	// Informational codes, for example `holder_declared`. A warning never changes
	// the status on its own.
	Warnings []string `json:"warnings"`

	// Why the verdict came out the way it did, for example `OWNER_NAME_PARTIAL`.
	// Several may apply. `NOT_COVERED`: the person continued without a bank because
	// no method could verify their country or bank. `SKIPPED`: the person chose to
	// continue without a bank while a way to verify was there. Neither is added
	// when an evaluated attempt already decided the step.
	ReasonCodes []string  `json:"reason_codes"`
	CreatedAt   time.Time `json:"created_at"`
	UpdatedAt   time.Time `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BankVerificationResult: One Bank Verification step's result, for User and Business Verification. `method` says how the account was verified, and `none` that the person continued without a bank before any attempt was evaluated. `continued_without_bank` says the person continued without a bank, also after an evaluated attempt. See [Bank verification methods](/core-technology/bank-verification/verification-methods) and [When the person cannot verify their bank](/core-technology/bank-verification/fallbacks).

func (*BankVerificationResult) UnmarshalJSON

func (r *BankVerificationResult) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BankVerificationResult leniently.

type BankVerificationResultAccount

type BankVerificationResultAccount struct {
	// The account number, masked.
	AccountIDMasked string `json:"account_id_masked"`

	// The IBAN, masked.
	IBANMasked string `json:"iban_masked"`

	// The sort code, in the United Kingdom.
	SortCode string `json:"sort_code"`

	// The routing number, masked.
	RoutingNumberMasked string                            `json:"routing_number_masked"`
	Type                BankVerificationResultAccountType `json:"type"`

	// The bank's own account subtype.
	Subtype string `json:"subtype"`

	// ISO 4217 currency of the account.
	Currency     string                                  `json:"currency"`
	HolderType   BankVerificationResultAccountHolderType `json:"holder_type"`
	HoldersCount int64                                   `json:"holders_count"`
	IsJoint      bool                                    `json:"is_joint"`
	IsBusiness   bool                                    `json:"is_business"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BankVerificationResultAccount: The evaluated account. `null` until an account is evaluated.

func (*BankVerificationResultAccount) UnmarshalJSON

func (r *BankVerificationResultAccount) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BankVerificationResultAccount leniently.

type BankVerificationResultAccountHolderType

type BankVerificationResultAccountHolderType string

BankVerificationResultAccountHolderType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankVerificationResultAccountHolderTypePerson   BankVerificationResultAccountHolderType = "person"
	BankVerificationResultAccountHolderTypeBusiness BankVerificationResultAccountHolderType = "business"
	BankVerificationResultAccountHolderTypeUnknown  BankVerificationResultAccountHolderType = "unknown"
)

Known values of BankVerificationResultAccountHolderType.

type BankVerificationResultAccountType

type BankVerificationResultAccountType string

BankVerificationResultAccountType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankVerificationResultAccountTypeChecking BankVerificationResultAccountType = "checking"
	BankVerificationResultAccountTypeCurrent  BankVerificationResultAccountType = "current"
	BankVerificationResultAccountTypeSavings  BankVerificationResultAccountType = "savings"
	BankVerificationResultAccountTypeBusiness BankVerificationResultAccountType = "business"
	BankVerificationResultAccountTypeOther    BankVerificationResultAccountType = "other"
)

Known values of BankVerificationResultAccountType.

type BankVerificationResultBilling

type BankVerificationResultBilling struct {
	Route  BankVerificationResultBillingRoute `json:"route"`
	Billed bool                               `json:"billed"`

	// The marketplace platform fee charged, for `byok`.
	MarketplaceFee string `json:"marketplace_fee"`

	// The usage line the charge was booked on: `bank_verification` for a bank
	// sign-in or an account check, `bank_statement_upload` for a statement upload
	// with no charged bank attempt before it, and `bank_byok_fee` for the
	// marketplace fee on your own provider. `null` when nothing was billed.
	UsageType string `json:"usage_type"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BankVerificationResultBilling is a response object.

func (*BankVerificationResultBilling) UnmarshalJSON

func (r *BankVerificationResultBilling) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BankVerificationResultBilling leniently.

type BankVerificationResultBillingRoute

type BankVerificationResultBillingRoute string

BankVerificationResultBillingRoute is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankVerificationResultBillingRouteNative BankVerificationResultBillingRoute = "native"
	BankVerificationResultBillingRouteByok   BankVerificationResultBillingRoute = "byok"
)

Known values of BankVerificationResultBillingRoute.

type BankVerificationResultConnection

type BankVerificationResultConnection struct {
	Status BankVerificationResultConnectionStatus `json:"status"`

	// The bank's ID. `null` for an account check, where no bank is picked.
	InstitutionID string `json:"institution_id"`

	// The bank's name. `null` for an account check.
	InstitutionName string `json:"institution_name"`

	// The account's country, ISO 3166-1 alpha-3.
	InstitutionCountry string `json:"institution_country"`

	// Whether the bank sign-in ran over OAuth or app-to-app. `null` for an account
	// check.
	Oauth bool `json:"oauth"`

	// When the connection succeeded.
	ConnectedAt time.Time `json:"connected_at"`

	// When the bank consent ends, for bank sign-in.
	ConsentExpiresAt time.Time `json:"consent_expires_at"`

	// When the financial data was last read again.
	LastRefreshedAt time.Time `json:"last_refreshed_at"`

	// The attempts the person spent on this step, every method together.
	Attempts int64 `json:"attempts"`

	// Why the connection is not simply `connected`, for example `USER_CANCELLED`,
	// `INSTITUTION_DOWN`, `ACCOUNT_NOT_FOUND`, `REFERENCE_IDENTITY_MISSING` or
	// `VERIFICATION_COMPLETED`.
	ReasonCode string `json:"reason_code"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BankVerificationResultConnection: The latest attempt's connection. `null` before the first attempt.

func (*BankVerificationResultConnection) UnmarshalJSON

func (r *BankVerificationResultConnection) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BankVerificationResultConnection leniently.

type BankVerificationResultConnectionStatus

type BankVerificationResultConnectionStatus string

BankVerificationResultConnectionStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankVerificationResultConnectionStatusPending     BankVerificationResultConnectionStatus = "pending"
	BankVerificationResultConnectionStatusConnected   BankVerificationResultConnectionStatus = "connected"
	BankVerificationResultConnectionStatusCancelled   BankVerificationResultConnectionStatus = "cancelled"
	BankVerificationResultConnectionStatusTimeout     BankVerificationResultConnectionStatus = "timeout"
	BankVerificationResultConnectionStatusFailed      BankVerificationResultConnectionStatus = "failed"
	BankVerificationResultConnectionStatusUnsupported BankVerificationResultConnectionStatus = "unsupported"
	BankVerificationResultConnectionStatusRevoked     BankVerificationResultConnectionStatus = "revoked"
	BankVerificationResultConnectionStatusExpired     BankVerificationResultConnectionStatus = "expired"
)

Known values of BankVerificationResultConnectionStatus.

type BankVerificationResultContinuation

type BankVerificationResultContinuation struct {
	// Why, as Didit worked it out when the person continued: `no_route` (no bank
	// sign-in or account check serves their country), `institution_unsupported`
	// (the bank they picked cannot be used on this step), `attempts_exhausted`
	// (every attempt was already spent and none was in progress), or
	// `person_choice` (a way to verify was there and they chose to continue, also
	// when their bank could not be reached right now). `no_route` and
	// `institution_unsupported` follow `bank_unsupported_action`,
	// `attempts_exhausted` follows `bank_attempts_exhausted_action`, and
	// `person_choice` follows `bank_skipped_action`, unless an evaluated attempt
	// already decided the step.
	Reason BankVerificationResultContinuationReason `json:"reason"`

	// The country the person was verifying in, ISO 3166-1 alpha-3. `null` when they
	// continued before picking one.
	Country string `json:"country"`

	// The other ways to verify that country offered the person when they continued,
	// in the order it offered them: `statement` (a statement upload), then
	// `microdeposits`. Empty when it offered none.
	Offered []BankVerificationResultContinuationOffered `json:"offered"`

	// For `institution_unsupported`, the ID of the bank the person could not use:
	// the bank they picked, or the bank their last attempt ended on. Didit takes it
	// from its own list of banks, never from the person's device, so a bank that
	// list does not have is `null`. `null` for every other reason.
	InstitutionID string `json:"institution_id"`

	// For `institution_unsupported`, the name of that bank, from the same list as
	// `institution_id`. `null` when that list does not have the bank, and for every
	// other reason.
	InstitutionName string `json:"institution_name"`

	// When the person continued.
	ContinuedAt time.Time `json:"continued_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BankVerificationResultContinuation: How the person continued without a bank. `null` when they did not. When the workflow narrows the data it returns, `reason` is still returned and every other key is `null`.

func (*BankVerificationResultContinuation) UnmarshalJSON

func (r *BankVerificationResultContinuation) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BankVerificationResultContinuation leniently.

type BankVerificationResultContinuationOffered

type BankVerificationResultContinuationOffered string

BankVerificationResultContinuationOffered is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankVerificationResultContinuationOfferedStatement     BankVerificationResultContinuationOffered = "statement"
	BankVerificationResultContinuationOfferedMicrodeposits BankVerificationResultContinuationOffered = "microdeposits"
)

Known values of BankVerificationResultContinuationOffered.

type BankVerificationResultContinuationReason

type BankVerificationResultContinuationReason string

BankVerificationResultContinuationReason: Why, as Didit worked it out when the person continued: `no_route` (no bank sign-in or account check serves their country), `institution_unsupported` (the bank they picked cannot be used on this step), `attempts_exhausted` (every attempt was already spent and none was in progress), or `person_choice` (a way to verify was there and they chose to continue, also when their bank could not be reached right now). `no_route` and `institution_unsupported` follow `bank_unsupported_action`, `attempts_exhausted` follows `bank_attempts_exhausted_action`, and `person_choice` follows `bank_skipped_action`, unless an evaluated attempt already decided the step.

BankVerificationResultContinuationReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankVerificationResultContinuationReasonNoRoute                BankVerificationResultContinuationReason = "no_route"
	BankVerificationResultContinuationReasonInstitutionUnsupported BankVerificationResultContinuationReason = "institution_unsupported"
	BankVerificationResultContinuationReasonAttemptsExhausted      BankVerificationResultContinuationReason = "attempts_exhausted"
	BankVerificationResultContinuationReasonPersonChoice           BankVerificationResultContinuationReason = "person_choice"
)

Known values of BankVerificationResultContinuationReason.

type BankVerificationResultCredentialSource

type BankVerificationResultCredentialSource string

BankVerificationResultCredentialSource: `native`: Didit's own route, billed to your Didit balance. `byok`: a marketplace provider you connected with your own credentials.

BankVerificationResultCredentialSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankVerificationResultCredentialSourceNative BankVerificationResultCredentialSource = "native"
	BankVerificationResultCredentialSourceByok   BankVerificationResultCredentialSource = "byok"
)

Known values of BankVerificationResultCredentialSource.

type BankVerificationResultFinancialData

type BankVerificationResultFinancialData struct {
	// With the `balances` scope.
	Balances map[string]any `json:"balances"`

	// With the `transactions` scope.
	Transactions map[string]any `json:"transactions"`

	// With the `income` scope.
	Income map[string]any `json:"income"`

	// Didit's categorization of the transactions read. `null` without them.
	Categorization map[string]any `json:"categorization"`

	// The data the step asked for that the method which verified the account does
	// not collect. Balances, transactions and income come from bank sign-in only,
	// so an account verified by account check lists them here. Never a failure.
	// Empty otherwise.
	NotCollected []BankVerificationResultFinancialDataNotCollected `json:"not_collected"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BankVerificationResultFinancialData: The financial data the step read. Only bank sign-in reads it.

func (*BankVerificationResultFinancialData) UnmarshalJSON

func (r *BankVerificationResultFinancialData) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BankVerificationResultFinancialData leniently.

type BankVerificationResultFinancialDataNotCollected

type BankVerificationResultFinancialDataNotCollected string

BankVerificationResultFinancialDataNotCollected is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankVerificationResultFinancialDataNotCollectedBalances     BankVerificationResultFinancialDataNotCollected = "balances"
	BankVerificationResultFinancialDataNotCollectedIncome       BankVerificationResultFinancialDataNotCollected = "income"
	BankVerificationResultFinancialDataNotCollectedTransactions BankVerificationResultFinancialDataNotCollected = "transactions"
)

Known values of BankVerificationResultFinancialDataNotCollected.

type BankVerificationResultMethod

type BankVerificationResultMethod string

BankVerificationResultMethod: How the account was verified: `open_banking` (bank sign-in: the person signed in at their bank), `account_lookup` (account check: the person typed the account details and the bank confirmed the name), `microdeposits` or `statement` (a statement upload). `none` when the person continued without a bank before any attempt was evaluated, so no account was verified. After an evaluated attempt, it stays the method of that attempt. `null` until an account is evaluated, and when the workflow narrows the data it returns. Workflow rules read the same value as `bank.method`.

BankVerificationResultMethod is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankVerificationResultMethodOpenBanking   BankVerificationResultMethod = "open_banking"
	BankVerificationResultMethodAccountLookup BankVerificationResultMethod = "account_lookup"
	BankVerificationResultMethodMicrodeposits BankVerificationResultMethod = "microdeposits"
	BankVerificationResultMethodStatement     BankVerificationResultMethod = "statement"
	BankVerificationResultMethodNone          BankVerificationResultMethod = "none"
)

Known values of BankVerificationResultMethod.

type BankVerificationResultOwnership

type BankVerificationResultOwnership struct {
	// `partial_match` is a close match. `not_verifiable`: the bank answered with no
	// holder to compare. `unknown`: the evidence could not be read, or there was no
	// identity to compare.
	Result BankVerificationResultOwnershipResult `json:"result"`

	// The step whose identity the holder was compared against: `kyc`,
	// `database_validation`, `expected_details`, `questionnaire`, `document_ai` or
	// `kyb`.
	ReferenceIdentitySource string `json:"reference_identity_source"`

	// Didit's holder name score.
	NameScore int64 `json:"name_score"`

	// The bank's own holder name score, when it returned one.
	ProviderNameScore int64 `json:"provider_name_score"`

	// The holder address score, when address matching ran.
	AddressScore int64 `json:"address_score"`

	// The holder email score, when email matching ran.
	EmailScore int64 `json:"email_score"`

	// The holder phone score, when phone matching ran.
	PhoneScore int64 `json:"phone_score"`

	// The holder date of birth score, when the bank shared one.
	DOBScore int64 `json:"dob_score"`

	// Whether the name landed in the close-match band.
	CloseMatch bool `json:"close_match"`

	// The person's answer when asked to confirm a close-match name. `null` when
	// never asked.
	HolderConfirmation BankVerificationResultOwnershipHolderConfirmation `json:"holder_confirmation"`

	// Which name comparison produced the score. This is not the verification
	// method: read the top-level `method` for that.
	Method             BankVerificationResultOwnershipMethod `json:"method"`
	MatchedHolderIndex int64                                 `json:"matched_holder_index"`

	// Each holder the bank listed, with its scores.
	Holders                []map[string]any                                 `json:"holders"`
	OwnerIdentityAvailable bool                                             `json:"owner_identity_available"`
	EvidenceFreshness      BankVerificationResultOwnershipEvidenceFreshness `json:"evidence_freshness"`

	// When the verdict was computed.
	EvaluatedAt time.Time `json:"evaluated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BankVerificationResultOwnership: How the account holder compared with the verified identity. `null` until an account is evaluated.

func (*BankVerificationResultOwnership) UnmarshalJSON

func (r *BankVerificationResultOwnership) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BankVerificationResultOwnership leniently.

type BankVerificationResultOwnershipEvidenceFreshness

type BankVerificationResultOwnershipEvidenceFreshness string

BankVerificationResultOwnershipEvidenceFreshness is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankVerificationResultOwnershipEvidenceFreshnessLive      BankVerificationResultOwnershipEvidenceFreshness = "live"
	BankVerificationResultOwnershipEvidenceFreshnessCached    BankVerificationResultOwnershipEvidenceFreshness = "cached"
	BankVerificationResultOwnershipEvidenceFreshnessRefreshed BankVerificationResultOwnershipEvidenceFreshness = "refreshed"
)

Known values of BankVerificationResultOwnershipEvidenceFreshness.

type BankVerificationResultOwnershipHolderConfirmation

type BankVerificationResultOwnershipHolderConfirmation string

BankVerificationResultOwnershipHolderConfirmation: The person's answer when asked to confirm a close-match name. `null` when never asked.

BankVerificationResultOwnershipHolderConfirmation is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankVerificationResultOwnershipHolderConfirmationPending   BankVerificationResultOwnershipHolderConfirmation = "pending"
	BankVerificationResultOwnershipHolderConfirmationConfirmed BankVerificationResultOwnershipHolderConfirmation = "confirmed"
	BankVerificationResultOwnershipHolderConfirmationRejected  BankVerificationResultOwnershipHolderConfirmation = "rejected"
)

Known values of BankVerificationResultOwnershipHolderConfirmation.

type BankVerificationResultOwnershipMethod

type BankVerificationResultOwnershipMethod string

BankVerificationResultOwnershipMethod: Which name comparison produced the score. This is not the verification method: read the top-level `method` for that.

BankVerificationResultOwnershipMethod is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankVerificationResultOwnershipMethodExact           BankVerificationResultOwnershipMethod = "exact"
	BankVerificationResultOwnershipMethodTokenSet        BankVerificationResultOwnershipMethod = "token_set"
	BankVerificationResultOwnershipMethodNickname        BankVerificationResultOwnershipMethod = "nickname"
	BankVerificationResultOwnershipMethodTransliteration BankVerificationResultOwnershipMethod = "transliteration"
	BankVerificationResultOwnershipMethodFuzzy           BankVerificationResultOwnershipMethod = "fuzzy"
	BankVerificationResultOwnershipMethodProviderOnly    BankVerificationResultOwnershipMethod = "provider_only"
	BankVerificationResultOwnershipMethodMicrodeposits   BankVerificationResultOwnershipMethod = "microdeposits"
)

Known values of BankVerificationResultOwnershipMethod.

type BankVerificationResultOwnershipResult

type BankVerificationResultOwnershipResult string

BankVerificationResultOwnershipResult: `partial_match` is a close match. `not_verifiable`: the bank answered with no holder to compare. `unknown`: the evidence could not be read, or there was no identity to compare.

BankVerificationResultOwnershipResult is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankVerificationResultOwnershipResultMatch         BankVerificationResultOwnershipResult = "match"
	BankVerificationResultOwnershipResultPartialMatch  BankVerificationResultOwnershipResult = "partial_match"
	BankVerificationResultOwnershipResultNoMatch       BankVerificationResultOwnershipResult = "no_match"
	BankVerificationResultOwnershipResultUnknown       BankVerificationResultOwnershipResult = "unknown"
	BankVerificationResultOwnershipResultNotVerifiable BankVerificationResultOwnershipResult = "not_verifiable"
)

Known values of BankVerificationResultOwnershipResult.

type BankVerificationResultRoute

type BankVerificationResultRoute struct {
	// The route's key.
	ProviderKey      string                                      `json:"provider_key"`
	CredentialSource BankVerificationResultRouteCredentialSource `json:"credential_source"`

	// Whether Didit's own route stood in for a marketplace provider that could not
	// connect.
	IsFallback bool `json:"is_fallback"`

	// The marketplace connection used, for `byok`.
	ProviderConnectionID string `json:"provider_connection_id"`

	// The data the connection asked for, for example `ownership` or `balances`.
	RequestedScopes []string `json:"requested_scopes"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BankVerificationResultRoute: The route chosen before consent. It never changes afterwards.

func (*BankVerificationResultRoute) UnmarshalJSON

func (r *BankVerificationResultRoute) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BankVerificationResultRoute leniently.

type BankVerificationResultRouteCredentialSource

type BankVerificationResultRouteCredentialSource string

BankVerificationResultRouteCredentialSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankVerificationResultRouteCredentialSourceNative BankVerificationResultRouteCredentialSource = "native"
	BankVerificationResultRouteCredentialSourceByok   BankVerificationResultRouteCredentialSource = "byok"
)

Known values of BankVerificationResultRouteCredentialSource.

type BankVerificationResultStatus

type BankVerificationResultStatus string

BankVerificationResultStatus: The step's verdict, after its actions and status rules.

BankVerificationResultStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BankVerificationResultStatusNotFinished BankVerificationResultStatus = "Not Finished"
	BankVerificationResultStatusApproved    BankVerificationResultStatus = "Approved"
	BankVerificationResultStatusDeclined    BankVerificationResultStatus = "Declined"
	BankVerificationResultStatusInReview    BankVerificationResultStatus = "In Review"
	BankVerificationResultStatusExpired     BankVerificationResultStatus = "Expired"
)

Known values of BankVerificationResultStatus.

type BillingRetrieveBalanceResponse

type BillingRetrieveBalanceResponse struct {
	// Current pre-paid credit balance in USD, as a fixed-point decimal string.
	// Decreases as verifications are billed and increases when a top-up settles.
	Balance string `json:"balance"`

	// When `true`, Didit will automatically charge the saved payment method to add
	// credits once the balance crosses `auto_refill_threshold`. Configured from
	// Console → Billing.
	AutoRefillEnabled bool `json:"auto_refill_enabled"`

	// USD amount that will be charged on each auto-refill. `null` when auto-refill
	// is disabled or unset.
	AutoRefillAmount string `json:"auto_refill_amount"`

	// Trigger threshold in USD. Auto-refill fires when `balance` falls below this
	// value. `null` when auto-refill is disabled or unset.
	AutoRefillThreshold string `json:"auto_refill_threshold"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BillingRetrieveBalanceResponse is a response object.

func (*BillingRetrieveBalanceResponse) UnmarshalJSON

func (r *BillingRetrieveBalanceResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BillingRetrieveBalanceResponse leniently.

type BillingService

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

BillingService holds the billing operations. Use it through Client.Billing.

func (*BillingService) RetrieveBalance

RetrieveBalance: Get credit balance.

Get current pre-paid credit balance in USD (organization-wide) plus auto-refill config. Amounts are decimal strings - parse with a decimal library.

GET /v3/billing/balance/

func (*BillingService) TopUp

TopUp: Top up credits.

Add credits via a hosted checkout session (**$50 minimum**); not available on annual plans. Redirect the customer to the returned `checkout_session_url`.

POST /v3/billing/top-up/

type BillingTopUpParams

type BillingTopUpParams struct {
	// Amount to charge, in USD. **Must be at least 50.** Tax is added automatically
	// at checkout based on the customer's billing address. Required.
	AmountInDollars float64 `json:"amount_in_dollars"`

	// URL the hosted checkout redirects the customer to after a successful payment.
	// Currently defaults to `https://console.didit.me`. Pass a working URL
	// explicitly; the default host is unavailable. Append the literal placeholder
	// `{CHECKOUT_SESSION_ID}` if you want the hosted checkout to substitute the
	// session ID.
	SuccessURL Opt[string] `json:"success_url"`

	// URL the hosted checkout redirects the customer to when they abort or close
	// the Checkout window. Currently defaults to `https://console.didit.me`. Pass a
	// working URL explicitly; the default host is unavailable.
	CancelURL Opt[string] `json:"cancel_url"`
}

BillingTopUpParams holds the parameters of Client.Billing.TopUp.

func (BillingTopUpParams) MarshalJSON

func (r BillingTopUpParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type BillingTopUpResponse

type BillingTopUpResponse struct {
	// Hosted checkout session identifier (e.g. `cs_test_a1B2c3...`). Useful for
	// server-side reconciliation.
	CheckoutSessionID string `json:"checkout_session_id"`

	// Single-use hosted payment page URL. Redirect the customer here to complete
	// payment.
	CheckoutSessionURL string `json:"checkout_session_url"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BillingTopUpResponse is a response object.

func (*BillingTopUpResponse) UnmarshalJSON

func (r *BillingTopUpResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BillingTopUpResponse leniently.

type BiometricTemplatesBatchDeleteParams

type BiometricTemplatesBatchDeleteParams struct {
	// Templates to purge. Required unless `delete_all` is `true`. Already purged
	// ids are reported as `already_purged`.
	TemplateUUIDs Opt[[]string] `json:"template_uuids"`

	// When `true`, purges every template matching the filters below (all of the
	// application's templates when no filter is given). `template_uuids` is
	// ignored. Irreversible.
	DeleteAll Opt[bool] `json:"delete_all"`

	// Only with `delete_all`: case-insensitive substring match on the owning User's
	// `vendor_data`.
	VendorData Opt[string] `json:"vendor_data"`

	// Only with `delete_all`: exact match on the owning User.
	VendorUserUUID Opt[string] `json:"vendor_user_uuid"`

	// Only with `delete_all`.
	Status Opt[BiometricTemplatesBatchDeleteParamsStatus] `json:"status"`

	// Only with `delete_all`.
	SourceType Opt[BiometricTemplatesBatchDeleteParamsSourceType] `json:"source_type"`

	// Only with `delete_all`.
	RetainedFrom Opt[time.Time] `json:"retained_from"`

	// Only with `delete_all`. Must not be earlier than `retained_from`.
	RetainedTo Opt[time.Time] `json:"retained_to"`
}

BiometricTemplatesBatchDeleteParams holds the parameters of Client.BiometricTemplates.BatchDelete.

func (BiometricTemplatesBatchDeleteParams) MarshalJSON

func (r BiometricTemplatesBatchDeleteParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type BiometricTemplatesBatchDeleteParamsSourceType

type BiometricTemplatesBatchDeleteParamsSourceType string

BiometricTemplatesBatchDeleteParamsSourceType: Only with `delete_all`.

BiometricTemplatesBatchDeleteParamsSourceType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesBatchDeleteParamsSourceTypeSessionDelete      BiometricTemplatesBatchDeleteParamsSourceType = "session_delete"
	BiometricTemplatesBatchDeleteParamsSourceTypeAutomaticRetention BiometricTemplatesBatchDeleteParamsSourceType = "automatic_retention"
	BiometricTemplatesBatchDeleteParamsSourceTypeBackfill           BiometricTemplatesBatchDeleteParamsSourceType = "backfill"
)

Known values of BiometricTemplatesBatchDeleteParamsSourceType.

type BiometricTemplatesBatchDeleteParamsStatus

type BiometricTemplatesBatchDeleteParamsStatus string

BiometricTemplatesBatchDeleteParamsStatus: Only with `delete_all`.

BiometricTemplatesBatchDeleteParamsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesBatchDeleteParamsStatusPending      BiometricTemplatesBatchDeleteParamsStatus = "pending"
	BiometricTemplatesBatchDeleteParamsStatusActive       BiometricTemplatesBatchDeleteParamsStatus = "active"
	BiometricTemplatesBatchDeleteParamsStatusExpired      BiometricTemplatesBatchDeleteParamsStatus = "expired"
	BiometricTemplatesBatchDeleteParamsStatusHeldOutOfUse BiometricTemplatesBatchDeleteParamsStatus = "held_out_of_use"
	BiometricTemplatesBatchDeleteParamsStatusPurgePending BiometricTemplatesBatchDeleteParamsStatus = "purge_pending"
	BiometricTemplatesBatchDeleteParamsStatusPurgeFailed  BiometricTemplatesBatchDeleteParamsStatus = "purge_failed"
)

Known values of BiometricTemplatesBatchDeleteParamsStatus.

type BiometricTemplatesBatchDeleteResponse

type BiometricTemplatesBatchDeleteResponse struct {
	Results []BiometricTemplatesBatchDeleteResponseResults `json:"results"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BiometricTemplatesBatchDeleteResponse is a response object.

func (*BiometricTemplatesBatchDeleteResponse) UnmarshalJSON

func (r *BiometricTemplatesBatchDeleteResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BiometricTemplatesBatchDeleteResponse leniently.

type BiometricTemplatesBatchDeleteResponseResults

type BiometricTemplatesBatchDeleteResponseResults struct {
	UUID    string                                              `json:"uuid"`
	Outcome BiometricTemplatesBatchDeleteResponseResultsOutcome `json:"outcome"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BiometricTemplatesBatchDeleteResponseResults is a response object.

func (*BiometricTemplatesBatchDeleteResponseResults) UnmarshalJSON

func (r *BiometricTemplatesBatchDeleteResponseResults) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BiometricTemplatesBatchDeleteResponseResults leniently.

type BiometricTemplatesBatchDeleteResponseResultsOutcome

type BiometricTemplatesBatchDeleteResponseResultsOutcome string

BiometricTemplatesBatchDeleteResponseResultsOutcome is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesBatchDeleteResponseResultsOutcomePurged        BiometricTemplatesBatchDeleteResponseResultsOutcome = "purged"
	BiometricTemplatesBatchDeleteResponseResultsOutcomeAlreadyPurged BiometricTemplatesBatchDeleteResponseResultsOutcome = "already_purged"
)

Known values of BiometricTemplatesBatchDeleteResponseResultsOutcome.

type BiometricTemplatesCountParams

type BiometricTemplatesCountParams struct {
	// Case-insensitive substring match on the owning User's current `vendor_data`.
	VendorData Opt[string] `json:"-" query:"vendor_data"`

	// Exact match on the owning User.
	VendorUserUUID Opt[string] `json:"-" query:"vendor_user_uuid"`

	// Lifecycle status. Purged templates are never listed.
	Status Opt[BiometricTemplatesCountParamsStatus] `json:"-" query:"status"`

	// How the template was created.
	SourceType Opt[BiometricTemplatesCountParamsSourceType] `json:"-" query:"source_type"`

	// Templates retained at or after this time.
	RetainedFrom Opt[time.Time] `json:"-" query:"retained_from"`

	// Templates retained at or before this time. Must not be earlier than
	// `retained_from` (`400`).
	RetainedTo Opt[time.Time] `json:"-" query:"retained_to"`
}

BiometricTemplatesCountParams holds the parameters of Client.BiometricTemplates.Count.

func (BiometricTemplatesCountParams) MarshalJSON

func (r BiometricTemplatesCountParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type BiometricTemplatesCountParamsSourceType

type BiometricTemplatesCountParamsSourceType string

BiometricTemplatesCountParamsSourceType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesCountParamsSourceTypeSessionDelete      BiometricTemplatesCountParamsSourceType = "session_delete"
	BiometricTemplatesCountParamsSourceTypeAutomaticRetention BiometricTemplatesCountParamsSourceType = "automatic_retention"
	BiometricTemplatesCountParamsSourceTypeBackfill           BiometricTemplatesCountParamsSourceType = "backfill"
)

Known values of BiometricTemplatesCountParamsSourceType.

type BiometricTemplatesCountParamsStatus

type BiometricTemplatesCountParamsStatus string

BiometricTemplatesCountParamsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesCountParamsStatusPending      BiometricTemplatesCountParamsStatus = "pending"
	BiometricTemplatesCountParamsStatusActive       BiometricTemplatesCountParamsStatus = "active"
	BiometricTemplatesCountParamsStatusExpired      BiometricTemplatesCountParamsStatus = "expired"
	BiometricTemplatesCountParamsStatusHeldOutOfUse BiometricTemplatesCountParamsStatus = "held_out_of_use"
	BiometricTemplatesCountParamsStatusPurgePending BiometricTemplatesCountParamsStatus = "purge_pending"
	BiometricTemplatesCountParamsStatusPurgeFailed  BiometricTemplatesCountParamsStatus = "purge_failed"
)

Known values of BiometricTemplatesCountParamsStatus.

type BiometricTemplatesCountResponse

type BiometricTemplatesCountResponse struct {
	Count int64 `json:"count"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BiometricTemplatesCountResponse is a response object.

func (*BiometricTemplatesCountResponse) UnmarshalJSON

func (r *BiometricTemplatesCountResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BiometricTemplatesCountResponse leniently.

type BiometricTemplatesDeleteResponse

type BiometricTemplatesDeleteResponse struct {
	UUID    string                                  `json:"uuid"`
	Outcome BiometricTemplatesDeleteResponseOutcome `json:"outcome"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BiometricTemplatesDeleteResponse is a response object.

func (*BiometricTemplatesDeleteResponse) UnmarshalJSON

func (r *BiometricTemplatesDeleteResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BiometricTemplatesDeleteResponse leniently.

type BiometricTemplatesDeleteResponseOutcome

type BiometricTemplatesDeleteResponseOutcome string

BiometricTemplatesDeleteResponseOutcome is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesDeleteResponseOutcomePurged        BiometricTemplatesDeleteResponseOutcome = "purged"
	BiometricTemplatesDeleteResponseOutcomeAlreadyPurged BiometricTemplatesDeleteResponseOutcome = "already_purged"
)

Known values of BiometricTemplatesDeleteResponseOutcome.

type BiometricTemplatesListParams

type BiometricTemplatesListParams struct {
	// Case-insensitive substring match on the owning User's current `vendor_data`.
	VendorData Opt[string] `json:"-" query:"vendor_data"`

	// Exact match on the owning User.
	VendorUserUUID Opt[string] `json:"-" query:"vendor_user_uuid"`

	// Lifecycle status. Purged templates are never listed.
	Status Opt[BiometricTemplatesListParamsStatus] `json:"-" query:"status"`

	// How the template was created.
	SourceType Opt[BiometricTemplatesListParamsSourceType] `json:"-" query:"source_type"`

	// Templates retained at or after this time.
	RetainedFrom Opt[time.Time] `json:"-" query:"retained_from"`

	// Templates retained at or before this time. Must not be earlier than
	// `retained_from` (`400`).
	RetainedTo Opt[time.Time] `json:"-" query:"retained_to"`

	// Sort order.
	Ordering Opt[BiometricTemplatesListParamsOrdering] `json:"-" query:"ordering"`

	// Page size.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Pagination offset.
	Offset Opt[int64] `json:"-" query:"offset"`
}

BiometricTemplatesListParams holds the parameters of Client.BiometricTemplates.List.

func (BiometricTemplatesListParams) MarshalJSON

func (r BiometricTemplatesListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type BiometricTemplatesListParamsOrdering

type BiometricTemplatesListParamsOrdering string

BiometricTemplatesListParamsOrdering is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesListParamsOrderingRetainedAt  BiometricTemplatesListParamsOrdering = "retained_at"
	BiometricTemplatesListParamsOrderingRetainedAt2 BiometricTemplatesListParamsOrdering = "-retained_at"
	BiometricTemplatesListParamsOrderingExpiresAt   BiometricTemplatesListParamsOrdering = "expires_at"
	BiometricTemplatesListParamsOrderingExpiresAt2  BiometricTemplatesListParamsOrdering = "-expires_at"
)

Known values of BiometricTemplatesListParamsOrdering.

type BiometricTemplatesListParamsSourceType

type BiometricTemplatesListParamsSourceType string

BiometricTemplatesListParamsSourceType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesListParamsSourceTypeSessionDelete      BiometricTemplatesListParamsSourceType = "session_delete"
	BiometricTemplatesListParamsSourceTypeAutomaticRetention BiometricTemplatesListParamsSourceType = "automatic_retention"
	BiometricTemplatesListParamsSourceTypeBackfill           BiometricTemplatesListParamsSourceType = "backfill"
)

Known values of BiometricTemplatesListParamsSourceType.

type BiometricTemplatesListParamsStatus

type BiometricTemplatesListParamsStatus string

BiometricTemplatesListParamsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesListParamsStatusPending      BiometricTemplatesListParamsStatus = "pending"
	BiometricTemplatesListParamsStatusActive       BiometricTemplatesListParamsStatus = "active"
	BiometricTemplatesListParamsStatusExpired      BiometricTemplatesListParamsStatus = "expired"
	BiometricTemplatesListParamsStatusHeldOutOfUse BiometricTemplatesListParamsStatus = "held_out_of_use"
	BiometricTemplatesListParamsStatusPurgePending BiometricTemplatesListParamsStatus = "purge_pending"
	BiometricTemplatesListParamsStatusPurgeFailed  BiometricTemplatesListParamsStatus = "purge_failed"
)

Known values of BiometricTemplatesListParamsStatus.

type BiometricTemplatesListResponseResults

type BiometricTemplatesListResponseResults struct {
	// Template id. Randomly generated; not derived from the deleted session or its
	// face.
	UUID string `json:"uuid"`

	// The owning User.
	VendorUserUUID string `json:"vendor_user_uuid"`

	// The User's current `vendor_data`, resolved when you read the template (never
	// copied).
	VendorData string `json:"vendor_data"`

	// How the template was created: a session deletion (API or Console), the
	// application's automatic data-retention window, or a Didit-operated backfill
	// you instructed.
	SourceType BiometricTemplatesListResponseResultsSourceType `json:"source_type"`

	// Opaque reference tying the template to its audit trail. It is not the deleted
	// session's id and cannot be resolved to it.
	ProvenanceReference string `json:"provenance_reference"`

	// The application policy at retention time.
	RetentionPolicy BiometricTemplatesListResponseResultsRetentionPolicy `json:"retention_policy"`

	// The `retain_face_embeddings` value sent on the deletion, or `null` when the
	// policy applied.
	RetentionOverride bool      `json:"retention_override"`
	RetainedAt        time.Time `json:"retained_at"`

	// When the template expires and is purged automatically. Always set.
	ExpiresAt time.Time `json:"expires_at"`

	// Principal that gave the instruction: the application id for API keys, the
	// Console member id for Console actions, or a `service:` identifier for
	// automatic retention. Never an email address.
	RetainedBy        string                                                 `json:"retained_by"`
	RetainedByType    BiometricTemplatesListResponseResultsRetainedByType    `json:"retained_by_type"`
	InstructionClass  BiometricTemplatesListResponseResultsInstructionClass  `json:"instruction_class"`
	InstructionSource BiometricTemplatesListResponseResultsInstructionSource `json:"instruction_source"`

	// The `instruction_id` sent on the deletion, or a Didit-generated id.
	InstructionID string `json:"instruction_id"`

	// `true` only while a legal hold applies. A held template is excluded from all
	// matching.
	HeldOutOfUse bool `json:"held_out_of_use"`

	// Only `active` templates that are not held, not past `expires_at`, and whose
	// User still exists take part in matching.
	Status   BiometricTemplatesListResponseResultsStatus `json:"status"`
	PurgedAt time.Time                                   `json:"purged_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BiometricTemplatesListResponseResults is a response object.

func (*BiometricTemplatesListResponseResults) UnmarshalJSON

func (r *BiometricTemplatesListResponseResults) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BiometricTemplatesListResponseResults leniently.

type BiometricTemplatesListResponseResultsInstructionClass

type BiometricTemplatesListResponseResultsInstructionClass string

BiometricTemplatesListResponseResultsInstructionClass is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesListResponseResultsInstructionClassOperationalSessionDelete BiometricTemplatesListResponseResultsInstructionClass = "operational_session_delete"
	BiometricTemplatesListResponseResultsInstructionClassPrivacyErasure           BiometricTemplatesListResponseResultsInstructionClass = "privacy_erasure"
)

Known values of BiometricTemplatesListResponseResultsInstructionClass.

type BiometricTemplatesListResponseResultsInstructionSource

type BiometricTemplatesListResponseResultsInstructionSource string

BiometricTemplatesListResponseResultsInstructionSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesListResponseResultsInstructionSourceAPI                   BiometricTemplatesListResponseResultsInstructionSource = "api"
	BiometricTemplatesListResponseResultsInstructionSourceConsole               BiometricTemplatesListResponseResultsInstructionSource = "console"
	BiometricTemplatesListResponseResultsInstructionSourceAutomaticRetention    BiometricTemplatesListResponseResultsInstructionSource = "automatic_retention"
	BiometricTemplatesListResponseResultsInstructionSourceBackfill              BiometricTemplatesListResponseResultsInstructionSource = "backfill"
	BiometricTemplatesListResponseResultsInstructionSourcePrivacyErasure        BiometricTemplatesListResponseResultsInstructionSource = "privacy_erasure"
	BiometricTemplatesListResponseResultsInstructionSourceExplicitTemplatePurge BiometricTemplatesListResponseResultsInstructionSource = "explicit_template_purge"
	BiometricTemplatesListResponseResultsInstructionSourceVendorUserDelete      BiometricTemplatesListResponseResultsInstructionSource = "vendor_user_delete"
	BiometricTemplatesListResponseResultsInstructionSourceExpiry                BiometricTemplatesListResponseResultsInstructionSource = "expiry"
	BiometricTemplatesListResponseResultsInstructionSourceReconciliation        BiometricTemplatesListResponseResultsInstructionSource = "reconciliation"
	BiometricTemplatesListResponseResultsInstructionSourceMigration             BiometricTemplatesListResponseResultsInstructionSource = "migration"
	BiometricTemplatesListResponseResultsInstructionSourceSystem                BiometricTemplatesListResponseResultsInstructionSource = "system"
)

Known values of BiometricTemplatesListResponseResultsInstructionSource.

type BiometricTemplatesListResponseResultsRetainedByType

type BiometricTemplatesListResponseResultsRetainedByType string

BiometricTemplatesListResponseResultsRetainedByType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesListResponseResultsRetainedByTypeAPIKey      BiometricTemplatesListResponseResultsRetainedByType = "API_KEY"
	BiometricTemplatesListResponseResultsRetainedByTypeConsoleUser BiometricTemplatesListResponseResultsRetainedByType = "CONSOLE_USER"
	BiometricTemplatesListResponseResultsRetainedByTypeSystem      BiometricTemplatesListResponseResultsRetainedByType = "SYSTEM"
)

Known values of BiometricTemplatesListResponseResultsRetainedByType.

type BiometricTemplatesListResponseResultsRetentionPolicy

type BiometricTemplatesListResponseResultsRetentionPolicy string

BiometricTemplatesListResponseResultsRetentionPolicy: The application policy at retention time.

BiometricTemplatesListResponseResultsRetentionPolicy is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesListResponseResultsRetentionPolicyDeleteWithSession      BiometricTemplatesListResponseResultsRetentionPolicy = "delete_with_session"
	BiometricTemplatesListResponseResultsRetentionPolicyRetainUntilUserDeleted BiometricTemplatesListResponseResultsRetentionPolicy = "retain_until_user_deleted"
)

Known values of BiometricTemplatesListResponseResultsRetentionPolicy.

type BiometricTemplatesListResponseResultsSourceType

type BiometricTemplatesListResponseResultsSourceType string

BiometricTemplatesListResponseResultsSourceType: How the template was created: a session deletion (API or Console), the application's automatic data-retention window, or a Didit-operated backfill you instructed.

BiometricTemplatesListResponseResultsSourceType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesListResponseResultsSourceTypeSessionDelete      BiometricTemplatesListResponseResultsSourceType = "session_delete"
	BiometricTemplatesListResponseResultsSourceTypeAutomaticRetention BiometricTemplatesListResponseResultsSourceType = "automatic_retention"
	BiometricTemplatesListResponseResultsSourceTypeBackfill           BiometricTemplatesListResponseResultsSourceType = "backfill"
)

Known values of BiometricTemplatesListResponseResultsSourceType.

type BiometricTemplatesListResponseResultsStatus

type BiometricTemplatesListResponseResultsStatus string

BiometricTemplatesListResponseResultsStatus: Only `active` templates that are not held, not past `expires_at`, and whose User still exists take part in matching.

BiometricTemplatesListResponseResultsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesListResponseResultsStatusPending      BiometricTemplatesListResponseResultsStatus = "pending"
	BiometricTemplatesListResponseResultsStatusActive       BiometricTemplatesListResponseResultsStatus = "active"
	BiometricTemplatesListResponseResultsStatusExpired      BiometricTemplatesListResponseResultsStatus = "expired"
	BiometricTemplatesListResponseResultsStatusHeldOutOfUse BiometricTemplatesListResponseResultsStatus = "held_out_of_use"
	BiometricTemplatesListResponseResultsStatusPurgePending BiometricTemplatesListResponseResultsStatus = "purge_pending"
	BiometricTemplatesListResponseResultsStatusPurgeFailed  BiometricTemplatesListResponseResultsStatus = "purge_failed"
	BiometricTemplatesListResponseResultsStatusPurged       BiometricTemplatesListResponseResultsStatus = "purged"
)

Known values of BiometricTemplatesListResponseResultsStatus.

type BiometricTemplatesRetrieveResponse

type BiometricTemplatesRetrieveResponse struct {
	// Template id. Randomly generated; not derived from the deleted session or its
	// face.
	UUID string `json:"uuid"`

	// The owning User.
	VendorUserUUID string `json:"vendor_user_uuid"`

	// The User's current `vendor_data`, resolved when you read the template (never
	// copied).
	VendorData string `json:"vendor_data"`

	// How the template was created: a session deletion (API or Console), the
	// application's automatic data-retention window, or a Didit-operated backfill
	// you instructed.
	SourceType BiometricTemplatesRetrieveResponseSourceType `json:"source_type"`

	// Opaque reference tying the template to its audit trail. It is not the deleted
	// session's id and cannot be resolved to it.
	ProvenanceReference string `json:"provenance_reference"`

	// The application policy at retention time.
	RetentionPolicy BiometricTemplatesRetrieveResponseRetentionPolicy `json:"retention_policy"`

	// The `retain_face_embeddings` value sent on the deletion, or `null` when the
	// policy applied.
	RetentionOverride bool      `json:"retention_override"`
	RetainedAt        time.Time `json:"retained_at"`

	// When the template expires and is purged automatically. Always set.
	ExpiresAt time.Time `json:"expires_at"`

	// Principal that gave the instruction: the application id for API keys, the
	// Console member id for Console actions, or a `service:` identifier for
	// automatic retention. Never an email address.
	RetainedBy        string                                              `json:"retained_by"`
	RetainedByType    BiometricTemplatesRetrieveResponseRetainedByType    `json:"retained_by_type"`
	InstructionClass  BiometricTemplatesRetrieveResponseInstructionClass  `json:"instruction_class"`
	InstructionSource BiometricTemplatesRetrieveResponseInstructionSource `json:"instruction_source"`

	// The `instruction_id` sent on the deletion, or a Didit-generated id.
	InstructionID string `json:"instruction_id"`

	// `true` only while a legal hold applies. A held template is excluded from all
	// matching.
	HeldOutOfUse bool `json:"held_out_of_use"`

	// Only `active` templates that are not held, not past `expires_at`, and whose
	// User still exists take part in matching.
	Status   BiometricTemplatesRetrieveResponseStatus `json:"status"`
	PurgedAt time.Time                                `json:"purged_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BiometricTemplatesRetrieveResponse is a response object.

func (*BiometricTemplatesRetrieveResponse) UnmarshalJSON

func (r *BiometricTemplatesRetrieveResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BiometricTemplatesRetrieveResponse leniently.

type BiometricTemplatesRetrieveResponseInstructionClass

type BiometricTemplatesRetrieveResponseInstructionClass string

BiometricTemplatesRetrieveResponseInstructionClass is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesRetrieveResponseInstructionClassOperationalSessionDelete BiometricTemplatesRetrieveResponseInstructionClass = "operational_session_delete"
	BiometricTemplatesRetrieveResponseInstructionClassPrivacyErasure           BiometricTemplatesRetrieveResponseInstructionClass = "privacy_erasure"
)

Known values of BiometricTemplatesRetrieveResponseInstructionClass.

type BiometricTemplatesRetrieveResponseInstructionSource

type BiometricTemplatesRetrieveResponseInstructionSource string

BiometricTemplatesRetrieveResponseInstructionSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesRetrieveResponseInstructionSourceAPI                   BiometricTemplatesRetrieveResponseInstructionSource = "api"
	BiometricTemplatesRetrieveResponseInstructionSourceConsole               BiometricTemplatesRetrieveResponseInstructionSource = "console"
	BiometricTemplatesRetrieveResponseInstructionSourceAutomaticRetention    BiometricTemplatesRetrieveResponseInstructionSource = "automatic_retention"
	BiometricTemplatesRetrieveResponseInstructionSourceBackfill              BiometricTemplatesRetrieveResponseInstructionSource = "backfill"
	BiometricTemplatesRetrieveResponseInstructionSourcePrivacyErasure        BiometricTemplatesRetrieveResponseInstructionSource = "privacy_erasure"
	BiometricTemplatesRetrieveResponseInstructionSourceExplicitTemplatePurge BiometricTemplatesRetrieveResponseInstructionSource = "explicit_template_purge"
	BiometricTemplatesRetrieveResponseInstructionSourceVendorUserDelete      BiometricTemplatesRetrieveResponseInstructionSource = "vendor_user_delete"
	BiometricTemplatesRetrieveResponseInstructionSourceExpiry                BiometricTemplatesRetrieveResponseInstructionSource = "expiry"
	BiometricTemplatesRetrieveResponseInstructionSourceReconciliation        BiometricTemplatesRetrieveResponseInstructionSource = "reconciliation"
	BiometricTemplatesRetrieveResponseInstructionSourceMigration             BiometricTemplatesRetrieveResponseInstructionSource = "migration"
	BiometricTemplatesRetrieveResponseInstructionSourceSystem                BiometricTemplatesRetrieveResponseInstructionSource = "system"
)

Known values of BiometricTemplatesRetrieveResponseInstructionSource.

type BiometricTemplatesRetrieveResponseRetainedByType

type BiometricTemplatesRetrieveResponseRetainedByType string

BiometricTemplatesRetrieveResponseRetainedByType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesRetrieveResponseRetainedByTypeAPIKey      BiometricTemplatesRetrieveResponseRetainedByType = "API_KEY"
	BiometricTemplatesRetrieveResponseRetainedByTypeConsoleUser BiometricTemplatesRetrieveResponseRetainedByType = "CONSOLE_USER"
	BiometricTemplatesRetrieveResponseRetainedByTypeSystem      BiometricTemplatesRetrieveResponseRetainedByType = "SYSTEM"
)

Known values of BiometricTemplatesRetrieveResponseRetainedByType.

type BiometricTemplatesRetrieveResponseRetentionPolicy

type BiometricTemplatesRetrieveResponseRetentionPolicy string

BiometricTemplatesRetrieveResponseRetentionPolicy: The application policy at retention time.

BiometricTemplatesRetrieveResponseRetentionPolicy is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesRetrieveResponseRetentionPolicyDeleteWithSession      BiometricTemplatesRetrieveResponseRetentionPolicy = "delete_with_session"
	BiometricTemplatesRetrieveResponseRetentionPolicyRetainUntilUserDeleted BiometricTemplatesRetrieveResponseRetentionPolicy = "retain_until_user_deleted"
)

Known values of BiometricTemplatesRetrieveResponseRetentionPolicy.

type BiometricTemplatesRetrieveResponseSourceType

type BiometricTemplatesRetrieveResponseSourceType string

BiometricTemplatesRetrieveResponseSourceType: How the template was created: a session deletion (API or Console), the application's automatic data-retention window, or a Didit-operated backfill you instructed.

BiometricTemplatesRetrieveResponseSourceType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesRetrieveResponseSourceTypeSessionDelete      BiometricTemplatesRetrieveResponseSourceType = "session_delete"
	BiometricTemplatesRetrieveResponseSourceTypeAutomaticRetention BiometricTemplatesRetrieveResponseSourceType = "automatic_retention"
	BiometricTemplatesRetrieveResponseSourceTypeBackfill           BiometricTemplatesRetrieveResponseSourceType = "backfill"
)

Known values of BiometricTemplatesRetrieveResponseSourceType.

type BiometricTemplatesRetrieveResponseStatus

type BiometricTemplatesRetrieveResponseStatus string

BiometricTemplatesRetrieveResponseStatus: Only `active` templates that are not held, not past `expires_at`, and whose User still exists take part in matching.

BiometricTemplatesRetrieveResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BiometricTemplatesRetrieveResponseStatusPending      BiometricTemplatesRetrieveResponseStatus = "pending"
	BiometricTemplatesRetrieveResponseStatusActive       BiometricTemplatesRetrieveResponseStatus = "active"
	BiometricTemplatesRetrieveResponseStatusExpired      BiometricTemplatesRetrieveResponseStatus = "expired"
	BiometricTemplatesRetrieveResponseStatusHeldOutOfUse BiometricTemplatesRetrieveResponseStatus = "held_out_of_use"
	BiometricTemplatesRetrieveResponseStatusPurgePending BiometricTemplatesRetrieveResponseStatus = "purge_pending"
	BiometricTemplatesRetrieveResponseStatusPurgeFailed  BiometricTemplatesRetrieveResponseStatus = "purge_failed"
	BiometricTemplatesRetrieveResponseStatusPurged       BiometricTemplatesRetrieveResponseStatus = "purged"
)

Known values of BiometricTemplatesRetrieveResponseStatus.

type BiometricTemplatesService

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

BiometricTemplatesService holds the biometric_templates operations. Use it through Client.BiometricTemplates.

func (*BiometricTemplatesService) BatchDelete

BatchDelete: Bulk purge retained biometric templates.

An opted-in application keeps one separately managed, image-free face biometric template anchored to the User when a session is deleted (see `DELETE /v3/session/{sessionId}/delete/`). Templates are biometric data with a finite `expires_at`; they never contain images, session data, or identity fields, and they are purged on User deletion, privacy erasure, expiry, or an explicit purge. These endpoints accept application API keys (`x-api-key`) only; Business Console user tokens are rejected with `403`.

Purges many templates in one call, by explicit id list or with `delete_all: true` optionally narrowed by the same filters as the list endpoint. Templates are purged one by one and each result reports `purged` or `already_purged`. If a biometric store is unavailable the call returns `503` at the first failing template: templates purged earlier in the request stay purged, the failing one moves to `purge_failed` (already excluded from matching), and repeating the request finishes the job.

**`delete_all: true` without filters purges every biometric template in the application and cannot be undone.** Run the count endpoint with the same filters first.

POST /v3/biometric-templates/delete/

func (*BiometricTemplatesService) Count

Count: Count retained biometric templates.

An opted-in application keeps one separately managed, image-free face biometric template anchored to the User when a session is deleted (see `DELETE /v3/session/{sessionId}/delete/`). Templates are biometric data with a finite `expires_at`; they never contain images, session data, or identity fields, and they are purged on User deletion, privacy erasure, expiry, or an explicit purge. These endpoints accept application API keys (`x-api-key`) only; Business Console user tokens are rejected with `403`.

Returns the number of templates matching the same filters as the list endpoint. Use it to check what a filtered bulk purge with `delete_all: true` would touch.

GET /v3/biometric-templates/count/

func (*BiometricTemplatesService) Delete

Delete: Purge a retained biometric template.

An opted-in application keeps one separately managed, image-free face biometric template anchored to the User when a session is deleted (see `DELETE /v3/session/{sessionId}/delete/`). Templates are biometric data with a finite `expires_at`; they never contain images, session data, or identity fields, and they are purged on User deletion, privacy erasure, expiry, or an explicit purge. These endpoints accept application API keys (`x-api-key`) only; Business Console user tokens are rejected with `403`.

Purges one template: it is removed from every kind of matching and the stored template is deleted. Irreversible and recorded on the audit trail with the acting principal.

**Retry semantics:** Didit deletes the stored template first and only then marks the template purged. If a biometric store is unavailable the call returns `503`, the template moves to `status: purge_failed` and is already excluded from matching; repeat the same call to finish. Repeating a purge of an already purged template returns `already_purged`.

Templates are also purged by `POST /v3/users/delete/` for the owning User, by any deletion of that User's sessions with `deletion_instruction: privacy_erasure`, and automatically at `expires_at`.

DELETE /v3/biometric-templates/{template_uuid}/

func (*BiometricTemplatesService) List

List: List retained biometric templates.

An opted-in application keeps one separately managed, image-free face biometric template anchored to the User when a session is deleted (see `DELETE /v3/session/{sessionId}/delete/`). Templates are biometric data with a finite `expires_at`; they never contain images, session data, or identity fields, and they are purged on User deletion, privacy erasure, expiry, or an explicit purge. These endpoints accept application API keys (`x-api-key`) only; Business Console user tokens are rejected with `403`.

Returns a paginated list of the templates the application currently holds. Purged templates are not listed.

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/biometric-templates/

func (*BiometricTemplatesService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*BiometricTemplatesService) Retrieve

Retrieve: Get a retained biometric template.

An opted-in application keeps one separately managed, image-free face biometric template anchored to the User when a session is deleted (see `DELETE /v3/session/{sessionId}/delete/`). Templates are biometric data with a finite `expires_at`; they never contain images, session data, or identity fields, and they are purged on User deletion, privacy erasure, expiry, or an explicit purge. These endpoints accept application API keys (`x-api-key`) only; Business Console user tokens are rejected with `403`.

Returns one template. The response never includes an image, a vector, the deleted session's id, or identity data.

GET /v3/biometric-templates/{template_uuid}/

type BlocklistAddParams

type BlocklistAddParams struct {
	// A person verification session of your application. Deleted sessions are
	// refused. Required.
	SessionID string `json:"session_id"`

	// Blocklist the session's face.
	BlocklistFace Opt[bool] `json:"blocklist_face"`

	// Blocklist the session's identity document. The document needs its issuing
	// state, document type, document number and full name.
	BlocklistDocument Opt[bool] `json:"blocklist_document"`

	// Blocklist the session's phone number.
	BlocklistPhone Opt[bool] `json:"blocklist_phone"`

	// Blocklist the session's email address.
	BlocklistEmail Opt[bool] `json:"blocklist_email"`
}

BlocklistAddParams holds the parameters of Client.Blocklist.Add.

func (BlocklistAddParams) MarshalJSON

func (r BlocklistAddParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type BlocklistAddResponse

type BlocklistAddResponse struct {
	// Always `Successfully updated blocklist.`
	Message string `json:"message"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BlocklistAddResponse is a response object.

func (*BlocklistAddResponse) UnmarshalJSON

func (r *BlocklistAddResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BlocklistAddResponse leniently.

type BlocklistListParams

type BlocklistListParams struct {
	// Only items of this type. When omitted, every type is returned.
	ItemType Opt[BlocklistListParamsItemType] `json:"-" query:"item_type"`

	// Page size. Defaults to 50. A value above 1000000 returns `400`; zero, a
	// negative or a non-numeric value falls back to 50.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based index of the first item to return. Prefer following `next`. A
	// value above 1000000 returns `400`; a negative or non-numeric value falls back
	// to 0.
	Offset Opt[int64] `json:"-" query:"offset"`
}

BlocklistListParams holds the parameters of Client.Blocklist.List.

func (BlocklistListParams) MarshalJSON

func (r BlocklistListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type BlocklistListParamsItemType

type BlocklistListParamsItemType string

BlocklistListParamsItemType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BlocklistListParamsItemTypeFace     BlocklistListParamsItemType = "face"
	BlocklistListParamsItemTypeDocument BlocklistListParamsItemType = "document"
	BlocklistListParamsItemTypePhone    BlocklistListParamsItemType = "phone"
	BlocklistListParamsItemTypeEmail    BlocklistListParamsItemType = "email"
)

Known values of BlocklistListParamsItemType.

type BlocklistRemoveParams

type BlocklistRemoveParams struct {
	// A person verification session of your application. Deleted sessions are
	// refused. Required.
	SessionID string `json:"session_id"`

	// Lift the block on the session's face.
	UnblockFace Opt[bool] `json:"unblock_face"`

	// Lift the block on the session's identity document.
	UnblockDocument Opt[bool] `json:"unblock_document"`

	// Lift the block on the session's phone number.
	UnblockPhone Opt[bool] `json:"unblock_phone"`

	// Lift the block on the session's email address.
	UnblockEmail Opt[bool] `json:"unblock_email"`
}

BlocklistRemoveParams holds the parameters of Client.Blocklist.Remove.

func (BlocklistRemoveParams) MarshalJSON

func (r BlocklistRemoveParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type BlocklistRemoveResponse

type BlocklistRemoveResponse struct {
	// Always `Successfully removed from blocklist.`
	Message string `json:"message"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BlocklistRemoveResponse is a response object.

func (*BlocklistRemoveResponse) UnmarshalJSON

func (r *BlocklistRemoveResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BlocklistRemoveResponse leniently.

type BlocklistService

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

BlocklistService holds the blocklist operations. Use it through Client.Blocklist.

func (*BlocklistService) Add

Add: Add session items to the blocklist.

Blocklists the face, identity document, phone number or email address of one person verification session of the application. For each selected type, Didit takes the session's most recent record, flags it as blocklisted and adds an entry linked to the session to the matching system blocklist (`added_by: "api"`), so new sessions with a matching face, document number, phone number or email address are declined. Every selected item is checked first, so if one is missing nothing is blocklisted; repeating the call for an item already listed keeps its single entry and refreshes `blocklisted_at`. The session itself and sessions that already finished are not changed. A scoped API key needs `workflows: write`.

POST /v3/blocklist/add/

func (*BlocklistService) List

List: List blocklisted items.

Returns one paginated feed of the faces, identity documents, phone numbers and email addresses of the application's verification sessions that are currently blocklisted, newest `blocklisted_at` first; filter with `item_type`. Items of deleted sessions are not included. The feed covers records blocklisted from a session (with [Add session items to the blocklist](https://docs.didit.me/management-api/blocklist/add), from the console, or by a list entry created from a session); values added to a list by hand, uploaded faces, faces from a document-capture selfie and the other entry types are read with [List list entries](https://docs.didit.me/management-api/lists/list-entries). `face_image` and `front_image` are short-lived signed URLs, and a scoped API key without `media: read` receives `null`. A scoped API key needs `workflows: read`.

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/blocklist/

func (*BlocklistService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*BlocklistService) Remove

Remove: Remove session items from the blocklist.

Lifts the block on the face, identity document, phone number or email address of one person verification session of the application. For each selected type, Didit takes the session's most recent record, clears its blocklisted flag and deletes the system blocklist entries created from that record, so it no longer declines new sessions. Entries added to a list by value are not touched: find them with [List list entries](https://docs.didit.me/management-api/lists/list-entries) and delete them with [Delete a list entry](https://docs.didit.me/management-api/lists/delete-entry). Unblocking a record that is not blocklisted succeeds and changes nothing, and sessions that already finished are not changed. A scoped API key needs `workflows: write`.

POST /v3/blocklist/remove/

type BlocklistedItem

type BlocklistedItem struct {
	// What was blocklisted.
	Type BlocklistedItemType `json:"type"`

	// Verification session the item belongs to.
	SessionID string `json:"session_id"`

	// Application-scoped number of that session, as shown in the console.
	SessionNumber int64 `json:"session_number"`

	// When the item was last blocklisted.
	BlocklistedAt time.Time `json:"blocklisted_at"`

	// Face items: short-lived signed URL, issued again on every call; `null` for a
	// scoped API key without `media: read`. Also `null` when no reference image is
	// stored.
	FaceImage string `json:"face_image"`

	// Document items: document type code, for example `P` (passport), `ID`
	// (national ID), `DL` (driver's license) or `RP` (residence permit).
	DocumentType string `json:"document_type"`

	// Document items: the document number, or the personal number when the document
	// has none.
	DocumentNumber string `json:"document_number"`

	// Document items: front image of the document, short-lived signed URL, issued
	// again on every call; `null` for a scoped API key without `media: read`.
	FrontImage string `json:"front_image"`

	// Phone items: the phone number in E.164.
	PhoneNumber string `json:"phone_number"`

	// Phone items: ISO 3166-1 alpha-2 country of the number.
	CountryCode string `json:"country_code"`

	// Email items: the email address.
	Email string `json:"email"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BlocklistedItem: One blocklisted face, identity document, phone number or email address of a verification session. Fields that do not apply to the item's `type` are `null`.

func (*BlocklistedItem) UnmarshalJSON

func (r *BlocklistedItem) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BlocklistedItem leniently.

type BlocklistedItemType

type BlocklistedItemType string

BlocklistedItemType: What was blocklisted.

BlocklistedItemType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BlocklistedItemTypeFace     BlocklistedItemType = "face"
	BlocklistedItemTypeDocument BlocklistedItemType = "document"
	BlocklistedItemTypePhone    BlocklistedItemType = "phone"
	BlocklistedItemTypeEmail    BlocklistedItemType = "email"
)

Known values of BlocklistedItemType.

type BrandingCustomization

type BrandingCustomization struct {
	ColorPrimary        string `json:"color_primary"`
	ColorSecondary      string `json:"color_secondary"`
	ColorBackground     string `json:"color_background"`
	ColorPanel          string `json:"color_panel"`
	ColorPanel10        string `json:"color_panel_10"`
	ColorOnPanel1       string `json:"color_on_panel_1"`
	ColorOnPanel2       string `json:"color_on_panel_2"`
	ColorOnBackground   string `json:"color_on_background"`
	ColorButton1        string `json:"color_button_1"`
	ColorButton2        string `json:"color_button_2"`
	ColorButtonText1    string `json:"color_button_text_1"`
	ColorButtonText2    string `json:"color_button_text_2"`
	ColorPillText       string `json:"color_pill_text"`
	BorderRadiusPanel   int64  `json:"border_radius_panel"`
	BorderRadiusButtons int64  `json:"border_radius_buttons"`
	FontFamily          string `json:"font_family"`
	FontWeight          string `json:"font_weight"`

	// Read-only. Resolved Google Fonts stylesheet URL for the selected family.
	FontURL string `json:"font_url"`

	// Read-only URL of the square logo. Upload via `image_square`.
	LogoSquare string `json:"logo_square"`

	// Read-only URL of the rectangular logo. Upload via `image_rectangular`.
	LogoRectangular string `json:"logo_rectangular"`

	// Read-only. Temporary signed URL of the rectangular logo for dark mode, shown
	// on a dark background. `null` when no dark logo is set or rectangular logos
	// are not shown for your account. Upload it with `image_rectangular_dark`.
	LogoRectangularDark string `json:"logo_rectangular_dark"`

	// Read-only URL of the favicon. Upload via `image_favicon`.
	Favicon               string `json:"favicon"`
	AppPublicName         string `json:"app_public_name"`
	PrivacyPolicyURL      string `json:"privacy_policy_url"`
	SkipWelcomeScreen     bool   `json:"skip_welcome_screen"`
	DisableLoginWithDidit bool   `json:"disable_login_with_didit"`
	HideProgressBar       bool   `json:"hide_progress_bar"`
	CallbackSeconds       int64  `json:"callback_seconds"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BrandingCustomization: White-label branding for an application: colors, fonts, radii, logo URLs and UI/UX options. Logo URLs are read-only (set them by uploading images). Custom domain and white-label email are not included.

func (*BrandingCustomization) UnmarshalJSON

func (r *BrandingCustomization) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BrandingCustomization leniently.

type BusinessDetailItem

type BusinessDetailItem struct {
	// Didit's stable internal UUID for this business.
	DiditInternalID string `json:"didit_internal_id"`

	// Your unique identifier for this business (passed when creating sessions).
	// This can be null when no vendor identifier was supplied.
	VendorData string `json:"vendor_data"`

	// Custom display name set by you
	DisplayName string `json:"display_name"`

	// Official legal name from registry or manual entry
	LegalName string `json:"legal_name"`

	// Company registration or incorporation number
	RegistrationNumber string `json:"registration_number"`

	// Country of incorporation (ISO 3166-1 alpha-2, e.g. `GB`, `US`).
	CountryCode string `json:"country_code"`

	// Best available name: display_name if set, otherwise legal_name
	EffectiveName string `json:"effective_name"`

	// Lifecycle status of the business record (NOT a session status). `ACTIVE` is
	// the default, `FLAGGED` marks it for manual attention, `BLOCKED` prevents new
	// sessions for this `vendor_data`.
	Status BusinessDetailItemStatus `json:"status"`

	// Total number of verification sessions for this business
	SessionCount int64 `json:"session_count"`

	// Number of approved sessions
	ApprovedCount int64 `json:"approved_count"`

	// Number of declined sessions
	DeclinedCount int64 `json:"declined_count"`

	// Number of sessions in review
	InReviewCount int64 `json:"in_review_count"`

	// Aggregated per-feature status across all of this business's KYB sessions.
	// Currently the only key is `KYB` (the registry company check status). Possible
	// values: `Approved`, `Declined`, `In Review`, `Not Finished`, `Resub
	// Requested`.
	Features map[string]any `json:"features"`

	// Same data as `features`, as an ordered array of `{feature, status}` objects.
	FeaturesList []BusinessDetailItemFeaturesList `json:"features_list"`

	// Timestamp of the most recent session
	LastSessionAt time.Time `json:"last_session_at"`

	// Timestamp of the first session
	FirstSessionAt time.Time `json:"first_session_at"`

	// Timestamp of the most recent activity (status change, session update, etc.)
	LastActivityAt time.Time `json:"last_activity_at"`

	// Tags assigned to this business
	Tags      []BusinessDetailItemTags `json:"tags"`
	CreatedAt time.Time                `json:"created_at"`

	// Custom metadata JSON you attached to this business. Defaults to `{}`.
	Metadata  map[string]any `json:"metadata"`
	UpdatedAt time.Time      `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessDetailItem: Full business detail. Extends BusinessListItem with metadata and updated_at.

func (*BusinessDetailItem) UnmarshalJSON

func (r *BusinessDetailItem) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BusinessDetailItem leniently.

type BusinessDetailItemFeaturesList

type BusinessDetailItemFeaturesList struct {
	Feature string `json:"feature"`
	Status  string `json:"status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessDetailItemFeaturesList is a response object.

func (*BusinessDetailItemFeaturesList) UnmarshalJSON

func (r *BusinessDetailItemFeaturesList) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BusinessDetailItemFeaturesList leniently.

type BusinessDetailItemStatus

type BusinessDetailItemStatus string

BusinessDetailItemStatus: Lifecycle status of the business record (NOT a session status). `ACTIVE` is the default, `FLAGGED` marks it for manual attention, `BLOCKED` prevents new sessions for this `vendor_data`.

BusinessDetailItemStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BusinessDetailItemStatusActive  BusinessDetailItemStatus = "ACTIVE"
	BusinessDetailItemStatusFlagged BusinessDetailItemStatus = "FLAGGED"
	BusinessDetailItemStatusBlocked BusinessDetailItemStatus = "BLOCKED"
)

Known values of BusinessDetailItemStatus.

type BusinessDetailItemTags

type BusinessDetailItemTags struct {
	UUID  string `json:"uuid"`
	Name  string `json:"name"`
	Color string `json:"color"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessDetailItemTags is a response object.

func (*BusinessDetailItemTags) UnmarshalJSON

func (r *BusinessDetailItemTags) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BusinessDetailItemTags leniently.

type BusinessListItem

type BusinessListItem struct {
	// Didit's stable internal UUID for this business.
	DiditInternalID string `json:"didit_internal_id"`

	// Your unique identifier for this business (passed when creating sessions).
	// This can be null when no vendor identifier was supplied.
	VendorData string `json:"vendor_data"`

	// Custom display name set by you
	DisplayName string `json:"display_name"`

	// Official legal name from registry or manual entry
	LegalName string `json:"legal_name"`

	// Company registration or incorporation number
	RegistrationNumber string `json:"registration_number"`

	// Country of incorporation (ISO 3166-1 alpha-2, e.g. `GB`, `US`).
	CountryCode string `json:"country_code"`

	// Best available name: display_name if set, otherwise legal_name
	EffectiveName string `json:"effective_name"`

	// Lifecycle status of the business record (NOT a session status). `ACTIVE` is
	// the default, `FLAGGED` marks it for manual attention, `BLOCKED` prevents new
	// sessions for this `vendor_data`.
	Status BusinessListItemStatus `json:"status"`

	// Total number of verification sessions for this business
	SessionCount int64 `json:"session_count"`

	// Number of approved sessions
	ApprovedCount int64 `json:"approved_count"`

	// Number of declined sessions
	DeclinedCount int64 `json:"declined_count"`

	// Number of sessions in review
	InReviewCount int64 `json:"in_review_count"`

	// Aggregated per-feature status across all of this business's KYB sessions.
	// Currently the only key is `KYB` (the registry company check status). Possible
	// values: `Approved`, `Declined`, `In Review`, `Not Finished`, `Resub
	// Requested`.
	Features map[string]any `json:"features"`

	// Same data as `features`, as an ordered array of `{feature, status}` objects.
	FeaturesList []BusinessListItemFeaturesList `json:"features_list"`

	// Timestamp of the most recent session
	LastSessionAt time.Time `json:"last_session_at"`

	// Timestamp of the first session
	FirstSessionAt time.Time `json:"first_session_at"`

	// Timestamp of the most recent activity (status change, session update, etc.)
	LastActivityAt time.Time `json:"last_activity_at"`

	// Tags assigned to this business
	Tags      []BusinessListItemTags `json:"tags"`
	CreatedAt time.Time              `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessListItem: A verified business.

func (*BusinessListItem) UnmarshalJSON

func (r *BusinessListItem) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BusinessListItem leniently.

type BusinessListItemFeaturesList

type BusinessListItemFeaturesList struct {
	Feature string `json:"feature"`
	Status  string `json:"status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessListItemFeaturesList is a response object.

func (*BusinessListItemFeaturesList) UnmarshalJSON

func (r *BusinessListItemFeaturesList) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BusinessListItemFeaturesList leniently.

type BusinessListItemStatus

type BusinessListItemStatus string

BusinessListItemStatus: Lifecycle status of the business record (NOT a session status). `ACTIVE` is the default, `FLAGGED` marks it for manual attention, `BLOCKED` prevents new sessions for this `vendor_data`.

BusinessListItemStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BusinessListItemStatusActive  BusinessListItemStatus = "ACTIVE"
	BusinessListItemStatusFlagged BusinessListItemStatus = "FLAGGED"
	BusinessListItemStatusBlocked BusinessListItemStatus = "BLOCKED"
)

Known values of BusinessListItemStatus.

type BusinessListItemTags

type BusinessListItemTags struct {
	UUID  string `json:"uuid"`
	Name  string `json:"name"`
	Color string `json:"color"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessListItemTags is a response object.

func (*BusinessListItemTags) UnmarshalJSON

func (r *BusinessListItemTags) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BusinessListItemTags leniently.

type BusinessSessionsService

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

BusinessSessionsService holds the business_sessions operations. Use it through Client.BusinessSessions.

func (*BusinessSessionsService) ListNetworks

func (r *BusinessSessionsService) ListNetworks(ctx context.Context, businessSessionID string, opts ...option.RequestOption) (*EntityNetworkMembershipList, error)

ListNetworks: List networks for a business session.

List the networks the business session's vendor business belongs to.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/business-sessions/{business_session_id}/networks/

type BusinessesBatchDeleteParams

type BusinessesBatchDeleteParams struct {
	// Your own identifiers to delete, matched exactly as sent.
	VendorDataList Opt[[]string] `json:"vendor_data_list"`

	// Didit's internal UUIDs (`didit_internal_id`) to delete.
	DiditInternalIDList Opt[[]string] `json:"didit_internal_id_list"`

	// If `true`, deletes every business in the application. Cannot be combined with
	// the list selectors.
	DeleteAll Opt[bool] `json:"delete_all"`
}

BusinessesBatchDeleteParams holds the parameters of Client.Businesses.BatchDelete.

func (BusinessesBatchDeleteParams) MarshalJSON

func (r BusinessesBatchDeleteParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type BusinessesBatchDeleteResponse

type BusinessesBatchDeleteResponse struct {
	// Number of businesses deleted (excludes vendor_data values that didn't match
	// anything).
	Deleted int64 `json:"deleted"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessesBatchDeleteResponse is a response object.

func (*BusinessesBatchDeleteResponse) UnmarshalJSON

func (r *BusinessesBatchDeleteResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BusinessesBatchDeleteResponse leniently.

type BusinessesCreateParams

type BusinessesCreateParams struct {
	// Your unique identifier for this business (free-form string, NOT a UUID).
	// Optional but strongly recommended. When provided, must be unique among
	// non-deleted businesses for the application; matched exactly as sent.
	VendorData Opt[string] `json:"vendor_data"`

	// Friendly display name shown in the console (takes precedence over
	// `legal_name` for UI display).
	DisplayName Opt[string] `json:"display_name"`

	// Official legal name of the company.
	LegalName Opt[string] `json:"legal_name"`

	// Company registration or incorporation number.
	RegistrationNumber Opt[string] `json:"registration_number"`

	// Country of incorporation (ISO 3166-1 alpha-2, e.g. `GB`, `US`).
	CountryCode Opt[string] `json:"country_code"`

	// Initial lifecycle status. Defaults to `ACTIVE`.
	Status Opt[BusinessesCreateParamsStatus] `json:"status"`

	// Arbitrary JSON object you attach to the business. Defaults to `{}`.
	Metadata Opt[map[string]any] `json:"metadata"`
}

BusinessesCreateParams holds the parameters of Client.Businesses.Create.

func (BusinessesCreateParams) MarshalJSON

func (r BusinessesCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type BusinessesCreateParamsStatus

type BusinessesCreateParamsStatus string

BusinessesCreateParamsStatus: Initial lifecycle status. Defaults to `ACTIVE`.

BusinessesCreateParamsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BusinessesCreateParamsStatusActive  BusinessesCreateParamsStatus = "ACTIVE"
	BusinessesCreateParamsStatusFlagged BusinessesCreateParamsStatus = "FLAGGED"
	BusinessesCreateParamsStatusBlocked BusinessesCreateParamsStatus = "BLOCKED"
)

Known values of BusinessesCreateParamsStatus.

type BusinessesListParams

type BusinessesListParams struct {
	// Page size. Defaults to 50 when omitted. There is no enforced maximum, but
	// keep pages small for latency.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based offset of the first record to return. Prefer following the `next`
	// URL from the previous page over computing this by hand.
	Offset Opt[int64] `json:"-" query:"offset"`
}

BusinessesListParams holds the parameters of Client.Businesses.List.

func (BusinessesListParams) MarshalJSON

func (r BusinessesListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type BusinessesService

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

BusinessesService holds the businesses operations. Use it through Client.Businesses.

func (*BusinessesService) BatchDelete

BatchDelete: Batch delete businesses.

**Permanently delete** businesses - this cannot be undone. For blocking prefer [Update Business Status](#patch-/v3/businesses/-vendor_data-/update-status/) with `BLOCKED`.

POST /v3/businesses/delete/

func (*BusinessesService) Create

Create: Create business.

Pre-create a [business](/entities/businesses) *without* a KYB session. All fields are optional, but you should always send `vendor_data` - without it the record cannot be linked to sessions or transactions. When provided, `vendor_data` must be unique among non-deleted businesses (exact match; conflicts return 400). Not idempotent.

POST /v3/businesses/create/

func (*BusinessesService) GenerateSessionPDF

func (r *BusinessesService) GenerateSessionPDF(ctx context.Context, businessSessionID string, opts ...option.RequestOption) (*http.Response, error)

GenerateSessionPDF: Download a business session PDF report.

Render the PDF report of one Business Verification (KYB) session: company registry data, key people and beneficial owners, documents, AML results and the other workflow features, plus the session's tags and review activity. With white-label customization on, the report carries your logo and privacy policy URL. The body is the PDF itself (`application/pdf`), not JSON.

The session must be `Approved`, `Declined` or `In Review`; any other status returns `403`, so wait for the `status.updated` [webhook](https://docs.didit.me/integration/webhooks) first. The report is rendered on every call and nothing is billed, so store the file instead of fetching it repeatedly. `GET /v3/session/{sessionId}/generate-pdf/` renders the same kind of report by session ID alone.

A PDF report counts as media: a scoped API key needs `businesses: read` and `media: read`, and a key limited to some workflows or to approved sessions cannot call it.

The response is a file (application/pdf). Read it from the returned response's body and close it.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/businesses/{business_session_id}/pdf/

func (*BusinessesService) List

List: List businesses.

List [businesses](/entities/businesses) Didit assembles from KYB sessions sharing the same `vendor_data` (free-form string, NOT a UUID), plus businesses created via the API. Paginated, ordered by `last_session_at` desc. This endpoint does not support filtering or search parameters - fetch pages and filter client-side.

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/businesses/

func (*BusinessesService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*BusinessesService) ListNetworks

func (r *BusinessesService) ListNetworks(ctx context.Context, vendorBusinessUUID string, opts ...option.RequestOption) (*EntityNetworkMembershipList, error)

ListNetworks: List networks for a business.

List the networks a vendor business belongs to.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/businesses/{vendor_business_uuid}/networks/

func (*BusinessesService) Retrieve

func (r *BusinessesService) Retrieve(ctx context.Context, vendorData string, opts ...option.RequestOption) (*BusinessDetailItem, error)

Retrieve: Get business.

Fetch one [business](/entities/businesses) by `vendor_data` (exact match). Adds `metadata` and `updated_at` to the list view. Deleted businesses return 404.

GET /v3/businesses/{vendor_data}/

func (*BusinessesService) RetrieveOngoingMonitoringJob

func (r *BusinessesService) RetrieveOngoingMonitoringJob(ctx context.Context, jobID string, opts ...option.RequestOption) (*OngoingMonitoringJob, error)

RetrieveOngoingMonitoringJob: Get AML ongoing monitoring job.

Progress and per-outcome counters of a monitoring toggle job. Poll every couple of seconds while status is PENDING or PROCESSING.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/vendor-businesses/toggle-ongoing-monitoring/{job_id}/

func (*BusinessesService) RetrieveSessionOngoingMonitoringJob

func (r *BusinessesService) RetrieveSessionOngoingMonitoringJob(ctx context.Context, jobID string, opts ...option.RequestOption) (*OngoingMonitoringJob, error)

RetrieveSessionOngoingMonitoringJob: Get AML ongoing monitoring job.

Progress and per-outcome counters of a monitoring toggle job. Poll every couple of seconds while status is PENDING or PROCESSING.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/businesses/toggle-ongoing-monitoring/{job_id}/

func (*BusinessesService) SetAMLMonitoring

SetAMLMonitoring: Enable or disable AML ongoing monitoring for businesses.

Turns AML ongoing monitoring on or off for the selected businesses, with the same semantics as the Business Console. Exactly one monitored AML screening is kept per business, so a profile that verified several times is monitored and billed once; disabling turns monitoring off across all of the profile's screenings. Businesses without any AML screening are screened first (billed as a regular AML screening) when they have the legal or display name needed; otherwise they are reported as `skipped_no_identity_data`.

Set `estimate_only: true` to preview counts and costs without writing anything. Selections of 20 profiles or fewer resolve inline and return `200` with the completed job; larger selections return `202` and run in the background - poll [Get AML monitoring job](#get-/v3/aml-monitoring/jobs/-job_id-/) with the returned `job_id`. Enabling is refused with `403` when the organization balance does not cover the estimate. Identifiers that match nothing are listed in `unmatched` and never fail the request: a selection that matches nothing completes as an empty job (`total` 0), the same convention as the batch delete endpoints.

POST /v3/businesses/aml-monitoring/

func (*BusinessesService) SetOngoingMonitoring

SetOngoingMonitoring: Toggle AML ongoing monitoring for businesses.

Business-level equivalent of the user toggle: one monitored AML screening per business, with businesses lacking any AML screening screened first (company entity). Same estimate_only, inline fast-path and async job contract.

The organization and application ids come from the client options.

PATCH /v3/organization/{organization_id}/application/{application_id}/vendor-businesses/toggle-ongoing-monitoring/

func (*BusinessesService) SetSessionOngoingMonitoring

SetSessionOngoingMonitoring: Toggle AML ongoing monitoring for business sessions.

Session-level toggle for KYB verifications, addressed by session number. Sessions without an AML screening get one created and attached to the session itself. Same estimate_only, inline fast-path and async job contract as the user-level endpoints. Replaces the legacy synchronous behavior that skipped sessions without an AML screening.

The organization and application ids come from the client options.

PATCH /v3/organization/{organization_id}/application/{application_id}/businesses/toggle-ongoing-monitoring/

func (*BusinessesService) Update

Update: Update business.

Partial update of a business: `display_name`, `legal_name`, `registration_number`, `country_code`, `status`, `metadata`. `metadata` fully replaces. Setting `status` to `BLOCKED` adds the `vendor_data` to the system blocklist; moving away from `BLOCKED` removes that entry. Every edit is recorded in the company's activity: a status change with the optional `reason`, and a change to `display_name`, `legal_name`, `registration_number`, `country_code` or `metadata` as a profile update.

PATCH /v3/businesses/{vendor_data}/

func (*BusinessesService) UpdateStatus

UpdateStatus: Update business status.

Flip only the lifecycle `status` of a business: `ACTIVE`, `FLAGGED` or `BLOCKED` (not session statuses). `BLOCKED` adds the `vendor_data` to the system blocklist; moving away from `BLOCKED` removes that entry. Each change is recorded in the company's activity, with the optional `reason`. Sending the current status changes nothing and records no `reason`. The `business.status.updated` webhook does not carry `reason`.

PATCH /v3/businesses/{vendor_data}/update-status/

type BusinessesSetAMLMonitoringParams

type BusinessesSetAMLMonitoringParams struct {
	// true to enable monitoring, false to disable it. Required.
	IsEnabled bool `json:"is_enabled"`

	// When true, returns the cost estimate and performs no writes - no screening,
	// no billing, no job.
	EstimateOnly Opt[bool] `json:"estimate_only"`

	// Your own identifiers of the businesses to toggle, matched exactly as sent.
	VendorDataList Opt[[]string] `json:"vendor_data_list"`

	// Didit internal ids of the businesses to toggle - the `didit_internal_id`
	// returned by the create, get and list endpoints.
	DiditInternalIDList Opt[[]string] `json:"didit_internal_id_list"`
}

BusinessesSetAMLMonitoringParams holds the parameters of Client.Businesses.SetAMLMonitoring.

func (BusinessesSetAMLMonitoringParams) MarshalJSON

func (r BusinessesSetAMLMonitoringParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type BusinessesSetAMLMonitoringResponse

type BusinessesSetAMLMonitoringResponse struct {
	JobID  string                                   `json:"job_id"`
	Status BusinessesSetAMLMonitoringResponseStatus `json:"status"`

	// true when the job enables monitoring, false when it disables it.
	IsEnabled bool `json:"is_enabled"`

	// Which profile family the job toggles.
	TargetType BusinessesSetAMLMonitoringResponseTargetType `json:"target_type"`

	// Profiles the job processes.
	Total int64 `json:"total"`

	// Profiles processed so far.
	Processed int64 `json:"processed"`

	// Per-record outcome counters. Every selected profile resolves to exactly one
	// counter; nothing is silently skipped.
	Outcomes BusinessesSetAMLMonitoringResponseOutcomes `json:"outcomes"`

	// One entry per processed profile, in processing order. Grows while the job
	// runs; complete once status is COMPLETED. Recorded for jobs started through
	// the API.
	Results []BusinessesSetAMLMonitoringResponseResults `json:"results"`

	// Generic failure message when status is FAILED; the detailed cause is kept on
	// the platform side.
	Error       string    `json:"error"`
	CreatedAt   time.Time `json:"created_at"`
	CompletedAt time.Time `json:"completed_at"`

	// Cost preview. Returned directly when estimate_only is true (nothing is
	// written).
	Estimate BusinessesSetAMLMonitoringResponseEstimate `json:"estimate"`

	// Identifiers of the request that matched no profile in this application,
	// exactly as sent. They are not part of the job.
	Unmatched []string `json:"unmatched"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessesSetAMLMonitoringResponse is a response object.

func (*BusinessesSetAMLMonitoringResponse) UnmarshalJSON

func (r *BusinessesSetAMLMonitoringResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BusinessesSetAMLMonitoringResponse leniently.

type BusinessesSetAMLMonitoringResponseEstimate

type BusinessesSetAMLMonitoringResponseEstimate struct {
	// Profiles matched by the selection.
	UsersTotal int64 `json:"users_total"`

	// Profiles already monitored (nothing to do when enabling; these are what
	// disabling turns off).
	AlreadyEnabled int64 `json:"already_enabled"`

	// Profiles whose existing AML screening will be switched to monitored (no new
	// screening).
	WithExistingAML int64 `json:"with_existing_aml"`

	// Profiles without any AML screening that will be screened first (billed as a
	// regular AML screening).
	NeedingScreening int64 `json:"needing_screening"`

	// Profiles that cannot be screened because identity data is missing.
	SkippedNoIdentityData int64 `json:"skipped_no_identity_data"`

	// Blocked users that will be skipped (always 0 for businesses).
	SkippedBlocked int64 `json:"skipped_blocked"`

	// One-time cost of the new screenings.
	EstimatedScreeningCostUsd float64 `json:"estimated_screening_cost_usd"`

	// Yearly monitoring cost of the profiles that will become monitored.
	EstimatedAnnualMonitoringCostUsd float64 `json:"estimated_annual_monitoring_cost_usd"`

	// Whether the organization balance covers the screening plus the first year of
	// monitoring.
	BalanceSufficient bool `json:"balance_sufficient"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessesSetAMLMonitoringResponseEstimate: Cost preview. Returned directly when estimate_only is true (nothing is written).

func (*BusinessesSetAMLMonitoringResponseEstimate) UnmarshalJSON

func (r *BusinessesSetAMLMonitoringResponseEstimate) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BusinessesSetAMLMonitoringResponseEstimate leniently.

type BusinessesSetAMLMonitoringResponseOutcomes

type BusinessesSetAMLMonitoringResponseOutcomes struct {
	// Monitoring enabled on an existing AML screening.
	Enabled int64 `json:"enabled"`

	// A new AML screening was created (billed) and monitoring enabled on it.
	ScreenedAndEnabled int64 `json:"screened_and_enabled"`

	// Monitoring was already active; nothing changed and nothing was billed.
	AlreadyEnabled int64 `json:"already_enabled"`

	// Monitoring turned off across every AML screening of the profile.
	Disabled int64 `json:"disabled"`

	// Skipped: the profile lacks the full name, date of birth and country (users)
	// or a name (businesses) needed to screen.
	SkippedNoIdentityData int64 `json:"skipped_no_identity_data"`

	// Skipped: the user is blocked.
	SkippedBlocked int64 `json:"skipped_blocked"`

	// Skipped: sandbox application, no screening is created.
	SkippedSandbox int64 `json:"skipped_sandbox"`

	// The screening could not be completed; retry later.
	FailedProvider int64 `json:"failed_provider"`

	// Balance ran out while the job was running.
	FailedInsufficientBalance int64 `json:"failed_insufficient_balance"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessesSetAMLMonitoringResponseOutcomes: Per-record outcome counters. Every selected profile resolves to exactly one counter; nothing is silently skipped.

func (*BusinessesSetAMLMonitoringResponseOutcomes) UnmarshalJSON

func (r *BusinessesSetAMLMonitoringResponseOutcomes) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BusinessesSetAMLMonitoringResponseOutcomes leniently.

type BusinessesSetAMLMonitoringResponseResults

type BusinessesSetAMLMonitoringResponseResults struct {
	// Didit internal id of the profile.
	DiditInternalID string `json:"didit_internal_id"`

	// Your own identifier for the profile.
	VendorData string                                           `json:"vendor_data"`
	Outcome    BusinessesSetAMLMonitoringResponseResultsOutcome `json:"outcome"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessesSetAMLMonitoringResponseResults is a response object.

func (*BusinessesSetAMLMonitoringResponseResults) UnmarshalJSON

func (r *BusinessesSetAMLMonitoringResponseResults) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BusinessesSetAMLMonitoringResponseResults leniently.

type BusinessesSetAMLMonitoringResponseResultsOutcome

type BusinessesSetAMLMonitoringResponseResultsOutcome string

BusinessesSetAMLMonitoringResponseResultsOutcome is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BusinessesSetAMLMonitoringResponseResultsOutcomeEnabled                   BusinessesSetAMLMonitoringResponseResultsOutcome = "enabled"
	BusinessesSetAMLMonitoringResponseResultsOutcomeScreenedAndEnabled        BusinessesSetAMLMonitoringResponseResultsOutcome = "screened_and_enabled"
	BusinessesSetAMLMonitoringResponseResultsOutcomeAlreadyEnabled            BusinessesSetAMLMonitoringResponseResultsOutcome = "already_enabled"
	BusinessesSetAMLMonitoringResponseResultsOutcomeDisabled                  BusinessesSetAMLMonitoringResponseResultsOutcome = "disabled"
	BusinessesSetAMLMonitoringResponseResultsOutcomeSkippedNoIdentityData     BusinessesSetAMLMonitoringResponseResultsOutcome = "skipped_no_identity_data"
	BusinessesSetAMLMonitoringResponseResultsOutcomeSkippedBlocked            BusinessesSetAMLMonitoringResponseResultsOutcome = "skipped_blocked"
	BusinessesSetAMLMonitoringResponseResultsOutcomeSkippedSandbox            BusinessesSetAMLMonitoringResponseResultsOutcome = "skipped_sandbox"
	BusinessesSetAMLMonitoringResponseResultsOutcomeFailedProvider            BusinessesSetAMLMonitoringResponseResultsOutcome = "failed_provider"
	BusinessesSetAMLMonitoringResponseResultsOutcomeFailedInsufficientBalance BusinessesSetAMLMonitoringResponseResultsOutcome = "failed_insufficient_balance"
)

Known values of BusinessesSetAMLMonitoringResponseResultsOutcome.

type BusinessesSetAMLMonitoringResponseStatus

type BusinessesSetAMLMonitoringResponseStatus string

BusinessesSetAMLMonitoringResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BusinessesSetAMLMonitoringResponseStatusPending    BusinessesSetAMLMonitoringResponseStatus = "PENDING"
	BusinessesSetAMLMonitoringResponseStatusProcessing BusinessesSetAMLMonitoringResponseStatus = "PROCESSING"
	BusinessesSetAMLMonitoringResponseStatusCompleted  BusinessesSetAMLMonitoringResponseStatus = "COMPLETED"
	BusinessesSetAMLMonitoringResponseStatusFailed     BusinessesSetAMLMonitoringResponseStatus = "FAILED"
)

Known values of BusinessesSetAMLMonitoringResponseStatus.

type BusinessesSetAMLMonitoringResponseTargetType

type BusinessesSetAMLMonitoringResponseTargetType string

BusinessesSetAMLMonitoringResponseTargetType: Which profile family the job toggles.

BusinessesSetAMLMonitoringResponseTargetType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BusinessesSetAMLMonitoringResponseTargetTypeUser     BusinessesSetAMLMonitoringResponseTargetType = "user"
	BusinessesSetAMLMonitoringResponseTargetTypeBusiness BusinessesSetAMLMonitoringResponseTargetType = "business"
)

Known values of BusinessesSetAMLMonitoringResponseTargetType.

type BusinessesSetOngoingMonitoringResponse

type BusinessesSetOngoingMonitoringResponse struct {
	JobID     string                                       `json:"job_id"`
	Status    BusinessesSetOngoingMonitoringResponseStatus `json:"status"`
	IsEnabled bool                                         `json:"is_enabled"`
	Total     int64                                        `json:"total"`
	Processed int64                                        `json:"processed"`

	// Per-entity outcome counters. Nothing is silently skipped: every requested
	// entity resolves to exactly one counter.
	Outcomes BusinessesSetOngoingMonitoringResponseOutcomes `json:"outcomes"`
	Error    string                                         `json:"error"`

	// Cost preview. Returned directly when estimate_only is true (no writes are
	// performed).
	Estimate BusinessesSetOngoingMonitoringResponseEstimate `json:"estimate"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessesSetOngoingMonitoringResponse is a response object.

func (*BusinessesSetOngoingMonitoringResponse) UnmarshalJSON

func (r *BusinessesSetOngoingMonitoringResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BusinessesSetOngoingMonitoringResponse leniently.

type BusinessesSetOngoingMonitoringResponseEstimate

type BusinessesSetOngoingMonitoringResponseEstimate struct {
	// Entities in the selection.
	UsersTotal     int64 `json:"users_total"`
	AlreadyEnabled int64 `json:"already_enabled"`

	// Entities whose existing AML screening will be switched to monitored.
	WithExistingAML int64 `json:"with_existing_aml"`

	// Entities without any AML screening that will be screened first (billed).
	NeedingScreening                 int64   `json:"needing_screening"`
	SkippedNoIdentityData            int64   `json:"skipped_no_identity_data"`
	SkippedBlocked                   int64   `json:"skipped_blocked"`
	EstimatedScreeningCostUsd        float64 `json:"estimated_screening_cost_usd"`
	EstimatedAnnualMonitoringCostUsd float64 `json:"estimated_annual_monitoring_cost_usd"`
	BalanceSufficient                bool    `json:"balance_sufficient"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessesSetOngoingMonitoringResponseEstimate: Cost preview. Returned directly when estimate_only is true (no writes are performed).

func (*BusinessesSetOngoingMonitoringResponseEstimate) UnmarshalJSON

UnmarshalJSON decodes BusinessesSetOngoingMonitoringResponseEstimate leniently.

type BusinessesSetOngoingMonitoringResponseOutcomes

type BusinessesSetOngoingMonitoringResponseOutcomes struct {
	// Monitoring enabled on an existing AML screening.
	Enabled int64 `json:"enabled"`

	// A new AML screening was created (billed) and monitoring enabled.
	ScreenedAndEnabled int64 `json:"screened_and_enabled"`

	// Monitoring was already active (legacy duplicate rows are consolidated).
	AlreadyEnabled int64 `json:"already_enabled"`

	// Monitoring disabled on every AML row of the entity.
	Disabled int64 `json:"disabled"`

	// Skipped: no full name + date of birth + country available to screen.
	SkippedNoIdentityData int64 `json:"skipped_no_identity_data"`

	// Skipped: the user is blocked.
	SkippedBlocked int64 `json:"skipped_blocked"`

	// Skipped: sandbox application.
	SkippedSandbox int64 `json:"skipped_sandbox"`

	// The screening provider call failed.
	FailedProvider int64 `json:"failed_provider"`

	// Balance ran out mid-job.
	FailedInsufficientBalance int64 `json:"failed_insufficient_balance"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessesSetOngoingMonitoringResponseOutcomes: Per-entity outcome counters. Nothing is silently skipped: every requested entity resolves to exactly one counter.

func (*BusinessesSetOngoingMonitoringResponseOutcomes) UnmarshalJSON

UnmarshalJSON decodes BusinessesSetOngoingMonitoringResponseOutcomes leniently.

type BusinessesSetOngoingMonitoringResponseStatus

type BusinessesSetOngoingMonitoringResponseStatus string

BusinessesSetOngoingMonitoringResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BusinessesSetOngoingMonitoringResponseStatusPending    BusinessesSetOngoingMonitoringResponseStatus = "PENDING"
	BusinessesSetOngoingMonitoringResponseStatusProcessing BusinessesSetOngoingMonitoringResponseStatus = "PROCESSING"
	BusinessesSetOngoingMonitoringResponseStatusCompleted  BusinessesSetOngoingMonitoringResponseStatus = "COMPLETED"
	BusinessesSetOngoingMonitoringResponseStatusFailed     BusinessesSetOngoingMonitoringResponseStatus = "FAILED"
)

Known values of BusinessesSetOngoingMonitoringResponseStatus.

type BusinessesSetSessionOngoingMonitoringParams

type BusinessesSetSessionOngoingMonitoringParams struct {
	// true to enable monitoring, false to disable it. Required.
	IsEnabled bool `json:"is_enabled"`

	// When true, returns the cost estimate and performs no writes.
	EstimateOnly Opt[bool] `json:"estimate_only"`

	// Apply to every entity of the application (scoped by the filter_* params when
	// present).
	UpdateAll      Opt[bool]     `json:"update_all"`
	FilterSearch   Opt[string]   `json:"filter_search"`
	FilterStatus   Opt[[]string] `json:"filter_status"`
	FilterCountry  Opt[string]   `json:"filter_country"`
	FilterDateFrom Opt[string]   `json:"filter_date_from"`
	FilterDateTo   Opt[string]   `json:"filter_date_to"`

	// Business session numbers to toggle. Required unless update_all (or the legacy
	// toggle_all alias) is true.
	SessionNumbers Opt[[]string] `json:"session_numbers"`

	// Legacy alias of update_all.
	ToggleAll        Opt[bool]   `json:"toggle_all"`
	FilterWorkflowID Opt[string] `json:"filter_workflow_id"`
}

BusinessesSetSessionOngoingMonitoringParams holds the parameters of Client.Businesses.SetSessionOngoingMonitoring.

func (BusinessesSetSessionOngoingMonitoringParams) MarshalJSON

MarshalJSON encodes the fields that are set.

type BusinessesSetSessionOngoingMonitoringResponse

type BusinessesSetSessionOngoingMonitoringResponse struct {
	JobID     string                                              `json:"job_id"`
	Status    BusinessesSetSessionOngoingMonitoringResponseStatus `json:"status"`
	IsEnabled bool                                                `json:"is_enabled"`
	Total     int64                                               `json:"total"`
	Processed int64                                               `json:"processed"`

	// Per-entity outcome counters. Nothing is silently skipped: every requested
	// entity resolves to exactly one counter.
	Outcomes BusinessesSetSessionOngoingMonitoringResponseOutcomes `json:"outcomes"`
	Error    string                                                `json:"error"`

	// Cost preview. Returned directly when estimate_only is true (no writes are
	// performed).
	Estimate BusinessesSetSessionOngoingMonitoringResponseEstimate `json:"estimate"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessesSetSessionOngoingMonitoringResponse is a response object.

func (*BusinessesSetSessionOngoingMonitoringResponse) UnmarshalJSON

func (r *BusinessesSetSessionOngoingMonitoringResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes BusinessesSetSessionOngoingMonitoringResponse leniently.

type BusinessesSetSessionOngoingMonitoringResponseEstimate

type BusinessesSetSessionOngoingMonitoringResponseEstimate struct {
	// Entities in the selection.
	UsersTotal     int64 `json:"users_total"`
	AlreadyEnabled int64 `json:"already_enabled"`

	// Entities whose existing AML screening will be switched to monitored.
	WithExistingAML int64 `json:"with_existing_aml"`

	// Entities without any AML screening that will be screened first (billed).
	NeedingScreening                 int64   `json:"needing_screening"`
	SkippedNoIdentityData            int64   `json:"skipped_no_identity_data"`
	SkippedBlocked                   int64   `json:"skipped_blocked"`
	EstimatedScreeningCostUsd        float64 `json:"estimated_screening_cost_usd"`
	EstimatedAnnualMonitoringCostUsd float64 `json:"estimated_annual_monitoring_cost_usd"`
	BalanceSufficient                bool    `json:"balance_sufficient"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessesSetSessionOngoingMonitoringResponseEstimate: Cost preview. Returned directly when estimate_only is true (no writes are performed).

func (*BusinessesSetSessionOngoingMonitoringResponseEstimate) UnmarshalJSON

UnmarshalJSON decodes BusinessesSetSessionOngoingMonitoringResponseEstimate leniently.

type BusinessesSetSessionOngoingMonitoringResponseOutcomes

type BusinessesSetSessionOngoingMonitoringResponseOutcomes struct {
	// Monitoring enabled on an existing AML screening.
	Enabled int64 `json:"enabled"`

	// A new AML screening was created (billed) and monitoring enabled.
	ScreenedAndEnabled int64 `json:"screened_and_enabled"`

	// Monitoring was already active (legacy duplicate rows are consolidated).
	AlreadyEnabled int64 `json:"already_enabled"`

	// Monitoring disabled on every AML row of the entity.
	Disabled int64 `json:"disabled"`

	// Skipped: no full name + date of birth + country available to screen.
	SkippedNoIdentityData int64 `json:"skipped_no_identity_data"`

	// Skipped: the user is blocked.
	SkippedBlocked int64 `json:"skipped_blocked"`

	// Skipped: sandbox application.
	SkippedSandbox int64 `json:"skipped_sandbox"`

	// The screening provider call failed.
	FailedProvider int64 `json:"failed_provider"`

	// Balance ran out mid-job.
	FailedInsufficientBalance int64 `json:"failed_insufficient_balance"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

BusinessesSetSessionOngoingMonitoringResponseOutcomes: Per-entity outcome counters. Nothing is silently skipped: every requested entity resolves to exactly one counter.

func (*BusinessesSetSessionOngoingMonitoringResponseOutcomes) UnmarshalJSON

UnmarshalJSON decodes BusinessesSetSessionOngoingMonitoringResponseOutcomes leniently.

type BusinessesSetSessionOngoingMonitoringResponseStatus

type BusinessesSetSessionOngoingMonitoringResponseStatus string

BusinessesSetSessionOngoingMonitoringResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BusinessesSetSessionOngoingMonitoringResponseStatusPending    BusinessesSetSessionOngoingMonitoringResponseStatus = "PENDING"
	BusinessesSetSessionOngoingMonitoringResponseStatusProcessing BusinessesSetSessionOngoingMonitoringResponseStatus = "PROCESSING"
	BusinessesSetSessionOngoingMonitoringResponseStatusCompleted  BusinessesSetSessionOngoingMonitoringResponseStatus = "COMPLETED"
	BusinessesSetSessionOngoingMonitoringResponseStatusFailed     BusinessesSetSessionOngoingMonitoringResponseStatus = "FAILED"
)

Known values of BusinessesSetSessionOngoingMonitoringResponseStatus.

type BusinessesUpdateParams

type BusinessesUpdateParams struct {
	// Friendly display name shown in the console (takes precedence over
	// `legal_name` for UI display).
	DisplayName Opt[string] `json:"display_name"`

	// Official legal name from registry or manual entry.
	LegalName Opt[string] `json:"legal_name"`

	// Company registration or incorporation number.
	RegistrationNumber Opt[string] `json:"registration_number"`

	// Country of incorporation (ISO 3166-1 alpha-2, e.g. `GB`, `US`).
	CountryCode Opt[string] `json:"country_code"`

	// Business lifecycle status. Setting `BLOCKED` automatically adds the
	// `vendor_data` to the system blocklist; flipping away from `BLOCKED` removes
	// that blocklist entry.
	Status Opt[BusinessesUpdateParamsStatus] `json:"status"`

	// Arbitrary JSON object you attach to the business. **Fully replaces** the
	// existing metadata on update - merge client-side if you only want to add keys.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Why the status changed. Recorded on the status-change entry of the company's
	// **Activity** in the Business Console, only when the status actually changes.
	// Webhooks do not carry it.
	Reason Opt[string] `json:"reason"`
}

BusinessesUpdateParams holds the parameters of Client.Businesses.Update.

func (BusinessesUpdateParams) MarshalJSON

func (r BusinessesUpdateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type BusinessesUpdateParamsStatus

type BusinessesUpdateParamsStatus string

BusinessesUpdateParamsStatus: Business lifecycle status. Setting `BLOCKED` automatically adds the `vendor_data` to the system blocklist; flipping away from `BLOCKED` removes that blocklist entry.

BusinessesUpdateParamsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BusinessesUpdateParamsStatusActive  BusinessesUpdateParamsStatus = "ACTIVE"
	BusinessesUpdateParamsStatusFlagged BusinessesUpdateParamsStatus = "FLAGGED"
	BusinessesUpdateParamsStatusBlocked BusinessesUpdateParamsStatus = "BLOCKED"
)

Known values of BusinessesUpdateParamsStatus.

type BusinessesUpdateStatusParams

type BusinessesUpdateStatusParams struct {
	// New lifecycle status. `BLOCKED` also adds the `vendor_data` to the system
	// blocklist. Required.
	Status BusinessesUpdateStatusParamsStatus `json:"status"`

	// Why the status changed. Recorded on the status-change entry of the company's
	// **Activity** in the Business Console, only when the status actually changes.
	// Webhooks do not carry it.
	Reason Opt[string] `json:"reason"`
}

BusinessesUpdateStatusParams holds the parameters of Client.Businesses.UpdateStatus.

func (BusinessesUpdateStatusParams) MarshalJSON

func (r BusinessesUpdateStatusParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type BusinessesUpdateStatusParamsStatus

type BusinessesUpdateStatusParamsStatus string

BusinessesUpdateStatusParamsStatus: New lifecycle status. `BLOCKED` also adds the `vendor_data` to the system blocklist.

BusinessesUpdateStatusParamsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	BusinessesUpdateStatusParamsStatusActive  BusinessesUpdateStatusParamsStatus = "ACTIVE"
	BusinessesUpdateStatusParamsStatusFlagged BusinessesUpdateStatusParamsStatus = "FLAGGED"
	BusinessesUpdateStatusParamsStatusBlocked BusinessesUpdateStatusParamsStatus = "BLOCKED"
)

Known values of BusinessesUpdateStatusParamsStatus.

type CaseActionActionEnum

type CaseActionActionEnum string

CaseActionActionEnum: * `set_status` - set_status

  • `add_tags` - add_tags
  • `add_note` - add_note
  • `add_to_blocklist` - add_to_blocklist

CaseActionActionEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseActionActionEnumSetStatus      CaseActionActionEnum = "set_status"
	CaseActionActionEnumAddTags        CaseActionActionEnum = "add_tags"
	CaseActionActionEnumAddNote        CaseActionActionEnum = "add_note"
	CaseActionActionEnumAddToBlocklist CaseActionActionEnum = "add_to_blocklist"
)

Known values of CaseActionActionEnum.

type CaseActionCaseActionReceipt

type CaseActionCaseActionReceipt struct {
	UUID            string               `json:"uuid"`
	ClientReference string               `json:"client_reference"`
	Action          string               `json:"action"`
	Status          CaseActionStatusEnum `json:"status"`
	Result          any                  `json:"result"`
	Error           string               `json:"error"`
	ActorEmail      string               `json:"actor_email"`
	Attempts        int64                `json:"attempts"`
	CreatedAt       time.Time            `json:"created_at"`
	UpdatedAt       time.Time            `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseActionCaseActionReceipt is a response object.

func (*CaseActionCaseActionReceipt) UnmarshalJSON

func (r *CaseActionCaseActionReceipt) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseActionCaseActionReceipt leniently.

type CaseActionCaseActionReceiptPage

type CaseActionCaseActionReceiptPage struct {
	Count      int64                         `json:"count"`
	NextOffset int64                         `json:"next_offset"`
	Results    []CaseActionCaseActionReceipt `json:"results"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseActionCaseActionReceiptPage is a response object.

func (*CaseActionCaseActionReceiptPage) UnmarshalJSON

func (r *CaseActionCaseActionReceiptPage) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseActionCaseActionReceiptPage leniently.

type CaseActionCaseEntityActionRequest

type CaseActionCaseEntityActionRequest struct {
	ClientReference Opt[string] `json:"client_reference"`
	Retry           Opt[bool]   `json:"retry"`

	// Required.
	Action CaseActionActionEnum `json:"action"`
	Status Opt[string]          `json:"status"`
	Tags   Opt[[]string]        `json:"tags"`
	Note   Opt[string]          `json:"note"`
}

CaseActionCaseEntityActionRequest is a request object.

func (CaseActionCaseEntityActionRequest) MarshalJSON

func (r CaseActionCaseEntityActionRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseActionCaseEntityActionResult

type CaseActionCaseEntityActionResult struct {
	Receipt        CaseActionCaseActionReceipt `json:"receipt"`
	EntityType     CaseActionEntityTypeEnum    `json:"entity_type"`
	EntityUUID     string                      `json:"entity_uuid"`
	Action         string                      `json:"action"`
	PreviousStatus string                      `json:"previous_status"`
	NewStatus      string                      `json:"new_status"`
	TagsAdded      []string                    `json:"tags_added"`
	CommentUUID    string                      `json:"comment_uuid"`
	Blocklisted    []string                    `json:"blocklisted"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseActionCaseEntityActionResult is a response object.

func (*CaseActionCaseEntityActionResult) UnmarshalJSON

func (r *CaseActionCaseEntityActionResult) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseActionCaseEntityActionResult leniently.

type CaseActionEntityTypeEnum

type CaseActionEntityTypeEnum string

CaseActionEntityTypeEnum: * `user` - user

  • `business` - business

CaseActionEntityTypeEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseActionEntityTypeEnumUser     CaseActionEntityTypeEnum = "user"
	CaseActionEntityTypeEnumBusiness CaseActionEntityTypeEnum = "business"
)

Known values of CaseActionEntityTypeEnum.

type CaseActionStatusEnum

type CaseActionStatusEnum string

CaseActionStatusEnum: * `APPLIED` - Applied

  • `FAILED` - Failed

CaseActionStatusEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseActionStatusEnumApplied CaseActionStatusEnum = "APPLIED"
	CaseActionStatusEnumFailed  CaseActionStatusEnum = "FAILED"
)

Known values of CaseActionStatusEnum.

type CaseAssignee

type CaseAssignee struct {
	UUID     string `json:"uuid"`
	FullName string `json:"full_name"`
	Email    string `json:"email"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseAssignee is a response object.

func (*CaseAssignee) UnmarshalJSON

func (r *CaseAssignee) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseAssignee leniently.

type CaseBlueprintDetail

type CaseBlueprintDetail struct {
	UUID                         string                              `json:"uuid"`
	Name                         string                              `json:"name"`
	Description                  string                              `json:"description"`
	AssignmentMethod             CaseBlueprintDetailAssignmentMethod `json:"assignment_method"`
	AssigneePool                 []string                            `json:"assignee_pool"`
	MaxActiveCases               int64                               `json:"max_active_cases"`
	EscalationEnabled            bool                                `json:"escalation_enabled"`
	TransferEnabled              bool                                `json:"transfer_enabled"`
	RequireResolutionNote        bool                                `json:"require_resolution_note"`
	IsActive                     bool                                `json:"is_active"`
	PresetKey                    string                              `json:"preset_key"`
	CreatedAt                    time.Time                           `json:"created_at"`
	EscalationBlueprint          string                              `json:"escalation_blueprint"`
	EscalationBlueprintName      string                              `json:"escalation_blueprint_name"`
	FourEyesCheckerBlueprint     string                              `json:"four_eyes_checker_blueprint"`
	FourEyesCheckerBlueprintName string                              `json:"four_eyes_checker_blueprint_name"`

	// The six togglable sections that drive which tabs and fields appear on the
	// case page. Unknown sections or keys are rejected.
	ContentConfig CaseBlueprintDetailContentConfig `json:"content_config"`

	// Connectors currently routing new cases into this blueprint.
	CreationSources []CaseBlueprintDetailCreationSources `json:"creation_sources"`

	// Other blueprints whose Escalation target points at this one.
	ReceivesEscalationFrom []CaseBlueprintDetailReceivesEscalationFrom `json:"receives_escalation_from"`
	UpdatedAt              time.Time                                   `json:"updated_at"`
	Version                int64                                       `json:"version"`
	DefaultDeadlineHours   int64                                       `json:"default_deadline_hours"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseBlueprintDetail is a response object.

func (*CaseBlueprintDetail) UnmarshalJSON

func (r *CaseBlueprintDetail) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseBlueprintDetail leniently.

type CaseBlueprintDetailAssignmentMethod

type CaseBlueprintDetailAssignmentMethod string

CaseBlueprintDetailAssignmentMethod is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseBlueprintDetailAssignmentMethodManual    CaseBlueprintDetailAssignmentMethod = "MANUAL"
	CaseBlueprintDetailAssignmentMethodAutomatic CaseBlueprintDetailAssignmentMethod = "AUTOMATIC"
)

Known values of CaseBlueprintDetailAssignmentMethod.

type CaseBlueprintDetailContentConfig

type CaseBlueprintDetailContentConfig struct {
	Checklist     CaseBlueprintDetailContentConfigChecklist     `json:"checklist"`
	AMLControl    CaseBlueprintDetailContentConfigAMLControl    `json:"aml_control"`
	Identity      CaseBlueprintDetailContentConfigIdentity      `json:"identity"`
	Verifications CaseBlueprintDetailContentConfigVerifications `json:"verifications"`
	Reporting     CaseBlueprintDetailContentConfigReporting     `json:"reporting"`
	Financial     CaseBlueprintDetailContentConfigFinancial     `json:"financial"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseBlueprintDetailContentConfig: The six togglable sections that drive which tabs and fields appear on the case page. Unknown sections or keys are rejected.

func (*CaseBlueprintDetailContentConfig) UnmarshalJSON

func (r *CaseBlueprintDetailContentConfig) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseBlueprintDetailContentConfig leniently.

type CaseBlueprintDetailContentConfigAMLControl

type CaseBlueprintDetailContentConfigAMLControl struct {
	Enabled   bool `json:"enabled"`
	Financial bool `json:"financial"`
	Identity  bool `json:"identity"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseBlueprintDetailContentConfigAMLControl is a response object.

func (*CaseBlueprintDetailContentConfigAMLControl) UnmarshalJSON

func (r *CaseBlueprintDetailContentConfigAMLControl) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseBlueprintDetailContentConfigAMLControl leniently.

type CaseBlueprintDetailContentConfigChecklist

type CaseBlueprintDetailContentConfigChecklist struct {
	Enabled bool `json:"enabled"`

	// When true, a case can be resolved with incomplete checklist items.
	Optional bool                                             `json:"optional"`
	Items    []CaseBlueprintDetailContentConfigChecklistItems `json:"items"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseBlueprintDetailContentConfigChecklist is a response object.

func (*CaseBlueprintDetailContentConfigChecklist) UnmarshalJSON

func (r *CaseBlueprintDetailContentConfigChecklist) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseBlueprintDetailContentConfigChecklist leniently.

type CaseBlueprintDetailContentConfigChecklistItems

type CaseBlueprintDetailContentConfigChecklistItems struct {
	Label string `json:"label"`
	Order int64  `json:"order"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseBlueprintDetailContentConfigChecklistItems is a response object.

func (*CaseBlueprintDetailContentConfigChecklistItems) UnmarshalJSON

UnmarshalJSON decodes CaseBlueprintDetailContentConfigChecklistItems leniently.

type CaseBlueprintDetailContentConfigFinancial

type CaseBlueprintDetailContentConfigFinancial struct {
	Enabled        bool `json:"enabled"`
	PaymentMethods bool `json:"payment_methods"`
	Transactions   bool `json:"transactions"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseBlueprintDetailContentConfigFinancial is a response object.

func (*CaseBlueprintDetailContentConfigFinancial) UnmarshalJSON

func (r *CaseBlueprintDetailContentConfigFinancial) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseBlueprintDetailContentConfigFinancial leniently.

type CaseBlueprintDetailContentConfigIdentity

type CaseBlueprintDetailContentConfigIdentity struct {
	Enabled             bool `json:"enabled"`
	PersonalInformation bool `json:"personal_information"`
	ApplicantTags       bool `json:"applicant_tags"`
	ContactInformation  bool `json:"contact_information"`
	RiskOverview        bool `json:"risk_overview"`
	PoiDocuments        bool `json:"poi_documents"`
	POADocuments        bool `json:"poa_documents"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseBlueprintDetailContentConfigIdentity is a response object.

func (*CaseBlueprintDetailContentConfigIdentity) UnmarshalJSON

func (r *CaseBlueprintDetailContentConfigIdentity) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseBlueprintDetailContentConfigIdentity leniently.

type CaseBlueprintDetailContentConfigReporting

type CaseBlueprintDetailContentConfigReporting struct {
	Enabled    bool `json:"enabled"`
	FiuReports bool `json:"fiu_reports"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseBlueprintDetailContentConfigReporting is a response object.

func (*CaseBlueprintDetailContentConfigReporting) UnmarshalJSON

func (r *CaseBlueprintDetailContentConfigReporting) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseBlueprintDetailContentConfigReporting leniently.

type CaseBlueprintDetailContentConfigVerifications

type CaseBlueprintDetailContentConfigVerifications struct {
	Enabled bool `json:"enabled"`
	Summary bool `json:"summary"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseBlueprintDetailContentConfigVerifications is a response object.

func (*CaseBlueprintDetailContentConfigVerifications) UnmarshalJSON

func (r *CaseBlueprintDetailContentConfigVerifications) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseBlueprintDetailContentConfigVerifications leniently.

type CaseBlueprintDetailCreationSources

type CaseBlueprintDetailCreationSources struct {
	Kind CaseBlueprintDetailCreationSourcesKind `json:"kind"`
	ID   string                                 `json:"id"`
	Name string                                 `json:"name"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseBlueprintDetailCreationSources is a response object.

func (*CaseBlueprintDetailCreationSources) UnmarshalJSON

func (r *CaseBlueprintDetailCreationSources) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseBlueprintDetailCreationSources leniently.

type CaseBlueprintDetailCreationSourcesKind

type CaseBlueprintDetailCreationSourcesKind string

CaseBlueprintDetailCreationSourcesKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseBlueprintDetailCreationSourcesKindAML      CaseBlueprintDetailCreationSourcesKind = "aml"
	CaseBlueprintDetailCreationSourcesKindRule     CaseBlueprintDetailCreationSourcesKind = "rule"
	CaseBlueprintDetailCreationSourcesKindWorkflow CaseBlueprintDetailCreationSourcesKind = "workflow"
)

Known values of CaseBlueprintDetailCreationSourcesKind.

type CaseBlueprintDetailReceivesEscalationFrom

type CaseBlueprintDetailReceivesEscalationFrom struct {
	ID   string `json:"id"`
	Name string `json:"name"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseBlueprintDetailReceivesEscalationFrom is a response object.

func (*CaseBlueprintDetailReceivesEscalationFrom) UnmarshalJSON

func (r *CaseBlueprintDetailReceivesEscalationFrom) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseBlueprintDetailReceivesEscalationFrom leniently.

type CaseBlueprintListItem

type CaseBlueprintListItem struct {
	UUID                  string                                `json:"uuid"`
	Name                  string                                `json:"name"`
	Description           string                                `json:"description"`
	AssignmentMethod      CaseBlueprintListItemAssignmentMethod `json:"assignment_method"`
	AssigneePool          []string                              `json:"assignee_pool"`
	MaxActiveCases        int64                                 `json:"max_active_cases"`
	EscalationEnabled     bool                                  `json:"escalation_enabled"`
	TransferEnabled       bool                                  `json:"transfer_enabled"`
	RequireResolutionNote bool                                  `json:"require_resolution_note"`
	IsActive              bool                                  `json:"is_active"`
	PresetKey             string                                `json:"preset_key"`
	CreatedAt             time.Time                             `json:"created_at"`
	Version               int64                                 `json:"version"`
	DefaultDeadlineHours  int64                                 `json:"default_deadline_hours"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseBlueprintListItem is a response object.

func (*CaseBlueprintListItem) UnmarshalJSON

func (r *CaseBlueprintListItem) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseBlueprintListItem leniently.

type CaseBlueprintListItemAssignmentMethod

type CaseBlueprintListItemAssignmentMethod string

CaseBlueprintListItemAssignmentMethod is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseBlueprintListItemAssignmentMethodManual    CaseBlueprintListItemAssignmentMethod = "MANUAL"
	CaseBlueprintListItemAssignmentMethodAutomatic CaseBlueprintListItemAssignmentMethod = "AUTOMATIC"
)

Known values of CaseBlueprintListItemAssignmentMethod.

type CaseBlueprintPresetInstallResult

type CaseBlueprintPresetInstallResult struct {
	Created []string `json:"created"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseBlueprintPresetInstallResult is a response object.

func (*CaseBlueprintPresetInstallResult) UnmarshalJSON

func (r *CaseBlueprintPresetInstallResult) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseBlueprintPresetInstallResult leniently.

type CaseBlueprintSummary

type CaseBlueprintSummary struct {
	UUID string `json:"uuid"`
	Name string `json:"name"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseBlueprintSummary is a response object.

func (*CaseBlueprintSummary) UnmarshalJSON

func (r *CaseBlueprintSummary) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseBlueprintSummary leniently.

type CaseBulkUpdateResult

type CaseBulkUpdateResult struct {
	Updated  int64                          `json:"updated"`
	Failures []CaseBulkUpdateResultFailures `json:"failures"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseBulkUpdateResult is a response object.

func (*CaseBulkUpdateResult) UnmarshalJSON

func (r *CaseBulkUpdateResult) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseBulkUpdateResult leniently.

type CaseBulkUpdateResultFailures

type CaseBulkUpdateResultFailures struct {
	CaseUUID string `json:"case_uuid"`
	Detail   string `json:"detail"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseBulkUpdateResultFailures is a response object.

func (*CaseBulkUpdateResultFailures) UnmarshalJSON

func (r *CaseBulkUpdateResultFailures) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseBulkUpdateResultFailures leniently.

type CaseChecker

type CaseChecker struct {
	// The member's user uuid: the value you pass as `checker` when you resolve the
	// case.
	MemberUUID string `json:"member_uuid"`

	// The member's full name, or null when it is not known.
	Name  string `json:"name"`
	Email string `json:"email"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseChecker: The member named to approve or reject the pending resolution. Set only while a four-eyes resolution waits on a named checker. Null when nothing is pending, while the pending resolution waits on the checker queue, and once the resolution is approved, rejected, or returned for a new review because the evidence changed.

func (*CaseChecker) UnmarshalJSON

func (r *CaseChecker) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseChecker leniently.

type CaseChecklistItem

type CaseChecklistItem struct {
	UUID        string    `json:"uuid"`
	Label       string    `json:"label"`
	IsCompleted bool      `json:"is_completed"`
	CompletedBy string    `json:"completed_by"`
	CompletedAt time.Time `json:"completed_at"`
	Order       int64     `json:"order"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseChecklistItem is a response object.

func (*CaseChecklistItem) UnmarshalJSON

func (r *CaseChecklistItem) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseChecklistItem leniently.

type CaseCollaborationCaseNote

type CaseCollaborationCaseNote struct {
	UUID            string                         `json:"uuid"`
	Comment         string                         `json:"comment"`
	ActorEmail      string                         `json:"actor_email"`
	ActorName       string                         `json:"actor_name"`
	MentionedEmails any                            `json:"mentioned_emails"`
	IsInternal      bool                           `json:"is_internal"`
	Attachments     any                            `json:"attachments"`
	Tags            any                            `json:"tags"`
	CreatedAt       time.Time                      `json:"created_at"`
	ReplyTo         CaseCollaborationCaseNoteReply `json:"reply_to"`
	IsPinned        bool                           `json:"is_pinned"`
	ClientReference string                         `json:"client_reference"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseCollaborationCaseNote is a response object.

func (*CaseCollaborationCaseNote) UnmarshalJSON

func (r *CaseCollaborationCaseNote) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseCollaborationCaseNote leniently.

type CaseCollaborationCaseNoteCreateRequest

type CaseCollaborationCaseNoteCreateRequest struct {
	// Required.
	Comment         string                `json:"comment"`
	ReplyTo         Opt[string]           `json:"reply_to"`
	ClientReference Opt[string]           `json:"client_reference"`
	MentionedEmails Opt[[]string]         `json:"mentioned_emails"`
	IsInternal      Opt[bool]             `json:"is_internal"`
	Attachments     Opt[[]map[string]any] `json:"attachments"`
	Tags            Opt[[]string]         `json:"tags"`
}

CaseCollaborationCaseNoteCreateRequest is a request object.

func (CaseCollaborationCaseNoteCreateRequest) MarshalJSON

func (r CaseCollaborationCaseNoteCreateRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseCollaborationCaseNoteReply

type CaseCollaborationCaseNoteReply struct {
	UUID       string `json:"uuid"`
	ActorName  string `json:"actor_name"`
	ActorEmail string `json:"actor_email"`
	Comment    string `json:"comment"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseCollaborationCaseNoteReply is a response object.

func (*CaseCollaborationCaseNoteReply) UnmarshalJSON

func (r *CaseCollaborationCaseNoteReply) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseCollaborationCaseNoteReply leniently.

type CaseCollaborationPatchedCaseNoteUpdateRequest

type CaseCollaborationPatchedCaseNoteUpdateRequest struct {
	IsPinned Opt[bool] `json:"is_pinned"`
}

CaseCollaborationPatchedCaseNoteUpdateRequest is a request object.

func (CaseCollaborationPatchedCaseNoteUpdateRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type CaseContentConfig

type CaseContentConfig struct {
	Checklist     CaseContentConfigChecklist     `json:"checklist"`
	AMLControl    CaseContentConfigAMLControl    `json:"aml_control"`
	Identity      CaseContentConfigIdentity      `json:"identity"`
	Verifications CaseContentConfigVerifications `json:"verifications"`
	Reporting     CaseContentConfigReporting     `json:"reporting"`
	Financial     CaseContentConfigFinancial     `json:"financial"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseContentConfig: The six togglable sections that drive which tabs and fields appear on the case page. Unknown sections or keys are rejected.

func (*CaseContentConfig) UnmarshalJSON

func (r *CaseContentConfig) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseContentConfig leniently.

type CaseContentConfigAMLControl

type CaseContentConfigAMLControl struct {
	Enabled   bool `json:"enabled"`
	Financial bool `json:"financial"`
	Identity  bool `json:"identity"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseContentConfigAMLControl is a response object.

func (*CaseContentConfigAMLControl) UnmarshalJSON

func (r *CaseContentConfigAMLControl) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseContentConfigAMLControl leniently.

type CaseContentConfigChecklist

type CaseContentConfigChecklist struct {
	Enabled bool `json:"enabled"`

	// When true, a case can be resolved with incomplete checklist items.
	Optional bool                              `json:"optional"`
	Items    []CaseContentConfigChecklistItems `json:"items"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseContentConfigChecklist is a response object.

func (*CaseContentConfigChecklist) UnmarshalJSON

func (r *CaseContentConfigChecklist) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseContentConfigChecklist leniently.

type CaseContentConfigChecklistItems

type CaseContentConfigChecklistItems struct {
	Label string `json:"label"`
	Order int64  `json:"order"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseContentConfigChecklistItems is a response object.

func (*CaseContentConfigChecklistItems) UnmarshalJSON

func (r *CaseContentConfigChecklistItems) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseContentConfigChecklistItems leniently.

type CaseContentConfigFinancial

type CaseContentConfigFinancial struct {
	Enabled        bool `json:"enabled"`
	PaymentMethods bool `json:"payment_methods"`
	Transactions   bool `json:"transactions"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseContentConfigFinancial is a response object.

func (*CaseContentConfigFinancial) UnmarshalJSON

func (r *CaseContentConfigFinancial) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseContentConfigFinancial leniently.

type CaseContentConfigIdentity

type CaseContentConfigIdentity struct {
	Enabled             bool `json:"enabled"`
	PersonalInformation bool `json:"personal_information"`
	ApplicantTags       bool `json:"applicant_tags"`
	ContactInformation  bool `json:"contact_information"`
	RiskOverview        bool `json:"risk_overview"`
	PoiDocuments        bool `json:"poi_documents"`
	POADocuments        bool `json:"poa_documents"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseContentConfigIdentity is a response object.

func (*CaseContentConfigIdentity) UnmarshalJSON

func (r *CaseContentConfigIdentity) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseContentConfigIdentity leniently.

type CaseContentConfigParam

type CaseContentConfigParam struct {
	Checklist     Opt[CaseContentConfigParamChecklist]     `json:"checklist"`
	AMLControl    Opt[CaseContentConfigParamAMLControl]    `json:"aml_control"`
	Identity      Opt[CaseContentConfigParamIdentity]      `json:"identity"`
	Verifications Opt[CaseContentConfigParamVerifications] `json:"verifications"`
	Reporting     Opt[CaseContentConfigParamReporting]     `json:"reporting"`
	Financial     Opt[CaseContentConfigParamFinancial]     `json:"financial"`
}

CaseContentConfigParam: The six togglable sections that drive which tabs and fields appear on the case page. Unknown sections or keys are rejected.

func (CaseContentConfigParam) MarshalJSON

func (r CaseContentConfigParam) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseContentConfigParamAMLControl

type CaseContentConfigParamAMLControl struct {
	Enabled   Opt[bool] `json:"enabled"`
	Financial Opt[bool] `json:"financial"`
	Identity  Opt[bool] `json:"identity"`
}

CaseContentConfigParamAMLControl is a request object.

func (CaseContentConfigParamAMLControl) MarshalJSON

func (r CaseContentConfigParamAMLControl) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseContentConfigParamChecklist

type CaseContentConfigParamChecklist struct {
	Enabled Opt[bool] `json:"enabled"`

	// When true, a case can be resolved with incomplete checklist items.
	Optional Opt[bool]                                   `json:"optional"`
	Items    Opt[[]CaseContentConfigParamChecklistItems] `json:"items"`
}

CaseContentConfigParamChecklist is a request object.

func (CaseContentConfigParamChecklist) MarshalJSON

func (r CaseContentConfigParamChecklist) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseContentConfigParamChecklistItems

type CaseContentConfigParamChecklistItems struct {
	Label Opt[string] `json:"label"`
	Order Opt[int64]  `json:"order"`
}

CaseContentConfigParamChecklistItems is a request object.

func (CaseContentConfigParamChecklistItems) MarshalJSON

func (r CaseContentConfigParamChecklistItems) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseContentConfigParamFinancial

type CaseContentConfigParamFinancial struct {
	Enabled        Opt[bool] `json:"enabled"`
	PaymentMethods Opt[bool] `json:"payment_methods"`
	Transactions   Opt[bool] `json:"transactions"`
}

CaseContentConfigParamFinancial is a request object.

func (CaseContentConfigParamFinancial) MarshalJSON

func (r CaseContentConfigParamFinancial) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseContentConfigParamIdentity

type CaseContentConfigParamIdentity struct {
	Enabled             Opt[bool] `json:"enabled"`
	PersonalInformation Opt[bool] `json:"personal_information"`
	ApplicantTags       Opt[bool] `json:"applicant_tags"`
	ContactInformation  Opt[bool] `json:"contact_information"`
	RiskOverview        Opt[bool] `json:"risk_overview"`
	PoiDocuments        Opt[bool] `json:"poi_documents"`
	POADocuments        Opt[bool] `json:"poa_documents"`
}

CaseContentConfigParamIdentity is a request object.

func (CaseContentConfigParamIdentity) MarshalJSON

func (r CaseContentConfigParamIdentity) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseContentConfigParamReporting

type CaseContentConfigParamReporting struct {
	Enabled    Opt[bool] `json:"enabled"`
	FiuReports Opt[bool] `json:"fiu_reports"`
}

CaseContentConfigParamReporting is a request object.

func (CaseContentConfigParamReporting) MarshalJSON

func (r CaseContentConfigParamReporting) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseContentConfigParamVerifications

type CaseContentConfigParamVerifications struct {
	Enabled Opt[bool] `json:"enabled"`
	Summary Opt[bool] `json:"summary"`
}

CaseContentConfigParamVerifications is a request object.

func (CaseContentConfigParamVerifications) MarshalJSON

func (r CaseContentConfigParamVerifications) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseContentConfigReporting

type CaseContentConfigReporting struct {
	Enabled    bool `json:"enabled"`
	FiuReports bool `json:"fiu_reports"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseContentConfigReporting is a response object.

func (*CaseContentConfigReporting) UnmarshalJSON

func (r *CaseContentConfigReporting) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseContentConfigReporting leniently.

type CaseContentConfigVerifications

type CaseContentConfigVerifications struct {
	Enabled bool `json:"enabled"`
	Summary bool `json:"summary"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseContentConfigVerifications is a response object.

func (*CaseContentConfigVerifications) UnmarshalJSON

func (r *CaseContentConfigVerifications) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseContentConfigVerifications leniently.

type CaseDetail

type CaseDetail struct {
	UUID            string               `json:"uuid"`
	CaseNumber      string               `json:"case_number"`
	Title           string               `json:"title"`
	Status          CaseDetailStatus     `json:"status"`
	Resolution      CaseDetailResolution `json:"resolution"`
	ResolutionNotes string               `json:"resolution_notes"`
	Priority        CaseDetailPriority   `json:"priority"`
	Source          CaseDetailSource     `json:"source"`
	Tags            []string             `json:"tags"`
	Subject         CaseSubject          `json:"subject"`
	AssignedTo      CaseAssignee         `json:"assigned_to"`
	AssignedAt      time.Time            `json:"assigned_at"`
	Team            CaseTeamSummary      `json:"team"`
	DueAt           time.Time            `json:"due_at"`
	ResolvedAt      time.Time            `json:"resolved_at"`
	ResolvedByEmail string               `json:"resolved_by_email"`

	// Set only while a 4-eyes resolution is staged on the checker blueprint,
	// awaiting approve or reject-approval.
	PendingResolution CaseDetailPendingResolution `json:"pending_resolution"`
	Checker           CaseChecker                 `json:"checker"`
	Metadata          map[string]any              `json:"metadata"`
	Blueprint         CaseBlueprintDetail         `json:"blueprint"`

	// Newest 50 notes.
	Notes []CaseNote `json:"notes"`

	// Newest 100 events.
	Events         []CaseEvent         `json:"events"`
	Links          []CaseLink          `json:"links"`
	LinksCount     int64               `json:"links_count"`
	NotesCount     int64               `json:"notes_count"`
	ChecklistItems []CaseChecklistItem `json:"checklist_items"`
	CreatedAt      time.Time           `json:"created_at"`
	UpdatedAt      time.Time           `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseDetail is a response object.

func (*CaseDetail) UnmarshalJSON

func (r *CaseDetail) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseDetail leniently.

type CaseDetailPendingResolution

type CaseDetailPendingResolution struct {
	Resolution      CaseDetailPendingResolutionResolution `json:"resolution"`
	ResolutionNotes string                                `json:"resolution_notes"`

	// Email of the officer who submitted the resolution. Null when an API key
	// submitted it: that resolution has no recorded maker, so approve and
	// reject-approval return 403 for every caller.
	MakerEmail string `json:"maker_email"`
	MakerName  string `json:"maker_name"`

	// Member user uuid of the officer who submitted the resolution. Null when an
	// API key submitted it. That member cannot be named as `checker`.
	MakerUserID      string    `json:"maker_user_id"`
	MakerBlueprintID string    `json:"maker_blueprint_id"`
	StagedAt         time.Time `json:"staged_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseDetailPendingResolution: Set only while a 4-eyes resolution is staged on the checker blueprint, awaiting approve or reject-approval.

func (*CaseDetailPendingResolution) UnmarshalJSON

func (r *CaseDetailPendingResolution) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseDetailPendingResolution leniently.

type CaseDetailPendingResolutionResolution

type CaseDetailPendingResolutionResolution string

CaseDetailPendingResolutionResolution is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseDetailPendingResolutionResolutionFalsePositive         CaseDetailPendingResolutionResolution = "FALSE_POSITIVE"
	CaseDetailPendingResolutionResolutionValidThreat           CaseDetailPendingResolutionResolution = "VALID_THREAT"
	CaseDetailPendingResolutionResolutionInconclusive          CaseDetailPendingResolutionResolution = "INCONCLUSIVE"
	CaseDetailPendingResolutionResolutionRequirementsNotMet    CaseDetailPendingResolutionResolution = "REQUIREMENTS_NOT_MET"
	CaseDetailPendingResolutionResolutionRequirementsSatisfied CaseDetailPendingResolutionResolution = "REQUIREMENTS_SATISFIED"
)

Known values of CaseDetailPendingResolutionResolution.

type CaseDetailPriority

type CaseDetailPriority string

CaseDetailPriority is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseDetailPriorityLow    CaseDetailPriority = "LOW"
	CaseDetailPriorityMedium CaseDetailPriority = "MEDIUM"
	CaseDetailPriorityHigh   CaseDetailPriority = "HIGH"
)

Known values of CaseDetailPriority.

type CaseDetailResolution

type CaseDetailResolution string

CaseDetailResolution is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseDetailResolutionFalsePositive         CaseDetailResolution = "FALSE_POSITIVE"
	CaseDetailResolutionValidThreat           CaseDetailResolution = "VALID_THREAT"
	CaseDetailResolutionInconclusive          CaseDetailResolution = "INCONCLUSIVE"
	CaseDetailResolutionRequirementsNotMet    CaseDetailResolution = "REQUIREMENTS_NOT_MET"
	CaseDetailResolutionRequirementsSatisfied CaseDetailResolution = "REQUIREMENTS_SATISFIED"
)

Known values of CaseDetailResolution.

type CaseDetailSource

type CaseDetailSource string

CaseDetailSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseDetailSourceManual          CaseDetailSource = "MANUAL"
	CaseDetailSourceAMLScreening    CaseDetailSource = "AML_SCREENING"
	CaseDetailSourceTransactionRule CaseDetailSource = "TRANSACTION_RULE"
	CaseDetailSourceWorkflowBuilder CaseDetailSource = "WORKFLOW_BUILDER"
)

Known values of CaseDetailSource.

type CaseDetailStatus

type CaseDetailStatus string

CaseDetailStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseDetailStatusOpen         CaseDetailStatus = "OPEN"
	CaseDetailStatusAwaitingUser CaseDetailStatus = "AWAITING_USER"
	CaseDetailStatusResolved     CaseDetailStatus = "RESOLVED"
)

Known values of CaseDetailStatus.

type CaseDuplicateCaseDuplicate

type CaseDuplicateCaseDuplicate struct {
	UUID       string                    `json:"uuid"`
	CaseNumber string                    `json:"case_number"`
	Title      string                    `json:"title"`
	Status     CaseDuplicateStatusEnum   `json:"status"`
	Priority   CaseDuplicatePriorityEnum `json:"priority"`
	CreatedAt  time.Time                 `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseDuplicateCaseDuplicate is a response object.

func (*CaseDuplicateCaseDuplicate) UnmarshalJSON

func (r *CaseDuplicateCaseDuplicate) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseDuplicateCaseDuplicate leniently.

type CaseDuplicateCaseDuplicatePage

type CaseDuplicateCaseDuplicatePage struct {
	Count      int64                        `json:"count"`
	NextOffset int64                        `json:"next_offset"`
	Results    []CaseDuplicateCaseDuplicate `json:"results"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseDuplicateCaseDuplicatePage is a response object.

func (*CaseDuplicateCaseDuplicatePage) UnmarshalJSON

func (r *CaseDuplicateCaseDuplicatePage) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseDuplicateCaseDuplicatePage leniently.

type CaseDuplicateCaseDuplicateQueryRequest

type CaseDuplicateCaseDuplicateQueryRequest struct {
	Subject Opt[CaseDuplicateCaseSubjectInputRequest] `json:"subject"`
	Links   Opt[[]CaseDuplicateCaseLinkCreateRequest] `json:"links"`
	Offset  Opt[int64]                                `json:"offset"`
}

CaseDuplicateCaseDuplicateQueryRequest is a request object.

func (CaseDuplicateCaseDuplicateQueryRequest) MarshalJSON

func (r CaseDuplicateCaseDuplicateQueryRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseDuplicateCaseFraudSourceContextRequest

type CaseDuplicateCaseFraudSourceContextRequest struct {
	// Required.
	CheckID string `json:"check_id"`

	// Required.
	RequestID string `json:"request_id"`

	// Required.
	SourceSection string `json:"source_section"`
}

CaseDuplicateCaseFraudSourceContextRequest is a request object.

func (CaseDuplicateCaseFraudSourceContextRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type CaseDuplicateCaseLinkCreateRequest

type CaseDuplicateCaseLinkCreateRequest struct {
	// Required.
	EntityType CaseDuplicateEntityTypeEnum `json:"entity_type"`

	// Required.
	EntityUUID string `json:"entity_uuid"`
}

CaseDuplicateCaseLinkCreateRequest is a request object.

func (CaseDuplicateCaseLinkCreateRequest) MarshalJSON

func (r CaseDuplicateCaseLinkCreateRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseDuplicateCaseSubjectInputRequest

type CaseDuplicateCaseSubjectInputRequest struct {
	// Required.
	Type CaseDuplicateTypeEnum `json:"type"`

	// Required.
	UUID string `json:"uuid"`
}

CaseDuplicateCaseSubjectInputRequest is a request object.

func (CaseDuplicateCaseSubjectInputRequest) MarshalJSON

func (r CaseDuplicateCaseSubjectInputRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseDuplicateEntityTypeEnum

type CaseDuplicateEntityTypeEnum string

CaseDuplicateEntityTypeEnum: * `session` - Session

  • `business_session` - Business Session
  • `transaction` - Transaction

CaseDuplicateEntityTypeEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseDuplicateEntityTypeEnumSession         CaseDuplicateEntityTypeEnum = "session"
	CaseDuplicateEntityTypeEnumBusinessSession CaseDuplicateEntityTypeEnum = "business_session"
	CaseDuplicateEntityTypeEnumTransaction     CaseDuplicateEntityTypeEnum = "transaction"
)

Known values of CaseDuplicateEntityTypeEnum.

type CaseDuplicatePriorityEnum

type CaseDuplicatePriorityEnum string

CaseDuplicatePriorityEnum: * `LOW` - Low

  • `MEDIUM` - Medium
  • `HIGH` - High

CaseDuplicatePriorityEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseDuplicatePriorityEnumLow    CaseDuplicatePriorityEnum = "LOW"
	CaseDuplicatePriorityEnumMedium CaseDuplicatePriorityEnum = "MEDIUM"
	CaseDuplicatePriorityEnumHigh   CaseDuplicatePriorityEnum = "HIGH"
)

Known values of CaseDuplicatePriorityEnum.

type CaseDuplicateStatusEnum

type CaseDuplicateStatusEnum string

CaseDuplicateStatusEnum: * `OPEN` - Open

  • `AWAITING_USER` - Awaiting user
  • `RESOLVED` - Resolved

CaseDuplicateStatusEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseDuplicateStatusEnumOpen         CaseDuplicateStatusEnum = "OPEN"
	CaseDuplicateStatusEnumAwaitingUser CaseDuplicateStatusEnum = "AWAITING_USER"
	CaseDuplicateStatusEnumResolved     CaseDuplicateStatusEnum = "RESOLVED"
)

Known values of CaseDuplicateStatusEnum.

type CaseDuplicateTypeEnum

type CaseDuplicateTypeEnum string

CaseDuplicateTypeEnum: * `user` - user

  • `business` - business

CaseDuplicateTypeEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseDuplicateTypeEnumUser     CaseDuplicateTypeEnum = "user"
	CaseDuplicateTypeEnumBusiness CaseDuplicateTypeEnum = "business"
)

Known values of CaseDuplicateTypeEnum.

type CaseEvent

type CaseEvent struct {
	UUID           string                  `json:"uuid"`
	EventType      CaseEventEventType      `json:"event_type"`
	ActorEmail     string                  `json:"actor_email"`
	ActorName      string                  `json:"actor_name"`
	PreviousStatus CaseEventPreviousStatus `json:"previous_status"`
	NewStatus      CaseEventNewStatus      `json:"new_status"`
	Metadata       map[string]any          `json:"metadata"`
	CreatedAt      time.Time               `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseEvent is a response object.

func (*CaseEvent) UnmarshalJSON

func (r *CaseEvent) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseEvent leniently.

type CaseEventEventType

type CaseEventEventType string

CaseEventEventType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseEventEventTypeCreated              CaseEventEventType = "CREATED"
	CaseEventEventTypeStatusChanged        CaseEventEventType = "STATUS_CHANGED"
	CaseEventEventTypeAssigned             CaseEventEventType = "ASSIGNED"
	CaseEventEventTypeUnassigned           CaseEventEventType = "UNASSIGNED"
	CaseEventEventTypeResolved             CaseEventEventType = "RESOLVED"
	CaseEventEventTypeReopened             CaseEventEventType = "REOPENED"
	CaseEventEventTypeLinkAdded            CaseEventEventType = "LINK_ADDED"
	CaseEventEventTypeLinkRemoved          CaseEventEventType = "LINK_REMOVED"
	CaseEventEventTypeNoteAdded            CaseEventEventType = "NOTE_ADDED"
	CaseEventEventTypeNotePinned           CaseEventEventType = "NOTE_PINNED"
	CaseEventEventTypeNoteUnpinned         CaseEventEventType = "NOTE_UNPINNED"
	CaseEventEventTypePriorityChanged      CaseEventEventType = "PRIORITY_CHANGED"
	CaseEventEventTypeDueDateChanged       CaseEventEventType = "DUE_DATE_CHANGED"
	CaseEventEventTypeTagAdded             CaseEventEventType = "TAG_ADDED"
	CaseEventEventTypeTagRemoved           CaseEventEventType = "TAG_REMOVED"
	CaseEventEventTypeEscalated            CaseEventEventType = "ESCALATED"
	CaseEventEventTypeTransferred          CaseEventEventType = "TRANSFERRED"
	CaseEventEventTypeChecklistCompleted   CaseEventEventType = "CHECKLIST_COMPLETED"
	CaseEventEventTypeReportCreated        CaseEventEventType = "REPORT_CREATED"
	CaseEventEventTypeReportFinalized      CaseEventEventType = "REPORT_FINALIZED"
	CaseEventEventTypeSubmittedForApproval CaseEventEventType = "SUBMITTED_FOR_APPROVAL"
	CaseEventEventTypeApprovalGranted      CaseEventEventType = "APPROVAL_GRANTED"
	CaseEventEventTypeApprovalRejected     CaseEventEventType = "APPROVAL_REJECTED"
	CaseEventEventTypeEntityAction         CaseEventEventType = "ENTITY_ACTION"
	CaseEventEventTypeApprovalInvalidated  CaseEventEventType = "APPROVAL_INVALIDATED"
	CaseEventEventTypeCustomerRequest      CaseEventEventType = "CUSTOMER_REQUEST"
	CaseEventEventTypeStageChanged         CaseEventEventType = "STAGE_CHANGED"
	CaseEventEventTypeTeamChanged          CaseEventEventType = "TEAM_CHANGED"
	CaseEventEventTypeCheckerAssigned      CaseEventEventType = "CHECKER_ASSIGNED"
	CaseEventEventTypeCheckerUnassigned    CaseEventEventType = "CHECKER_UNASSIGNED"
)

Known values of CaseEventEventType.

type CaseEventNewStatus

type CaseEventNewStatus string

CaseEventNewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseEventNewStatusOpen         CaseEventNewStatus = "OPEN"
	CaseEventNewStatusAwaitingUser CaseEventNewStatus = "AWAITING_USER"
	CaseEventNewStatusResolved     CaseEventNewStatus = "RESOLVED"
)

Known values of CaseEventNewStatus.

type CaseEventPreviousStatus

type CaseEventPreviousStatus string

CaseEventPreviousStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseEventPreviousStatusOpen         CaseEventPreviousStatus = "OPEN"
	CaseEventPreviousStatusAwaitingUser CaseEventPreviousStatus = "AWAITING_USER"
	CaseEventPreviousStatusResolved     CaseEventPreviousStatus = "RESOLVED"
)

Known values of CaseEventPreviousStatus.

type CaseLink struct {
	UUID             string                   `json:"uuid"`
	LinkedEntityType CaseLinkLinkedEntityType `json:"linked_entity_type"`
	LinkedEntityUUID string                   `json:"linked_entity_uuid"`

	// session_id/session_number/status for session and business_session links;
	// uuid/txn_id/status for transaction links.
	LinkedEntitySummary map[string]any `json:"linked_entity_summary"`
	CreatedAt           time.Time      `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseLink is a response object.

func (*CaseLink) UnmarshalJSON

func (r *CaseLink) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseLink leniently.

type CaseLinkLinkedEntityType

type CaseLinkLinkedEntityType string

CaseLinkLinkedEntityType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseLinkLinkedEntityTypeSession         CaseLinkLinkedEntityType = "session"
	CaseLinkLinkedEntityTypeBusinessSession CaseLinkLinkedEntityType = "business_session"
	CaseLinkLinkedEntityTypeTransaction     CaseLinkLinkedEntityType = "transaction"
)

Known values of CaseLinkLinkedEntityType.

type CaseListItem

type CaseListItem struct {
	UUID string `json:"uuid"`

	// Auto-assigned, e.g. CS-0001.
	CaseNumber string                 `json:"case_number"`
	Title      string                 `json:"title"`
	Status     CaseListItemStatus     `json:"status"`
	Resolution CaseListItemResolution `json:"resolution"`

	// Set only while a 4-eyes resolution is staged on the checker blueprint,
	// awaiting approve or reject-approval.
	PendingResolution CaseListItemPendingResolution `json:"pending_resolution"`
	Checker           CaseChecker                   `json:"checker"`
	Priority          CaseListItemPriority          `json:"priority"`
	Source            CaseListItemSource            `json:"source"`
	Tags              []string                      `json:"tags"`
	Subject           CaseSubject                   `json:"subject"`
	AssignedTo        CaseAssignee                  `json:"assigned_to"`
	AssignedAt        time.Time                     `json:"assigned_at"`
	Team              CaseTeamSummary               `json:"team"`
	DueAt             time.Time                     `json:"due_at"`
	ResolvedAt        time.Time                     `json:"resolved_at"`
	CreatedByEmail    string                        `json:"created_by_email"`
	CreatedByName     string                        `json:"created_by_name"`
	Blueprint         CaseBlueprintSummary          `json:"blueprint"`
	LinksCount        int64                         `json:"links_count"`
	NotesCount        int64                         `json:"notes_count"`
	CreatedAt         time.Time                     `json:"created_at"`
	UpdatedAt         time.Time                     `json:"updated_at"`
	ApplicationID     string                        `json:"application_id"`
	ApplicationName   string                        `json:"application_name"`
	OrganizationID    string                        `json:"organization_id"`
	OrganizationName  string                        `json:"organization_name"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseListItem is a response object.

func (*CaseListItem) UnmarshalJSON

func (r *CaseListItem) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseListItem leniently.

type CaseListItemPendingResolution

type CaseListItemPendingResolution struct {
	Resolution      CaseListItemPendingResolutionResolution `json:"resolution"`
	ResolutionNotes string                                  `json:"resolution_notes"`

	// Email of the officer who submitted the resolution. Null when an API key
	// submitted it: that resolution has no recorded maker, so approve and
	// reject-approval return 403 for every caller.
	MakerEmail string `json:"maker_email"`
	MakerName  string `json:"maker_name"`

	// Member user uuid of the officer who submitted the resolution. Null when an
	// API key submitted it. That member cannot be named as `checker`.
	MakerUserID      string    `json:"maker_user_id"`
	MakerBlueprintID string    `json:"maker_blueprint_id"`
	StagedAt         time.Time `json:"staged_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseListItemPendingResolution: Set only while a 4-eyes resolution is staged on the checker blueprint, awaiting approve or reject-approval.

func (*CaseListItemPendingResolution) UnmarshalJSON

func (r *CaseListItemPendingResolution) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseListItemPendingResolution leniently.

type CaseListItemPendingResolutionResolution

type CaseListItemPendingResolutionResolution string

CaseListItemPendingResolutionResolution is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseListItemPendingResolutionResolutionFalsePositive         CaseListItemPendingResolutionResolution = "FALSE_POSITIVE"
	CaseListItemPendingResolutionResolutionValidThreat           CaseListItemPendingResolutionResolution = "VALID_THREAT"
	CaseListItemPendingResolutionResolutionInconclusive          CaseListItemPendingResolutionResolution = "INCONCLUSIVE"
	CaseListItemPendingResolutionResolutionRequirementsNotMet    CaseListItemPendingResolutionResolution = "REQUIREMENTS_NOT_MET"
	CaseListItemPendingResolutionResolutionRequirementsSatisfied CaseListItemPendingResolutionResolution = "REQUIREMENTS_SATISFIED"
)

Known values of CaseListItemPendingResolutionResolution.

type CaseListItemPriority

type CaseListItemPriority string

CaseListItemPriority is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseListItemPriorityLow    CaseListItemPriority = "LOW"
	CaseListItemPriorityMedium CaseListItemPriority = "MEDIUM"
	CaseListItemPriorityHigh   CaseListItemPriority = "HIGH"
)

Known values of CaseListItemPriority.

type CaseListItemResolution

type CaseListItemResolution string

CaseListItemResolution is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseListItemResolutionFalsePositive         CaseListItemResolution = "FALSE_POSITIVE"
	CaseListItemResolutionValidThreat           CaseListItemResolution = "VALID_THREAT"
	CaseListItemResolutionInconclusive          CaseListItemResolution = "INCONCLUSIVE"
	CaseListItemResolutionRequirementsNotMet    CaseListItemResolution = "REQUIREMENTS_NOT_MET"
	CaseListItemResolutionRequirementsSatisfied CaseListItemResolution = "REQUIREMENTS_SATISFIED"
)

Known values of CaseListItemResolution.

type CaseListItemSource

type CaseListItemSource string

CaseListItemSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseListItemSourceManual          CaseListItemSource = "MANUAL"
	CaseListItemSourceAMLScreening    CaseListItemSource = "AML_SCREENING"
	CaseListItemSourceTransactionRule CaseListItemSource = "TRANSACTION_RULE"
	CaseListItemSourceWorkflowBuilder CaseListItemSource = "WORKFLOW_BUILDER"
)

Known values of CaseListItemSource.

type CaseListItemStatus

type CaseListItemStatus string

CaseListItemStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseListItemStatusOpen         CaseListItemStatus = "OPEN"
	CaseListItemStatusAwaitingUser CaseListItemStatus = "AWAITING_USER"
	CaseListItemStatusResolved     CaseListItemStatus = "RESOLVED"
)

Known values of CaseListItemStatus.

type CaseNote

type CaseNote struct {
	UUID            string                `json:"uuid"`
	Comment         string                `json:"comment"`
	ActorEmail      string                `json:"actor_email"`
	ActorName       string                `json:"actor_name"`
	MentionedEmails []string              `json:"mentioned_emails"`
	IsInternal      bool                  `json:"is_internal"`
	Attachments     []CaseNoteAttachments `json:"attachments"`
	Tags            []string              `json:"tags"`
	CreatedAt       time.Time             `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseNote is a response object.

func (*CaseNote) UnmarshalJSON

func (r *CaseNote) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseNote leniently.

type CaseNoteAttachments

type CaseNoteAttachments struct {
	S3Key    string `json:"s3_key"`
	Filename string `json:"filename"`
	FileSize int64  `json:"file_size"`
	URL      string `json:"url"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseNoteAttachments is a response object.

func (*CaseNoteAttachments) UnmarshalJSON

func (r *CaseNoteAttachments) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseNoteAttachments leniently.

type CasePublicationAssignmentMethodEnum

type CasePublicationAssignmentMethodEnum string

CasePublicationAssignmentMethodEnum: * `MANUAL` - Manual

  • `AUTOMATIC` - Automatic

CasePublicationAssignmentMethodEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasePublicationAssignmentMethodEnumManual    CasePublicationAssignmentMethodEnum = "MANUAL"
	CasePublicationAssignmentMethodEnumAutomatic CasePublicationAssignmentMethodEnum = "AUTOMATIC"
)

Known values of CasePublicationAssignmentMethodEnum.

type CasePublicationCaseBlueprint

type CasePublicationCaseBlueprint struct {
	UUID                         string                              `json:"uuid"`
	Name                         string                              `json:"name"`
	Description                  string                              `json:"description"`
	AssignmentMethod             CasePublicationAssignmentMethodEnum `json:"assignment_method"`
	AssigneePool                 any                                 `json:"assignee_pool"`
	MaxActiveCases               int64                               `json:"max_active_cases"`
	EscalationEnabled            bool                                `json:"escalation_enabled"`
	EscalationBlueprint          string                              `json:"escalation_blueprint"`
	EscalationBlueprintName      string                              `json:"escalation_blueprint_name"`
	TransferEnabled              bool                                `json:"transfer_enabled"`
	FourEyesCheckerBlueprint     string                              `json:"four_eyes_checker_blueprint"`
	FourEyesCheckerBlueprintName string                              `json:"four_eyes_checker_blueprint_name"`
	RequireResolutionNote        bool                                `json:"require_resolution_note"`
	ContentConfig                any                                 `json:"content_config"`
	Version                      int64                               `json:"version"`
	DefaultDeadlineHours         int64                               `json:"default_deadline_hours"`
	IsActive                     bool                                `json:"is_active"`
	PresetKey                    string                              `json:"preset_key"`
	CreationSources              []map[string]any                    `json:"creation_sources"`
	ReceivesEscalationFrom       []map[string]any                    `json:"receives_escalation_from"`
	CreatedAt                    time.Time                           `json:"created_at"`
	UpdatedAt                    time.Time                           `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasePublicationCaseBlueprint is a response object.

func (*CasePublicationCaseBlueprint) UnmarshalJSON

func (r *CasePublicationCaseBlueprint) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasePublicationCaseBlueprint leniently.

type CasePublicationPolicyDraft

type CasePublicationPolicyDraft struct {
	Revision    string    `json:"revision"`
	BaseVersion int64     `json:"base_version"`
	Changes     any       `json:"changes"`
	ActorEmail  string    `json:"actor_email"`
	UpdatedAt   time.Time `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasePublicationPolicyDraft is a response object.

func (*CasePublicationPolicyDraft) UnmarshalJSON

func (r *CasePublicationPolicyDraft) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasePublicationPolicyDraft leniently.

type CasePublicationPolicyDraftPreconditionRequest

type CasePublicationPolicyDraftPreconditionRequest struct {
	// Required.
	ExpectedVersion int64 `json:"expected_version"`

	// Required.
	ExpectedRevision Opt[string] `json:"expected_revision"`
}

CasePublicationPolicyDraftPreconditionRequest is a request object.

func (CasePublicationPolicyDraftPreconditionRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type CasePublicationPolicyDraftResponse

type CasePublicationPolicyDraftResponse struct {
	Draft CasePublicationPolicyDraft `json:"draft"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasePublicationPolicyDraftResponse is a response object.

func (*CasePublicationPolicyDraftResponse) UnmarshalJSON

func (r *CasePublicationPolicyDraftResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasePublicationPolicyDraftResponse leniently.

type CasePublicationPolicyDraftWriteRequest

type CasePublicationPolicyDraftWriteRequest struct {
	// Required.
	ExpectedVersion int64 `json:"expected_version"`

	// Required.
	ExpectedRevision Opt[string] `json:"expected_revision"`

	// Required.
	Changes map[string]any `json:"changes"`
}

CasePublicationPolicyDraftWriteRequest is a request object.

func (CasePublicationPolicyDraftWriteRequest) MarshalJSON

func (r CasePublicationPolicyDraftWriteRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasePublicationPolicyRevision

type CasePublicationPolicyRevision struct {
	Version     int64     `json:"version"`
	Snapshot    any       `json:"snapshot"`
	ActorEmail  string    `json:"actor_email"`
	PublishedAt time.Time `json:"published_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasePublicationPolicyRevision is a response object.

func (*CasePublicationPolicyRevision) UnmarshalJSON

func (r *CasePublicationPolicyRevision) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasePublicationPolicyRevision leniently.

type CaseReviewTeam

type CaseReviewTeam struct {
	Name        string                 `json:"name"`
	Description string                 `json:"description"`
	Members     []CaseReviewTeamMember `json:"members"`
	IsActive    bool                   `json:"is_active"`
	UUID        string                 `json:"uuid"`
	CreatedAt   time.Time              `json:"created_at"`
	UpdatedAt   time.Time              `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseReviewTeam is a response object.

func (*CaseReviewTeam) UnmarshalJSON

func (r *CaseReviewTeam) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseReviewTeam leniently.

type CaseReviewTeamCreate

type CaseReviewTeamCreate struct {
	// Required.
	Name        string      `json:"name"`
	Description Opt[string] `json:"description"`

	// Required.
	Members  []CaseReviewTeamMemberParam `json:"members"`
	IsActive Opt[bool]                   `json:"is_active"`
}

CaseReviewTeamCreate is a request object.

func (CaseReviewTeamCreate) MarshalJSON

func (r CaseReviewTeamCreate) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseReviewTeamMember

type CaseReviewTeamMember struct {
	UserID         string                           `json:"user_id"`
	Availability   CaseReviewTeamMemberAvailability `json:"availability"`
	Capacity       int64                            `json:"capacity"`
	Skills         []string                         `json:"skills"`
	AvailableFrom  time.Time                        `json:"available_from"`
	AvailableUntil time.Time                        `json:"available_until"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseReviewTeamMember is a response object.

func (*CaseReviewTeamMember) UnmarshalJSON

func (r *CaseReviewTeamMember) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseReviewTeamMember leniently.

type CaseReviewTeamMemberAvailability

type CaseReviewTeamMemberAvailability string

CaseReviewTeamMemberAvailability is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseReviewTeamMemberAvailabilityAvailable   CaseReviewTeamMemberAvailability = "available"
	CaseReviewTeamMemberAvailabilityUnavailable CaseReviewTeamMemberAvailability = "unavailable"
)

Known values of CaseReviewTeamMemberAvailability.

type CaseReviewTeamMemberParam

type CaseReviewTeamMemberParam struct {
	// Required.
	UserID         string                                `json:"user_id"`
	Availability   Opt[CaseReviewTeamMemberAvailability] `json:"availability"`
	Capacity       Opt[int64]                            `json:"capacity"`
	Skills         Opt[[]string]                         `json:"skills"`
	AvailableFrom  Opt[time.Time]                        `json:"available_from"`
	AvailableUntil Opt[time.Time]                        `json:"available_until"`
}

CaseReviewTeamMemberParam is a request object.

func (CaseReviewTeamMemberParam) MarshalJSON

func (r CaseReviewTeamMemberParam) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseReviewTeamUpdate

type CaseReviewTeamUpdate struct {
	Name        Opt[string]                      `json:"name"`
	Description Opt[string]                      `json:"description"`
	Members     Opt[[]CaseReviewTeamMemberParam] `json:"members"`
	IsActive    Opt[bool]                        `json:"is_active"`
}

CaseReviewTeamUpdate is a request object.

func (CaseReviewTeamUpdate) MarshalJSON

func (r CaseReviewTeamUpdate) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseRoutingCondition

type CaseRoutingCondition struct {
	Field    CaseRoutingConditionField    `json:"field"`
	Operator CaseRoutingConditionOperator `json:"operator"`
	Value    any                          `json:"value"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseRoutingCondition: Source and priority support equals or in with supported values. Tags support contains with one non-empty tag.

func (*CaseRoutingCondition) UnmarshalJSON

func (r *CaseRoutingCondition) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseRoutingCondition leniently.

type CaseRoutingConditionField

type CaseRoutingConditionField string

CaseRoutingConditionField is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseRoutingConditionFieldSource   CaseRoutingConditionField = "source"
	CaseRoutingConditionFieldPriority CaseRoutingConditionField = "priority"
	CaseRoutingConditionFieldTags     CaseRoutingConditionField = "tags"
)

Known values of CaseRoutingConditionField.

type CaseRoutingConditionOperator

type CaseRoutingConditionOperator string

CaseRoutingConditionOperator is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseRoutingConditionOperatorEquals   CaseRoutingConditionOperator = "equals"
	CaseRoutingConditionOperatorIn       CaseRoutingConditionOperator = "in"
	CaseRoutingConditionOperatorContains CaseRoutingConditionOperator = "contains"
)

Known values of CaseRoutingConditionOperator.

type CaseRoutingConditionParam

type CaseRoutingConditionParam struct {
	// Required.
	Field CaseRoutingConditionField `json:"field"`

	// Required.
	Operator CaseRoutingConditionOperator `json:"operator"`

	// Required.
	Value any `json:"value"`
}

CaseRoutingConditionParam: Source and priority support equals or in with supported values. Tags support contains with one non-empty tag.

func (CaseRoutingConditionParam) MarshalJSON

func (r CaseRoutingConditionParam) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseRoutingPreview

type CaseRoutingPreview struct {
	RuleUUID       string                           `json:"rule_uuid"`
	RuleName       string                           `json:"rule_name"`
	RuleVersion    int64                            `json:"rule_version"`
	BlueprintUUID  string                           `json:"blueprint_uuid"`
	TeamUUID       string                           `json:"team_uuid"`
	AssigneeUserID string                           `json:"assignee_user_id"`
	Reason         string                           `json:"reason"`
	Candidates     []CaseRoutingPreviewCandidates   `json:"candidates"`
	MatchedRules   []CaseRoutingPreviewMatchedRules `json:"matched_rules"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseRoutingPreview is a response object.

func (*CaseRoutingPreview) UnmarshalJSON

func (r *CaseRoutingPreview) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseRoutingPreview leniently.

type CaseRoutingPreviewCandidates

type CaseRoutingPreviewCandidates struct {
	UserID      string `json:"user_id"`
	Eligible    bool   `json:"eligible"`
	ActiveCases int64  `json:"active_cases"`
	Reason      string `json:"reason"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseRoutingPreviewCandidates is a response object.

func (*CaseRoutingPreviewCandidates) UnmarshalJSON

func (r *CaseRoutingPreviewCandidates) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseRoutingPreviewCandidates leniently.

type CaseRoutingPreviewMatchedRules

type CaseRoutingPreviewMatchedRules struct {
	UUID     string `json:"uuid"`
	Name     string `json:"name"`
	Priority int64  `json:"priority"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseRoutingPreviewMatchedRules is a response object.

func (*CaseRoutingPreviewMatchedRules) UnmarshalJSON

func (r *CaseRoutingPreviewMatchedRules) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseRoutingPreviewMatchedRules leniently.

type CaseRoutingPreviewRequest

type CaseRoutingPreviewRequest struct {
	// Required.
	Source   CaseRoutingPreviewRequestSource        `json:"source"`
	Priority Opt[CaseRoutingPreviewRequestPriority] `json:"priority"`
	Tags     Opt[[]string]                          `json:"tags"`
	RuleUUID Opt[string]                            `json:"rule_uuid"`
	Draft    Opt[CaseRoutingRuleCreate]             `json:"draft"`
}

CaseRoutingPreviewRequest is a request object.

func (CaseRoutingPreviewRequest) MarshalJSON

func (r CaseRoutingPreviewRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseRoutingPreviewRequestPriority

type CaseRoutingPreviewRequestPriority string

CaseRoutingPreviewRequestPriority is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseRoutingPreviewRequestPriorityLow    CaseRoutingPreviewRequestPriority = "LOW"
	CaseRoutingPreviewRequestPriorityMedium CaseRoutingPreviewRequestPriority = "MEDIUM"
	CaseRoutingPreviewRequestPriorityHigh   CaseRoutingPreviewRequestPriority = "HIGH"
)

Known values of CaseRoutingPreviewRequestPriority.

type CaseRoutingPreviewRequestSource

type CaseRoutingPreviewRequestSource string

CaseRoutingPreviewRequestSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseRoutingPreviewRequestSourceManual          CaseRoutingPreviewRequestSource = "MANUAL"
	CaseRoutingPreviewRequestSourceAMLScreening    CaseRoutingPreviewRequestSource = "AML_SCREENING"
	CaseRoutingPreviewRequestSourceTransactionRule CaseRoutingPreviewRequestSource = "TRANSACTION_RULE"
	CaseRoutingPreviewRequestSourceWorkflowBuilder CaseRoutingPreviewRequestSource = "WORKFLOW_BUILDER"
)

Known values of CaseRoutingPreviewRequestSource.

type CaseRoutingRule

type CaseRoutingRule struct {
	Name           string                 `json:"name"`
	Description    string                 `json:"description"`
	Priority       int64                  `json:"priority"`
	Conditions     []CaseRoutingCondition `json:"conditions"`
	RequiredSkills []string               `json:"required_skills"`
	Blueprint      string                 `json:"blueprint"`
	Team           string                 `json:"team"`
	IsActive       bool                   `json:"is_active"`
	UUID           string                 `json:"uuid"`
	CreatedAt      time.Time              `json:"created_at"`
	UpdatedAt      time.Time              `json:"updated_at"`
	Version        int64                  `json:"version"`
	BlueprintName  string                 `json:"blueprint_name"`
	TeamName       string                 `json:"team_name"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseRoutingRule is a response object.

func (*CaseRoutingRule) UnmarshalJSON

func (r *CaseRoutingRule) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseRoutingRule leniently.

type CaseRoutingRuleCreate

type CaseRoutingRuleCreate struct {
	// Required.
	Name        string      `json:"name"`
	Description Opt[string] `json:"description"`
	Priority    Opt[int64]  `json:"priority"`

	// Required.
	Conditions     []CaseRoutingConditionParam `json:"conditions"`
	RequiredSkills Opt[[]string]               `json:"required_skills"`

	// Required.
	Blueprint string      `json:"blueprint"`
	Team      Opt[string] `json:"team"`
	IsActive  Opt[bool]   `json:"is_active"`

	// Set false to save a never-published draft. The record remains inactive at
	// version 0 until the draft is explicitly published. Omitting this field
	// preserves immediate creation for existing integrations.
	Publish Opt[bool] `json:"publish"`
}

CaseRoutingRuleCreate is a request object.

func (CaseRoutingRuleCreate) MarshalJSON

func (r CaseRoutingRuleCreate) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseRoutingRuleUpdate

type CaseRoutingRuleUpdate struct {
	Name           Opt[string]                      `json:"name"`
	Description    Opt[string]                      `json:"description"`
	Priority       Opt[int64]                       `json:"priority"`
	Conditions     Opt[[]CaseRoutingConditionParam] `json:"conditions"`
	RequiredSkills Opt[[]string]                    `json:"required_skills"`
	Blueprint      Opt[string]                      `json:"blueprint"`
	Team           Opt[string]                      `json:"team"`
	IsActive       Opt[bool]                        `json:"is_active"`

	// Version opened by the editor. When supplied, stale writes return 409 without
	// changing the rule.
	ExpectedVersion Opt[int64] `json:"expected_version"`
}

CaseRoutingRuleUpdate is a request object.

func (CaseRoutingRuleUpdate) MarshalJSON

func (r CaseRoutingRuleUpdate) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CaseSubject

type CaseSubject struct {
	Type CaseSubjectType `json:"type"`
	UUID string          `json:"uuid"`
	Name string          `json:"name"`

	// The subject's vendor_data.
	ExternalID string `json:"external_id"`

	// Three-letter country code of the subject (ISO 3166-1 alpha-3), or null when
	// it is not known. For a business, its country of incorporation. For a person,
	// the issuing country of an identity document from their verifications; a
	// person with documents from several countries shows one of them, and ICAO
	// document codes such as `XXA` can appear.
	Country string `json:"country"`

	// Short-lived signed URL of the person's portrait image. Always null for a
	// business, and null for a person without a portrait. The URL expires, so
	// download the image when you read the case instead of storing the URL.
	Portrait string `json:"portrait"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseSubject: The single user or business the case is anchored to.

func (*CaseSubject) UnmarshalJSON

func (r *CaseSubject) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseSubject leniently.

type CaseSubjectType

type CaseSubjectType string

CaseSubjectType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CaseSubjectTypeUser     CaseSubjectType = "user"
	CaseSubjectTypeBusiness CaseSubjectType = "business"
)

Known values of CaseSubjectType.

type CaseTeamSummary

type CaseTeamSummary struct {
	UUID string `json:"uuid"`
	Name string `json:"name"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CaseTeamSummary: The review team that owns the case, or null when no team owns it. Routing sets it when a routing rule places the case with one of its teams. Change or clear it with `PATCH .../cases/{case_uuid}/` (`team`).

func (*CaseTeamSummary) UnmarshalJSON

func (r *CaseTeamSummary) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CaseTeamSummary leniently.

type CasesAssignParams

type CasesAssignParams struct {
	// null to unassign. Required.
	AssigneeUserID Opt[string] `json:"assignee_user_id"`
	AssigneeEmail  Opt[string] `json:"assignee_email"`
	AssigneeName   Opt[string] `json:"assignee_name"`
}

CasesAssignParams holds the parameters of Client.Cases.Assign.

func (CasesAssignParams) MarshalJSON

func (r CasesAssignParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesBlueprintsCreateParams

type CasesBlueprintsCreateParams struct {
	// Max 24 characters, e.g. "AML investigation". Required.
	Name        string      `json:"name"`
	Description Opt[string] `json:"description"`

	// List of User UUIDs. Empty arrays are rejected with "Pick at least one
	// assignee". Required.
	AssigneePool     []string                                         `json:"assignee_pool"`
	AssignmentMethod Opt[CasesBlueprintsCreateParamsAssignmentMethod] `json:"assignment_method"`

	// Automatic-mode threshold: "fewer than N cases of this blueprint assigned".
	MaxActiveCases    Opt[int64] `json:"max_active_cases"`
	EscalationEnabled Opt[bool]  `json:"escalation_enabled"`

	// Target blueprint UUID. Not enforced at save time, but the escalate action
	// fails with 400 until both escalation_enabled and escalation_blueprint are
	// set.
	EscalationBlueprint Opt[string] `json:"escalation_blueprint"`
	TransferEnabled     Opt[bool]   `json:"transfer_enabled"`

	// Setting this enables 4-eyes review: resolutions on this blueprint stage on
	// the checker blueprint's queue.
	FourEyesCheckerBlueprint Opt[string]                 `json:"four_eyes_checker_blueprint"`
	RequireResolutionNote    Opt[bool]                   `json:"require_resolution_note"`
	ContentConfig            Opt[CaseContentConfigParam] `json:"content_config"`
	IsActive                 Opt[bool]                   `json:"is_active"`

	// Default deadline for newly opened cases. Existing case deadlines are
	// unchanged.
	DefaultDeadlineHours Opt[int64] `json:"default_deadline_hours"`

	// Set false to save a never-published draft. The record remains inactive at
	// version 0 until the draft is explicitly published. Omitting this field
	// preserves immediate creation for existing integrations.
	Publish Opt[bool] `json:"publish"`
}

CasesBlueprintsCreateParams holds the parameters of Client.Cases.Blueprints.Create.

func (CasesBlueprintsCreateParams) MarshalJSON

func (r CasesBlueprintsCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesBlueprintsCreateParamsAssignmentMethod

type CasesBlueprintsCreateParamsAssignmentMethod string

CasesBlueprintsCreateParamsAssignmentMethod is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesBlueprintsCreateParamsAssignmentMethodManual    CasesBlueprintsCreateParamsAssignmentMethod = "MANUAL"
	CasesBlueprintsCreateParamsAssignmentMethodAutomatic CasesBlueprintsCreateParamsAssignmentMethod = "AUTOMATIC"
)

Known values of CasesBlueprintsCreateParamsAssignmentMethod.

type CasesBlueprintsInstallPresetsParams

type CasesBlueprintsInstallPresetsParams struct {
	// Subset of screening_hit, aml_investigation, suspicious_activity, kyc. Omit to
	// install all.
	PresetKeys Opt[[]string] `json:"preset_keys"`
}

CasesBlueprintsInstallPresetsParams holds the parameters of Client.Cases.Blueprints.InstallPresets.

func (CasesBlueprintsInstallPresetsParams) MarshalJSON

func (r CasesBlueprintsInstallPresetsParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesBlueprintsListHistoryParams

type CasesBlueprintsListHistoryParams struct {
	// Which field to use when ordering the results.
	Ordering Opt[string] `json:"-" query:"ordering"`

	// Number of results to return per page.
	Limit Opt[int64] `json:"-" query:"limit"`

	// The initial index from which to return the results.
	Offset Opt[int64] `json:"-" query:"offset"`
}

CasesBlueprintsListHistoryParams holds the parameters of Client.Cases.Blueprints.ListHistory.

func (CasesBlueprintsListHistoryParams) MarshalJSON

func (r CasesBlueprintsListHistoryParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesBlueprintsListParams

type CasesBlueprintsListParams struct {
	// Page size.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based offset.
	Offset Opt[int64] `json:"-" query:"offset"`
}

CasesBlueprintsListParams holds the parameters of Client.Cases.Blueprints.List.

func (CasesBlueprintsListParams) MarshalJSON

func (r CasesBlueprintsListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesBlueprintsListPresetsResponse

type CasesBlueprintsListPresetsResponse struct {
	Results []CasesBlueprintsListPresetsResponseResults `json:"results"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesBlueprintsListPresetsResponse is a response object.

func (*CasesBlueprintsListPresetsResponse) UnmarshalJSON

func (r *CasesBlueprintsListPresetsResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasesBlueprintsListPresetsResponse leniently.

type CasesBlueprintsListPresetsResponseResults

type CasesBlueprintsListPresetsResponseResults struct {
	PresetKey     CasesBlueprintsListPresetsResponseResultsPresetKey `json:"preset_key"`
	Name          string                                             `json:"name"`
	Description   string                                             `json:"description"`
	ContentConfig CaseContentConfig                                  `json:"content_config"`
	Installed     bool                                               `json:"installed"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesBlueprintsListPresetsResponseResults is a response object.

func (*CasesBlueprintsListPresetsResponseResults) UnmarshalJSON

func (r *CasesBlueprintsListPresetsResponseResults) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasesBlueprintsListPresetsResponseResults leniently.

type CasesBlueprintsListPresetsResponseResultsPresetKey

type CasesBlueprintsListPresetsResponseResultsPresetKey string

CasesBlueprintsListPresetsResponseResultsPresetKey is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesBlueprintsListPresetsResponseResultsPresetKeyScreeningHit       CasesBlueprintsListPresetsResponseResultsPresetKey = "screening_hit"
	CasesBlueprintsListPresetsResponseResultsPresetKeyAMLInvestigation   CasesBlueprintsListPresetsResponseResultsPresetKey = "aml_investigation"
	CasesBlueprintsListPresetsResponseResultsPresetKeySuspiciousActivity CasesBlueprintsListPresetsResponseResultsPresetKey = "suspicious_activity"
	CasesBlueprintsListPresetsResponseResultsPresetKeyKYC                CasesBlueprintsListPresetsResponseResultsPresetKey = "kyc"
)

Known values of CasesBlueprintsListPresetsResponseResultsPresetKey.

type CasesBlueprintsService

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

CasesBlueprintsService holds the cases blueprints operations. Use it through Client.Cases.Blueprints.

func (*CasesBlueprintsService) Create

Create: Create blueprint.

Create a case blueprint: general settings (assignment, escalation, transfer, 4-eyes pairing) plus content_config, the six sections that drive the case page. Set publish=false to create an unpublished draft; Publish creates its first live version. Discarding a never-published draft deletes it.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/blueprints/

func (*CasesBlueprintsService) Delete

func (r *CasesBlueprintsService) Delete(ctx context.Context, blueprintUUID string, opts ...option.RequestOption) error

Delete: Delete blueprint.

Delete a blueprint. Deletion always succeeds and does not touch the blueprint's cases: existing cases keep their blueprint reference and its settings continue to apply to them. A deleted blueprint no longer appears in blueprint lists and can no longer be chosen as a transfer target; if a maker blueprint is deleted while a resolution is pending 4-eyes approval, a rejected resolution leaves the case on the checker blueprint.

The organization and application ids come from the client options.

DELETE /v3/organization/{organization_id}/application/{application_id}/cases/blueprints/{blueprint_uuid}/

func (*CasesBlueprintsService) DiscardDraft

DiscardDraft

The organization and application ids come from the client options.

DELETE /v3/organization/{organization_id}/application/{application_id}/cases/blueprints/{blueprint_uuid}/draft/

func (*CasesBlueprintsService) InstallPresets

InstallPresets: Install blueprint presets.

Copy one or more presets into the application as editable blueprints. Idempotent per preset_key; omit preset_keys to install every preset not yet installed.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/blueprints/presets/install/

func (*CasesBlueprintsService) List

List: List blueprints.

List case blueprints for the application.

It returns one page; ListAutoPaging iterates over every item of every page.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/blueprints/

func (*CasesBlueprintsService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*CasesBlueprintsService) ListHistory

ListHistory

It returns one page; ListHistoryAutoPaging iterates over every item of every page.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/blueprints/{blueprint_uuid}/history/

func (*CasesBlueprintsService) ListHistoryAutoPaging

ListHistoryAutoPaging iterates over every item of every page of ListHistory, fetching pages as needed.

func (*CasesBlueprintsService) ListPresets

ListPresets: List blueprint presets.

List the four built-in presets (Screening hit, AML investigation, Suspicious activity, KYC review) with their content_config and whether each is already installed on this application.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/blueprints/presets/

func (*CasesBlueprintsService) Publish

Publish

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/blueprints/{blueprint_uuid}/publish/

func (*CasesBlueprintsService) Retrieve

func (r *CasesBlueprintsService) Retrieve(ctx context.Context, blueprintUUID string, opts ...option.RequestOption) (*CaseBlueprintDetail, error)

Retrieve: Get blueprint.

Retrieve a blueprint, including its connected creation sources (AML config, transaction rules, workflow nodes) and which blueprints escalate to it.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/blueprints/{blueprint_uuid}/

func (*CasesBlueprintsService) RetrieveDraft

RetrieveDraft

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/blueprints/{blueprint_uuid}/draft/

func (*CasesBlueprintsService) SaveDraft

SaveDraft

The organization and application ids come from the client options.

PUT /v3/organization/{organization_id}/application/{application_id}/cases/blueprints/{blueprint_uuid}/draft/

func (*CasesBlueprintsService) Update

Update: Update blueprint.

Partially update a blueprint's general settings or content_config.

The organization and application ids come from the client options.

PATCH /v3/organization/{organization_id}/application/{application_id}/cases/blueprints/{blueprint_uuid}/

type CasesBlueprintsUpdateParams

type CasesBlueprintsUpdateParams struct {
	// Max 24 characters, e.g. "AML investigation".
	Name        Opt[string] `json:"name"`
	Description Opt[string] `json:"description"`

	// List of User UUIDs. Empty arrays are rejected with "Pick at least one
	// assignee".
	AssigneePool     Opt[[]string]                                    `json:"assignee_pool"`
	AssignmentMethod Opt[CasesBlueprintsUpdateParamsAssignmentMethod] `json:"assignment_method"`

	// Automatic-mode threshold: "fewer than N cases of this blueprint assigned".
	MaxActiveCases    Opt[int64] `json:"max_active_cases"`
	EscalationEnabled Opt[bool]  `json:"escalation_enabled"`

	// Target blueprint UUID. Not enforced at save time, but the escalate action
	// fails with 400 until both escalation_enabled and escalation_blueprint are
	// set.
	EscalationBlueprint Opt[string] `json:"escalation_blueprint"`
	TransferEnabled     Opt[bool]   `json:"transfer_enabled"`

	// Setting this enables 4-eyes review: resolutions on this blueprint stage on
	// the checker blueprint's queue.
	FourEyesCheckerBlueprint Opt[string]                 `json:"four_eyes_checker_blueprint"`
	RequireResolutionNote    Opt[bool]                   `json:"require_resolution_note"`
	ContentConfig            Opt[CaseContentConfigParam] `json:"content_config"`
	IsActive                 Opt[bool]                   `json:"is_active"`

	// Default deadline for newly opened cases. Existing case deadlines are
	// unchanged.
	DefaultDeadlineHours Opt[int64] `json:"default_deadline_hours"`

	// The version opened by the editor. A stale version returns 409 without
	// changing the review policy.
	ExpectedVersion Opt[int64] `json:"expected_version"`
}

CasesBlueprintsUpdateParams holds the parameters of Client.Cases.Blueprints.Update.

func (CasesBlueprintsUpdateParams) MarshalJSON

func (r CasesBlueprintsUpdateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesBlueprintsUpdateParamsAssignmentMethod

type CasesBlueprintsUpdateParamsAssignmentMethod string

CasesBlueprintsUpdateParamsAssignmentMethod is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesBlueprintsUpdateParamsAssignmentMethodManual    CasesBlueprintsUpdateParamsAssignmentMethod = "MANUAL"
	CasesBlueprintsUpdateParamsAssignmentMethodAutomatic CasesBlueprintsUpdateParamsAssignmentMethod = "AUTOMATIC"
)

Known values of CasesBlueprintsUpdateParamsAssignmentMethod.

type CasesBulkAssignParams

type CasesBulkAssignParams struct {
	// Required.
	CaseUUIDs []string `json:"case_uuids"`

	// Required.
	AssigneeUserID Opt[string] `json:"assignee_user_id"`
	AssigneeEmail  Opt[string] `json:"assignee_email"`
	AssigneeName   Opt[string] `json:"assignee_name"`
}

CasesBulkAssignParams holds the parameters of Client.Cases.BulkAssign.

func (CasesBulkAssignParams) MarshalJSON

func (r CasesBulkAssignParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesBulkUpdateStatusParams

type CasesBulkUpdateStatusParams struct {
	// Required.
	CaseUUIDs []string `json:"case_uuids"`

	// Required.
	Status CasesBulkUpdateStatusParamsStatus `json:"status"`

	// Required when status is RESOLVED.
	Resolution Opt[CasesBulkUpdateStatusParamsResolution] `json:"resolution"`
	Note       Opt[string]                                `json:"note"`
}

CasesBulkUpdateStatusParams holds the parameters of Client.Cases.BulkUpdateStatus.

func (CasesBulkUpdateStatusParams) MarshalJSON

func (r CasesBulkUpdateStatusParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesBulkUpdateStatusParamsResolution

type CasesBulkUpdateStatusParamsResolution string

CasesBulkUpdateStatusParamsResolution: Required when status is RESOLVED.

CasesBulkUpdateStatusParamsResolution is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesBulkUpdateStatusParamsResolutionFalsePositive         CasesBulkUpdateStatusParamsResolution = "FALSE_POSITIVE"
	CasesBulkUpdateStatusParamsResolutionValidThreat           CasesBulkUpdateStatusParamsResolution = "VALID_THREAT"
	CasesBulkUpdateStatusParamsResolutionInconclusive          CasesBulkUpdateStatusParamsResolution = "INCONCLUSIVE"
	CasesBulkUpdateStatusParamsResolutionRequirementsNotMet    CasesBulkUpdateStatusParamsResolution = "REQUIREMENTS_NOT_MET"
	CasesBulkUpdateStatusParamsResolutionRequirementsSatisfied CasesBulkUpdateStatusParamsResolution = "REQUIREMENTS_SATISFIED"
)

Known values of CasesBulkUpdateStatusParamsResolution.

type CasesBulkUpdateStatusParamsStatus

type CasesBulkUpdateStatusParamsStatus string

CasesBulkUpdateStatusParamsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesBulkUpdateStatusParamsStatusOpen         CasesBulkUpdateStatusParamsStatus = "OPEN"
	CasesBulkUpdateStatusParamsStatusAwaitingUser CasesBulkUpdateStatusParamsStatus = "AWAITING_USER"
	CasesBulkUpdateStatusParamsStatusResolved     CasesBulkUpdateStatusParamsStatus = "RESOLVED"
)

Known values of CasesBulkUpdateStatusParamsStatus.

type CasesChecklistService

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

CasesChecklistService holds the cases checklist operations. Use it through Client.Cases.Checklist.

func (*CasesChecklistService) List

List: List case checklist.

List the case's checklist items, copied from the blueprint's content_config.checklist.items at creation, ordered.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/checklist/

func (*CasesChecklistService) ToggleItem

ToggleItem: Toggle checklist item.

Mark a checklist item complete or incomplete. Resolution is blocked while any item is incomplete, unless the blueprint marks the checklist optional.

The organization and application ids come from the client options.

PATCH /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/checklist/{item_uuid}/

type CasesChecklistToggleItemParams

type CasesChecklistToggleItemParams struct {
	// Required.
	IsCompleted bool `json:"is_completed"`
}

CasesChecklistToggleItemParams holds the parameters of Client.Cases.Checklist.ToggleItem.

func (CasesChecklistToggleItemParams) MarshalJSON

func (r CasesChecklistToggleItemParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesCreateParams

type CasesCreateParams struct {
	// Required.
	Title string `json:"title"`

	// CaseBlueprint UUID. Omit for no blueprint.
	Blueprint Opt[string]                    `json:"blueprint"`
	Priority  Opt[CasesCreateParamsPriority] `json:"priority"`
	DueAt     Opt[time.Time]                 `json:"due_at"`
	Tags      Opt[[]string]                  `json:"tags"`

	// Required unless links is provided; the case's exactly-one subject.
	Subject Opt[CasesCreateParamsSubject] `json:"subject"`

	// Sessions/business sessions/transactions to attach on creation, e.g.
	// [{"entity_type": "transaction", "entity_uuid": "..."}]. When subject is
	// omitted, the subject is derived from the first link's owner.
	Links Opt[[]map[string]any] `json:"links"`

	// User UUID to assign immediately.
	AssignedTo Opt[string] `json:"assigned_to"`

	// Recheck existing investigations before creating the case. When true, a
	// subject with existing cases requires a nonblank separate_incident_reason. The
	// console always enables this protection. Omitting it preserves existing API
	// behavior.
	ReviewDuplicates       Opt[bool]                                       `json:"review_duplicates"`
	SeparateIncidentReason Opt[string]                                     `json:"separate_incident_reason"`
	SourceContext          Opt[CaseDuplicateCaseFraudSourceContextRequest] `json:"source_context"`
}

CasesCreateParams holds the parameters of Client.Cases.Create.

func (CasesCreateParams) MarshalJSON

func (r CasesCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesCreateParamsPriority

type CasesCreateParamsPriority string

CasesCreateParamsPriority is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesCreateParamsPriorityLow    CasesCreateParamsPriority = "LOW"
	CasesCreateParamsPriorityMedium CasesCreateParamsPriority = "MEDIUM"
	CasesCreateParamsPriorityHigh   CasesCreateParamsPriority = "HIGH"
)

Known values of CasesCreateParamsPriority.

type CasesCreateParamsSubject

type CasesCreateParamsSubject struct {
	Type Opt[CasesCreateParamsSubjectType] `json:"type"`
	UUID Opt[string]                       `json:"uuid"`
}

CasesCreateParamsSubject: Required unless links is provided; the case's exactly-one subject.

func (CasesCreateParamsSubject) MarshalJSON

func (r CasesCreateParamsSubject) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesCreateParamsSubjectType

type CasesCreateParamsSubjectType string

CasesCreateParamsSubjectType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesCreateParamsSubjectTypeUser     CasesCreateParamsSubjectType = "user"
	CasesCreateParamsSubjectTypeBusiness CasesCreateParamsSubjectType = "business"
)

Known values of CasesCreateParamsSubjectType.

type CasesLinksCreateParams

type CasesLinksCreateParams struct {
	// Required.
	EntityType CasesLinksCreateParamsEntityType `json:"entity_type"`

	// Required.
	EntityUUID string `json:"entity_uuid"`
}

CasesLinksCreateParams holds the parameters of Client.Cases.Links.Create.

func (CasesLinksCreateParams) MarshalJSON

func (r CasesLinksCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesLinksCreateParamsEntityType

type CasesLinksCreateParamsEntityType string

CasesLinksCreateParamsEntityType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesLinksCreateParamsEntityTypeSession         CasesLinksCreateParamsEntityType = "session"
	CasesLinksCreateParamsEntityTypeBusinessSession CasesLinksCreateParamsEntityType = "business_session"
	CasesLinksCreateParamsEntityTypeTransaction     CasesLinksCreateParamsEntityType = "transaction"
)

Known values of CasesLinksCreateParamsEntityType.

type CasesLinksService

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

CasesLinksService holds the cases links operations. Use it through Client.Cases.Links.

func (*CasesLinksService) Create

func (r *CasesLinksService) Create(ctx context.Context, caseUUID string, params CasesLinksCreateParams, opts ...option.RequestOption) (*CaseLink, error)

Create: Add case link.

Attach a session, business session, or transaction to the case. Rejected with 400 if the entity belongs to a different subject than the case.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/links/

func (*CasesLinksService) Delete

func (r *CasesLinksService) Delete(ctx context.Context, caseUUID string, linkUUID string, opts ...option.RequestOption) error

Delete: Remove case link.

Detach a linked session, business session, or transaction from the case.

The organization and application ids come from the client options.

DELETE /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/links/{link_uuid}/

func (*CasesLinksService) List

func (r *CasesLinksService) List(ctx context.Context, caseUUID string, opts ...option.RequestOption) ([]CaseLink, error)

List: List case links.

List sessions, business sessions, and transactions attached to the case.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/links/

type CasesListActionReceiptsParams

type CasesListActionReceiptsParams struct {
	Offset Opt[int64] `json:"-" query:"offset"`
}

CasesListActionReceiptsParams holds the parameters of Client.Cases.ListActionReceipts.

func (CasesListActionReceiptsParams) MarshalJSON

func (r CasesListActionReceiptsParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesListEventsParams

type CasesListEventsParams struct {
	// Page size.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based offset.
	Offset Opt[int64] `json:"-" query:"offset"`
}

CasesListEventsParams holds the parameters of Client.Cases.ListEvents.

func (CasesListEventsParams) MarshalJSON

func (r CasesListEventsParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesListParams

type CasesListParams struct {
	// Page size. Defaults to 50.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based offset of the first record.
	Offset Opt[int64] `json:"-" query:"offset"`

	// Comma-separated statuses to include, e.g. OPEN,AWAITING_USER.
	StatusIn Opt[string] `json:"-" query:"status__in"`

	// Comma-separated priorities to include.
	Priority Opt[string] `json:"-" query:"priority"`

	// Comma-separated sources to include.
	SourceIn Opt[string] `json:"-" query:"source__in"`

	// Filter to cases on this blueprint.
	Blueprint Opt[string] `json:"-" query:"blueprint"`

	// Filter to cases assigned to this user.
	AssignedTo Opt[string] `json:"-" query:"assigned_to"`

	// true for unassigned cases, false for assigned cases.
	Unassigned Opt[bool] `json:"-" query:"unassigned"`

	// Filter to cases carrying this exact tag.
	Tag Opt[string] `json:"-" query:"tag"`

	// Matches title, case_number, tag, subject name/UUID/external ID, linked
	// session UUID, or linked transaction UUID.
	Search Opt[string] `json:"-" query:"search"`

	// Created-at lower bound (inclusive).
	DateFrom Opt[string] `json:"-" query:"date_from"`

	// Created-at upper bound (inclusive).
	DateTo Opt[string] `json:"-" query:"date_to"`

	// due_at upper bound.
	DueBefore Opt[time.Time] `json:"-" query:"due_before"`

	// true to return only overdue open/awaiting-user cases.
	Overdue Opt[bool] `json:"-" query:"overdue"`

	// Sort order. due_at sorts nulls last.
	Ordering Opt[CasesListParamsOrdering] `json:"-" query:"ordering"`
}

CasesListParams holds the parameters of Client.Cases.List.

func (CasesListParams) MarshalJSON

func (r CasesListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesListParamsOrdering

type CasesListParamsOrdering string

CasesListParamsOrdering is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesListParamsOrderingCreatedAt  CasesListParamsOrdering = "created_at"
	CasesListParamsOrderingCreatedAt2 CasesListParamsOrdering = "-created_at"
	CasesListParamsOrderingDueAt      CasesListParamsOrdering = "due_at"
	CasesListParamsOrderingDueAt2     CasesListParamsOrdering = "-due_at"
)

Known values of CasesListParamsOrdering.

type CasesListReviewersResponse

type CasesListReviewersResponse struct {
	Results []CasesListReviewersResponseResults `json:"results"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesListReviewersResponse is a response object.

func (*CasesListReviewersResponse) UnmarshalJSON

func (r *CasesListReviewersResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasesListReviewersResponse leniently.

type CasesListReviewersResponseResults

type CasesListReviewersResponseResults struct {
	UserID string `json:"user_id"`
	Email  string `json:"email"`
	Name   string `json:"name"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesListReviewersResponseResults is a response object.

func (*CasesListReviewersResponseResults) UnmarshalJSON

func (r *CasesListReviewersResponseResults) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasesListReviewersResponseResults leniently.

type CasesNotesCreateAttachmentUploadParams

type CasesNotesCreateAttachmentUploadParams struct {
	// Required.
	File File `json:"-" form:"file"`
}

CasesNotesCreateAttachmentUploadParams holds the parameters of Client.Cases.Notes.CreateAttachmentUpload.

func (CasesNotesCreateAttachmentUploadParams) MarshalJSON

func (r CasesNotesCreateAttachmentUploadParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesNotesCreateAttachmentUploadResponse

type CasesNotesCreateAttachmentUploadResponse struct {
	S3Key    string `json:"s3_key"`
	URL      string `json:"url"`
	Filename string `json:"filename"`
	FileSize int64  `json:"file_size"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesNotesCreateAttachmentUploadResponse is a response object.

func (*CasesNotesCreateAttachmentUploadResponse) UnmarshalJSON

func (r *CasesNotesCreateAttachmentUploadResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasesNotesCreateAttachmentUploadResponse leniently.

type CasesNotesListParams

type CasesNotesListParams struct {
	// Which field to use when ordering the results.
	Ordering Opt[string] `json:"-" query:"ordering"`

	// Number of results to return per page.
	Limit Opt[int64] `json:"-" query:"limit"`

	// The initial index from which to return the results.
	Offset Opt[int64] `json:"-" query:"offset"`
}

CasesNotesListParams holds the parameters of Client.Cases.Notes.List.

func (CasesNotesListParams) MarshalJSON

func (r CasesNotesListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesNotesRetrieveAttachmentURLParams

type CasesNotesRetrieveAttachmentURLParams struct {
	// The attachment's s3_key, as returned by upload or listed on the note.
	// Required.
	S3Key string `json:"-" query:"s3_key"`
}

CasesNotesRetrieveAttachmentURLParams holds the parameters of Client.Cases.Notes.RetrieveAttachmentURL.

func (CasesNotesRetrieveAttachmentURLParams) MarshalJSON

func (r CasesNotesRetrieveAttachmentURLParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesNotesRetrieveAttachmentURLResponse

type CasesNotesRetrieveAttachmentURLResponse struct {
	S3Key    string `json:"s3_key"`
	URL      string `json:"url"`
	Filename string `json:"filename"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesNotesRetrieveAttachmentURLResponse is a response object.

func (*CasesNotesRetrieveAttachmentURLResponse) UnmarshalJSON

func (r *CasesNotesRetrieveAttachmentURLResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasesNotesRetrieveAttachmentURLResponse leniently.

type CasesNotesService

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

CasesNotesService holds the cases notes operations. Use it through Client.Cases.Notes.

func (*CasesNotesService) Create

Create

Add a case-scoped note. An optional client_reference makes an unchanged retry return the same note without duplicate activity or notifications. reply_to must identify a live note in this case. The response includes a bounded parent excerpt without copying that excerpt into the saved reply.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/notes/

func (*CasesNotesService) CreateAttachmentUpload

CreateAttachmentUpload: Upload note attachment.

Upload a file (JPEG, PNG, WebP, PDF, plain text, or CSV; max 5 MB) to attach to a note. Returns the s3_key to pass in the note's attachments array.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/notes/presign/

func (*CasesNotesService) Delete

func (r *CasesNotesService) Delete(ctx context.Context, caseUUID string, noteUUID string, opts ...option.RequestOption) error

Delete

The organization and application ids come from the client options.

DELETE /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/notes/{note_uuid}/

func (*CasesNotesService) List

List

It returns one page; ListAutoPaging iterates over every item of every page.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/notes/

func (*CasesNotesService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*CasesNotesService) RetrieveAttachmentURL

RetrieveAttachmentURL: Get note attachment URL.

Mint a fresh presigned download URL for an attachment already stored on one of the case's notes.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/notes/presign/

func (*CasesNotesService) Update

Update

Pin or unpin an existing note. Pinned notes appear first. Pin changes are recorded in case activity and do not change evidence or source decisions.

The organization and application ids come from the client options.

PATCH /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/notes/{note_uuid}/

type CasesPrintResponse

type CasesPrintResponse struct {
	URL string `json:"url"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesPrintResponse is a response object.

func (*CasesPrintResponse) UnmarshalJSON

func (r *CasesPrintResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasesPrintResponse leniently.

type CasesRegulatoryReportsCreateParams

type CasesRegulatoryReportsCreateParams struct {
	// Required unless a template is given; the template's report_type is used
	// otherwise.
	ReportType Opt[CasesRegulatoryReportsCreateParamsReportType] `json:"report_type"`

	// Required unless a template is given.
	Jurisdiction Opt[string] `json:"jurisdiction"`

	// Report template UUID; its field_config seeds the draft before case-derived
	// data is merged in.
	Template Opt[string] `json:"template"`

	// Transactions to attach; defaults to the case's linked transactions.
	Transactions      Opt[[]string]                                         `json:"transactions"`
	RentityID         Opt[string]                                           `json:"rentity_id"`
	RentityBranch     Opt[string]                                           `json:"rentity_branch"`
	SubmissionCode    Opt[CasesRegulatoryReportsCreateParamsSubmissionCode] `json:"submission_code"`
	EntityReference   Opt[string]                                           `json:"entity_reference"`
	FiuRefNumber      Opt[string]                                           `json:"fiu_ref_number"`
	CurrencyCodeLocal Opt[string]                                           `json:"currency_code_local"`
	SubmissionDate    Opt[time.Time]                                        `json:"submission_date"`
	ReportingPerson   Opt[map[string]any]                                   `json:"reporting_person"`
	Location          Opt[map[string]any]                                   `json:"location"`
	Reason            Opt[string]                                           `json:"reason"`
	Action            Opt[string]                                           `json:"action"`
	Activity          Opt[string]                                           `json:"activity"`
	Narrative         Opt[CasesRegulatoryReportsCreateParamsNarrative]      `json:"narrative"`
	ReportIndicators  Opt[[]string]                                         `json:"report_indicators"`
	IncludedFields    Opt[[]string]                                         `json:"included_fields"`
}

CasesRegulatoryReportsCreateParams holds the parameters of Client.Cases.RegulatoryReports.Create.

func (CasesRegulatoryReportsCreateParams) MarshalJSON

func (r CasesRegulatoryReportsCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesRegulatoryReportsCreateParamsNarrative

type CasesRegulatoryReportsCreateParamsNarrative struct {
	Who   Opt[string] `json:"who"`
	What  Opt[string] `json:"what"`
	When  Opt[string] `json:"when"`
	Where Opt[string] `json:"where"`
	Why   Opt[string] `json:"why"`
	How   Opt[string] `json:"how"`
}

CasesRegulatoryReportsCreateParamsNarrative is a request object.

func (CasesRegulatoryReportsCreateParamsNarrative) MarshalJSON

MarshalJSON encodes the fields that are set.

type CasesRegulatoryReportsCreateParamsReportType

type CasesRegulatoryReportsCreateParamsReportType string

CasesRegulatoryReportsCreateParamsReportType: Required unless a template is given; the template's report_type is used otherwise.

CasesRegulatoryReportsCreateParamsReportType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesRegulatoryReportsCreateParamsReportTypeSar CasesRegulatoryReportsCreateParamsReportType = "SAR"
	CasesRegulatoryReportsCreateParamsReportTypeStr CasesRegulatoryReportsCreateParamsReportType = "STR"
	CasesRegulatoryReportsCreateParamsReportTypeCtr CasesRegulatoryReportsCreateParamsReportType = "CTR"
	CasesRegulatoryReportsCreateParamsReportTypeTtr CasesRegulatoryReportsCreateParamsReportType = "TTR"
	CasesRegulatoryReportsCreateParamsReportTypeUtr CasesRegulatoryReportsCreateParamsReportType = "UTR"
	CasesRegulatoryReportsCreateParamsReportTypeIft CasesRegulatoryReportsCreateParamsReportType = "IFT"
	CasesRegulatoryReportsCreateParamsReportTypeCbr CasesRegulatoryReportsCreateParamsReportType = "CBR"
	CasesRegulatoryReportsCreateParamsReportTypeTfr CasesRegulatoryReportsCreateParamsReportType = "TFR"
)

Known values of CasesRegulatoryReportsCreateParamsReportType.

type CasesRegulatoryReportsCreateParamsSubmissionCode

type CasesRegulatoryReportsCreateParamsSubmissionCode string

CasesRegulatoryReportsCreateParamsSubmissionCode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesRegulatoryReportsCreateParamsSubmissionCodeE CasesRegulatoryReportsCreateParamsSubmissionCode = "E"
	CasesRegulatoryReportsCreateParamsSubmissionCodeM CasesRegulatoryReportsCreateParamsSubmissionCode = "M"
)

Known values of CasesRegulatoryReportsCreateParamsSubmissionCode.

type CasesRegulatoryReportsListParams

type CasesRegulatoryReportsListParams struct {
	// Page size.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based offset.
	Offset Opt[int64] `json:"-" query:"offset"`
}

CasesRegulatoryReportsListParams holds the parameters of Client.Cases.RegulatoryReports.List.

func (CasesRegulatoryReportsListParams) MarshalJSON

func (r CasesRegulatoryReportsListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesRegulatoryReportsService

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

CasesRegulatoryReportsService holds the cases regulatory_reports operations. Use it through Client.Cases.RegulatoryReports.

func (*CasesRegulatoryReportsService) Create

Create: Create report from case.

Create a draft FIU report for the case: DRAFT status, auto-populated from the optional template plus the case's subject, linked transactions, and narrative. Validate then finalize to produce the goAML XML and PDF.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/regulatory-reports/

func (*CasesRegulatoryReportsService) List

List: List reports for case.

List FIU reports generated for the case.

It returns one page; ListAutoPaging iterates over every item of every page.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/regulatory-reports/

func (*CasesRegulatoryReportsService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

type CasesRejectResolutionParams

type CasesRejectResolutionParams struct {
	Notes Opt[string] `json:"notes"`
}

CasesRejectResolutionParams holds the parameters of Client.Cases.RejectResolution.

func (CasesRejectResolutionParams) MarshalJSON

func (r CasesRejectResolutionParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesRequestsListParams

type CasesRequestsListParams struct {
	// Which field to use when ordering the results.
	Ordering Opt[string] `json:"-" query:"ordering"`

	// Number of results to return per page.
	Limit Opt[int64] `json:"-" query:"limit"`

	// The initial index from which to return the results.
	Offset Opt[int64] `json:"-" query:"offset"`
}

CasesRequestsListParams holds the parameters of Client.Cases.Requests.List.

func (CasesRequestsListParams) MarshalJSON

func (r CasesRequestsListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesRequestsRemindResponse

type CasesRequestsRemindResponse struct {
	Request CustomerMessagingCaseRequest `json:"request"`

	// When this reminder was recorded.
	RemindedAt time.Time `json:"reminded_at"`

	// How this reminder's delivery ended. SIMULATED: the email was not sent.
	// UNKNOWN: the email might have been accepted; it is not sent again
	// automatically.
	DeliveryStatus CasesRequestsRemindResponseDeliveryStatus `json:"delivery_status"`

	// When you can remind this request again: `reminded_at` plus 24 hours.
	NextReminderAt time.Time `json:"next_reminder_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesRequestsRemindResponse is a response object.

func (*CasesRequestsRemindResponse) UnmarshalJSON

func (r *CasesRequestsRemindResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasesRequestsRemindResponse leniently.

type CasesRequestsRemindResponseDeliveryStatus

type CasesRequestsRemindResponseDeliveryStatus string

CasesRequestsRemindResponseDeliveryStatus: How this reminder's delivery ended. SIMULATED: the email was not sent. UNKNOWN: the email might have been accepted; it is not sent again automatically.

CasesRequestsRemindResponseDeliveryStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesRequestsRemindResponseDeliveryStatusSent      CasesRequestsRemindResponseDeliveryStatus = "SENT"
	CasesRequestsRemindResponseDeliveryStatusSimulated CasesRequestsRemindResponseDeliveryStatus = "SIMULATED"
	CasesRequestsRemindResponseDeliveryStatusUnknown   CasesRequestsRemindResponseDeliveryStatus = "UNKNOWN"
)

Known values of CasesRequestsRemindResponseDeliveryStatus.

type CasesRequestsService

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

CasesRequestsService holds the cases requests operations. Use it through Client.Cases.Requests.

func (*CasesRequestsService) Cancel

func (r *CasesRequestsService) Cancel(ctx context.Context, caseUUID string, requestUUID string, opts ...option.RequestOption) (*CustomerMessagingCaseRequest, error)

Cancel

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/requests/{request_uuid}/cancel/

func (*CasesRequestsService) Create

Create

Confirm the exact signed preview within 15 minutes. Only fixed templates and an OTP-verified contact belonging to the case subject are accepted. The request ID makes retries idempotent. Delivery is queued; SENT, SIMULATED and UNKNOWN are distinct outcomes. An actionable request sets the case to Awaiting user. A review update leaves its status unchanged.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/requests/

func (*CasesRequestsService) List

List

It returns one page; ListAutoPaging iterates over every item of every page.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/requests/

func (*CasesRequestsService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*CasesRequestsService) Preview

Preview

Render the production email without sending or changing the case. Returns the exact recipient, sender, subject, body and a signed preview_token. Send the same contact_id, purpose, language, request_id, expires_at and preview_token to confirm within 15 minutes.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/requests/preview/

func (*CasesRequestsService) Remind

func (r *CasesRequestsService) Remind(ctx context.Context, caseUUID string, requestUUID string, opts ...option.RequestOption) (*CasesRequestsRemindResponse, error)

Remind: Remind the customer of a request.

Send a waiting customer request's email again, to the same verified recipient, with the same content. You can remind a request at most once every 24 hours. A reminder changes nothing else: the request keeps its deadline and the case keeps its status. Each reminder is logged on the case as a CUSTOMER_REQUEST event with action `reminded`. The response's `delivery_status` is how this reminder's delivery ended: SENT, SIMULATED (the email was not sent), or UNKNOWN (the email might have been accepted; it is not sent again automatically). `next_reminder_at` is when you can remind this request again. Returns 409 with a `reason` when the customer no longer has the request to answer, and 429 with `retry_at` and a `Retry-After` header when the request was reminded in the last 24 hours. Requires `write:cases`.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/requests/{request_uuid}/remind/

func (*CasesRequestsService) RetrieveAttachment

func (r *CasesRequestsService) RetrieveAttachment(ctx context.Context, caseUUID string, requestUUID string, opts ...option.RequestOption) (*http.Response, error)

RetrieveAttachment

The response is a file (image/jpeg). Read it from the returned response's body and close it.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/requests/{request_uuid}/attachment/

func (*CasesRequestsService) RetrieveOptions

RetrieveOptions

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/requests/options/

type CasesResolveParams

type CasesResolveParams struct {
	// Required.
	Resolution CasesResolveParamsResolution `json:"resolution"`

	// Required when the blueprint sets require_resolution_note.
	Note Opt[string] `json:"note"`

	// Four-eyes blueprints only. The user uuid of the member who must approve this
	// resolution (the same id as `assigned_to.uuid` on a case, or
	// `members[].user_id` on a review team). The member must have case access to
	// this application and cannot be the officer who submits the resolution. Omit
	// it or send null to leave the resolution to the checker queue.
	Checker Opt[string] `json:"checker"`
}

CasesResolveParams holds the parameters of Client.Cases.Resolve.

func (CasesResolveParams) MarshalJSON

func (r CasesResolveParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesResolveParamsResolution

type CasesResolveParamsResolution string

CasesResolveParamsResolution is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesResolveParamsResolutionFalsePositive         CasesResolveParamsResolution = "FALSE_POSITIVE"
	CasesResolveParamsResolutionValidThreat           CasesResolveParamsResolution = "VALID_THREAT"
	CasesResolveParamsResolutionInconclusive          CasesResolveParamsResolution = "INCONCLUSIVE"
	CasesResolveParamsResolutionRequirementsNotMet    CasesResolveParamsResolution = "REQUIREMENTS_NOT_MET"
	CasesResolveParamsResolutionRequirementsSatisfied CasesResolveParamsResolution = "REQUIREMENTS_SATISFIED"
)

Known values of CasesResolveParamsResolution.

type CasesRetrieveStatisticsParams

type CasesRetrieveStatisticsParams struct {
	// Range start (inclusive). Defaults to 30 days ago.
	DateFrom Opt[string] `json:"-" query:"date_from"`

	// Range end (inclusive). Defaults to today.
	DateTo Opt[string] `json:"-" query:"date_to"`

	// Filter by the current blueprint UUID.
	Blueprint Opt[string] `json:"-" query:"blueprint"`

	// Filter by the current assigned reviewer user UUID.
	AssignedTo Opt[string] `json:"-" query:"assigned_to"`

	// Filter by current case priority.
	Priority Opt[CasesRetrieveStatisticsParamsPriority] `json:"-" query:"priority"`

	// Filter by case creation source.
	Source Opt[CasesRetrieveStatisticsParamsSource] `json:"-" query:"source"`

	// Filter by current case status.
	Status Opt[CasesRetrieveStatisticsParamsStatus] `json:"-" query:"status"`
}

CasesRetrieveStatisticsParams holds the parameters of Client.Cases.RetrieveStatistics.

func (CasesRetrieveStatisticsParams) MarshalJSON

func (r CasesRetrieveStatisticsParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesRetrieveStatisticsParamsPriority

type CasesRetrieveStatisticsParamsPriority string

CasesRetrieveStatisticsParamsPriority is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesRetrieveStatisticsParamsPriorityLow    CasesRetrieveStatisticsParamsPriority = "LOW"
	CasesRetrieveStatisticsParamsPriorityMedium CasesRetrieveStatisticsParamsPriority = "MEDIUM"
	CasesRetrieveStatisticsParamsPriorityHigh   CasesRetrieveStatisticsParamsPriority = "HIGH"
)

Known values of CasesRetrieveStatisticsParamsPriority.

type CasesRetrieveStatisticsParamsSource

type CasesRetrieveStatisticsParamsSource string

CasesRetrieveStatisticsParamsSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesRetrieveStatisticsParamsSourceManual          CasesRetrieveStatisticsParamsSource = "MANUAL"
	CasesRetrieveStatisticsParamsSourceAMLScreening    CasesRetrieveStatisticsParamsSource = "AML_SCREENING"
	CasesRetrieveStatisticsParamsSourceTransactionRule CasesRetrieveStatisticsParamsSource = "TRANSACTION_RULE"
	CasesRetrieveStatisticsParamsSourceWorkflowBuilder CasesRetrieveStatisticsParamsSource = "WORKFLOW_BUILDER"
)

Known values of CasesRetrieveStatisticsParamsSource.

type CasesRetrieveStatisticsParamsStatus

type CasesRetrieveStatisticsParamsStatus string

CasesRetrieveStatisticsParamsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesRetrieveStatisticsParamsStatusOpen         CasesRetrieveStatisticsParamsStatus = "OPEN"
	CasesRetrieveStatisticsParamsStatusAwaitingUser CasesRetrieveStatisticsParamsStatus = "AWAITING_USER"
	CasesRetrieveStatisticsParamsStatusResolved     CasesRetrieveStatisticsParamsStatus = "RESOLVED"
)

Known values of CasesRetrieveStatisticsParamsStatus.

type CasesRetrieveStatisticsResponse

type CasesRetrieveStatisticsResponse struct {
	Series []CasesRetrieveStatisticsResponseSeries `json:"series"`
	Tables CasesRetrieveStatisticsResponseTables   `json:"tables"`
	Totals CasesRetrieveStatisticsResponseTotals   `json:"totals"`

	// Live snapshot, not scoped to the date range.
	Queue CasesRetrieveStatisticsResponseQueue `json:"queue"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesRetrieveStatisticsResponse is a response object.

func (*CasesRetrieveStatisticsResponse) UnmarshalJSON

func (r *CasesRetrieveStatisticsResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasesRetrieveStatisticsResponse leniently.

type CasesRetrieveStatisticsResponseQueue

type CasesRetrieveStatisticsResponseQueue struct {
	Open    int64 `json:"open"`
	Overdue int64 `json:"overdue"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesRetrieveStatisticsResponseQueue: Live snapshot, not scoped to the date range.

func (*CasesRetrieveStatisticsResponseQueue) UnmarshalJSON

func (r *CasesRetrieveStatisticsResponseQueue) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasesRetrieveStatisticsResponseQueue leniently.

type CasesRetrieveStatisticsResponseSeries

type CasesRetrieveStatisticsResponseSeries struct {
	Date     string `json:"date"`
	Created  int64  `json:"created"`
	Reviewed int64  `json:"reviewed"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesRetrieveStatisticsResponseSeries is a response object.

func (*CasesRetrieveStatisticsResponseSeries) UnmarshalJSON

func (r *CasesRetrieveStatisticsResponseSeries) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasesRetrieveStatisticsResponseSeries leniently.

type CasesRetrieveStatisticsResponseTables

type CasesRetrieveStatisticsResponseTables struct {
	Officer   []CasesRetrieveStatisticsResponseTablesOfficer   `json:"officer"`
	Blueprint []CasesRetrieveStatisticsResponseTablesBlueprint `json:"blueprint"`
	Source    []CasesRetrieveStatisticsResponseTablesSource    `json:"source"`
	Status    []CasesRetrieveStatisticsResponseTablesStatus    `json:"status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesRetrieveStatisticsResponseTables is a response object.

func (*CasesRetrieveStatisticsResponseTables) UnmarshalJSON

func (r *CasesRetrieveStatisticsResponseTables) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasesRetrieveStatisticsResponseTables leniently.

type CasesRetrieveStatisticsResponseTablesBlueprint

type CasesRetrieveStatisticsResponseTablesBlueprint struct {
	// Dimension value: officer email, "blueprint_name:uuid", source, or status.
	// "unassigned"/"none" for missing dimensions.
	Key               string  `json:"key"`
	Created           int64   `json:"created"`
	Assigned          int64   `json:"assigned"`
	Resolved          int64   `json:"resolved"`
	ThreatRate        float64 `json:"threat_rate"`
	FalsePositiveRate float64 `json:"false_positive_rate"`
	Unresolved        int64   `json:"unresolved"`
	ReassignmentRate  float64 `json:"reassignment_rate"`
	EscalationRate    float64 `json:"escalation_rate"`
	AvgAssignHours    float64 `json:"avg_assign_hours"`
	AvgResolveHours   float64 `json:"avg_resolve_hours"`
	AvgHandlingHours  float64 `json:"avg_handling_hours"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesRetrieveStatisticsResponseTablesBlueprint is a response object.

func (*CasesRetrieveStatisticsResponseTablesBlueprint) UnmarshalJSON

UnmarshalJSON decodes CasesRetrieveStatisticsResponseTablesBlueprint leniently.

type CasesRetrieveStatisticsResponseTablesOfficer

type CasesRetrieveStatisticsResponseTablesOfficer struct {
	// Dimension value: officer email, "blueprint_name:uuid", source, or status.
	// "unassigned"/"none" for missing dimensions.
	Key               string  `json:"key"`
	Created           int64   `json:"created"`
	Assigned          int64   `json:"assigned"`
	Resolved          int64   `json:"resolved"`
	ThreatRate        float64 `json:"threat_rate"`
	FalsePositiveRate float64 `json:"false_positive_rate"`
	Unresolved        int64   `json:"unresolved"`
	ReassignmentRate  float64 `json:"reassignment_rate"`
	EscalationRate    float64 `json:"escalation_rate"`
	AvgAssignHours    float64 `json:"avg_assign_hours"`
	AvgResolveHours   float64 `json:"avg_resolve_hours"`
	AvgHandlingHours  float64 `json:"avg_handling_hours"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesRetrieveStatisticsResponseTablesOfficer is a response object.

func (*CasesRetrieveStatisticsResponseTablesOfficer) UnmarshalJSON

func (r *CasesRetrieveStatisticsResponseTablesOfficer) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasesRetrieveStatisticsResponseTablesOfficer leniently.

type CasesRetrieveStatisticsResponseTablesSource

type CasesRetrieveStatisticsResponseTablesSource struct {
	// Dimension value: officer email, "blueprint_name:uuid", source, or status.
	// "unassigned"/"none" for missing dimensions.
	Key               string  `json:"key"`
	Created           int64   `json:"created"`
	Assigned          int64   `json:"assigned"`
	Resolved          int64   `json:"resolved"`
	ThreatRate        float64 `json:"threat_rate"`
	FalsePositiveRate float64 `json:"false_positive_rate"`
	Unresolved        int64   `json:"unresolved"`
	ReassignmentRate  float64 `json:"reassignment_rate"`
	EscalationRate    float64 `json:"escalation_rate"`
	AvgAssignHours    float64 `json:"avg_assign_hours"`
	AvgResolveHours   float64 `json:"avg_resolve_hours"`
	AvgHandlingHours  float64 `json:"avg_handling_hours"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesRetrieveStatisticsResponseTablesSource is a response object.

func (*CasesRetrieveStatisticsResponseTablesSource) UnmarshalJSON

func (r *CasesRetrieveStatisticsResponseTablesSource) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasesRetrieveStatisticsResponseTablesSource leniently.

type CasesRetrieveStatisticsResponseTablesStatus

type CasesRetrieveStatisticsResponseTablesStatus struct {
	// Dimension value: officer email, "blueprint_name:uuid", source, or status.
	// "unassigned"/"none" for missing dimensions.
	Key               string  `json:"key"`
	Created           int64   `json:"created"`
	Assigned          int64   `json:"assigned"`
	Resolved          int64   `json:"resolved"`
	ThreatRate        float64 `json:"threat_rate"`
	FalsePositiveRate float64 `json:"false_positive_rate"`
	Unresolved        int64   `json:"unresolved"`
	ReassignmentRate  float64 `json:"reassignment_rate"`
	EscalationRate    float64 `json:"escalation_rate"`
	AvgAssignHours    float64 `json:"avg_assign_hours"`
	AvgResolveHours   float64 `json:"avg_resolve_hours"`
	AvgHandlingHours  float64 `json:"avg_handling_hours"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesRetrieveStatisticsResponseTablesStatus is a response object.

func (*CasesRetrieveStatisticsResponseTablesStatus) UnmarshalJSON

func (r *CasesRetrieveStatisticsResponseTablesStatus) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasesRetrieveStatisticsResponseTablesStatus leniently.

type CasesRetrieveStatisticsResponseTotals

type CasesRetrieveStatisticsResponseTotals struct {
	Created           int64   `json:"created"`
	Assigned          int64   `json:"assigned"`
	Resolved          int64   `json:"resolved"`
	ThreatRate        float64 `json:"threat_rate"`
	FalsePositiveRate float64 `json:"false_positive_rate"`
	Unresolved        int64   `json:"unresolved"`
	ReassignmentRate  float64 `json:"reassignment_rate"`
	EscalationRate    float64 `json:"escalation_rate"`
	AvgAssignHours    float64 `json:"avg_assign_hours"`
	AvgResolveHours   float64 `json:"avg_resolve_hours"`
	AvgHandlingHours  float64 `json:"avg_handling_hours"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CasesRetrieveStatisticsResponseTotals is a response object.

func (*CasesRetrieveStatisticsResponseTotals) UnmarshalJSON

func (r *CasesRetrieveStatisticsResponseTotals) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CasesRetrieveStatisticsResponseTotals leniently.

type CasesRoutingRulesListHistoryParams

type CasesRoutingRulesListHistoryParams struct {
	// Which field to use when ordering the results.
	Ordering Opt[string] `json:"-" query:"ordering"`

	// Number of results to return per page.
	Limit Opt[int64] `json:"-" query:"limit"`

	// The initial index from which to return the results.
	Offset Opt[int64] `json:"-" query:"offset"`
}

CasesRoutingRulesListHistoryParams holds the parameters of Client.Cases.RoutingRules.ListHistory.

func (CasesRoutingRulesListHistoryParams) MarshalJSON

func (r CasesRoutingRulesListHistoryParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesRoutingRulesListParams

type CasesRoutingRulesListParams struct {
	Limit  Opt[int64] `json:"-" query:"limit"`
	Offset Opt[int64] `json:"-" query:"offset"`
}

CasesRoutingRulesListParams holds the parameters of Client.Cases.RoutingRules.List.

func (CasesRoutingRulesListParams) MarshalJSON

func (r CasesRoutingRulesListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesRoutingRulesService

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

CasesRoutingRulesService holds the cases routing_rules operations. Use it through Client.Cases.RoutingRules.

func (*CasesRoutingRulesService) Create

Create: Create routing rule.

Requires `write:cases` for the requested application. Set publish=false to create an unpublished draft; Publish creates its first live version. Discarding a never-published draft deletes it.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/

func (*CasesRoutingRulesService) DiscardDraft

DiscardDraft

The organization and application ids come from the client options.

DELETE /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/{record_uuid}/draft/

func (*CasesRoutingRulesService) List

List: List routing rules.

Requires `list:cases` for the requested application.

It returns one page; ListAutoPaging iterates over every item of every page.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/

func (*CasesRoutingRulesService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*CasesRoutingRulesService) ListHistory

ListHistory

It returns one page; ListHistoryAutoPaging iterates over every item of every page.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/{record_uuid}/history/

func (*CasesRoutingRulesService) ListHistoryAutoPaging

ListHistoryAutoPaging iterates over every item of every page of ListHistory, fetching pages as needed.

func (*CasesRoutingRulesService) Preview

Preview: Test case routing.

Requires `read:cases` for the requested application. Evaluates current rules or a supplied draft against current reviewer access, availability, skills and capacity. It does not save the draft or reserve reviewer capacity.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/preview/

func (*CasesRoutingRulesService) Publish

Publish

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/{record_uuid}/publish/

func (*CasesRoutingRulesService) Retrieve

func (r *CasesRoutingRulesService) Retrieve(ctx context.Context, recordUUID string, opts ...option.RequestOption) (*CaseRoutingRule, error)

Retrieve: Retrieve routing rule.

Requires `read:cases` for the requested application.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/{record_uuid}/

func (*CasesRoutingRulesService) RetrieveDraft

RetrieveDraft

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/{record_uuid}/draft/

func (*CasesRoutingRulesService) SaveDraft

SaveDraft

The organization and application ids come from the client options.

PUT /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/{record_uuid}/draft/

func (*CasesRoutingRulesService) Update

Update: Update routing rule.

Requires `write:cases` for the requested application.

The organization and application ids come from the client options.

PATCH /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/{record_uuid}/

type CasesService

type CasesService struct {
	Blueprints        *CasesBlueprintsService
	Checklist         *CasesChecklistService
	Links             *CasesLinksService
	Notes             *CasesNotesService
	RegulatoryReports *CasesRegulatoryReportsService
	Requests          *CasesRequestsService
	RoutingRules      *CasesRoutingRulesService
	Teams             *CasesTeamsService
	// contains filtered or unexported fields
}

CasesService holds the cases operations. Use it through Client.Cases.

func (*CasesService) ApplyEntityAction

ApplyEntityAction

Apply one explicit action to the case subject. Supply a unique client_reference to obtain an action receipt and make retries idempotent. Reusing that reference with a different payload returns 409. With a reference, inspect receipt.status even when HTTP status is 200: FAILED means no action was applied. Repeating a failed request does not execute it again unless retry is true. Omitting client_reference preserves the legacy response.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/entity-actions/

func (*CasesService) ApproveResolution

func (r *CasesService) ApproveResolution(ctx context.Context, caseUUID string, opts ...option.RequestOption) (*CaseDetail, error)

ApproveResolution: Approve staged resolution (4-eyes).

Apply a resolution staged by resolve on a four-eyes blueprint. The caller must be a different officer than the one who submitted it, otherwise 403. When the resolution names a checker (the case's `checker`), only that member can approve it: any other caller, including an API key, gets 403.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/approve/

func (*CasesService) Assign

func (r *CasesService) Assign(ctx context.Context, caseUUID string, params CasesAssignParams, opts ...option.RequestOption) (*CaseDetail, error)

Assign: Assign or unassign case.

Assign the case to a user, or unassign it by sending assignee_user_id: null. assignee_email/assignee_name auto-provision a User row when the assignee does not exist yet.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/assign/

func (*CasesService) BulkAssign

BulkAssign: Bulk assign cases.

Assign (or unassign, with assignee_user_id: null) several cases at once. All cases must share the same blueprint; mismatches are reported per case without aborting the batch.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/bulk/assign/

func (*CasesService) BulkUpdateStatus

BulkUpdateStatus: Bulk update case status.

Apply the same status transition to several cases in one call: OPEN reopens, AWAITING_USER requests info, RESOLVED resolves (resolution required). Each case is evaluated independently; gate failures (incomplete checklist, missing required note) are reported per case without aborting the batch.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/bulk/status/

func (*CasesService) Create

func (r *CasesService) Create(ctx context.Context, params CasesCreateParams, opts ...option.RequestOption) (*CaseDetail, error)

Create: Create case.

Create a case anchored to exactly one subject (a user or a business), directly or by deriving the subject from an attached session/transaction link. Source is always `MANUAL` for API-created cases.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/

func (*CasesService) Delete

func (r *CasesService) Delete(ctx context.Context, caseUUID string, opts ...option.RequestOption) error

Delete: Delete case.

Delete a case. There is no undelete endpoint.

The organization and application ids come from the client options.

DELETE /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/

func (*CasesService) Escalate

func (r *CasesService) Escalate(ctx context.Context, caseUUID string, opts ...option.RequestOption) (*CaseDetail, error)

Escalate: Escalate case.

Move the case to its blueprint's configured escalation_blueprint. Requires the current blueprint to have escalation_enabled and an escalation_blueprint set, otherwise 400.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/escalate/

func (*CasesService) FindDuplicates

FindDuplicates

Review existing cases for a subject or owned source record before manual case creation. Both open and resolved investigations are returned. Each page contains at most 20 cases; use next_offset to request another page.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/duplicates/

func (*CasesService) List

List: List cases.

List cases for the application, newest first. Supports filtering, search, and sorting; see query parameters. Paginated with `limit`/`offset`.

It returns one page; ListAutoPaging iterates over every item of every page.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/

func (*CasesService) ListAMLHits

func (r *CasesService) ListAMLHits(ctx context.Context, caseUUID string, opts ...option.RequestOption) ([]AMLScreening, error)

ListAMLHits: List case AML hits.

List AML screening hits for the case's subject. Same shape as the hits returned by POST /v3/aml/.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/aml/

func (*CasesService) ListActionReceipts

ListActionReceipts

List subject-action receipts, newest first, with at most 20 results per page. Use next_offset for the next page. Input note text is not exposed in the history.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/action-receipts/

func (*CasesService) ListAutoPaging

func (r *CasesService) ListAutoPaging(ctx context.Context, params CasesListParams, opts ...option.RequestOption) *PageIterator[CaseListItem]

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*CasesService) ListEvents

func (r *CasesService) ListEvents(ctx context.Context, caseUUID string, params CasesListEventsParams, opts ...option.RequestOption) (*Page[CaseEvent], error)

ListEvents: List case events.

Read-only audit timeline of the case (created, status changes, assignment, resolution, escalation, transfers, tag/priority/due-date changes, entity actions, and more).

It returns one page; ListEventsAutoPaging iterates over every item of every page.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/events/

func (*CasesService) ListEventsAutoPaging

func (r *CasesService) ListEventsAutoPaging(ctx context.Context, caseUUID string, params CasesListEventsParams, opts ...option.RequestOption) *PageIterator[CaseEvent]

ListEventsAutoPaging iterates over every item of every page of ListEvents, fetching pages as needed.

func (*CasesService) ListReviewers

ListReviewers: List eligible case reviewers.

Requires `list:cases` for the requested application.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/reviewers/

func (*CasesService) Print

func (r *CasesService) Print(ctx context.Context, caseUUID string, opts ...option.RequestOption) (*CasesPrintResponse, error)

Print: Print case (PDF).

Render the full case (summary, subject, checklist state, notes, attached sessions/transactions, events, FIU report list) as a PDF and return a presigned download URL.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/print/

func (*CasesService) RejectResolution

func (r *CasesService) RejectResolution(ctx context.Context, caseUUID string, params CasesRejectResolutionParams, opts ...option.RequestOption) (*CaseDetail, error)

RejectResolution: Reject staged resolution (4-eyes).

Reject a resolution staged by resolve and return the case to its maker blueprint. The caller must be a different officer than the one who submitted it, otherwise 403. When the resolution names a checker (the case's `checker`), only that member can reject it: any other caller, including an API key, gets 403.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/reject-approval/

func (*CasesService) Reopen

func (r *CasesService) Reopen(ctx context.Context, caseUUID string, opts ...option.RequestOption) (*CaseDetail, error)

Reopen: Reopen case.

Move an awaiting-user or resolved case back to open, clearing resolution, resolution_notes, resolved_at, and resolved_by_email.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/reopen/

func (*CasesService) RequestInfo

func (r *CasesService) RequestInfo(ctx context.Context, caseUUID string, opts ...option.RequestOption) (*CaseDetail, error)

RequestInfo: Request info (awaiting user).

Move an open case to awaiting_user while more information is collected from the verified user. Fails with 400 if a resolution is currently pending 4-eyes approval.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/request-info/

func (*CasesService) Resolve

func (r *CasesService) Resolve(ctx context.Context, caseUUID string, params CasesResolveParams, opts ...option.RequestOption) (*CaseDetail, error)

Resolve: Resolve case.

Resolve the case with one of five resolutions: FALSE_POSITIVE (no concern found), VALID_THREAT (concern confirmed), INCONCLUSIVE, REQUIREMENTS_NOT_MET or REQUIREMENTS_SATISFIED. Blocked with 400 if the blueprint's checklist is not optional and items remain incomplete, or if the blueprint requires a resolution note and none is given. When the case's blueprint has a four-eyes checker step (four_eyes_checker_blueprint), the resolution is staged (case.pending_resolution) and the case moves to the checker blueprint instead of resolving immediately; a different officer must call approve or reject-approval. Submit a four-eyes resolution as a console member: a resolution an API key submits has no recorded maker, so approve and reject-approval return 403 for every caller. On a four-eyes blueprint you can name the member who must approve with `checker`: then only that member can approve or reject the resolution, and the response's `checker` names them. Without `checker`, the resolution waits on the checker blueprint's queue. Sending `checker` for a blueprint without a checker step returns 400.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/resolve/

func (*CasesService) Retrieve

func (r *CasesService) Retrieve(ctx context.Context, caseUUID string, opts ...option.RequestOption) (*CaseDetail, error)

Retrieve: Get case.

Retrieve a case with its subject, blueprint, notes, events, links, and checklist.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/

func (*CasesService) RetrieveStatistics

RetrieveStatistics: Case analytics.

Aggregate case analytics for the date range (defaults to the last 30 days; max 731 days). Charts, tables, totals, assignment events, and current queue counts use the same application-scoped filters. Filters use current case values. Dates apply to each metric event, so older cases assigned or resolved during the period remain included. Queue depth is independent of the date range. Invalid filters return 400; an unknown blueprint or assignee returns an empty result.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/statistics/

func (*CasesService) RetryActionReceipt

func (r *CasesService) RetryActionReceipt(ctx context.Context, caseUUID string, receiptUUID string, opts ...option.RequestOption) (*CaseActionCaseActionReceipt, error)

RetryActionReceipt

Retry only this failed subject action using its saved inputs. Current write permission is checked. Applied actions return their receipt without executing again. Case closure is independent.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/action-receipts/{receipt_uuid}/retry/

func (*CasesService) Transfer

func (r *CasesService) Transfer(ctx context.Context, caseUUID string, params CasesTransferParams, opts ...option.RequestOption) (*CaseDetail, error)

Transfer: Transfer case.

Move the case to a different, active blueprint of the same application. Requires the current blueprint to have transfer_enabled, otherwise 400.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/transfer/

func (*CasesService) Update

func (r *CasesService) Update(ctx context.Context, caseUUID string, params CasesUpdateParams, opts ...option.RequestOption) (*CaseDetail, error)

Update: Update case.

Update the case's title, priority, due date, tags, or owning review team. Send only the fields you want to change; fields you omit keep their value. `tags` replaces the whole tag list. `team` takes the uuid of an active review team of this application (list them with `GET .../cases/teams/`), or null to clear the team. Requires a full-access API key, or `write:cases` for a console member: a key with restricted access gets 403. Logs PRIORITY_CHANGED, DUE_DATE_CHANGED, TAG_ADDED, TAG_REMOVED and TEAM_CHANGED events as applicable; a title change is saved without a timeline event. Returns the updated case.

The organization and application ids come from the client options.

PATCH /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/

type CasesTeamsListParams

type CasesTeamsListParams struct {
	Limit  Opt[int64] `json:"-" query:"limit"`
	Offset Opt[int64] `json:"-" query:"offset"`
}

CasesTeamsListParams holds the parameters of Client.Cases.Teams.List.

func (CasesTeamsListParams) MarshalJSON

func (r CasesTeamsListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesTeamsService

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

CasesTeamsService holds the cases teams operations. Use it through Client.Cases.Teams.

func (*CasesTeamsService) Create

Create: Create review team.

Requires `write:cases` for the requested application.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/cases/teams/

func (*CasesTeamsService) List

List: List review teams.

Requires `list:cases` for the requested application.

It returns one page; ListAutoPaging iterates over every item of every page.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/teams/

func (*CasesTeamsService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*CasesTeamsService) Retrieve

func (r *CasesTeamsService) Retrieve(ctx context.Context, recordUUID string, opts ...option.RequestOption) (*CaseReviewTeam, error)

Retrieve: Retrieve review team.

Requires `read:cases` for the requested application.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/cases/teams/{record_uuid}/

func (*CasesTeamsService) Update

func (r *CasesTeamsService) Update(ctx context.Context, recordUUID string, params CaseReviewTeamUpdate, opts ...option.RequestOption) (*CaseReviewTeam, error)

Update: Update review team.

Requires `write:cases` for the requested application.

The organization and application ids come from the client options.

PATCH /v3/organization/{organization_id}/application/{application_id}/cases/teams/{record_uuid}/

type CasesTransferParams

type CasesTransferParams struct {
	// Required.
	TargetBlueprint string `json:"target_blueprint"`
}

CasesTransferParams holds the parameters of Client.Cases.Transfer.

func (CasesTransferParams) MarshalJSON

func (r CasesTransferParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesUpdateParams

type CasesUpdateParams struct {
	// New case title.
	Title    Opt[string]                    `json:"title"`
	Priority Opt[CasesUpdateParamsPriority] `json:"priority"`

	// New deadline. Send null to clear it.
	DueAt Opt[time.Time] `json:"due_at"`

	// The complete tag list. It replaces the current tags.
	Tags Opt[[]string] `json:"tags"`

	// UUID of the review team that owns the case. It must be an active team of this
	// application. Send null to clear the team.
	Team Opt[string] `json:"team"`
}

CasesUpdateParams holds the parameters of Client.Cases.Update.

func (CasesUpdateParams) MarshalJSON

func (r CasesUpdateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type CasesUpdateParamsPriority

type CasesUpdateParamsPriority string

CasesUpdateParamsPriority is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CasesUpdateParamsPriorityLow    CasesUpdateParamsPriority = "LOW"
	CasesUpdateParamsPriorityMedium CasesUpdateParamsPriority = "MEDIUM"
	CasesUpdateParamsPriorityHigh   CasesUpdateParamsPriority = "HIGH"
)

Known values of CasesUpdateParamsPriority.

type Client

type Client struct {
	Account            *AccountService
	AgeEstimation      *AgeEstimationService
	AML                *AMLService
	AMLMonitoring      *AMLMonitoringService
	Analytics          *AnalyticsService
	Bank               *BankService
	Billing            *BillingService
	BiometricTemplates *BiometricTemplatesService
	Blocklist          *BlocklistService
	BusinessSessions   *BusinessSessionsService
	Businesses         *BusinessesService
	Cases              *CasesService
	Customization      *CustomizationService
	DatabaseValidation *DatabaseValidationService
	DocumentAi         *DocumentAiService
	Email              *EmailService
	FaceMatch          *FaceMatchService
	FaceSearch         *FaceSearchService
	FraudChecks        *FraudChecksService
	IDVerification     *IDVerificationService
	IDWallets          *IDWalletsService
	Investigator       *InvestigatorService
	IP                 *IPService
	KYB                *KYBService
	Lists              *ListsService
	MonitoringEvents   *MonitoringEventsService
	Networks           *NetworksService
	PassiveLiveness    *PassiveLivenessService
	Phone              *PhoneService
	Pricing            *PricingService
	ProofOfAddress     *ProofOfAddressService
	Questionnaires     *QuestionnairesService
	RegulatoryReports  *RegulatoryReportsService
	ReportTemplates    *ReportTemplatesService
	Sessions           *SessionsService
	Transactions       *TransactionsService
	TravelRule         *TravelRuleService
	Users              *UsersService
	WalletScreening    *WalletScreeningService
	Webhooks           *WebhooksService
	Workflows          *WorkflowsService
	// contains filtered or unexported fields
}

Client is the Didit API client. Create it with NewClient; it is safe for concurrent use. Each field is a resource of the API.

func NewClient

func NewClient(opts ...option.RequestOption) *Client

NewClient returns a client for the Didit API. It is safe for concurrent use; create one per process and reuse it.

Without options it reads the API key from DIDIT_API_KEY and the organization and application ids from DIDIT_ORGANIZATION_ID and DIDIT_APPLICATION_ID; DIDIT_LOG=debug enables debug logging. Options passed here override the environment, and options passed to a method override both.

client := didit.NewClient(option.WithAPIKey(os.Getenv("DIDIT_API_KEY")))

func (*Client) WithOptions

func (c *Client) WithOptions(opts ...option.RequestOption) *Client

WithOptions returns a copy of the client with more options applied. The receiver is not changed.

type ComplianceList

type ComplianceList struct {
	// List identifier. Use it as `list_uuid` in the list and entry endpoints, and
	// as the value of a workflow or transaction rule condition with `value_type:
	// "list"`.
	UUID string `json:"uuid"`

	// List name, unique among the application's lists.
	Name string `json:"name"`

	// Free-text description. Empty string when not set.
	Description string `json:"description"`

	// `blocklist`: a match declines the session or transaction (system lists only,
	// one per entry type). `allowlist`: matching items are trusted, for example a
	// face allowlist skips the duplicated-face action; never overrides a blocklist
	// match. `custom`: used in workflow and transaction rule conditions
	// (`value_type: "list"`).
	ListType ComplianceListListType `json:"list_type"`

	// What the list holds: `face`, `document` (document number), `phone`, `email`,
	// `ip_address` (IP address or CIDR range), `device_fingerprint`,
	// `wallet_address`, `bank_account`, `country` (ISO 3166-1 alpha-3), `user` or
	// `business` (your `vendor_data`), or `key` (any string). It decides how entry
	// values are validated and matched.
	EntryType ComplianceListEntryType `json:"entry_type"`

	// `true` for the lists Didit provisions: one blocklist per entry type (`face`,
	// `document`, `phone`, `email`, `ip_address`, `device_fingerprint`,
	// `wallet_address`, `bank_account`, `user`, `business`), the **High Risk
	// Countries** custom list, and system allowlists. System lists cannot be
	// renamed, edited or deleted; you can add and delete their entries.
	IsSystem bool `json:"is_system"`

	// Number of entries currently in the list.
	EntryCount int64 `json:"entry_count"`

	// When the newest current entry was added. `null` for an empty list.
	LastEntryAddedAt time.Time `json:"last_entry_added_at"`

	// When the list was created.
	CreatedAt time.Time `json:"created_at"`

	// When the list was last updated.
	UpdatedAt time.Time `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ComplianceList: A blocklist, allowlist or custom list of one application.

func (*ComplianceList) UnmarshalJSON

func (r *ComplianceList) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ComplianceList leniently.

type ComplianceListEntry

type ComplianceListEntry struct {
	// Entry identifier. Use it as `entry_uuid` in Delete a list entry.
	UUID string `json:"uuid"`

	// The listed value: a phone number in E.164, an email address, a document
	// number, an IP address or CIDR range, a device fingerprint, a wallet address,
	// a bank account, an ISO 3166-1 alpha-3 country code, a `vendor_data`, any
	// string on a `key` list, or the UUID of the stored face on a face list. Values
	// you send are stored in lower case, except phone numbers and country codes.
	// Matching is case-insensitive.
	Value string `json:"value"`

	// Human-readable label. Didit fills it for entries taken from a session (for
	// example the holder's name and document number) when you send none.
	DisplayLabel string `json:"display_label"`

	// Free-text note. Empty string when not set.
	Comment string `json:"comment"`

	// Who added the entry: `api` (an API key), a console user's email address or
	// `console`, `system` or `migration` (entries Didit created), or `rule` (a
	// transaction or monitoring rule action).
	AddedBy string `json:"added_by"`

	// Verification session the entry was taken from. `null` when the entry was
	// added by value.
	ReferenceSessionID string `json:"reference_session_id"`

	// Application-scoped number of that session, as shown in the console.
	ReferenceSessionNumber int64 `json:"reference_session_number"`

	// `kyc` for a person verification session, `kyb` for a business verification
	// session, `null` when there is no session.
	ReferenceSessionType ComplianceListEntryReferenceSessionType `json:"reference_session_type"`

	// The record the entry stands for: the face, document, phone or email record
	// read from a session, the face created by Upload a face to a list, or the UUID
	// you sent (for example a transaction UUID or a user's `didit_internal_id`).
	ReferenceObjectUUID string `json:"reference_object_uuid"`

	// Extra context. Holds the keys Didit sets (listed here) merged with any
	// `metadata` you sent when creating the entry, returned as stored. `null` when
	// there is none.
	Metadata ComplianceListEntryMetadata `json:"metadata"`

	// When the entry was added.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ComplianceListEntry: One value in a list.

func (*ComplianceListEntry) UnmarshalJSON

func (r *ComplianceListEntry) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ComplianceListEntry leniently.

type ComplianceListEntryMetadata

type ComplianceListEntryMetadata struct {
	// Face entries: short-lived signed URL, issued again on every call; `null` for
	// a scoped API key without `media: read`. Absent when no image belongs to the
	// entry.
	ReferenceImageURL string `json:"reference_image_url"`

	// Document entries that carry a document front image: short-lived signed URL,
	// issued again on every call; `null` for a scoped API key without `media:
	// read`.
	FrontImageURL string `json:"front_image_url"`

	// Document entries taken from a session: holder's full name.
	FullName string `json:"full_name"`

	// Document entries taken from a session: ISO 3166-1 alpha-3 issuing country.
	IssuingState string `json:"issuing_state"`

	// Document entries taken from a session: document type code, for example `P`,
	// `ID` or `DL`.
	DocumentType string `json:"document_type"`

	// Document entries taken from a session: issuing state or province of a
	// regionally issued document, empty when not applicable. Not set by Add session
	// items to the blocklist.
	Region string `json:"region"`

	// Document entries taken from a session: the document number.
	DocumentNumber string `json:"document_number"`

	// Face entries taken from a document-capture selfie: which selfie. Absent for
	// liveness faces.
	FaceImageSource ComplianceListEntryMetadataFaceImageSource `json:"face_image_source"`

	// Face entries taken from a document-capture selfie: the ID verification node
	// the selfie came from.
	ReferenceNodeID string `json:"reference_node_id"`

	// Device fingerprint entries taken from a session: how the fingerprint was
	// derived. `persistent_id` identifies one device; `composite_hash` and
	// `legacy_fp` can be shared by devices of the same model.
	FingerprintTier ComplianceListEntryMetadataFingerprintTier `json:"fingerprint_tier"`

	// `true` on a face entry uploaded in a sandbox application; such an entry
	// matches nothing.
	Sandbox bool `json:"sandbox"`

	// Set by you: what `reference_object_uuid` points to, so the console links back
	// to it.
	ReferenceType ComplianceListEntryMetadataReferenceType `json:"reference_type"`

	// Set by you: identifier of the source record.
	ReferenceID string `json:"reference_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ComplianceListEntryMetadata: Extra context. Holds the keys Didit sets (listed here) merged with any `metadata` you sent when creating the entry, returned as stored. `null` when there is none.

func (*ComplianceListEntryMetadata) UnmarshalJSON

func (r *ComplianceListEntryMetadata) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ComplianceListEntryMetadata leniently.

type ComplianceListEntryMetadataFaceImageSource

type ComplianceListEntryMetadataFaceImageSource string

ComplianceListEntryMetadataFaceImageSource: Face entries taken from a document-capture selfie: which selfie. Absent for liveness faces.

ComplianceListEntryMetadataFaceImageSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ComplianceListEntryMetadataFaceImageSourceFrontImageCameraFront ComplianceListEntryMetadataFaceImageSource = "front_image_camera_front"
	ComplianceListEntryMetadataFaceImageSourceBackImageCameraFront  ComplianceListEntryMetadataFaceImageSource = "back_image_camera_front"
)

Known values of ComplianceListEntryMetadataFaceImageSource.

type ComplianceListEntryMetadataFingerprintTier

type ComplianceListEntryMetadataFingerprintTier string

ComplianceListEntryMetadataFingerprintTier: Device fingerprint entries taken from a session: how the fingerprint was derived. `persistent_id` identifies one device; `composite_hash` and `legacy_fp` can be shared by devices of the same model.

ComplianceListEntryMetadataFingerprintTier is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ComplianceListEntryMetadataFingerprintTierPersistentID  ComplianceListEntryMetadataFingerprintTier = "persistent_id"
	ComplianceListEntryMetadataFingerprintTierCompositeHash ComplianceListEntryMetadataFingerprintTier = "composite_hash"
	ComplianceListEntryMetadataFingerprintTierLegacyFp      ComplianceListEntryMetadataFingerprintTier = "legacy_fp"
	ComplianceListEntryMetadataFingerprintTierUnknown       ComplianceListEntryMetadataFingerprintTier = "unknown"
)

Known values of ComplianceListEntryMetadataFingerprintTier.

type ComplianceListEntryMetadataReferenceType

type ComplianceListEntryMetadataReferenceType string

ComplianceListEntryMetadataReferenceType: Set by you: what `reference_object_uuid` points to, so the console links back to it.

ComplianceListEntryMetadataReferenceType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ComplianceListEntryMetadataReferenceTypeTransaction    ComplianceListEntryMetadataReferenceType = "transaction"
	ComplianceListEntryMetadataReferenceTypeVendorUser     ComplianceListEntryMetadataReferenceType = "vendor_user"
	ComplianceListEntryMetadataReferenceTypeVendorBusiness ComplianceListEntryMetadataReferenceType = "vendor_business"
)

Known values of ComplianceListEntryMetadataReferenceType.

type ComplianceListEntryReferenceSessionType

type ComplianceListEntryReferenceSessionType string

ComplianceListEntryReferenceSessionType: `kyc` for a person verification session, `kyb` for a business verification session, `null` when there is no session.

ComplianceListEntryReferenceSessionType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ComplianceListEntryReferenceSessionTypeKYC ComplianceListEntryReferenceSessionType = "kyc"
	ComplianceListEntryReferenceSessionTypeKYB ComplianceListEntryReferenceSessionType = "kyb"
)

Known values of ComplianceListEntryReferenceSessionType.

type ComplianceListEntryType

type ComplianceListEntryType string

ComplianceListEntryType: What the list holds: `face`, `document` (document number), `phone`, `email`, `ip_address` (IP address or CIDR range), `device_fingerprint`, `wallet_address`, `bank_account`, `country` (ISO 3166-1 alpha-3), `user` or `business` (your `vendor_data`), or `key` (any string). It decides how entry values are validated and matched.

ComplianceListEntryType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ComplianceListEntryTypeFace              ComplianceListEntryType = "face"
	ComplianceListEntryTypeDocument          ComplianceListEntryType = "document"
	ComplianceListEntryTypePhone             ComplianceListEntryType = "phone"
	ComplianceListEntryTypeEmail             ComplianceListEntryType = "email"
	ComplianceListEntryTypeIPAddress         ComplianceListEntryType = "ip_address"
	ComplianceListEntryTypeDeviceFingerprint ComplianceListEntryType = "device_fingerprint"
	ComplianceListEntryTypeWalletAddress     ComplianceListEntryType = "wallet_address"
	ComplianceListEntryTypeBankAccount       ComplianceListEntryType = "bank_account"
	ComplianceListEntryTypeCountry           ComplianceListEntryType = "country"
	ComplianceListEntryTypeUser              ComplianceListEntryType = "user"
	ComplianceListEntryTypeBusiness          ComplianceListEntryType = "business"
	ComplianceListEntryTypeKey               ComplianceListEntryType = "key"
)

Known values of ComplianceListEntryType.

type ComplianceListListType

type ComplianceListListType string

ComplianceListListType: `blocklist`: a match declines the session or transaction (system lists only, one per entry type). `allowlist`: matching items are trusted, for example a face allowlist skips the duplicated-face action; never overrides a blocklist match. `custom`: used in workflow and transaction rule conditions (`value_type: "list"`).

ComplianceListListType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ComplianceListListTypeBlocklist ComplianceListListType = "blocklist"
	ComplianceListListTypeAllowlist ComplianceListListType = "allowlist"
	ComplianceListListTypeCustom    ComplianceListListType = "custom"
)

Known values of ComplianceListListType.

type ConfigurationError

type ConfigurationError struct {
	Message string
}

ConfigurationError reports a missing or invalid setting, such as a missing API key or a missing organization or application id. It is returned before any request is sent.

func (*ConfigurationError) Error

func (e *ConfigurationError) Error() string

type ConflictError

type ConflictError struct{ *APIStatusError }

ConflictError is an *APIStatusError with status 409.

func (*ConflictError) Unwrap

func (e *ConflictError) Unwrap() error

type CustomerMessagingCaseRequest

type CustomerMessagingCaseRequest struct {
	UUID           string    `json:"uuid"`
	Purpose        string    `json:"purpose"`
	Language       string    `json:"language"`
	Recipient      string    `json:"recipient"`
	ExpiresAt      time.Time `json:"expires_at"`
	ActorEmail     string    `json:"actor_email"`
	DeliveryStatus string    `json:"delivery_status"`
	DeliveredAt    time.Time `json:"delivered_at"`
	CancelledAt    time.Time `json:"cancelled_at"`
	RespondedAt    time.Time `json:"responded_at"`
	Response       any       `json:"response"`
	HasAttachment  bool      `json:"has_attachment"`
	CreatedAt      time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CustomerMessagingCaseRequest is a response object.

func (*CustomerMessagingCaseRequest) UnmarshalJSON

func (r *CustomerMessagingCaseRequest) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CustomerMessagingCaseRequest leniently.

type CustomerMessagingCaseRequestConfirmRequest

type CustomerMessagingCaseRequestConfirmRequest struct {
	// Required.
	ContactID string `json:"contact_id"`

	// Required.
	Purpose  CustomerMessagingPurposeEnum       `json:"purpose"`
	Language Opt[CustomerMessagingLanguageEnum] `json:"language"`

	// Required.
	RequestID string `json:"request_id"`

	// Required.
	ExpiresAt time.Time `json:"expires_at"`

	// Required.
	PreviewToken string `json:"preview_token"`
}

CustomerMessagingCaseRequestConfirmRequest is a request object.

func (CustomerMessagingCaseRequestConfirmRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type CustomerMessagingCaseRequestContact

type CustomerMessagingCaseRequestContact struct {
	UUID       string    `json:"uuid"`
	Email      string    `json:"email"`
	VerifiedAt time.Time `json:"verified_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CustomerMessagingCaseRequestContact is a response object.

func (*CustomerMessagingCaseRequestContact) UnmarshalJSON

func (r *CustomerMessagingCaseRequestContact) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CustomerMessagingCaseRequestContact leniently.

type CustomerMessagingCaseRequestOptions

type CustomerMessagingCaseRequestOptions struct {
	Contacts  []CustomerMessagingCaseRequestContact `json:"contacts"`
	Purposes  []CustomerMessagingPurposesEnum       `json:"purposes"`
	Languages []CustomerMessagingLanguagesEnum      `json:"languages"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CustomerMessagingCaseRequestOptions is a response object.

func (*CustomerMessagingCaseRequestOptions) UnmarshalJSON

func (r *CustomerMessagingCaseRequestOptions) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CustomerMessagingCaseRequestOptions leniently.

type CustomerMessagingCaseRequestPreviewRequest

type CustomerMessagingCaseRequestPreviewRequest struct {
	// Required.
	ContactID string `json:"contact_id"`

	// Required.
	Purpose  CustomerMessagingPurposeEnum       `json:"purpose"`
	Language Opt[CustomerMessagingLanguageEnum] `json:"language"`
}

CustomerMessagingCaseRequestPreviewRequest is a request object.

func (CustomerMessagingCaseRequestPreviewRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type CustomerMessagingCaseRequestPreviewResponse

type CustomerMessagingCaseRequestPreviewResponse struct {
	RequestID          string    `json:"request_id"`
	ExpiresAt          time.Time `json:"expires_at"`
	Recipient          string    `json:"recipient"`
	Sender             string    `json:"sender"`
	Subject            string    `json:"subject"`
	HTML               string    `json:"html"`
	RequiresUserAction bool      `json:"requires_user_action"`
	PreviewToken       string    `json:"preview_token"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

CustomerMessagingCaseRequestPreviewResponse is a response object.

func (*CustomerMessagingCaseRequestPreviewResponse) UnmarshalJSON

func (r *CustomerMessagingCaseRequestPreviewResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes CustomerMessagingCaseRequestPreviewResponse leniently.

type CustomerMessagingLanguageEnum

type CustomerMessagingLanguageEnum string

CustomerMessagingLanguageEnum: * `en` - en

  • `es` - es
  • `pt` - pt

CustomerMessagingLanguageEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CustomerMessagingLanguageEnumEn CustomerMessagingLanguageEnum = "en"
	CustomerMessagingLanguageEnumEs CustomerMessagingLanguageEnum = "es"
	CustomerMessagingLanguageEnumPt CustomerMessagingLanguageEnum = "pt"
)

Known values of CustomerMessagingLanguageEnum.

type CustomerMessagingLanguagesEnum

type CustomerMessagingLanguagesEnum string

CustomerMessagingLanguagesEnum: * `en` - en

  • `es` - es
  • `pt` - pt

CustomerMessagingLanguagesEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CustomerMessagingLanguagesEnumEn CustomerMessagingLanguagesEnum = "en"
	CustomerMessagingLanguagesEnumEs CustomerMessagingLanguagesEnum = "es"
	CustomerMessagingLanguagesEnumPt CustomerMessagingLanguagesEnum = "pt"
)

Known values of CustomerMessagingLanguagesEnum.

type CustomerMessagingPurposeEnum

type CustomerMessagingPurposeEnum string

CustomerMessagingPurposeEnum: * `identity_document` - identity_document

  • `proof_of_address` - proof_of_address
  • `business_document` - business_document
  • `confirm_details` - confirm_details
  • `review_in_progress` - review_in_progress

CustomerMessagingPurposeEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CustomerMessagingPurposeEnumIdentityDocument CustomerMessagingPurposeEnum = "identity_document"
	CustomerMessagingPurposeEnumProofOfAddress   CustomerMessagingPurposeEnum = "proof_of_address"
	CustomerMessagingPurposeEnumBusinessDocument CustomerMessagingPurposeEnum = "business_document"
	CustomerMessagingPurposeEnumConfirmDetails   CustomerMessagingPurposeEnum = "confirm_details"
	CustomerMessagingPurposeEnumReviewInProgress CustomerMessagingPurposeEnum = "review_in_progress"
)

Known values of CustomerMessagingPurposeEnum.

type CustomerMessagingPurposesEnum

type CustomerMessagingPurposesEnum string

CustomerMessagingPurposesEnum: * `identity_document` - identity_document

  • `proof_of_address` - proof_of_address
  • `business_document` - business_document
  • `confirm_details` - confirm_details
  • `review_in_progress` - review_in_progress

CustomerMessagingPurposesEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	CustomerMessagingPurposesEnumIdentityDocument CustomerMessagingPurposesEnum = "identity_document"
	CustomerMessagingPurposesEnumProofOfAddress   CustomerMessagingPurposesEnum = "proof_of_address"
	CustomerMessagingPurposesEnumBusinessDocument CustomerMessagingPurposesEnum = "business_document"
	CustomerMessagingPurposesEnumConfirmDetails   CustomerMessagingPurposesEnum = "confirm_details"
	CustomerMessagingPurposesEnumReviewInProgress CustomerMessagingPurposesEnum = "review_in_progress"
)

Known values of CustomerMessagingPurposesEnum.

type CustomizationService

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

CustomizationService holds the customization operations. Use it through Client.Customization.

func (*CustomizationService) Retrieve

Retrieve: Get branding customization.

Returns the white-label branding for the application resolved from the API key: colors, fonts, border radii, logo URLs and UI/UX options. Custom domain and white-label email settings are managed only in the Business Console and are not part of this response.

GET /v3/customization/

func (*CustomizationService) Update

Update: Update branding customization.

Partial update of the application's white-label branding. Send `application/json` to change colors, fonts, radii and UI options, or `multipart/form-data` to upload logo images. Only the fields you include are changed. Custom domain and white-label email cannot be set through this endpoint - use the Business Console for those.

PATCH /v3/customization/

type CustomizationUpdateParams

type CustomizationUpdateParams struct {
	// Headers / primary text color.
	ColorPrimary Opt[string] `json:"color_primary"`

	// Paragraph / secondary text color.
	ColorSecondary Opt[string] `json:"color_secondary"`

	// Page background color.
	ColorBackground Opt[string] `json:"color_background"`

	// Panel / accent color.
	ColorPanel Opt[string] `json:"color_panel"`

	// Panel color at 10% opacity.
	ColorPanel10 Opt[string] `json:"color_panel_10"`

	// Support text color on panels.
	ColorOnPanel1 Opt[string] `json:"color_on_panel_1"`

	// Pill / badge color on panels.
	ColorOnPanel2 Opt[string] `json:"color_on_panel_2"`

	// Text color on background.
	ColorOnBackground Opt[string] `json:"color_on_background"`

	// Primary button color.
	ColorButton1 Opt[string] `json:"color_button_1"`

	// Secondary button color.
	ColorButton2 Opt[string] `json:"color_button_2"`

	// Primary button text color.
	ColorButtonText1 Opt[string] `json:"color_button_text_1"`

	// Secondary button text color.
	ColorButtonText2 Opt[string] `json:"color_button_text_2"`

	// Text color for pills, inputs and selectors.
	ColorPillText Opt[string] `json:"color_pill_text"`

	// Panel corner radius in pixels.
	BorderRadiusPanel Opt[int64] `json:"border_radius_panel"`

	// Button corner radius in pixels.
	BorderRadiusButtons Opt[int64] `json:"border_radius_buttons"`

	// Google Font family name (e.g. `Inter`, `AR One Sans`).
	FontFamily Opt[string] `json:"font_family"`

	// Font weight available for the selected family (e.g. `regular`, `500`, `700`).
	FontWeight Opt[string] `json:"font_weight"`

	// Public name shown in the verification flow.
	AppPublicName Opt[string] `json:"app_public_name"`

	// Privacy policy URL shown to the end user.
	PrivacyPolicyURL Opt[string] `json:"privacy_policy_url"`

	// Skip the initial welcome screen.
	SkipWelcomeScreen Opt[bool] `json:"skip_welcome_screen"`

	// Continue as guest instead of showing the login-with-Didit screen. Cannot be
	// set back to `false` while a custom domain is configured (400).
	DisableLoginWithDidit Opt[bool] `json:"disable_login_with_didit"`

	// Hide the progress bar during the flow.
	HideProgressBar Opt[bool] `json:"hide_progress_bar"`

	// Delay (seconds) before redirecting to the callback URL.
	CallbackSeconds Opt[int64] `json:"callback_seconds"`

	// When `true`, removes the current square logo.
	DeleteLogoSquare Opt[bool] `json:"delete_logo_square"`

	// When `true`, removes the current rectangular logo.
	DeleteLogoRectangular Opt[bool] `json:"delete_logo_rectangular"`

	// When `true`, removes the current dark-mode logo, and `logo_rectangular_dark`
	// then reads `null`. If the same multipart request also uploads
	// `image_rectangular_dark`, the upload wins.
	DeleteLogoRectangularDark Opt[bool] `json:"delete_logo_rectangular_dark"`

	// When `true`, removes the current favicon.
	DeleteFavicon Opt[bool] `json:"delete_favicon"`

	// Square logo (1:1 aspect ratio). PNG, JPG or WebP, at least 512 px on the long
	// side, at most **1 MB**.
	ImageSquare Opt[File] `json:"-" form:"image_square"`

	// Rectangular logo (2:1 aspect ratio). PNG, JPG or WebP, at least 512 px on the
	// long side, at most **1 MB**.
	ImageRectangular Opt[File] `json:"-" form:"image_rectangular"`

	// Rectangular logo for dark mode (2:1 aspect ratio), shown on a dark
	// background. PNG, JPG or WebP, at least 512 px on the long side, at most **1
	// MB**. Returned as `logo_rectangular_dark`.
	ImageRectangularDark Opt[File] `json:"-" form:"image_rectangular_dark"`

	// Favicon image. Max **500 KB**.
	ImageFavicon Opt[File] `json:"-" form:"image_favicon"`
}

CustomizationUpdateParams holds the parameters of Client.Customization.Update.

func (CustomizationUpdateParams) MarshalJSON

func (r CustomizationUpdateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type DatabaseValidationService

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

DatabaseValidationService holds the database_validation operations. Use it through Client.DatabaseValidation.

func (*DatabaseValidationService) Validate

Validate: Database Validation (standalone).

Validate a person's identity data against official government and registry sources - CPF in Brazil, RENAPER in Argentina, DNI registries in Spain and Peru, INE in Mexico, and 100+ more services across 60+ countries.

**Service selection.** Each country exposes one or more catalog services identified by a `service_id` (e.g. `bra_cpf`, `arg_renaper`, `pan_cedula_sib`). Pin the services you want with the `services` array - if you omit it, exactly **one** default service runs (the longest-established live service for the country). Sending `services` also switches the response to the extended shape with `services_used` and `match_score`. Discover services, their required fields, and prices via `GET /v1/organization/database-validation-countries/` (a catalog endpoint not documented in this spec) or the Business Console workflow editor. Some services are flagged `requires_consent=true` in the catalog and demand `consent=true`; others require onboarding for your organization before they can be called.

**Input fields.** `identification_number` is a universal field that maps to the right country-specific field automatically (see its description). Country format rules are enforced before any provider is called (e.g. BRA CPF must be exactly 11 digits) and format failures are never billed. Biometric services need a `selfie` upload (multipart only); Argentina RENAPER additionally requires `gender`.

**Results.** Each service returns a field-by-field `validation` map plus a vendor-neutral `outcome_code` (`MATCH`, `PARTIAL_MATCH`, `NO_MATCH`, `DOCUMENT_NOT_FOUND`, `INVALID_DOCUMENT_FORMAT`, `INVALID_INPUT`, `MINOR_BLOCKED`, `DECEASED`, `BIOMETRIC_NO_MATCH`, `BIOMETRIC_IMAGE_UNUSABLE`, `INCONCLUSIVE`, `DOCUMENT_SUPERSEDED`, `REGISTRY_UNAVAILABLE`, `REGISTRY_ERROR`). Note the distinctions: `NO_MATCH` is a definitive mismatch, `INCONCLUSIVE` means the registry could not confirm either way (review, not decline), and `BIOMETRIC_IMAGE_UNUSABLE` is a technical selfie problem (retake), unlike the definitive `BIOMETRIC_NO_MATCH`. The overall `match_type` aggregates across services (any full → `full_match`, else any partial → `partial_match`, else `no_match`) and `no_match_action`/`partial_match_action` translate it into the final `status`. `validation_type` is derived: `two_by_two` when two or more distinct services produced a full match (on the identification number, on full name + date of birth together, or on the address without contradictions), else `one_by_one`.

**Persistence.** `save_api_request` defaults to **true**: the result is stored as a session (`request_id` works with `GET /v3/session/{sessionId}/decision/`), appears in the console, and fires a `status.updated` webhook. It also controls the `validations` shape - per-service objects when saved, a merged `{field: match}` map when not.

**Billing.** Per-service: each service that returns a billable result is charged its own catalog price. Failed or skipped services are not billed, and requests rejected with `400` cost nothing. The pre-flight balance check covers the sum of the selected services' prices (`403` when short).

**Failures.** When no selected service returns a usable result, the API returns `400` with `validation_errors` if every unanswered attempt explicitly refused the input (`provider_rejected_input`, `retryable: false`). Correct the input before trying again. Otherwise it returns `502` with `validation_errors` (`empty_provider_response`, `retryable: true`), including mixed input rejection and unavailable fallback attempts; nothing is billed (a session is still recorded with status `Not Finished` when `save_api_request=true`). When only some services fail, the `200` response carries their failures in `database_validation.errors`.

**Sandbox.** Keys from sandbox applications skip the registry calls and billing and return a static `full_match` response - the sandbox payload always includes `services_used` and `match_score: 100` regardless of how `services` was sent, so don't validate the live extended-shape gating or the 0.0-1.0 `match_score` fraction against sandbox responses.

Send the request as `application/json`, or as `multipart/form-data` when uploading a `selfie`.

POST /v3/database-validation/

type DatabaseValidationValidateParams

type DatabaseValidationValidateParams struct {
	// ISO 3166-1 **alpha-3** country code of the registry to validate against (e.g.
	// `BRA`, `ESP`, `COL`). Determines which services are available. Unsupported
	// codes return `400` with the full list of valid options. Required.
	IssuingState string `json:"issuing_state"`

	// Catalog `service_id`s to run for this country (e.g. `["bra_cpf"]`). Also
	// accepts a single string or a comma-separated/JSON-encoded string. **If
	// omitted or empty, exactly one default service runs** - the
	// longest-established live service for the country; newer, biometric, and
	// pay-as-you-go services must be named explicitly. Sending `services` switches
	// the response to the extended shape (adds `services_used` and `match_score`).
	// Every id must exist and be live for the `issuing_state`; services that
	// require onboarding return `400` until activated for your organization.
	// Discover available services per country via `GET
	// /v1/organization/database-validation-countries/` (a catalog endpoint not
	// documented in this spec) or the Business Console workflow editor.
	Services Opt[[]string] `json:"services"`

	// DEPRECATED. Accepted for backward compatibility but ignored - the response
	// `validation_type` is now derived from how many services full-matched. Use
	// `services` to pin specific services.
	ValidationType Opt[string] `json:"validation_type"`

	// Set to `true` when the end user has explicitly consented to the selected
	// validation services. Required for services flagged `requires_consent=true` in
	// the catalog - without it those services return `400` with
	// `services_requiring_consent`.
	Consent Opt[bool] `json:"consent"`

	// Universal identification number - automatically mapped to the correct
	// country-specific field, so you can use it instead of
	// `personal_number`/`tax_number`/`document_number`: ARG→document_number (DNI),
	// BOL→document_number (CI), BRA→tax_number (CPF, 11 digits),
	// CHL→personal_number (RUT), COL→personal_number (Cédula), CRI→personal_number
	// (Cédula), DOM→personal_number (Cédula, 11 digits), ECU→personal_number
	// (Cédula, 10 digits), ESP→personal_number (DNI/NIE), GTM→document_number
	// (DPI), HND→document_number (DNI), MEX→personal_number (CURP, 18 chars),
	// PAN→personal_number (Cédula), PER→personal_number (DNI, 8 digits),
	// PRY→document_number (CI), SLV→document_number (DUI), URY→personal_number
	// (CI), VEN→document_number (Cédula). It never overrides an explicitly provided
	// country-specific field.
	IdentificationNumber Opt[string] `json:"identification_number"`

	// The individual's first name. Required by some services/countries.
	FirstName Opt[string] `json:"first_name"`

	// The individual's last name. Required by some services/countries.
	LastName Opt[string] `json:"last_name"`

	// Middle name, used by some country services (AUS, NZL, …).
	MiddleName Opt[string] `json:"middle_name"`

	// Full name - some services accept this in lieu of first/last name (e.g. CHN
	// services, which match the native-script name).
	FullName Opt[string] `json:"full_name"`

	// Date of birth, `YYYY-MM-DD`. Required by many services.
	DateOfBirth Opt[string] `json:"date_of_birth"`

	// Government-issued unique personal identifier. Used by: CHL (RUT), COL
	// (Cédula), CRI, DOM, ECU, ESP (DNI/NIE), MEX (CURP), PAN (Cédula), PER (DNI),
	// URY. Consider `identification_number` instead.
	PersonalNumber Opt[string] `json:"personal_number"`

	// Tax identification number. Used by: BRA (CPF, 11 digits). Consider
	// `identification_number` instead.
	TaxNumber Opt[string] `json:"tax_number"`

	// Document number. Used by: ARG (DNI), BOL (CI), GTM (DPI), HND (DNI), PRY
	// (CI), SLV (DUI), VEN (Cédula). Consider `identification_number` instead.
	DocumentNumber Opt[string] `json:"document_number"`

	// Type of document being validated: `P` passport, `DL` driver license, `ID`
	// national ID, `RP` residence permit (plus `SSC`, `HIC`, `WP`, `TC`, `VISA`,
	// `PSC`, `BC`, `OTHER`). Required by some services (e.g. ESP).
	DocumentType Opt[DatabaseValidationValidateParamsDocumentType] `json:"document_type"`

	// Document expiration date, `YYYY-MM-DD`. Required for ESP (Spain) validation.
	ExpirationDate Opt[string] `json:"expiration_date"`

	// Document issue date, `YYYY-MM-DD` (fecha de expedición). Required for COL
	// (Colombia) cédula validation.
	DateOfIssue Opt[string] `json:"date_of_issue"`

	// Nationality as ISO 3166-1 alpha-3. Required by some services.
	Nationality Opt[string] `json:"nationality"`

	// Gender: `M`, `F`, or `X` (other/unknown). Required for Argentina's RENAPER
	// validation (`arg_renaper`).
	Gender Opt[DatabaseValidationValidateParamsGender] `json:"gender"`

	// Residential address. Prefer the structured object `{"street_1":"123 Main
	// St","street_2":"Apt
	// 4B","city":"Springfield","region":"IL","postal_code":"62701","country":"US"}`;
	// a complete single-line string is still accepted. Required by
	// address-verification services; when a service defines address requirements,
	// missing parts return `400` with `address_fields_required_by`.
	Address Opt[any] `json:"address"`

	// Street address including street number and type. If omitted, derived from
	// `address`.
	AddressElement1 Opt[string] `json:"address_element_1"`

	// Apartment, unit, building, floor, or extra address line. Only send when you
	// have it explicitly.
	AddressElement2 Opt[string] `json:"address_element_2"`

	// City, suburb, district, locality, or neighborhood. If omitted, derived from
	// `address`.
	AddressElement3 Opt[string] `json:"address_element_3"`

	// State, province, region, or town. If omitted, derived from `address`.
	AddressElement4 Opt[string] `json:"address_element_4"`

	// Postcode or postal code. `postal_code` is accepted as an alias.
	AddressElement5 Opt[string] `json:"address_element_5"`

	// Postal code for address-based services (alias of `address_element_5`).
	PostalCode Opt[string] `json:"postal_code"`

	// Driver licence number for government document-verification services (AUS,
	// NZL, IND).
	DriverLicenseNumber Opt[string] `json:"driver_license_number"`

	// Physical driver licence card number, where required separately from the
	// licence number (AUS).
	DriverLicenseCardNumber Opt[string] `json:"driver_license_card_number"`

	// Driver licence state or territory of issue (AUS).
	DriverLicenseState Opt[string] `json:"driver_license_state"`

	// Driver licence version code (NZL).
	DriverLicenseVersion Opt[string] `json:"driver_license_version"`

	// Passport number for government passport-verification services (AUS, NZL, IND,
	// CHN).
	PassportNumber Opt[string] `json:"passport_number"`

	// Passport expiry date, `YYYY-MM-DD`, for passport-verification services.
	PassportExpirationDate Opt[string] `json:"passport_expiration_date"`

	// Passport file number (IND).
	PassportFileNumber Opt[string] `json:"passport_file_number"`

	// Issuing country of the passport (ISO 3166-1 alpha-3) for
	// passport-verification services.
	PassportIssueCountry Opt[string] `json:"passport_issue_country"`

	// Medicare card number (AUS).
	MedicareCardNumber Opt[string] `json:"medicare_card_number"`

	// Australian ImmiCard number.
	ImmiCardNumber Opt[string] `json:"immi_card_number"`

	// Australian ImmiCard expiry date.
	ImmiCardExpiryDate Opt[string] `json:"immi_card_expiry_date"`

	// Citizenship certificate number (AUS).
	CitizenshipCertificateNumber Opt[string] `json:"citizenship_certificate_number"`

	// Birth-certificate registration number (AUS).
	BirthRegistrationNumber Opt[string] `json:"birth_registration_number"`

	// Birth-certificate registration date (AUS).
	BirthRegistrationDate Opt[string] `json:"birth_registration_date"`

	// Birth-certificate registration state (AUS).
	BirthRegistrationState Opt[string] `json:"birth_registration_state"`

	// Marriage certificate number (AUS).
	MarriageCertificateNumber Opt[string] `json:"marriage_certificate_number"`

	// Change-of-name certificate number (AUS).
	ChangeOfNameCertificateNumber Opt[string] `json:"change_of_name_certificate_number"`

	// First name of the partner on a marriage certificate (AUS).
	FirstPartnerName Opt[string] `json:"first_partner_name"`

	// Last name of the partner on a marriage certificate (AUS).
	LastPartnerName Opt[string] `json:"last_partner_name"`

	// Voter registration number (IND EPIC, IRL).
	VoterID Opt[string] `json:"voter_id"`

	// India EPIC voter card number.
	EpicCard Opt[string] `json:"epic_card"`

	// India PAN (Permanent Account Number).
	Pan Opt[string] `json:"pan"`

	// National ID number (CHN, MYS, KEN, KHM, NGA, ZAF, …).
	NationalID Opt[string] `json:"national_id"`

	// Mexican INE/IFE Código de Identificación de Credencial (CIC), 9 digits. Used
	// by the MEX INE credential-validity service (`mex_ine_vigencia`).
	Cic Opt[string] `json:"cic"`

	// Mexican INE Identificador del Ciudadano (9 digits). Used with `cic` for
	// modern INE models (E/F/G/H) in `mex_ine_vigencia`.
	IdentificadorCiudadano Opt[string] `json:"identificador_ciudadano"`

	// Mexican INE OCR number (13 digits, back of card). Used with `cic` for Model D
	// in `mex_ine_vigencia`.
	OCR Opt[string] `json:"ocr"`

	// Mexican INE Clave de Elector (18 chars). Used with `emission_number` for
	// legacy IFE models (A/B/C) in `mex_ine_vigencia`.
	VoterNumber Opt[string] `json:"voter_number"`

	// Mexican INE Número de Emisión. Used with `voter_number` for legacy IFE models
	// (A/B/C) in `mex_ine_vigencia`.
	EmissionNumber Opt[string] `json:"emission_number"`

	// Nigerian Bank Verification Number.
	Bvn Opt[string] `json:"bvn"`

	// Bank card number (CHN bank-card verification).
	BankCardNumber Opt[string] `json:"bank_card_number"`

	// Social Security Number (USA).
	SSN Opt[string] `json:"ssn"`

	// Phone number for phone-verification services.
	Phone Opt[string] `json:"phone"`

	// Landline number for phone-verification services.
	Landline Opt[string] `json:"landline"`

	// Email address for identity-verification services.
	Email Opt[string] `json:"email"`

	// ISO 3166-1 alpha-2 country of residence. Used by global identity-enrichment
	// services (e.g. `glb_identity_enrichment`) to focus the lookup.
	CountryOfResidence Opt[string] `json:"country_of_residence"`

	// What a `partial_match` does to `database_validation.status`. Defaults to
	// `NO_ACTION` (status stays `Approved`, with a warning).
	PartialMatchAction Opt[DatabaseValidationValidateParamsPartialMatchAction] `json:"partial_match_action"`

	// What a `no_match` does to `database_validation.status`. Defaults to
	// `DECLINE`.
	NoMatchAction Opt[DatabaseValidationValidateParamsNoMatchAction] `json:"no_match_action"`

	// Persist the validation as a session (console visibility, decision endpoint,
	// `status.updated` webhook). Also changes the `validations` response shape:
	// per-service objects when `true` (default), a merged field map when `false`.
	SaveAPIRequest Opt[bool] `json:"save_api_request"`

	// Your identifier for the validated user; echoed back and stored with the
	// session.
	VendorData Opt[string] `json:"vendor_data"`

	// Free-form JSON stored with the request and echoed back.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Selfie image (`jpg`, `jpeg`, `png`, `webp`; max 2 MB - images are compressed
	// to ~1.5 MB before upload to the registry) for biometric validation services,
	// e.g. Argentina RENAPER (`arg_renaper`) and Panama SIB (`pan_cedula_sib`,
	// `pan_cedula_sib_plus`). Required whenever a selected service lists it as a
	// required field. Only available via `multipart/form-data`.
	Selfie Opt[File] `json:"-" form:"selfie"`
}

DatabaseValidationValidateParams holds the parameters of Client.DatabaseValidation.Validate.

func (DatabaseValidationValidateParams) MarshalJSON

func (r DatabaseValidationValidateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type DatabaseValidationValidateParamsDocumentType

type DatabaseValidationValidateParamsDocumentType string

DatabaseValidationValidateParamsDocumentType: Type of document being validated: `P` passport, `DL` driver license, `ID` national ID, `RP` residence permit (plus `SSC`, `HIC`, `WP`, `TC`, `VISA`, `PSC`, `BC`, `OTHER`). Required by some services (e.g. ESP).

DatabaseValidationValidateParamsDocumentType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DatabaseValidationValidateParamsDocumentTypeP     DatabaseValidationValidateParamsDocumentType = "P"
	DatabaseValidationValidateParamsDocumentTypeDl    DatabaseValidationValidateParamsDocumentType = "DL"
	DatabaseValidationValidateParamsDocumentTypeID    DatabaseValidationValidateParamsDocumentType = "ID"
	DatabaseValidationValidateParamsDocumentTypeRp    DatabaseValidationValidateParamsDocumentType = "RP"
	DatabaseValidationValidateParamsDocumentTypeSsc   DatabaseValidationValidateParamsDocumentType = "SSC"
	DatabaseValidationValidateParamsDocumentTypeHic   DatabaseValidationValidateParamsDocumentType = "HIC"
	DatabaseValidationValidateParamsDocumentTypeWp    DatabaseValidationValidateParamsDocumentType = "WP"
	DatabaseValidationValidateParamsDocumentTypeTc    DatabaseValidationValidateParamsDocumentType = "TC"
	DatabaseValidationValidateParamsDocumentTypeVisa  DatabaseValidationValidateParamsDocumentType = "VISA"
	DatabaseValidationValidateParamsDocumentTypePsc   DatabaseValidationValidateParamsDocumentType = "PSC"
	DatabaseValidationValidateParamsDocumentTypeBc    DatabaseValidationValidateParamsDocumentType = "BC"
	DatabaseValidationValidateParamsDocumentTypeOther DatabaseValidationValidateParamsDocumentType = "OTHER"
)

Known values of DatabaseValidationValidateParamsDocumentType.

type DatabaseValidationValidateParamsGender

type DatabaseValidationValidateParamsGender string

DatabaseValidationValidateParamsGender: Gender: `M`, `F`, or `X` (other/unknown). Required for Argentina's RENAPER validation (`arg_renaper`).

DatabaseValidationValidateParamsGender is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DatabaseValidationValidateParamsGenderM DatabaseValidationValidateParamsGender = "M"
	DatabaseValidationValidateParamsGenderF DatabaseValidationValidateParamsGender = "F"
	DatabaseValidationValidateParamsGenderX DatabaseValidationValidateParamsGender = "X"
)

Known values of DatabaseValidationValidateParamsGender.

type DatabaseValidationValidateParamsNoMatchAction

type DatabaseValidationValidateParamsNoMatchAction string

DatabaseValidationValidateParamsNoMatchAction: What a `no_match` does to `database_validation.status`. Defaults to `DECLINE`.

DatabaseValidationValidateParamsNoMatchAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DatabaseValidationValidateParamsNoMatchActionDecline  DatabaseValidationValidateParamsNoMatchAction = "DECLINE"
	DatabaseValidationValidateParamsNoMatchActionNoAction DatabaseValidationValidateParamsNoMatchAction = "NO_ACTION"
)

Known values of DatabaseValidationValidateParamsNoMatchAction.

type DatabaseValidationValidateParamsPartialMatchAction

type DatabaseValidationValidateParamsPartialMatchAction string

DatabaseValidationValidateParamsPartialMatchAction: What a `partial_match` does to `database_validation.status`. Defaults to `NO_ACTION` (status stays `Approved`, with a warning).

DatabaseValidationValidateParamsPartialMatchAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DatabaseValidationValidateParamsPartialMatchActionDecline  DatabaseValidationValidateParamsPartialMatchAction = "DECLINE"
	DatabaseValidationValidateParamsPartialMatchActionNoAction DatabaseValidationValidateParamsPartialMatchAction = "NO_ACTION"
)

Known values of DatabaseValidationValidateParamsPartialMatchAction.

type DatabaseValidationValidateResponse

type DatabaseValidationValidateResponse struct {
	// Persisted session id when `save_api_request=true` (usable with `GET
	// /v3/session/{sessionId}/decision/`); otherwise a transient correlation UUID.
	RequestID          string                                               `json:"request_id"`
	DatabaseValidation DatabaseValidationValidateResponseDatabaseValidation `json:"database_validation"`

	// Echo of the `vendor_data` you sent.
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` you sent.
	Metadata  map[string]any `json:"metadata"`
	CreatedAt time.Time      `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

DatabaseValidationValidateResponse is a response object.

func (*DatabaseValidationValidateResponse) UnmarshalJSON

func (r *DatabaseValidationValidateResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes DatabaseValidationValidateResponse leniently.

type DatabaseValidationValidateResponseDatabaseValidation

type DatabaseValidationValidateResponseDatabaseValidation struct {
	// `Declined` when the overall `match_type` triggers a `DECLINE` action
	// (`no_match_action` defaults to `DECLINE`, `partial_match_action` to
	// `NO_ACTION`); `In Review` when no service produced a usable comparison, for
	// example when the only selected service came back `REGISTRY_UNAVAILABLE` or
	// `INCONCLUSIVE`; `Approved` otherwise. A request that selected several
	// services can be `Approved` on one service's match while another was
	// unavailable, so check `errors` and the per-service `outcome_code`s too.
	Status DatabaseValidationValidateResponseDatabaseValidationStatus `json:"status"`

	// Echo of the ISO 3166-1 alpha-3 country validated against.
	IssuingState string `json:"issuing_state"`

	// Derived from the results: `two_by_two` when ≥2 distinct services produced a
	// full match (on the identification number, on full name + date of birth
	// together, or on the address without contradictions); `one_by_one` otherwise.
	// (The request field of the same name is deprecated and ignored.)
	ValidationType DatabaseValidationValidateResponseDatabaseValidationValidationType `json:"validation_type"`

	// Echo of the input fields that were sent to the selected services (dates
	// normalized to `YYYY-MM-DD`; a `selfie`, when sent, is returned as a
	// pre-signed URL; `consent_obtained: true` is added when consent was given).
	ScreenedData map[string]any `json:"screened_data"`

	// Overall result aggregated across services with field-level comparisons: any
	// `full_match` → `full_match`; else any `partial_match` → `partial_match`; else
	// `no_match`. Outcome-only services, such as biometric criminal screening, can
	// return `null`; inspect each item in `validations` for its `outcome_code`.
	MatchType DatabaseValidationValidateResponseDatabaseValidationMatchType `json:"match_type"`

	// Shape depends on `save_api_request`. **`true` (default):** an array of
	// per-service objects (`service_id`, `service_name`, `validation`,
	// `outcome_code`, `outcome_detail`, `source_data`). **`false`:** a single flat
	// object merging the field-level results of all services (`{"full_name":
	// "full_match", ...}`).
	Validations any `json:"validations"`

	// `DATABASE_VALIDATION_NO_MATCH` or `DATABASE_VALIDATION_PARTIAL_MATCH` when
	// applicable; empty on a full match.
	Warnings []DatabaseValidationValidateResponseDatabaseValidationWarnings `json:"warnings"`

	// Present only when some (but not all) selected services failed. Each entry
	// carries `service_id`, `code`, `message`, and `retryable`. A service reported
	// here is absent from `validations` and `services_used`, and is not billed.
	// This array is the only place it appears, so inspect it even when `status` is
	// `Approved`.
	Errors []DatabaseValidationValidateResponseDatabaseValidationErrors `json:"errors"`

	// Catalog ids of the services that returned a billable result. **Only present
	// when the request explicitly sent `services`.**
	ServicesUsed []string `json:"services_used"`

	// Fraction (0.0-1.0) of attempted services that produced a full match (on the
	// identification number, on full name + date of birth together, or on the
	// address without contradictions). **Only present when the request explicitly
	// sent `services`.**
	MatchScore float64 `json:"match_score"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

DatabaseValidationValidateResponseDatabaseValidation is a response object.

func (*DatabaseValidationValidateResponseDatabaseValidation) UnmarshalJSON

UnmarshalJSON decodes DatabaseValidationValidateResponseDatabaseValidation leniently.

type DatabaseValidationValidateResponseDatabaseValidationErrors

type DatabaseValidationValidateResponseDatabaseValidationErrors struct {
	ServiceID string `json:"service_id"`
	Code      string `json:"code"`
	Message   string `json:"message"`

	// `true` when the service produced no answer and retrying it later can succeed;
	// `false` when the source refused the data it was sent and the input must be
	// corrected first.
	Retryable bool `json:"retryable"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

DatabaseValidationValidateResponseDatabaseValidationErrors is a response object.

func (*DatabaseValidationValidateResponseDatabaseValidationErrors) UnmarshalJSON

UnmarshalJSON decodes DatabaseValidationValidateResponseDatabaseValidationErrors leniently.

type DatabaseValidationValidateResponseDatabaseValidationMatchType

type DatabaseValidationValidateResponseDatabaseValidationMatchType string

DatabaseValidationValidateResponseDatabaseValidationMatchType: Overall result aggregated across services with field-level comparisons: any `full_match` → `full_match`; else any `partial_match` → `partial_match`; else `no_match`. Outcome-only services, such as biometric criminal screening, can return `null`; inspect each item in `validations` for its `outcome_code`.

DatabaseValidationValidateResponseDatabaseValidationMatchType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DatabaseValidationValidateResponseDatabaseValidationMatchTypeFullMatch    DatabaseValidationValidateResponseDatabaseValidationMatchType = "full_match"
	DatabaseValidationValidateResponseDatabaseValidationMatchTypePartialMatch DatabaseValidationValidateResponseDatabaseValidationMatchType = "partial_match"
	DatabaseValidationValidateResponseDatabaseValidationMatchTypeNoMatch      DatabaseValidationValidateResponseDatabaseValidationMatchType = "no_match"
)

Known values of DatabaseValidationValidateResponseDatabaseValidationMatchType.

type DatabaseValidationValidateResponseDatabaseValidationStatus

type DatabaseValidationValidateResponseDatabaseValidationStatus string

DatabaseValidationValidateResponseDatabaseValidationStatus: `Declined` when the overall `match_type` triggers a `DECLINE` action (`no_match_action` defaults to `DECLINE`, `partial_match_action` to `NO_ACTION`); `In Review` when no service produced a usable comparison, for example when the only selected service came back `REGISTRY_UNAVAILABLE` or `INCONCLUSIVE`; `Approved` otherwise. A request that selected several services can be `Approved` on one service's match while another was unavailable, so check `errors` and the per-service `outcome_code`s too.

DatabaseValidationValidateResponseDatabaseValidationStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DatabaseValidationValidateResponseDatabaseValidationStatusApproved DatabaseValidationValidateResponseDatabaseValidationStatus = "Approved"
	DatabaseValidationValidateResponseDatabaseValidationStatusDeclined DatabaseValidationValidateResponseDatabaseValidationStatus = "Declined"
	DatabaseValidationValidateResponseDatabaseValidationStatusInReview DatabaseValidationValidateResponseDatabaseValidationStatus = "In Review"
)

Known values of DatabaseValidationValidateResponseDatabaseValidationStatus.

type DatabaseValidationValidateResponseDatabaseValidationValidationType

type DatabaseValidationValidateResponseDatabaseValidationValidationType string

DatabaseValidationValidateResponseDatabaseValidationValidationType: Derived from the results: `two_by_two` when ≥2 distinct services produced a full match (on the identification number, on full name + date of birth together, or on the address without contradictions); `one_by_one` otherwise. (The request field of the same name is deprecated and ignored.)

DatabaseValidationValidateResponseDatabaseValidationValidationType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DatabaseValidationValidateResponseDatabaseValidationValidationTypeOneByOne DatabaseValidationValidateResponseDatabaseValidationValidationType = "one_by_one"
	DatabaseValidationValidateResponseDatabaseValidationValidationTypeTwoByTwo DatabaseValidationValidateResponseDatabaseValidationValidationType = "two_by_two"
)

Known values of DatabaseValidationValidateResponseDatabaseValidationValidationType.

type DatabaseValidationValidateResponseDatabaseValidationWarnings

type DatabaseValidationValidateResponseDatabaseValidationWarnings struct {
	// Feature that raised the warning.
	Feature string `json:"feature"`

	// Machine-readable risk identifier.
	Risk string `json:"risk"`

	// Extra context for the warning, when available.
	AdditionalData map[string]any `json:"additional_data"`

	// `warning`, `information`, or `error` - how the risk affected the outcome.
	LogType string `json:"log_type"`

	// One-line human-readable summary.
	ShortDescription string `json:"short_description"`

	// Full human-readable explanation.
	LongDescription string `json:"long_description"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

DatabaseValidationValidateResponseDatabaseValidationWarnings is a response object.

func (*DatabaseValidationValidateResponseDatabaseValidationWarnings) UnmarshalJSON

UnmarshalJSON decodes DatabaseValidationValidateResponseDatabaseValidationWarnings leniently.

type DigitalIDWalletAPIAudkenniWalletVerificationStartCountryEnum

type DigitalIDWalletAPIAudkenniWalletVerificationStartCountryEnum string

DigitalIDWalletAPIAudkenniWalletVerificationStartCountryEnum: * `ISL` - ISL

DigitalIDWalletAPIAudkenniWalletVerificationStartCountryEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIAudkenniWalletVerificationStartCountryEnumIsl DigitalIDWalletAPIAudkenniWalletVerificationStartCountryEnum = "ISL"
)

Known values of DigitalIDWalletAPIAudkenniWalletVerificationStartCountryEnum.

type DigitalIDWalletAPIAudkenniWalletVerificationStartRequest

type DigitalIDWalletAPIAudkenniWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the Auðkenni identity. Defaults to ISL, the
	// only country it serves.
	//
	//   - `ISL` - ISL
	Country Opt[DigitalIDWalletAPIAudkenniWalletVerificationStartCountryEnum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIAudkenniWalletVerificationStartRequest: Start a Auðkenni verification (ISL).

func (DigitalIDWalletAPIAudkenniWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIBankidCzWalletVerificationStartRequest

type DigitalIDWalletAPIBankidCzWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the Bank iD identity. Defaults to CZE, the only
	// country it serves.
	//
	//   - `CZE` - CZE
	Country Opt[DigitalIDWalletAPICountryE2dEnum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIBankidCzWalletVerificationStartRequest: Start a Bank iD verification (CZE).

func (DigitalIDWalletAPIBankidCzWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIBankidNoWalletVerificationStartRequest

type DigitalIDWalletAPIBankidNoWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the BankID identity. Defaults to NOR, the only
	// country it serves.
	//
	//   - `NOR` - NOR
	Country Opt[DigitalIDWalletAPICountryAfcEnum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIBankidNoWalletVerificationStartRequest: Start a BankID verification (NOR).

func (DigitalIDWalletAPIBankidNoWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIBankidSeWalletVerificationStartRequest

type DigitalIDWalletAPIBankidSeWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the BankID identity. Defaults to SWE, the only
	// country it serves.
	//
	//   - `SWE` - SWE
	Country Opt[DigitalIDWalletAPICountryEe9enum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIBankidSeWalletVerificationStartRequest: Start a BankID verification (SWE).

func (DigitalIDWalletAPIBankidSeWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIBuypassWalletVerificationStartRequest

type DigitalIDWalletAPIBuypassWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the Buypass ID identity. Defaults to NOR, the
	// only country it serves.
	//
	//   - `NOR` - NOR
	Country Opt[DigitalIDWalletAPICountryAfcEnum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIBuypassWalletVerificationStartRequest: Start a Buypass ID verification (NOR).

func (DigitalIDWalletAPIBuypassWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIConnectidWalletVerificationStartCountryEnum

type DigitalIDWalletAPIConnectidWalletVerificationStartCountryEnum string

DigitalIDWalletAPIConnectidWalletVerificationStartCountryEnum: * `AUS` - AUS

DigitalIDWalletAPIConnectidWalletVerificationStartCountryEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIConnectidWalletVerificationStartCountryEnumAus DigitalIDWalletAPIConnectidWalletVerificationStartCountryEnum = "AUS"
)

Known values of DigitalIDWalletAPIConnectidWalletVerificationStartCountryEnum.

type DigitalIDWalletAPIConnectidWalletVerificationStartRequest

type DigitalIDWalletAPIConnectidWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the ConnectID identity. Defaults to AUS, the
	// only country it serves.
	//
	//   - `AUS` - AUS
	Country Opt[DigitalIDWalletAPIConnectidWalletVerificationStartCountryEnum] `json:"country"`

	// Authorisation server ID selected with ConnectID's bank selector. Sandbox
	// defaults to Mock Bank A.
	AuthorisationServerID Opt[string] `json:"authorisation_server_id"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIConnectidWalletVerificationStartRequest: Start a ConnectID verification (AUS).

func (DigitalIDWalletAPIConnectidWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPICountry520enum

type DigitalIDWalletAPICountry520enum string

DigitalIDWalletAPICountry520enum: * `GBR` - GBR

DigitalIDWalletAPICountry520enum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPICountry520enumGbr DigitalIDWalletAPICountry520enum = "GBR"
)

Known values of DigitalIDWalletAPICountry520enum.

type DigitalIDWalletAPICountryAfcEnum

type DigitalIDWalletAPICountryAfcEnum string

DigitalIDWalletAPICountryAfcEnum: * `NOR` - NOR

DigitalIDWalletAPICountryAfcEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPICountryAfcEnumNor DigitalIDWalletAPICountryAfcEnum = "NOR"
)

Known values of DigitalIDWalletAPICountryAfcEnum.

type DigitalIDWalletAPICountryE2dEnum

type DigitalIDWalletAPICountryE2dEnum string

DigitalIDWalletAPICountryE2dEnum: * `CZE` - CZE

DigitalIDWalletAPICountryE2dEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPICountryE2dEnumCze DigitalIDWalletAPICountryE2dEnum = "CZE"
)

Known values of DigitalIDWalletAPICountryE2dEnum.

type DigitalIDWalletAPICountryEe9enum

type DigitalIDWalletAPICountryEe9enum string

DigitalIDWalletAPICountryEe9enum: * `SWE` - SWE

DigitalIDWalletAPICountryEe9enum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPICountryEe9enumSwe DigitalIDWalletAPICountryEe9enum = "SWE"
)

Known values of DigitalIDWalletAPICountryEe9enum.

type DigitalIDWalletAPIDeviceEnum

type DigitalIDWalletAPIDeviceEnum string

DigitalIDWalletAPIDeviceEnum: * `same_device` - same_device

  • `cross_device` - cross_device

DigitalIDWalletAPIDeviceEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIDeviceEnumSameDevice  DigitalIDWalletAPIDeviceEnum = "same_device"
	DigitalIDWalletAPIDeviceEnumCrossDevice DigitalIDWalletAPIDeviceEnum = "cross_device"
)

Known values of DigitalIDWalletAPIDeviceEnum.

type DigitalIDWalletAPIDiiaWalletVerificationStartCountryEnum

type DigitalIDWalletAPIDiiaWalletVerificationStartCountryEnum string

DigitalIDWalletAPIDiiaWalletVerificationStartCountryEnum: * `UKR` - UKR

DigitalIDWalletAPIDiiaWalletVerificationStartCountryEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIDiiaWalletVerificationStartCountryEnumUkr DigitalIDWalletAPIDiiaWalletVerificationStartCountryEnum = "UKR"
)

Known values of DigitalIDWalletAPIDiiaWalletVerificationStartCountryEnum.

type DigitalIDWalletAPIDiiaWalletVerificationStartRequest

type DigitalIDWalletAPIDiiaWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the Diia identity. Defaults to UKR, the only
	// country it serves.
	//
	//   - `UKR` - UKR
	Country Opt[DigitalIDWalletAPIDiiaWalletVerificationStartCountryEnum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIDiiaWalletVerificationStartRequest: Start a Diia verification (UKR).

func (DigitalIDWalletAPIDiiaWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIEparakstsMobileWalletVerificationStartCountryEnum

type DigitalIDWalletAPIEparakstsMobileWalletVerificationStartCountryEnum string

DigitalIDWalletAPIEparakstsMobileWalletVerificationStartCountryEnum: * `LVA` - LVA

DigitalIDWalletAPIEparakstsMobileWalletVerificationStartCountryEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIEparakstsMobileWalletVerificationStartCountryEnumLva DigitalIDWalletAPIEparakstsMobileWalletVerificationStartCountryEnum = "LVA"
)

Known values of DigitalIDWalletAPIEparakstsMobileWalletVerificationStartCountryEnum.

type DigitalIDWalletAPIEparakstsMobileWalletVerificationStartRequest

type DigitalIDWalletAPIEparakstsMobileWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the eParaksts mobile identity. Defaults to LVA,
	// the only country it serves.
	//
	//   - `LVA` - LVA
	Country Opt[DigitalIDWalletAPIEparakstsMobileWalletVerificationStartCountryEnum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIEparakstsMobileWalletVerificationStartRequest: Start a eParaksts mobile verification (LVA).

func (DigitalIDWalletAPIEparakstsMobileWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum

type DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum string

DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum: * `AUT` - AUT

  • `BEL` - BEL
  • `BGR` - BGR
  • `HRV` - HRV
  • `CYP` - CYP
  • `CZE` - CZE
  • `DNK` - DNK
  • `EST` - EST
  • `FIN` - FIN
  • `FRA` - FRA
  • `DEU` - DEU
  • `GRC` - GRC
  • `HUN` - HUN
  • `IRL` - IRL
  • `ITA` - ITA
  • `LVA` - LVA
  • `LTU` - LTU
  • `LUX` - LUX
  • `MLT` - MLT
  • `NLD` - NLD
  • `POL` - POL
  • `PRT` - PRT
  • `ROU` - ROU
  • `SVK` - SVK
  • `SVN` - SVN
  • `ESP` - ESP
  • `SWE` - SWE
  • `ISL` - ISL
  • `LIE` - LIE
  • `NOR` - NOR

DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumAut DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "AUT"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumBel DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "BEL"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumBgr DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "BGR"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumHrv DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "HRV"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumCyp DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "CYP"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumCze DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "CZE"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumDnk DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "DNK"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumEst DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "EST"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumFin DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "FIN"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumFra DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "FRA"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumDeu DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "DEU"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumGrc DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "GRC"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumHun DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "HUN"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumIrl DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "IRL"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumIta DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "ITA"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumLva DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "LVA"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumLtu DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "LTU"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumLux DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "LUX"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumMlt DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "MLT"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumNld DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "NLD"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumPol DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "POL"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumPrt DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "PRT"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumRou DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "ROU"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumSvk DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "SVK"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumSvn DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "SVN"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumEsp DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "ESP"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumSwe DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "SWE"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumIsl DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "ISL"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumLie DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "LIE"
	DigitalIDWalletAPIEudiWalletVerificationStartCountryEnumNor DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum = "NOR"
)

Known values of DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum.

type DigitalIDWalletAPIEudiWalletVerificationStartRequest

type DigitalIDWalletAPIEudiWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the EUDI Wallet identity.
	//
	//   - `AUT` - AUT
	//   - `BEL` - BEL
	//   - `BGR` - BGR
	//   - `HRV` - HRV
	//   - `CYP` - CYP
	//   - `CZE` - CZE
	//   - `DNK` - DNK
	//   - `EST` - EST
	//   - `FIN` - FIN
	//   - `FRA` - FRA
	//   - `DEU` - DEU
	//   - `GRC` - GRC
	//   - `HUN` - HUN
	//   - `IRL` - IRL
	//   - `ITA` - ITA
	//   - `LVA` - LVA
	//   - `LTU` - LTU
	//   - `LUX` - LUX
	//   - `MLT` - MLT
	//   - `NLD` - NLD
	//   - `POL` - POL
	//   - `PRT` - PRT
	//   - `ROU` - ROU
	//   - `SVK` - SVK
	//   - `SVN` - SVN
	//   - `ESP` - ESP
	//   - `SWE` - SWE
	//   - `ISL` - ISL
	//   - `LIE` - LIE
	//   - `NOR` - NOR Required.
	Country DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIEudiWalletVerificationStartRequest: Start a EUDI Wallet verification (AUT, BEL, BGR, HRV, CYP, CZE, DNK, EST, FIN, FRA, DEU, GRC, HUN, IRL, ITA, LVA, LTU, LUX, MLT, NLD, POL, PRT, ROU, SVK, SVN, ESP, SWE, ISL, LIE, NOR).

func (DigitalIDWalletAPIEudiWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIFranceconnectWalletVerificationStartCountryEnum

type DigitalIDWalletAPIFranceconnectWalletVerificationStartCountryEnum string

DigitalIDWalletAPIFranceconnectWalletVerificationStartCountryEnum: * `FRA` - FRA

DigitalIDWalletAPIFranceconnectWalletVerificationStartCountryEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIFranceconnectWalletVerificationStartCountryEnumFra DigitalIDWalletAPIFranceconnectWalletVerificationStartCountryEnum = "FRA"
)

Known values of DigitalIDWalletAPIFranceconnectWalletVerificationStartCountryEnum.

type DigitalIDWalletAPIFranceconnectWalletVerificationStartRequest

type DigitalIDWalletAPIFranceconnectWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the FranceConnect identity. Defaults to FRA,
	// the only country it serves.
	//
	//   - `FRA` - FRA
	Country Opt[DigitalIDWalletAPIFranceconnectWalletVerificationStartCountryEnum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIFranceconnectWalletVerificationStartRequest: Start a FranceConnect verification (FRA).

func (DigitalIDWalletAPIFranceconnectWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIFrejaidWalletVerificationStartRequest

type DigitalIDWalletAPIFrejaidWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the Freja eID identity. Defaults to SWE, the
	// only country it serves.
	//
	//   - `SWE` - SWE
	Country Opt[DigitalIDWalletAPICountryEe9enum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIFrejaidWalletVerificationStartRequest: Start a Freja eID verification (SWE).

func (DigitalIDWalletAPIFrejaidWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIFtnWalletVerificationStartCountryEnum

type DigitalIDWalletAPIFtnWalletVerificationStartCountryEnum string

DigitalIDWalletAPIFtnWalletVerificationStartCountryEnum: * `FIN` - FIN

DigitalIDWalletAPIFtnWalletVerificationStartCountryEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIFtnWalletVerificationStartCountryEnumFin DigitalIDWalletAPIFtnWalletVerificationStartCountryEnum = "FIN"
)

Known values of DigitalIDWalletAPIFtnWalletVerificationStartCountryEnum.

type DigitalIDWalletAPIFtnWalletVerificationStartRequest

type DigitalIDWalletAPIFtnWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the Finnish Trust Network identity. Defaults to
	// FIN, the only country it serves.
	//
	//   - `FIN` - FIN
	Country Opt[DigitalIDWalletAPIFtnWalletVerificationStartCountryEnum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIFtnWalletVerificationStartRequest: Start a Finnish Trust Network verification (FIN).

func (DigitalIDWalletAPIFtnWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIGovbrWalletVerificationStartCountryEnum

type DigitalIDWalletAPIGovbrWalletVerificationStartCountryEnum string

DigitalIDWalletAPIGovbrWalletVerificationStartCountryEnum: * `BRA` - BRA

DigitalIDWalletAPIGovbrWalletVerificationStartCountryEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIGovbrWalletVerificationStartCountryEnumBra DigitalIDWalletAPIGovbrWalletVerificationStartCountryEnum = "BRA"
)

Known values of DigitalIDWalletAPIGovbrWalletVerificationStartCountryEnum.

type DigitalIDWalletAPIGovbrWalletVerificationStartRequest

type DigitalIDWalletAPIGovbrWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the gov.br identity. Defaults to BRA, the only
	// country it serves.
	//
	//   - `BRA` - BRA
	Country Opt[DigitalIDWalletAPIGovbrWalletVerificationStartCountryEnum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIGovbrWalletVerificationStartRequest: Start a gov.br verification (BRA).

func (DigitalIDWalletAPIGovbrWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIGovukWalletWalletVerificationStartRequest

type DigitalIDWalletAPIGovukWalletWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the GOV.UK Wallet identity. Defaults to GBR,
	// the only country it serves.
	//
	//   - `GBR` - GBR
	Country Opt[DigitalIDWalletAPICountry520enum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIGovukWalletWalletVerificationStartRequest: Start a GOV.UK Wallet verification (GBR).

func (DigitalIDWalletAPIGovukWalletWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIIdcardEeWalletVerificationStartCountryEnum

type DigitalIDWalletAPIIdcardEeWalletVerificationStartCountryEnum string

DigitalIDWalletAPIIdcardEeWalletVerificationStartCountryEnum: * `EST` - EST

DigitalIDWalletAPIIdcardEeWalletVerificationStartCountryEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIIdcardEeWalletVerificationStartCountryEnumEst DigitalIDWalletAPIIdcardEeWalletVerificationStartCountryEnum = "EST"
)

Known values of DigitalIDWalletAPIIdcardEeWalletVerificationStartCountryEnum.

type DigitalIDWalletAPIIdcardEeWalletVerificationStartRequest

type DigitalIDWalletAPIIdcardEeWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the Estonian ID-card identity. Defaults to EST,
	// the only country it serves.
	//
	//   - `EST` - EST
	Country Opt[DigitalIDWalletAPIIdcardEeWalletVerificationStartCountryEnum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIIdcardEeWalletVerificationStartRequest: Start a Estonian ID-card verification (EST).

func (DigitalIDWalletAPIIdcardEeWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIIdinWalletVerificationStartCountryEnum

type DigitalIDWalletAPIIdinWalletVerificationStartCountryEnum string

DigitalIDWalletAPIIdinWalletVerificationStartCountryEnum: * `NLD` - NLD

DigitalIDWalletAPIIdinWalletVerificationStartCountryEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIIdinWalletVerificationStartCountryEnumNld DigitalIDWalletAPIIdinWalletVerificationStartCountryEnum = "NLD"
)

Known values of DigitalIDWalletAPIIdinWalletVerificationStartCountryEnum.

type DigitalIDWalletAPIIdinWalletVerificationStartRequest

type DigitalIDWalletAPIIdinWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the iDIN identity. Defaults to NLD, the only
	// country it serves.
	//
	//   - `NLD` - NLD
	Country Opt[DigitalIDWalletAPIIdinWalletVerificationStartCountryEnum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIIdinWalletVerificationStartRequest: Start a iDIN verification (NLD).

func (DigitalIDWalletAPIIdinWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIInteractionEnum

type DigitalIDWalletAPIInteractionEnum string

DigitalIDWalletAPIInteractionEnum: * `redirect` - redirect

  • `in_app` - in_app

DigitalIDWalletAPIInteractionEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIInteractionEnumRedirect DigitalIDWalletAPIInteractionEnum = "redirect"
	DigitalIDWalletAPIInteractionEnumInApp    DigitalIDWalletAPIInteractionEnum = "in_app"
)

Known values of DigitalIDWalletAPIInteractionEnum.

type DigitalIDWalletAPIItsmeWalletVerificationStartCountryEnum

type DigitalIDWalletAPIItsmeWalletVerificationStartCountryEnum string

DigitalIDWalletAPIItsmeWalletVerificationStartCountryEnum: * `BEL` - BEL

  • `LUX` - LUX
  • `NLD` - NLD

DigitalIDWalletAPIItsmeWalletVerificationStartCountryEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIItsmeWalletVerificationStartCountryEnumBel DigitalIDWalletAPIItsmeWalletVerificationStartCountryEnum = "BEL"
	DigitalIDWalletAPIItsmeWalletVerificationStartCountryEnumLux DigitalIDWalletAPIItsmeWalletVerificationStartCountryEnum = "LUX"
	DigitalIDWalletAPIItsmeWalletVerificationStartCountryEnumNld DigitalIDWalletAPIItsmeWalletVerificationStartCountryEnum = "NLD"
)

Known values of DigitalIDWalletAPIItsmeWalletVerificationStartCountryEnum.

type DigitalIDWalletAPIItsmeWalletVerificationStartRequest

type DigitalIDWalletAPIItsmeWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the itsme identity.
	//
	//   - `BEL` - BEL
	//   - `LUX` - LUX
	//   - `NLD` - NLD Required.
	Country DigitalIDWalletAPIItsmeWalletVerificationStartCountryEnum `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIItsmeWalletVerificationStartRequest: Start a itsme verification (BEL, LUX, NLD).

func (DigitalIDWalletAPIItsmeWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIMitidWalletVerificationStartCountryEnum

type DigitalIDWalletAPIMitidWalletVerificationStartCountryEnum string

DigitalIDWalletAPIMitidWalletVerificationStartCountryEnum: * `DNK` - DNK

DigitalIDWalletAPIMitidWalletVerificationStartCountryEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIMitidWalletVerificationStartCountryEnumDnk DigitalIDWalletAPIMitidWalletVerificationStartCountryEnum = "DNK"
)

Known values of DigitalIDWalletAPIMitidWalletVerificationStartCountryEnum.

type DigitalIDWalletAPIMitidWalletVerificationStartRequest

type DigitalIDWalletAPIMitidWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the MitID identity. Defaults to DNK, the only
	// country it serves.
	//
	//   - `DNK` - DNK
	Country Opt[DigitalIDWalletAPIMitidWalletVerificationStartCountryEnum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIMitidWalletVerificationStartRequest: Start a MitID verification (DNK).

func (DigitalIDWalletAPIMitidWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIMobileIDWalletVerificationStartCountryEnum

type DigitalIDWalletAPIMobileIDWalletVerificationStartCountryEnum string

DigitalIDWalletAPIMobileIDWalletVerificationStartCountryEnum: * `EST` - EST

  • `LTU` - LTU

DigitalIDWalletAPIMobileIDWalletVerificationStartCountryEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIMobileIDWalletVerificationStartCountryEnumEst DigitalIDWalletAPIMobileIDWalletVerificationStartCountryEnum = "EST"
	DigitalIDWalletAPIMobileIDWalletVerificationStartCountryEnumLtu DigitalIDWalletAPIMobileIDWalletVerificationStartCountryEnum = "LTU"
)

Known values of DigitalIDWalletAPIMobileIDWalletVerificationStartCountryEnum.

type DigitalIDWalletAPIMobileIDWalletVerificationStartRequest

type DigitalIDWalletAPIMobileIDWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the Mobile-ID identity.
	//
	//   - `EST` - EST
	//   - `LTU` - LTU Required.
	Country DigitalIDWalletAPIMobileIDWalletVerificationStartCountryEnum `json:"country"`

	// The user's national personal identification code. It addresses the user's
	// Mobile-ID app; the user confirms the comparison code and enters their PIN in
	// the app. Never collect the PIN. Required.
	PersonalCode string `json:"personal_code"`

	// The Mobile-ID phone number in E.164 format (+372... or +370...). Required.
	PhoneNumber string `json:"phone_number"`
}

DigitalIDWalletAPIMobileIDWalletVerificationStartRequest: Start a Mobile-ID verification (EST, LTU).

func (DigitalIDWalletAPIMobileIDWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIMojeidWalletVerificationStartRequest

type DigitalIDWalletAPIMojeidWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the MojeID identity. Defaults to CZE, the only
	// country it serves.
	//
	//   - `CZE` - CZE
	Country Opt[DigitalIDWalletAPICountryE2dEnum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIMojeidWalletVerificationStartRequest: Start a MojeID verification (CZE).

func (DigitalIDWalletAPIMojeidWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIOneidWalletVerificationStartRequest

type DigitalIDWalletAPIOneidWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the OneID identity. Defaults to GBR, the only
	// country it serves.
	//
	//   - `GBR` - GBR
	Country Opt[DigitalIDWalletAPICountry520enum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIOneidWalletVerificationStartRequest: Start a OneID verification (GBR).

func (DigitalIDWalletAPIOneidWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIPersonalausweisWalletVerificationStartCountryEnum

type DigitalIDWalletAPIPersonalausweisWalletVerificationStartCountryEnum string

DigitalIDWalletAPIPersonalausweisWalletVerificationStartCountryEnum: * `DEU` - DEU

DigitalIDWalletAPIPersonalausweisWalletVerificationStartCountryEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIPersonalausweisWalletVerificationStartCountryEnumDeu DigitalIDWalletAPIPersonalausweisWalletVerificationStartCountryEnum = "DEU"
)

Known values of DigitalIDWalletAPIPersonalausweisWalletVerificationStartCountryEnum.

type DigitalIDWalletAPIPersonalausweisWalletVerificationStartRequest

type DigitalIDWalletAPIPersonalausweisWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the Personalausweis identity. Defaults to DEU,
	// the only country it serves.
	//
	//   - `DEU` - DEU
	Country Opt[DigitalIDWalletAPIPersonalausweisWalletVerificationStartCountryEnum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIPersonalausweisWalletVerificationStartRequest: Start a Personalausweis verification (DEU).

func (DigitalIDWalletAPIPersonalausweisWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnum

type DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnum string

DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnum: * `EST` - EST

  • `LVA` - LVA
  • `LTU` - LTU
  • `BEL` - BEL

DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnumEst DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnum = "EST"
	DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnumLva DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnum = "LVA"
	DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnumLtu DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnum = "LTU"
	DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnumBel DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnum = "BEL"
)

Known values of DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnum.

type DigitalIDWalletAPISmartIDWalletVerificationStartRequest

type DigitalIDWalletAPISmartIDWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the Smart-ID identity.
	//
	//   - `EST` - EST
	//   - `LVA` - LVA
	//   - `LTU` - LTU
	//   - `BEL` - BEL Required.
	Country DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnum `json:"country"`

	// The user's national personal identification code. It addresses the user's
	// Smart-ID app; the user confirms the comparison code and enters their PIN in
	// the app. Never collect the PIN. Required.
	PersonalCode string `json:"personal_code"`
}

DigitalIDWalletAPISmartIDWalletVerificationStartRequest: Start a Smart-ID verification (EST, LVA, LTU, BEL).

func (DigitalIDWalletAPISmartIDWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIUaePassWalletVerificationStartCountryEnum

type DigitalIDWalletAPIUaePassWalletVerificationStartCountryEnum string

DigitalIDWalletAPIUaePassWalletVerificationStartCountryEnum: * `ARE` - ARE

DigitalIDWalletAPIUaePassWalletVerificationStartCountryEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIUaePassWalletVerificationStartCountryEnumAre DigitalIDWalletAPIUaePassWalletVerificationStartCountryEnum = "ARE"
)

Known values of DigitalIDWalletAPIUaePassWalletVerificationStartCountryEnum.

type DigitalIDWalletAPIUaePassWalletVerificationStartRequest

type DigitalIDWalletAPIUaePassWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the UAE PASS identity. Defaults to ARE, the
	// only country it serves.
	//
	//   - `ARE` - ARE
	Country Opt[DigitalIDWalletAPIUaePassWalletVerificationStartCountryEnum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIUaePassWalletVerificationStartRequest: Start a UAE PASS verification (ARE).

func (DigitalIDWalletAPIUaePassWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIVippsWalletVerificationStartRequest

type DigitalIDWalletAPIVippsWalletVerificationStartRequest struct {
	// Your own reference for this verification (e.g. your user id). Returned in
	// results and webhooks.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the verification and returned in results and
	// webhooks.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Sandbox applications only: the simulated outcome - 'wallet_cancelled',
	// 'wallet_timeout' or 'wallet_provider_error'; any other scenario (or none)
	// verifies. Rejected on live applications. The full catalog is available at GET
	// /v1/sandbox/scenarios/.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// ISO 3166-1 alpha-3 country of the Vipps identity. Defaults to NOR, the only
	// country it serves.
	//
	//   - `NOR` - NOR
	Country Opt[DigitalIDWalletAPICountryAfcEnum] `json:"country"`

	// https URL the user's browser returns to after the wallet, with request_id and
	// result appended. Its host must be registered in the application's
	// allowed_return_hosts (or be its white-label domain). Never trust result on
	// its own: read the outcome with GET .../verifications/{request_id}/ or the
	// webhook. Required.
	ReturnURL string `json:"return_url"`

	// same_device when the user signs in on the device showing your page,
	// cross_device when they use another one (e.g. BankID's QR code).
	//
	//   - `same_device` - same_device
	//   - `cross_device` - cross_device
	Device Opt[DigitalIDWalletAPIDeviceEnum] `json:"device"`
}

DigitalIDWalletAPIVippsWalletVerificationStartRequest: Start a Vipps verification (NOR).

func (DigitalIDWalletAPIVippsWalletVerificationStartRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type DigitalIDWalletAPIWallet

type DigitalIDWalletAPIWallet struct {
	// Catalog id of the wallet, e.g. bankid_se.
	ID               string `json:"id"`
	Name             string `json:"name"`
	IssuingAuthority string `json:"issuing_authority"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

DigitalIDWalletAPIWallet is a response object.

func (*DigitalIDWalletAPIWallet) UnmarshalJSON

func (r *DigitalIDWalletAPIWallet) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes DigitalIDWalletAPIWallet leniently.

type DigitalIDWalletAPIWalletCatalogEntry

type DigitalIDWalletAPIWalletCatalogEntry struct {
	ID   string `json:"id"`
	Name string `json:"name"`

	// The wallet's own start endpoint.
	Path             string                            `json:"path"`
	Countries        []string                          `json:"countries"`
	IssuingAuthority string                            `json:"issuing_authority"`
	LevelOfAssurance string                            `json:"level_of_assurance"`
	Interaction      DigitalIDWalletAPIInteractionEnum `json:"interaction"`
	RequiredFields   []string                          `json:"required_fields"`

	// Whether this application can start it in this environment now. Listed does
	// not mean live.
	Available bool `json:"available"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

DigitalIDWalletAPIWalletCatalogEntry is a response object.

func (*DigitalIDWalletAPIWalletCatalogEntry) UnmarshalJSON

func (r *DigitalIDWalletAPIWalletCatalogEntry) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes DigitalIDWalletAPIWalletCatalogEntry leniently.

type DigitalIDWalletAPIWalletCatalogResponse

type DigitalIDWalletAPIWalletCatalogResponse struct {
	Wallets []DigitalIDWalletAPIWalletCatalogEntry `json:"wallets"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

DigitalIDWalletAPIWalletCatalogResponse is a response object.

func (*DigitalIDWalletAPIWalletCatalogResponse) UnmarshalJSON

func (r *DigitalIDWalletAPIWalletCatalogResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes DigitalIDWalletAPIWalletCatalogResponse leniently.

type DigitalIDWalletAPIWalletIdentity

type DigitalIDWalletAPIWalletIdentity struct {
	FullName    string `json:"full_name"`
	FirstName   string `json:"first_name"`
	LastName    string `json:"last_name"`
	DateOfBirth string `json:"date_of_birth"`

	// ISO3 nationality, only when the wallet asserts one (never inferred).
	Nationality string `json:"nationality"`

	// ISO3 country whose scheme issued the identity.
	IssuingState string `json:"issuing_state"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

DigitalIDWalletAPIWalletIdentity is a response object.

func (*DigitalIDWalletAPIWalletIdentity) UnmarshalJSON

func (r *DigitalIDWalletAPIWalletIdentity) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes DigitalIDWalletAPIWalletIdentity leniently.

type DigitalIDWalletAPIWalletNextAction

type DigitalIDWalletAPIWalletNextAction struct {
	// redirect: send the user's browser to url. confirm_in_app: show
	// verification_code to the user, who checks it matches the code in their wallet
	// app and confirms there; then poll.
	//
	//   - `redirect` - redirect
	//   - `confirm_in_app` - confirm_in_app
	Type DigitalIDWalletAPIWalletNextActionTypeEnum `json:"type"`

	// redirect only: where the user signs in with the wallet.
	URL string `json:"url"`

	// confirm_in_app only: the 4-digit comparison code the wallet app shows too.
	VerificationCode string `json:"verification_code"`

	// confirm_in_app only: how often to call POST
	// .../verifications/{request_id}/poll/ for prompt feedback. Didit also polls
	// pending sign-ins in the background, so the webhook reports the outcome even
	// when you do not poll.
	PollIntervalSeconds int64 `json:"poll_interval_seconds"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

DigitalIDWalletAPIWalletNextAction is a response object.

func (*DigitalIDWalletAPIWalletNextAction) UnmarshalJSON

func (r *DigitalIDWalletAPIWalletNextAction) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes DigitalIDWalletAPIWalletNextAction leniently.

type DigitalIDWalletAPIWalletNextActionTypeEnum

type DigitalIDWalletAPIWalletNextActionTypeEnum string

DigitalIDWalletAPIWalletNextActionTypeEnum: * `redirect` - redirect

  • `confirm_in_app` - confirm_in_app

DigitalIDWalletAPIWalletNextActionTypeEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIWalletNextActionTypeEnumRedirect     DigitalIDWalletAPIWalletNextActionTypeEnum = "redirect"
	DigitalIDWalletAPIWalletNextActionTypeEnumConfirmInApp DigitalIDWalletAPIWalletNextActionTypeEnum = "confirm_in_app"
)

Known values of DigitalIDWalletAPIWalletNextActionTypeEnum.

type DigitalIDWalletAPIWalletVerificationResponse

type DigitalIDWalletAPIWalletVerificationResponse struct {
	RequestID          string                                     `json:"request_id"`
	WalletVerification DigitalIDWalletAPIWalletVerificationResult `json:"wallet_verification"`
	VendorData         string                                     `json:"vendor_data"`

	// The metadata object sent at start, or null.
	Metadata  map[string]any `json:"metadata"`
	CreatedAt time.Time      `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

DigitalIDWalletAPIWalletVerificationResponse: One standalone wallet verification, as every wallet endpoint answers it.

func (*DigitalIDWalletAPIWalletVerificationResponse) UnmarshalJSON

func (r *DigitalIDWalletAPIWalletVerificationResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes DigitalIDWalletAPIWalletVerificationResponse leniently.

type DigitalIDWalletAPIWalletVerificationResult

type DigitalIDWalletAPIWalletVerificationResult struct {
	Wallet  DigitalIDWalletAPIWallet `json:"wallet"`
	Country string                   `json:"country"`

	// Not Finished while pending, then Approved (verified) or Declined.
	Status           string                                                `json:"status"`
	Outcome          DigitalIDWalletAPIWalletVerificationResultOutcomeEnum `json:"outcome"`
	Error            string                                                `json:"error"`
	Interaction      DigitalIDWalletAPIInteractionEnum                     `json:"interaction"`
	Simulated        bool                                                  `json:"simulated"`
	ExpiresAt        time.Time                                             `json:"expires_at"`
	NextAction       DigitalIDWalletAPIWalletNextAction                    `json:"next_action"`
	Identity         DigitalIDWalletAPIWalletIdentity                      `json:"identity"`
	Attributes       map[string]any                                        `json:"attributes"`
	LevelOfAssurance string                                                `json:"level_of_assurance"`
	VerifiedAt       time.Time                                             `json:"verified_at"`

	// True once the credential's signature was verified; null for a simulated one.
	SignatureValid bool   `json:"signature_valid"`
	CredentialType string `json:"credential_type"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

DigitalIDWalletAPIWalletVerificationResult is a response object.

func (*DigitalIDWalletAPIWalletVerificationResult) UnmarshalJSON

func (r *DigitalIDWalletAPIWalletVerificationResult) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes DigitalIDWalletAPIWalletVerificationResult leniently.

type DigitalIDWalletAPIWalletVerificationResultOutcomeEnum

type DigitalIDWalletAPIWalletVerificationResultOutcomeEnum string

DigitalIDWalletAPIWalletVerificationResultOutcomeEnum: * `pending` - Pending

  • `verified` - Verified
  • `cancelled` - Cancelled by the user
  • `timeout` - Timed out
  • `failed` - Failed

DigitalIDWalletAPIWalletVerificationResultOutcomeEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DigitalIDWalletAPIWalletVerificationResultOutcomeEnumPending   DigitalIDWalletAPIWalletVerificationResultOutcomeEnum = "pending"
	DigitalIDWalletAPIWalletVerificationResultOutcomeEnumVerified  DigitalIDWalletAPIWalletVerificationResultOutcomeEnum = "verified"
	DigitalIDWalletAPIWalletVerificationResultOutcomeEnumCancelled DigitalIDWalletAPIWalletVerificationResultOutcomeEnum = "cancelled"
	DigitalIDWalletAPIWalletVerificationResultOutcomeEnumTimeout   DigitalIDWalletAPIWalletVerificationResultOutcomeEnum = "timeout"
	DigitalIDWalletAPIWalletVerificationResultOutcomeEnumFailed    DigitalIDWalletAPIWalletVerificationResultOutcomeEnum = "failed"
)

Known values of DigitalIDWalletAPIWalletVerificationResultOutcomeEnum.

type DocumentAiAnalyzeParams

type DocumentAiAnalyzeParams struct {
	// The document to read. Allowed extensions: `tiff`, `jpg`, `jpeg`, `png`,
	// `pdf`, `webp`, `zip`. Maximum upload size: **30 MB** (larger files are
	// rejected with `400`). Multi-page PDFs are supported (expect higher latency);
	// encrypted PDFs are rejected with `400`. Images are automatically compressed
	// before processing. Required.
	Document File `json:"-" form:"document"`

	// One JSON-encoded array string with **1-30** field definitions (maximum 16
	// KB). Each item: `key` (required, `^[a-z0-9_]{1,64}$`, unique - the key
	// returned in `extracted_data`), `name` (≤100 chars, shown in messages),
	// `instruction` (≤500 chars, what the model should read), `type` (`text`
	// default | `number` | `date`), `required` (boolean, default `false`),
	// `is_full_name` (boolean, default `false`, at most one per request).
	// Bracket-style form arrays, invalid JSON, duplicate keys, or more than one
	// `is_full_name` return `400` before any processing or billing. Required.
	Fields string `json:"fields"`

	// First name to verify against the document's name field (fuzzy match,
	// transliteration-aware). Use together with `expected_last_name`; cannot be
	// combined with `expected_company_name`.
	ExpectedFirstName Opt[string] `json:"expected_first_name"`

	// Last name to verify against the document's name field, combined with
	// `expected_first_name` for `name_match_score`.
	ExpectedLastName Opt[string] `json:"expected_last_name"`

	// Company name to verify against the document's name field (for business
	// documents). Cannot be combined with `expected_first_name` /
	// `expected_last_name` (no example value on purpose - the generated request
	// sample uses the person fields; swap them for this one when verifying a
	// business document).
	ExpectedCompanyName Opt[string] `json:"expected_company_name"`

	// Optional ISO 3166-1 alpha-2 country code (two ASCII letters, e.g. `FR`) that
	// tunes company-name normalization for `expected_company_name`. Only used with
	// `expected_company_name`.
	ExpectedCompanyCountry Opt[string] `json:"expected_company_country"`

	// Minimum `name_match_score` (0-100) to consider the name matched. A lower
	// score adds `DOCUMENT_AI_NAME_MISMATCH`, governed by
	// `document_ai_name_mismatch_action`.
	DocumentAiNameMatchScoreThreshold Opt[int64] `json:"document_ai_name_match_score_threshold"`

	// What to do when no field could be read from the document
	// (`DOCUMENT_AI_UNREADABLE_DOCUMENT`).
	DocumentAiUnreadableDocumentAction Opt[DocumentAiAnalyzeParamsDocumentAiUnreadableDocumentAction] `json:"document_ai_unreadable_document_action"`

	// What to do when at least one `required` field could not be read
	// (`DOCUMENT_AI_MISSING_REQUIRED_FIELDS`; `additional_data.missing_fields`
	// lists them).
	DocumentAiMissingRequiredFieldsAction Opt[DocumentAiAnalyzeParamsDocumentAiMissingRequiredFieldsAction] `json:"document_ai_missing_required_fields_action"`

	// What to do when PDF/EXIF forensics suspect manipulation - modified after
	// digital signing, known PDF editor, overlay-text manipulation, suspicious
	// re-export, image anomalies (`DOCUMENT_AI_SUSPECTED_MANIPULATION`).
	DocumentAiDocumentTamperingAction Opt[DocumentAiAnalyzeParamsDocumentAiDocumentTamperingAction] `json:"document_ai_document_tampering_action"`

	// What to do when `name_match_score` is below the threshold
	// (`DOCUMENT_AI_NAME_MISMATCH`).
	DocumentAiNameMismatchAction Opt[DocumentAiAnalyzeParamsDocumentAiNameMismatchAction] `json:"document_ai_name_mismatch_action"`

	// What to do when the upload is empty or not a processable file
	// (`DOCUMENT_AI_UNSUPPORTED_FILE`).
	DocumentAiUnsupportedFileAction Opt[DocumentAiAnalyzeParamsDocumentAiUnsupportedFileAction] `json:"document_ai_unsupported_file_action"`

	// When `true` (default), persists the call as an API-type session - visible in
	// the Business Console, retrievable via `GET /v3/session/{sessionId}/decision/`
	// using the returned `request_id`, with the uploaded document, the extracted
	// values, the field definitions and the name-match snapshot stored. When
	// `false`, nothing is stored and `request_id` is a transient UUID for response
	// correlation only; the call is still billed.
	SaveAPIRequest Opt[bool] `json:"save_api_request"`

	// Optional opaque string (your internal user id, email, UUID…) stored on the
	// persisted session and echoed back in the response. Use it to correlate API
	// calls with your own records and to filter sessions later.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the session (when `save_api_request=true`)
	// and echoed back in the response. In multipart requests, send it as a
	// JSON-encoded string field (e.g. `metadata={"flow":"onboarding"}`) - it is
	// parsed into an object.
	Metadata Opt[map[string]any] `json:"metadata"`
}

DocumentAiAnalyzeParams holds the parameters of Client.DocumentAi.Analyze.

func (DocumentAiAnalyzeParams) MarshalJSON

func (r DocumentAiAnalyzeParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type DocumentAiAnalyzeParamsDocumentAiDocumentTamperingAction

type DocumentAiAnalyzeParamsDocumentAiDocumentTamperingAction string

DocumentAiAnalyzeParamsDocumentAiDocumentTamperingAction: What to do when PDF/EXIF forensics suspect manipulation - modified after digital signing, known PDF editor, overlay-text manipulation, suspicious re-export, image anomalies (`DOCUMENT_AI_SUSPECTED_MANIPULATION`).

DocumentAiAnalyzeParamsDocumentAiDocumentTamperingAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DocumentAiAnalyzeParamsDocumentAiDocumentTamperingActionDecline  DocumentAiAnalyzeParamsDocumentAiDocumentTamperingAction = "DECLINE"
	DocumentAiAnalyzeParamsDocumentAiDocumentTamperingActionReview   DocumentAiAnalyzeParamsDocumentAiDocumentTamperingAction = "REVIEW"
	DocumentAiAnalyzeParamsDocumentAiDocumentTamperingActionNoAction DocumentAiAnalyzeParamsDocumentAiDocumentTamperingAction = "NO_ACTION"
)

Known values of DocumentAiAnalyzeParamsDocumentAiDocumentTamperingAction.

type DocumentAiAnalyzeParamsDocumentAiMissingRequiredFieldsAction

type DocumentAiAnalyzeParamsDocumentAiMissingRequiredFieldsAction string

DocumentAiAnalyzeParamsDocumentAiMissingRequiredFieldsAction: What to do when at least one `required` field could not be read (`DOCUMENT_AI_MISSING_REQUIRED_FIELDS`; `additional_data.missing_fields` lists them).

DocumentAiAnalyzeParamsDocumentAiMissingRequiredFieldsAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DocumentAiAnalyzeParamsDocumentAiMissingRequiredFieldsActionDecline  DocumentAiAnalyzeParamsDocumentAiMissingRequiredFieldsAction = "DECLINE"
	DocumentAiAnalyzeParamsDocumentAiMissingRequiredFieldsActionReview   DocumentAiAnalyzeParamsDocumentAiMissingRequiredFieldsAction = "REVIEW"
	DocumentAiAnalyzeParamsDocumentAiMissingRequiredFieldsActionNoAction DocumentAiAnalyzeParamsDocumentAiMissingRequiredFieldsAction = "NO_ACTION"
)

Known values of DocumentAiAnalyzeParamsDocumentAiMissingRequiredFieldsAction.

type DocumentAiAnalyzeParamsDocumentAiNameMismatchAction

type DocumentAiAnalyzeParamsDocumentAiNameMismatchAction string

DocumentAiAnalyzeParamsDocumentAiNameMismatchAction: What to do when `name_match_score` is below the threshold (`DOCUMENT_AI_NAME_MISMATCH`).

DocumentAiAnalyzeParamsDocumentAiNameMismatchAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DocumentAiAnalyzeParamsDocumentAiNameMismatchActionDecline  DocumentAiAnalyzeParamsDocumentAiNameMismatchAction = "DECLINE"
	DocumentAiAnalyzeParamsDocumentAiNameMismatchActionReview   DocumentAiAnalyzeParamsDocumentAiNameMismatchAction = "REVIEW"
	DocumentAiAnalyzeParamsDocumentAiNameMismatchActionNoAction DocumentAiAnalyzeParamsDocumentAiNameMismatchAction = "NO_ACTION"
)

Known values of DocumentAiAnalyzeParamsDocumentAiNameMismatchAction.

type DocumentAiAnalyzeParamsDocumentAiUnreadableDocumentAction

type DocumentAiAnalyzeParamsDocumentAiUnreadableDocumentAction string

DocumentAiAnalyzeParamsDocumentAiUnreadableDocumentAction: What to do when no field could be read from the document (`DOCUMENT_AI_UNREADABLE_DOCUMENT`).

DocumentAiAnalyzeParamsDocumentAiUnreadableDocumentAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DocumentAiAnalyzeParamsDocumentAiUnreadableDocumentActionDecline  DocumentAiAnalyzeParamsDocumentAiUnreadableDocumentAction = "DECLINE"
	DocumentAiAnalyzeParamsDocumentAiUnreadableDocumentActionReview   DocumentAiAnalyzeParamsDocumentAiUnreadableDocumentAction = "REVIEW"
	DocumentAiAnalyzeParamsDocumentAiUnreadableDocumentActionNoAction DocumentAiAnalyzeParamsDocumentAiUnreadableDocumentAction = "NO_ACTION"
)

Known values of DocumentAiAnalyzeParamsDocumentAiUnreadableDocumentAction.

type DocumentAiAnalyzeParamsDocumentAiUnsupportedFileAction

type DocumentAiAnalyzeParamsDocumentAiUnsupportedFileAction string

DocumentAiAnalyzeParamsDocumentAiUnsupportedFileAction: What to do when the upload is empty or not a processable file (`DOCUMENT_AI_UNSUPPORTED_FILE`).

DocumentAiAnalyzeParamsDocumentAiUnsupportedFileAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DocumentAiAnalyzeParamsDocumentAiUnsupportedFileActionDecline  DocumentAiAnalyzeParamsDocumentAiUnsupportedFileAction = "DECLINE"
	DocumentAiAnalyzeParamsDocumentAiUnsupportedFileActionReview   DocumentAiAnalyzeParamsDocumentAiUnsupportedFileAction = "REVIEW"
	DocumentAiAnalyzeParamsDocumentAiUnsupportedFileActionNoAction DocumentAiAnalyzeParamsDocumentAiUnsupportedFileAction = "NO_ACTION"
)

Known values of DocumentAiAnalyzeParamsDocumentAiUnsupportedFileAction.

type DocumentAiAnalyzeResponse

type DocumentAiAnalyzeResponse struct {
	// Persisted session id when `save_api_request=true` (usable with `GET
	// /v3/session/{sessionId}/decision/`); otherwise a transient correlation UUID.
	RequestID  string                              `json:"request_id"`
	DocumentAi DocumentAiAnalyzeResponseDocumentAi `json:"document_ai"`

	// Echo of the `vendor_data` you sent, or `null`.
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` object you sent, or `null`.
	Metadata map[string]any `json:"metadata"`

	// When the request was processed (UTC, ISO 8601).
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

DocumentAiAnalyzeResponse is a response object.

func (*DocumentAiAnalyzeResponse) UnmarshalJSON

func (r *DocumentAiAnalyzeResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes DocumentAiAnalyzeResponse leniently.

type DocumentAiAnalyzeResponseDocumentAi

type DocumentAiAnalyzeResponseDocumentAi struct {
	// `Approved` when no warning resolves to a decline or review; `Declined` when
	// at least one risk maps to `DECLINE`; otherwise `In Review` when at least one
	// maps to `REVIEW`. The `warnings` list explains why.
	Status DocumentAiAnalyzeResponseDocumentAiStatus `json:"status"`

	// One entry per requested field key. Values are typed per the field `type` -
	// strings for `text`, numbers for `number`, `YYYY-MM-DD` strings for `date` -
	// or `null` when the value could not be read.
	ExtractedData map[string]any `json:"extracted_data"`

	// QR codes and barcodes detected across every processed page. Empty when none
	// are found. A located but undecodable QR code has `parsed_payload: null`.
	DetectedCodes []DocumentAiDetectedCode `json:"detected_codes"`

	// The normalized field definitions that were used for this extraction, echoed
	// back (also stored with the session when `save_api_request=true`).
	Fields []DocumentAiAnalyzeResponseDocumentAiFields `json:"fields"`

	// Fuzzy similarity (0-100) between `name_on_document` and the expected
	// person/company name. Returned whenever both a name value and an expected name
	// exist - on matches **and** mismatches; `null` otherwise.
	NameMatchScore float64 `json:"name_match_score"`

	// The name value taken from the document (the `is_full_name` field, or the
	// first name-like text field) that was compared against the expected name.
	// `null` when no name value was available.
	NameOnDocument string `json:"name_on_document"`

	// Empty on a clean approval. Every entry explains one detected risk; entries
	// with `log_type: "error"` set `status` to `Declined`, entries with `log_type:
	// "warning"` set it to `In Review`.
	Warnings []DocumentAiAnalyzeResponseDocumentAiWarnings `json:"warnings"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

DocumentAiAnalyzeResponseDocumentAi is a response object.

func (*DocumentAiAnalyzeResponseDocumentAi) UnmarshalJSON

func (r *DocumentAiAnalyzeResponseDocumentAi) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes DocumentAiAnalyzeResponseDocumentAi leniently.

type DocumentAiAnalyzeResponseDocumentAiFields

type DocumentAiAnalyzeResponseDocumentAiFields struct {
	Key         string                                        `json:"key"`
	Name        string                                        `json:"name"`
	Instruction string                                        `json:"instruction"`
	Type        DocumentAiAnalyzeResponseDocumentAiFieldsType `json:"type"`
	Required    bool                                          `json:"required"`
	IsFullName  bool                                          `json:"is_full_name"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

DocumentAiAnalyzeResponseDocumentAiFields is a response object.

func (*DocumentAiAnalyzeResponseDocumentAiFields) UnmarshalJSON

func (r *DocumentAiAnalyzeResponseDocumentAiFields) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes DocumentAiAnalyzeResponseDocumentAiFields leniently.

type DocumentAiAnalyzeResponseDocumentAiFieldsType

type DocumentAiAnalyzeResponseDocumentAiFieldsType string

DocumentAiAnalyzeResponseDocumentAiFieldsType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DocumentAiAnalyzeResponseDocumentAiFieldsTypeText   DocumentAiAnalyzeResponseDocumentAiFieldsType = "text"
	DocumentAiAnalyzeResponseDocumentAiFieldsTypeNumber DocumentAiAnalyzeResponseDocumentAiFieldsType = "number"
	DocumentAiAnalyzeResponseDocumentAiFieldsTypeDate   DocumentAiAnalyzeResponseDocumentAiFieldsType = "date"
)

Known values of DocumentAiAnalyzeResponseDocumentAiFieldsType.

type DocumentAiAnalyzeResponseDocumentAiStatus

type DocumentAiAnalyzeResponseDocumentAiStatus string

DocumentAiAnalyzeResponseDocumentAiStatus: `Approved` when no warning resolves to a decline or review; `Declined` when at least one risk maps to `DECLINE`; otherwise `In Review` when at least one maps to `REVIEW`. The `warnings` list explains why.

DocumentAiAnalyzeResponseDocumentAiStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DocumentAiAnalyzeResponseDocumentAiStatusApproved DocumentAiAnalyzeResponseDocumentAiStatus = "Approved"
	DocumentAiAnalyzeResponseDocumentAiStatusDeclined DocumentAiAnalyzeResponseDocumentAiStatus = "Declined"
	DocumentAiAnalyzeResponseDocumentAiStatusInReview DocumentAiAnalyzeResponseDocumentAiStatus = "In Review"
)

Known values of DocumentAiAnalyzeResponseDocumentAiStatus.

type DocumentAiAnalyzeResponseDocumentAiWarnings

type DocumentAiAnalyzeResponseDocumentAiWarnings struct {
	// Machine-readable risk code. Each one is governed by the matching
	// `document_ai_*_action` request option.
	Risk DocumentAiAnalyzeResponseDocumentAiWarningsRisk `json:"risk"`

	// Feature that raised the warning. Always `DOCUMENT_AI` on this endpoint.
	Feature DocumentAiAnalyzeResponseDocumentAiWarningsFeature `json:"feature"`

	// Extra context for the risk: `{"missing_fields": ["Net pay"]}` for missing
	// required fields, `{"name_on_document", "score", "threshold"}` for a name
	// mismatch, and the forensic finding (`detection_method`, producer/editor
	// details) for suspected manipulation. `null` when there is nothing to add.
	AdditionalData map[string]any `json:"additional_data"`

	// Severity derived from the configured action: `error` (DECLINE), `warning`
	// (REVIEW), `information` (NO_ACTION).
	LogType DocumentAiAnalyzeResponseDocumentAiWarningsLogType `json:"log_type"`

	// Human-readable one-liner for the risk.
	ShortDescription string `json:"short_description"`

	// Human-readable explanation, interpolated with `additional_data` where
	// relevant.
	LongDescription string `json:"long_description"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

DocumentAiAnalyzeResponseDocumentAiWarnings is a response object.

func (*DocumentAiAnalyzeResponseDocumentAiWarnings) UnmarshalJSON

func (r *DocumentAiAnalyzeResponseDocumentAiWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes DocumentAiAnalyzeResponseDocumentAiWarnings leniently.

type DocumentAiAnalyzeResponseDocumentAiWarningsFeature

type DocumentAiAnalyzeResponseDocumentAiWarningsFeature string

DocumentAiAnalyzeResponseDocumentAiWarningsFeature: Feature that raised the warning. Always `DOCUMENT_AI` on this endpoint.

DocumentAiAnalyzeResponseDocumentAiWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DocumentAiAnalyzeResponseDocumentAiWarningsFeatureDocumentAi DocumentAiAnalyzeResponseDocumentAiWarningsFeature = "DOCUMENT_AI"
)

Known values of DocumentAiAnalyzeResponseDocumentAiWarningsFeature.

type DocumentAiAnalyzeResponseDocumentAiWarningsLogType

type DocumentAiAnalyzeResponseDocumentAiWarningsLogType string

DocumentAiAnalyzeResponseDocumentAiWarningsLogType: Severity derived from the configured action: `error` (DECLINE), `warning` (REVIEW), `information` (NO_ACTION).

DocumentAiAnalyzeResponseDocumentAiWarningsLogType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DocumentAiAnalyzeResponseDocumentAiWarningsLogTypeError       DocumentAiAnalyzeResponseDocumentAiWarningsLogType = "error"
	DocumentAiAnalyzeResponseDocumentAiWarningsLogTypeWarning     DocumentAiAnalyzeResponseDocumentAiWarningsLogType = "warning"
	DocumentAiAnalyzeResponseDocumentAiWarningsLogTypeInformation DocumentAiAnalyzeResponseDocumentAiWarningsLogType = "information"
)

Known values of DocumentAiAnalyzeResponseDocumentAiWarningsLogType.

type DocumentAiAnalyzeResponseDocumentAiWarningsRisk

type DocumentAiAnalyzeResponseDocumentAiWarningsRisk string

DocumentAiAnalyzeResponseDocumentAiWarningsRisk: Machine-readable risk code. Each one is governed by the matching `document_ai_*_action` request option.

DocumentAiAnalyzeResponseDocumentAiWarningsRisk is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	DocumentAiAnalyzeResponseDocumentAiWarningsRiskDocumentAiUnreadableDocument    DocumentAiAnalyzeResponseDocumentAiWarningsRisk = "DOCUMENT_AI_UNREADABLE_DOCUMENT"
	DocumentAiAnalyzeResponseDocumentAiWarningsRiskDocumentAiMissingRequiredFields DocumentAiAnalyzeResponseDocumentAiWarningsRisk = "DOCUMENT_AI_MISSING_REQUIRED_FIELDS"
	DocumentAiAnalyzeResponseDocumentAiWarningsRiskDocumentAiSuspectedManipulation DocumentAiAnalyzeResponseDocumentAiWarningsRisk = "DOCUMENT_AI_SUSPECTED_MANIPULATION"
	DocumentAiAnalyzeResponseDocumentAiWarningsRiskDocumentAiNameMismatch          DocumentAiAnalyzeResponseDocumentAiWarningsRisk = "DOCUMENT_AI_NAME_MISMATCH"
	DocumentAiAnalyzeResponseDocumentAiWarningsRiskDocumentAiUnsupportedFile       DocumentAiAnalyzeResponseDocumentAiWarningsRisk = "DOCUMENT_AI_UNSUPPORTED_FILE"
)

Known values of DocumentAiAnalyzeResponseDocumentAiWarningsRisk.

type DocumentAiDetectedCode

type DocumentAiDetectedCode struct {
	// Detected symbology, for example `QR_CODE`, `CODE_128`, `EAN_13`,
	// `DATA_MATRIX`, or `PDF_417`.
	Type string `json:"type"`

	// 1-based page number.
	PageNumber int64 `json:"page_number"`

	// Detected polygon in rendered-page pixel coordinates. `null` when no reliable
	// location is available.
	Position [][]int64 `json:"position"`

	// Left edge of the bounding box in rendered-page pixels.
	X int64 `json:"x"`

	// Top edge of the bounding box in rendered-page pixels.
	Y int64 `json:"y"`

	// Bounding-box width in rendered-page pixels.
	Width int64 `json:"width"`

	// Bounding-box height in rendered-page pixels.
	Height int64 `json:"height"`

	// Rendered page width in pixels.
	PageWidth int64 `json:"page_width"`

	// Rendered page height in pixels.
	PageHeight int64 `json:"page_height"`

	// Raw decoder payload as a base64 string when available; otherwise an empty
	// string.
	RawPayload string `json:"raw_payload"`

	// Decoded string or structured value. `null` when the code was located but
	// could not be decoded.
	ParsedPayload any `json:"parsed_payload"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

DocumentAiDetectedCode is a response object.

func (*DocumentAiDetectedCode) UnmarshalJSON

func (r *DocumentAiDetectedCode) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes DocumentAiDetectedCode leniently.

type DocumentAiService

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

DocumentAiService holds the document_ai operations. Use it through Client.DocumentAi.

func (*DocumentAiService) Analyze

Analyze: Document AI (custom field extraction + tamper checks).

Extract the fields **you** define from any supporting document - payslips, proof of funds, source-of-wealth letters, tax statements, contracts, invoices - in one call. Send the file plus a `fields` definition (key, name, extraction instruction, type) and get back typed values (`text`, `number`, `date` as `YYYY-MM-DD`), an optional name-match score against the expected person or company, PDF/EXIF tamper signals, an `Approved`/`Declined`/`In Review` `status`, and a `warnings` list explaining every issue found. This is the server-to-server counterpart of the hosted Document AI workflow step (see `/core-technology/document-ai/overview`); it uses Didit's default extraction model and does not expose provider selection.

**Latency.** Extraction is LLM-based: typical calls take **5-15 seconds**, multi-page PDFs up to **~30 seconds**. Configure a client timeout of **at least 45 seconds** and do not retry before the call completes.

**Request format.** `multipart/form-data` only. `fields` is **one JSON-encoded array string** (1-30 items, at most 16 KB); bracket-style form arrays are rejected with `400`. Each item is `{key, name, instruction, type, required, is_full_name}` - `key` is the JSON key you get back (`^[a-z0-9_]{1,64}$`, unique), `instruction` tells the model what to read, `type` is `text` (default) | `number` | `date`, `required` raises `DOCUMENT_AI_MISSING_REQUIRED_FIELDS` when the value cannot be read, and at most one field may set `is_full_name: true` to mark the value compared against the expected name.

**Name matching.** Pass `expected_first_name` + `expected_last_name` (person) **or** `expected_company_name` (+ optional `expected_company_country`) - not both. The value of the `is_full_name` field (or, when none is marked, the first text field whose key looks like a name) is compared fuzzily; `name_match_score` (0-100) and `name_on_document` are always returned when both sides exist, and a score below `document_ai_name_match_score_threshold` (default 80) adds `DOCUMENT_AI_NAME_MISMATCH`, governed by `document_ai_name_mismatch_action`.

**Decision logic.** Each risk maps to a configurable action: `DECLINE` → `status: "Declined"`, `REVIEW` → `status: "In Review"`, `NO_ACTION` → informational only. Defaults mirror the workflow step: unreadable document `REVIEW`, missing required fields `REVIEW`, suspected manipulation `DECLINE`, name mismatch `NO_ACTION`, unsupported file `REVIEW`. A document that cannot be processed at all returns `400`; a readable but problematic document returns `200` with `Declined`/`In Review` - always inspect `document_ai.status` and `document_ai.warnings`, not just the HTTP code.

**Billing.** Each `200` response consumes one Document AI API credit - **$0.20 per document, no free tier** (standalone APIs never have one). When the organization's balance cannot cover the call, the endpoint returns `403` before any processing. Sandbox API keys return a deterministic mock response and are not charged.

**Persistence.** With `save_api_request=true` (default) the call is stored as an API-type session: the document, the extracted values, the field definitions and the name-match snapshot are kept, the session shows up in the Business Console, and `request_id` works with `GET /v3/session/{sessionId}/decision/`.

POST /v3/document-ai/

type EmailCheckCodeParams

type EmailCheckCodeParams struct {
	// The same email address used in the matching [`POST
	// /v3/email/send/`](/standalone-apis/email-send) call. This is what links the
	// check to the send. Required.
	Email string `json:"email"`

	// The OTP the end user received: 4-8 digits, or 4-8 letters/digits when
	// `alphanumeric_code: true` was used at send time. Comparison is
	// case-insensitive. Required.
	Code string `json:"code"`

	// What to do when the same address was already used and approved by a different
	// user (only previously Approved verifications count) (different `vendor_data`)
	// of your application. `DECLINE` flips the final `status` to `Declined`;
	// `NO_ACTION` records the risk in `email.warnings` and fills `email.matches`.
	DuplicatedEmailAction Opt[EmailCheckCodeParamsDuplicatedEmailAction] `json:"duplicated_email_action"`

	// What to do when the address appears in known data breaches
	// (`email.is_breached`). `DECLINE` flips the final `status` to `Declined`;
	// `NO_ACTION` records the risk in `email.warnings`.
	BreachedEmailAction Opt[EmailCheckCodeParamsBreachedEmailAction] `json:"breached_email_action"`

	// What to do when the domain belongs to a disposable/temporary-mail provider
	// (`email.is_disposable`). `DECLINE` flips the final `status` to `Declined`;
	// `NO_ACTION` records the risk in `email.warnings`.
	DisposableEmailAction Opt[EmailCheckCodeParamsDisposableEmailAction] `json:"disposable_email_action"`

	// When true, also look up the social footprint of the address - the email,
	// social, professional, e-commerce and entertainment platforms it is registered
	// on. Billed as one `email_social` unit per request in addition to this
	// endpoint's own price.
	EnableSocial Opt[bool] `json:"enable_social"`

	// Action when the social footprint check finds the address registered on none
	// of the platforms it covers. Only NO_ACTION and DECLINE are accepted on this
	// endpoint; REVIEW is available on the workflow configuration key of the same
	// name.
	EmailNoSocialPresenceAction Opt[EmailCheckCodeParamsEmailNoSocialPresenceAction] `json:"email_no_social_presence_action"`
}

EmailCheckCodeParams holds the parameters of Client.Email.CheckCode.

func (EmailCheckCodeParams) MarshalJSON

func (r EmailCheckCodeParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type EmailCheckCodeParamsBreachedEmailAction

type EmailCheckCodeParamsBreachedEmailAction string

EmailCheckCodeParamsBreachedEmailAction: What to do when the address appears in known data breaches (`email.is_breached`). `DECLINE` flips the final `status` to `Declined`; `NO_ACTION` records the risk in `email.warnings`.

EmailCheckCodeParamsBreachedEmailAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	EmailCheckCodeParamsBreachedEmailActionNoAction EmailCheckCodeParamsBreachedEmailAction = "NO_ACTION"
	EmailCheckCodeParamsBreachedEmailActionDecline  EmailCheckCodeParamsBreachedEmailAction = "DECLINE"
)

Known values of EmailCheckCodeParamsBreachedEmailAction.

type EmailCheckCodeParamsDisposableEmailAction

type EmailCheckCodeParamsDisposableEmailAction string

EmailCheckCodeParamsDisposableEmailAction: What to do when the domain belongs to a disposable/temporary-mail provider (`email.is_disposable`). `DECLINE` flips the final `status` to `Declined`; `NO_ACTION` records the risk in `email.warnings`.

EmailCheckCodeParamsDisposableEmailAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	EmailCheckCodeParamsDisposableEmailActionNoAction EmailCheckCodeParamsDisposableEmailAction = "NO_ACTION"
	EmailCheckCodeParamsDisposableEmailActionDecline  EmailCheckCodeParamsDisposableEmailAction = "DECLINE"
)

Known values of EmailCheckCodeParamsDisposableEmailAction.

type EmailCheckCodeParamsDuplicatedEmailAction

type EmailCheckCodeParamsDuplicatedEmailAction string

EmailCheckCodeParamsDuplicatedEmailAction: What to do when the same address was already used and approved by a different user (only previously Approved verifications count) (different `vendor_data`) of your application. `DECLINE` flips the final `status` to `Declined`; `NO_ACTION` records the risk in `email.warnings` and fills `email.matches`.

EmailCheckCodeParamsDuplicatedEmailAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	EmailCheckCodeParamsDuplicatedEmailActionNoAction EmailCheckCodeParamsDuplicatedEmailAction = "NO_ACTION"
	EmailCheckCodeParamsDuplicatedEmailActionDecline  EmailCheckCodeParamsDuplicatedEmailAction = "DECLINE"
)

Known values of EmailCheckCodeParamsDuplicatedEmailAction.

type EmailCheckCodeParamsEmailNoSocialPresenceAction

type EmailCheckCodeParamsEmailNoSocialPresenceAction string

EmailCheckCodeParamsEmailNoSocialPresenceAction: Action when the social footprint check finds the address registered on none of the platforms it covers. Only NO_ACTION and DECLINE are accepted on this endpoint; REVIEW is available on the workflow configuration key of the same name.

EmailCheckCodeParamsEmailNoSocialPresenceAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	EmailCheckCodeParamsEmailNoSocialPresenceActionNoAction EmailCheckCodeParamsEmailNoSocialPresenceAction = "NO_ACTION"
	EmailCheckCodeParamsEmailNoSocialPresenceActionDecline  EmailCheckCodeParamsEmailNoSocialPresenceAction = "DECLINE"
)

Known values of EmailCheckCodeParamsEmailNoSocialPresenceAction.

type EmailIntelligence

type EmailIntelligence struct {
	// Normalized 0-100 risk score. Higher is riskier.
	Score float64 `json:"score"`

	// Deliverability band (e.g., `high`).
	Deliverable string `json:"deliverable"`

	// `Low`, `Medium` or `High`.
	BreachRiskLevel string `json:"breach_risk_level"`

	// Numeric breach-risk index.
	BreachRiskIndex float64 `json:"breach_risk_index"`

	// `true` when the address appears in a recent breach.
	IsRecentBreach bool `json:"is_recent_breach"`

	// `true` when the address appears in many breaches.
	IsFrequentBreached bool `json:"is_frequent_breached"`

	// `true` when the domain is a throwaway provider.
	IsDisposable bool `json:"is_disposable"`

	// `true` when the domain is a free mail provider.
	IsFreeDomain bool `json:"is_free_domain"`

	// `true` when the address appears in known breaches.
	IsBreached bool `json:"is_breached"`

	// Number of known breaches containing the address.
	NoOfBreaches float64 `json:"no_of_breaches"`

	// Machine-readable codes explaining the score. Values can grow over time, so do
	// not reject unknown codes.
	ReasonCodes []string `json:"reason_codes"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

EmailIntelligence: Normalized email-intelligence block. Present only when the intelligence add-on ran for this email; when present it is also exposed as the `enrichment` alias with identical values.

func (*EmailIntelligence) UnmarshalJSON

func (r *EmailIntelligence) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes EmailIntelligence leniently.

type EmailMatchItem

type EmailMatchItem struct {
	// Session id of the other verification that used this email address.
	SessionID string `json:"session_id"`

	// Human-friendly sequential number of that session.
	SessionNumber int64 `json:"session_number"`

	// `vendor_data` of that session.
	VendorData string `json:"vendor_data"`

	// When that session was created (`YYYY-MM-DDTHH:MM:SSZ`).
	VerificationDate string `json:"verification_date"`

	// The matched email address.
	Email string `json:"email"`

	// Status of that session (e.g., `Approved`, `Declined`, `In Progress`).
	Status string `json:"status"`

	// Whether the email address is on your application's blocklist.
	IsBlocklisted bool `json:"is_blocklisted"`

	// For API-type sessions, the standalone API that created it; `null` for regular
	// verification sessions.
	APIService string `json:"api_service"`

	// Where the match was found. Usually `session`; a blocklist hit via an
	// organization list entry uses `list_entry`.
	Source string `json:"source"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

EmailMatchItem: Another session of your application that used the same email address with a different `vendor_data`.

func (*EmailMatchItem) UnmarshalJSON

func (r *EmailMatchItem) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes EmailMatchItem leniently.

type EmailRiskRequest

type EmailRiskRequest struct {
	// Email address to score. Required.
	Email string `json:"email"`

	// Optional ISO 3166-1 alpha-2 or alpha-3 country hint for intelligence
	// coverage.
	CountryCode Opt[string]      `json:"country_code"`
	Signals     Opt[RiskSignals] `json:"signals"`

	// Your stable reference for this request. Stored on the API session and echoed
	// in the response.
	VendorData Opt[string] `json:"vendor_data"`

	// Your non-sensitive JSON metadata. Stored on the API session and echoed in the
	// response.
	Metadata Opt[map[string]any] `json:"metadata"`

	// When true, also look up the social footprint of the address - the email,
	// social, professional, e-commerce and entertainment platforms it is registered
	// on. Billed as one `email_social` unit per request in addition to this
	// endpoint's own price.
	EnableSocial Opt[bool] `json:"enable_social"`
}

EmailRiskRequest is a request object.

func (EmailRiskRequest) MarshalJSON

func (r EmailRiskRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type EmailRiskResponse

type EmailRiskResponse struct {
	// Id of the API session created for this request. Store it with `vendor_data`
	// if you need to correlate the result with later webhooks or console activity.
	RequestID string `json:"request_id"`

	// Final decision for this API session. Normally `Approved`; the risk evaluation
	// can produce `In Review` or `Declined`.
	Status EmailRiskResponseStatus `json:"status"`

	// Echo of the `vendor_data` you sent, `null` when you did not send one.
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` you sent, `null` when you did not send one.
	Metadata map[string]any `json:"metadata"`

	// Timestamp of this response.
	CreatedAt time.Time `json:"created_at"`

	// Normalized email report, the same block used by Email Verification responses.
	Email EmailRiskResponseEmail `json:"email"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

EmailRiskResponse is a response object.

func (*EmailRiskResponse) UnmarshalJSON

func (r *EmailRiskResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes EmailRiskResponse leniently.

type EmailRiskResponseEmail

type EmailRiskResponseEmail struct {
	// Decision for this email address. Mirrors the top-level `status`.
	Status EmailRiskResponseEmailStatus `json:"status"`

	// The scored address.
	Email string `json:"email"`

	// Whether the address appears in a known credential breach.
	IsBreached bool `json:"is_breached"`

	// Up to 5 most recent known breaches containing this address. Empty array when
	// `is_breached` is `false`.
	Breaches []EmailRiskResponseEmailBreaches `json:"breaches"`

	// Whether the domain belongs to a throwaway provider.
	IsDisposable bool `json:"is_disposable"`

	// Whether the address was found undeliverable.
	IsUndeliverable bool `json:"is_undeliverable"`

	// OTP sends for this address. `0` for risk lookups.
	VerificationAttempts int64 `json:"verification_attempts"`

	// When the address was last verified by an OTP. `null` for risk lookups.
	VerifiedAt time.Time `json:"verified_at"`

	// Risk warnings recorded for this request. Empty array when there are none.
	Warnings []RiskWarning `json:"warnings"`

	// Chronological audit trail of the request. Empty array for risk lookups
	// without sends.
	Lifecycle []RiskLifecycleEvent `json:"lifecycle"`

	// Other sessions of your application where the same email address was used by a
	// different user (different `vendor_data`). Up to 5 entries. Empty array when
	// there are no matches.
	Matches           []EmailMatchItem     `json:"matches"`
	EmailIntelligence EmailIntelligence    `json:"email_intelligence"`
	Enrichment        EmailIntelligence    `json:"enrichment"`
	EmailSocial       EmailSocialFootprint `json:"email_social"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

EmailRiskResponseEmail: Normalized email report, the same block used by Email Verification responses.

func (*EmailRiskResponseEmail) UnmarshalJSON

func (r *EmailRiskResponseEmail) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes EmailRiskResponseEmail leniently.

type EmailRiskResponseEmailBreaches

type EmailRiskResponseEmailBreaches struct {
	// Breach identifier.
	Name string `json:"name"`

	// Domain of the breached service.
	Domain string `json:"domain"`

	// Date the breach occurred.
	BreachDate string `json:"breach_date"`

	// Total number of accounts exposed in the breach.
	BreachEmailsCount int64 `json:"breach_emails_count"`

	// Human-readable description of the breach (may contain HTML markup).
	Description string `json:"description"`

	// URL of the breached service's logo.
	LogoPath string `json:"logo_path"`

	// Categories of data exposed, in snake_case (e.g., `email_addresses`,
	// `passwords`).
	DataClasses []string `json:"data_classes"`

	// Whether the breach has been verified as legitimate.
	IsVerified bool `json:"is_verified"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

EmailRiskResponseEmailBreaches is a response object.

func (*EmailRiskResponseEmailBreaches) UnmarshalJSON

func (r *EmailRiskResponseEmailBreaches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes EmailRiskResponseEmailBreaches leniently.

type EmailRiskResponseEmailStatus

type EmailRiskResponseEmailStatus string

EmailRiskResponseEmailStatus: Decision for this email address. Mirrors the top-level `status`.

EmailRiskResponseEmailStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	EmailRiskResponseEmailStatusApproved EmailRiskResponseEmailStatus = "Approved"
	EmailRiskResponseEmailStatusInReview EmailRiskResponseEmailStatus = "In Review"
	EmailRiskResponseEmailStatusDeclined EmailRiskResponseEmailStatus = "Declined"
)

Known values of EmailRiskResponseEmailStatus.

type EmailRiskResponseStatus

type EmailRiskResponseStatus string

EmailRiskResponseStatus: Final decision for this API session. Normally `Approved`; the risk evaluation can produce `In Review` or `Declined`.

EmailRiskResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	EmailRiskResponseStatusApproved EmailRiskResponseStatus = "Approved"
	EmailRiskResponseStatusInReview EmailRiskResponseStatus = "In Review"
	EmailRiskResponseStatusDeclined EmailRiskResponseStatus = "Declined"
)

Known values of EmailRiskResponseStatus.

type EmailSendCodeParams

type EmailSendCodeParams struct {
	// Recipient email address. Malformed addresses return `400`; syntactically
	// valid addresses that cannot receive mail (failed DNS/MX validation) return
	// `200` with `status: "Undeliverable"`. Required.
	Email string `json:"email"`

	// OTP format, localization, and branding options. All fields are optional.
	Options Opt[EmailSendCodeParamsOptions] `json:"options"`

	// Optional device and network signals about the end user, forwarded to the
	// anti-fraud layer to improve detection of abusive or automated traffic. All
	// fields are optional.
	Signals Opt[EmailSendCodeParamsSignals] `json:"signals"`

	// Optional caller-controlled identifier (your internal user id, an email, a
	// UUID, etc.) persisted on the session and echoed back in the send response,
	// the matching check response, webhooks, and the Business Console. Use it to
	// correlate Didit's `request_id` with your user record.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional free-form JSON object persisted on the session and echoed back in
	// the send response, the matching check response, webhooks, and the Business
	// Console.
	Metadata Opt[map[string]any] `json:"metadata"`
}

EmailSendCodeParams holds the parameters of Client.Email.SendCode.

func (EmailSendCodeParams) MarshalJSON

func (r EmailSendCodeParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type EmailSendCodeParamsOptions

type EmailSendCodeParamsOptions struct {
	// Number of characters in the OTP (digits by default; uppercase letters and
	// digits when `alphanumeric_code` is `true`).
	CodeSize Opt[int64] `json:"code_size"`

	// When `true`, the OTP is composed of uppercase letters `A-Z` and digits `0-9`
	// instead of digits only. The `/v3/email/check/` comparison is
	// case-insensitive.
	AlphanumericCode Opt[bool] `json:"alphanumeric_code"`

	// Language of the OTP email template. Defaults to `en`. Unsupported values
	// return `400` listing all supported locales.
	Locale Opt[EmailSendCodeParamsOptionsLocale] `json:"locale"`

	// When `true`, the OTP email uses your application's white-label customization
	// (logo, colors, sender branding) instead of the default Didit template.
	UseWhiteLabelCustomization Opt[bool] `json:"use_white_label_customization"`
}

EmailSendCodeParamsOptions: OTP format, localization, and branding options. All fields are optional.

func (EmailSendCodeParamsOptions) MarshalJSON

func (r EmailSendCodeParamsOptions) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type EmailSendCodeParamsOptionsLocale

type EmailSendCodeParamsOptionsLocale string

EmailSendCodeParamsOptionsLocale: Language of the OTP email template. Defaults to `en`. Unsupported values return `400` listing all supported locales.

EmailSendCodeParamsOptionsLocale is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	EmailSendCodeParamsOptionsLocaleEn   EmailSendCodeParamsOptionsLocale = "en"
	EmailSendCodeParamsOptionsLocaleAr   EmailSendCodeParamsOptionsLocale = "ar"
	EmailSendCodeParamsOptionsLocaleBn   EmailSendCodeParamsOptionsLocale = "bn"
	EmailSendCodeParamsOptionsLocaleBg   EmailSendCodeParamsOptionsLocale = "bg"
	EmailSendCodeParamsOptionsLocaleBs   EmailSendCodeParamsOptionsLocale = "bs"
	EmailSendCodeParamsOptionsLocaleCa   EmailSendCodeParamsOptionsLocale = "ca"
	EmailSendCodeParamsOptionsLocaleCs   EmailSendCodeParamsOptionsLocale = "cs"
	EmailSendCodeParamsOptionsLocaleDa   EmailSendCodeParamsOptionsLocale = "da"
	EmailSendCodeParamsOptionsLocaleDe   EmailSendCodeParamsOptionsLocale = "de"
	EmailSendCodeParamsOptionsLocaleEl   EmailSendCodeParamsOptionsLocale = "el"
	EmailSendCodeParamsOptionsLocaleEs   EmailSendCodeParamsOptionsLocale = "es"
	EmailSendCodeParamsOptionsLocaleEt   EmailSendCodeParamsOptionsLocale = "et"
	EmailSendCodeParamsOptionsLocaleFa   EmailSendCodeParamsOptionsLocale = "fa"
	EmailSendCodeParamsOptionsLocaleFi   EmailSendCodeParamsOptionsLocale = "fi"
	EmailSendCodeParamsOptionsLocaleFr   EmailSendCodeParamsOptionsLocale = "fr"
	EmailSendCodeParamsOptionsLocaleHe   EmailSendCodeParamsOptionsLocale = "he"
	EmailSendCodeParamsOptionsLocaleHi   EmailSendCodeParamsOptionsLocale = "hi"
	EmailSendCodeParamsOptionsLocaleHr   EmailSendCodeParamsOptionsLocale = "hr"
	EmailSendCodeParamsOptionsLocaleHu   EmailSendCodeParamsOptionsLocale = "hu"
	EmailSendCodeParamsOptionsLocaleHy   EmailSendCodeParamsOptionsLocale = "hy"
	EmailSendCodeParamsOptionsLocaleID   EmailSendCodeParamsOptionsLocale = "id"
	EmailSendCodeParamsOptionsLocaleIt   EmailSendCodeParamsOptionsLocale = "it"
	EmailSendCodeParamsOptionsLocaleJa   EmailSendCodeParamsOptionsLocale = "ja"
	EmailSendCodeParamsOptionsLocaleKa   EmailSendCodeParamsOptionsLocale = "ka"
	EmailSendCodeParamsOptionsLocaleKk   EmailSendCodeParamsOptionsLocale = "kk"
	EmailSendCodeParamsOptionsLocaleKo   EmailSendCodeParamsOptionsLocale = "ko"
	EmailSendCodeParamsOptionsLocaleKy   EmailSendCodeParamsOptionsLocale = "ky"
	EmailSendCodeParamsOptionsLocaleLt   EmailSendCodeParamsOptionsLocale = "lt"
	EmailSendCodeParamsOptionsLocaleLv   EmailSendCodeParamsOptionsLocale = "lv"
	EmailSendCodeParamsOptionsLocaleCnr  EmailSendCodeParamsOptionsLocale = "cnr"
	EmailSendCodeParamsOptionsLocaleMk   EmailSendCodeParamsOptionsLocale = "mk"
	EmailSendCodeParamsOptionsLocaleMn   EmailSendCodeParamsOptionsLocale = "mn"
	EmailSendCodeParamsOptionsLocaleMs   EmailSendCodeParamsOptionsLocale = "ms"
	EmailSendCodeParamsOptionsLocaleNl   EmailSendCodeParamsOptionsLocale = "nl"
	EmailSendCodeParamsOptionsLocaleNo   EmailSendCodeParamsOptionsLocale = "no"
	EmailSendCodeParamsOptionsLocalePl   EmailSendCodeParamsOptionsLocale = "pl"
	EmailSendCodeParamsOptionsLocalePtBr EmailSendCodeParamsOptionsLocale = "pt-BR"
	EmailSendCodeParamsOptionsLocalePt   EmailSendCodeParamsOptionsLocale = "pt"
	EmailSendCodeParamsOptionsLocaleRo   EmailSendCodeParamsOptionsLocale = "ro"
	EmailSendCodeParamsOptionsLocaleRu   EmailSendCodeParamsOptionsLocale = "ru"
	EmailSendCodeParamsOptionsLocaleSk   EmailSendCodeParamsOptionsLocale = "sk"
	EmailSendCodeParamsOptionsLocaleSl   EmailSendCodeParamsOptionsLocale = "sl"
	EmailSendCodeParamsOptionsLocaleSo   EmailSendCodeParamsOptionsLocale = "so"
	EmailSendCodeParamsOptionsLocaleSq   EmailSendCodeParamsOptionsLocale = "sq"
	EmailSendCodeParamsOptionsLocaleSr   EmailSendCodeParamsOptionsLocale = "sr"
	EmailSendCodeParamsOptionsLocaleSv   EmailSendCodeParamsOptionsLocale = "sv"
	EmailSendCodeParamsOptionsLocaleTh   EmailSendCodeParamsOptionsLocale = "th"
	EmailSendCodeParamsOptionsLocaleTr   EmailSendCodeParamsOptionsLocale = "tr"
	EmailSendCodeParamsOptionsLocaleUk   EmailSendCodeParamsOptionsLocale = "uk"
	EmailSendCodeParamsOptionsLocaleUz   EmailSendCodeParamsOptionsLocale = "uz"
	EmailSendCodeParamsOptionsLocaleVi   EmailSendCodeParamsOptionsLocale = "vi"
	EmailSendCodeParamsOptionsLocaleZhCn EmailSendCodeParamsOptionsLocale = "zh-CN"
	EmailSendCodeParamsOptionsLocaleZhTw EmailSendCodeParamsOptionsLocale = "zh-TW"
	EmailSendCodeParamsOptionsLocaleZh   EmailSendCodeParamsOptionsLocale = "zh"
)

Known values of EmailSendCodeParamsOptionsLocale.

type EmailSendCodeParamsSignals

type EmailSendCodeParamsSignals struct {
	// IP address of the end user's device. IPv4 or IPv6.
	IP Opt[string] `json:"ip"`

	// Unique identifier of the end user's device. Android: `ANDROID_ID`; iOS:
	// `identifierForVendor`.
	DeviceID Opt[string] `json:"device_id"`

	// Platform of the end user's device.
	DevicePlatform Opt[EmailSendCodeParamsSignalsDevicePlatform] `json:"device_platform"`

	// Model of the end user's device.
	DeviceModel Opt[string] `json:"device_model"`

	// Operating-system version of the end user's device.
	OsVersion Opt[string] `json:"os_version"`

	// Version of your application.
	AppVersion Opt[string] `json:"app_version"`

	// User agent of the end user's browser or app.
	UserAgent Opt[string] `json:"user_agent"`
}

EmailSendCodeParamsSignals: Optional device and network signals about the end user, forwarded to the anti-fraud layer to improve detection of abusive or automated traffic. All fields are optional.

func (EmailSendCodeParamsSignals) MarshalJSON

func (r EmailSendCodeParamsSignals) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type EmailSendCodeParamsSignalsDevicePlatform

type EmailSendCodeParamsSignalsDevicePlatform string

EmailSendCodeParamsSignalsDevicePlatform: Platform of the end user's device.

EmailSendCodeParamsSignalsDevicePlatform is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	EmailSendCodeParamsSignalsDevicePlatformAndroid EmailSendCodeParamsSignalsDevicePlatform = "android"
	EmailSendCodeParamsSignalsDevicePlatformIos     EmailSendCodeParamsSignalsDevicePlatform = "ios"
	EmailSendCodeParamsSignalsDevicePlatformIpados  EmailSendCodeParamsSignalsDevicePlatform = "ipados"
	EmailSendCodeParamsSignalsDevicePlatformTvos    EmailSendCodeParamsSignalsDevicePlatform = "tvos"
	EmailSendCodeParamsSignalsDevicePlatformWeb     EmailSendCodeParamsSignalsDevicePlatform = "web"
)

Known values of EmailSendCodeParamsSignalsDevicePlatform.

type EmailService

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

EmailService holds the email operations. Use it through Client.Email.

func (*EmailService) AssessRisk

func (r *EmailService) AssessRisk(ctx context.Context, params EmailRiskRequest, opts ...option.RequestOption) (*EmailRiskResponse, error)

AssessRisk: Risk-score an email address.

Return deliverability, disposable-address, breach, cross-session match, and normalized risk-intelligence signals without sending an OTP. The endpoint creates an API session and returns its id as `request_id`.

**Decision.** The top-level `status` mirrors `email.status`. It is normally `Approved`; the risk evaluation can produce `In Review` or `Declined`.

**Compatibility aliases.** Live responses expose the normalized intelligence object as both `email.email_intelligence` and `email.enrichment`. The values are identical. New integrations can read `email.enrichment`. Both keys are absent when no usable intelligence data was returned.

**Billing.** Live calls use Email Risk API pricing. The request is billable once the lookup starts, even when some best-effort fields are unavailable.

**Sandbox.** Sandbox keys validate the request and return deterministic approved data without sending an email, consuming credits, creating a session, or contributing to Networks.

**Authentication.** Send your application's API key in `x-api-key`. Missing or invalid credentials return `403` - this API never returns `401`.

**Rate limit.** Shared write budget of 300 requests per minute per API key across all POST/PATCH/DELETE endpoints.

**Social footprint.** Set `enable_social` to `true` to add a `email_social` block: the online platforms this address is registered on, with per-category counts and any profile details available. `profiles_registered: 0` means the platforms were checked and the address was found on none of them - a valid, billable answer. The block is absent when the add-on was not requested or the check could not be completed, and it is not billed in that case. Billing adds one `email_social` unit per request on top of this endpoint's own price.

POST /v3/email/risk/

func (*EmailService) CheckCode

CheckCode: Check Email Code.

Verify the OTP delivered by [`POST /v3/email/send/`](/standalone-apis/email-send) and get the final verification result plus email intelligence: deliverability, breach exposure (`is_breached` and the `breaches` list from a breach-intelligence database), disposable-provider detection, and duplicate usage of the address across your sessions.

**How the check finds the verification.** Matching is by your application plus the `email` address - `request_id` is not an input. The most recent pending verification created within the last **5 minutes** is checked. If there is none (never sent, already finalized, undeliverable at send time, or older than 5 minutes) the endpoint returns `200` with `status: "Expired or Not Found"`.

**Attempt budget.** Each verification allows **3 code attempts**. The first two wrong codes return `status: "Failed"` with the attempts remaining and `email: null`; the third wrong code finalizes the verification as `Declined` with an `EMAIL_CODE_ATTEMPTS_EXCEEDED` warning and returns the full email report. Codes are compared case-insensitively (relevant for `alphanumeric_code` sends); only the most recently sent code is valid.

**Outcomes.** `Approved` - correct code and no declining risk. `Declined` - terminal: the code was correct but a declining risk matched (a `DECLINE` action below, a blocklisted address, or the address found undeliverable at finalization), or the attempt budget was exhausted. `Failed` - wrong code, attempts remaining. `Expired or Not Found` - nothing to check. On `Approved`/`Declined` the `request_id` equals the send's `request_id` (the session id) and `email` carries the full report (`is_breached`, `breaches`, `is_disposable`, `is_undeliverable`, `warnings`, `lifecycle`, `matches`); on `Failed` and `Expired or Not Found` the `request_id` is a one-off random UUID.

**Risk actions.** `duplicated_email_action`, `breached_email_action`, and `disposable_email_action` decide what happens when the corresponding risk is detected on a correct code: `DECLINE` flips the final status to `Declined`; `NO_ACTION` (default) records the risk in `email.warnings` without affecting the status.

**Billing.** Checks are free - the credit is consumed by the successful send.

**Session persistence.** A finalized check updates the session created by the send (visible in the Business Console, queryable via `GET /v3/session/{sessionId}/decision/`) and fires a `status.updated` webhook.

**Sandbox.** Sandbox API keys skip all processing: any well-formed code (`123456` included) returns a static `Approved` payload with a simplified `email` object (`status`, `email`, `is_breached`, `is_disposable`, `is_undeliverable`); malformed input still returns `400`. Nothing is persisted.

**Authentication.** Send your application's API key in the `x-api-key` header. Missing or invalid credentials return `403` (`{"detail": "You do not have permission to perform this action."}`) - this API never returns `401`.

**Rate limit.** Shared write budget of 300 requests/min per API key across all POST/PATCH/DELETE endpoints; exceeding it returns `429`.

**Social footprint.** Set `enable_social` to `true` to add a `email_social` block: the online platforms this address is registered on, with per-category counts and any profile details available. `profiles_registered: 0` means the platforms were checked and the address was found on none of them - a valid, billable answer. The block is absent when the add-on was not requested or the check could not be completed, and it is not billed in that case. Billing adds one `email_social` unit per request on top of this endpoint's own price.

POST /v3/email/check/

func (*EmailService) SendCode

SendCode: Send Email Code.

Send a one-time passcode (OTP) to an email address, then verify it with [`POST /v3/email/check/`](/standalone-apis/email-check).

**How send and check pair up.** Verification state is keyed by your application plus the `email` address - the check call does not take `request_id`. Each new send creates a pending verification that lives for **5 minutes**: call the check with the same address and the code the user received before the window closes. Calling send again for the same address while a verification is pending generates a fresh code for that same verification (`status: "Retry"`, same `request_id`); the previous code stops working. At most one retry is attached this way (two sends total); a further send starts a fresh verification with a new `request_id`. The 5-minute window is measured from the first send and is not extended by retries.

**Deliverability pre-check.** Before anything is sent, the address goes through syntax and DNS/MX validation. Addresses that cannot receive mail return `200` with `status: "Undeliverable"` and `reason: "email_can_not_be_delivered"` - no email is sent, nothing is billed, and the verification is immediately finalized as `Declined` (a follow-up check returns `Expired or Not Found`). A downstream send failure reports the same way.

**Code format and branding.** Codes are 4-8 characters (`options.code_size`, default 6), numeric by default; set `options.alphanumeric_code: true` for uppercase letters and digits (the check comparison is case-insensitive). The email template is localized via `options.locale` (54 supported languages) and can use your application's white-label branding via `options.use_white_label_customization`.

**Billing.** One Email Verification API credit per successful send (`status: "Success"`), charged at send time. `Retry` and `Undeliverable` sends are free, and checks are free.

**Session persistence.** Every new verification is persisted as an API-type session: `request_id` is a real session id you can pass to `GET /v3/session/{sessionId}/decision/`, the verification appears in the Business Console, and `status.updated` webhooks fire as it progresses.

**Sandbox.** Sandbox API keys skip delivery and billing: after request validation (malformed input still returns `400`), the endpoint returns a static `Success` payload with a random `request_id`; no email is sent and nothing is persisted. Use code `123456` on the sandbox check.

**Authentication.** Send your application's API key in the `x-api-key` header. Missing or invalid credentials return `403` (`{"detail": "You do not have permission to perform this action."}`) - this API never returns `401`.

**Rate limit.** Shared write budget of 300 requests/min per API key across all POST/PATCH/DELETE endpoints; exceeding it returns `429`.

POST /v3/email/send/

type EmailSocialFootprint

type EmailSocialFootprint struct {
	// Platforms where the email address is confirmed registered.
	ProfilesRegistered int64 `json:"profiles_registered"`

	// Platforms evaluated for registration.
	ProfilesChecked int64 `json:"profiles_checked"`

	// Platforms that returned an associated name.
	NamesFound int64 `json:"names_found"`

	// Platforms that returned a profile photo.
	PhotosFound int64 `json:"photos_found"`

	// Communication platforms with detected presence.
	CommunicationBreadth int64 `json:"communication_breadth"`

	// Distinct platform categories with detected presence.
	DigitalFootprintDiversity int64 `json:"digital_footprint_diversity"`

	// Composite digital-maturity indicator, 0-10.
	DigitalSophisticationIndex int64 `json:"digital_sophistication_index"`

	// Profile-richness indicator, 0-10.
	EngagementDepthIndex int64 `json:"engagement_depth_index"`

	// Free vs paid platform mix, 0-10.
	SubscriptionAffordabilityIndex int64 `json:"subscription_affordability_index"`

	// Registrations on free platforms.
	FreePlatforms int64 `json:"free_platforms"`

	// Registrations on fully paid platforms.
	FullPaidPlatforms int64 `json:"full_paid_platforms"`

	// Registrations on freemium platforms.
	PartialPaidPlatforms int64 `json:"partial_paid_platforms"`

	// Completeness of the WhatsApp profile. Phone only; null for email.
	WhatsappProfileCompleteness EmailSocialFootprintWhatsappProfileCompleteness `json:"whatsapp_profile_completeness"`

	// Platforms where registration is confirmed.
	RegisteredPlatforms []SocialFootprintPlatform `json:"registered_platforms"`

	// Platforms checked with a negative result.
	NotRegisteredPlatforms []SocialFootprintPlatform `json:"not_registered_platforms"`

	// Registered count and ratio per platform category.
	Categories map[string]SocialFootprintCategorySummary `json:"categories"`

	// Per-platform profile details, keyed by platform, when the platform exposes
	// them.
	Profiles map[string]SocialFootprintProfile `json:"profiles"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

EmailSocialFootprint: Social footprint of the email address: the online platforms it is registered on. Present only when `enable_social` was set and the check completed. Every count may be null when no data was returned for it. `profiles_registered: 0` means the platforms were checked and the email address was found on none of them - a valid, billable answer and a common synthetic-identity signal.

func (*EmailSocialFootprint) UnmarshalJSON

func (r *EmailSocialFootprint) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes EmailSocialFootprint leniently.

type EmailSocialFootprintWhatsappProfileCompleteness

type EmailSocialFootprintWhatsappProfileCompleteness string

EmailSocialFootprintWhatsappProfileCompleteness: Completeness of the WhatsApp profile. Phone only; null for email.

EmailSocialFootprintWhatsappProfileCompleteness is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	EmailSocialFootprintWhatsappProfileCompletenessBasic      EmailSocialFootprintWhatsappProfileCompleteness = "Basic"
	EmailSocialFootprintWhatsappProfileCompletenessPartial    EmailSocialFootprintWhatsappProfileCompleteness = "Partial"
	EmailSocialFootprintWhatsappProfileCompletenessComplete   EmailSocialFootprintWhatsappProfileCompleteness = "Complete"
	EmailSocialFootprintWhatsappProfileCompletenessNotPresent EmailSocialFootprintWhatsappProfileCompleteness = "Not Present"
)

Known values of EmailSocialFootprintWhatsappProfileCompleteness.

type EmailVerificationCheckResponse

type EmailVerificationCheckResponse struct {
	// On `Approved`/`Declined`: the session id of the matched verification -
	// identical to the `request_id` returned by `POST /v3/email/send/`. On `Failed`
	// and `Expired or Not Found`: a random one-off UUID that cannot be looked up
	// later.
	RequestID string `json:"request_id"`

	// `Approved` - correct code, no declining risk. `Declined` - terminal: a
	// declining risk matched or the attempt budget (3) was exhausted. `Failed` -
	// wrong code, attempts remaining. `Expired or Not Found` - no pending
	// verification for this address in the last 5 minutes.
	Status EmailVerificationCheckResponseStatus `json:"status"`

	// Human-readable explanation of the outcome, including the number of attempts
	// remaining after a wrong code.
	Message string `json:"message"`

	// Full email report. Present (non-null) only on finalized outcomes
	// (`Approved`/`Declined`); `null` on `Failed` and absent on `Expired or Not
	// Found`.
	Email EmailVerificationCheckResponseEmail `json:"email"`

	// `vendor_data` of the matched verification's session. `null` on `Expired or
	// Not Found`.
	VendorData string `json:"vendor_data"`

	// `metadata` of the matched verification's session. `null` on `Expired or Not
	// Found`.
	Metadata map[string]any `json:"metadata"`

	// Timestamp of this check response.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

EmailVerificationCheckResponse is a response object.

func (*EmailVerificationCheckResponse) UnmarshalJSON

func (r *EmailVerificationCheckResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes EmailVerificationCheckResponse leniently.

type EmailVerificationCheckResponseEmail

type EmailVerificationCheckResponseEmail struct {
	// Final status of the email verification. Matches the top-level `status` for
	// finalized checks.
	Status EmailVerificationCheckResponseEmailStatus `json:"status"`

	// The verified email address.
	Email string `json:"email"`

	// `true` when the address appears in known data breaches (breach intelligence
	// lookup run at finalization).
	IsBreached bool `json:"is_breached"`

	// Up to 5 most recent known breaches containing this address. Empty array (or
	// omitted) when `is_breached` is `false`.
	Breaches []EmailVerificationCheckResponseEmailBreaches `json:"breaches"`

	// `true` when the domain belongs to a known disposable/temporary-mail provider.
	IsDisposable bool `json:"is_disposable"`

	// `true` when the address cannot receive mail (failed syntax or DNS/MX
	// validation, or the message bounced).
	IsUndeliverable bool `json:"is_undeliverable"`

	// Number of OTP sends for this verification (1, or 2 after a retry).
	VerificationAttempts int64 `json:"verification_attempts"`

	// When the correct code was entered. `null` if the verification was never
	// approved.
	VerifiedAt time.Time `json:"verified_at"`

	// Risk warnings recorded during the verification (duplicate, breached,
	// disposable, undeliverable, attempts exceeded, blocklist, etc.). Empty array
	// when there are none.
	Warnings []EmailVerificationCheckResponseEmailWarnings `json:"warnings"`

	// Chronological audit trail of the verification. Event `type` is one of
	// `EMAIL_VERIFICATION_MESSAGE_SENT`, `EMAIL_VERIFICATION_RETRY_MESSAGE_SENT`,
	// `VALID_CODE_ENTERED`, `INVALID_CODE_ENTERED`, `EMAIL_VERIFICATION_APPROVED`,
	// `EMAIL_VERIFICATION_DECLINED`, `EMAIL_VERIFICATION_IN_REVIEW`,
	// `EMAIL_VERIFICATION_EXPIRED`.
	Lifecycle []EmailVerificationCheckResponseEmailLifecycle `json:"lifecycle"`

	// Other sessions of your application (KYC, KYB, or API) where the same email
	// address was used by a different user (different `vendor_data`). Up to 5
	// entries; a synthetic list-entry blocklist match is prepended when present
	// (and only when no session-derived blocklisted email exists) - session-derived
	// matches keep created_at order. Empty array when there are no matches.
	Matches     []EmailVerificationCheckResponseEmailMatches `json:"matches"`
	EmailSocial EmailSocialFootprint                         `json:"email_social"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

EmailVerificationCheckResponseEmail: Full email report. Present (non-null) only on finalized outcomes (`Approved`/`Declined`); `null` on `Failed` and absent on `Expired or Not Found`.

func (*EmailVerificationCheckResponseEmail) UnmarshalJSON

func (r *EmailVerificationCheckResponseEmail) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes EmailVerificationCheckResponseEmail leniently.

type EmailVerificationCheckResponseEmailBreaches

type EmailVerificationCheckResponseEmailBreaches struct {
	// Breach identifier.
	Name string `json:"name"`

	// Domain of the breached service.
	Domain string `json:"domain"`

	// Date the breach occurred.
	BreachDate string `json:"breach_date"`

	// Total number of accounts exposed in the breach.
	BreachEmailsCount int64 `json:"breach_emails_count"`

	// Human-readable description of the breach (may contain HTML markup).
	Description string `json:"description"`

	// URL of the breached service's logo.
	LogoPath string `json:"logo_path"`

	// Categories of data exposed, in snake_case (e.g., `email_addresses`,
	// `passwords`).
	DataClasses []string `json:"data_classes"`

	// Whether the breach has been verified as legitimate.
	IsVerified bool `json:"is_verified"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

EmailVerificationCheckResponseEmailBreaches is a response object.

func (*EmailVerificationCheckResponseEmailBreaches) UnmarshalJSON

func (r *EmailVerificationCheckResponseEmailBreaches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes EmailVerificationCheckResponseEmailBreaches leniently.

type EmailVerificationCheckResponseEmailLifecycle

type EmailVerificationCheckResponseEmailLifecycle struct {
	// Event type.
	Type string `json:"type"`

	// When the event happened.
	Timestamp time.Time `json:"timestamp"`

	// Event-specific payload. Send events: `{status, reason}`. Code-entry events:
	// `{code_tried, status}`. Final-status events: `null`, or `{reason}` when
	// declined or in review.
	Details map[string]any `json:"details"`

	// USD amount billed for this event. Non-zero only on the first successful send;
	// 0 for retries, code entries, and status events.
	Fee float64 `json:"fee"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

EmailVerificationCheckResponseEmailLifecycle is a response object.

func (*EmailVerificationCheckResponseEmailLifecycle) UnmarshalJSON

func (r *EmailVerificationCheckResponseEmailLifecycle) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes EmailVerificationCheckResponseEmailLifecycle leniently.

type EmailVerificationCheckResponseEmailMatches

type EmailVerificationCheckResponseEmailMatches struct {
	// Session id of the other verification that used this email address.
	SessionID string `json:"session_id"`

	// Human-friendly sequential number of that session.
	SessionNumber int64 `json:"session_number"`

	// `vendor_data` of that session.
	VendorData string `json:"vendor_data"`

	// When that session was created (`YYYY-MM-DDTHH:MM:SSZ`).
	VerificationDate string `json:"verification_date"`

	// The matched email address.
	Email string `json:"email"`

	// Status of that session (e.g., `Approved`, `Declined`, `In Progress`).
	Status string `json:"status"`

	// Whether the email address is on your application's blocklist.
	IsBlocklisted bool `json:"is_blocklisted"`

	// For API-type sessions, the standalone API that created it (e.g.,
	// `PHONE_VERIFICATION`); `null` for regular verification sessions.
	APIService string `json:"api_service"`

	// Where the match was found. Usually `session`; a blocklist hit via an
	// organization list entry prepends a synthetic match with `source:
	// "list_entry"` and null `session_id`/`session_number`.
	Source string `json:"source"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

EmailVerificationCheckResponseEmailMatches is a response object.

func (*EmailVerificationCheckResponseEmailMatches) UnmarshalJSON

func (r *EmailVerificationCheckResponseEmailMatches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes EmailVerificationCheckResponseEmailMatches leniently.

type EmailVerificationCheckResponseEmailStatus

type EmailVerificationCheckResponseEmailStatus string

EmailVerificationCheckResponseEmailStatus: Final status of the email verification. Matches the top-level `status` for finalized checks.

EmailVerificationCheckResponseEmailStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	EmailVerificationCheckResponseEmailStatusApproved    EmailVerificationCheckResponseEmailStatus = "Approved"
	EmailVerificationCheckResponseEmailStatusDeclined    EmailVerificationCheckResponseEmailStatus = "Declined"
	EmailVerificationCheckResponseEmailStatusInReview    EmailVerificationCheckResponseEmailStatus = "In Review"
	EmailVerificationCheckResponseEmailStatusNotFinished EmailVerificationCheckResponseEmailStatus = "Not Finished"
	EmailVerificationCheckResponseEmailStatusExpired     EmailVerificationCheckResponseEmailStatus = "Expired"
)

Known values of EmailVerificationCheckResponseEmailStatus.

type EmailVerificationCheckResponseEmailWarnings

type EmailVerificationCheckResponseEmailWarnings struct {
	// Feature that produced the warning. Always `EMAIL` here.
	Feature string `json:"feature"`

	// Machine-readable risk code.
	Risk string `json:"risk"`

	// Risk-specific context (e.g., the duplicated session id for duplicate risks).
	// `null` when the risk carries no extra data.
	AdditionalData map[string]any `json:"additional_data"`

	// Severity. `error` risks decline the verification, `warning` flags it for
	// review, `information` is recorded without affecting the status.
	LogType EmailVerificationCheckResponseEmailWarningsLogType `json:"log_type"`

	// Human-readable one-line summary of the risk.
	ShortDescription string `json:"short_description"`

	// Human-readable explanation of the risk.
	LongDescription string `json:"long_description"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

EmailVerificationCheckResponseEmailWarnings is a response object.

func (*EmailVerificationCheckResponseEmailWarnings) UnmarshalJSON

func (r *EmailVerificationCheckResponseEmailWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes EmailVerificationCheckResponseEmailWarnings leniently.

type EmailVerificationCheckResponseEmailWarningsLogType

type EmailVerificationCheckResponseEmailWarningsLogType string

EmailVerificationCheckResponseEmailWarningsLogType: Severity. `error` risks decline the verification, `warning` flags it for review, `information` is recorded without affecting the status.

EmailVerificationCheckResponseEmailWarningsLogType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	EmailVerificationCheckResponseEmailWarningsLogTypeError       EmailVerificationCheckResponseEmailWarningsLogType = "error"
	EmailVerificationCheckResponseEmailWarningsLogTypeWarning     EmailVerificationCheckResponseEmailWarningsLogType = "warning"
	EmailVerificationCheckResponseEmailWarningsLogTypeInformation EmailVerificationCheckResponseEmailWarningsLogType = "information"
)

Known values of EmailVerificationCheckResponseEmailWarningsLogType.

type EmailVerificationCheckResponseStatus

type EmailVerificationCheckResponseStatus string

EmailVerificationCheckResponseStatus: `Approved` - correct code, no declining risk. `Declined` - terminal: a declining risk matched or the attempt budget (3) was exhausted. `Failed` - wrong code, attempts remaining. `Expired or Not Found` - no pending verification for this address in the last 5 minutes.

EmailVerificationCheckResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	EmailVerificationCheckResponseStatusApproved          EmailVerificationCheckResponseStatus = "Approved"
	EmailVerificationCheckResponseStatusDeclined          EmailVerificationCheckResponseStatus = "Declined"
	EmailVerificationCheckResponseStatusFailed            EmailVerificationCheckResponseStatus = "Failed"
	EmailVerificationCheckResponseStatusExpiredOrNotFound EmailVerificationCheckResponseStatus = "Expired or Not Found"
)

Known values of EmailVerificationCheckResponseStatus.

type EmailVerificationSendResponse

type EmailVerificationSendResponse struct {
	// Session id of the verification. A `Retry` send returns the same `request_id`
	// as the original send. This id appears in the Business Console, is returned
	// again by a finalized `POST /v3/email/check/`, and can be passed to `GET
	// /v3/session/{sessionId}/decision/`.
	RequestID string `json:"request_id"`

	// `Success` - OTP emailed to a new verification (billed). `Retry` - fresh OTP
	// emailed for the pending verification created by a previous send (free).
	// `Undeliverable` - the address failed deliverability validation or the message
	// could not be sent; the verification is immediately finalized as `Declined`
	// and nothing is billed.
	Status EmailVerificationSendResponseStatus `json:"status"`

	// `email_can_not_be_delivered` when `status` is `Undeliverable`; `null`
	// otherwise.
	Reason EmailVerificationSendResponseReason `json:"reason"`

	// Echo of the `vendor_data` stored on the session (from the first send).
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` stored on the session (from the first send).
	Metadata map[string]any `json:"metadata"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

EmailVerificationSendResponse is a response object.

func (*EmailVerificationSendResponse) UnmarshalJSON

func (r *EmailVerificationSendResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes EmailVerificationSendResponse leniently.

type EmailVerificationSendResponseReason

type EmailVerificationSendResponseReason string

EmailVerificationSendResponseReason: `email_can_not_be_delivered` when `status` is `Undeliverable`; `null` otherwise.

EmailVerificationSendResponseReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	EmailVerificationSendResponseReasonEmailCanNotBeDelivered EmailVerificationSendResponseReason = "email_can_not_be_delivered"
)

Known values of EmailVerificationSendResponseReason.

type EmailVerificationSendResponseStatus

type EmailVerificationSendResponseStatus string

EmailVerificationSendResponseStatus: `Success` - OTP emailed to a new verification (billed). `Retry` - fresh OTP emailed for the pending verification created by a previous send (free). `Undeliverable` - the address failed deliverability validation or the message could not be sent; the verification is immediately finalized as `Declined` and nothing is billed.

EmailVerificationSendResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	EmailVerificationSendResponseStatusSuccess       EmailVerificationSendResponseStatus = "Success"
	EmailVerificationSendResponseStatusRetry         EmailVerificationSendResponseStatus = "Retry"
	EmailVerificationSendResponseStatusUndeliverable EmailVerificationSendResponseStatus = "Undeliverable"
)

Known values of EmailVerificationSendResponseStatus.

type EntityNetworkMembership

type EntityNetworkMembership struct {
	Network     NetworkListItem                      `json:"network"`
	Subject     map[string]any                       `json:"subject"`
	SignalTypes []EntityNetworkMembershipSignalTypes `json:"signal_types"`
	SignalCount int64                                `json:"signal_count"`
	JoinedAt    time.Time                            `json:"joined_at"`
	LastSeenAt  time.Time                            `json:"last_seen_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

EntityNetworkMembership is a response object.

func (*EntityNetworkMembership) UnmarshalJSON

func (r *EntityNetworkMembership) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes EntityNetworkMembership leniently.

type EntityNetworkMembershipList

type EntityNetworkMembershipList struct {
	Results []EntityNetworkMembership `json:"results"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

EntityNetworkMembershipList is a response object.

func (*EntityNetworkMembershipList) UnmarshalJSON

func (r *EntityNetworkMembershipList) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes EntityNetworkMembershipList leniently.

type EntityNetworkMembershipSignalTypes

type EntityNetworkMembershipSignalTypes string

EntityNetworkMembershipSignalTypes is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	EntityNetworkMembershipSignalTypesIPAddress      EntityNetworkMembershipSignalTypes = "ip_address"
	EntityNetworkMembershipSignalTypesDevice         EntityNetworkMembershipSignalTypes = "device"
	EntityNetworkMembershipSignalTypesFace           EntityNetworkMembershipSignalTypes = "face"
	EntityNetworkMembershipSignalTypesDocumentNumber EntityNetworkMembershipSignalTypes = "document_number"
	EntityNetworkMembershipSignalTypesPhone          EntityNetworkMembershipSignalTypes = "phone"
	EntityNetworkMembershipSignalTypesEmail          EntityNetworkMembershipSignalTypes = "email"
	EntityNetworkMembershipSignalTypesAddress        EntityNetworkMembershipSignalTypes = "address"
)

Known values of EntityNetworkMembershipSignalTypes.

type Error

type Error interface {
	error
	// contains filtered or unexported methods
}

Error is implemented by every error this module returns, so

var e didit.Error
if errors.As(err, &e) { ... }

tells SDK errors apart from anything else. Use errors.As with the concrete types below to read their fields.

type FaceMatchCompareParams

type FaceMatchCompareParams struct {
	// Live or candidate face image to verify (e.g. a selfie). Submit a single
	// front-facing photo with the subject's face clearly visible and well lit.
	// Allowed extensions: `tiff`, `jpg`, `jpeg`, `png`, `webp`. Maximum upload
	// size: **5 MB** (larger files are rejected with `400`). Images are
	// automatically compressed to ~0.5 MB before processing, so very high
	// resolutions do not improve accuracy. Required.
	UserImage File `json:"-" form:"user_image"`

	// Reference face image to compare against (e.g. an ID document portrait or a
	// previously enrolled photo). Same format and size limits as `user_image`.
	// Required.
	RefImage File `json:"-" form:"ref_image"`

	// Similarity threshold (0-100) that drives the response `status`. A computed
	// score **at or below** this value sets `status` to `Declined` and adds a
	// `LOW_FACE_MATCH_SIMILARITY` warning; a score strictly above it returns
	// `Approved`. Default `30` is permissive - raise it (e.g. `50`-`60`) for
	// stricter verification. Values outside 0-100 return `400`.
	FaceMatchScoreDeclineThreshold Opt[float64] `json:"face_match_score_decline_threshold"`

	// When `true`, the service tries the input images in 90-degree increments (0,
	// 90, 180, 270) and uses the orientation that yields the best face detection -
	// useful for mobile captures with missing EXIF orientation. Adds latency, so
	// only enable it if you cannot guarantee upright images.
	RotateImage Opt[bool] `json:"rotate_image"`

	// When `true` (default), persists the call as an API-type session - visible in
	// the Business Console, retrievable via `GET /v3/session/{sessionId}/decision/`
	// using the returned `request_id`, and announced through a `status.updated`
	// webhook. When `false`, nothing is stored and `request_id` is a transient UUID
	// for response correlation only.
	SaveAPIRequest Opt[bool] `json:"save_api_request"`

	// Optional opaque string (your internal user id, email, UUID…) stored on the
	// persisted session and echoed back in the response. Use it to correlate API
	// calls with your own records and to filter sessions later.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the session (when `save_api_request=true`)
	// and echoed back in the response. In multipart requests, send it as a
	// JSON-encoded string field (e.g. `metadata={"flow":"login"}`) - it is parsed
	// into an object.
	Metadata Opt[map[string]any] `json:"metadata"`
}

FaceMatchCompareParams holds the parameters of Client.FaceMatch.Compare.

func (FaceMatchCompareParams) MarshalJSON

func (r FaceMatchCompareParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type FaceMatchCompareResponse

type FaceMatchCompareResponse struct {
	// Persisted session id when `save_api_request=true` (usable with `GET
	// /v3/session/{sessionId}/decision/`); otherwise a transient correlation UUID.
	RequestID string                            `json:"request_id"`
	FaceMatch FaceMatchCompareResponseFaceMatch `json:"face_match"`

	// Echo of the `vendor_data` you sent, or `null`.
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` object you sent, or `null`.
	Metadata map[string]any `json:"metadata"`

	// ISO 8601 timestamp (UTC) of when the response was generated, e.g.
	// `2026-06-12T01:04:42.763237+00:00`.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FaceMatchCompareResponse is a response object.

func (*FaceMatchCompareResponse) UnmarshalJSON

func (r *FaceMatchCompareResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FaceMatchCompareResponse leniently.

type FaceMatchCompareResponseFaceMatch

type FaceMatchCompareResponseFaceMatch struct {
	// `Approved` when the similarity score is strictly above
	// `face_match_score_decline_threshold` and a score could be computed;
	// `Declined` otherwise (a warning explains why).
	Status FaceMatchCompareResponseFaceMatchStatus `json:"status"`

	// Similarity score from 0 to 100 - the model's confidence that both images
	// depict the same person. Rounded to two decimals only when `save_api_request`
	// is true; with `save_api_request=false` the raw float is returned. `null` when
	// no face pair could be scored (with the default `save_api_request=true`); with
	// `save_api_request=false` the same condition can surface as `score: 0`. Either
	// way a `NO_REFERENCE_IMAGE` warning is present and `status` is `Declined`.
	Score float64 `json:"score"`

	// Face-detection results for the analyzed images.
	UserImage FaceMatchCompareResponseFaceMatchUserImage `json:"user_image"`

	// Face-detection results for the reference image, same shape as `user_image`.
	RefImage FaceMatchCompareResponseFaceMatchRefImage `json:"ref_image"`

	// Empty on a clean approval. `NO_REFERENCE_IMAGE` (`error`) - no face pair
	// could be scored; `LOW_FACE_MATCH_SIMILARITY` (`error`) - score at or below
	// the decline threshold. Any of these sets `status` to `Declined`.
	Warnings []FaceMatchCompareResponseFaceMatchWarnings `json:"warnings"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FaceMatchCompareResponseFaceMatch is a response object.

func (*FaceMatchCompareResponseFaceMatch) UnmarshalJSON

func (r *FaceMatchCompareResponseFaceMatch) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FaceMatchCompareResponseFaceMatch leniently.

type FaceMatchCompareResponseFaceMatchRefImage

type FaceMatchCompareResponseFaceMatchRefImage struct {
	// One entry per detected face.
	Entities  []FaceMatchCompareResponseFaceMatchRefImageEntities `json:"entities"`
	BestAngle int64                                               `json:"best_angle"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FaceMatchCompareResponseFaceMatchRefImage: Face-detection results for the reference image, same shape as `user_image`.

func (*FaceMatchCompareResponseFaceMatchRefImage) UnmarshalJSON

func (r *FaceMatchCompareResponseFaceMatchRefImage) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FaceMatchCompareResponseFaceMatchRefImage leniently.

type FaceMatchCompareResponseFaceMatchRefImageEntities

type FaceMatchCompareResponseFaceMatchRefImageEntities struct {
	// Bounding box of the detected face as `[x_min, y_min, x_max, y_max]` pixel
	// coordinates in the processed image.
	Bbox []int64 `json:"bbox"`

	// Face-detection confidence (0-1).
	Confidence float64 `json:"confidence"`

	// Model-estimated age of the detected face, in years. Informational only - it
	// does not affect the face-match decision.
	Age float64 `json:"age"`

	// Model-predicted gender of the detected face (`male` or `female`).
	// Informational only.
	Gender string `json:"gender"`

	// Reserved field - always `null` in responses from this endpoint.
	Race string `json:"race"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FaceMatchCompareResponseFaceMatchRefImageEntities is a response object.

func (*FaceMatchCompareResponseFaceMatchRefImageEntities) UnmarshalJSON

UnmarshalJSON decodes FaceMatchCompareResponseFaceMatchRefImageEntities leniently.

type FaceMatchCompareResponseFaceMatchStatus

type FaceMatchCompareResponseFaceMatchStatus string

FaceMatchCompareResponseFaceMatchStatus: `Approved` when the similarity score is strictly above `face_match_score_decline_threshold` and a score could be computed; `Declined` otherwise (a warning explains why).

FaceMatchCompareResponseFaceMatchStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FaceMatchCompareResponseFaceMatchStatusApproved FaceMatchCompareResponseFaceMatchStatus = "Approved"
	FaceMatchCompareResponseFaceMatchStatusDeclined FaceMatchCompareResponseFaceMatchStatus = "Declined"
)

Known values of FaceMatchCompareResponseFaceMatchStatus.

type FaceMatchCompareResponseFaceMatchUserImage

type FaceMatchCompareResponseFaceMatchUserImage struct {
	// One entry per detected face.
	Entities []FaceMatchCompareResponseFaceMatchUserImageEntities `json:"entities"`

	// Rotation (degrees: 0, 90, 180, or 270) that produced the best face detection.
	// Only non-zero when `rotate_image=true` corrected the orientation.
	BestAngle int64 `json:"best_angle"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FaceMatchCompareResponseFaceMatchUserImage: Face-detection results for the analyzed images.

func (*FaceMatchCompareResponseFaceMatchUserImage) UnmarshalJSON

func (r *FaceMatchCompareResponseFaceMatchUserImage) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FaceMatchCompareResponseFaceMatchUserImage leniently.

type FaceMatchCompareResponseFaceMatchUserImageEntities

type FaceMatchCompareResponseFaceMatchUserImageEntities struct {
	// Bounding box of the detected face as `[x_min, y_min, x_max, y_max]` pixel
	// coordinates in the processed image.
	Bbox []int64 `json:"bbox"`

	// Face-detection confidence (0-1).
	Confidence float64 `json:"confidence"`

	// Model-estimated age of the detected face, in years. Informational only - it
	// does not affect the face-match decision.
	Age float64 `json:"age"`

	// Model-predicted gender of the detected face (`male` or `female`).
	// Informational only.
	Gender string `json:"gender"`

	// Reserved field - always `null` in responses from this endpoint.
	Race string `json:"race"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FaceMatchCompareResponseFaceMatchUserImageEntities is a response object.

func (*FaceMatchCompareResponseFaceMatchUserImageEntities) UnmarshalJSON

UnmarshalJSON decodes FaceMatchCompareResponseFaceMatchUserImageEntities leniently.

type FaceMatchCompareResponseFaceMatchWarnings

type FaceMatchCompareResponseFaceMatchWarnings struct {
	// Machine-readable risk code.
	Risk FaceMatchCompareResponseFaceMatchWarningsRisk `json:"risk"`

	// Feature that raised the warning. Always `FACEMATCH` on this endpoint.
	Feature FaceMatchCompareResponseFaceMatchWarningsFeature `json:"feature"`

	// Always `null` for face-match warnings.
	AdditionalData map[string]any `json:"additional_data"`

	// Severity. `error` warnings drive `status` to `Declined`; `warning` and
	// `information` entries are advisory and never decline on their own.
	LogType FaceMatchCompareResponseFaceMatchWarningsLogType `json:"log_type"`

	// Human-readable one-line summary of the risk.
	ShortDescription string `json:"short_description"`

	// Human-readable explanation of the risk.
	LongDescription string `json:"long_description"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FaceMatchCompareResponseFaceMatchWarnings is a response object.

func (*FaceMatchCompareResponseFaceMatchWarnings) UnmarshalJSON

func (r *FaceMatchCompareResponseFaceMatchWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FaceMatchCompareResponseFaceMatchWarnings leniently.

type FaceMatchCompareResponseFaceMatchWarningsFeature

type FaceMatchCompareResponseFaceMatchWarningsFeature string

FaceMatchCompareResponseFaceMatchWarningsFeature: Feature that raised the warning. Always `FACEMATCH` on this endpoint.

FaceMatchCompareResponseFaceMatchWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FaceMatchCompareResponseFaceMatchWarningsFeatureFacematch FaceMatchCompareResponseFaceMatchWarningsFeature = "FACEMATCH"
)

Known values of FaceMatchCompareResponseFaceMatchWarningsFeature.

type FaceMatchCompareResponseFaceMatchWarningsLogType

type FaceMatchCompareResponseFaceMatchWarningsLogType string

FaceMatchCompareResponseFaceMatchWarningsLogType: Severity. `error` warnings drive `status` to `Declined`; `warning` and `information` entries are advisory and never decline on their own.

FaceMatchCompareResponseFaceMatchWarningsLogType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FaceMatchCompareResponseFaceMatchWarningsLogTypeError       FaceMatchCompareResponseFaceMatchWarningsLogType = "error"
	FaceMatchCompareResponseFaceMatchWarningsLogTypeWarning     FaceMatchCompareResponseFaceMatchWarningsLogType = "warning"
	FaceMatchCompareResponseFaceMatchWarningsLogTypeInformation FaceMatchCompareResponseFaceMatchWarningsLogType = "information"
)

Known values of FaceMatchCompareResponseFaceMatchWarningsLogType.

type FaceMatchCompareResponseFaceMatchWarningsRisk

type FaceMatchCompareResponseFaceMatchWarningsRisk string

FaceMatchCompareResponseFaceMatchWarningsRisk: Machine-readable risk code.

FaceMatchCompareResponseFaceMatchWarningsRisk is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FaceMatchCompareResponseFaceMatchWarningsRiskNoReferenceImage       FaceMatchCompareResponseFaceMatchWarningsRisk = "NO_REFERENCE_IMAGE"
	FaceMatchCompareResponseFaceMatchWarningsRiskLowFaceMatchSimilarity FaceMatchCompareResponseFaceMatchWarningsRisk = "LOW_FACE_MATCH_SIMILARITY"
)

Known values of FaceMatchCompareResponseFaceMatchWarningsRisk.

type FaceMatchService

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

FaceMatchService holds the face_match operations. Use it through Client.FaceMatch.

func (*FaceMatchService) Compare

Compare: Face Match.

Compare two face images (1:1) and get back a similarity `score` (0-100) plus an `Approved`/`Declined` `status`.

**How it works.** Both images are decoded and analyzed by a biometric model (set `rotate_image=true` if captures may be sideways or upside down), then a similarity score between the two faces is computed. A score **strictly above** `face_match_score_decline_threshold` (default `30`) returns `status: "Approved"`; a score at or below it returns `Declined` with a `LOW_FACE_MATCH_SIMILARITY` warning. If no face pair can be scored at all, the call still returns `200` with `status: "Declined"` and a `NO_REFERENCE_IMAGE` warning - `score` is `null` on the default save path, or `0` with `save_api_request=false`. Submit one clear, front-facing face per image for best results.

**Billing.** Each `200` response consumes one Face Match API credit (standalone APIs have no free tier). When the organization's balance cannot cover the call, the endpoint returns `403` with the not-enough-credits error before any image processing.

**Session persistence (`save_api_request`, default `true`).** When `true`, the call is persisted as an API-type session: it appears in the Business Console, the returned `request_id` is a real session id you can pass to `GET /v3/session/{sessionId}/decision/`, both images are stored as the session's face-match source/target images, and a `status.updated` webhook is emitted to your configured webhook endpoints. When `false`, nothing is stored and `request_id` is a one-off correlation UUID that cannot be looked up later.

**Face search index.** This endpoint never enrolls faces into your face search index and never runs blocklist or duplicate screening - use `POST /v3/passive-liveness/` or `POST /v3/face-search/` for those.

**Sandbox.** Sandbox API keys skip all processing and billing: after request validation (malformed input still returns `400`), the endpoint returns a static `Approved` mock payload, no session is persisted, and no credits are consumed.

**Authentication.** Send your application's API key in the `x-api-key` header. Missing or invalid credentials return `403` (`{"detail": "You do not have permission to perform this action."}`) - this API never returns `401`.

**Rate limit.** Shared write budget of 300 requests/min per API key across all POST/PATCH/DELETE endpoints; exceeding it returns `429`.

POST /v3/face-match/

type FaceSearchSearchParams

type FaceSearchSearchParams struct {
	// Front-facing face image to search with. Allowed extensions: `tiff`, `jpg`,
	// `jpeg`, `png`, `webp`. Maximum upload size: **5 MB** (larger files are
	// rejected with `400`). Images are automatically compressed to ~0.5 MB before
	// processing, so very high resolutions do not improve accuracy. The image must
	// contain at least one detectable face - otherwise the endpoint returns `400`.
	// When several faces are present, the largest one is searched and a
	// `MULTIPLE_FACES_DETECTED` warning is added. Required.
	UserImage File `json:"-" form:"user_image"`

	// Search policy. `most_similar` (default) ranks every enrolled face in your
	// application by similarity. `blocklisted_or_approved` restricts candidates to
	// blocklisted faces, allowlisted faces, faces from approved sessions, and
	// imported user-profile faces - with blocklisted entries ranked first.
	SearchType Opt[FaceSearchSearchParamsSearchType] `json:"search_type"`

	// When `true`, the service tries 90-degree rotations of the input and uses the
	// orientation that yields the best face detection. Useful when EXIF orientation
	// is missing. Adds latency.
	RotateImage Opt[bool] `json:"rotate_image"`

	// When `true` (default), persists the call as an API-type session, emits a
	// `status.updated` webhook, presigns `match_image_url` values, and enrolls the
	// searched face into your face search index (Face Search enrollments are
	// excluded from future searches). When `false`, the search is one-shot - no
	// session is stored and the face is not enrolled.
	SaveAPIRequest Opt[bool] `json:"save_api_request"`

	// Optional opaque identifier (your user id, email, UUID…) stored on the
	// persisted session and echoed back. It does not exclude same-user faces from
	// the search results.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the session (when `save_api_request=true`)
	// and echoed back. In multipart requests, send it as a JSON-encoded string
	// field - it is parsed into an object.
	Metadata Opt[map[string]any] `json:"metadata"`
}

FaceSearchSearchParams holds the parameters of Client.FaceSearch.Search.

func (FaceSearchSearchParams) MarshalJSON

func (r FaceSearchSearchParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type FaceSearchSearchParamsSearchType

type FaceSearchSearchParamsSearchType string

FaceSearchSearchParamsSearchType: Search policy. `most_similar` (default) ranks every enrolled face in your application by similarity. `blocklisted_or_approved` restricts candidates to blocklisted faces, allowlisted faces, faces from approved sessions, and imported user-profile faces - with blocklisted entries ranked first.

FaceSearchSearchParamsSearchType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FaceSearchSearchParamsSearchTypeMostSimilar           FaceSearchSearchParamsSearchType = "most_similar"
	FaceSearchSearchParamsSearchTypeBlocklistedOrApproved FaceSearchSearchParamsSearchType = "blocklisted_or_approved"
)

Known values of FaceSearchSearchParamsSearchType.

type FaceSearchSearchResponse

type FaceSearchSearchResponse struct {
	// Persisted session id when `save_api_request=true` (usable with `GET
	// /v3/session/{sessionId}/decision/`); otherwise a transient correlation UUID.
	RequestID  string                             `json:"request_id"`
	FaceSearch FaceSearchSearchResponseFaceSearch `json:"face_search"`

	// Echo of the `vendor_data` you sent, or `null`.
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` object you sent, or `null`.
	Metadata map[string]any `json:"metadata"`

	// ISO 8601 timestamp (UTC) of when the response was generated, e.g.
	// `2026-06-12T01:04:42.763237+00:00`.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FaceSearchSearchResponse is a response object.

func (*FaceSearchSearchResponse) UnmarshalJSON

func (r *FaceSearchSearchResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FaceSearchSearchResponse leniently.

type FaceSearchSearchResponseFaceSearch

type FaceSearchSearchResponseFaceSearch struct {
	// `Declined` only when a `FACE_IN_BLOCKLIST` or `POSSIBLE_FACE_IN_BLOCKLIST`
	// warning fired. Duplicate matches and multiple-face warnings never decline.
	Status FaceSearchSearchResponseFaceSearchStatus `json:"status"`

	// Number of entries in `matches` (0-5).
	TotalMatches int64 `json:"total_matches"`

	// Up to 5 faces from your face search index that exceed the similarity floor,
	// ordered by similarity (with blocklisted entries ranked first when
	// `search_type=blocklisted_or_approved`). Empty when no enrolled face is
	// similar enough.
	Matches []FaceSearchSearchResponseFaceSearchMatches `json:"matches"`

	// Face-detection results for the submitted image. Entries here carry only
	// `bbox` and `confidence`.
	UserImage FaceSearchSearchResponseFaceSearchUserImage `json:"user_image"`

	// Risk signals. `FACE_IN_BLOCKLIST` / `POSSIBLE_FACE_IN_BLOCKLIST` (`error`)
	// decline the search; `MULTIPLE_FACES_DETECTED` (`warning`) and
	// `DUPLICATED_FACE` / `POSSIBLE_DUPLICATED_FACE` (`information`) are advisory.
	Warnings []FaceSearchSearchResponseFaceSearchWarnings `json:"warnings"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FaceSearchSearchResponseFaceSearch is a response object.

func (*FaceSearchSearchResponseFaceSearch) UnmarshalJSON

func (r *FaceSearchSearchResponseFaceSearch) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FaceSearchSearchResponseFaceSearch leniently.

type FaceSearchSearchResponseFaceSearchMatches

type FaceSearchSearchResponseFaceSearchMatches struct {
	// Id of the verification session the matched face belongs to. `null` when
	// `source` is `imported`, `list_entry`, or `retained_template`.
	SessionID string `json:"session_id"`

	// Human-friendly session number shown in the Business Console. `null` for
	// non-session matches.
	SessionNumber int64 `json:"session_number"`

	// Similarity between the submitted face and the matched face (0-100).
	SimilarityPercentage float64 `json:"similarity_percentage"`

	// Where the matched face was enrolled from: `session` - a verification session
	// or a saved standalone API call; `imported` - a face uploaded directly to a
	// User profile; `list_entry` - a face attached to one of your lists;
	// `retained_template` - an image-free biometric template stored on a User,
	// listed under `/v3/biometric-templates/`.
	Source FaceSearchSearchResponseFaceSearchMatchesSource `json:"source"`

	// `vendor_data` of the matched session or linked User for imported and
	// retained-template faces.
	VendorData string `json:"vendor_data"`

	// Linked User id. `null` for list entries and session matches without a User.
	VendorUserID string `json:"vendor_user_id"`

	// Id of the retained biometric template. Set only when `source` is
	// `retained_template`; `null` otherwise.
	BiometricTemplateID string `json:"biometric_template_id"`

	// When the matched face was originally captured, or when a retained template
	// was created (`YYYY-MM-DDThh:mm:ssZ`). `null` for `list_entry` matches.
	VerificationDate time.Time `json:"verification_date"`

	// Identity data extracted during the matched session's document verification.
	// `null` when the matched session has no document data (e.g. liveness-only
	// sessions) and always `null` for `retained_template` matches. For `source:
	// imported` matches it is populated from the User profile instead: `full_name`
	// set, `document_type`/`document_number` null.
	UserDetails FaceSearchSearchResponseFaceSearchMatchesUserDetails `json:"user_details"`

	// Time-limited URL (`https://<media-host>/...`) of the matched face's reference
	// image when `save_api_request=true`. With `save_api_request=false` this is an
	// internal storage path that is not directly downloadable. Always `null` for
	// `retained_template` matches because retained templates contain no image.
	MatchImageURL string `json:"match_image_url"`

	// Status of the matched session (`Approved`, `Declined`, `In Review`, …).
	// `null` for `imported`/`list_entry` matches.
	Status string `json:"status"`

	// `true` when the matched face is on your face blocklist. Any sufficiently
	// similar blocklisted match declines the search.
	IsBlocklisted bool `json:"is_blocklisted"`

	// `true` when the matched face is on one of your allowlists. Allowlisted
	// matches suppress duplicate warnings.
	IsAllowlisted bool `json:"is_allowlisted"`

	// Set when the matched face was enrolled by a standalone API call (e.g.
	// `PASSIVE_LIVENESS`); `null` for regular verification sessions and imported
	// faces.
	APIService string `json:"api_service"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FaceSearchSearchResponseFaceSearchMatches is a response object.

func (*FaceSearchSearchResponseFaceSearchMatches) UnmarshalJSON

func (r *FaceSearchSearchResponseFaceSearchMatches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FaceSearchSearchResponseFaceSearchMatches leniently.

type FaceSearchSearchResponseFaceSearchMatchesSource

type FaceSearchSearchResponseFaceSearchMatchesSource string

FaceSearchSearchResponseFaceSearchMatchesSource: Where the matched face was enrolled from: `session` - a verification session or a saved standalone API call; `imported` - a face uploaded directly to a User profile; `list_entry` - a face attached to one of your lists; `retained_template` - an image-free biometric template stored on a User, listed under `/v3/biometric-templates/`.

FaceSearchSearchResponseFaceSearchMatchesSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FaceSearchSearchResponseFaceSearchMatchesSourceSession          FaceSearchSearchResponseFaceSearchMatchesSource = "session"
	FaceSearchSearchResponseFaceSearchMatchesSourceImported         FaceSearchSearchResponseFaceSearchMatchesSource = "imported"
	FaceSearchSearchResponseFaceSearchMatchesSourceListEntry        FaceSearchSearchResponseFaceSearchMatchesSource = "list_entry"
	FaceSearchSearchResponseFaceSearchMatchesSourceRetainedTemplate FaceSearchSearchResponseFaceSearchMatchesSource = "retained_template"
)

Known values of FaceSearchSearchResponseFaceSearchMatchesSource.

type FaceSearchSearchResponseFaceSearchMatchesUserDetails

type FaceSearchSearchResponseFaceSearchMatchesUserDetails struct {
	FullName       string `json:"full_name"`
	DocumentType   string `json:"document_type"`
	DocumentNumber string `json:"document_number"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FaceSearchSearchResponseFaceSearchMatchesUserDetails: Identity data extracted during the matched session's document verification. `null` when the matched session has no document data (e.g. liveness-only sessions) and always `null` for `retained_template` matches. For `source: imported` matches it is populated from the User profile instead: `full_name` set, `document_type`/`document_number` null.

func (*FaceSearchSearchResponseFaceSearchMatchesUserDetails) UnmarshalJSON

UnmarshalJSON decodes FaceSearchSearchResponseFaceSearchMatchesUserDetails leniently.

type FaceSearchSearchResponseFaceSearchStatus

type FaceSearchSearchResponseFaceSearchStatus string

FaceSearchSearchResponseFaceSearchStatus: `Declined` only when a `FACE_IN_BLOCKLIST` or `POSSIBLE_FACE_IN_BLOCKLIST` warning fired. Duplicate matches and multiple-face warnings never decline.

FaceSearchSearchResponseFaceSearchStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FaceSearchSearchResponseFaceSearchStatusApproved FaceSearchSearchResponseFaceSearchStatus = "Approved"
	FaceSearchSearchResponseFaceSearchStatusDeclined FaceSearchSearchResponseFaceSearchStatus = "Declined"
)

Known values of FaceSearchSearchResponseFaceSearchStatus.

type FaceSearchSearchResponseFaceSearchUserImage

type FaceSearchSearchResponseFaceSearchUserImage struct {
	// One entry per detected face. The largest face is the one searched.
	Entities []FaceSearchSearchResponseFaceSearchUserImageEntities `json:"entities"`

	// Rotation (degrees) that produced the best face detection; non-zero only when
	// `rotate_image=true` corrected the orientation. Never null on this endpoint
	// (defaults to 0 when the model omits it).
	BestAngle int64 `json:"best_angle"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FaceSearchSearchResponseFaceSearchUserImage: Face-detection results for the submitted image. Entries here carry only `bbox` and `confidence`.

func (*FaceSearchSearchResponseFaceSearchUserImage) UnmarshalJSON

func (r *FaceSearchSearchResponseFaceSearchUserImage) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FaceSearchSearchResponseFaceSearchUserImage leniently.

type FaceSearchSearchResponseFaceSearchUserImageEntities

type FaceSearchSearchResponseFaceSearchUserImageEntities struct {
	// Bounding box `[x_min, y_min, x_max, y_max]` in pixels.
	Bbox []int64 `json:"bbox"`

	// Face-detection confidence (0-1).
	Confidence float64 `json:"confidence"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FaceSearchSearchResponseFaceSearchUserImageEntities is a response object.

func (*FaceSearchSearchResponseFaceSearchUserImageEntities) UnmarshalJSON

UnmarshalJSON decodes FaceSearchSearchResponseFaceSearchUserImageEntities leniently.

type FaceSearchSearchResponseFaceSearchWarnings

type FaceSearchSearchResponseFaceSearchWarnings struct {
	// Machine-readable risk code.
	Risk FaceSearchSearchResponseFaceSearchWarningsRisk `json:"risk"`

	// Feature that raised the warning. Always `LIVENESS` on this endpoint.
	Feature FaceSearchSearchResponseFaceSearchWarningsFeature `json:"feature"`

	// `null` for `MULTIPLE_FACES_DETECTED`. Blocklist hits carry
	// `{blocklisted_session_id, blocklisted_session_number, api_service}`;
	// duplicate hits carry `{duplicated_session_id, duplicated_session_number,
	// api_service}` pointing at the first matching session.
	AdditionalData map[string]any `json:"additional_data"`

	// Severity. `error` warnings drive `status` to `Declined`; `warning` and
	// `information` entries are advisory and never decline on their own.
	LogType FaceSearchSearchResponseFaceSearchWarningsLogType `json:"log_type"`

	// Human-readable one-line summary of the risk.
	ShortDescription string `json:"short_description"`

	// Human-readable explanation of the risk.
	LongDescription string `json:"long_description"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FaceSearchSearchResponseFaceSearchWarnings is a response object.

func (*FaceSearchSearchResponseFaceSearchWarnings) UnmarshalJSON

func (r *FaceSearchSearchResponseFaceSearchWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FaceSearchSearchResponseFaceSearchWarnings leniently.

type FaceSearchSearchResponseFaceSearchWarningsFeature

type FaceSearchSearchResponseFaceSearchWarningsFeature string

FaceSearchSearchResponseFaceSearchWarningsFeature: Feature that raised the warning. Always `LIVENESS` on this endpoint.

FaceSearchSearchResponseFaceSearchWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FaceSearchSearchResponseFaceSearchWarningsFeatureLiveness FaceSearchSearchResponseFaceSearchWarningsFeature = "LIVENESS"
)

Known values of FaceSearchSearchResponseFaceSearchWarningsFeature.

type FaceSearchSearchResponseFaceSearchWarningsLogType

type FaceSearchSearchResponseFaceSearchWarningsLogType string

FaceSearchSearchResponseFaceSearchWarningsLogType: Severity. `error` warnings drive `status` to `Declined`; `warning` and `information` entries are advisory and never decline on their own.

FaceSearchSearchResponseFaceSearchWarningsLogType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FaceSearchSearchResponseFaceSearchWarningsLogTypeError       FaceSearchSearchResponseFaceSearchWarningsLogType = "error"
	FaceSearchSearchResponseFaceSearchWarningsLogTypeWarning     FaceSearchSearchResponseFaceSearchWarningsLogType = "warning"
	FaceSearchSearchResponseFaceSearchWarningsLogTypeInformation FaceSearchSearchResponseFaceSearchWarningsLogType = "information"
)

Known values of FaceSearchSearchResponseFaceSearchWarningsLogType.

type FaceSearchSearchResponseFaceSearchWarningsRisk

type FaceSearchSearchResponseFaceSearchWarningsRisk string

FaceSearchSearchResponseFaceSearchWarningsRisk: Machine-readable risk code.

FaceSearchSearchResponseFaceSearchWarningsRisk is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FaceSearchSearchResponseFaceSearchWarningsRiskMultipleFacesDetected   FaceSearchSearchResponseFaceSearchWarningsRisk = "MULTIPLE_FACES_DETECTED"
	FaceSearchSearchResponseFaceSearchWarningsRiskFaceInBlocklist         FaceSearchSearchResponseFaceSearchWarningsRisk = "FACE_IN_BLOCKLIST"
	FaceSearchSearchResponseFaceSearchWarningsRiskPossibleFaceInBlocklist FaceSearchSearchResponseFaceSearchWarningsRisk = "POSSIBLE_FACE_IN_BLOCKLIST"
	FaceSearchSearchResponseFaceSearchWarningsRiskDuplicatedFace          FaceSearchSearchResponseFaceSearchWarningsRisk = "DUPLICATED_FACE"
	FaceSearchSearchResponseFaceSearchWarningsRiskPossibleDuplicatedFace  FaceSearchSearchResponseFaceSearchWarningsRisk = "POSSIBLE_DUPLICATED_FACE"
)

Known values of FaceSearchSearchResponseFaceSearchWarningsRisk.

type FaceSearchService

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

FaceSearchService holds the face_search operations. Use it through Client.FaceSearch.

func (*FaceSearchService) Search

Search: Face Search.

Search a face image (1:N) against your application's face search index - faces enrolled from verification sessions, saved standalone API calls, direct user-profile face uploads, and your block/allow lists - and get back ranked similarity matches plus blocklist and duplicate warnings.

**How it works.** The largest detected face in `user_image` is embedded and searched against the index, scoped to your application. Up to **5 matches** above the similarity floor are returned in `matches`, each with `similarity_percentage`, the originating session (`session_id`, `session_number`, `status`, `vendor_data`), `user_details` extracted during that session's document verification, `is_blocklisted` / `is_allowlisted` flags, and a `source` discriminator (`session`, `imported`, or `list_entry`).

  • `search_type=most_similar` (default) ranks every enrolled face by similarity - use it for deduplication and fraud-ring investigation.
  • `search_type=blocklisted_or_approved` restricts candidates to blocklisted faces, allowlisted faces, faces from approved sessions, and imported user-profile faces, ranking blocklisted entries first - use it when the primary goal is blocklist screening.

`status` is `Declined` only when a `FACE_IN_BLOCKLIST` or `POSSIBLE_FACE_IN_BLOCKLIST` warning fires; `DUPLICATED_FACE` / `POSSIBLE_DUPLICATED_FACE` (`information`) and `MULTIPLE_FACES_DETECTED` (`warning`) never decline. Unlike Passive Liveness, this endpoint does **not** exclude prior sessions with the same `vendor_data` from matching. A passive-liveness analysis also runs internally and is stored with the persisted session, but its result is not part of this response.

**Billing.** Each `200` response consumes one Face Search API credit (standalone APIs have no free tier). Insufficient balance returns `403` before any image processing.

**Session persistence and face enrollment (`save_api_request`, default `true`).** When `true`, the call is persisted as an API-type session (Business Console, `GET /v3/session/{sessionId}/decision/` via the returned `request_id`, `status.updated` webhook) and the searched face is enrolled into your face search index. Faces enrolled by Face Search calls are excluded from future Face Search results, so repeated searches never match each other. When `false`, the call is one-shot: nothing is stored, the face is not enrolled, and `match_image_url` values are internal storage paths rather than downloadable URLs.

**Sandbox.** Sandbox API keys skip all processing and billing: after request validation (malformed input still returns `400`), the endpoint returns a static `Approved` mock payload, no session is persisted, and no credits are consumed.

**Authentication.** Send your application's API key in the `x-api-key` header. Missing or invalid credentials return `403` (`{"detail": "You do not have permission to perform this action."}`) - this API never returns `401`.

**Rate limit.** Shared write budget of 300 requests/min per API key across all POST/PATCH/DELETE endpoints; exceeding it returns `429`.

POST /v3/face-search/

type FeatureStatusOverride

type FeatureStatusOverride struct {
	// Identifier of the override. Pass it to the cancel endpoint.
	ID string `json:"id"`

	// The workflow node the request named (`default` for a step without a node).
	NodeID string `json:"node_id"`

	// The `feature_type` the request passed, or an empty string when it passed
	// none.
	FeatureType string `json:"feature_type"`

	// The kind of check that was overridden, for example `KYC`, `Face`, `AML` or
	// `GeolocationCheck`.
	FeatureModel string `json:"feature_model"`

	// The check's status when the override was requested.
	PreviousStatus FeatureStatusOverridePreviousStatus `json:"previous_status"`

	// The status the override sets.
	NewStatus FeatureStatusOverrideNewStatus `json:"new_status"`

	// `applied`: the check has the new status. `pending_until_flow_finishes`: the
	// override waits and applies when the person finishes the flow. `cancelled`: it
	// waited and never applied (see `cancel_reason`).
	State FeatureStatusOverrideState `json:"state"`

	// `true` when the override applied at once while the person was still in the
	// flow.
	Forced bool `json:"forced"`

	// The `comment` sent with the request, or `null`.
	Reason string `json:"reason"`

	// Who requested the override, or `null` when that is not known.
	RequestedBy FeatureStatusOverrideRequestedBy `json:"requested_by"`

	// When the override was requested.
	RequestedAt time.Time `json:"requested_at"`

	// When the check took the new status, or `null` while it waits or once it is
	// cancelled.
	AppliedAt time.Time `json:"applied_at"`

	// When a waiting override was cancelled, or `null`.
	CancelledAt time.Time `json:"cancelled_at"`

	// Why a waiting override never applied, or `null`. `cancelled_by_reviewer`:
	// cancelled with the cancel endpoint. `replaced`: a newer override on the same
	// check replaced it. `check_changed`: the person redid the check before
	// finishing the flow. `session_closed`: the session left the flow before the
	// person finished it (abandoned, expired, or decided mid-flow).
	CancelReason FeatureStatusOverrideCancelReason `json:"cancel_reason"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FeatureStatusOverride: One override of a check (feature) status made with `PATCH /v3/session/{sessionId}/features/{nodeId}/update-status/`: what it changes, whether it applied or still waits for the person to finish the flow, who asked and why.

func (*FeatureStatusOverride) UnmarshalJSON

func (r *FeatureStatusOverride) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FeatureStatusOverride leniently.

type FeatureStatusOverrideCancelReason

type FeatureStatusOverrideCancelReason string

FeatureStatusOverrideCancelReason: Why a waiting override never applied, or `null`. `cancelled_by_reviewer`: cancelled with the cancel endpoint. `replaced`: a newer override on the same check replaced it. `check_changed`: the person redid the check before finishing the flow. `session_closed`: the session left the flow before the person finished it (abandoned, expired, or decided mid-flow).

FeatureStatusOverrideCancelReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FeatureStatusOverrideCancelReasonCancelledByReviewer FeatureStatusOverrideCancelReason = "cancelled_by_reviewer"
	FeatureStatusOverrideCancelReasonReplaced            FeatureStatusOverrideCancelReason = "replaced"
	FeatureStatusOverrideCancelReasonCheckChanged        FeatureStatusOverrideCancelReason = "check_changed"
	FeatureStatusOverrideCancelReasonSessionClosed       FeatureStatusOverrideCancelReason = "session_closed"
)

Known values of FeatureStatusOverrideCancelReason.

type FeatureStatusOverrideNewStatus

type FeatureStatusOverrideNewStatus string

FeatureStatusOverrideNewStatus: The status the override sets.

FeatureStatusOverrideNewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FeatureStatusOverrideNewStatusApproved FeatureStatusOverrideNewStatus = "Approved"
	FeatureStatusOverrideNewStatusDeclined FeatureStatusOverrideNewStatus = "Declined"
	FeatureStatusOverrideNewStatusInReview FeatureStatusOverrideNewStatus = "In Review"
)

Known values of FeatureStatusOverrideNewStatus.

type FeatureStatusOverridePreviousStatus

type FeatureStatusOverridePreviousStatus string

FeatureStatusOverridePreviousStatus: The check's status when the override was requested.

FeatureStatusOverridePreviousStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FeatureStatusOverridePreviousStatusNotFinished    FeatureStatusOverridePreviousStatus = "Not Finished"
	FeatureStatusOverridePreviousStatusApproved       FeatureStatusOverridePreviousStatus = "Approved"
	FeatureStatusOverridePreviousStatusDeclined       FeatureStatusOverridePreviousStatus = "Declined"
	FeatureStatusOverridePreviousStatusInReview       FeatureStatusOverridePreviousStatus = "In Review"
	FeatureStatusOverridePreviousStatusResubRequested FeatureStatusOverridePreviousStatus = "Resub Requested"
)

Known values of FeatureStatusOverridePreviousStatus.

type FeatureStatusOverrideRequestedBy

type FeatureStatusOverrideRequestedBy struct {
	// Email of the console user, or `null` for API keys and the system.
	Email string `json:"email"`

	// Display name of the requester, or `null`.
	Name string `json:"name"`

	// Who made the request: a console user, an API key, or Didit itself.
	Type FeatureStatusOverrideRequestedByType `json:"type"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FeatureStatusOverrideRequestedBy: Who requested the override, or `null` when that is not known.

func (*FeatureStatusOverrideRequestedBy) UnmarshalJSON

func (r *FeatureStatusOverrideRequestedBy) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FeatureStatusOverrideRequestedBy leniently.

type FeatureStatusOverrideRequestedByType

type FeatureStatusOverrideRequestedByType string

FeatureStatusOverrideRequestedByType: Who made the request: a console user, an API key, or Didit itself.

FeatureStatusOverrideRequestedByType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FeatureStatusOverrideRequestedByTypeConsoleUser FeatureStatusOverrideRequestedByType = "CONSOLE_USER"
	FeatureStatusOverrideRequestedByTypeAPIKey      FeatureStatusOverrideRequestedByType = "API_KEY"
	FeatureStatusOverrideRequestedByTypeSystem      FeatureStatusOverrideRequestedByType = "SYSTEM"
)

Known values of FeatureStatusOverrideRequestedByType.

type FeatureStatusOverrideState

type FeatureStatusOverrideState string

FeatureStatusOverrideState: `applied`: the check has the new status. `pending_until_flow_finishes`: the override waits and applies when the person finishes the flow. `cancelled`: it waited and never applied (see `cancel_reason`).

FeatureStatusOverrideState is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FeatureStatusOverrideStateApplied                  FeatureStatusOverrideState = "applied"
	FeatureStatusOverrideStatePendingUntilFlowFinishes FeatureStatusOverrideState = "pending_until_flow_finishes"
	FeatureStatusOverrideStateCancelled                FeatureStatusOverrideState = "cancelled"
)

Known values of FeatureStatusOverrideState.

type File

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

File is a file to upload in a multipart request: an image, a document or a CSV. Create one with FileFromPath, FileFromBytes or FileFromReader.

The content type is, in order: the one set with WithContentType, a fixed table for the image and document types the API accepts (by file name extension), the type sniffed from the first bytes, and application/octet-stream.

func FileFromBytes

func FileFromBytes(name string, data []byte) File

FileFromBytes returns a File holding data, sent with the given file name.

func FileFromPath

func FileFromPath(path string) File

FileFromPath returns a File read from path when the request is sent. The file name sent is the base name of path.

func FileFromReader

func FileFromReader(r io.Reader, name string) File

FileFromReader returns a File read from r when the request is sent, with the given file name. The SDK reads r once and keeps the bytes in memory so that a retried request sends the same content.

func (File) IsZero

func (f File) IsZero() bool

IsZero reports whether f was never set.

func (File) Name

func (f File) Name() string

Name returns the file name sent with the file.

func (File) WithContentType

func (f File) WithContentType(contentType string) File

WithContentType returns a copy of f sent with the given content type.

func (File) WithName

func (f File) WithName(name string) File

WithName returns a copy of f sent with the given file name.

type FraudAvailabilityEnum

type FraudAvailabilityEnum string

FraudAvailabilityEnum: * `available` - Available

  • `not_requested` - Not Requested
  • `no_reference` - No Reference
  • `insufficient_history` - Insufficient History
  • `unsupported_region` - Unsupported Region
  • `source_unavailable` - Source Unavailable

FraudAvailabilityEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FraudAvailabilityEnumAvailable           FraudAvailabilityEnum = "available"
	FraudAvailabilityEnumNotRequested        FraudAvailabilityEnum = "not_requested"
	FraudAvailabilityEnumNoReference         FraudAvailabilityEnum = "no_reference"
	FraudAvailabilityEnumInsufficientHistory FraudAvailabilityEnum = "insufficient_history"
	FraudAvailabilityEnumUnsupportedRegion   FraudAvailabilityEnum = "unsupported_region"
	FraudAvailabilityEnumSourceUnavailable   FraudAvailabilityEnum = "source_unavailable"
)

Known values of FraudAvailabilityEnum.

type FraudBandEnum

type FraudBandEnum string

FraudBandEnum: * `low` - Low

  • `medium` - Medium
  • `high` - High
  • `unknown` - Unknown

FraudBandEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FraudBandEnumLow     FraudBandEnum = "low"
	FraudBandEnumMedium  FraudBandEnum = "medium"
	FraudBandEnumHigh    FraudBandEnum = "high"
	FraudBandEnumUnknown FraudBandEnum = "unknown"
)

Known values of FraudBandEnum.

type FraudCheckAttributesRequest

type FraudCheckAttributesRequest struct {
	FirstName   Opt[string] `json:"first_name"`
	LastName    Opt[string] `json:"last_name"`
	FullName    Opt[string] `json:"full_name"`
	DateOfBirth Opt[string] `json:"date_of_birth"`
	Nationality Opt[string] `json:"nationality"`
	Gender      Opt[string] `json:"gender"`
	Address     Opt[string] `json:"address"`
	City        Opt[string] `json:"city"`
	State       Opt[string] `json:"state"`
	PostalCode  Opt[string] `json:"postal_code"`
}

FraudCheckAttributesRequest: Corroborating attributes. All optional; they widen module coverage.

func (FraudCheckAttributesRequest) MarshalJSON

func (r FraudCheckAttributesRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type FraudCheckContextRequest

type FraudCheckContextRequest struct {
	IPAddress Opt[string] `json:"ip_address"`
	UserAgent Opt[string] `json:"user_agent"`

	// Country the subject claims to be in. Contextual only - never proof of
	// identity ownership.
	Country         Opt[string] `json:"country"`
	Purpose         Opt[string] `json:"purpose"`
	ConsentObtained Opt[bool]   `json:"consent_obtained"`
}

FraudCheckContextRequest is a request object.

func (FraudCheckContextRequest) MarshalJSON

func (r FraudCheckContextRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type FraudCheckIdentifierRequest

type FraudCheckIdentifierRequest struct {
	// Identifier type. Determines which namespace fields are required.
	//
	//   - `email` - Email
	//   - `phone` - Phone
	//   - `national_id` - National Id
	//   - `tax_number` - Tax Number
	//   - `passport_number` - Passport Number
	//   - `driving_licence_number` - Driving Licence Number
	//   - `residence_permit_number` - Residence Permit Number
	//   - `voter_id` - Voter Id
	//   - `external_id` - External Id Required.
	Type FraudTypeEnum `json:"type"`

	// The identifier value, in any customary format. Required.
	Value string `json:"value"`

	// ISO-3166 alpha-2 or alpha-3 issuing country. Required for government
	// identifier types: the same digits mean different people in different
	// countries.
	Country Opt[string] `json:"country"`

	// Optional issuing authority or sub-national issuer, when the country alone is
	// not unique.
	Issuer Opt[string] `json:"issuer"`
}

FraudCheckIdentifierRequest is a request object.

func (FraudCheckIdentifierRequest) MarshalJSON

func (r FraudCheckIdentifierRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type FraudCheckIdentityRelationship

type FraudCheckIdentityRelationship struct {
	Result        FraudResultEnum       `json:"result"`
	ReferenceType string                `json:"reference_type"`
	Country       string                `json:"country"`
	Availability  FraudAvailabilityEnum `json:"availability"`
	ReasonCodes   []string              `json:"reason_codes"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FraudCheckIdentityRelationship is a response object.

func (*FraudCheckIdentityRelationship) UnmarshalJSON

func (r *FraudCheckIdentityRelationship) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FraudCheckIdentityRelationship leniently.

type FraudCheckInput

type FraudCheckInput struct {
	// Redacted handle for the submitted identifier.
	Reference     string                `json:"reference"`
	Type          FraudTypeEnum         `json:"type"`
	Namespace     map[string]any        `json:"namespace"`
	Quality       string                `json:"quality"`
	Normalization map[string]any        `json:"normalization"`
	Availability  FraudAvailabilityEnum `json:"availability"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FraudCheckInput is a response object.

func (*FraudCheckInput) UnmarshalJSON

func (r *FraudCheckInput) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FraudCheckInput leniently.

type FraudCheckModuleReport

type FraudCheckModuleReport struct {
	Module        FraudExcludeEnum `json:"module"`
	Status        FraudStatusEnum  `json:"status"`
	Reason        string           `json:"reason"`
	LatencyMs     int64            `json:"latency_ms"`
	Freshness     string           `json:"freshness"`
	BillableUnits int64            `json:"billable_units"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FraudCheckModuleReport is a response object.

func (*FraudCheckModuleReport) UnmarshalJSON

func (r *FraudCheckModuleReport) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FraudCheckModuleReport leniently.

type FraudCheckModuleSelectionRequest

type FraudCheckModuleSelectionRequest struct {
	Include Opt[[]FraudExcludeEnum] `json:"include"`
	Exclude Opt[[]FraudExcludeEnum] `json:"exclude"`
}

FraudCheckModuleSelectionRequest is a request object.

func (FraudCheckModuleSelectionRequest) MarshalJSON

func (r FraudCheckModuleSelectionRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type FraudCheckPlan

type FraudCheckPlan struct {
	ProfileID      string                    `json:"profile_id"`
	ProfileVersion string                    `json:"profile_version"`
	Modules        []FraudCheckPlannedModule `json:"modules"`
	EstimatedPrice string                    `json:"estimated_price"`
	Currency       string                    `json:"currency"`
	IsSandbox      bool                      `json:"is_sandbox"`
	CanAfford      bool                      `json:"can_afford"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FraudCheckPlan is a response object.

func (*FraudCheckPlan) UnmarshalJSON

func (r *FraudCheckPlan) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FraudCheckPlan leniently.

type FraudCheckPlannedModule

type FraudCheckPlannedModule struct {
	Module             FraudExcludeEnum `json:"module"`
	Available          bool             `json:"available"`
	AvailabilityReason string           `json:"availability_reason"`
	WillRun            bool             `json:"will_run"`
	SelectionReason    string           `json:"selection_reason"`
	EstimatedPrice     string           `json:"estimated_price"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FraudCheckPlannedModule is a response object.

func (*FraudCheckPlannedModule) UnmarshalJSON

func (r *FraudCheckPlannedModule) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FraudCheckPlannedModule leniently.

type FraudCheckRequestRequest

type FraudCheckRequestRequest struct {
	// Your own reference for this check. Doubles as the idempotency key: reusing it
	// with the same body returns the original check without running or billing the
	// modules again; reusing it with a different body returns 409.
	ClientReference Opt[string] `json:"client_reference"`

	// Orchestration profile id. Defaults to the Didit `standard` profile.
	Profile Opt[string] `json:"profile"`

	// Pin a frozen profile version. Defaults to the current version of the profile.
	ProfileVersion Opt[string] `json:"profile_version"`

	// Required.
	Subject    FraudCheckSubjectRequest              `json:"subject"`
	Context    Opt[FraudCheckContextRequest]         `json:"context"`
	Checks     Opt[FraudCheckModuleSelectionRequest] `json:"checks"`
	VendorData Opt[string]                           `json:"vendor_data"`
	Metadata   Opt[any]                              `json:"metadata"`
}

FraudCheckRequestRequest is a request object.

func (FraudCheckRequestRequest) MarshalJSON

func (r FraudCheckRequestRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type FraudCheckResponse

type FraudCheckResponse struct {
	CheckID string `json:"check_id"`

	// Native verification session created for this check.
	RequestID            string                         `json:"request_id"`
	ClientReference      string                         `json:"client_reference"`
	ProcessingStatus     FraudProcessingStatusEnum      `json:"processing_status"`
	ProfileID            string                         `json:"profile_id"`
	ProfileVersion       string                         `json:"profile_version"`
	CreatedAt            time.Time                      `json:"created_at"`
	CompletedAt          time.Time                      `json:"completed_at"`
	Inputs               []FraudCheckInput              `json:"inputs"`
	Modules              []FraudCheckModuleReport       `json:"modules"`
	AttributeEvidence    []map[string]any               `json:"attribute_evidence"`
	CompoundEvidence     []map[string]any               `json:"compound_evidence"`
	Risk                 []FraudCheckRisk               `json:"risk"`
	Network              map[string]any                 `json:"network"`
	Enrichment           map[string]any                 `json:"enrichment"`
	IdentityRelationship FraudCheckIdentityRelationship `json:"identity_relationship"`
	Recommendation       FraudRecommendationEnum        `json:"recommendation"`
	NextAction           FraudNextActionEnum            `json:"next_action"`
	DecisionReasons      []string                       `json:"decision_reasons"`
	Coverage             map[string]any                 `json:"coverage"`
	Usage                []map[string]any               `json:"usage"`
	VendorData           string                         `json:"vendor_data"`
	Metadata             any                            `json:"metadata"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FraudCheckResponse is a response object.

func (*FraudCheckResponse) UnmarshalJSON

func (r *FraudCheckResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FraudCheckResponse leniently.

type FraudCheckRisk

type FraudCheckRisk struct {
	Dimension    FraudDimensionEnum    `json:"dimension"`
	Score        int64                 `json:"score"`
	Band         FraudBandEnum         `json:"band"`
	Availability FraudAvailabilityEnum `json:"availability"`

	// True when the request supplied everything this dimension needed and the
	// platform still could not answer it. Such a check is never recommended for
	// approval on the strength of the dimensions that did answer.
	RequestedButUnavailable bool     `json:"requested_but_unavailable"`
	ReasonCodes             []string `json:"reason_codes"`
	EvidenceIndexes         []int64  `json:"evidence_indexes"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

FraudCheckRisk is a response object.

func (*FraudCheckRisk) UnmarshalJSON

func (r *FraudCheckRisk) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes FraudCheckRisk leniently.

type FraudCheckSubjectRequest

type FraudCheckSubjectRequest struct {
	// Base64 JPEG, PNG or WebP selfie, up to 6 MB. No reference image or URL.
	Selfie Opt[string] `json:"selfie"`

	// One or more typed identifiers. One is enough. Required.
	Identifiers []FraudCheckIdentifierRequest    `json:"identifiers"`
	Attributes  Opt[FraudCheckAttributesRequest] `json:"attributes"`
}

FraudCheckSubjectRequest is a request object.

func (FraudCheckSubjectRequest) MarshalJSON

func (r FraudCheckSubjectRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type FraudChecksService

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

FraudChecksService holds the fraud_checks operations. Use it through Client.FraudChecks.

func (*FraudChecksService) Create

Create: Run a Fraud Check.

Submit one or more typed identifiers and receive normalization, fresh enrichment, authoritative validation where the country and identifier type are covered, independent risk dimensions and a recommendation in one response.

These profiles support identifier checks. Selfie-based identity binding (`biometric_identity`) requires profile version `2026-09-14.2` and a Brazilian CPF; it runs only with the user's consent and when your organization is entitled to it. Earlier versions report it as `not_available_in_profile_version`. Modules that cannot run are reported as skipped with a deterministic reason; a source that could not answer is never reported as an identity mismatch.

POST /v3/fraud/checks/

func (*FraudChecksService) Plan

Plan: Plan a Fraud Check.

Validate selected checks and estimate their price without executing, creating a session or billing.

POST /v3/fraud/checks/plan/

func (*FraudChecksService) Retrieve

func (r *FraudChecksService) Retrieve(ctx context.Context, checkID string, opts ...option.RequestOption) (*FraudCheckResponse, error)

Retrieve: Retrieve a Fraud Check.

Fetch a previously created check by its `check_id`.

GET /v3/fraud/checks/{check_id}/

type FraudDimensionEnum

type FraudDimensionEnum string

FraudDimensionEnum: * `identity` - Identity

  • `contact` - Contact
  • `device_network` - Device Network
  • `behavioral` - Behavioral
  • `fraud_network` - Fraud Network

FraudDimensionEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FraudDimensionEnumIdentity      FraudDimensionEnum = "identity"
	FraudDimensionEnumContact       FraudDimensionEnum = "contact"
	FraudDimensionEnumDeviceNetwork FraudDimensionEnum = "device_network"
	FraudDimensionEnumBehavioral    FraudDimensionEnum = "behavioral"
	FraudDimensionEnumFraudNetwork  FraudDimensionEnum = "fraud_network"
)

Known values of FraudDimensionEnum.

type FraudExcludeEnum

type FraudExcludeEnum string

FraudExcludeEnum: * `normalization` - Normalization

  • `email_risk` - Email Risk
  • `email_social` - Email Social
  • `phone_social` - Phone Social
  • `phone_risk` - Phone Risk
  • `ip_risk` - Ip Risk
  • `database_validation` - Database Validation
  • `networks_same_org` - Networks Same Org
  • `networks_cross_org` - Networks Cross Org
  • `biometric_identity` - Biometric Identity

FraudExcludeEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FraudExcludeEnumNormalization      FraudExcludeEnum = "normalization"
	FraudExcludeEnumEmailRisk          FraudExcludeEnum = "email_risk"
	FraudExcludeEnumEmailSocial        FraudExcludeEnum = "email_social"
	FraudExcludeEnumPhoneSocial        FraudExcludeEnum = "phone_social"
	FraudExcludeEnumPhoneRisk          FraudExcludeEnum = "phone_risk"
	FraudExcludeEnumIPRisk             FraudExcludeEnum = "ip_risk"
	FraudExcludeEnumDatabaseValidation FraudExcludeEnum = "database_validation"
	FraudExcludeEnumNetworksSameOrg    FraudExcludeEnum = "networks_same_org"
	FraudExcludeEnumNetworksCrossOrg   FraudExcludeEnum = "networks_cross_org"
	FraudExcludeEnumBiometricIdentity  FraudExcludeEnum = "biometric_identity"
)

Known values of FraudExcludeEnum.

type FraudNextActionEnum

type FraudNextActionEnum string

FraudNextActionEnum: * `none` - None

  • `manual_review` - Manual Review
  • `step_up` - Step Up
  • `resubmit_capture` - Resubmit Capture

FraudNextActionEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FraudNextActionEnumNone            FraudNextActionEnum = "none"
	FraudNextActionEnumManualReview    FraudNextActionEnum = "manual_review"
	FraudNextActionEnumStepUp          FraudNextActionEnum = "step_up"
	FraudNextActionEnumResubmitCapture FraudNextActionEnum = "resubmit_capture"
)

Known values of FraudNextActionEnum.

type FraudProcessingStatusEnum

type FraudProcessingStatusEnum string

FraudProcessingStatusEnum: * `pending` - Pending

  • `running` - Running
  • `completed` - Completed
  • `failed` - Failed

FraudProcessingStatusEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FraudProcessingStatusEnumPending   FraudProcessingStatusEnum = "pending"
	FraudProcessingStatusEnumRunning   FraudProcessingStatusEnum = "running"
	FraudProcessingStatusEnumCompleted FraudProcessingStatusEnum = "completed"
	FraudProcessingStatusEnumFailed    FraudProcessingStatusEnum = "failed"
)

Known values of FraudProcessingStatusEnum.

type FraudRecommendationEnum

type FraudRecommendationEnum string

FraudRecommendationEnum: * `approve` - Approve

  • `review` - Review
  • `reject` - Reject

FraudRecommendationEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FraudRecommendationEnumApprove FraudRecommendationEnum = "approve"
	FraudRecommendationEnumReview  FraudRecommendationEnum = "review"
	FraudRecommendationEnumReject  FraudRecommendationEnum = "reject"
)

Known values of FraudRecommendationEnum.

type FraudResultEnum

type FraudResultEnum string

FraudResultEnum: * `match` - Match

  • `mismatch` - Mismatch
  • `inconclusive` - Inconclusive
  • `no_reference` - No Reference

FraudResultEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FraudResultEnumMatch        FraudResultEnum = "match"
	FraudResultEnumMismatch     FraudResultEnum = "mismatch"
	FraudResultEnumInconclusive FraudResultEnum = "inconclusive"
	FraudResultEnumNoReference  FraudResultEnum = "no_reference"
)

Known values of FraudResultEnum.

type FraudStatusEnum

type FraudStatusEnum string

FraudStatusEnum: * `planned` - Planned

  • `completed` - Completed
  • `skipped` - Skipped
  • `failed` - Failed

FraudStatusEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FraudStatusEnumPlanned   FraudStatusEnum = "planned"
	FraudStatusEnumCompleted FraudStatusEnum = "completed"
	FraudStatusEnumSkipped   FraudStatusEnum = "skipped"
	FraudStatusEnumFailed    FraudStatusEnum = "failed"
)

Known values of FraudStatusEnum.

type FraudTypeEnum

type FraudTypeEnum string

FraudTypeEnum: * `email` - Email

  • `phone` - Phone
  • `national_id` - National Id
  • `tax_number` - Tax Number
  • `passport_number` - Passport Number
  • `driving_licence_number` - Driving Licence Number
  • `residence_permit_number` - Residence Permit Number
  • `voter_id` - Voter Id
  • `external_id` - External Id

FraudTypeEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	FraudTypeEnumEmail                 FraudTypeEnum = "email"
	FraudTypeEnumPhone                 FraudTypeEnum = "phone"
	FraudTypeEnumNationalID            FraudTypeEnum = "national_id"
	FraudTypeEnumTaxNumber             FraudTypeEnum = "tax_number"
	FraudTypeEnumPassportNumber        FraudTypeEnum = "passport_number"
	FraudTypeEnumDrivingLicenceNumber  FraudTypeEnum = "driving_licence_number"
	FraudTypeEnumResidencePermitNumber FraudTypeEnum = "residence_permit_number"
	FraudTypeEnumVoterID               FraudTypeEnum = "voter_id"
	FraudTypeEnumExternalID            FraudTypeEnum = "external_id"
)

Known values of FraudTypeEnum.

type IDVerificationService

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

IDVerificationService holds the id_verification operations. Use it through Client.IDVerification.

func (*IDVerificationService) Verify

Verify: ID Verification (document OCR + fraud checks).

OCR an identity document and run document fraud checks in one call - returns the extracted holder fields, the parsed MRZ, an `Approved`/`Declined` `status`, and a `warnings` list explaining every issue found. Supports 14,000+ document types from 220+ countries and territories.

**How it works.** Send the document's `front_image` (required) and, for two-sided documents, the `back_image`. Upload uncropped photos with all four corners of the document visible - the service detects, aligns, and crops the document itself, so do not pre-crop. The document is classified automatically (you never declare the country or document type), the visual zone is read with OCR, and the MRZ and any barcodes are decoded. Cross-checks then validate dates, number formats, and MRZ check digits, and compare the visual zone against the MRZ. With `perform_document_liveness=true`, the images are additionally screened for screen replays, printed copies, and portrait manipulation.

**Decision logic.** `status` is `Approved` unless at least one warning resolves to a decline. Fraud and hard-failure risks always decline: `DOCUMENT_EXPIRED`, `SCREEN_CAPTURE_DETECTED`, `PRINTED_COPY_DETECTED`, `PORTRAIT_MANIPULATION_DETECTED`, `PUBLIC_DOCUMENT_IMAGE_DETECTED`, plus extraction failures (`NAME_NOT_DETECTED`, `DATE_OF_BIRTH_NOT_DETECTED`, `DOCUMENT_NUMBER_NOT_DETECTED`). (`PORTRAIT_IMAGE_NOT_DETECTED`, `COULD_NOT_DETECT_DOCUMENT_TYPE`, `INVALID_DATE`, and `MRZ_NOT_DETECTED` exist in workflow sessions but are never produced by this standalone endpoint.) Three risk groups are configurable per request via `invalid_mrz_action`, `inconsistent_data_action`, and `expiration_date_not_detected_action` (`DECLINE` or `NO_ACTION`). All other warnings (e.g. `POSSIBLE_DUPLICATED_USER`) are informational and never decline on their own. A document that cannot be processed at all returns `400` with `{"error": "COULD_NOT_RECOGNIZE_DOCUMENT"}`; a readable but problematic document returns `200` with `status: "Declined"` - always inspect `id_verification.status` and `id_verification.warnings`, not just the HTTP code.

**Billing.** Each `200` response consumes one ID Verification API credit (standalone APIs have no free tier). When the organization's balance cannot cover the call, the endpoint returns `403` with the not-enough-credits error before any image processing.

**Session persistence (`save_api_request`, default `true`).** When `true`, the call is persisted as an API-type session: it appears in the Business Console, the returned `request_id` is a real session id you can pass to `GET /v3/session/{sessionId}/decision/`, the cropped document/portrait images are stored and returned as short-lived media URLs (`https://<media-host>/ocr/...`), and a `status.updated` webhook is emitted to your configured webhook endpoints. When `false`, nothing is stored, `request_id` is a one-off correlation UUID, and `portrait_image`/`front_image`/`back_image` are returned inline as base64-encoded JPEG strings.

**Sandbox.** Sandbox API keys skip all processing and billing: after request validation (malformed input still returns `400`), the endpoint returns a static `Approved` mock payload (a fictional "Sandbox User" USA identity card), no session is persisted, and no credits are consumed.

**Authentication.** Send your application's API key in the `x-api-key` header. Missing or invalid credentials return `403` (`{"detail": "You do not have permission to perform this action."}`) - this API never returns `401`.

**Rate limit.** Shared write budget of 300 requests/min per API key across all POST/PATCH/DELETE endpoints; exceeding it returns `429`.

POST /v3/id-verification/

type IDVerificationVerifyParams

type IDVerificationVerifyParams struct {
	// Front side of the identity document. Allowed extensions: `tiff`, `jpg`,
	// `jpeg`, `png`, `webp`, `pdf`. Maximum upload size: **10 MB** (larger files
	// are rejected with `400`). PDFs are rendered to an image before OCR; encrypted
	// PDFs require `front_image_password`. Images are automatically compressed to
	// ~0.5 MB and EXIF orientation is applied. Upload the full, uncropped capture
	// with all four corners of the document visible. Required.
	FrontImage File `json:"-" form:"front_image"`

	// Password to decrypt `front_image` when it is an encrypted PDF. Sending an
	// encrypted PDF without (or with a wrong) password returns `400`.
	FrontImagePassword Opt[string] `json:"front_image_password"`

	// Back side of the document - send it whenever the document has one (many ID
	// cards carry the MRZ or a barcode on the back; omitting it simply leaves the
	// MRZ and back-side fields empty in the response - this endpoint does not raise
	// a missing-MRZ warning). Same format and size limits as `front_image`. When
	// omitted, `back_image` and back-side fields are `null` in the response.
	BackImage Opt[File] `json:"-" form:"back_image"`

	// Password to decrypt `back_image` when it is an encrypted PDF.
	BackImagePassword Opt[string] `json:"back_image_password"`

	// Screens both images for presentation fraud: screen replays
	// (`SCREEN_CAPTURE_DETECTED`), printed copies (`PRINTED_COPY_DETECTED`), and
	// portrait manipulation (`PORTRAIT_MANIPULATION_DETECTED`). Any of these
	// auto-declines. Enabled by default; set to `false` to skip fraud screening and
	// reduce latency.
	PerformDocumentLiveness Opt[bool] `json:"perform_document_liveness"`

	// Accepted and validated (1-120) but **currently not applied** by this endpoint
	// - it never produces a `MINIMUM_AGE_NOT_MET` warning from this field. Enforce
	// age rules from the returned `date_of_birth`/`age`, or use a
	// verification-session workflow with age restrictions.
	MinimumAge Opt[int64] `json:"minimum_age"`

	// What to do when no expiration date can be read
	// (`EXPIRATION_DATE_NOT_DETECTED`). Default `NO_ACTION` because many identity
	// documents print no expiry date. Note: a *detected and past* expiry date
	// always declines (`DOCUMENT_EXPIRED`), regardless of this option.
	ExpirationDateNotDetectedAction Opt[IDVerificationVerifyParamsExpirationDateNotDetectedAction] `json:"expiration_date_not_detected_action"`

	// What to do when the extracted MRZ fails check-digit validation
	// (`MRZ_VALIDATION_FAILED`). A missing MRZ raises no warning on this endpoint.
	// Only relevant for documents that carry an MRZ. `REVIEW` is not supported on
	// this endpoint and returns `400`.
	InvalidMRZAction Opt[IDVerificationVerifyParamsInvalidMRZAction] `json:"invalid_mrz_action"`

	// What to do when extracted data is internally inconsistent:
	// `DATA_INCONSISTENT`, `MRZ_AND_DATA_EXTRACTED_FROM_OCR_NOT_SAME` (visual zone
	// disagrees with the MRZ), or
	// `DOCUMENT_NAME_DIFFERENT_FROM_OTHER_APPROVED_DOCUMENTS`.
	InconsistentDataAction Opt[IDVerificationVerifyParamsInconsistentDataAction] `json:"inconsistent_data_action"`

	// What to do when a critical printed field was physically covered on the
	// capture (`CRITICAL_FIELD_OCCLUSION_DETECTED`) - an identity number, a name,
	// the date of birth, or the expiry date. Declines by default, like this
	// endpoint's other document-integrity risks: covering the numbers a report is
	// reconciled against is what a redacted document looks like. The value read for
	// a covered field is dropped from the extraction either way, so the matching
	// `*_NOT_DETECTED` warning usually accompanies it. `REVIEW` is not supported on
	// this endpoint and returns `400`.
	CriticalFieldOcclusionAction Opt[IDVerificationVerifyParamsCriticalFieldOcclusionAction] `json:"critical_field_occlusion_action"`

	// What to do when a number does not match the format its issuing authority uses
	// for that document type (`DOCUMENT_NUMBER_FORMAT_MISMATCH`,
	// `PERSONAL_NUMBER_FORMAT_MISMATCH`). Default `NO_ACTION`, which reports the
	// warning without changing the status. `REVIEW` is not supported on this
	// endpoint and returns `400`.
	DocumentOrPersonalNumberFormatMismatchAction Opt[IDVerificationVerifyParamsDocumentOrPersonalNumberFormatMismatchAction] `json:"document_or_personal_number_format_mismatch_action"`

	// Preferred script for name/address fields on documents that print both Latin
	// and non-Latin text (Arabic, Cyrillic, CJK, …). `latin` returns
	// transliterated/Latin values; `non_latin` prefers the native script.
	PreferredCharacters Opt[IDVerificationVerifyParamsPreferredCharacters] `json:"preferred_characters"`

	// When `true` (default), persists the call as an API-type session - visible in
	// the Business Console, retrievable via `GET /v3/session/{sessionId}/decision/`
	// using the returned `request_id`, announced through a `status.updated`
	// webhook, and with document images returned as media URLs. When `false`,
	// nothing is stored, `request_id` is a transient UUID, and images are returned
	// inline as base64 JPEG strings.
	SaveAPIRequest Opt[bool] `json:"save_api_request"`

	// Optional opaque string (your internal user id, email, UUID…) stored on the
	// persisted session and echoed back in the response. Use it to correlate API
	// calls with your own records and to filter sessions later.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the session (when `save_api_request=true`)
	// and echoed back in the response. In multipart requests, send it as a
	// JSON-encoded string field (e.g. `metadata={"flow":"onboarding"}`) - it is
	// parsed into an object.
	Metadata Opt[map[string]any] `json:"metadata"`
}

IDVerificationVerifyParams holds the parameters of Client.IDVerification.Verify.

func (IDVerificationVerifyParams) MarshalJSON

func (r IDVerificationVerifyParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDVerificationVerifyParamsCriticalFieldOcclusionAction

type IDVerificationVerifyParamsCriticalFieldOcclusionAction string

IDVerificationVerifyParamsCriticalFieldOcclusionAction: What to do when a critical printed field was physically covered on the capture (`CRITICAL_FIELD_OCCLUSION_DETECTED`) - an identity number, a name, the date of birth, or the expiry date. Declines by default, like this endpoint's other document-integrity risks: covering the numbers a report is reconciled against is what a redacted document looks like. The value read for a covered field is dropped from the extraction either way, so the matching `*_NOT_DETECTED` warning usually accompanies it. `REVIEW` is not supported on this endpoint and returns `400`.

IDVerificationVerifyParamsCriticalFieldOcclusionAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	IDVerificationVerifyParamsCriticalFieldOcclusionActionNoAction IDVerificationVerifyParamsCriticalFieldOcclusionAction = "NO_ACTION"
	IDVerificationVerifyParamsCriticalFieldOcclusionActionDecline  IDVerificationVerifyParamsCriticalFieldOcclusionAction = "DECLINE"
)

Known values of IDVerificationVerifyParamsCriticalFieldOcclusionAction.

type IDVerificationVerifyParamsDocumentOrPersonalNumberFormatMismatchAction

type IDVerificationVerifyParamsDocumentOrPersonalNumberFormatMismatchAction string

IDVerificationVerifyParamsDocumentOrPersonalNumberFormatMismatchAction: What to do when a number does not match the format its issuing authority uses for that document type (`DOCUMENT_NUMBER_FORMAT_MISMATCH`, `PERSONAL_NUMBER_FORMAT_MISMATCH`). Default `NO_ACTION`, which reports the warning without changing the status. `REVIEW` is not supported on this endpoint and returns `400`.

IDVerificationVerifyParamsDocumentOrPersonalNumberFormatMismatchAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	IDVerificationVerifyParamsDocumentOrPersonalNumberFormatMismatchActionNoAction IDVerificationVerifyParamsDocumentOrPersonalNumberFormatMismatchAction = "NO_ACTION"
	IDVerificationVerifyParamsDocumentOrPersonalNumberFormatMismatchActionDecline  IDVerificationVerifyParamsDocumentOrPersonalNumberFormatMismatchAction = "DECLINE"
)

Known values of IDVerificationVerifyParamsDocumentOrPersonalNumberFormatMismatchAction.

type IDVerificationVerifyParamsExpirationDateNotDetectedAction

type IDVerificationVerifyParamsExpirationDateNotDetectedAction string

IDVerificationVerifyParamsExpirationDateNotDetectedAction: What to do when no expiration date can be read (`EXPIRATION_DATE_NOT_DETECTED`). Default `NO_ACTION` because many identity documents print no expiry date. Note: a *detected and past* expiry date always declines (`DOCUMENT_EXPIRED`), regardless of this option.

IDVerificationVerifyParamsExpirationDateNotDetectedAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	IDVerificationVerifyParamsExpirationDateNotDetectedActionNoAction IDVerificationVerifyParamsExpirationDateNotDetectedAction = "NO_ACTION"
	IDVerificationVerifyParamsExpirationDateNotDetectedActionDecline  IDVerificationVerifyParamsExpirationDateNotDetectedAction = "DECLINE"
)

Known values of IDVerificationVerifyParamsExpirationDateNotDetectedAction.

type IDVerificationVerifyParamsInconsistentDataAction

type IDVerificationVerifyParamsInconsistentDataAction string

IDVerificationVerifyParamsInconsistentDataAction: What to do when extracted data is internally inconsistent: `DATA_INCONSISTENT`, `MRZ_AND_DATA_EXTRACTED_FROM_OCR_NOT_SAME` (visual zone disagrees with the MRZ), or `DOCUMENT_NAME_DIFFERENT_FROM_OTHER_APPROVED_DOCUMENTS`.

IDVerificationVerifyParamsInconsistentDataAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	IDVerificationVerifyParamsInconsistentDataActionNoAction IDVerificationVerifyParamsInconsistentDataAction = "NO_ACTION"
	IDVerificationVerifyParamsInconsistentDataActionDecline  IDVerificationVerifyParamsInconsistentDataAction = "DECLINE"
)

Known values of IDVerificationVerifyParamsInconsistentDataAction.

type IDVerificationVerifyParamsInvalidMRZAction

type IDVerificationVerifyParamsInvalidMRZAction string

IDVerificationVerifyParamsInvalidMRZAction: What to do when the extracted MRZ fails check-digit validation (`MRZ_VALIDATION_FAILED`). A missing MRZ raises no warning on this endpoint. Only relevant for documents that carry an MRZ. `REVIEW` is not supported on this endpoint and returns `400`.

IDVerificationVerifyParamsInvalidMRZAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	IDVerificationVerifyParamsInvalidMRZActionNoAction IDVerificationVerifyParamsInvalidMRZAction = "NO_ACTION"
	IDVerificationVerifyParamsInvalidMRZActionDecline  IDVerificationVerifyParamsInvalidMRZAction = "DECLINE"
)

Known values of IDVerificationVerifyParamsInvalidMRZAction.

type IDVerificationVerifyParamsPreferredCharacters

type IDVerificationVerifyParamsPreferredCharacters string

IDVerificationVerifyParamsPreferredCharacters: Preferred script for name/address fields on documents that print both Latin and non-Latin text (Arabic, Cyrillic, CJK, …). `latin` returns transliterated/Latin values; `non_latin` prefers the native script.

IDVerificationVerifyParamsPreferredCharacters is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	IDVerificationVerifyParamsPreferredCharactersLatin    IDVerificationVerifyParamsPreferredCharacters = "latin"
	IDVerificationVerifyParamsPreferredCharactersNonLatin IDVerificationVerifyParamsPreferredCharacters = "non_latin"
)

Known values of IDVerificationVerifyParamsPreferredCharacters.

type IDVerificationVerifyResponse

type IDVerificationVerifyResponse struct {
	// Persisted session id when `save_api_request=true` (usable with `GET
	// /v3/session/{sessionId}/decision/`); otherwise a transient correlation UUID.
	RequestID      string                                     `json:"request_id"`
	IDVerification IDVerificationVerifyResponseIDVerification `json:"id_verification"`

	// Echo of the `vendor_data` you sent, or `null`.
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` object you sent, or `null`.
	Metadata map[string]any `json:"metadata"`

	// ISO 8601 timestamp (UTC) of when the response was generated.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

IDVerificationVerifyResponse is a response object.

func (*IDVerificationVerifyResponse) UnmarshalJSON

func (r *IDVerificationVerifyResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes IDVerificationVerifyResponse leniently.

type IDVerificationVerifyResponseIDVerification

type IDVerificationVerifyResponseIDVerification struct {
	// `Approved` when no warning resolves to a decline; `Declined` otherwise - the
	// `warnings` list explains why.
	Status IDVerificationVerifyResponseIDVerificationStatus `json:"status"`

	// Detected document type display name: `Identity Card`, `Passport`, `Driver's
	// License`, `Residence Permit`, `Health Insurance Card`, or `Tax Card`. `null`
	// when the document could not be classified.
	DocumentType string `json:"document_type"`

	// Finer-grained subtype when available (e.g. `ID_CARD_GENERIC`, `EPASSPORT`).
	DocumentSubtype string `json:"document_subtype"`
	DocumentNumber  string `json:"document_number"`

	// Secondary personal/national number printed on some documents.
	PersonalNumber string `json:"personal_number"`

	// Cropped portrait photo from the document. A short-lived media URL
	// (`https://<media-host>/ocr/...`) when `save_api_request=true` (default); an
	// inline base64-encoded JPEG string when `save_api_request=false`. `null` when
	// no portrait was detected.
	PortraitImage string `json:"portrait_image"`

	// Aligned crop of the document front. Media URL when saved, inline base64 JPEG
	// otherwise.
	FrontImage string `json:"front_image"`

	// Aligned crop of the document back. `null` when no `back_image` was uploaded.
	BackImage string `json:"back_image"`

	// Always `null` on this endpoint (populated only in camera-capture verification
	// sessions).
	FrontImageCameraFront string `json:"front_image_camera_front"`

	// Always `null` on this endpoint.
	BackImageCameraFront string `json:"back_image_camera_front"`

	// Always `null` on this endpoint.
	FrontImageCameraFrontFaceMatchScore float64 `json:"front_image_camera_front_face_match_score"`

	// Always `null` on this endpoint.
	BackImageCameraFrontFaceMatchScore float64 `json:"back_image_camera_front_face_match_score"`

	// Capture-quality diagnostics for the uploaded image (`null` when the side was
	// not provided or scoring failed). All scores are 0-100.
	FrontImageQualityScore IDVerificationVerifyResponseIDVerificationFrontImageQualityScore `json:"front_image_quality_score"`

	// Capture-quality diagnostics for the uploaded image (`null` when the side was
	// not provided or scoring failed). All scores are 0-100.
	BackImageQualityScore IDVerificationVerifyResponseIDVerificationBackImageQualityScore `json:"back_image_quality_score"`
	DateOfBirth           string                                                          `json:"date_of_birth"`

	// Holder age in years, computed from `date_of_birth`.
	Age            int64  `json:"age"`
	ExpirationDate string `json:"expiration_date"`
	DateOfIssue    string `json:"date_of_issue"`

	// Issuing country (ISO 3166-1 alpha-3).
	IssuingState     string `json:"issuing_state"`
	IssuingStateName string `json:"issuing_state_name"`
	FirstName        string `json:"first_name"`
	LastName         string `json:"last_name"`
	FullName         string `json:"full_name"`

	// `M`, `F`, or `null` when not printed/detected.
	Gender string `json:"gender"`

	// Address exactly as printed on the document.
	Address string `json:"address"`

	// Geocoded, normalized version of `address`.
	FormattedAddress string `json:"formatted_address"`
	PlaceOfBirth     string `json:"place_of_birth"`

	// `UNKNOWN` unless the document prints marital status.
	MaritalStatus string `json:"marital_status"`

	// Holder nationality (ISO 3166-1 alpha-3).
	Nationality string `json:"nationality"`

	// Document-specific extras that have no dedicated column (e.g.
	// `first_surname`/`second_surname` on Spanish IDs, license classes on driving
	// licenses).
	ExtraFields map[string]any `json:"extra_fields"`

	// Parsed machine-readable zone. An **empty object** (`{}`) when the document
	// has no MRZ or it could not be read - also check the `warnings` list in that
	// case. Dates inside the MRZ use the raw `YYMMDD` format.
	MRZ IDVerificationVerifyResponseIDVerificationMRZ `json:"mrz"`

	// Structured, geocoded breakdown of `address`. `null` when the document carries
	// no address or it could not be parsed.
	ParsedAddress IDVerificationVerifyResponseIDVerificationParsedAddress `json:"parsed_address"`

	// Empty on a clean approval. Every entry explains one detected risk; entries
	// with `log_type: "error"` set `status` to `Declined`.
	Warnings []IDVerificationVerifyResponseIDVerificationWarnings `json:"warnings"`

	// Barcodes decoded from the document (PDF417, QR, …). Empty when the document
	// has none or none could be read.
	Barcodes []IDVerificationVerifyResponseIDVerificationBarcodes `json:"barcodes"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

IDVerificationVerifyResponseIDVerification is a response object.

func (*IDVerificationVerifyResponseIDVerification) UnmarshalJSON

func (r *IDVerificationVerifyResponseIDVerification) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes IDVerificationVerifyResponseIDVerification leniently.

type IDVerificationVerifyResponseIDVerificationBackImageQualityScore

type IDVerificationVerifyResponseIDVerificationBackImageQualityScore struct {
	// Sharpness of the document crop (higher is sharper).
	FocusScore float64 `json:"focus_score"`

	// Exposure quality (higher is better).
	BrightnessScore float64 `json:"brightness_score"`

	// `ok` when exposure is fine, otherwise the detected issue (e.g. too dark / too
	// bright).
	BrightnessIssue string `json:"brightness_issue"`

	// Whether all four corners of the document are inside the frame.
	IsDocumentFullyVisible bool `json:"is_document_fully_visible"`

	// Effective resolution of the document area.
	ResolutionScore float64 `json:"resolution_score"`

	// Aggregate quality score.
	OverallScore float64 `json:"overall_score"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

IDVerificationVerifyResponseIDVerificationBackImageQualityScore: Capture-quality diagnostics for the uploaded image (`null` when the side was not provided or scoring failed). All scores are 0-100.

func (*IDVerificationVerifyResponseIDVerificationBackImageQualityScore) UnmarshalJSON

UnmarshalJSON decodes IDVerificationVerifyResponseIDVerificationBackImageQualityScore leniently.

type IDVerificationVerifyResponseIDVerificationBarcodes

type IDVerificationVerifyResponseIDVerificationBarcodes struct {
	// Barcode type (e.g. `PDF417`, `QR_CODE`, `UNKNOWN`).
	Type string `json:"type"`

	// Location of the barcode in the image, when available.
	Position map[string]any `json:"position"`

	// Decoded payload.
	Data string `json:"data"`

	// Raw (undecoded) payload, when different.
	DataRaw string `json:"data_raw"`

	// `front` or `back`.
	Side string `json:"side"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

IDVerificationVerifyResponseIDVerificationBarcodes is a response object.

func (*IDVerificationVerifyResponseIDVerificationBarcodes) UnmarshalJSON

UnmarshalJSON decodes IDVerificationVerifyResponseIDVerificationBarcodes leniently.

type IDVerificationVerifyResponseIDVerificationFrontImageQualityScore

type IDVerificationVerifyResponseIDVerificationFrontImageQualityScore struct {
	// Sharpness of the document crop (higher is sharper).
	FocusScore float64 `json:"focus_score"`

	// Exposure quality (higher is better).
	BrightnessScore float64 `json:"brightness_score"`

	// `ok` when exposure is fine, otherwise the detected issue (e.g. too dark / too
	// bright).
	BrightnessIssue string `json:"brightness_issue"`

	// Whether all four corners of the document are inside the frame.
	IsDocumentFullyVisible bool `json:"is_document_fully_visible"`

	// Effective resolution of the document area.
	ResolutionScore float64 `json:"resolution_score"`

	// Aggregate quality score.
	OverallScore float64 `json:"overall_score"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

IDVerificationVerifyResponseIDVerificationFrontImageQualityScore: Capture-quality diagnostics for the uploaded image (`null` when the side was not provided or scoring failed). All scores are 0-100.

func (*IDVerificationVerifyResponseIDVerificationFrontImageQualityScore) UnmarshalJSON

UnmarshalJSON decodes IDVerificationVerifyResponseIDVerificationFrontImageQualityScore leniently.

type IDVerificationVerifyResponseIDVerificationMRZ

type IDVerificationVerifyResponseIDVerificationMRZ struct {
	Surname string `json:"surname"`
	Name    string `json:"name"`

	// Issuing country (ISO 3166-1 alpha-3).
	Country string `json:"country"`

	// Holder nationality (ISO 3166-1 alpha-3).
	Nationality string `json:"nationality"`

	// Raw MRZ date of birth (`YYMMDD`).
	BirthDate string `json:"birth_date"`

	// Raw MRZ expiry date (`YYMMDD`).
	ExpiryDate string `json:"expiry_date"`
	Sex        string `json:"sex"`

	// MRZ document-type code (e.g. `ID`, `P`).
	DocumentType   string `json:"document_type"`
	DocumentNumber string `json:"document_number"`
	OptionalData   string `json:"optional_data"`
	OptionalData2  string `json:"optional_data_2"`

	// MRZ check digit for the birth date.
	BirthDateHash string `json:"birth_date_hash"`

	// MRZ check digit for the expiry date.
	ExpiryDateHash string `json:"expiry_date_hash"`

	// MRZ check digit for the document number.
	DocumentNumberHash string `json:"document_number_hash"`

	// Composite MRZ check digit.
	FinalHash      string `json:"final_hash"`
	PersonalNumber string `json:"personal_number"`

	// Non-fatal MRZ parsing warnings.
	Warnings []string `json:"warnings"`

	// MRZ check-digit/parsing errors. Non-empty errors surface as an
	// `MRZ_VALIDATION_FAILED` warning.
	Errors []string `json:"errors"`

	// MRZ layout: `TD1` (ID cards, 3 lines), `TD2`, or `TD3` (passports, 2 lines).
	MRZType string `json:"mrz_type"`

	// Raw MRZ text as read, lines separated by `\n`.
	MRZString string `json:"mrz_string"`

	// Composite key (document number + check digits) used for cross-checks.
	MRZKey string `json:"mrz_key"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

IDVerificationVerifyResponseIDVerificationMRZ: Parsed machine-readable zone. An **empty object** (`{}`) when the document has no MRZ or it could not be read - also check the `warnings` list in that case. Dates inside the MRZ use the raw `YYMMDD` format.

func (*IDVerificationVerifyResponseIDVerificationMRZ) UnmarshalJSON

func (r *IDVerificationVerifyResponseIDVerificationMRZ) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes IDVerificationVerifyResponseIDVerificationMRZ leniently.

type IDVerificationVerifyResponseIDVerificationParsedAddress

type IDVerificationVerifyResponseIDVerificationParsedAddress struct {
	Street1 string `json:"street_1"`
	Street2 string `json:"street_2"`
	City    string `json:"city"`
	Region  string `json:"region"`

	// ISO 3166-1 alpha-2 country code.
	Country     string `json:"country"`
	PostalCode  string `json:"postal_code"`
	AddressType string `json:"address_type"`

	// Canonical geocoded address string.
	FormattedAddress string `json:"formatted_address"`

	// Raw geocoding payload (`address_components`, `geometry.location`, `place_id`,
	// …) for advanced consumers.
	RawResults map[string]any `json:"raw_results"`

	// Geocoded coordinates of the document address.
	DocumentLocation IDVerificationVerifyResponseIDVerificationParsedAddressDocumentLocation `json:"document_location"`

	// Which document field the address was read from.
	Label string `json:"label"`

	// Whether geocoding confirmed the address exists.
	IsVerified bool `json:"is_verified"`

	// Address category (e.g. `Residential`, `Commercial`).
	Category string `json:"category"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

IDVerificationVerifyResponseIDVerificationParsedAddress: Structured, geocoded breakdown of `address`. `null` when the document carries no address or it could not be parsed.

func (*IDVerificationVerifyResponseIDVerificationParsedAddress) UnmarshalJSON

UnmarshalJSON decodes IDVerificationVerifyResponseIDVerificationParsedAddress leniently.

type IDVerificationVerifyResponseIDVerificationParsedAddressDocumentLocation

type IDVerificationVerifyResponseIDVerificationParsedAddressDocumentLocation struct {
	Latitude  float64 `json:"latitude"`
	Longitude float64 `json:"longitude"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

IDVerificationVerifyResponseIDVerificationParsedAddressDocumentLocation: Geocoded coordinates of the document address.

func (*IDVerificationVerifyResponseIDVerificationParsedAddressDocumentLocation) UnmarshalJSON

UnmarshalJSON decodes IDVerificationVerifyResponseIDVerificationParsedAddressDocumentLocation leniently.

type IDVerificationVerifyResponseIDVerificationStatus

type IDVerificationVerifyResponseIDVerificationStatus string

IDVerificationVerifyResponseIDVerificationStatus: `Approved` when no warning resolves to a decline; `Declined` otherwise - the `warnings` list explains why.

IDVerificationVerifyResponseIDVerificationStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	IDVerificationVerifyResponseIDVerificationStatusApproved IDVerificationVerifyResponseIDVerificationStatus = "Approved"
	IDVerificationVerifyResponseIDVerificationStatusDeclined IDVerificationVerifyResponseIDVerificationStatus = "Declined"
)

Known values of IDVerificationVerifyResponseIDVerificationStatus.

type IDVerificationVerifyResponseIDVerificationWarnings

type IDVerificationVerifyResponseIDVerificationWarnings struct {
	// Machine-readable risk code. Always-decline risks: `DOCUMENT_EXPIRED`,
	// `MINIMUM_AGE_NOT_MET`, `PORTRAIT_IMAGE_NOT_DETECTED`,
	// `SCREEN_CAPTURE_DETECTED`, `PRINTED_COPY_DETECTED`,
	// `PORTRAIT_MANIPULATION_DETECTED`, `PUBLIC_DOCUMENT_IMAGE_DETECTED`,
	// `INVALID_DATE`, `COULD_NOT_RECOGNIZE_DOCUMENT` (400-only, never a warning),
	// `DOCUMENT_NUMBER_NOT_DETECTED`, `COULD_NOT_DETECT_DOCUMENT_TYPE`,
	// `NAME_NOT_DETECTED`, `DATE_OF_BIRTH_NOT_DETECTED`. Governed by request
	// options: `MRZ_NOT_DETECTED` / `MRZ_VALIDATION_FAILED` (`invalid_mrz_action`),
	// `DATA_INCONSISTENT` / `MRZ_AND_DATA_EXTRACTED_FROM_OCR_NOT_SAME` /
	// `DOCUMENT_NAME_DIFFERENT_FROM_OTHER_APPROVED_DOCUMENTS`
	// (`inconsistent_data_action`), `EXPIRATION_DATE_NOT_DETECTED`
	// (`expiration_date_not_detected_action`). Other risks (e.g.
	// `POSSIBLE_DUPLICATED_USER`) are informational.
	Risk string `json:"risk"`

	// Feature that raised the warning. Always `ID_VERIFICATION` on this endpoint.
	Feature IDVerificationVerifyResponseIDVerificationWarningsFeature `json:"feature"`

	// Extra context for some risks (e.g. `POSSIBLE_DUPLICATED_USER` includes
	// `duplicated_session_id`); `null` for most.
	AdditionalData map[string]any `json:"additional_data"`

	// Severity. `error` warnings drive `status` to `Declined`; `information`
	// entries are advisory and never decline on their own. (`warning` is not
	// produced by this endpoint - its options only accept `DECLINE` or
	// `NO_ACTION`.)
	LogType IDVerificationVerifyResponseIDVerificationWarningsLogType `json:"log_type"`

	// Human-readable one-line summary of the risk.
	ShortDescription string `json:"short_description"`

	// Human-readable explanation of the risk.
	LongDescription string `json:"long_description"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

IDVerificationVerifyResponseIDVerificationWarnings is a response object.

func (*IDVerificationVerifyResponseIDVerificationWarnings) UnmarshalJSON

UnmarshalJSON decodes IDVerificationVerifyResponseIDVerificationWarnings leniently.

type IDVerificationVerifyResponseIDVerificationWarningsFeature

type IDVerificationVerifyResponseIDVerificationWarningsFeature string

IDVerificationVerifyResponseIDVerificationWarningsFeature: Feature that raised the warning. Always `ID_VERIFICATION` on this endpoint.

IDVerificationVerifyResponseIDVerificationWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	IDVerificationVerifyResponseIDVerificationWarningsFeatureIDVerification IDVerificationVerifyResponseIDVerificationWarningsFeature = "ID_VERIFICATION"
)

Known values of IDVerificationVerifyResponseIDVerificationWarningsFeature.

type IDVerificationVerifyResponseIDVerificationWarningsLogType

type IDVerificationVerifyResponseIDVerificationWarningsLogType string

IDVerificationVerifyResponseIDVerificationWarningsLogType: Severity. `error` warnings drive `status` to `Declined`; `information` entries are advisory and never decline on their own. (`warning` is not produced by this endpoint - its options only accept `DECLINE` or `NO_ACTION`.)

IDVerificationVerifyResponseIDVerificationWarningsLogType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	IDVerificationVerifyResponseIDVerificationWarningsLogTypeError       IDVerificationVerifyResponseIDVerificationWarningsLogType = "error"
	IDVerificationVerifyResponseIDVerificationWarningsLogTypeWarning     IDVerificationVerifyResponseIDVerificationWarningsLogType = "warning"
	IDVerificationVerifyResponseIDVerificationWarningsLogTypeInformation IDVerificationVerifyResponseIDVerificationWarningsLogType = "information"
)

Known values of IDVerificationVerifyResponseIDVerificationWarningsLogType.

type IDWalletsService

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

IDWalletsService holds the id_wallets operations. Use it through Client.IDWallets.

func (*IDWalletsService) CancelVerification

CancelVerification: Cancel a wallet verification.

Withdraw a pending verification: it is declined as cancelled and never billed. A decided one is returned unchanged. Smart-ID and Mobile-ID: a cancel that arrives while a poll is checking the sign-in waits a few seconds for that poll, then declines it, or returns it verified if the user had already confirmed. A verification the user is completing right now cannot be cancelled (409 verification_in_progress with Retry-After): retry after that many seconds to read its outcome.

POST /v3/id-verification/wallets/verifications/{request_id}/cancel/

func (*IDWalletsService) List

List: List Digital ID wallets.

Every Digital ID wallet with its start endpoint, countries, required fields and whether this application can start it in this environment now. Listed does not mean live.

GET /v3/id-verification/wallets/

func (*IDWalletsService) PollVerification

PollVerification: Poll a wallet verification.

Smart-ID and Mobile-ID: ask the provider whether the user confirmed, refused or let the prompt lapse, and verify the signed identity when they confirmed. Redirect wallets complete through the user's browser, so for them this only reads the verification back. Answers the verification as it is afterwards.

POST /v3/id-verification/wallets/verifications/{request_id}/poll/

func (*IDWalletsService) RetrieveVerification

RetrieveVerification: Get a wallet verification.

Status and result of a wallet verification: the normalized identity and the wallet's own attributes once verified, the error code once declined, the next action while pending. A verification past expires_at is decided timeout.

GET /v3/id-verification/wallets/verifications/{request_id}/

func (*IDWalletsService) StartAudkenni

StartAudkenni: Start Auðkenni verification.

Start a Auðkenni sign-in (Auðkenni (Icelandic electronic ID); ISL) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/audkenni/

func (*IDWalletsService) StartBankidCz

StartBankidCz: Start Bank iD verification.

Start a Bank iD sign-in (Bankovní identita, a.s.; CZE) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/bankid-cz/

func (*IDWalletsService) StartBankidNo

StartBankidNo: Start BankID (NOR) verification.

Start a BankID (NOR) sign-in (BankID BankAxept AS; NOR) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/bankid-no/

func (*IDWalletsService) StartBankidSe

StartBankidSe: Start BankID (SWE) verification.

Start a BankID (SWE) sign-in (Finansiell ID-Teknik / bank consortium; SWE) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/bankid-se/

func (*IDWalletsService) StartBuypass

StartBuypass: Start Buypass ID verification.

Start a Buypass ID sign-in (Buypass AS; NOR) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/buypass/

func (*IDWalletsService) StartConnectid

StartConnectid: Start ConnectID verification.

Start a ConnectID sign-in (Australian Payments Plus; AUS) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/connectid/

func (*IDWalletsService) StartDiia

StartDiia: Start Diia verification.

Start a Diia sign-in (Ministry of Digital Transformation of Ukraine; UKR) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/diia/

func (*IDWalletsService) StartEparakstsMobile

StartEparakstsMobile: Start eParaksts mobile verification.

Start a eParaksts mobile sign-in (LVRTC (Latvian State Radio and Television Centre); LVA) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/eparaksts-mobile/

func (*IDWalletsService) StartEudi

StartEudi: Start EUDI Wallet verification.

Start a EUDI Wallet sign-in (The user's own member state; the issuer differs per country; AUT, BEL, BGR, HRV, CYP, CZE, DNK, EST, FIN, FRA, DEU, GRC, HUN, IRL, ITA, LVA, LTU, LUX, MLT, NLD, POL, PRT, ROU, SVK, SVN, ESP, SWE, ISL, LIE, NOR) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/eudi/

func (*IDWalletsService) StartFranceconnect

StartFranceconnect: Start FranceConnect verification.

Start a FranceConnect sign-in (DINUM (French state); FRA) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/franceconnect/

func (*IDWalletsService) StartFrejaid

StartFrejaid: Start Freja eID verification.

Start a Freja eID sign-in (Freja eID Group; SWE) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/frejaid/

func (*IDWalletsService) StartFtn

StartFtn: Start Finnish Trust Network verification.

Start a Finnish Trust Network sign-in (Finnish banks and mobile operators (FTN); FIN) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/ftn/

func (*IDWalletsService) StartGovbr

StartGovbr: Start gov.br verification.

Start a gov.br sign-in (Governo Federal do Brasil; BRA) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/govbr/

func (*IDWalletsService) StartGovukWallet

StartGovukWallet: Start GOV.UK Wallet verification.

Start a GOV.UK Wallet sign-in (UK Government Digital Service; GBR) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/govuk-wallet/

func (*IDWalletsService) StartIdcardEe

StartIdcardEe: Start Estonian ID-card verification.

Start a Estonian ID-card sign-in (Police and Border Guard Board (Estonia); EST) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/idcard-ee/

func (*IDWalletsService) StartIdin

StartIdin: Start iDIN verification.

Start a iDIN sign-in (Dutch banks (Currence iDIN); NLD) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/idin/

func (*IDWalletsService) StartItsme

StartItsme: Start itsme verification.

Start a itsme sign-in (Belgian Mobile ID; BEL, LUX, NLD) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/itsme/

func (*IDWalletsService) StartMitid

StartMitid: Start MitID verification.

Start a MitID sign-in (Danish Agency for Digital Government; DNK) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/mitid/

func (*IDWalletsService) StartMobileID

StartMobileID: Start Mobile-ID verification.

Start a Mobile-ID sign-in (SK ID Solutions with the national mobile operators; EST, LTU) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=confirm_in_app with the comparison code to show the user; the user confirms it and enters their PIN in the app (never collect the PIN). Poll POST /v3/id-verification/wallets/verifications/{request_id}/poll/ every poll_interval_seconds, or rely on the webhook: Didit polls in the background too. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/mobile-id/

func (*IDWalletsService) StartMojeid

StartMojeid: Start MojeID verification.

Start a MojeID sign-in (CZ.NIC; CZE) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/mojeid/

func (*IDWalletsService) StartOneid

StartOneid: Start OneID verification.

Start a OneID sign-in (OneID (UK bank-verified identity); GBR) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/oneid/

func (*IDWalletsService) StartPersonalausweis

StartPersonalausweis: Start Personalausweis verification.

Start a Personalausweis sign-in (Bundesministerium des Innern (eID); DEU) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/personalausweis/

func (*IDWalletsService) StartSmartID

StartSmartID: Start Smart-ID verification.

Start a Smart-ID sign-in (SK ID Solutions; EST, LVA, LTU, BEL) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=confirm_in_app with the comparison code to show the user; the user confirms it and enters their PIN in the app (never collect the PIN). Poll POST /v3/id-verification/wallets/verifications/{request_id}/poll/ every poll_interval_seconds, or rely on the webhook: Didit polls in the background too. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/smart-id/

func (*IDWalletsService) StartUaePass

StartUaePass: Start UAE PASS verification.

Start a UAE PASS sign-in (UAE Digital Government Authority; ARE) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/uae-pass/

func (*IDWalletsService) StartVipps

StartVipps: Start Vipps verification.

Start a Vipps sign-in (Vipps MobilePay / BankID NO; NOR) without any workflow. Billed once, only when the identity is verified. The response carries next_action.type=redirect with the URL to send the user's browser to; the user returns to return_url with request_id and result appended. Read the outcome with GET /v3/id-verification/wallets/verifications/{request_id}/ or from the webhook, never from the URL. Sandbox applications get a deterministic simulation (simulated: true) that never contacts the provider.

POST /v3/id-verification/wallets/vipps/

type IDWalletsStartAudkenniParams

type IDWalletsStartAudkenniParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIAudkenniWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartAudkenniParams holds the parameters of Client.IDWallets.StartAudkenni.

func (IDWalletsStartAudkenniParams) MarshalJSON

func (r IDWalletsStartAudkenniParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartBankidCzParams

type IDWalletsStartBankidCzParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIBankidCzWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartBankidCzParams holds the parameters of Client.IDWallets.StartBankidCz.

func (IDWalletsStartBankidCzParams) MarshalJSON

func (r IDWalletsStartBankidCzParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartBankidNoParams

type IDWalletsStartBankidNoParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIBankidNoWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartBankidNoParams holds the parameters of Client.IDWallets.StartBankidNo.

func (IDWalletsStartBankidNoParams) MarshalJSON

func (r IDWalletsStartBankidNoParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartBankidSeParams

type IDWalletsStartBankidSeParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIBankidSeWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartBankidSeParams holds the parameters of Client.IDWallets.StartBankidSe.

func (IDWalletsStartBankidSeParams) MarshalJSON

func (r IDWalletsStartBankidSeParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartBuypassParams

type IDWalletsStartBuypassParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIBuypassWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartBuypassParams holds the parameters of Client.IDWallets.StartBuypass.

func (IDWalletsStartBuypassParams) MarshalJSON

func (r IDWalletsStartBuypassParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartConnectidParams

type IDWalletsStartConnectidParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIConnectidWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartConnectidParams holds the parameters of Client.IDWallets.StartConnectid.

func (IDWalletsStartConnectidParams) MarshalJSON

func (r IDWalletsStartConnectidParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartDiiaParams

type IDWalletsStartDiiaParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIDiiaWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartDiiaParams holds the parameters of Client.IDWallets.StartDiia.

func (IDWalletsStartDiiaParams) MarshalJSON

func (r IDWalletsStartDiiaParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartEparakstsMobileParams

type IDWalletsStartEparakstsMobileParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIEparakstsMobileWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartEparakstsMobileParams holds the parameters of Client.IDWallets.StartEparakstsMobile.

func (IDWalletsStartEparakstsMobileParams) MarshalJSON

func (r IDWalletsStartEparakstsMobileParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartEudiParams

type IDWalletsStartEudiParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIEudiWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartEudiParams holds the parameters of Client.IDWallets.StartEudi.

func (IDWalletsStartEudiParams) MarshalJSON

func (r IDWalletsStartEudiParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartFranceconnectParams

type IDWalletsStartFranceconnectParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIFranceconnectWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartFranceconnectParams holds the parameters of Client.IDWallets.StartFranceconnect.

func (IDWalletsStartFranceconnectParams) MarshalJSON

func (r IDWalletsStartFranceconnectParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartFrejaidParams

type IDWalletsStartFrejaidParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIFrejaidWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartFrejaidParams holds the parameters of Client.IDWallets.StartFrejaid.

func (IDWalletsStartFrejaidParams) MarshalJSON

func (r IDWalletsStartFrejaidParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartFtnParams

type IDWalletsStartFtnParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIFtnWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartFtnParams holds the parameters of Client.IDWallets.StartFtn.

func (IDWalletsStartFtnParams) MarshalJSON

func (r IDWalletsStartFtnParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartGovbrParams

type IDWalletsStartGovbrParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIGovbrWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartGovbrParams holds the parameters of Client.IDWallets.StartGovbr.

func (IDWalletsStartGovbrParams) MarshalJSON

func (r IDWalletsStartGovbrParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartGovukWalletParams

type IDWalletsStartGovukWalletParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIGovukWalletWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartGovukWalletParams holds the parameters of Client.IDWallets.StartGovukWallet.

func (IDWalletsStartGovukWalletParams) MarshalJSON

func (r IDWalletsStartGovukWalletParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartIdcardEeParams

type IDWalletsStartIdcardEeParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIIdcardEeWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartIdcardEeParams holds the parameters of Client.IDWallets.StartIdcardEe.

func (IDWalletsStartIdcardEeParams) MarshalJSON

func (r IDWalletsStartIdcardEeParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartIdinParams

type IDWalletsStartIdinParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIIdinWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartIdinParams holds the parameters of Client.IDWallets.StartIdin.

func (IDWalletsStartIdinParams) MarshalJSON

func (r IDWalletsStartIdinParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartItsmeParams

type IDWalletsStartItsmeParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIItsmeWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartItsmeParams holds the parameters of Client.IDWallets.StartItsme.

func (IDWalletsStartItsmeParams) MarshalJSON

func (r IDWalletsStartItsmeParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartMitidParams

type IDWalletsStartMitidParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIMitidWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartMitidParams holds the parameters of Client.IDWallets.StartMitid.

func (IDWalletsStartMitidParams) MarshalJSON

func (r IDWalletsStartMitidParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartMobileIDParams

type IDWalletsStartMobileIDParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIMobileIDWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartMobileIDParams holds the parameters of Client.IDWallets.StartMobileID.

func (IDWalletsStartMobileIDParams) MarshalJSON

func (r IDWalletsStartMobileIDParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartMojeidParams

type IDWalletsStartMojeidParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIMojeidWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartMojeidParams holds the parameters of Client.IDWallets.StartMojeid.

func (IDWalletsStartMojeidParams) MarshalJSON

func (r IDWalletsStartMojeidParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartOneidParams

type IDWalletsStartOneidParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIOneidWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartOneidParams holds the parameters of Client.IDWallets.StartOneid.

func (IDWalletsStartOneidParams) MarshalJSON

func (r IDWalletsStartOneidParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartPersonalausweisParams

type IDWalletsStartPersonalausweisParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIPersonalausweisWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartPersonalausweisParams holds the parameters of Client.IDWallets.StartPersonalausweis.

func (IDWalletsStartPersonalausweisParams) MarshalJSON

func (r IDWalletsStartPersonalausweisParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartSmartIDParams

type IDWalletsStartSmartIDParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPISmartIDWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartSmartIDParams holds the parameters of Client.IDWallets.StartSmartID.

func (IDWalletsStartSmartIDParams) MarshalJSON

func (r IDWalletsStartSmartIDParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartUaePassParams

type IDWalletsStartUaePassParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIUaePassWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartUaePassParams holds the parameters of Client.IDWallets.StartUaePass.

func (IDWalletsStartUaePassParams) MarshalJSON

func (r IDWalletsStartUaePassParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IDWalletsStartVippsParams

type IDWalletsStartVippsParams struct {
	// Body is the JSON request body.
	Body DigitalIDWalletAPIVippsWalletVerificationStartRequest `json:"-" body:"json"`

	// Optional retry-safety key (max 255 characters). Retrying with the same key,
	// wallet and body returns the original verification without starting a second
	// sign-in; the same key with another wallet or body returns 409
	// idempotency_key_reused.
	IdempotencyKey Opt[string] `json:"-" header:"Idempotency-Key"`
}

IDWalletsStartVippsParams holds the parameters of Client.IDWallets.StartVipps.

func (IDWalletsStartVippsParams) MarshalJSON

func (r IDWalletsStartVippsParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IPRiskRequest

type IPRiskRequest struct {
	// IPv4 or IPv6 address to score. Required.
	IPAddress string `json:"ip_address"`

	// Optional ISO 3166-1 alpha-2 or alpha-3 country claimed by the user or
	// session. Used to calculate `country_mismatch`.
	ClaimedCountry Opt[string] `json:"claimed_country"`

	// User agent observed by your backend. Stored as request context; it does not
	// provide device fingerprinting.
	UserAgent Opt[string] `json:"user_agent"`

	// Your stable reference for this request. Stored on the API session and echoed
	// in the response.
	VendorData Opt[string] `json:"vendor_data"`

	// Your non-sensitive JSON metadata. Stored on the API session and echoed in the
	// response.
	Metadata Opt[map[string]any] `json:"metadata"`
}

IPRiskRequest is a request object.

func (IPRiskRequest) MarshalJSON

func (r IPRiskRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type IPRiskResponse

type IPRiskResponse struct {
	// Id of the API session created for this request. Store it with `vendor_data`
	// if you need to correlate the result with later webhooks or console activity.
	RequestID string `json:"request_id"`

	// Decision for this API session: `In Review` on network or country-mismatch
	// risk, otherwise `Approved`.
	Status IPRiskResponseStatus `json:"status"`

	// Echo of the `vendor_data` you sent, `null` when you did not send one.
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` you sent, `null` when you did not send one.
	Metadata map[string]any `json:"metadata"`

	// Timestamp of this response.
	CreatedAt time.Time `json:"created_at"`

	// IP risk result. Individual enrichment fields can be `null` when the lookup
	// returned no usable data.
	IP IPRiskResponseIP `json:"ip"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

IPRiskResponse is a response object.

func (*IPRiskResponse) UnmarshalJSON

func (r *IPRiskResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes IPRiskResponse leniently.

type IPRiskResponseIP

type IPRiskResponseIP struct {
	// `In Review` when the resolved country conflicts with `claimed_country`, or
	// when the address is associated with VPN, Tor, or data-center infrastructure.
	// Otherwise `Approved`.
	Status IPRiskResponseIPStatus `json:"status"`

	// The scored address. `null` when no enrichment source returned usable data.
	IPAddress string `json:"ip_address"`

	// Resolved country name.
	IPCountry string `json:"ip_country"`

	// Resolved country code. Compare countries through `country_mismatch` instead
	// of comparing raw country strings yourself.
	IPCountryCode string `json:"ip_country_code"`

	// Resolved state or region.
	IPState string `json:"ip_state"`

	// Resolved city.
	IPCity string `json:"ip_city"`

	// Approximate network geolocation, not a precise device location.
	Latitude float64 `json:"latitude"`

	// Approximate network geolocation, not a precise device location.
	Longitude float64 `json:"longitude"`

	// Internet service provider serving the address.
	Isp string `json:"isp"`

	// Organization owning the address block.
	Organization string `json:"organization"`

	// `true` when the address is associated with VPN or Tor infrastructure.
	IsVpnOrTor bool `json:"is_vpn_or_tor"`

	// `true` when the address belongs to a hosting or data-center network.
	IsDataCenter bool `json:"is_data_center"`

	// Time zone of the resolved location.
	TimeZone string `json:"time_zone"`

	// UTC offset of the resolved location.
	TimeZoneOffset string `json:"time_zone_offset"`

	// Autonomous system number.
	AsnNumber float64 `json:"asn_number"`

	// Organization operating the autonomous system.
	AsnOrganization string `json:"asn_organization"`

	// Connection classification (e.g., `cellular`, `hosting`).
	ConnectionType string `json:"connection_type"`

	// Mobile carrier when the address is on a mobile network.
	Carrier string `json:"carrier"`

	// Proxy classification when the address is behind a proxy.
	ProxyType string `json:"proxy_type"`

	// Echo of the `claimed_country` you sent.
	ClaimedCountry string `json:"claimed_country"`

	// `true` when the resolved country differs from `claimed_country`. `null` when
	// no enrichment data or no claimed country is available.
	CountryMismatch bool `json:"country_mismatch"`

	// Free-form network-threat evidence from the enrichment source (e.g.,
	// `is_proxy`, `is_tor`). Empty object when no enrichment data is available.
	// Treat as diagnostic detail, not a stable contract.
	Threat map[string]any `json:"threat"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

IPRiskResponseIP: IP risk result. Individual enrichment fields can be `null` when the lookup returned no usable data.

func (*IPRiskResponseIP) UnmarshalJSON

func (r *IPRiskResponseIP) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes IPRiskResponseIP leniently.

type IPRiskResponseIPStatus

type IPRiskResponseIPStatus string

IPRiskResponseIPStatus: `In Review` when the resolved country conflicts with `claimed_country`, or when the address is associated with VPN, Tor, or data-center infrastructure. Otherwise `Approved`.

IPRiskResponseIPStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	IPRiskResponseIPStatusApproved IPRiskResponseIPStatus = "Approved"
	IPRiskResponseIPStatusInReview IPRiskResponseIPStatus = "In Review"
)

Known values of IPRiskResponseIPStatus.

type IPRiskResponseStatus

type IPRiskResponseStatus string

IPRiskResponseStatus: Decision for this API session: `In Review` on network or country-mismatch risk, otherwise `Approved`.

IPRiskResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	IPRiskResponseStatusApproved IPRiskResponseStatus = "Approved"
	IPRiskResponseStatusInReview IPRiskResponseStatus = "In Review"
)

Known values of IPRiskResponseStatus.

type IPService

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

IPService holds the ip operations. Use it through Client.IP.

func (*IPService) AssessRisk

func (r *IPService) AssessRisk(ctx context.Context, params IPRiskRequest, opts ...option.RequestOption) (*IPRiskResponse, error)

AssessRisk: Risk-score an IP address.

Return geolocation, network ownership, VPN/Tor and data-center flags, threat data, and `country_mismatch` for a supplied IP address. The endpoint creates an API session and returns its id as `request_id`.

**Decision.** `status` is `In Review` when the resolved country conflicts with `claimed_country`, or when the address is associated with VPN, Tor, or data-center infrastructure. Otherwise it is `Approved`.

**Best effort.** IP enrichment is best effort. If no enrichment source returns usable data, the endpoint returns an approved response with `ip.ip_address: null`, `ip.country_mismatch: null`, and an empty `ip.threat` object.

**Billing.** Live calls use IP Risk API pricing. The request is billable once the lookup starts.

**Sandbox.** Sandbox keys validate the request and return deterministic approved data without consuming credits, creating a session, or contributing to Networks.

**Authentication.** Send your application's API key in `x-api-key`. Missing or invalid credentials return `403` - this API never returns `401`.

**Rate limit.** Shared write budget of 300 requests per minute per API key across all POST/PATCH/DELETE endpoints.

POST /v3/ip/risk/

type ImportJobSummary

type ImportJobSummary struct {
	ID           string                 `json:"id"`
	Kind         ImportJobSummaryKind   `json:"kind"`
	Source       ImportJobSummarySource `json:"source"`
	Provider     string                 `json:"provider"`
	ProviderName string                 `json:"provider_name"`
	Filename     string                 `json:"filename"`

	// The job's state as the console shows it; `errors` is a completed job with
	// rejected rows.
	State          ImportJobSummaryState         `json:"state"`
	Status         string                        `json:"status"`
	IsDryRun       bool                          `json:"is_dry_run"`
	CredentialHint string                        `json:"credential_hint"`
	ResumesAt      time.Time                     `json:"resumes_at"`
	LastError      string                        `json:"last_error"`
	StartedBy      ImportJobSummaryStartedBy     `json:"started_by"`
	Progress       ImportJobSummaryProgress      `json:"progress"`
	FaceTemplates  ImportJobSummaryFaceTemplates `json:"face_templates"`
	EtaSeconds     int64                         `json:"eta_seconds"`
	CreatedAt      time.Time                     `json:"created_at"`
	StartedAt      time.Time                     `json:"started_at"`
	CompletedAt    time.Time                     `json:"completed_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ImportJobSummary: One import job of any kind, in the shape the console's Import jobs drawer reads.

func (*ImportJobSummary) UnmarshalJSON

func (r *ImportJobSummary) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ImportJobSummary leniently.

type ImportJobSummaryFaceTemplates

type ImportJobSummaryFaceTemplates struct {
	Enabled     bool  `json:"enabled"`
	Built       int64 `json:"built"`
	Duplicates  int64 `json:"duplicates"`
	Blocklisted int64 `json:"blocklisted"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ImportJobSummaryFaceTemplates is a response object.

func (*ImportJobSummaryFaceTemplates) UnmarshalJSON

func (r *ImportJobSummaryFaceTemplates) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ImportJobSummaryFaceTemplates leniently.

type ImportJobSummaryKind

type ImportJobSummaryKind string

ImportJobSummaryKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ImportJobSummaryKindSessions     ImportJobSummaryKind = "sessions"
	ImportJobSummaryKindBusinesses   ImportJobSummaryKind = "businesses"
	ImportJobSummaryKindUsers        ImportJobSummaryKind = "users"
	ImportJobSummaryKindStatusRules  ImportJobSummaryKind = "status_rules"
	ImportJobSummaryKindTransactions ImportJobSummaryKind = "transactions"
)

Known values of ImportJobSummaryKind.

type ImportJobSummaryProgress

type ImportJobSummaryProgress struct {
	Total          int64 `json:"total"`
	Processed      int64 `json:"processed"`
	Imported       int64 `json:"imported"`
	Updated        int64 `json:"updated"`
	AlreadyInDidit int64 `json:"already_in_didit"`
	Failed         int64 `json:"failed"`
	NotFinished    int64 `json:"not_finished"`
	SamePerson     int64 `json:"same_person"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ImportJobSummaryProgress is a response object.

func (*ImportJobSummaryProgress) UnmarshalJSON

func (r *ImportJobSummaryProgress) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ImportJobSummaryProgress leniently.

type ImportJobSummarySource

type ImportJobSummarySource string

ImportJobSummarySource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ImportJobSummarySourceFile     ImportJobSummarySource = "file"
	ImportJobSummarySourceAPI      ImportJobSummarySource = "api"
	ImportJobSummarySourceProvider ImportJobSummarySource = "provider"
)

Known values of ImportJobSummarySource.

type ImportJobSummaryStartedBy

type ImportJobSummaryStartedBy struct {
	Name  string `json:"name"`
	Email string `json:"email"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ImportJobSummaryStartedBy is a response object.

func (*ImportJobSummaryStartedBy) UnmarshalJSON

func (r *ImportJobSummaryStartedBy) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ImportJobSummaryStartedBy leniently.

type ImportJobSummaryState

type ImportJobSummaryState string

ImportJobSummaryState: The job's state as the console shows it; `errors` is a completed job with rejected rows.

ImportJobSummaryState is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ImportJobSummaryStateReady     ImportJobSummaryState = "ready"
	ImportJobSummaryStateQueued    ImportJobSummaryState = "queued"
	ImportJobSummaryStateRunning   ImportJobSummaryState = "running"
	ImportJobSummaryStatePaused    ImportJobSummaryState = "paused"
	ImportJobSummaryStateCompleted ImportJobSummaryState = "completed"
	ImportJobSummaryStateErrors    ImportJobSummaryState = "errors"
	ImportJobSummaryStateFailed    ImportJobSummaryState = "failed"
	ImportJobSummaryStateCancelled ImportJobSummaryState = "cancelled"
)

Known values of ImportJobSummaryState.

type ImportProvider

type ImportProvider struct {
	Key  ImportProviderKey `json:"key"`
	Name string            `json:"name"`

	// `api_list`: Didit lists records with the key. `api_ids`: upload the record
	// IDs from an export. `export_file`: upload an export in Didit's format.
	Mode                ImportProviderMode                     `json:"mode"`
	RecordNoun          string                                 `json:"record_noun"`
	CredentialFields    []ImportProviderCredentialFields       `json:"credential_fields"`
	Regions             []string                               `json:"regions"`
	RequiredPermissions []string                               `json:"required_permissions"`
	DocsURL             string                                 `json:"docs_url"`
	StatusMapping       map[string]ImportProviderStatusMapping `json:"status_mapping"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ImportProvider is a response object.

func (*ImportProvider) UnmarshalJSON

func (r *ImportProvider) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ImportProvider leniently.

type ImportProviderCredentialFields

type ImportProviderCredentialFields struct {
	Name   string `json:"name"`
	Label  string `json:"label"`
	Secret bool   `json:"secret"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ImportProviderCredentialFields is a response object.

func (*ImportProviderCredentialFields) UnmarshalJSON

func (r *ImportProviderCredentialFields) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ImportProviderCredentialFields leniently.

type ImportProviderKey

type ImportProviderKey string

ImportProviderKey is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ImportProviderKeySumsub     ImportProviderKey = "sumsub"
	ImportProviderKeyJumio      ImportProviderKey = "jumio"
	ImportProviderKeyVeriff     ImportProviderKey = "veriff"
	ImportProviderKeyOnfido     ImportProviderKey = "onfido"
	ImportProviderKeyPersona    ImportProviderKey = "persona"
	ImportProviderKeyMetamap    ImportProviderKey = "metamap"
	ImportProviderKeySocure     ImportProviderKey = "socure"
	ImportProviderKeyIdnow      ImportProviderKey = "idnow"
	ImportProviderKeyShufti     ImportProviderKey = "shufti"
	ImportProviderKeyIdenfy     ImportProviderKey = "idenfy"
	ImportProviderKeyOndato     ImportProviderKey = "ondato"
	ImportProviderKeyTrulioo    ImportProviderKey = "trulioo"
	ImportProviderKeyAu10tix    ImportProviderKey = "au10tix"
	ImportProviderKeyComplycube ImportProviderKey = "complycube"
	ImportProviderKeyOther      ImportProviderKey = "other"
)

Known values of ImportProviderKey.

type ImportProviderMode

type ImportProviderMode string

ImportProviderMode: `api_list`: Didit lists records with the key. `api_ids`: upload the record IDs from an export. `export_file`: upload an export in Didit's format.

ImportProviderMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ImportProviderModeAPIList    ImportProviderMode = "api_list"
	ImportProviderModeAPIIDs     ImportProviderMode = "api_ids"
	ImportProviderModeExportFile ImportProviderMode = "export_file"
)

Known values of ImportProviderMode.

type ImportProviderStatusMapping

type ImportProviderStatusMapping string

ImportProviderStatusMapping is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ImportProviderStatusMappingApproved    ImportProviderStatusMapping = "Approved"
	ImportProviderStatusMappingDeclined    ImportProviderStatusMapping = "Declined"
	ImportProviderStatusMappingInReview    ImportProviderStatusMapping = "In Review"
	ImportProviderStatusMappingExpired     ImportProviderStatusMapping = "Expired"
	ImportProviderStatusMappingNotFinished ImportProviderStatusMapping = "Not Finished"
	ImportProviderStatusMappingAbandoned   ImportProviderStatusMapping = "Abandoned"
)

Known values of ImportProviderStatusMapping.

type InternalServerError

type InternalServerError struct{ *APIStatusError }

InternalServerError is an *APIStatusError with a 5xx status.

func (*InternalServerError) Unwrap

func (e *InternalServerError) Unwrap() error

type InvestigatorAcceptRequest

type InvestigatorAcceptRequest struct {
	// A rewritten narrative. Sending one records the decision as edited and
	// accepted.
	Narrative Opt[string] `json:"narrative"`

	// Email the person about the decision.
	SendEmail Opt[bool] `json:"send_email"`

	// Required when `send_email` is true.
	EmailAddress  Opt[string] `json:"email_address"`
	EmailLanguage Opt[string] `json:"email_language"`
}

InvestigatorAcceptRequest is a request object.

func (InvestigatorAcceptRequest) MarshalJSON

func (r InvestigatorAcceptRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type InvestigatorBatchAcceptRequest

type InvestigatorBatchAcceptRequest struct {
	// Required.
	RunIDs []string `json:"run_ids"`
}

InvestigatorBatchAcceptRequest is a request object.

func (InvestigatorBatchAcceptRequest) MarshalJSON

func (r InvestigatorBatchAcceptRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type InvestigatorBatchAcceptResponse

type InvestigatorBatchAcceptResponse struct {
	Accepted int64                                    `json:"accepted"`
	Skipped  int64                                    `json:"skipped"`
	Results  []InvestigatorBatchAcceptResponseResults `json:"results"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

InvestigatorBatchAcceptResponse is a response object.

func (*InvestigatorBatchAcceptResponse) UnmarshalJSON

func (r *InvestigatorBatchAcceptResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes InvestigatorBatchAcceptResponse leniently.

type InvestigatorBatchAcceptResponseResults

type InvestigatorBatchAcceptResponseResults struct {
	RunID       string                                       `json:"run_id"`
	Result      InvestigatorBatchAcceptResponseResultsResult `json:"result"`
	Reason      InvestigatorBatchAcceptResponseResultsReason `json:"reason"`
	Detail      any                                          `json:"detail"`
	Action      string                                       `json:"action"`
	FinalStatus string                                       `json:"final_status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

InvestigatorBatchAcceptResponseResults is a response object.

func (*InvestigatorBatchAcceptResponseResults) UnmarshalJSON

func (r *InvestigatorBatchAcceptResponseResults) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes InvestigatorBatchAcceptResponseResults leniently.

type InvestigatorBatchAcceptResponseResultsReason

type InvestigatorBatchAcceptResponseResultsReason string

InvestigatorBatchAcceptResponseResultsReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorBatchAcceptResponseResultsReasonNotFound       InvestigatorBatchAcceptResponseResultsReason = "not_found"
	InvestigatorBatchAcceptResponseResultsReasonForbidden      InvestigatorBatchAcceptResponseResultsReason = "forbidden"
	InvestigatorBatchAcceptResponseResultsReasonAlreadyDecided InvestigatorBatchAcceptResponseResultsReason = "already_decided"
	InvestigatorBatchAcceptResponseResultsReasonNotReady       InvestigatorBatchAcceptResponseResultsReason = "not_ready"
	InvestigatorBatchAcceptResponseResultsReasonGuardrail      InvestigatorBatchAcceptResponseResultsReason = "guardrail"
	InvestigatorBatchAcceptResponseResultsReasonInvalid        InvestigatorBatchAcceptResponseResultsReason = "invalid"
)

Known values of InvestigatorBatchAcceptResponseResultsReason.

type InvestigatorBatchAcceptResponseResultsResult

type InvestigatorBatchAcceptResponseResultsResult string

InvestigatorBatchAcceptResponseResultsResult is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorBatchAcceptResponseResultsResultAccepted InvestigatorBatchAcceptResponseResultsResult = "accepted"
	InvestigatorBatchAcceptResponseResultsResultSkipped  InvestigatorBatchAcceptResponseResultsResult = "skipped"
)

Known values of InvestigatorBatchAcceptResponseResultsResult.

type InvestigatorBlock

type InvestigatorBlock struct {
	RunID                string                          `json:"run_id"`
	Status               InvestigatorBlockStatus         `json:"status"`
	Stage                InvestigatorBlockStage          `json:"stage"`
	Queue                InvestigatorBlockQueue          `json:"queue"`
	IsOpen               bool                            `json:"is_open"`
	Recommendation       InvestigatorBlockRecommendation `json:"recommendation"`
	RecommendationDetail string                          `json:"recommendation_detail"`
	Confidence           InvestigatorBlockConfidence     `json:"confidence"`
	Summary              string                          `json:"summary"`
	ReadyToAccept        bool                            `json:"ready_to_accept"`
	PreparedAt           time.Time                       `json:"prepared_at"`

	// The Investigator decided on its own, even if the decision was later
	// overridden.
	Automated bool                       `json:"automated"`
	DecidedBy InvestigatorBlockDecidedBy `json:"decided_by"`
	Decision  InvestigatorDecision       `json:"decision"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

InvestigatorBlock: The item's latest Investigator review, or null when it never had one. Carried by the V3 session and business session decision (and so by `status.updated` webhooks).

func (*InvestigatorBlock) UnmarshalJSON

func (r *InvestigatorBlock) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes InvestigatorBlock leniently.

type InvestigatorBlockConfidence

type InvestigatorBlockConfidence string

InvestigatorBlockConfidence is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorBlockConfidenceHigh     InvestigatorBlockConfidence = "high"
	InvestigatorBlockConfidenceModerate InvestigatorBlockConfidence = "moderate"
	InvestigatorBlockConfidenceLow      InvestigatorBlockConfidence = "low"
)

Known values of InvestigatorBlockConfidence.

type InvestigatorBlockDecidedBy

type InvestigatorBlockDecidedBy string

InvestigatorBlockDecidedBy is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorBlockDecidedByInvestigator InvestigatorBlockDecidedBy = "investigator"
	InvestigatorBlockDecidedByMember       InvestigatorBlockDecidedBy = "member"
)

Known values of InvestigatorBlockDecidedBy.

type InvestigatorBlockQueue

type InvestigatorBlockQueue string

InvestigatorBlockQueue is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorBlockQueueKYC          InvestigatorBlockQueue = "kyc"
	InvestigatorBlockQueueKYB          InvestigatorBlockQueue = "kyb"
	InvestigatorBlockQueueAML          InvestigatorBlockQueue = "aml"
	InvestigatorBlockQueueTransactions InvestigatorBlockQueue = "transactions"
	InvestigatorBlockQueueCases        InvestigatorBlockQueue = "cases"
)

Known values of InvestigatorBlockQueue.

type InvestigatorBlockRecommendation

type InvestigatorBlockRecommendation string

InvestigatorBlockRecommendation is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorBlockRecommendationApprove  InvestigatorBlockRecommendation = "approve"
	InvestigatorBlockRecommendationDecline  InvestigatorBlockRecommendation = "decline"
	InvestigatorBlockRecommendationEscalate InvestigatorBlockRecommendation = "escalate"
	InvestigatorBlockRecommendationRequest  InvestigatorBlockRecommendation = "request"
)

Known values of InvestigatorBlockRecommendation.

type InvestigatorBlockStage

type InvestigatorBlockStage string

InvestigatorBlockStage is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorBlockStageShadow InvestigatorBlockStage = "shadow"
	InvestigatorBlockStageLive   InvestigatorBlockStage = "live"
)

Known values of InvestigatorBlockStage.

type InvestigatorBlockStatus

type InvestigatorBlockStatus string

InvestigatorBlockStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorBlockStatusRunning   InvestigatorBlockStatus = "running"
	InvestigatorBlockStatusCompleted InvestigatorBlockStatus = "completed"
	InvestigatorBlockStatusFailed    InvestigatorBlockStatus = "failed"
)

Known values of InvestigatorBlockStatus.

type InvestigatorDecision

type InvestigatorDecision struct {
	// `accepted` or `edited` took the recommendation (`edited` with a rewritten
	// narrative), `overridden` took another action, `decided_elsewhere` is a
	// decision taken outside the Investigator while the report was open,
	// `automated` is a decision the Investigator took on its own.
	Outcome          InvestigatorDecisionOutcome          `json:"outcome"`
	Action           InvestigatorDecisionAction           `json:"action"`
	ActorEmail       string                               `json:"actor_email"`
	ActorName        string                               `json:"actor_name"`
	OverrideCategory InvestigatorDecisionOverrideCategory `json:"override_category"`
	OverrideReason   string                               `json:"override_reason"`

	// The item's status after the decision.
	FinalStatus string `json:"final_status"`

	// Whether the decision matched the recommendation.
	Agreed    bool      `json:"agreed"`
	DecidedAt time.Time `json:"decided_at"`

	// The review was charged.
	Billed    bool                          `json:"billed"`
	DecidedBy InvestigatorDecisionDecidedBy `json:"decided_by"`

	// The decision the Investigator took on its own, unchanged by later overrides.
	// Null for a decision the team took.
	OriginalOutcome InvestigatorDecisionOriginalOutcome `json:"original_outcome"`

	// Every override of a decision the Investigator took on its own, oldest first.
	Overrides []InvestigatorDecisionOverrides `json:"overrides"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

InvestigatorDecision: How the item left the Investigator queue. `decided_by`, `original_outcome` and `overrides` are returned by the accept and override endpoints and the report; the `investigator` block of a session decision carries the other fields.

func (*InvestigatorDecision) UnmarshalJSON

func (r *InvestigatorDecision) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes InvestigatorDecision leniently.

type InvestigatorDecisionAction

type InvestigatorDecisionAction string

InvestigatorDecisionAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorDecisionActionApprove  InvestigatorDecisionAction = "approve"
	InvestigatorDecisionActionDecline  InvestigatorDecisionAction = "decline"
	InvestigatorDecisionActionEscalate InvestigatorDecisionAction = "escalate"
	InvestigatorDecisionActionRequest  InvestigatorDecisionAction = "request"
)

Known values of InvestigatorDecisionAction.

type InvestigatorDecisionDecidedBy

type InvestigatorDecisionDecidedBy string

InvestigatorDecisionDecidedBy is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorDecisionDecidedByInvestigator InvestigatorDecisionDecidedBy = "investigator"
	InvestigatorDecisionDecidedByMember       InvestigatorDecisionDecidedBy = "member"
)

Known values of InvestigatorDecisionDecidedBy.

type InvestigatorDecisionOriginalOutcome

type InvestigatorDecisionOriginalOutcome struct {
	Action      string    `json:"action"`
	FinalStatus string    `json:"final_status"`
	DecidedAt   time.Time `json:"decided_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

InvestigatorDecisionOriginalOutcome: The decision the Investigator took on its own, unchanged by later overrides. Null for a decision the team took.

func (*InvestigatorDecisionOriginalOutcome) UnmarshalJSON

func (r *InvestigatorDecisionOriginalOutcome) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes InvestigatorDecisionOriginalOutcome leniently.

type InvestigatorDecisionOutcome

type InvestigatorDecisionOutcome string

InvestigatorDecisionOutcome: `accepted` or `edited` took the recommendation (`edited` with a rewritten narrative), `overridden` took another action, `decided_elsewhere` is a decision taken outside the Investigator while the report was open, `automated` is a decision the Investigator took on its own.

InvestigatorDecisionOutcome is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorDecisionOutcomeAccepted         InvestigatorDecisionOutcome = "accepted"
	InvestigatorDecisionOutcomeEdited           InvestigatorDecisionOutcome = "edited"
	InvestigatorDecisionOutcomeOverridden       InvestigatorDecisionOutcome = "overridden"
	InvestigatorDecisionOutcomeDecidedElsewhere InvestigatorDecisionOutcome = "decided_elsewhere"
	InvestigatorDecisionOutcomeAutomated        InvestigatorDecisionOutcome = "automated"
)

Known values of InvestigatorDecisionOutcome.

type InvestigatorDecisionOverrideCategory

type InvestigatorDecisionOverrideCategory string

InvestigatorDecisionOverrideCategory is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorDecisionOverrideCategoryMissingContext   InvestigatorDecisionOverrideCategory = "missing_context"
	InvestigatorDecisionOverrideCategoryNeedsInformation InvestigatorDecisionOverrideCategory = "needs_information"
	InvestigatorDecisionOverrideCategoryPolicyDiffers    InvestigatorDecisionOverrideCategory = "policy_differs"
	InvestigatorDecisionOverrideCategoryEvidenceMisread  InvestigatorDecisionOverrideCategory = "evidence_misread"
	InvestigatorDecisionOverrideCategoryOther            InvestigatorDecisionOverrideCategory = "other"
	InvestigatorDecisionOverrideCategoryEmpty            InvestigatorDecisionOverrideCategory = ""
)

Known values of InvestigatorDecisionOverrideCategory.

type InvestigatorDecisionOverrides

type InvestigatorDecisionOverrides struct {
	Action           string    `json:"action"`
	ActorEmail       string    `json:"actor_email"`
	ActorName        string    `json:"actor_name"`
	OverrideCategory string    `json:"override_category"`
	OverrideReason   string    `json:"override_reason"`
	PreviousStatus   string    `json:"previous_status"`
	FinalStatus      string    `json:"final_status"`
	Agreed           bool      `json:"agreed"`
	OverriddenAt     time.Time `json:"overridden_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

InvestigatorDecisionOverrides is a response object.

func (*InvestigatorDecisionOverrides) UnmarshalJSON

func (r *InvestigatorDecisionOverrides) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes InvestigatorDecisionOverrides leniently.

type InvestigatorExportActivityParams

type InvestigatorExportActivityParams struct {
	// `identity` (sessions, and cases not opened by a transaction rule) or
	// `transactions` (transaction alerts, and cases a transaction rule opened).
	Scope Opt[InvestigatorExportActivityParamsScope] `json:"-" query:"scope"`
	Group Opt[InvestigatorExportActivityParamsGroup] `json:"-" query:"group"`

	// `agent` for the Investigator, or a person's email.
	Actor Opt[string]    `json:"-" query:"actor"`
	Since Opt[time.Time] `json:"-" query:"since"`
	Until Opt[time.Time] `json:"-" query:"until"`
}

InvestigatorExportActivityParams holds the parameters of Client.Investigator.ExportActivity.

func (InvestigatorExportActivityParams) MarshalJSON

func (r InvestigatorExportActivityParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type InvestigatorExportActivityParamsGroup

type InvestigatorExportActivityParamsGroup string

InvestigatorExportActivityParamsGroup is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorExportActivityParamsGroupAgent     InvestigatorExportActivityParamsGroup = "agent"
	InvestigatorExportActivityParamsGroupDecisions InvestigatorExportActivityParamsGroup = "decisions"
	InvestigatorExportActivityParamsGroupOverrides InvestigatorExportActivityParamsGroup = "overrides"
	InvestigatorExportActivityParamsGroupAutonomy  InvestigatorExportActivityParamsGroup = "autonomy"
)

Known values of InvestigatorExportActivityParamsGroup.

type InvestigatorExportActivityParamsScope

type InvestigatorExportActivityParamsScope string

InvestigatorExportActivityParamsScope is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorExportActivityParamsScopeAll          InvestigatorExportActivityParamsScope = "all"
	InvestigatorExportActivityParamsScopeIdentity     InvestigatorExportActivityParamsScope = "identity"
	InvestigatorExportActivityParamsScopeTransactions InvestigatorExportActivityParamsScope = "transactions"
)

Known values of InvestigatorExportActivityParamsScope.

type InvestigatorListActivityParams

type InvestigatorListActivityParams struct {
	// `identity` (sessions, and cases not opened by a transaction rule) or
	// `transactions` (transaction alerts, and cases a transaction rule opened).
	Scope Opt[InvestigatorListActivityParamsScope] `json:"-" query:"scope"`
	Group Opt[InvestigatorListActivityParamsGroup] `json:"-" query:"group"`

	// `agent` for the Investigator, or a person's email.
	Actor  Opt[string]    `json:"-" query:"actor"`
	Since  Opt[time.Time] `json:"-" query:"since"`
	Until  Opt[time.Time] `json:"-" query:"until"`
	Limit  Opt[int64]     `json:"-" query:"limit"`
	Offset Opt[int64]     `json:"-" query:"offset"`
}

InvestigatorListActivityParams holds the parameters of Client.Investigator.ListActivity.

func (InvestigatorListActivityParams) MarshalJSON

func (r InvestigatorListActivityParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type InvestigatorListActivityParamsGroup

type InvestigatorListActivityParamsGroup string

InvestigatorListActivityParamsGroup is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorListActivityParamsGroupAgent     InvestigatorListActivityParamsGroup = "agent"
	InvestigatorListActivityParamsGroupDecisions InvestigatorListActivityParamsGroup = "decisions"
	InvestigatorListActivityParamsGroupOverrides InvestigatorListActivityParamsGroup = "overrides"
	InvestigatorListActivityParamsGroupAutonomy  InvestigatorListActivityParamsGroup = "autonomy"
)

Known values of InvestigatorListActivityParamsGroup.

type InvestigatorListActivityParamsScope

type InvestigatorListActivityParamsScope string

InvestigatorListActivityParamsScope is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorListActivityParamsScopeAll          InvestigatorListActivityParamsScope = "all"
	InvestigatorListActivityParamsScopeIdentity     InvestigatorListActivityParamsScope = "identity"
	InvestigatorListActivityParamsScopeTransactions InvestigatorListActivityParamsScope = "transactions"
)

Known values of InvestigatorListActivityParamsScope.

type InvestigatorListGuardrailsResponse

type InvestigatorListGuardrailsResponse struct {
	Results []InvestigatorListGuardrailsResponseResults `json:"results"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

InvestigatorListGuardrailsResponse is a response object.

func (*InvestigatorListGuardrailsResponse) UnmarshalJSON

func (r *InvestigatorListGuardrailsResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes InvestigatorListGuardrailsResponse leniently.

type InvestigatorListGuardrailsResponseResults

type InvestigatorListGuardrailsResponseResults struct {
	Key         InvestigatorListGuardrailsResponseResultsKey `json:"key"`
	Title       string                                       `json:"title"`
	Description string                                       `json:"description"`
	Locked      bool                                         `json:"locked"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

InvestigatorListGuardrailsResponseResults is a response object.

func (*InvestigatorListGuardrailsResponseResults) UnmarshalJSON

func (r *InvestigatorListGuardrailsResponseResults) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes InvestigatorListGuardrailsResponseResults leniently.

type InvestigatorListGuardrailsResponseResultsKey

type InvestigatorListGuardrailsResponseResultsKey string

InvestigatorListGuardrailsResponseResultsKey is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorListGuardrailsResponseResultsKeySanctionsToPerson          InvestigatorListGuardrailsResponseResultsKey = "sanctions_to_person"
	InvestigatorListGuardrailsResponseResultsKeyNoTippingOff               InvestigatorListGuardrailsResponseResultsKey = "no_tipping_off"
	InvestigatorListGuardrailsResponseResultsKeyNoProtectedCharacteristics InvestigatorListGuardrailsResponseResultsKey = "no_protected_characteristics"
	InvestigatorListGuardrailsResponseResultsKeyNeverFilesReports          InvestigatorListGuardrailsResponseResultsKey = "never_files_reports"
	InvestigatorListGuardrailsResponseResultsKeyEveryDecisionLogged        InvestigatorListGuardrailsResponseResultsKey = "every_decision_logged"
)

Known values of InvestigatorListGuardrailsResponseResultsKey.

type InvestigatorListQueueParams

type InvestigatorListQueueParams struct {
	// `identity` (sessions, and cases not opened by a transaction rule) or
	// `transactions` (transaction alerts, and cases a transaction rule opened).
	Scope Opt[InvestigatorListQueueParamsScope] `json:"-" query:"scope"`

	// `session`, `business_session`, `transaction` or `case`, or several separated
	// by commas.
	Kind           Opt[string]                                    `json:"-" query:"kind"`
	Queue          Opt[InvestigatorListQueueParamsQueue]          `json:"-" query:"queue"`
	Recommendation Opt[InvestigatorListQueueParamsRecommendation] `json:"-" query:"recommendation"`
	Confidence     Opt[InvestigatorListQueueParamsConfidence]     `json:"-" query:"confidence"`
	Ready          Opt[bool]                                      `json:"-" query:"ready"`

	// Name, company, case title, number, transaction ID or item ID.
	Search Opt[string] `json:"-" query:"search"`
	Limit  Opt[int64]  `json:"-" query:"limit"`
	Offset Opt[int64]  `json:"-" query:"offset"`
}

InvestigatorListQueueParams holds the parameters of Client.Investigator.ListQueue.

func (InvestigatorListQueueParams) MarshalJSON

func (r InvestigatorListQueueParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type InvestigatorListQueueParamsConfidence

type InvestigatorListQueueParamsConfidence string

InvestigatorListQueueParamsConfidence is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorListQueueParamsConfidenceHigh     InvestigatorListQueueParamsConfidence = "high"
	InvestigatorListQueueParamsConfidenceModerate InvestigatorListQueueParamsConfidence = "moderate"
	InvestigatorListQueueParamsConfidenceLow      InvestigatorListQueueParamsConfidence = "low"
)

Known values of InvestigatorListQueueParamsConfidence.

type InvestigatorListQueueParamsQueue

type InvestigatorListQueueParamsQueue string

InvestigatorListQueueParamsQueue is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorListQueueParamsQueueKYC          InvestigatorListQueueParamsQueue = "kyc"
	InvestigatorListQueueParamsQueueKYB          InvestigatorListQueueParamsQueue = "kyb"
	InvestigatorListQueueParamsQueueAML          InvestigatorListQueueParamsQueue = "aml"
	InvestigatorListQueueParamsQueueTransactions InvestigatorListQueueParamsQueue = "transactions"
	InvestigatorListQueueParamsQueueCases        InvestigatorListQueueParamsQueue = "cases"
)

Known values of InvestigatorListQueueParamsQueue.

type InvestigatorListQueueParamsRecommendation

type InvestigatorListQueueParamsRecommendation string

InvestigatorListQueueParamsRecommendation is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorListQueueParamsRecommendationApprove  InvestigatorListQueueParamsRecommendation = "approve"
	InvestigatorListQueueParamsRecommendationDecline  InvestigatorListQueueParamsRecommendation = "decline"
	InvestigatorListQueueParamsRecommendationEscalate InvestigatorListQueueParamsRecommendation = "escalate"
	InvestigatorListQueueParamsRecommendationRequest  InvestigatorListQueueParamsRecommendation = "request"
)

Known values of InvestigatorListQueueParamsRecommendation.

type InvestigatorListQueueParamsScope

type InvestigatorListQueueParamsScope string

InvestigatorListQueueParamsScope is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorListQueueParamsScopeAll          InvestigatorListQueueParamsScope = "all"
	InvestigatorListQueueParamsScopeIdentity     InvestigatorListQueueParamsScope = "identity"
	InvestigatorListQueueParamsScopeTransactions InvestigatorListQueueParamsScope = "transactions"
)

Known values of InvestigatorListQueueParamsScope.

type InvestigatorOverrideRequest

type InvestigatorOverrideRequest struct {
	// Required.
	Action InvestigatorOverrideRequestAction `json:"action"`

	// Required.
	Category InvestigatorOverrideRequestCategory `json:"category"`

	// Required.
	Reason string `json:"reason"`

	// Email the person about the decision.
	SendEmail Opt[bool] `json:"send_email"`

	// Required when `send_email` is true.
	EmailAddress  Opt[string] `json:"email_address"`
	EmailLanguage Opt[string] `json:"email_language"`
}

InvestigatorOverrideRequest is a request object.

func (InvestigatorOverrideRequest) MarshalJSON

func (r InvestigatorOverrideRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type InvestigatorOverrideRequestAction

type InvestigatorOverrideRequestAction string

InvestigatorOverrideRequestAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorOverrideRequestActionApprove  InvestigatorOverrideRequestAction = "approve"
	InvestigatorOverrideRequestActionDecline  InvestigatorOverrideRequestAction = "decline"
	InvestigatorOverrideRequestActionEscalate InvestigatorOverrideRequestAction = "escalate"
	InvestigatorOverrideRequestActionRequest  InvestigatorOverrideRequestAction = "request"
)

Known values of InvestigatorOverrideRequestAction.

type InvestigatorOverrideRequestCategory

type InvestigatorOverrideRequestCategory string

InvestigatorOverrideRequestCategory is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorOverrideRequestCategoryMissingContext   InvestigatorOverrideRequestCategory = "missing_context"
	InvestigatorOverrideRequestCategoryNeedsInformation InvestigatorOverrideRequestCategory = "needs_information"
	InvestigatorOverrideRequestCategoryPolicyDiffers    InvestigatorOverrideRequestCategory = "policy_differs"
	InvestigatorOverrideRequestCategoryEvidenceMisread  InvestigatorOverrideRequestCategory = "evidence_misread"
	InvestigatorOverrideRequestCategoryOther            InvestigatorOverrideRequestCategory = "other"
)

Known values of InvestigatorOverrideRequestCategory.

type InvestigatorQueueRow

type InvestigatorQueueRow struct {
	RunID string                    `json:"run_id"`
	Kind  InvestigatorQueueRowKind  `json:"kind"`
	Queue InvestigatorQueueRowQueue `json:"queue"`
	Stage InvestigatorQueueRowStage `json:"stage"`

	// The item under review: `id`, `number`, `status`, `name` and, depending on the
	// kind, `country`, `workflow`, `vendor_data`, `txn_id`, `amount`, `currency`,
	// `direction`, `title` or `priority`.
	Subject              map[string]any                     `json:"subject"`
	Recommendation       InvestigatorQueueRowRecommendation `json:"recommendation"`
	RecommendationDetail string                             `json:"recommendation_detail"`
	Confidence           InvestigatorQueueRowConfidence     `json:"confidence"`
	Summary              string                             `json:"summary"`
	SourcesCount         int64                              `json:"sources_count"`
	ReadyToAccept        bool                               `json:"ready_to_accept"`

	// The locked guardrails that hold this item, if any.
	Guardrails   any       `json:"guardrails"`
	WaitingSince time.Time `json:"waiting_since"`
	DueAt        time.Time `json:"due_at"`
	PreparedAt   time.Time `json:"prepared_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

InvestigatorQueueRow is a response object.

func (*InvestigatorQueueRow) UnmarshalJSON

func (r *InvestigatorQueueRow) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes InvestigatorQueueRow leniently.

type InvestigatorQueueRowConfidence

type InvestigatorQueueRowConfidence string

InvestigatorQueueRowConfidence is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorQueueRowConfidenceHigh     InvestigatorQueueRowConfidence = "high"
	InvestigatorQueueRowConfidenceModerate InvestigatorQueueRowConfidence = "moderate"
	InvestigatorQueueRowConfidenceLow      InvestigatorQueueRowConfidence = "low"
)

Known values of InvestigatorQueueRowConfidence.

type InvestigatorQueueRowKind

type InvestigatorQueueRowKind string

InvestigatorQueueRowKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorQueueRowKindSession         InvestigatorQueueRowKind = "session"
	InvestigatorQueueRowKindBusinessSession InvestigatorQueueRowKind = "business_session"
	InvestigatorQueueRowKindTransaction     InvestigatorQueueRowKind = "transaction"
	InvestigatorQueueRowKindCase            InvestigatorQueueRowKind = "case"
)

Known values of InvestigatorQueueRowKind.

type InvestigatorQueueRowQueue

type InvestigatorQueueRowQueue string

InvestigatorQueueRowQueue is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorQueueRowQueueKYC          InvestigatorQueueRowQueue = "kyc"
	InvestigatorQueueRowQueueKYB          InvestigatorQueueRowQueue = "kyb"
	InvestigatorQueueRowQueueAML          InvestigatorQueueRowQueue = "aml"
	InvestigatorQueueRowQueueTransactions InvestigatorQueueRowQueue = "transactions"
	InvestigatorQueueRowQueueCases        InvestigatorQueueRowQueue = "cases"
)

Known values of InvestigatorQueueRowQueue.

type InvestigatorQueueRowRecommendation

type InvestigatorQueueRowRecommendation string

InvestigatorQueueRowRecommendation is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorQueueRowRecommendationApprove  InvestigatorQueueRowRecommendation = "approve"
	InvestigatorQueueRowRecommendationDecline  InvestigatorQueueRowRecommendation = "decline"
	InvestigatorQueueRowRecommendationEscalate InvestigatorQueueRowRecommendation = "escalate"
	InvestigatorQueueRowRecommendationRequest  InvestigatorQueueRowRecommendation = "request"
)

Known values of InvestigatorQueueRowRecommendation.

type InvestigatorQueueRowStage

type InvestigatorQueueRowStage string

InvestigatorQueueRowStage is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorQueueRowStageShadow InvestigatorQueueRowStage = "shadow"
	InvestigatorQueueRowStageLive   InvestigatorQueueRowStage = "live"
)

Known values of InvestigatorQueueRowStage.

type InvestigatorRetrieveDashboardParams

type InvestigatorRetrieveDashboardParams struct {
	// `identity` (sessions, and cases not opened by a transaction rule) or
	// `transactions` (transaction alerts, and cases a transaction rule opened).
	Scope Opt[InvestigatorRetrieveDashboardParamsScope] `json:"-" query:"scope"`
}

InvestigatorRetrieveDashboardParams holds the parameters of Client.Investigator.RetrieveDashboard.

func (InvestigatorRetrieveDashboardParams) MarshalJSON

func (r InvestigatorRetrieveDashboardParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type InvestigatorRetrieveDashboardParamsScope

type InvestigatorRetrieveDashboardParamsScope string

InvestigatorRetrieveDashboardParamsScope is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorRetrieveDashboardParamsScopeAll          InvestigatorRetrieveDashboardParamsScope = "all"
	InvestigatorRetrieveDashboardParamsScopeIdentity     InvestigatorRetrieveDashboardParamsScope = "identity"
	InvestigatorRetrieveDashboardParamsScopeTransactions InvestigatorRetrieveDashboardParamsScope = "transactions"
)

Known values of InvestigatorRetrieveDashboardParamsScope.

type InvestigatorRetrieveDashboardResponse

type InvestigatorRetrieveDashboardResponse struct {
	Stage          string  `json:"stage"`
	WindowDays     int64   `json:"window_days"`
	Reviews        int64   `json:"reviews"`
	Decided        int64   `json:"decided"`
	Automated      int64   `json:"automated"`
	AutomationRate float64 `json:"automation_rate"`
	HoursSaved     float64 `json:"hours_saved"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

InvestigatorRetrieveDashboardResponse is a response object.

func (*InvestigatorRetrieveDashboardResponse) UnmarshalJSON

func (r *InvestigatorRetrieveDashboardResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes InvestigatorRetrieveDashboardResponse leniently.

type InvestigatorRetrievePerformanceParams

type InvestigatorRetrievePerformanceParams struct {
	// `identity` (sessions, and cases not opened by a transaction rule) or
	// `transactions` (transaction alerts, and cases a transaction rule opened).
	Scope Opt[InvestigatorRetrievePerformanceParamsScope] `json:"-" query:"scope"`

	// Days, ending today.
	Period Opt[InvestigatorRetrievePerformanceParamsPeriod] `json:"-" query:"period"`
}

InvestigatorRetrievePerformanceParams holds the parameters of Client.Investigator.RetrievePerformance.

func (InvestigatorRetrievePerformanceParams) MarshalJSON

func (r InvestigatorRetrievePerformanceParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type InvestigatorRetrievePerformanceParamsPeriod

type InvestigatorRetrievePerformanceParamsPeriod string

InvestigatorRetrievePerformanceParamsPeriod is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorRetrievePerformanceParamsPeriod7  InvestigatorRetrievePerformanceParamsPeriod = "7"
	InvestigatorRetrievePerformanceParamsPeriod30 InvestigatorRetrievePerformanceParamsPeriod = "30"
	InvestigatorRetrievePerformanceParamsPeriod90 InvestigatorRetrievePerformanceParamsPeriod = "90"
)

Known values of InvestigatorRetrievePerformanceParamsPeriod.

type InvestigatorRetrievePerformanceParamsScope

type InvestigatorRetrievePerformanceParamsScope string

InvestigatorRetrievePerformanceParamsScope is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorRetrievePerformanceParamsScopeAll          InvestigatorRetrievePerformanceParamsScope = "all"
	InvestigatorRetrievePerformanceParamsScopeIdentity     InvestigatorRetrievePerformanceParamsScope = "identity"
	InvestigatorRetrievePerformanceParamsScopeTransactions InvestigatorRetrievePerformanceParamsScope = "transactions"
)

Known values of InvestigatorRetrievePerformanceParamsScope.

type InvestigatorRetrievePerformanceResponse

type InvestigatorRetrievePerformanceResponse struct {
	Period       int64  `json:"period"`
	Start        string `json:"start"`
	End          string `json:"end"`
	Investigated int64  `json:"investigated"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

InvestigatorRetrievePerformanceResponse is a response object.

func (*InvestigatorRetrievePerformanceResponse) UnmarshalJSON

func (r *InvestigatorRetrievePerformanceResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes InvestigatorRetrievePerformanceResponse leniently.

type InvestigatorRetrieveSummaryParams

type InvestigatorRetrieveSummaryParams struct {
	// `identity` (sessions, and cases not opened by a transaction rule) or
	// `transactions` (transaction alerts, and cases a transaction rule opened).
	Scope Opt[InvestigatorRetrieveSummaryParamsScope] `json:"-" query:"scope"`

	// IANA time zone (for example `Europe/Madrid`) that "today" counts from. UTC by
	// default.
	Timezone Opt[string] `json:"-" query:"timezone"`
}

InvestigatorRetrieveSummaryParams holds the parameters of Client.Investigator.RetrieveSummary.

func (InvestigatorRetrieveSummaryParams) MarshalJSON

func (r InvestigatorRetrieveSummaryParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type InvestigatorRetrieveSummaryParamsScope

type InvestigatorRetrieveSummaryParamsScope string

InvestigatorRetrieveSummaryParamsScope is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorRetrieveSummaryParamsScopeAll          InvestigatorRetrieveSummaryParamsScope = "all"
	InvestigatorRetrieveSummaryParamsScopeIdentity     InvestigatorRetrieveSummaryParamsScope = "identity"
	InvestigatorRetrieveSummaryParamsScopeTransactions InvestigatorRetrieveSummaryParamsScope = "transactions"
)

Known values of InvestigatorRetrieveSummaryParamsScope.

type InvestigatorRetrieveSummaryResponse

type InvestigatorRetrieveSummaryResponse struct {
	Stage               string    `json:"stage"`
	LastReportAt        time.Time `json:"last_report_at"`
	PreparedToday       int64     `json:"prepared_today"`
	ReadyToAccept       int64     `json:"ready_to_accept"`
	Open                int64     `json:"open"`
	DecidedToday        int64     `json:"decided_today"`
	AutomationRateMonth float64   `json:"automation_rate_month"`
	Preparing           int64     `json:"preparing"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

InvestigatorRetrieveSummaryResponse is a response object.

func (*InvestigatorRetrieveSummaryResponse) UnmarshalJSON

func (r *InvestigatorRetrieveSummaryResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes InvestigatorRetrieveSummaryResponse leniently.

type InvestigatorRetrieveTransactionResponse

type InvestigatorRetrieveTransactionResponse struct {
	TransactionID string            `json:"transaction_id"`
	Investigator  InvestigatorBlock `json:"investigator"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

InvestigatorRetrieveTransactionResponse is a response object.

func (*InvestigatorRetrieveTransactionResponse) UnmarshalJSON

func (r *InvestigatorRetrieveTransactionResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes InvestigatorRetrieveTransactionResponse leniently.

type InvestigatorRunDetail

type InvestigatorRunDetail struct {
	RunID string                     `json:"run_id"`
	Kind  InvestigatorRunDetailKind  `json:"kind"`
	Queue InvestigatorRunDetailQueue `json:"queue"`
	Stage InvestigatorRunDetailStage `json:"stage"`

	// The item under review: `id`, `number`, `status`, `name` and, depending on the
	// kind, `country`, `workflow`, `vendor_data`, `txn_id`, `amount`, `currency`,
	// `direction`, `title` or `priority`.
	Subject              map[string]any                      `json:"subject"`
	Recommendation       InvestigatorRunDetailRecommendation `json:"recommendation"`
	RecommendationDetail string                              `json:"recommendation_detail"`
	Confidence           InvestigatorRunDetailConfidence     `json:"confidence"`
	Summary              string                              `json:"summary"`
	SourcesCount         int64                               `json:"sources_count"`
	ReadyToAccept        bool                                `json:"ready_to_accept"`

	// The locked guardrails that hold this item, if any.
	Guardrails   any       `json:"guardrails"`
	WaitingSince time.Time `json:"waiting_since"`
	DueAt        time.Time `json:"due_at"`
	PreparedAt   time.Time `json:"prepared_at"`
	Status       string    `json:"status"`
	IsOpen       bool      `json:"is_open"`

	// How many sections and linked records it read.
	Lookups              int64  `json:"lookups"`
	DurationMs           int64  `json:"duration_ms"`
	AgentVersion         string `json:"agent_version"`
	PreparedBeforeOpened bool   `json:"prepared_before_opened"`

	// The report: reasoning, evidence points with their verdict (`ok`, `risk`,
	// `look`, `explained`, `context`) and cited sources, screening hit verdicts
	// (`same`, `not_same`, `unclear`) and suggested next steps.
	Report map[string]any `json:"report"`

	// What I checked: the overview, sections and records it read, in order.
	Trail    any                  `json:"trail"`
	Decision InvestigatorDecision `json:"decision"`

	// What autonomy made of the report (`result`, `reason`, `tier`,
	// `policy_version`, `rule`, `agreement`, `decisions`, `threshold`, `at`). Null
	// when the queue is not automated.
	Autonomy map[string]any `json:"autonomy"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

InvestigatorRunDetail is a response object.

func (*InvestigatorRunDetail) UnmarshalJSON

func (r *InvestigatorRunDetail) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes InvestigatorRunDetail leniently.

type InvestigatorRunDetailConfidence

type InvestigatorRunDetailConfidence string

InvestigatorRunDetailConfidence is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorRunDetailConfidenceHigh     InvestigatorRunDetailConfidence = "high"
	InvestigatorRunDetailConfidenceModerate InvestigatorRunDetailConfidence = "moderate"
	InvestigatorRunDetailConfidenceLow      InvestigatorRunDetailConfidence = "low"
)

Known values of InvestigatorRunDetailConfidence.

type InvestigatorRunDetailKind

type InvestigatorRunDetailKind string

InvestigatorRunDetailKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorRunDetailKindSession         InvestigatorRunDetailKind = "session"
	InvestigatorRunDetailKindBusinessSession InvestigatorRunDetailKind = "business_session"
	InvestigatorRunDetailKindTransaction     InvestigatorRunDetailKind = "transaction"
	InvestigatorRunDetailKindCase            InvestigatorRunDetailKind = "case"
)

Known values of InvestigatorRunDetailKind.

type InvestigatorRunDetailQueue

type InvestigatorRunDetailQueue string

InvestigatorRunDetailQueue is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorRunDetailQueueKYC          InvestigatorRunDetailQueue = "kyc"
	InvestigatorRunDetailQueueKYB          InvestigatorRunDetailQueue = "kyb"
	InvestigatorRunDetailQueueAML          InvestigatorRunDetailQueue = "aml"
	InvestigatorRunDetailQueueTransactions InvestigatorRunDetailQueue = "transactions"
	InvestigatorRunDetailQueueCases        InvestigatorRunDetailQueue = "cases"
)

Known values of InvestigatorRunDetailQueue.

type InvestigatorRunDetailRecommendation

type InvestigatorRunDetailRecommendation string

InvestigatorRunDetailRecommendation is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorRunDetailRecommendationApprove  InvestigatorRunDetailRecommendation = "approve"
	InvestigatorRunDetailRecommendationDecline  InvestigatorRunDetailRecommendation = "decline"
	InvestigatorRunDetailRecommendationEscalate InvestigatorRunDetailRecommendation = "escalate"
	InvestigatorRunDetailRecommendationRequest  InvestigatorRunDetailRecommendation = "request"
)

Known values of InvestigatorRunDetailRecommendation.

type InvestigatorRunDetailStage

type InvestigatorRunDetailStage string

InvestigatorRunDetailStage is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorRunDetailStageShadow InvestigatorRunDetailStage = "shadow"
	InvestigatorRunDetailStageLive   InvestigatorRunDetailStage = "live"
)

Known values of InvestigatorRunDetailStage.

type InvestigatorService

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

InvestigatorService holds the investigator operations. Use it through Client.Investigator.

func (*InvestigatorService) AcceptRun

AcceptRun: Accept a recommendation.

Applies the recommended action through the item's normal path, so your usual webhooks fire. A `narrative` makes it edited and accepted. Restricted keys need the `decisions` scope (write); transaction alerts also need `transactions` (write). Escalating a verification or transaction opens a case.

POST /v3/investigator/runs/{run_id}/accept/

func (*InvestigatorService) BatchAcceptRuns

BatchAcceptRuns: Batch accept recommendations.

Accepts up to 50 reports marked Ready to accept. Each is its own decision: one that cannot be accepted is skipped with its reason. Restricted keys need the `decisions` scope (write); transaction alerts also need `transactions` (write). Escalating a verification or transaction opens a case.

POST /v3/investigator/runs/batch-accept/

func (*InvestigatorService) ExportActivity

ExportActivity: Export Investigator activity.

The same entries as CSV, one row per decision, newest first, up to 10,000 entries. Restricted keys need the `decisions` scope (read); transaction alerts also need `transactions`.

The response is a file (text/csv). Read it from the returned response's body and close it.

GET /v3/investigator/activity/export/

func (*InvestigatorService) ListActivity

ListActivity: List Investigator activity.

The append-only audit trail, newest first. A batch accept is one entry. Adds `counts` per group and `actors`. Restricted keys need the `decisions` scope (read); transaction alerts also need `transactions`.

It returns one page; ListActivityAutoPaging iterates over every item of every page.

GET /v3/investigator/activity/

func (*InvestigatorService) ListActivityAutoPaging

func (r *InvestigatorService) ListActivityAutoPaging(ctx context.Context, params InvestigatorListActivityParams, opts ...option.RequestOption) *PageIterator[map[string]any]

ListActivityAutoPaging iterates over every item of every page of ListActivity, fetching pages as needed.

func (*InvestigatorService) ListGuardrails

ListGuardrails: List the locked guardrails.

The five guardrails that apply to every queue. They cannot be switched off. Restricted keys need the `decisions` scope (read); transaction alerts also need `transactions`.

GET /v3/investigator/guardrails/

func (*InvestigatorService) ListQueue

ListQueue: List the Investigator queue.

Open reports, **Ready to accept** first, then by deadline, risk and wait. `counts` covers every kind in scope. `count` is capped at 100. Restricted keys need the `decisions` scope (read); transaction alerts also need `transactions`.

It returns one page; ListQueueAutoPaging iterates over every item of every page.

GET /v3/investigator/queue/

func (*InvestigatorService) ListQueueAutoPaging

ListQueueAutoPaging iterates over every item of every page of ListQueue, fetching pages as needed.

func (*InvestigatorService) OverrideRun

OverrideRun: Override a recommendation.

Takes another action with a category and a reason. Also overrides a decision the Investigator took on its own while it still stands. Restricted keys need the `decisions` scope (write); transaction alerts also need `transactions` (write). Escalating a verification or transaction opens a case.

POST /v3/investigator/runs/{run_id}/override/

func (*InvestigatorService) RetrieveDashboard

RetrieveDashboard: Investigator dashboard.

The last 30 days: reviews, decisions, automation rate, hours saved, spend, overrides, quality samples since go-live, per-queue and weekly figures. Restricted keys need the `decisions` scope (read); transaction alerts also need `transactions`.

GET /v3/investigator/dashboard/

func (*InvestigatorService) RetrievePerformance

RetrievePerformance: Investigator performance.

Agreement with your team, volume, time saved, confidence calibration, per-queue results, override reasons and disagreements for a period. Restricted keys need the `decisions` scope (read); transaction alerts also need `transactions`.

GET /v3/investigator/performance/

func (*InvestigatorService) RetrieveRun

func (r *InvestigatorService) RetrieveRun(ctx context.Context, runID string, opts ...option.RequestOption) (*InvestigatorRunDetail, error)

RetrieveRun: Get an Investigator report.

The full report of one run. 404 when the run has no completed report, or its item was deleted. Restricted keys need the `decisions` scope (read); transaction alerts also need `transactions`.

GET /v3/investigator/runs/{run_id}/

func (*InvestigatorService) RetrieveSettings

func (r *InvestigatorService) RetrieveSettings(ctx context.Context, opts ...option.RequestOption) (*InvestigatorSettings, error)

RetrieveSettings: Get Investigator settings.

The stage (`none`, `shadow` or `live`) and the monthly spend limit with this month's spend. Restricted keys need the `applications` scope (read).

GET /v3/investigator/settings/

func (*InvestigatorService) RetrieveSummary

RetrieveSummary: Investigator summary.

Stage, queue counts, reports prepared and decided today, 30-day agreement, prices and the autonomy level of each queue. Restricted keys need the `decisions` scope (read); transaction alerts also need `transactions`.

GET /v3/investigator/summary/

func (*InvestigatorService) RetrieveTransaction

func (r *InvestigatorService) RetrieveTransaction(ctx context.Context, transactionID string, opts ...option.RequestOption) (*InvestigatorRetrieveTransactionResponse, error)

RetrieveTransaction: Get a transaction's Investigator review.

The transaction's latest review, or `investigator: null` when it never had one. Restricted keys need the `decisions` and `transactions` scopes (read).

GET /v3/investigator/transactions/{transaction_id}/

func (*InvestigatorService) UpdateSettings

UpdateSettings: Update Investigator settings.

Change the stage, the monthly spend limit, or both. Moving past `none` needs a plan that includes the Investigator (Growth or higher); `live` also needs a contract that prices it, if you have one. Restricted keys need the `applications` scope (write).

PATCH /v3/investigator/settings/

type InvestigatorSettings

type InvestigatorSettings struct {
	Stage          InvestigatorSettingsStage `json:"stage"`
	StageChangedAt time.Time                 `json:"stage_changed_at"`
	StageChangedBy string                    `json:"stage_changed_by"`

	// Monthly limit in your billing currency, 0.01 to 1,000,000. Null turns it off.
	MonthlySpendLimit string                         `json:"monthly_spend_limit"`
	SpendLimit        InvestigatorSettingsSpendLimit `json:"spend_limit"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

InvestigatorSettings is a response object.

func (*InvestigatorSettings) UnmarshalJSON

func (r *InvestigatorSettings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes InvestigatorSettings leniently.

type InvestigatorSettingsParam

type InvestigatorSettingsParam struct {
	Stage Opt[InvestigatorSettingsStage] `json:"stage"`

	// Monthly limit in your billing currency, 0.01 to 1,000,000. Null turns it off.
	MonthlySpendLimit Opt[string] `json:"monthly_spend_limit"`
}

InvestigatorSettingsParam is a request object.

func (InvestigatorSettingsParam) MarshalJSON

func (r InvestigatorSettingsParam) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type InvestigatorSettingsSpendLimit

type InvestigatorSettingsSpendLimit struct {
	Enabled bool   `json:"enabled"`
	Limit   string `json:"limit"`
	Spent   string `json:"spent"`
	Reviews int64  `json:"reviews"`

	// The price of every open live report, held back because accepting it charges
	// it.
	Reserved string `json:"reserved"`
	Currency string `json:"currency"`

	// At the limit: no new review starts.
	Paused bool `json:"paused"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

InvestigatorSettingsSpendLimit is a response object.

func (*InvestigatorSettingsSpendLimit) UnmarshalJSON

func (r *InvestigatorSettingsSpendLimit) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes InvestigatorSettingsSpendLimit leniently.

type InvestigatorSettingsStage

type InvestigatorSettingsStage string

InvestigatorSettingsStage is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	InvestigatorSettingsStageNone   InvestigatorSettingsStage = "none"
	InvestigatorSettingsStageShadow InvestigatorSettingsStage = "shadow"
	InvestigatorSettingsStageLive   InvestigatorSettingsStage = "live"
)

Known values of InvestigatorSettingsStage.

type KYBKeyPeopleParty

type KYBKeyPeopleParty struct {
	// Party identifier.
	UUID string `json:"uuid"`

	// Whether the party is an individual or a company.
	EntityType KYBKeyPeoplePartyEntityType `json:"entity_type"`

	// `REGISTRY`: taken from the company registry. `USER`: entered in the Key
	// People screen.
	Source KYBKeyPeoplePartySource `json:"source"`

	// Display name of the party.
	Name string `json:"name"`

	// First name (persons).
	FirstName string `json:"first_name"`

	// Last name (persons).
	LastName string `json:"last_name"`

	// Company name (company parties).
	CompanyName string `json:"company_name"`

	// Company registration number (company parties).
	RegistrationNumber string `json:"registration_number"`

	// Email the verification link is sent to.
	Email string `json:"email"`

	// Nationality for persons, country of incorporation for companies.
	Nationality string `json:"nationality"`

	// Phone number collected for the party.
	PhoneNumber string `json:"phone_number"`

	// Date of birth (persons).
	DateOfBirth string `json:"date_of_birth"`

	// Free-text job title (persons).
	Position string `json:"position"`

	// Workflow-defined custom fields collected for the party, keyed by field key.
	CustomFields map[string]any `json:"custom_fields"`

	// Whether the party is active.
	IsActive bool `json:"is_active"`

	// Whether the party is exempt from verification. Regenerating clears it.
	IsSkipped bool `json:"is_skipped"`

	// Whether the role and ownership rules require a verification for this party.
	RequiresVerification bool `json:"requires_verification"`

	// Roles the party holds in the company.
	Roles []KYBKeyPeoplePartyRoles `json:"roles"`

	// Child individual KYC session (persons).
	KYCSessionID string `json:"kyc_session_id"`

	// Status of the child KYC session. A deleted session keeps the status it had
	// when it was deleted.
	KYCSessionStatus KYBKeyPeoplePartyKYCSessionStatus `json:"kyc_session_status"`

	// Hosted link of the child KYC session. `null` when there is none or it was
	// deleted, and for a scoped API key without `sessions: write`.
	KYCSessionURL string `json:"kyc_session_url"`

	// The child KYC session was deleted, so it can never settle.
	KYCSessionDeleted bool `json:"kyc_session_deleted"`

	// Child KYB session (company parties).
	KYBSubSessionID string `json:"kyb_sub_session_id"`

	// Status of the child KYB session.
	KYBSubSessionStatus KYBKeyPeoplePartyKYBSubSessionStatus `json:"kyb_sub_session_status"`

	// Hosted link of the child KYB session, with the same `null` rules as
	// `kyc_session_url`.
	KYBSubSessionURL string `json:"kyb_sub_session_url"`

	// Company-party counterpart of `kyc_session_deleted`.
	KYBSubSessionDeleted bool `json:"kyb_sub_session_deleted"`

	// Type of the workflow the child session runs.
	VerificationWorkflowType KYBKeyPeoplePartyVerificationWorkflowType `json:"verification_workflow_type"`

	// Workflow the child session runs.
	VerificationWorkflowID string `json:"verification_workflow_id"`

	// Label of that workflow.
	VerificationWorkflowLabel string `json:"verification_workflow_label"`

	// Features of the child session's workflow with their current status.
	VerificationWorkflowFeatures []KYBKeyPeoplePartyVerificationWorkflowFeatures `json:"verification_workflow_features"`

	// Didit's identifier of the verified person, once known.
	DiditInternalID string `json:"didit_internal_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBKeyPeopleParty: A Key People party of a Business Verification (KYB) session, with its child verification. The same party appears in `key_people_checks[].submitted.parties[]` of the business session decision.

func (*KYBKeyPeopleParty) UnmarshalJSON

func (r *KYBKeyPeopleParty) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBKeyPeopleParty leniently.

type KYBKeyPeoplePartyEntityType

type KYBKeyPeoplePartyEntityType string

KYBKeyPeoplePartyEntityType: Whether the party is an individual or a company.

KYBKeyPeoplePartyEntityType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBKeyPeoplePartyEntityTypePerson  KYBKeyPeoplePartyEntityType = "person"
	KYBKeyPeoplePartyEntityTypeCompany KYBKeyPeoplePartyEntityType = "company"
)

Known values of KYBKeyPeoplePartyEntityType.

type KYBKeyPeoplePartyKYBSubSessionStatus

type KYBKeyPeoplePartyKYBSubSessionStatus string

KYBKeyPeoplePartyKYBSubSessionStatus: Status of the child KYB session.

KYBKeyPeoplePartyKYBSubSessionStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBKeyPeoplePartyKYBSubSessionStatusNotStarted   KYBKeyPeoplePartyKYBSubSessionStatus = "Not Started"
	KYBKeyPeoplePartyKYBSubSessionStatusInProgress   KYBKeyPeoplePartyKYBSubSessionStatus = "In Progress"
	KYBKeyPeoplePartyKYBSubSessionStatusApproved     KYBKeyPeoplePartyKYBSubSessionStatus = "Approved"
	KYBKeyPeoplePartyKYBSubSessionStatusDeclined     KYBKeyPeoplePartyKYBSubSessionStatus = "Declined"
	KYBKeyPeoplePartyKYBSubSessionStatusInReview     KYBKeyPeoplePartyKYBSubSessionStatus = "In Review"
	KYBKeyPeoplePartyKYBSubSessionStatusExpired      KYBKeyPeoplePartyKYBSubSessionStatus = "Expired"
	KYBKeyPeoplePartyKYBSubSessionStatusAbandoned    KYBKeyPeoplePartyKYBSubSessionStatus = "Abandoned"
	KYBKeyPeoplePartyKYBSubSessionStatusKYCExpired   KYBKeyPeoplePartyKYBSubSessionStatus = "Kyc Expired"
	KYBKeyPeoplePartyKYBSubSessionStatusResubmitted  KYBKeyPeoplePartyKYBSubSessionStatus = "Resubmitted"
	KYBKeyPeoplePartyKYBSubSessionStatusAwaitingUser KYBKeyPeoplePartyKYBSubSessionStatus = "Awaiting User"
)

Known values of KYBKeyPeoplePartyKYBSubSessionStatus.

type KYBKeyPeoplePartyKYCSessionStatus

type KYBKeyPeoplePartyKYCSessionStatus string

KYBKeyPeoplePartyKYCSessionStatus: Status of the child KYC session. A deleted session keeps the status it had when it was deleted.

KYBKeyPeoplePartyKYCSessionStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBKeyPeoplePartyKYCSessionStatusNotStarted   KYBKeyPeoplePartyKYCSessionStatus = "Not Started"
	KYBKeyPeoplePartyKYCSessionStatusInProgress   KYBKeyPeoplePartyKYCSessionStatus = "In Progress"
	KYBKeyPeoplePartyKYCSessionStatusApproved     KYBKeyPeoplePartyKYCSessionStatus = "Approved"
	KYBKeyPeoplePartyKYCSessionStatusDeclined     KYBKeyPeoplePartyKYCSessionStatus = "Declined"
	KYBKeyPeoplePartyKYCSessionStatusInReview     KYBKeyPeoplePartyKYCSessionStatus = "In Review"
	KYBKeyPeoplePartyKYCSessionStatusExpired      KYBKeyPeoplePartyKYCSessionStatus = "Expired"
	KYBKeyPeoplePartyKYCSessionStatusAbandoned    KYBKeyPeoplePartyKYCSessionStatus = "Abandoned"
	KYBKeyPeoplePartyKYCSessionStatusKYCExpired   KYBKeyPeoplePartyKYCSessionStatus = "Kyc Expired"
	KYBKeyPeoplePartyKYCSessionStatusResubmitted  KYBKeyPeoplePartyKYCSessionStatus = "Resubmitted"
	KYBKeyPeoplePartyKYCSessionStatusAwaitingUser KYBKeyPeoplePartyKYCSessionStatus = "Awaiting User"
)

Known values of KYBKeyPeoplePartyKYCSessionStatus.

type KYBKeyPeoplePartyRoles

type KYBKeyPeoplePartyRoles struct {
	// Role code.
	Role KYBKeyPeoplePartyRolesRole `json:"role"`

	// Ownership percentage for this role, when known.
	OwnershipPercent float64 `json:"ownership_percent"`

	// Voting-rights percentage for this role, when known.
	VotingPercent float64 `json:"voting_percent"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBKeyPeoplePartyRoles is a response object.

func (*KYBKeyPeoplePartyRoles) UnmarshalJSON

func (r *KYBKeyPeoplePartyRoles) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBKeyPeoplePartyRoles leniently.

type KYBKeyPeoplePartyRolesRole

type KYBKeyPeoplePartyRolesRole string

KYBKeyPeoplePartyRolesRole: Role code.

KYBKeyPeoplePartyRolesRole is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBKeyPeoplePartyRolesRoleDirector             KYBKeyPeoplePartyRolesRole = "director"
	KYBKeyPeoplePartyRolesRoleNonExecutiveDirector KYBKeyPeoplePartyRolesRole = "non_executive_director"
	KYBKeyPeoplePartyRolesRoleSecretary            KYBKeyPeoplePartyRolesRole = "secretary"
	KYBKeyPeoplePartyRolesRoleChairman             KYBKeyPeoplePartyRolesRole = "chairman"
	KYBKeyPeoplePartyRolesRoleUBO                  KYBKeyPeoplePartyRolesRole = "ubo"
	KYBKeyPeoplePartyRolesRoleShareholder          KYBKeyPeoplePartyRolesRole = "shareholder"
	KYBKeyPeoplePartyRolesRoleRepresentative       KYBKeyPeoplePartyRolesRole = "representative"
	KYBKeyPeoplePartyRolesRoleFounder              KYBKeyPeoplePartyRolesRole = "founder"
	KYBKeyPeoplePartyRolesRoleLegalAdvisor         KYBKeyPeoplePartyRolesRole = "legal_advisor"
	KYBKeyPeoplePartyRolesRoleAuthorizedSignatory  KYBKeyPeoplePartyRolesRole = "authorized_signatory"
	KYBKeyPeoplePartyRolesRoleTrustee              KYBKeyPeoplePartyRolesRole = "trustee"
	KYBKeyPeoplePartyRolesRoleBeneficiary          KYBKeyPeoplePartyRolesRole = "beneficiary"
	KYBKeyPeoplePartyRolesRoleSettlor              KYBKeyPeoplePartyRolesRole = "settlor"
	KYBKeyPeoplePartyRolesRoleProtector            KYBKeyPeoplePartyRolesRole = "protector"
	KYBKeyPeoplePartyRolesRoleCompanyOfficer       KYBKeyPeoplePartyRolesRole = "company_officer"
	KYBKeyPeoplePartyRolesRoleInvestor             KYBKeyPeoplePartyRolesRole = "investor"
	KYBKeyPeoplePartyRolesRoleOther                KYBKeyPeoplePartyRolesRole = "other"
)

Known values of KYBKeyPeoplePartyRolesRole.

type KYBKeyPeoplePartySource

type KYBKeyPeoplePartySource string

KYBKeyPeoplePartySource: `REGISTRY`: taken from the company registry. `USER`: entered in the Key People screen.

KYBKeyPeoplePartySource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBKeyPeoplePartySourceRegistry KYBKeyPeoplePartySource = "REGISTRY"
	KYBKeyPeoplePartySourceUser     KYBKeyPeoplePartySource = "USER"
)

Known values of KYBKeyPeoplePartySource.

type KYBKeyPeoplePartyVerificationWorkflowFeatures

type KYBKeyPeoplePartyVerificationWorkflowFeatures struct {
	// Feature code, for example `ID_VERIFICATION` or `LIVENESS`.
	Feature string `json:"feature"`

	// Feature status, `Not Finished` until it runs.
	Status string `json:"status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBKeyPeoplePartyVerificationWorkflowFeatures is a response object.

func (*KYBKeyPeoplePartyVerificationWorkflowFeatures) UnmarshalJSON

func (r *KYBKeyPeoplePartyVerificationWorkflowFeatures) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBKeyPeoplePartyVerificationWorkflowFeatures leniently.

type KYBKeyPeoplePartyVerificationWorkflowType

type KYBKeyPeoplePartyVerificationWorkflowType string

KYBKeyPeoplePartyVerificationWorkflowType: Type of the workflow the child session runs.

KYBKeyPeoplePartyVerificationWorkflowType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBKeyPeoplePartyVerificationWorkflowTypeKYC                       KYBKeyPeoplePartyVerificationWorkflowType = "kyc"
	KYBKeyPeoplePartyVerificationWorkflowTypeKYB                       KYBKeyPeoplePartyVerificationWorkflowType = "kyb"
	KYBKeyPeoplePartyVerificationWorkflowTypeAdaptiveAgeVerification   KYBKeyPeoplePartyVerificationWorkflowType = "adaptive_age_verification"
	KYBKeyPeoplePartyVerificationWorkflowTypeBiometricAuthentication   KYBKeyPeoplePartyVerificationWorkflowType = "biometric_authentication"
	KYBKeyPeoplePartyVerificationWorkflowTypeAddressVerification       KYBKeyPeoplePartyVerificationWorkflowType = "address_verification"
	KYBKeyPeoplePartyVerificationWorkflowTypeQuestionnaireVerification KYBKeyPeoplePartyVerificationWorkflowType = "questionnaire_verification"
	KYBKeyPeoplePartyVerificationWorkflowTypeEmailVerification         KYBKeyPeoplePartyVerificationWorkflowType = "email_verification"
	KYBKeyPeoplePartyVerificationWorkflowTypePhoneVerification         KYBKeyPeoplePartyVerificationWorkflowType = "phone_verification"
)

Known values of KYBKeyPeoplePartyVerificationWorkflowType.

type KYBListShareholdersResponse

type KYBListShareholdersResponse struct {
	// Id of the business session created for this retrieval. The stored record
	// (visible in the console) keeps updating if the registry resolves after the
	// response.
	RequestID string `json:"request_id"`

	// The tier this endpoint sells: `basic` (Lite) for select, `shareholders`,
	// `ubo`.
	RegistryTierRequested KYBListShareholdersResponseRegistryTierRequested `json:"registry_tier_requested"`

	// The tier actually delivered and billed. Lower than requested when the
	// country's registries hold no ownership data, or the registry has no ownership
	// record for this company.
	RegistryTierDelivered KYBListShareholdersResponseRegistryTierDelivered `json:"registry_tier_delivered"`

	// Full registry company profile.
	KYBRegistry KYBListShareholdersResponseKYBRegistry `json:"kyb_registry"`

	// Echo of the `vendor_data` you sent.
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` you sent.
	Metadata  map[string]any `json:"metadata"`
	CreatedAt time.Time      `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBListShareholdersResponse is a response object.

func (*KYBListShareholdersResponse) UnmarshalJSON

func (r *KYBListShareholdersResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBListShareholdersResponse leniently.

type KYBListShareholdersResponseKYBRegistry

type KYBListShareholdersResponseKYBRegistry struct {
	// Didit's id for this company record.
	UUID   string `json:"uuid"`
	NodeID string `json:"node_id"`

	// Didit's assessment of the registry check (e.g. `In Review` when the company
	// is not active in the registry or ownership data could not be derived).
	Status KYBListShareholdersResponseKYBRegistryStatus `json:"status"`

	// Normalized company status as reported by the registry.
	RegistryStatus KYBListShareholdersResponseKYBRegistryRegistryStatus `json:"registry_status"`

	// `true` once the registry returned the full profile. `false` when the registry
	// was still processing after polling - the stored record completes
	// automatically once the registry resolves.
	DataResolved       bool   `json:"data_resolved"`
	CompanyName        string `json:"company_name"`
	RegistrationNumber string `json:"registration_number"`

	// ISO 3166-1 alpha-2.
	CountryCode string `json:"country_code"`

	// Subdivision code when the registry is regional (e.g. `CA` for `US-CA`); empty
	// otherwise.
	Region            string `json:"region"`
	CompanyType       string `json:"company_type"`
	IncorporationDate string `json:"incorporation_date"`
	RegisteredAddress string `json:"registered_address"`
	TaxNumber         string `json:"tax_number"`

	// Registry-reported risk level, when available.
	RiskLevel string `json:"risk_level"`

	// Registry verification status, when available.
	VerificationStatus string `json:"verification_status"`

	// Always `true` for this endpoint - the profile was retrieved from an official
	// registry.
	IsFromRegistry bool `json:"is_from_registry"`

	// Registry fetch lifecycle. Mirrored by `data_resolved`.
	FetchStatus KYBListShareholdersResponseKYBRegistryFetchStatus `json:"fetch_status"`

	// Alternative, trading, former or original-language company names as text, when
	// reported.
	AlternativeNames string `json:"alternative_names"`

	// Activity description or classification code, when reported.
	NatureOfBusiness  string `json:"nature_of_business"`
	RegisteredCapital string `json:"registered_capital"`

	// Decimal amount as a string, when reported.
	RegisteredCapitalAmount string `json:"registered_capital_amount"`

	// ISO 4217 code, when reported.
	RegisteredCapitalCurrency string `json:"registered_capital_currency"`
	Website                   string `json:"website"`
	Email                     string `json:"email"`
	Phone                     string `json:"phone"`

	// LEI, when reported.
	LegalEntityIdentifier string `json:"legal_entity_identifier"`

	// Registry/jurisdiction the company is registered with, when reported.
	LocationOfRegistration string `json:"location_of_registration"`

	// EU VAT number, when collected during the hosted registry step or edited
	// afterwards. At select time this is typically not yet set - VAT and tax ID
	// validation runs when the end user submits the registry step in the hosted
	// flow.
	VATNumber string `json:"vat_number"`

	// Result of validating the VAT number or, when there is none, the `tax_number`,
	// at registry submit. `valid` / `invalid`: decided by the official registry of
	// the country (EU VIES, Norway, Switzerland, Brazil, Colombia, Costa Rica,
	// Ecuador, Paraguay; Poland also by its domestic VAT register). `format_valid`
	// / `invalid_format`: decided by the country's format and check-digit rules
	// where no registry can be queried. `could_not_validate`: the registry was
	// unavailable. `not_applicable`: no number, a country without registry or
	// rules, or a sandbox session.
	VATValidationStatus KYBListShareholdersResponseKYBRegistryVATValidationStatus `json:"vat_validation_status"`

	// The number that was checked, as the source knows it (for example the VAT
	// number derived from a French SIREN or a Dutch RSIN). `null` when no check
	// ran.
	VATValidatedNumber string `json:"vat_validated_number"`

	// The source that decided `vat_validation_status`: an official registry, or
	// `format_rules`. `null` when no check ran.
	VATValidationSource KYBListShareholdersResponseKYBRegistryVATValidationSource `json:"vat_validation_source"`

	// Name registered with the source that validated the number, when it discloses
	// one. Only set when the status is `valid`.
	VATValidatedName string `json:"vat_validated_name"`

	// Address registered with the source that validated the number, when it
	// discloses one. Only set when the status is `valid`.
	VATValidatedAddress string `json:"vat_validated_address"`

	// Timestamp of the check. `null` when no check ran.
	VATCheckedAt time.Time `json:"vat_checked_at"`

	// Registry-reported share/capital details (currency, total shares, share
	// classes), when available.
	FinancialSummary map[string]any `json:"financial_summary"`

	// Directors, secretaries, and other officers extracted from the registry.
	Officers []KYBListShareholdersResponseKYBRegistryOfficers `json:"officers"`

	// Beneficial owners / persons with significant control extracted from the
	// registry. Can be empty when the registry does not expose ownership.
	BeneficialOwners []KYBListShareholdersResponseKYBRegistryBeneficialOwners `json:"beneficial_owners"`

	// Every address the registry states, one canonical shape. Null when it states
	// none.
	Addresses []KYBRegistryAddress `json:"addresses"`

	// The activities the registry classifies the company under, one canonical
	// shape. Null when it states none.
	Industries []KYBRegistryIndustry `json:"industries"`

	// Registry filing dates, when available. Annual returns and general meetings
	// use last_annual_return_date and last_agm_date; they are distinct from
	// financial accounts.
	Accounts map[string]any `json:"accounts"`

	// Raw record returned by the registry source, kept for reviewers. Its shape
	// differs by country and source and is not a stable contract: read the
	// canonical fields (`addresses`, `industries`, `ownership`,
	// `beneficial_owners[].shareholding`) instead.
	RegistryData map[string]any `json:"registry_data"`

	// Always `null` on this endpoint (used by the hosted KYB flow when end users
	// edit registry data).
	UserProvidedData map[string]any `json:"user_provided_data"`

	// Always `null` on this endpoint.
	ConfirmedByUserAt time.Time `json:"confirmed_by_user_at"`

	// Set when a console reviewer edits the record later.
	LastConsoleEditAt time.Time `json:"last_console_edit_at"`

	// Whether the registry-sourced data can still be edited in the hosted
	// flow/console.
	IsEditable bool `json:"is_editable"`

	// Same as the top-level `registry_tier_delivered`.
	RegistryTierDelivered KYBListShareholdersResponseKYBRegistryRegistryTierDelivered `json:"registry_tier_delivered"`

	// `delivered` when the ownership data came back, `unavailable` when an
	// ownership tier was requested but the registry had none for this company (see
	// `registry_data.ownership_error`), `pending` when the ownership section has
	// not been retrieved from the registry yet and Didit is still completing it,
	// `not_requested` on the Lite tier.
	RegistryOwnershipStatus KYBListShareholdersResponseKYBRegistryRegistryOwnershipStatus `json:"registry_ownership_status"`
	Ownership               KYBRegistryOwnership                                          `json:"ownership"`

	// The registry tier the workflow ordered: `basic`, `shareholders` or `ubo`.
	// Also in `ownership.tier_requested`.
	RegistryTier string `json:"registry_tier"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBListShareholdersResponseKYBRegistry: Full registry company profile.

func (*KYBListShareholdersResponseKYBRegistry) UnmarshalJSON

func (r *KYBListShareholdersResponseKYBRegistry) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBListShareholdersResponseKYBRegistry leniently.

type KYBListShareholdersResponseKYBRegistryBeneficialOwners

type KYBListShareholdersResponseKYBRegistryBeneficialOwners struct {
	UUID      string `json:"uuid"`
	Name      string `json:"name"`
	FirstName string `json:"first_name"`
	LastName  string `json:"last_name"`

	// Whether the owner is a natural person or a corporate entity.
	EntityType KYBListShareholdersResponseKYBRegistryBeneficialOwnersEntityType `json:"entity_type"`

	// Normalized roles (e.g. `ubo`, `shareholder`).
	Roles []string `json:"roles"`

	// Lower bound of the ownership band reported by the registry (e.g. `25%`).
	OwnershipMinShares string `json:"ownership_min_shares"`

	// Upper bound of the ownership band reported by the registry.
	OwnershipMaxShares string                                                          `json:"ownership_max_shares"`
	IsActive           bool                                                            `json:"is_active"`
	KYCStatus          KYBListShareholdersResponseKYBRegistryBeneficialOwnersKYCStatus `json:"kyc_status"`
	KYCSessionURL      string                                                          `json:"kyc_session_url"`

	// Parsed ownership percentage (max bound, falling back to min bound).
	EffectiveOwnershipPercent float64 `json:"effective_ownership_percent"`
	CompanyName               string  `json:"company_name"`
	RegistrationNumber        string  `json:"registration_number"`
	CountryOfBirth            string  `json:"country_of_birth"`
	Email                     string  `json:"email"`
	Nationality               string  `json:"nationality"`
	Designation               string  `json:"designation"`
	VotingMinShares           string  `json:"voting_min_shares"`
	VotingMaxShares           string  `json:"voting_max_shares"`

	// Complete birth date when reported.
	DateOfBirth string `json:"date_of_birth"`

	// Appointment date when reported.
	AppointmentDate string                  `json:"appointment_date"`
	Shareholding    KYBRegistryShareholding `json:"shareholding"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBListShareholdersResponseKYBRegistryBeneficialOwners is a response object.

func (*KYBListShareholdersResponseKYBRegistryBeneficialOwners) UnmarshalJSON

UnmarshalJSON decodes KYBListShareholdersResponseKYBRegistryBeneficialOwners leniently.

type KYBListShareholdersResponseKYBRegistryBeneficialOwnersEntityType

type KYBListShareholdersResponseKYBRegistryBeneficialOwnersEntityType string

KYBListShareholdersResponseKYBRegistryBeneficialOwnersEntityType: Whether the owner is a natural person or a corporate entity.

KYBListShareholdersResponseKYBRegistryBeneficialOwnersEntityType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListShareholdersResponseKYBRegistryBeneficialOwnersEntityTypePerson  KYBListShareholdersResponseKYBRegistryBeneficialOwnersEntityType = "person"
	KYBListShareholdersResponseKYBRegistryBeneficialOwnersEntityTypeCompany KYBListShareholdersResponseKYBRegistryBeneficialOwnersEntityType = "company"
)

Known values of KYBListShareholdersResponseKYBRegistryBeneficialOwnersEntityType.

type KYBListShareholdersResponseKYBRegistryBeneficialOwnersKYCStatus

type KYBListShareholdersResponseKYBRegistryBeneficialOwnersKYCStatus string

KYBListShareholdersResponseKYBRegistryBeneficialOwnersKYCStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListShareholdersResponseKYBRegistryBeneficialOwnersKYCStatusApproved KYBListShareholdersResponseKYBRegistryBeneficialOwnersKYCStatus = "Approved"
	KYBListShareholdersResponseKYBRegistryBeneficialOwnersKYCStatusDeclined KYBListShareholdersResponseKYBRegistryBeneficialOwnersKYCStatus = "Declined"
	KYBListShareholdersResponseKYBRegistryBeneficialOwnersKYCStatusPending  KYBListShareholdersResponseKYBRegistryBeneficialOwnersKYCStatus = "Pending"
)

Known values of KYBListShareholdersResponseKYBRegistryBeneficialOwnersKYCStatus.

type KYBListShareholdersResponseKYBRegistryFetchStatus

type KYBListShareholdersResponseKYBRegistryFetchStatus string

KYBListShareholdersResponseKYBRegistryFetchStatus: Registry fetch lifecycle. Mirrored by `data_resolved`.

KYBListShareholdersResponseKYBRegistryFetchStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListShareholdersResponseKYBRegistryFetchStatusPending  KYBListShareholdersResponseKYBRegistryFetchStatus = "pending"
	KYBListShareholdersResponseKYBRegistryFetchStatusResolved KYBListShareholdersResponseKYBRegistryFetchStatus = "resolved"
)

Known values of KYBListShareholdersResponseKYBRegistryFetchStatus.

type KYBListShareholdersResponseKYBRegistryOfficers

type KYBListShareholdersResponseKYBRegistryOfficers struct {
	UUID string `json:"uuid"`
	Name string `json:"name"`

	// Raw registry designation (e.g. `Director`, `Secretary`).
	Designation string `json:"designation"`

	// Normalized role derived from the designation. Full 17-value model set;
	// registry parsing on this endpoint typically emits director,
	// non_executive_director, secretary, chairman, or company_officer.
	Role        KYBListShareholdersResponseKYBRegistryOfficersRole `json:"role"`
	Nationality string                                             `json:"nationality"`

	// `false` when the registry marks the appointment as resigned.
	IsActive bool `json:"is_active"`

	// Status of an associated KYC session, when one was started for this officer.
	// `null` otherwise.
	KYCStatus KYBListShareholdersResponseKYBRegistryOfficersKYCStatus `json:"kyc_status"`

	// Verification URL of the associated KYC session, when one exists.
	KYCSessionURL string `json:"kyc_session_url"`

	// Given name when explicitly reported by the registry; not inferred from the
	// full name.
	FirstName string `json:"first_name"`

	// Family name when explicitly reported by the registry.
	LastName string `json:"last_name"`

	// Officer address reported by the registry.
	Address string `json:"address"`

	// Date the officer was appointed.
	AppointmentDate string `json:"appointment_date"`

	// Date the appointment ended, when reported.
	TerminationDate string `json:"termination_date"`

	// Complete registry-reported birth date. Null when only a birth year or month
	// is known.
	DateOfBirth string `json:"date_of_birth"`

	// Registry-reported birth year, including when the full date is unavailable.
	DateOfBirthYear int64 `json:"date_of_birth_year"`

	// Registry-reported birth month. Null when only the year is known.
	DateOfBirthMonth int64 `json:"date_of_birth_month"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBListShareholdersResponseKYBRegistryOfficers is a response object.

func (*KYBListShareholdersResponseKYBRegistryOfficers) UnmarshalJSON

UnmarshalJSON decodes KYBListShareholdersResponseKYBRegistryOfficers leniently.

type KYBListShareholdersResponseKYBRegistryOfficersKYCStatus

type KYBListShareholdersResponseKYBRegistryOfficersKYCStatus string

KYBListShareholdersResponseKYBRegistryOfficersKYCStatus: Status of an associated KYC session, when one was started for this officer. `null` otherwise.

KYBListShareholdersResponseKYBRegistryOfficersKYCStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListShareholdersResponseKYBRegistryOfficersKYCStatusApproved KYBListShareholdersResponseKYBRegistryOfficersKYCStatus = "Approved"
	KYBListShareholdersResponseKYBRegistryOfficersKYCStatusDeclined KYBListShareholdersResponseKYBRegistryOfficersKYCStatus = "Declined"
	KYBListShareholdersResponseKYBRegistryOfficersKYCStatusPending  KYBListShareholdersResponseKYBRegistryOfficersKYCStatus = "Pending"
)

Known values of KYBListShareholdersResponseKYBRegistryOfficersKYCStatus.

type KYBListShareholdersResponseKYBRegistryOfficersRole

type KYBListShareholdersResponseKYBRegistryOfficersRole string

KYBListShareholdersResponseKYBRegistryOfficersRole: Normalized role derived from the designation. Full 17-value model set; registry parsing on this endpoint typically emits director, non_executive_director, secretary, chairman, or company_officer.

KYBListShareholdersResponseKYBRegistryOfficersRole is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListShareholdersResponseKYBRegistryOfficersRoleDirector             KYBListShareholdersResponseKYBRegistryOfficersRole = "director"
	KYBListShareholdersResponseKYBRegistryOfficersRoleNonExecutiveDirector KYBListShareholdersResponseKYBRegistryOfficersRole = "non_executive_director"
	KYBListShareholdersResponseKYBRegistryOfficersRoleSecretary            KYBListShareholdersResponseKYBRegistryOfficersRole = "secretary"
	KYBListShareholdersResponseKYBRegistryOfficersRoleChairman             KYBListShareholdersResponseKYBRegistryOfficersRole = "chairman"
	KYBListShareholdersResponseKYBRegistryOfficersRoleUBO                  KYBListShareholdersResponseKYBRegistryOfficersRole = "ubo"
	KYBListShareholdersResponseKYBRegistryOfficersRoleShareholder          KYBListShareholdersResponseKYBRegistryOfficersRole = "shareholder"
	KYBListShareholdersResponseKYBRegistryOfficersRoleRepresentative       KYBListShareholdersResponseKYBRegistryOfficersRole = "representative"
	KYBListShareholdersResponseKYBRegistryOfficersRoleFounder              KYBListShareholdersResponseKYBRegistryOfficersRole = "founder"
	KYBListShareholdersResponseKYBRegistryOfficersRoleLegalAdvisor         KYBListShareholdersResponseKYBRegistryOfficersRole = "legal_advisor"
	KYBListShareholdersResponseKYBRegistryOfficersRoleAuthorizedSignatory  KYBListShareholdersResponseKYBRegistryOfficersRole = "authorized_signatory"
	KYBListShareholdersResponseKYBRegistryOfficersRoleTrustee              KYBListShareholdersResponseKYBRegistryOfficersRole = "trustee"
	KYBListShareholdersResponseKYBRegistryOfficersRoleBeneficiary          KYBListShareholdersResponseKYBRegistryOfficersRole = "beneficiary"
	KYBListShareholdersResponseKYBRegistryOfficersRoleCompanyOfficer       KYBListShareholdersResponseKYBRegistryOfficersRole = "company_officer"
	KYBListShareholdersResponseKYBRegistryOfficersRoleSettlor              KYBListShareholdersResponseKYBRegistryOfficersRole = "settlor"
	KYBListShareholdersResponseKYBRegistryOfficersRoleProtector            KYBListShareholdersResponseKYBRegistryOfficersRole = "protector"
	KYBListShareholdersResponseKYBRegistryOfficersRoleInvestor             KYBListShareholdersResponseKYBRegistryOfficersRole = "investor"
	KYBListShareholdersResponseKYBRegistryOfficersRoleOther                KYBListShareholdersResponseKYBRegistryOfficersRole = "other"
)

Known values of KYBListShareholdersResponseKYBRegistryOfficersRole.

type KYBListShareholdersResponseKYBRegistryRegistryOwnershipStatus

type KYBListShareholdersResponseKYBRegistryRegistryOwnershipStatus string

KYBListShareholdersResponseKYBRegistryRegistryOwnershipStatus: `delivered` when the ownership data came back, `unavailable` when an ownership tier was requested but the registry had none for this company (see `registry_data.ownership_error`), `pending` when the ownership section has not been retrieved from the registry yet and Didit is still completing it, `not_requested` on the Lite tier.

KYBListShareholdersResponseKYBRegistryRegistryOwnershipStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListShareholdersResponseKYBRegistryRegistryOwnershipStatusNotRequested KYBListShareholdersResponseKYBRegistryRegistryOwnershipStatus = "not_requested"
	KYBListShareholdersResponseKYBRegistryRegistryOwnershipStatusDelivered    KYBListShareholdersResponseKYBRegistryRegistryOwnershipStatus = "delivered"
	KYBListShareholdersResponseKYBRegistryRegistryOwnershipStatusUnavailable  KYBListShareholdersResponseKYBRegistryRegistryOwnershipStatus = "unavailable"
	KYBListShareholdersResponseKYBRegistryRegistryOwnershipStatusPending      KYBListShareholdersResponseKYBRegistryRegistryOwnershipStatus = "pending"
)

Known values of KYBListShareholdersResponseKYBRegistryRegistryOwnershipStatus.

type KYBListShareholdersResponseKYBRegistryRegistryStatus

type KYBListShareholdersResponseKYBRegistryRegistryStatus string

KYBListShareholdersResponseKYBRegistryRegistryStatus: Normalized company status as reported by the registry.

KYBListShareholdersResponseKYBRegistryRegistryStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListShareholdersResponseKYBRegistryRegistryStatusActive                  KYBListShareholdersResponseKYBRegistryRegistryStatus = "active"
	KYBListShareholdersResponseKYBRegistryRegistryStatusDissolved               KYBListShareholdersResponseKYBRegistryRegistryStatus = "dissolved"
	KYBListShareholdersResponseKYBRegistryRegistryStatusDeregistered            KYBListShareholdersResponseKYBRegistryRegistryStatus = "deregistered"
	KYBListShareholdersResponseKYBRegistryRegistryStatusSeeFullDetails          KYBListShareholdersResponseKYBRegistryRegistryStatus = "see full details"
	KYBListShareholdersResponseKYBRegistryRegistryStatusAuthorised              KYBListShareholdersResponseKYBRegistryRegistryStatus = "authorised"
	KYBListShareholdersResponseKYBRegistryRegistryStatusAppointedRepresentative KYBListShareholdersResponseKYBRegistryRegistryStatus = "appointed representative"
	KYBListShareholdersResponseKYBRegistryRegistryStatusUnauthorised            KYBListShareholdersResponseKYBRegistryRegistryStatus = "unauthorised"
	KYBListShareholdersResponseKYBRegistryRegistryStatusInactive                KYBListShareholdersResponseKYBRegistryRegistryStatus = "inactive"
	KYBListShareholdersResponseKYBRegistryRegistryStatusNoLongerAuthorised      KYBListShareholdersResponseKYBRegistryRegistryStatus = "no longer authorised"
	KYBListShareholdersResponseKYBRegistryRegistryStatusClosed                  KYBListShareholdersResponseKYBRegistryRegistryStatus = "closed"
	KYBListShareholdersResponseKYBRegistryRegistryStatusStruckOff               KYBListShareholdersResponseKYBRegistryRegistryStatus = "struck off"
)

Known values of KYBListShareholdersResponseKYBRegistryRegistryStatus.

type KYBListShareholdersResponseKYBRegistryRegistryTierDelivered

type KYBListShareholdersResponseKYBRegistryRegistryTierDelivered string

KYBListShareholdersResponseKYBRegistryRegistryTierDelivered: Same as the top-level `registry_tier_delivered`.

KYBListShareholdersResponseKYBRegistryRegistryTierDelivered is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListShareholdersResponseKYBRegistryRegistryTierDeliveredBasic        KYBListShareholdersResponseKYBRegistryRegistryTierDelivered = "basic"
	KYBListShareholdersResponseKYBRegistryRegistryTierDeliveredShareholders KYBListShareholdersResponseKYBRegistryRegistryTierDelivered = "shareholders"
	KYBListShareholdersResponseKYBRegistryRegistryTierDeliveredUBO          KYBListShareholdersResponseKYBRegistryRegistryTierDelivered = "ubo"
)

Known values of KYBListShareholdersResponseKYBRegistryRegistryTierDelivered.

type KYBListShareholdersResponseKYBRegistryStatus

type KYBListShareholdersResponseKYBRegistryStatus string

KYBListShareholdersResponseKYBRegistryStatus: Didit's assessment of the registry check (e.g. `In Review` when the company is not active in the registry or ownership data could not be derived).

KYBListShareholdersResponseKYBRegistryStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListShareholdersResponseKYBRegistryStatusNotFinished KYBListShareholdersResponseKYBRegistryStatus = "Not Finished"
	KYBListShareholdersResponseKYBRegistryStatusApproved    KYBListShareholdersResponseKYBRegistryStatus = "Approved"
	KYBListShareholdersResponseKYBRegistryStatusDeclined    KYBListShareholdersResponseKYBRegistryStatus = "Declined"
	KYBListShareholdersResponseKYBRegistryStatusInReview    KYBListShareholdersResponseKYBRegistryStatus = "In Review"
)

Known values of KYBListShareholdersResponseKYBRegistryStatus.

type KYBListShareholdersResponseKYBRegistryVATValidationSource

type KYBListShareholdersResponseKYBRegistryVATValidationSource string

KYBListShareholdersResponseKYBRegistryVATValidationSource: The source that decided `vat_validation_status`: an official registry, or `format_rules`. `null` when no check ran.

KYBListShareholdersResponseKYBRegistryVATValidationSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListShareholdersResponseKYBRegistryVATValidationSourceEuVies           KYBListShareholdersResponseKYBRegistryVATValidationSource = "eu_vies"
	KYBListShareholdersResponseKYBRegistryVATValidationSourcePlVATWhiteList   KYBListShareholdersResponseKYBRegistryVATValidationSource = "pl_vat_white_list"
	KYBListShareholdersResponseKYBRegistryVATValidationSourceNoBrreg          KYBListShareholdersResponseKYBRegistryVATValidationSource = "no_brreg"
	KYBListShareholdersResponseKYBRegistryVATValidationSourceChUIDRegister    KYBListShareholdersResponseKYBRegistryVATValidationSource = "ch_uid_register"
	KYBListShareholdersResponseKYBRegistryVATValidationSourceBrReceitaFederal KYBListShareholdersResponseKYBRegistryVATValidationSource = "br_receita_federal"
	KYBListShareholdersResponseKYBRegistryVATValidationSourceCoRues           KYBListShareholdersResponseKYBRegistryVATValidationSource = "co_rues"
	KYBListShareholdersResponseKYBRegistryVATValidationSourceCrHacienda       KYBListShareholdersResponseKYBRegistryVATValidationSource = "cr_hacienda"
	KYBListShareholdersResponseKYBRegistryVATValidationSourceEcSri            KYBListShareholdersResponseKYBRegistryVATValidationSource = "ec_sri"
	KYBListShareholdersResponseKYBRegistryVATValidationSourcePyDnit           KYBListShareholdersResponseKYBRegistryVATValidationSource = "py_dnit"
	KYBListShareholdersResponseKYBRegistryVATValidationSourceFormatRules      KYBListShareholdersResponseKYBRegistryVATValidationSource = "format_rules"
)

Known values of KYBListShareholdersResponseKYBRegistryVATValidationSource.

type KYBListShareholdersResponseKYBRegistryVATValidationStatus

type KYBListShareholdersResponseKYBRegistryVATValidationStatus string

KYBListShareholdersResponseKYBRegistryVATValidationStatus: Result of validating the VAT number or, when there is none, the `tax_number`, at registry submit. `valid` / `invalid`: decided by the official registry of the country (EU VIES, Norway, Switzerland, Brazil, Colombia, Costa Rica, Ecuador, Paraguay; Poland also by its domestic VAT register). `format_valid` / `invalid_format`: decided by the country's format and check-digit rules where no registry can be queried. `could_not_validate`: the registry was unavailable. `not_applicable`: no number, a country without registry or rules, or a sandbox session.

KYBListShareholdersResponseKYBRegistryVATValidationStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListShareholdersResponseKYBRegistryVATValidationStatusValid            KYBListShareholdersResponseKYBRegistryVATValidationStatus = "valid"
	KYBListShareholdersResponseKYBRegistryVATValidationStatusInvalid          KYBListShareholdersResponseKYBRegistryVATValidationStatus = "invalid"
	KYBListShareholdersResponseKYBRegistryVATValidationStatusFormatValid      KYBListShareholdersResponseKYBRegistryVATValidationStatus = "format_valid"
	KYBListShareholdersResponseKYBRegistryVATValidationStatusInvalidFormat    KYBListShareholdersResponseKYBRegistryVATValidationStatus = "invalid_format"
	KYBListShareholdersResponseKYBRegistryVATValidationStatusCouldNotValidate KYBListShareholdersResponseKYBRegistryVATValidationStatus = "could_not_validate"
	KYBListShareholdersResponseKYBRegistryVATValidationStatusNotApplicable    KYBListShareholdersResponseKYBRegistryVATValidationStatus = "not_applicable"
)

Known values of KYBListShareholdersResponseKYBRegistryVATValidationStatus.

type KYBListShareholdersResponseRegistryTierDelivered

type KYBListShareholdersResponseRegistryTierDelivered string

KYBListShareholdersResponseRegistryTierDelivered: The tier actually delivered and billed. Lower than requested when the country's registries hold no ownership data, or the registry has no ownership record for this company.

KYBListShareholdersResponseRegistryTierDelivered is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListShareholdersResponseRegistryTierDeliveredBasic        KYBListShareholdersResponseRegistryTierDelivered = "basic"
	KYBListShareholdersResponseRegistryTierDeliveredShareholders KYBListShareholdersResponseRegistryTierDelivered = "shareholders"
	KYBListShareholdersResponseRegistryTierDeliveredUBO          KYBListShareholdersResponseRegistryTierDelivered = "ubo"
)

Known values of KYBListShareholdersResponseRegistryTierDelivered.

type KYBListShareholdersResponseRegistryTierRequested

type KYBListShareholdersResponseRegistryTierRequested string

KYBListShareholdersResponseRegistryTierRequested: The tier this endpoint sells: `basic` (Lite) for select, `shareholders`, `ubo`.

KYBListShareholdersResponseRegistryTierRequested is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListShareholdersResponseRegistryTierRequestedBasic        KYBListShareholdersResponseRegistryTierRequested = "basic"
	KYBListShareholdersResponseRegistryTierRequestedShareholders KYBListShareholdersResponseRegistryTierRequested = "shareholders"
	KYBListShareholdersResponseRegistryTierRequestedUBO          KYBListShareholdersResponseRegistryTierRequested = "ubo"
)

Known values of KYBListShareholdersResponseRegistryTierRequested.

type KYBListUBOsResponse

type KYBListUBOsResponse struct {
	// Id of the business session created for this retrieval. The stored record
	// (visible in the console) keeps updating if the registry resolves after the
	// response.
	RequestID string `json:"request_id"`

	// The tier this endpoint sells: `basic` (Lite) for select, `shareholders`,
	// `ubo`.
	RegistryTierRequested KYBListUBOsResponseRegistryTierRequested `json:"registry_tier_requested"`

	// The tier actually delivered and billed. Lower than requested when the
	// country's registries hold no ownership data, when the registry has no
	// ownership record for this company, or when the resolved report of a `ubo`
	// request names no natural person as a beneficial owner.
	RegistryTierDelivered KYBListUBOsResponseRegistryTierDelivered `json:"registry_tier_delivered"`

	// Full registry company profile.
	KYBRegistry KYBListUBOsResponseKYBRegistry `json:"kyb_registry"`

	// Echo of the `vendor_data` you sent.
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` you sent.
	Metadata  map[string]any `json:"metadata"`
	CreatedAt time.Time      `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBListUBOsResponse is a response object.

func (*KYBListUBOsResponse) UnmarshalJSON

func (r *KYBListUBOsResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBListUBOsResponse leniently.

type KYBListUBOsResponseKYBRegistry

type KYBListUBOsResponseKYBRegistry struct {
	// Didit's id for this company record.
	UUID   string `json:"uuid"`
	NodeID string `json:"node_id"`

	// Didit's assessment of the registry check (e.g. `In Review` when the company
	// is not active in the registry or ownership data could not be derived).
	Status KYBListUBOsResponseKYBRegistryStatus `json:"status"`

	// Normalized company status as reported by the registry.
	RegistryStatus KYBListUBOsResponseKYBRegistryRegistryStatus `json:"registry_status"`

	// `true` once the registry returned the full profile. `false` when the registry
	// was still processing after polling - the stored record completes
	// automatically once the registry resolves.
	DataResolved       bool   `json:"data_resolved"`
	CompanyName        string `json:"company_name"`
	RegistrationNumber string `json:"registration_number"`

	// ISO 3166-1 alpha-2.
	CountryCode string `json:"country_code"`

	// Subdivision code when the registry is regional (e.g. `CA` for `US-CA`); empty
	// otherwise.
	Region            string `json:"region"`
	CompanyType       string `json:"company_type"`
	IncorporationDate string `json:"incorporation_date"`
	RegisteredAddress string `json:"registered_address"`
	TaxNumber         string `json:"tax_number"`

	// Registry-reported risk level, when available.
	RiskLevel string `json:"risk_level"`

	// Registry verification status, when available.
	VerificationStatus string `json:"verification_status"`

	// Always `true` for this endpoint - the profile was retrieved from an official
	// registry.
	IsFromRegistry bool `json:"is_from_registry"`

	// Registry fetch lifecycle. Mirrored by `data_resolved`.
	FetchStatus KYBListUBOsResponseKYBRegistryFetchStatus `json:"fetch_status"`

	// Alternative, trading, former or original-language company names as text, when
	// reported.
	AlternativeNames string `json:"alternative_names"`

	// Activity description or classification code, when reported.
	NatureOfBusiness  string `json:"nature_of_business"`
	RegisteredCapital string `json:"registered_capital"`

	// Decimal amount as a string, when reported.
	RegisteredCapitalAmount string `json:"registered_capital_amount"`

	// ISO 4217 code, when reported.
	RegisteredCapitalCurrency string `json:"registered_capital_currency"`
	Website                   string `json:"website"`
	Email                     string `json:"email"`
	Phone                     string `json:"phone"`

	// LEI, when reported.
	LegalEntityIdentifier string `json:"legal_entity_identifier"`

	// Registry/jurisdiction the company is registered with, when reported.
	LocationOfRegistration string `json:"location_of_registration"`

	// EU VAT number, when collected during the hosted registry step or edited
	// afterwards. At select time this is typically not yet set - VAT and tax ID
	// validation runs when the end user submits the registry step in the hosted
	// flow.
	VATNumber string `json:"vat_number"`

	// Result of validating the VAT number or, when there is none, the `tax_number`,
	// at registry submit. `valid` / `invalid`: decided by the official registry of
	// the country (EU VIES, Norway, Switzerland, Brazil, Colombia, Costa Rica,
	// Ecuador, Paraguay; Poland also by its domestic VAT register). `format_valid`
	// / `invalid_format`: decided by the country's format and check-digit rules
	// where no registry can be queried. `could_not_validate`: the registry was
	// unavailable. `not_applicable`: no number, a country without registry or
	// rules, or a sandbox session.
	VATValidationStatus KYBListUBOsResponseKYBRegistryVATValidationStatus `json:"vat_validation_status"`

	// The number that was checked, as the source knows it (for example the VAT
	// number derived from a French SIREN or a Dutch RSIN). `null` when no check
	// ran.
	VATValidatedNumber string `json:"vat_validated_number"`

	// The source that decided `vat_validation_status`: an official registry, or
	// `format_rules`. `null` when no check ran.
	VATValidationSource KYBListUBOsResponseKYBRegistryVATValidationSource `json:"vat_validation_source"`

	// Name registered with the source that validated the number, when it discloses
	// one. Only set when the status is `valid`.
	VATValidatedName string `json:"vat_validated_name"`

	// Address registered with the source that validated the number, when it
	// discloses one. Only set when the status is `valid`.
	VATValidatedAddress string `json:"vat_validated_address"`

	// Timestamp of the check. `null` when no check ran.
	VATCheckedAt time.Time `json:"vat_checked_at"`

	// Registry-reported share/capital details (currency, total shares, share
	// classes), when available.
	FinancialSummary map[string]any `json:"financial_summary"`

	// Directors, secretaries, and other officers extracted from the registry.
	Officers []KYBListUBOsResponseKYBRegistryOfficers `json:"officers"`

	// Beneficial owners / persons with significant control extracted from the
	// registry. Can be empty when the registry does not expose ownership.
	BeneficialOwners []KYBListUBOsResponseKYBRegistryBeneficialOwners `json:"beneficial_owners"`

	// Every address the registry states, one canonical shape. Null when it states
	// none.
	Addresses []KYBRegistryAddress `json:"addresses"`

	// The activities the registry classifies the company under, one canonical
	// shape. Null when it states none.
	Industries []KYBRegistryIndustry `json:"industries"`

	// Registry filing dates, when available. Annual returns and general meetings
	// use last_annual_return_date and last_agm_date; they are distinct from
	// financial accounts.
	Accounts map[string]any `json:"accounts"`

	// Raw record returned by the registry source, kept for reviewers. Its shape
	// differs by country and source and is not a stable contract: read the
	// canonical fields (`addresses`, `industries`, `ownership`,
	// `beneficial_owners[].shareholding`) instead.
	RegistryData map[string]any `json:"registry_data"`

	// Always `null` on this endpoint (used by the hosted KYB flow when end users
	// edit registry data).
	UserProvidedData map[string]any `json:"user_provided_data"`

	// Always `null` on this endpoint.
	ConfirmedByUserAt time.Time `json:"confirmed_by_user_at"`

	// Set when a console reviewer edits the record later.
	LastConsoleEditAt time.Time `json:"last_console_edit_at"`

	// Whether the registry-sourced data can still be edited in the hosted
	// flow/console.
	IsEditable bool `json:"is_editable"`

	// Same as the top-level `registry_tier_delivered`.
	RegistryTierDelivered KYBListUBOsResponseKYBRegistryRegistryTierDelivered `json:"registry_tier_delivered"`

	// `delivered` when the ownership data came back, `unavailable` when an
	// ownership tier was requested but the registry had none for this company (see
	// `registry_data.ownership_error`), `pending` when the ownership section has
	// not been retrieved from the registry yet and Didit is still completing it,
	// `not_requested` on the Lite tier.
	RegistryOwnershipStatus KYBListUBOsResponseKYBRegistryRegistryOwnershipStatus `json:"registry_ownership_status"`
	Ownership               KYBRegistryOwnership                                  `json:"ownership"`

	// The registry tier the workflow ordered: `basic`, `shareholders` or `ubo`.
	// Also in `ownership.tier_requested`.
	RegistryTier string `json:"registry_tier"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBListUBOsResponseKYBRegistry: Full registry company profile.

func (*KYBListUBOsResponseKYBRegistry) UnmarshalJSON

func (r *KYBListUBOsResponseKYBRegistry) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBListUBOsResponseKYBRegistry leniently.

type KYBListUBOsResponseKYBRegistryBeneficialOwners

type KYBListUBOsResponseKYBRegistryBeneficialOwners struct {
	UUID      string `json:"uuid"`
	Name      string `json:"name"`
	FirstName string `json:"first_name"`
	LastName  string `json:"last_name"`

	// Whether the owner is a natural person or a corporate entity.
	EntityType KYBListUBOsResponseKYBRegistryBeneficialOwnersEntityType `json:"entity_type"`

	// Normalized roles (e.g. `ubo`, `shareholder`).
	Roles []string `json:"roles"`

	// Lower bound of the ownership band reported by the registry (e.g. `25%`).
	OwnershipMinShares string `json:"ownership_min_shares"`

	// Upper bound of the ownership band reported by the registry.
	OwnershipMaxShares string                                                  `json:"ownership_max_shares"`
	IsActive           bool                                                    `json:"is_active"`
	KYCStatus          KYBListUBOsResponseKYBRegistryBeneficialOwnersKYCStatus `json:"kyc_status"`
	KYCSessionURL      string                                                  `json:"kyc_session_url"`

	// Parsed ownership percentage (max bound, falling back to min bound).
	EffectiveOwnershipPercent float64 `json:"effective_ownership_percent"`
	CompanyName               string  `json:"company_name"`
	RegistrationNumber        string  `json:"registration_number"`
	CountryOfBirth            string  `json:"country_of_birth"`
	Email                     string  `json:"email"`
	Nationality               string  `json:"nationality"`
	Designation               string  `json:"designation"`
	VotingMinShares           string  `json:"voting_min_shares"`
	VotingMaxShares           string  `json:"voting_max_shares"`

	// Complete birth date when reported.
	DateOfBirth string `json:"date_of_birth"`

	// Appointment date when reported.
	AppointmentDate string                  `json:"appointment_date"`
	Shareholding    KYBRegistryShareholding `json:"shareholding"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBListUBOsResponseKYBRegistryBeneficialOwners is a response object.

func (*KYBListUBOsResponseKYBRegistryBeneficialOwners) UnmarshalJSON

UnmarshalJSON decodes KYBListUBOsResponseKYBRegistryBeneficialOwners leniently.

type KYBListUBOsResponseKYBRegistryBeneficialOwnersEntityType

type KYBListUBOsResponseKYBRegistryBeneficialOwnersEntityType string

KYBListUBOsResponseKYBRegistryBeneficialOwnersEntityType: Whether the owner is a natural person or a corporate entity.

KYBListUBOsResponseKYBRegistryBeneficialOwnersEntityType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListUBOsResponseKYBRegistryBeneficialOwnersEntityTypePerson  KYBListUBOsResponseKYBRegistryBeneficialOwnersEntityType = "person"
	KYBListUBOsResponseKYBRegistryBeneficialOwnersEntityTypeCompany KYBListUBOsResponseKYBRegistryBeneficialOwnersEntityType = "company"
)

Known values of KYBListUBOsResponseKYBRegistryBeneficialOwnersEntityType.

type KYBListUBOsResponseKYBRegistryBeneficialOwnersKYCStatus

type KYBListUBOsResponseKYBRegistryBeneficialOwnersKYCStatus string

KYBListUBOsResponseKYBRegistryBeneficialOwnersKYCStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListUBOsResponseKYBRegistryBeneficialOwnersKYCStatusApproved KYBListUBOsResponseKYBRegistryBeneficialOwnersKYCStatus = "Approved"
	KYBListUBOsResponseKYBRegistryBeneficialOwnersKYCStatusDeclined KYBListUBOsResponseKYBRegistryBeneficialOwnersKYCStatus = "Declined"
	KYBListUBOsResponseKYBRegistryBeneficialOwnersKYCStatusPending  KYBListUBOsResponseKYBRegistryBeneficialOwnersKYCStatus = "Pending"
)

Known values of KYBListUBOsResponseKYBRegistryBeneficialOwnersKYCStatus.

type KYBListUBOsResponseKYBRegistryFetchStatus

type KYBListUBOsResponseKYBRegistryFetchStatus string

KYBListUBOsResponseKYBRegistryFetchStatus: Registry fetch lifecycle. Mirrored by `data_resolved`.

KYBListUBOsResponseKYBRegistryFetchStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListUBOsResponseKYBRegistryFetchStatusPending  KYBListUBOsResponseKYBRegistryFetchStatus = "pending"
	KYBListUBOsResponseKYBRegistryFetchStatusResolved KYBListUBOsResponseKYBRegistryFetchStatus = "resolved"
)

Known values of KYBListUBOsResponseKYBRegistryFetchStatus.

type KYBListUBOsResponseKYBRegistryOfficers

type KYBListUBOsResponseKYBRegistryOfficers struct {
	UUID string `json:"uuid"`
	Name string `json:"name"`

	// Raw registry designation (e.g. `Director`, `Secretary`).
	Designation string `json:"designation"`

	// Normalized role derived from the designation. Full 17-value model set;
	// registry parsing on this endpoint typically emits director,
	// non_executive_director, secretary, chairman, or company_officer.
	Role        KYBListUBOsResponseKYBRegistryOfficersRole `json:"role"`
	Nationality string                                     `json:"nationality"`

	// `false` when the registry marks the appointment as resigned.
	IsActive bool `json:"is_active"`

	// Status of an associated KYC session, when one was started for this officer.
	// `null` otherwise.
	KYCStatus KYBListUBOsResponseKYBRegistryOfficersKYCStatus `json:"kyc_status"`

	// Verification URL of the associated KYC session, when one exists.
	KYCSessionURL string `json:"kyc_session_url"`

	// Given name when explicitly reported by the registry; not inferred from the
	// full name.
	FirstName string `json:"first_name"`

	// Family name when explicitly reported by the registry.
	LastName string `json:"last_name"`

	// Officer address reported by the registry.
	Address string `json:"address"`

	// Date the officer was appointed.
	AppointmentDate string `json:"appointment_date"`

	// Date the appointment ended, when reported.
	TerminationDate string `json:"termination_date"`

	// Complete registry-reported birth date. Null when only a birth year or month
	// is known.
	DateOfBirth string `json:"date_of_birth"`

	// Registry-reported birth year, including when the full date is unavailable.
	DateOfBirthYear int64 `json:"date_of_birth_year"`

	// Registry-reported birth month. Null when only the year is known.
	DateOfBirthMonth int64 `json:"date_of_birth_month"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBListUBOsResponseKYBRegistryOfficers is a response object.

func (*KYBListUBOsResponseKYBRegistryOfficers) UnmarshalJSON

func (r *KYBListUBOsResponseKYBRegistryOfficers) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBListUBOsResponseKYBRegistryOfficers leniently.

type KYBListUBOsResponseKYBRegistryOfficersKYCStatus

type KYBListUBOsResponseKYBRegistryOfficersKYCStatus string

KYBListUBOsResponseKYBRegistryOfficersKYCStatus: Status of an associated KYC session, when one was started for this officer. `null` otherwise.

KYBListUBOsResponseKYBRegistryOfficersKYCStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListUBOsResponseKYBRegistryOfficersKYCStatusApproved KYBListUBOsResponseKYBRegistryOfficersKYCStatus = "Approved"
	KYBListUBOsResponseKYBRegistryOfficersKYCStatusDeclined KYBListUBOsResponseKYBRegistryOfficersKYCStatus = "Declined"
	KYBListUBOsResponseKYBRegistryOfficersKYCStatusPending  KYBListUBOsResponseKYBRegistryOfficersKYCStatus = "Pending"
)

Known values of KYBListUBOsResponseKYBRegistryOfficersKYCStatus.

type KYBListUBOsResponseKYBRegistryOfficersRole

type KYBListUBOsResponseKYBRegistryOfficersRole string

KYBListUBOsResponseKYBRegistryOfficersRole: Normalized role derived from the designation. Full 17-value model set; registry parsing on this endpoint typically emits director, non_executive_director, secretary, chairman, or company_officer.

KYBListUBOsResponseKYBRegistryOfficersRole is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListUBOsResponseKYBRegistryOfficersRoleDirector             KYBListUBOsResponseKYBRegistryOfficersRole = "director"
	KYBListUBOsResponseKYBRegistryOfficersRoleNonExecutiveDirector KYBListUBOsResponseKYBRegistryOfficersRole = "non_executive_director"
	KYBListUBOsResponseKYBRegistryOfficersRoleSecretary            KYBListUBOsResponseKYBRegistryOfficersRole = "secretary"
	KYBListUBOsResponseKYBRegistryOfficersRoleChairman             KYBListUBOsResponseKYBRegistryOfficersRole = "chairman"
	KYBListUBOsResponseKYBRegistryOfficersRoleUBO                  KYBListUBOsResponseKYBRegistryOfficersRole = "ubo"
	KYBListUBOsResponseKYBRegistryOfficersRoleShareholder          KYBListUBOsResponseKYBRegistryOfficersRole = "shareholder"
	KYBListUBOsResponseKYBRegistryOfficersRoleRepresentative       KYBListUBOsResponseKYBRegistryOfficersRole = "representative"
	KYBListUBOsResponseKYBRegistryOfficersRoleFounder              KYBListUBOsResponseKYBRegistryOfficersRole = "founder"
	KYBListUBOsResponseKYBRegistryOfficersRoleLegalAdvisor         KYBListUBOsResponseKYBRegistryOfficersRole = "legal_advisor"
	KYBListUBOsResponseKYBRegistryOfficersRoleAuthorizedSignatory  KYBListUBOsResponseKYBRegistryOfficersRole = "authorized_signatory"
	KYBListUBOsResponseKYBRegistryOfficersRoleTrustee              KYBListUBOsResponseKYBRegistryOfficersRole = "trustee"
	KYBListUBOsResponseKYBRegistryOfficersRoleBeneficiary          KYBListUBOsResponseKYBRegistryOfficersRole = "beneficiary"
	KYBListUBOsResponseKYBRegistryOfficersRoleCompanyOfficer       KYBListUBOsResponseKYBRegistryOfficersRole = "company_officer"
	KYBListUBOsResponseKYBRegistryOfficersRoleSettlor              KYBListUBOsResponseKYBRegistryOfficersRole = "settlor"
	KYBListUBOsResponseKYBRegistryOfficersRoleProtector            KYBListUBOsResponseKYBRegistryOfficersRole = "protector"
	KYBListUBOsResponseKYBRegistryOfficersRoleInvestor             KYBListUBOsResponseKYBRegistryOfficersRole = "investor"
	KYBListUBOsResponseKYBRegistryOfficersRoleOther                KYBListUBOsResponseKYBRegistryOfficersRole = "other"
)

Known values of KYBListUBOsResponseKYBRegistryOfficersRole.

type KYBListUBOsResponseKYBRegistryRegistryOwnershipStatus

type KYBListUBOsResponseKYBRegistryRegistryOwnershipStatus string

KYBListUBOsResponseKYBRegistryRegistryOwnershipStatus: `delivered` when the ownership data came back, `unavailable` when an ownership tier was requested but the registry had none for this company (see `registry_data.ownership_error`), `pending` when the ownership section has not been retrieved from the registry yet and Didit is still completing it, `not_requested` on the Lite tier.

KYBListUBOsResponseKYBRegistryRegistryOwnershipStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListUBOsResponseKYBRegistryRegistryOwnershipStatusNotRequested KYBListUBOsResponseKYBRegistryRegistryOwnershipStatus = "not_requested"
	KYBListUBOsResponseKYBRegistryRegistryOwnershipStatusDelivered    KYBListUBOsResponseKYBRegistryRegistryOwnershipStatus = "delivered"
	KYBListUBOsResponseKYBRegistryRegistryOwnershipStatusUnavailable  KYBListUBOsResponseKYBRegistryRegistryOwnershipStatus = "unavailable"
	KYBListUBOsResponseKYBRegistryRegistryOwnershipStatusPending      KYBListUBOsResponseKYBRegistryRegistryOwnershipStatus = "pending"
)

Known values of KYBListUBOsResponseKYBRegistryRegistryOwnershipStatus.

type KYBListUBOsResponseKYBRegistryRegistryStatus

type KYBListUBOsResponseKYBRegistryRegistryStatus string

KYBListUBOsResponseKYBRegistryRegistryStatus: Normalized company status as reported by the registry.

KYBListUBOsResponseKYBRegistryRegistryStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListUBOsResponseKYBRegistryRegistryStatusActive                  KYBListUBOsResponseKYBRegistryRegistryStatus = "active"
	KYBListUBOsResponseKYBRegistryRegistryStatusDissolved               KYBListUBOsResponseKYBRegistryRegistryStatus = "dissolved"
	KYBListUBOsResponseKYBRegistryRegistryStatusDeregistered            KYBListUBOsResponseKYBRegistryRegistryStatus = "deregistered"
	KYBListUBOsResponseKYBRegistryRegistryStatusSeeFullDetails          KYBListUBOsResponseKYBRegistryRegistryStatus = "see full details"
	KYBListUBOsResponseKYBRegistryRegistryStatusAuthorised              KYBListUBOsResponseKYBRegistryRegistryStatus = "authorised"
	KYBListUBOsResponseKYBRegistryRegistryStatusAppointedRepresentative KYBListUBOsResponseKYBRegistryRegistryStatus = "appointed representative"
	KYBListUBOsResponseKYBRegistryRegistryStatusUnauthorised            KYBListUBOsResponseKYBRegistryRegistryStatus = "unauthorised"
	KYBListUBOsResponseKYBRegistryRegistryStatusInactive                KYBListUBOsResponseKYBRegistryRegistryStatus = "inactive"
	KYBListUBOsResponseKYBRegistryRegistryStatusNoLongerAuthorised      KYBListUBOsResponseKYBRegistryRegistryStatus = "no longer authorised"
	KYBListUBOsResponseKYBRegistryRegistryStatusClosed                  KYBListUBOsResponseKYBRegistryRegistryStatus = "closed"
	KYBListUBOsResponseKYBRegistryRegistryStatusStruckOff               KYBListUBOsResponseKYBRegistryRegistryStatus = "struck off"
)

Known values of KYBListUBOsResponseKYBRegistryRegistryStatus.

type KYBListUBOsResponseKYBRegistryRegistryTierDelivered

type KYBListUBOsResponseKYBRegistryRegistryTierDelivered string

KYBListUBOsResponseKYBRegistryRegistryTierDelivered: Same as the top-level `registry_tier_delivered`.

KYBListUBOsResponseKYBRegistryRegistryTierDelivered is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListUBOsResponseKYBRegistryRegistryTierDeliveredBasic        KYBListUBOsResponseKYBRegistryRegistryTierDelivered = "basic"
	KYBListUBOsResponseKYBRegistryRegistryTierDeliveredShareholders KYBListUBOsResponseKYBRegistryRegistryTierDelivered = "shareholders"
	KYBListUBOsResponseKYBRegistryRegistryTierDeliveredUBO          KYBListUBOsResponseKYBRegistryRegistryTierDelivered = "ubo"
)

Known values of KYBListUBOsResponseKYBRegistryRegistryTierDelivered.

type KYBListUBOsResponseKYBRegistryStatus

type KYBListUBOsResponseKYBRegistryStatus string

KYBListUBOsResponseKYBRegistryStatus: Didit's assessment of the registry check (e.g. `In Review` when the company is not active in the registry or ownership data could not be derived).

KYBListUBOsResponseKYBRegistryStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListUBOsResponseKYBRegistryStatusNotFinished KYBListUBOsResponseKYBRegistryStatus = "Not Finished"
	KYBListUBOsResponseKYBRegistryStatusApproved    KYBListUBOsResponseKYBRegistryStatus = "Approved"
	KYBListUBOsResponseKYBRegistryStatusDeclined    KYBListUBOsResponseKYBRegistryStatus = "Declined"
	KYBListUBOsResponseKYBRegistryStatusInReview    KYBListUBOsResponseKYBRegistryStatus = "In Review"
)

Known values of KYBListUBOsResponseKYBRegistryStatus.

type KYBListUBOsResponseKYBRegistryVATValidationSource

type KYBListUBOsResponseKYBRegistryVATValidationSource string

KYBListUBOsResponseKYBRegistryVATValidationSource: The source that decided `vat_validation_status`: an official registry, or `format_rules`. `null` when no check ran.

KYBListUBOsResponseKYBRegistryVATValidationSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListUBOsResponseKYBRegistryVATValidationSourceEuVies           KYBListUBOsResponseKYBRegistryVATValidationSource = "eu_vies"
	KYBListUBOsResponseKYBRegistryVATValidationSourcePlVATWhiteList   KYBListUBOsResponseKYBRegistryVATValidationSource = "pl_vat_white_list"
	KYBListUBOsResponseKYBRegistryVATValidationSourceNoBrreg          KYBListUBOsResponseKYBRegistryVATValidationSource = "no_brreg"
	KYBListUBOsResponseKYBRegistryVATValidationSourceChUIDRegister    KYBListUBOsResponseKYBRegistryVATValidationSource = "ch_uid_register"
	KYBListUBOsResponseKYBRegistryVATValidationSourceBrReceitaFederal KYBListUBOsResponseKYBRegistryVATValidationSource = "br_receita_federal"
	KYBListUBOsResponseKYBRegistryVATValidationSourceCoRues           KYBListUBOsResponseKYBRegistryVATValidationSource = "co_rues"
	KYBListUBOsResponseKYBRegistryVATValidationSourceCrHacienda       KYBListUBOsResponseKYBRegistryVATValidationSource = "cr_hacienda"
	KYBListUBOsResponseKYBRegistryVATValidationSourceEcSri            KYBListUBOsResponseKYBRegistryVATValidationSource = "ec_sri"
	KYBListUBOsResponseKYBRegistryVATValidationSourcePyDnit           KYBListUBOsResponseKYBRegistryVATValidationSource = "py_dnit"
	KYBListUBOsResponseKYBRegistryVATValidationSourceFormatRules      KYBListUBOsResponseKYBRegistryVATValidationSource = "format_rules"
)

Known values of KYBListUBOsResponseKYBRegistryVATValidationSource.

type KYBListUBOsResponseKYBRegistryVATValidationStatus

type KYBListUBOsResponseKYBRegistryVATValidationStatus string

KYBListUBOsResponseKYBRegistryVATValidationStatus: Result of validating the VAT number or, when there is none, the `tax_number`, at registry submit. `valid` / `invalid`: decided by the official registry of the country (EU VIES, Norway, Switzerland, Brazil, Colombia, Costa Rica, Ecuador, Paraguay; Poland also by its domestic VAT register). `format_valid` / `invalid_format`: decided by the country's format and check-digit rules where no registry can be queried. `could_not_validate`: the registry was unavailable. `not_applicable`: no number, a country without registry or rules, or a sandbox session.

KYBListUBOsResponseKYBRegistryVATValidationStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListUBOsResponseKYBRegistryVATValidationStatusValid            KYBListUBOsResponseKYBRegistryVATValidationStatus = "valid"
	KYBListUBOsResponseKYBRegistryVATValidationStatusInvalid          KYBListUBOsResponseKYBRegistryVATValidationStatus = "invalid"
	KYBListUBOsResponseKYBRegistryVATValidationStatusFormatValid      KYBListUBOsResponseKYBRegistryVATValidationStatus = "format_valid"
	KYBListUBOsResponseKYBRegistryVATValidationStatusInvalidFormat    KYBListUBOsResponseKYBRegistryVATValidationStatus = "invalid_format"
	KYBListUBOsResponseKYBRegistryVATValidationStatusCouldNotValidate KYBListUBOsResponseKYBRegistryVATValidationStatus = "could_not_validate"
	KYBListUBOsResponseKYBRegistryVATValidationStatusNotApplicable    KYBListUBOsResponseKYBRegistryVATValidationStatus = "not_applicable"
)

Known values of KYBListUBOsResponseKYBRegistryVATValidationStatus.

type KYBListUBOsResponseRegistryTierDelivered

type KYBListUBOsResponseRegistryTierDelivered string

KYBListUBOsResponseRegistryTierDelivered: The tier actually delivered and billed. Lower than requested when the country's registries hold no ownership data, when the registry has no ownership record for this company, or when the resolved report of a `ubo` request names no natural person as a beneficial owner.

KYBListUBOsResponseRegistryTierDelivered is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListUBOsResponseRegistryTierDeliveredBasic        KYBListUBOsResponseRegistryTierDelivered = "basic"
	KYBListUBOsResponseRegistryTierDeliveredShareholders KYBListUBOsResponseRegistryTierDelivered = "shareholders"
	KYBListUBOsResponseRegistryTierDeliveredUBO          KYBListUBOsResponseRegistryTierDelivered = "ubo"
)

Known values of KYBListUBOsResponseRegistryTierDelivered.

type KYBListUBOsResponseRegistryTierRequested

type KYBListUBOsResponseRegistryTierRequested string

KYBListUBOsResponseRegistryTierRequested: The tier this endpoint sells: `basic` (Lite) for select, `shareholders`, `ubo`.

KYBListUBOsResponseRegistryTierRequested is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBListUBOsResponseRegistryTierRequestedBasic        KYBListUBOsResponseRegistryTierRequested = "basic"
	KYBListUBOsResponseRegistryTierRequestedShareholders KYBListUBOsResponseRegistryTierRequested = "shareholders"
	KYBListUBOsResponseRegistryTierRequestedUBO          KYBListUBOsResponseRegistryTierRequested = "ubo"
)

Known values of KYBListUBOsResponseRegistryTierRequested.

type KYBRegistryAddress

type KYBRegistryAddress struct {
	// Address type in lower case: `registered` for the registered office; other
	// types as the registry names them (for example `postal`, `office`). `null`
	// when the registry does not say what the address is.
	Type string `json:"type"`

	// The full address as one line. Always present on every address.
	Address string `json:"address"`

	// Street and number.
	Street string `json:"street"`

	// City or locality.
	City string `json:"city"`

	// Postal code.
	PostalCode string `json:"postal_code"`

	// Region, state or province.
	Region string `json:"region"`

	// ISO 3166-1 alpha-2 country code.
	CountryCode string `json:"country_code"`

	// The registry's own label for the address, when it gives one.
	Description string `json:"description"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBRegistryAddress: An address the registry states, in the same shape for every country and registry source. Every key is always present; a part the registry does not publish is null.

func (*KYBRegistryAddress) UnmarshalJSON

func (r *KYBRegistryAddress) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBRegistryAddress leniently.

type KYBRegistryCandidateRequest

type KYBRegistryCandidateRequest struct {
	// Candidate handle from `POST /v3/kyb/search/`
	// (`kyb_registry.companies[].kyb_response_id`). Ephemeral - use it shortly
	// after the search that produced it. Required.
	KYBResponseID string `json:"kyb_response_id"`

	// Your identifier for this company; echoed back and stored with the business
	// session.
	VendorData Opt[string] `json:"vendor_data"`

	// Free-form JSON stored with the business session and echoed back.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Must be `true` (the default). KYB registry selects are always persisted so
	// billing and retrieval can be tracked; `false` returns `400`.
	SaveAPIRequest Opt[bool] `json:"save_api_request"`
}

KYBRegistryCandidateRequest is a request object.

func (KYBRegistryCandidateRequest) MarshalJSON

func (r KYBRegistryCandidateRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type KYBRegistryIndustry

type KYBRegistryIndustry struct {
	// Activity code as the registry prints it (for example `73110`).
	Code string `json:"code"`

	// Activity label, when the registry publishes one.
	Description string `json:"description"`

	// Classification system, one name per system whichever source reported it: `UK
	// SIC 2007`, `US SIC`, `NACE Rev. 2`, `NACE Rev. 2.1`, `NAF Rev. 2`, `CNAE`,
	// `SBI`, `NOGA 2008`, `CAE Rev. 4`, `Canada SIC 1977`; other national systems
	// keep the registry's own name. Null when the registry does not name the
	// system.
	Scheme string `json:"scheme"`

	// True for the company's main activity. Exactly one entry is primary when the
	// list is not empty.
	IsPrimary bool `json:"is_primary"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBRegistryIndustry: An activity the registry classifies the company under, in the same shape for every country and registry source.

func (*KYBRegistryIndustry) UnmarshalJSON

func (r *KYBRegistryIndustry) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBRegistryIndustry leniently.

type KYBRegistryOwnership

type KYBRegistryOwnership struct {
	// `delivered` when the registry published ownership; `unavailable` when it did
	// not (see `unavailable_reason`); `pending` while the registry is still
	// fetching it; `not_requested` for the Basic tier.
	Status KYBRegistryOwnershipStatus `json:"status"`

	// The tier the workflow ordered.
	TierRequested KYBRegistryOwnershipTierRequested `json:"tier_requested"`

	// The tier the registry delivered (and that is billed). A UBO request answered
	// with direct shareholders only is `shareholders`.
	TierDelivered KYBRegistryOwnershipTierDelivered `json:"tier_delivered"`

	// Why a requested ownership tier was not delivered. Null unless `status` is
	// `unavailable` or `pending`.
	UnavailableReason KYBRegistryOwnershipUnavailableReason `json:"unavailable_reason"`

	// True when the direct shareholders' stated stakes add up to 100% (within one
	// percentage point of rounding); false when they do not; null when ownership
	// was not delivered or a stake is not stated.
	DirectOwnershipComplete bool `json:"direct_ownership_complete"`

	// Parts of the ownership chain the registry could not resolve, for example no
	// group structure on record above the direct owners.
	Unresolved []KYBRegistryOwnershipUnresolved `json:"unresolved"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBRegistryOwnership: The outcome of the ownership (Shareholders / UBO) tier, in the same shape for every country and registry source.

func (*KYBRegistryOwnership) UnmarshalJSON

func (r *KYBRegistryOwnership) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBRegistryOwnership leniently.

type KYBRegistryOwnershipStatus

type KYBRegistryOwnershipStatus string

KYBRegistryOwnershipStatus: `delivered` when the registry published ownership; `unavailable` when it did not (see `unavailable_reason`); `pending` while the registry is still fetching it; `not_requested` for the Basic tier.

KYBRegistryOwnershipStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBRegistryOwnershipStatusNotRequested KYBRegistryOwnershipStatus = "not_requested"
	KYBRegistryOwnershipStatusPending      KYBRegistryOwnershipStatus = "pending"
	KYBRegistryOwnershipStatusDelivered    KYBRegistryOwnershipStatus = "delivered"
	KYBRegistryOwnershipStatusUnavailable  KYBRegistryOwnershipStatus = "unavailable"
)

Known values of KYBRegistryOwnershipStatus.

type KYBRegistryOwnershipTierDelivered

type KYBRegistryOwnershipTierDelivered string

KYBRegistryOwnershipTierDelivered: The tier the registry delivered (and that is billed). A UBO request answered with direct shareholders only is `shareholders`.

KYBRegistryOwnershipTierDelivered is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBRegistryOwnershipTierDeliveredBasic        KYBRegistryOwnershipTierDelivered = "basic"
	KYBRegistryOwnershipTierDeliveredShareholders KYBRegistryOwnershipTierDelivered = "shareholders"
	KYBRegistryOwnershipTierDeliveredUBO          KYBRegistryOwnershipTierDelivered = "ubo"
)

Known values of KYBRegistryOwnershipTierDelivered.

type KYBRegistryOwnershipTierRequested

type KYBRegistryOwnershipTierRequested string

KYBRegistryOwnershipTierRequested: The tier the workflow ordered.

KYBRegistryOwnershipTierRequested is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBRegistryOwnershipTierRequestedBasic        KYBRegistryOwnershipTierRequested = "basic"
	KYBRegistryOwnershipTierRequestedShareholders KYBRegistryOwnershipTierRequested = "shareholders"
	KYBRegistryOwnershipTierRequestedUBO          KYBRegistryOwnershipTierRequested = "ubo"
)

Known values of KYBRegistryOwnershipTierRequested.

type KYBRegistryOwnershipUnavailableReason

type KYBRegistryOwnershipUnavailableReason string

KYBRegistryOwnershipUnavailableReason: Why a requested ownership tier was not delivered. Null unless `status` is `unavailable` or `pending`.

KYBRegistryOwnershipUnavailableReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBRegistryOwnershipUnavailableReasonNoOwnersOnRecord            KYBRegistryOwnershipUnavailableReason = "no_owners_on_record"
	KYBRegistryOwnershipUnavailableReasonNoNaturalPersonOwner        KYBRegistryOwnershipUnavailableReason = "no_natural_person_owner"
	KYBRegistryOwnershipUnavailableReasonOwnershipSectionUnavailable KYBRegistryOwnershipUnavailableReason = "ownership_section_unavailable"
	KYBRegistryOwnershipUnavailableReasonCompanyNotFound             KYBRegistryOwnershipUnavailableReason = "company_not_found"
	KYBRegistryOwnershipUnavailableReasonAmbiguousCompanyMatch       KYBRegistryOwnershipUnavailableReason = "ambiguous_company_match"
	KYBRegistryOwnershipUnavailableReasonMissingRegistrationNumber   KYBRegistryOwnershipUnavailableReason = "missing_registration_number"
	KYBRegistryOwnershipUnavailableReasonEntityTypeNotCovered        KYBRegistryOwnershipUnavailableReason = "entity_type_not_covered"
	KYBRegistryOwnershipUnavailableReasonProviderUnavailable         KYBRegistryOwnershipUnavailableReason = "provider_unavailable"
	KYBRegistryOwnershipUnavailableReasonOther                       KYBRegistryOwnershipUnavailableReason = "other"
)

Known values of KYBRegistryOwnershipUnavailableReason.

type KYBRegistryOwnershipUnresolved

type KYBRegistryOwnershipUnresolved struct {
	Reason  string `json:"reason"`
	Section string `json:"section"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBRegistryOwnershipUnresolved is a response object.

func (*KYBRegistryOwnershipUnresolved) UnmarshalJSON

func (r *KYBRegistryOwnershipUnresolved) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBRegistryOwnershipUnresolved leniently.

type KYBRegistrySearchResults

type KYBRegistrySearchResults struct {
	// Deduplicated candidate list. Empty while `search_resolved=false` (webhook
	// mode) or when nothing matched.
	Companies  []KYBRegistrySearchResultsCompanies `json:"companies"`
	Pagination KYBRegistrySearchResultsPagination  `json:"pagination"`

	// Registry search lifecycle status.
	SearchStatus KYBRegistrySearchResultsSearchStatus `json:"search_status"`

	// `true` once the candidate list is final.
	SearchResolved bool `json:"search_resolved"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBRegistrySearchResults is a response object.

func (*KYBRegistrySearchResults) UnmarshalJSON

func (r *KYBRegistrySearchResults) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBRegistrySearchResults leniently.

type KYBRegistrySearchResultsCompanies

type KYBRegistrySearchResultsCompanies struct {
	// Handle for this candidate - pass it to `POST /v3/kyb/select/` to retrieve the
	// full profile. Ephemeral and scoped to this search: do not store it long-term;
	// re-search to get a fresh one.
	KYBResponseID string `json:"kyb_response_id"`

	// Registered company name.
	Name string `json:"name"`

	// Registry registration number.
	RegistrationNumber string `json:"registration_number"`

	// Normalized registry status of the company (e.g. `active`, `dissolved`,
	// `inactive`, `struck off`).
	Status string `json:"status"`

	// Legal form as reported by the registry.
	Type string `json:"type"`

	// Registered address of the candidate, when the registry returns one. Use it,
	// with the registration number, to tell same-named companies apart: in the
	// United States a candidate can be listed under the state where the company
	// operates rather than the state you searched.
	RegisteredAddress string `json:"registered_address"`

	// Registry-reported risk level, when available. Usually `null` at search time.
	RiskLevel string `json:"risk_level"`

	// Always `pending` for search candidates - the full company profile is only
	// fetched (and billed) when you select the candidate.
	FetchStatus string `json:"fetch_status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBRegistrySearchResultsCompanies is a response object.

func (*KYBRegistrySearchResultsCompanies) UnmarshalJSON

func (r *KYBRegistrySearchResultsCompanies) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBRegistrySearchResultsCompanies leniently.

type KYBRegistrySearchResultsPagination

type KYBRegistrySearchResultsPagination struct {
	// Number of candidates returned.
	Total   int64 `json:"total"`
	Page    int64 `json:"page"`
	PerPage int64 `json:"per_page"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBRegistrySearchResultsPagination is a response object.

func (*KYBRegistrySearchResultsPagination) UnmarshalJSON

func (r *KYBRegistrySearchResultsPagination) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBRegistrySearchResultsPagination leniently.

type KYBRegistrySearchResultsSearchStatus

type KYBRegistrySearchResultsSearchStatus string

KYBRegistrySearchResultsSearchStatus: Registry search lifecycle status.

KYBRegistrySearchResultsSearchStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBRegistrySearchResultsSearchStatusPending  KYBRegistrySearchResultsSearchStatus = "pending"
	KYBRegistrySearchResultsSearchStatusResolved KYBRegistrySearchResultsSearchStatus = "resolved"
)

Known values of KYBRegistrySearchResultsSearchStatus.

type KYBRegistryShareholding

type KYBRegistryShareholding struct {
	// Share class or type as the registry names it.
	ShareClass string `json:"share_class"`

	// Number of shares held.
	NumberOfShares float64 `json:"number_of_shares"`

	// ISO 4217 currency of the values below.
	Currency string `json:"currency"`

	// Nominal value per share.
	NominalValue float64 `json:"nominal_value"`

	// Total value of the holding.
	TotalValue float64 `json:"total_value"`

	// Exact stake in percent, to four decimal places.
	Percentage float64 `json:"percentage"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBRegistryShareholding: What an owner holds, in the same shape for every country and registry source. Null when the registry states no holding. A band (for example a UK PSC's 25-50%) is not a stake: `percentage` is null and the band stays in `ownership_min_shares` / `ownership_max_shares`.

func (*KYBRegistryShareholding) UnmarshalJSON

func (r *KYBRegistryShareholding) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBRegistryShareholding leniently.

type KYBSearchParams

type KYBSearchParams struct {
	// ISO 3166-1 alpha-2 code of the country whose company registry to search. For
	// example, `GB`. Where company registries operate at state or province level,
	// append the ISO 3166-2 subdivision code as `XX-YY`: `US-CA` searches the
	// California registry. United States searches always require the subdivision -
	// a bare `US` is rejected. Case-insensitive; normalized to upper case.
	// Required.
	CountryCode string `json:"country_code"`

	// Company name to search for. Either `name` or `registration_number` is
	// required.
	Name Opt[string] `json:"name"`

	// Registry registration number to search for. Either `name` or
	// `registration_number` is required.
	RegistrationNumber Opt[string] `json:"registration_number"`

	// Registry tier whose provider chain this search runs on. `basic` (default)
	// searches the country's Lite chain; `shareholders` and `ubo` search that
	// tier's ownership chain, which can be a different source, so an empty Lite
	// search does not prove the registry lacks the company. A country that does not
	// offer the named tier is searched at the highest tier it offers up to that
	// one. Retrieve the candidate from the endpoint that sells the tier you
	// searched: `POST /v3/kyb/select/` (Lite), `POST /v3/kyb/shareholders/` or
	// `POST /v3/kyb/ubo/`.
	Tier Opt[KYBSearchParamsTier] `json:"tier"`

	// Name-matching strategy applied by the registry search. `contains` is the only
	// accepted value: no registry source behind the search offers a prefix or fuzzy
	// mode, so `start_with` and `fuzzy` are rejected with `400` (`not a valid
	// choice`).
	SearchType Opt[KYBSearchParamsSearchType] `json:"search_type"`

	// Your identifier for this lookup; echoed back and included in the webhook
	// callback.
	VendorData Opt[string] `json:"vendor_data"`

	// Free-form JSON; echoed back and included in the webhook callback.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Switches the search to asynchronous mode: the API returns immediately and
	// POSTs an unsigned `kyb.registry_search.resolved` callback to this URL when
	// the candidate list is ready.
	WebhookURL Opt[string] `json:"webhook_url"`
}

KYBSearchParams holds the parameters of Client.KYB.Search.

func (KYBSearchParams) MarshalJSON

func (r KYBSearchParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type KYBSearchParamsSearchType

type KYBSearchParamsSearchType string

KYBSearchParamsSearchType: Name-matching strategy applied by the registry search. `contains` is the only accepted value: no registry source behind the search offers a prefix or fuzzy mode, so `start_with` and `fuzzy` are rejected with `400` (`not a valid choice`).

KYBSearchParamsSearchType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBSearchParamsSearchTypeContains KYBSearchParamsSearchType = "contains"
)

Known values of KYBSearchParamsSearchType.

type KYBSearchParamsTier

type KYBSearchParamsTier string

KYBSearchParamsTier: Registry tier whose provider chain this search runs on. `basic` (default) searches the country's Lite chain; `shareholders` and `ubo` search that tier's ownership chain, which can be a different source, so an empty Lite search does not prove the registry lacks the company. A country that does not offer the named tier is searched at the highest tier it offers up to that one. Retrieve the candidate from the endpoint that sells the tier you searched: `POST /v3/kyb/select/` (Lite), `POST /v3/kyb/shareholders/` or `POST /v3/kyb/ubo/`.

KYBSearchParamsTier is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBSearchParamsTierBasic        KYBSearchParamsTier = "basic"
	KYBSearchParamsTierShareholders KYBSearchParamsTier = "shareholders"
	KYBSearchParamsTierUBO          KYBSearchParamsTier = "ubo"
)

Known values of KYBSearchParamsTier.

type KYBSearchResponse

type KYBSearchResponse struct {
	// With `webhook_url`: the persisted search-request id, echoed as `request_id`
	// in the `kyb.registry_search.resolved` callback. Without `webhook_url`: a
	// transient correlation UUID (the search is not stored).
	RequestID   string                   `json:"request_id"`
	KYBRegistry KYBRegistrySearchResults `json:"kyb_registry"`

	// Echo of the `vendor_data` you sent.
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` you sent.
	Metadata  map[string]any `json:"metadata"`
	CreatedAt time.Time      `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBSearchResponse is a response object.

func (*KYBSearchResponse) UnmarshalJSON

func (r *KYBSearchResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBSearchResponse leniently.

type KYBSelectResponse

type KYBSelectResponse struct {
	// Id of the business session created for this retrieval. The stored record
	// (visible in the console) keeps updating if the registry resolves after the
	// response.
	RequestID string `json:"request_id"`

	// The tier this endpoint sells: `basic` (Lite) for select, `shareholders`,
	// `ubo`.
	RegistryTierRequested KYBSelectResponseRegistryTierRequested `json:"registry_tier_requested"`

	// The tier actually delivered and billed. Lower than requested when the
	// country's registries hold no ownership data, or the registry has no ownership
	// record for this company.
	RegistryTierDelivered KYBSelectResponseRegistryTierDelivered `json:"registry_tier_delivered"`

	// Full registry company profile.
	KYBRegistry KYBSelectResponseKYBRegistry `json:"kyb_registry"`

	// Echo of the `vendor_data` you sent.
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` you sent.
	Metadata  map[string]any `json:"metadata"`
	CreatedAt time.Time      `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBSelectResponse is a response object.

func (*KYBSelectResponse) UnmarshalJSON

func (r *KYBSelectResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBSelectResponse leniently.

type KYBSelectResponseKYBRegistry

type KYBSelectResponseKYBRegistry struct {
	// Didit's id for this company record.
	UUID   string `json:"uuid"`
	NodeID string `json:"node_id"`

	// Didit's assessment of the registry check (e.g. `In Review` when the company
	// is not active in the registry or ownership data could not be derived).
	Status KYBSelectResponseKYBRegistryStatus `json:"status"`

	// Normalized company status as reported by the registry.
	RegistryStatus KYBSelectResponseKYBRegistryRegistryStatus `json:"registry_status"`

	// `true` once the registry returned the full profile. `false` when the registry
	// was still processing after polling - the stored record completes
	// automatically once the registry resolves.
	DataResolved       bool   `json:"data_resolved"`
	CompanyName        string `json:"company_name"`
	RegistrationNumber string `json:"registration_number"`

	// ISO 3166-1 alpha-2.
	CountryCode string `json:"country_code"`

	// Subdivision code when the registry is regional (e.g. `CA` for `US-CA`); empty
	// otherwise.
	Region            string `json:"region"`
	CompanyType       string `json:"company_type"`
	IncorporationDate string `json:"incorporation_date"`
	RegisteredAddress string `json:"registered_address"`
	TaxNumber         string `json:"tax_number"`

	// Registry-reported risk level, when available.
	RiskLevel string `json:"risk_level"`

	// Registry verification status, when available.
	VerificationStatus string `json:"verification_status"`

	// Always `true` for this endpoint - the profile was retrieved from an official
	// registry.
	IsFromRegistry bool `json:"is_from_registry"`

	// Registry fetch lifecycle. Mirrored by `data_resolved`.
	FetchStatus KYBSelectResponseKYBRegistryFetchStatus `json:"fetch_status"`

	// Alternative, trading, former or original-language company names as text, when
	// reported.
	AlternativeNames string `json:"alternative_names"`

	// Activity description or classification code, when reported.
	NatureOfBusiness  string `json:"nature_of_business"`
	RegisteredCapital string `json:"registered_capital"`

	// Decimal amount as a string, when reported.
	RegisteredCapitalAmount string `json:"registered_capital_amount"`

	// ISO 4217 code, when reported.
	RegisteredCapitalCurrency string `json:"registered_capital_currency"`
	Website                   string `json:"website"`
	Email                     string `json:"email"`
	Phone                     string `json:"phone"`

	// LEI, when reported.
	LegalEntityIdentifier string `json:"legal_entity_identifier"`

	// Registry/jurisdiction the company is registered with, when reported.
	LocationOfRegistration string `json:"location_of_registration"`

	// EU VAT number, when collected during the hosted registry step or edited
	// afterwards. At select time this is typically not yet set - VAT and tax ID
	// validation runs when the end user submits the registry step in the hosted
	// flow.
	VATNumber string `json:"vat_number"`

	// Result of validating the VAT number or, when there is none, the `tax_number`,
	// at registry submit. `valid` / `invalid`: decided by the official registry of
	// the country (EU VIES, Norway, Switzerland, Brazil, Colombia, Costa Rica,
	// Ecuador, Paraguay; Poland also by its domestic VAT register). `format_valid`
	// / `invalid_format`: decided by the country's format and check-digit rules
	// where no registry can be queried. `could_not_validate`: the registry was
	// unavailable. `not_applicable`: no number, a country without registry or
	// rules, or a sandbox session.
	VATValidationStatus KYBSelectResponseKYBRegistryVATValidationStatus `json:"vat_validation_status"`

	// The number that was checked, as the source knows it (for example the VAT
	// number derived from a French SIREN or a Dutch RSIN). `null` when no check
	// ran.
	VATValidatedNumber string `json:"vat_validated_number"`

	// The source that decided `vat_validation_status`: an official registry, or
	// `format_rules`. `null` when no check ran.
	VATValidationSource KYBSelectResponseKYBRegistryVATValidationSource `json:"vat_validation_source"`

	// Name registered with the source that validated the number, when it discloses
	// one. Only set when the status is `valid`.
	VATValidatedName string `json:"vat_validated_name"`

	// Address registered with the source that validated the number, when it
	// discloses one. Only set when the status is `valid`.
	VATValidatedAddress string `json:"vat_validated_address"`

	// Timestamp of the check. `null` when no check ran.
	VATCheckedAt time.Time `json:"vat_checked_at"`

	// Registry-reported share/capital details (currency, total shares, share
	// classes), when available.
	FinancialSummary map[string]any `json:"financial_summary"`

	// Directors, secretaries, and other officers extracted from the registry.
	Officers []KYBSelectResponseKYBRegistryOfficers `json:"officers"`

	// Beneficial owners / persons with significant control extracted from the
	// registry. Can be empty when the registry does not expose ownership.
	BeneficialOwners []KYBSelectResponseKYBRegistryBeneficialOwners `json:"beneficial_owners"`

	// Every address the registry states, one canonical shape. Null when it states
	// none.
	Addresses []KYBRegistryAddress `json:"addresses"`

	// The activities the registry classifies the company under, one canonical
	// shape. Null when it states none.
	Industries []KYBRegistryIndustry `json:"industries"`

	// Registry filing dates, when available. Annual returns and general meetings
	// use last_annual_return_date and last_agm_date; they are distinct from
	// financial accounts.
	Accounts map[string]any `json:"accounts"`

	// Raw record returned by the registry source, kept for reviewers. Its shape
	// differs by country and source and is not a stable contract: read the
	// canonical fields (`addresses`, `industries`, `ownership`,
	// `beneficial_owners[].shareholding`) instead.
	RegistryData map[string]any `json:"registry_data"`

	// Always `null` on this endpoint (used by the hosted KYB flow when end users
	// edit registry data).
	UserProvidedData map[string]any `json:"user_provided_data"`

	// Always `null` on this endpoint.
	ConfirmedByUserAt time.Time `json:"confirmed_by_user_at"`

	// Set when a console reviewer edits the record later.
	LastConsoleEditAt time.Time `json:"last_console_edit_at"`

	// Whether the registry-sourced data can still be edited in the hosted
	// flow/console.
	IsEditable bool `json:"is_editable"`

	// Same as the top-level `registry_tier_delivered`.
	RegistryTierDelivered KYBSelectResponseKYBRegistryRegistryTierDelivered `json:"registry_tier_delivered"`

	// `delivered` when the ownership data came back, `unavailable` when an
	// ownership tier was requested but the registry had none for this company (see
	// `registry_data.ownership_error`), `not_requested` on the Lite tier.
	RegistryOwnershipStatus KYBSelectResponseKYBRegistryRegistryOwnershipStatus `json:"registry_ownership_status"`
	Ownership               KYBRegistryOwnership                                `json:"ownership"`

	// The registry tier the workflow ordered: `basic`, `shareholders` or `ubo`.
	// Also in `ownership.tier_requested`.
	RegistryTier string `json:"registry_tier"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBSelectResponseKYBRegistry: Full registry company profile.

func (*KYBSelectResponseKYBRegistry) UnmarshalJSON

func (r *KYBSelectResponseKYBRegistry) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBSelectResponseKYBRegistry leniently.

type KYBSelectResponseKYBRegistryBeneficialOwners

type KYBSelectResponseKYBRegistryBeneficialOwners struct {
	UUID      string `json:"uuid"`
	Name      string `json:"name"`
	FirstName string `json:"first_name"`
	LastName  string `json:"last_name"`

	// Whether the owner is a natural person or a corporate entity.
	EntityType KYBSelectResponseKYBRegistryBeneficialOwnersEntityType `json:"entity_type"`

	// Normalized roles (e.g. `ubo`, `shareholder`).
	Roles []string `json:"roles"`

	// Lower bound of the ownership band reported by the registry (e.g. `25%`).
	OwnershipMinShares string `json:"ownership_min_shares"`

	// Upper bound of the ownership band reported by the registry.
	OwnershipMaxShares string                                                `json:"ownership_max_shares"`
	IsActive           bool                                                  `json:"is_active"`
	KYCStatus          KYBSelectResponseKYBRegistryBeneficialOwnersKYCStatus `json:"kyc_status"`
	KYCSessionURL      string                                                `json:"kyc_session_url"`

	// Parsed ownership percentage (max bound, falling back to min bound).
	EffectiveOwnershipPercent float64 `json:"effective_ownership_percent"`
	CompanyName               string  `json:"company_name"`
	RegistrationNumber        string  `json:"registration_number"`
	CountryOfBirth            string  `json:"country_of_birth"`
	Email                     string  `json:"email"`
	Nationality               string  `json:"nationality"`
	Designation               string  `json:"designation"`
	VotingMinShares           string  `json:"voting_min_shares"`
	VotingMaxShares           string  `json:"voting_max_shares"`

	// Complete birth date when reported.
	DateOfBirth string `json:"date_of_birth"`

	// Appointment date when reported.
	AppointmentDate string                  `json:"appointment_date"`
	Shareholding    KYBRegistryShareholding `json:"shareholding"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBSelectResponseKYBRegistryBeneficialOwners is a response object.

func (*KYBSelectResponseKYBRegistryBeneficialOwners) UnmarshalJSON

func (r *KYBSelectResponseKYBRegistryBeneficialOwners) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBSelectResponseKYBRegistryBeneficialOwners leniently.

type KYBSelectResponseKYBRegistryBeneficialOwnersEntityType

type KYBSelectResponseKYBRegistryBeneficialOwnersEntityType string

KYBSelectResponseKYBRegistryBeneficialOwnersEntityType: Whether the owner is a natural person or a corporate entity.

KYBSelectResponseKYBRegistryBeneficialOwnersEntityType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBSelectResponseKYBRegistryBeneficialOwnersEntityTypePerson  KYBSelectResponseKYBRegistryBeneficialOwnersEntityType = "person"
	KYBSelectResponseKYBRegistryBeneficialOwnersEntityTypeCompany KYBSelectResponseKYBRegistryBeneficialOwnersEntityType = "company"
)

Known values of KYBSelectResponseKYBRegistryBeneficialOwnersEntityType.

type KYBSelectResponseKYBRegistryBeneficialOwnersKYCStatus

type KYBSelectResponseKYBRegistryBeneficialOwnersKYCStatus string

KYBSelectResponseKYBRegistryBeneficialOwnersKYCStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBSelectResponseKYBRegistryBeneficialOwnersKYCStatusApproved KYBSelectResponseKYBRegistryBeneficialOwnersKYCStatus = "Approved"
	KYBSelectResponseKYBRegistryBeneficialOwnersKYCStatusDeclined KYBSelectResponseKYBRegistryBeneficialOwnersKYCStatus = "Declined"
	KYBSelectResponseKYBRegistryBeneficialOwnersKYCStatusPending  KYBSelectResponseKYBRegistryBeneficialOwnersKYCStatus = "Pending"
)

Known values of KYBSelectResponseKYBRegistryBeneficialOwnersKYCStatus.

type KYBSelectResponseKYBRegistryFetchStatus

type KYBSelectResponseKYBRegistryFetchStatus string

KYBSelectResponseKYBRegistryFetchStatus: Registry fetch lifecycle. Mirrored by `data_resolved`.

KYBSelectResponseKYBRegistryFetchStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBSelectResponseKYBRegistryFetchStatusPending  KYBSelectResponseKYBRegistryFetchStatus = "pending"
	KYBSelectResponseKYBRegistryFetchStatusResolved KYBSelectResponseKYBRegistryFetchStatus = "resolved"
)

Known values of KYBSelectResponseKYBRegistryFetchStatus.

type KYBSelectResponseKYBRegistryOfficers

type KYBSelectResponseKYBRegistryOfficers struct {
	UUID string `json:"uuid"`
	Name string `json:"name"`

	// Raw registry designation (e.g. `Director`, `Secretary`).
	Designation string `json:"designation"`

	// Normalized role derived from the designation. Full 17-value model set;
	// registry parsing on this endpoint typically emits director,
	// non_executive_director, secretary, chairman, or company_officer.
	Role        KYBSelectResponseKYBRegistryOfficersRole `json:"role"`
	Nationality string                                   `json:"nationality"`

	// `false` when the registry marks the appointment as resigned.
	IsActive bool `json:"is_active"`

	// Status of an associated KYC session, when one was started for this officer.
	// `null` otherwise.
	KYCStatus KYBSelectResponseKYBRegistryOfficersKYCStatus `json:"kyc_status"`

	// Verification URL of the associated KYC session, when one exists.
	KYCSessionURL string `json:"kyc_session_url"`

	// Given name when explicitly reported by the registry; not inferred from the
	// full name.
	FirstName string `json:"first_name"`

	// Family name when explicitly reported by the registry.
	LastName string `json:"last_name"`

	// Officer address reported by the registry.
	Address string `json:"address"`

	// Date the officer was appointed.
	AppointmentDate string `json:"appointment_date"`

	// Date the appointment ended, when reported.
	TerminationDate string `json:"termination_date"`

	// Complete registry-reported birth date. Null when only a birth year or month
	// is known.
	DateOfBirth string `json:"date_of_birth"`

	// Registry-reported birth year, including when the full date is unavailable.
	DateOfBirthYear int64 `json:"date_of_birth_year"`

	// Registry-reported birth month. Null when only the year is known.
	DateOfBirthMonth int64 `json:"date_of_birth_month"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

KYBSelectResponseKYBRegistryOfficers is a response object.

func (*KYBSelectResponseKYBRegistryOfficers) UnmarshalJSON

func (r *KYBSelectResponseKYBRegistryOfficers) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes KYBSelectResponseKYBRegistryOfficers leniently.

type KYBSelectResponseKYBRegistryOfficersKYCStatus

type KYBSelectResponseKYBRegistryOfficersKYCStatus string

KYBSelectResponseKYBRegistryOfficersKYCStatus: Status of an associated KYC session, when one was started for this officer. `null` otherwise.

KYBSelectResponseKYBRegistryOfficersKYCStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBSelectResponseKYBRegistryOfficersKYCStatusApproved KYBSelectResponseKYBRegistryOfficersKYCStatus = "Approved"
	KYBSelectResponseKYBRegistryOfficersKYCStatusDeclined KYBSelectResponseKYBRegistryOfficersKYCStatus = "Declined"
	KYBSelectResponseKYBRegistryOfficersKYCStatusPending  KYBSelectResponseKYBRegistryOfficersKYCStatus = "Pending"
)

Known values of KYBSelectResponseKYBRegistryOfficersKYCStatus.

type KYBSelectResponseKYBRegistryOfficersRole

type KYBSelectResponseKYBRegistryOfficersRole string

KYBSelectResponseKYBRegistryOfficersRole: Normalized role derived from the designation. Full 17-value model set; registry parsing on this endpoint typically emits director, non_executive_director, secretary, chairman, or company_officer.

KYBSelectResponseKYBRegistryOfficersRole is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBSelectResponseKYBRegistryOfficersRoleDirector             KYBSelectResponseKYBRegistryOfficersRole = "director"
	KYBSelectResponseKYBRegistryOfficersRoleNonExecutiveDirector KYBSelectResponseKYBRegistryOfficersRole = "non_executive_director"
	KYBSelectResponseKYBRegistryOfficersRoleSecretary            KYBSelectResponseKYBRegistryOfficersRole = "secretary"
	KYBSelectResponseKYBRegistryOfficersRoleChairman             KYBSelectResponseKYBRegistryOfficersRole = "chairman"
	KYBSelectResponseKYBRegistryOfficersRoleUBO                  KYBSelectResponseKYBRegistryOfficersRole = "ubo"
	KYBSelectResponseKYBRegistryOfficersRoleShareholder          KYBSelectResponseKYBRegistryOfficersRole = "shareholder"
	KYBSelectResponseKYBRegistryOfficersRoleRepresentative       KYBSelectResponseKYBRegistryOfficersRole = "representative"
	KYBSelectResponseKYBRegistryOfficersRoleFounder              KYBSelectResponseKYBRegistryOfficersRole = "founder"
	KYBSelectResponseKYBRegistryOfficersRoleLegalAdvisor         KYBSelectResponseKYBRegistryOfficersRole = "legal_advisor"
	KYBSelectResponseKYBRegistryOfficersRoleAuthorizedSignatory  KYBSelectResponseKYBRegistryOfficersRole = "authorized_signatory"
	KYBSelectResponseKYBRegistryOfficersRoleTrustee              KYBSelectResponseKYBRegistryOfficersRole = "trustee"
	KYBSelectResponseKYBRegistryOfficersRoleBeneficiary          KYBSelectResponseKYBRegistryOfficersRole = "beneficiary"
	KYBSelectResponseKYBRegistryOfficersRoleCompanyOfficer       KYBSelectResponseKYBRegistryOfficersRole = "company_officer"
	KYBSelectResponseKYBRegistryOfficersRoleSettlor              KYBSelectResponseKYBRegistryOfficersRole = "settlor"
	KYBSelectResponseKYBRegistryOfficersRoleProtector            KYBSelectResponseKYBRegistryOfficersRole = "protector"
	KYBSelectResponseKYBRegistryOfficersRoleInvestor             KYBSelectResponseKYBRegistryOfficersRole = "investor"
	KYBSelectResponseKYBRegistryOfficersRoleOther                KYBSelectResponseKYBRegistryOfficersRole = "other"
)

Known values of KYBSelectResponseKYBRegistryOfficersRole.

type KYBSelectResponseKYBRegistryRegistryOwnershipStatus

type KYBSelectResponseKYBRegistryRegistryOwnershipStatus string

KYBSelectResponseKYBRegistryRegistryOwnershipStatus: `delivered` when the ownership data came back, `unavailable` when an ownership tier was requested but the registry had none for this company (see `registry_data.ownership_error`), `not_requested` on the Lite tier.

KYBSelectResponseKYBRegistryRegistryOwnershipStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBSelectResponseKYBRegistryRegistryOwnershipStatusNotRequested KYBSelectResponseKYBRegistryRegistryOwnershipStatus = "not_requested"
	KYBSelectResponseKYBRegistryRegistryOwnershipStatusDelivered    KYBSelectResponseKYBRegistryRegistryOwnershipStatus = "delivered"
	KYBSelectResponseKYBRegistryRegistryOwnershipStatusUnavailable  KYBSelectResponseKYBRegistryRegistryOwnershipStatus = "unavailable"
)

Known values of KYBSelectResponseKYBRegistryRegistryOwnershipStatus.

type KYBSelectResponseKYBRegistryRegistryStatus

type KYBSelectResponseKYBRegistryRegistryStatus string

KYBSelectResponseKYBRegistryRegistryStatus: Normalized company status as reported by the registry.

KYBSelectResponseKYBRegistryRegistryStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBSelectResponseKYBRegistryRegistryStatusActive                  KYBSelectResponseKYBRegistryRegistryStatus = "active"
	KYBSelectResponseKYBRegistryRegistryStatusDissolved               KYBSelectResponseKYBRegistryRegistryStatus = "dissolved"
	KYBSelectResponseKYBRegistryRegistryStatusDeregistered            KYBSelectResponseKYBRegistryRegistryStatus = "deregistered"
	KYBSelectResponseKYBRegistryRegistryStatusSeeFullDetails          KYBSelectResponseKYBRegistryRegistryStatus = "see full details"
	KYBSelectResponseKYBRegistryRegistryStatusAuthorised              KYBSelectResponseKYBRegistryRegistryStatus = "authorised"
	KYBSelectResponseKYBRegistryRegistryStatusAppointedRepresentative KYBSelectResponseKYBRegistryRegistryStatus = "appointed representative"
	KYBSelectResponseKYBRegistryRegistryStatusUnauthorised            KYBSelectResponseKYBRegistryRegistryStatus = "unauthorised"
	KYBSelectResponseKYBRegistryRegistryStatusInactive                KYBSelectResponseKYBRegistryRegistryStatus = "inactive"
	KYBSelectResponseKYBRegistryRegistryStatusNoLongerAuthorised      KYBSelectResponseKYBRegistryRegistryStatus = "no longer authorised"
	KYBSelectResponseKYBRegistryRegistryStatusClosed                  KYBSelectResponseKYBRegistryRegistryStatus = "closed"
	KYBSelectResponseKYBRegistryRegistryStatusStruckOff               KYBSelectResponseKYBRegistryRegistryStatus = "struck off"
)

Known values of KYBSelectResponseKYBRegistryRegistryStatus.

type KYBSelectResponseKYBRegistryRegistryTierDelivered

type KYBSelectResponseKYBRegistryRegistryTierDelivered string

KYBSelectResponseKYBRegistryRegistryTierDelivered: Same as the top-level `registry_tier_delivered`.

KYBSelectResponseKYBRegistryRegistryTierDelivered is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBSelectResponseKYBRegistryRegistryTierDeliveredBasic        KYBSelectResponseKYBRegistryRegistryTierDelivered = "basic"
	KYBSelectResponseKYBRegistryRegistryTierDeliveredShareholders KYBSelectResponseKYBRegistryRegistryTierDelivered = "shareholders"
	KYBSelectResponseKYBRegistryRegistryTierDeliveredUBO          KYBSelectResponseKYBRegistryRegistryTierDelivered = "ubo"
)

Known values of KYBSelectResponseKYBRegistryRegistryTierDelivered.

type KYBSelectResponseKYBRegistryStatus

type KYBSelectResponseKYBRegistryStatus string

KYBSelectResponseKYBRegistryStatus: Didit's assessment of the registry check (e.g. `In Review` when the company is not active in the registry or ownership data could not be derived).

KYBSelectResponseKYBRegistryStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBSelectResponseKYBRegistryStatusNotFinished KYBSelectResponseKYBRegistryStatus = "Not Finished"
	KYBSelectResponseKYBRegistryStatusApproved    KYBSelectResponseKYBRegistryStatus = "Approved"
	KYBSelectResponseKYBRegistryStatusDeclined    KYBSelectResponseKYBRegistryStatus = "Declined"
	KYBSelectResponseKYBRegistryStatusInReview    KYBSelectResponseKYBRegistryStatus = "In Review"
)

Known values of KYBSelectResponseKYBRegistryStatus.

type KYBSelectResponseKYBRegistryVATValidationSource

type KYBSelectResponseKYBRegistryVATValidationSource string

KYBSelectResponseKYBRegistryVATValidationSource: The source that decided `vat_validation_status`: an official registry, or `format_rules`. `null` when no check ran.

KYBSelectResponseKYBRegistryVATValidationSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBSelectResponseKYBRegistryVATValidationSourceEuVies           KYBSelectResponseKYBRegistryVATValidationSource = "eu_vies"
	KYBSelectResponseKYBRegistryVATValidationSourcePlVATWhiteList   KYBSelectResponseKYBRegistryVATValidationSource = "pl_vat_white_list"
	KYBSelectResponseKYBRegistryVATValidationSourceNoBrreg          KYBSelectResponseKYBRegistryVATValidationSource = "no_brreg"
	KYBSelectResponseKYBRegistryVATValidationSourceChUIDRegister    KYBSelectResponseKYBRegistryVATValidationSource = "ch_uid_register"
	KYBSelectResponseKYBRegistryVATValidationSourceBrReceitaFederal KYBSelectResponseKYBRegistryVATValidationSource = "br_receita_federal"
	KYBSelectResponseKYBRegistryVATValidationSourceCoRues           KYBSelectResponseKYBRegistryVATValidationSource = "co_rues"
	KYBSelectResponseKYBRegistryVATValidationSourceCrHacienda       KYBSelectResponseKYBRegistryVATValidationSource = "cr_hacienda"
	KYBSelectResponseKYBRegistryVATValidationSourceEcSri            KYBSelectResponseKYBRegistryVATValidationSource = "ec_sri"
	KYBSelectResponseKYBRegistryVATValidationSourcePyDnit           KYBSelectResponseKYBRegistryVATValidationSource = "py_dnit"
	KYBSelectResponseKYBRegistryVATValidationSourceFormatRules      KYBSelectResponseKYBRegistryVATValidationSource = "format_rules"
)

Known values of KYBSelectResponseKYBRegistryVATValidationSource.

type KYBSelectResponseKYBRegistryVATValidationStatus

type KYBSelectResponseKYBRegistryVATValidationStatus string

KYBSelectResponseKYBRegistryVATValidationStatus: Result of validating the VAT number or, when there is none, the `tax_number`, at registry submit. `valid` / `invalid`: decided by the official registry of the country (EU VIES, Norway, Switzerland, Brazil, Colombia, Costa Rica, Ecuador, Paraguay; Poland also by its domestic VAT register). `format_valid` / `invalid_format`: decided by the country's format and check-digit rules where no registry can be queried. `could_not_validate`: the registry was unavailable. `not_applicable`: no number, a country without registry or rules, or a sandbox session.

KYBSelectResponseKYBRegistryVATValidationStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBSelectResponseKYBRegistryVATValidationStatusValid            KYBSelectResponseKYBRegistryVATValidationStatus = "valid"
	KYBSelectResponseKYBRegistryVATValidationStatusInvalid          KYBSelectResponseKYBRegistryVATValidationStatus = "invalid"
	KYBSelectResponseKYBRegistryVATValidationStatusFormatValid      KYBSelectResponseKYBRegistryVATValidationStatus = "format_valid"
	KYBSelectResponseKYBRegistryVATValidationStatusInvalidFormat    KYBSelectResponseKYBRegistryVATValidationStatus = "invalid_format"
	KYBSelectResponseKYBRegistryVATValidationStatusCouldNotValidate KYBSelectResponseKYBRegistryVATValidationStatus = "could_not_validate"
	KYBSelectResponseKYBRegistryVATValidationStatusNotApplicable    KYBSelectResponseKYBRegistryVATValidationStatus = "not_applicable"
)

Known values of KYBSelectResponseKYBRegistryVATValidationStatus.

type KYBSelectResponseRegistryTierDelivered

type KYBSelectResponseRegistryTierDelivered string

KYBSelectResponseRegistryTierDelivered: The tier actually delivered and billed. Lower than requested when the country's registries hold no ownership data, or the registry has no ownership record for this company.

KYBSelectResponseRegistryTierDelivered is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBSelectResponseRegistryTierDeliveredBasic        KYBSelectResponseRegistryTierDelivered = "basic"
	KYBSelectResponseRegistryTierDeliveredShareholders KYBSelectResponseRegistryTierDelivered = "shareholders"
	KYBSelectResponseRegistryTierDeliveredUBO          KYBSelectResponseRegistryTierDelivered = "ubo"
)

Known values of KYBSelectResponseRegistryTierDelivered.

type KYBSelectResponseRegistryTierRequested

type KYBSelectResponseRegistryTierRequested string

KYBSelectResponseRegistryTierRequested: The tier this endpoint sells: `basic` (Lite) for select, `shareholders`, `ubo`.

KYBSelectResponseRegistryTierRequested is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	KYBSelectResponseRegistryTierRequestedBasic        KYBSelectResponseRegistryTierRequested = "basic"
	KYBSelectResponseRegistryTierRequestedShareholders KYBSelectResponseRegistryTierRequested = "shareholders"
	KYBSelectResponseRegistryTierRequestedUBO          KYBSelectResponseRegistryTierRequested = "ubo"
)

Known values of KYBSelectResponseRegistryTierRequested.

type KYBService

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

KYBService holds the kyb operations. Use it through Client.KYB.

func (*KYBService) ListShareholders

ListShareholders: KYB registry company with shareholders (standalone).

Retrieve the Lite profile **plus the direct shareholders** (natural persons and corporate entities, with their ownership bands) of one candidate returned by `POST /v3/kyb/search/`.

**Pairing with search.** Pass the candidate's `kyb_response_id` exactly as returned by a search of the same application. The search runs on the Lite registry chain; when the country's ownership data lives at another registry Didit re-finds the company there by registration number, at no extra cost.

**Billing.** Billed at the country's Shareholders price - see [KYB registry pricing](/getting-started/kyb-registry-pricing). When the registry holds no shareholder record for the company (or the country offers no ownership data at all) the Lite profile is delivered and billed instead: read `registry_tier_delivered` and `registry_ownership_status`. The balance is checked against the Shareholders price before any registry call (`403` when short).

**Availability.** v3 only. Every call creates a business session (its id is the `request_id`).

**Pending reports.** When a report is still being prepared, or the ownership section has not been retrieved from the registry yet, the endpoint returns 202 Accepted, kyb_registry.fetch_status=pending, kyb_registry.registry_ownership_status=pending, and registry_tier_delivered=null. Keep request_id and retrieve GET /v3/session/{request_id}/decision/ until registry_checks[0].company.fetch_status is resolved. Didit completes the report automatically and charges the delivered tier once it is ready. Do not repeat the purchase while it is pending; every new POST creates a separate request.

POST /v3/kyb/shareholders/

func (*KYBService) ListUBOs

ListUBOs: KYB registry company with ultimate beneficial owners (standalone).

Retrieve the Lite profile, the direct shareholders **and the ultimate beneficial owners** resolved through the ownership chain (`registry_data.ubo_resolution` carries the corporate parent chain) of one candidate returned by `POST /v3/kyb/search/`.

**Pairing with search.** Pass the candidate's `kyb_response_id` exactly as returned by a search of the same application. The search runs on the Lite registry chain; when the country's ownership data lives at another registry Didit re-finds the company there by registration number, at no extra cost.

**Billing.** Billed at the country's UBO price - see [KYB registry pricing](/getting-started/kyb-registry-pricing). The tier delivered is the highest the country and the registry can serve: Shareholders when the resolved report names no natural person as a beneficial owner, Lite when there is no ownership record at all; `registry_tier_delivered` names what was billed. The balance is checked against the UBO price before any registry call (`403` when short).

**Availability.** v3 only. Every call creates a business session (its id is the `request_id`).

**Pending reports.** When a report is still being prepared, or the ownership section has not been retrieved from the registry yet, the endpoint returns 202 Accepted, kyb_registry.fetch_status=pending, kyb_registry.registry_ownership_status=pending, and registry_tier_delivered=null. Keep request_id and retrieve GET /v3/session/{request_id}/decision/ until registry_checks[0].company.fetch_status is resolved. Didit completes the report automatically and charges the delivered tier once it is ready. Do not repeat the purchase while it is pending; every new POST creates a separate request.

POST /v3/kyb/ubo/

func (*KYBService) Search

Search: KYB registry company search (standalone).

Search official company registries for candidate companies by name and/or registration number. This is step 1 of the two-step registry flow: **search** returns lightweight candidates, then `POST /v3/kyb/select/` retrieves the full profile of one candidate.

**Search billing.** Successful searches using a paid company-data source cost USD 0.50 per request, regardless of candidate count. Empty results, failures and results served only by other sources are not charged. The applicable price is reserved before searching; insufficient balance returns 403 with code `insufficient_credits`. Contract rates apply where agreed, and an unconfigured contract search rate returns 403. Sandbox searches are free. Repeating a successful search can incur another charge; callback delivery does not add a charge. Profile retrieval is billed separately. This search fee also applies to v2. Candidates always come back with `fetch_status: "pending"`: the full company data is only fetched (and billed) on select.

**`kyb_response_id` is ephemeral.** It is a per-search handle, not a stable company id. Select promptly after searching and re-search to get a fresh handle instead of storing it.

**`tier` picks the provider chain.** `tier` names the registry tier the search runs on: `basic` (the default, the Lite chain), `shareholders` or `ubo`. The search uses the provider chain that serves that tier, and it is not always the same chain the Lite search reads, so an empty Lite search is not proof that the registry does not hold the company - search again at the tier you need. A country that does not offer the tier you name is searched at the highest tier it offers up to that one. Retrieve the candidate from the endpoint that sells that tier: `POST /v3/kyb/select/` (Lite), `POST /v3/kyb/shareholders/` or `POST /v3/kyb/ubo/`.

**Authentication.** `POST /v3/kyb/search/` (and `/v2/`) takes your application's API key in the `x-api-key` header. The hosted `POST /v1/kyb/search/` is the session-authenticated route a hosted verification flow calls: it answers `403` to an API key and takes no `tier` - the workflow's KYB registry configuration picks the chain.

**Two modes.**

  • *Synchronous (default):* the API polls the registry until the search resolves and returns the final candidate list (`search_resolved: true`).
  • *Asynchronous:* pass `webhook_url` and the API returns immediately - usually with `search_status: "pending"` and an empty candidate list - then POSTs a `kyb.registry_search.resolved` callback to your URL when the registry finishes. The callback body is `{"event_id", "event_type": "kyb.registry_search.resolved", "request_id", "vendor_data", "metadata", "search_status", "search_resolved", "kyb_registry", "timestamp", "created_at"}` - note `timestamp` and `created_at` in the callback are epoch integers, unlike this endpoint's ISO `created_at` - and is sent **unsigned** (header `X-Didit-Unsigned-Callback: true`, no `X-Signature`).

**Country codes.** ISO 3166-1 alpha-2 (`GB`, `DE`), plus `XX-YY` subdivision codes where registries are regional - e.g. `US-CA` for California.

**Sandbox.** Keys from sandbox applications return one static candidate without contacting any registry.

POST /v3/kyb/search/

func (*KYBService) Select

Select: KYB registry company select - Lite tier (standalone).

Retrieve the **Lite** registry profile of one candidate returned by `POST /v3/kyb/search/` - company details, registered address, identifiers, status, activity and the officers, plus the raw registry payload. Shareholders and ultimate beneficial owners are sold by `POST /v3/kyb/shareholders/` and `POST /v3/kyb/ubo/`.

**Pairing with search.** Pass the candidate's `kyb_response_id` exactly as returned by a search of the same application. The handle is ephemeral and scoped to that search - select promptly, and re-search for a fresh handle rather than storing it.

**Billing.** Each select is billed at the country's Lite price (any search fee is separate); see [KYB registry pricing](/getting-started/kyb-registry-pricing). The balance is checked before any registry call (`403` when short) and the charge is recorded against the created business session.

**Persistence is mandatory.** Every select creates a business session (its id is the `request_id`) so billing and retrieval can be tracked; it appears in the console. `save_api_request` is accepted for symmetry but must be `true` (the default) - sending `false` returns `400`.

POST /v3/kyb/select/

type ListsCreateParams

type ListsCreateParams struct {
	// List name. Must differ from the name of every other list of the application,
	// system lists included. Required.
	Name string `json:"name"`

	// Optional free-text description.
	Description Opt[string] `json:"description"`

	// `allowlist` or `custom`. `blocklist` is refused with `400`. Required.
	ListType ListsCreateParamsListType `json:"list_type"`

	// What the list holds: `face`, `document` (document number), `phone`, `email`,
	// `ip_address` (IP address or CIDR range), `device_fingerprint`,
	// `wallet_address`, `bank_account`, `country` (ISO 3166-1 alpha-3), `user` or
	// `business` (your `vendor_data`), or `key` (any string). It decides how entry
	// values are validated and matched. Cannot be changed later. Required.
	EntryType ListsCreateParamsEntryType `json:"entry_type"`
}

ListsCreateParams holds the parameters of Client.Lists.Create.

func (ListsCreateParams) MarshalJSON

func (r ListsCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type ListsCreateParamsEntryType

type ListsCreateParamsEntryType string

ListsCreateParamsEntryType: What the list holds: `face`, `document` (document number), `phone`, `email`, `ip_address` (IP address or CIDR range), `device_fingerprint`, `wallet_address`, `bank_account`, `country` (ISO 3166-1 alpha-3), `user` or `business` (your `vendor_data`), or `key` (any string). It decides how entry values are validated and matched. Cannot be changed later.

ListsCreateParamsEntryType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ListsCreateParamsEntryTypeFace              ListsCreateParamsEntryType = "face"
	ListsCreateParamsEntryTypeDocument          ListsCreateParamsEntryType = "document"
	ListsCreateParamsEntryTypePhone             ListsCreateParamsEntryType = "phone"
	ListsCreateParamsEntryTypeEmail             ListsCreateParamsEntryType = "email"
	ListsCreateParamsEntryTypeIPAddress         ListsCreateParamsEntryType = "ip_address"
	ListsCreateParamsEntryTypeDeviceFingerprint ListsCreateParamsEntryType = "device_fingerprint"
	ListsCreateParamsEntryTypeWalletAddress     ListsCreateParamsEntryType = "wallet_address"
	ListsCreateParamsEntryTypeBankAccount       ListsCreateParamsEntryType = "bank_account"
	ListsCreateParamsEntryTypeCountry           ListsCreateParamsEntryType = "country"
	ListsCreateParamsEntryTypeUser              ListsCreateParamsEntryType = "user"
	ListsCreateParamsEntryTypeBusiness          ListsCreateParamsEntryType = "business"
	ListsCreateParamsEntryTypeKey               ListsCreateParamsEntryType = "key"
)

Known values of ListsCreateParamsEntryType.

type ListsCreateParamsListType

type ListsCreateParamsListType string

ListsCreateParamsListType: `allowlist` or `custom`. `blocklist` is refused with `400`.

ListsCreateParamsListType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ListsCreateParamsListTypeAllowlist ListsCreateParamsListType = "allowlist"
	ListsCreateParamsListTypeCustom    ListsCreateParamsListType = "custom"
)

Known values of ListsCreateParamsListType.

type ListsEntriesCreateParams

type ListsEntriesCreateParams struct {
	// The value to list, validated against the list's `entry_type`: `email` a valid
	// email address; `phone` a valid international number, stored in E.164;
	// `ip_address` an IP address or CIDR range (for example `10.0.0.0/8`);
	// `device_fingerprint` at least 8 characters among letters, digits, `-`, `_`,
	// `:` and `.` (a blocklist refuses a fingerprint that several distinct devices
	// have reported); `country` an ISO 3166-1 alpha-2 or alpha-3 code, stored as
	// alpha-3; `user` and `business` the `vendor_data`; any other type a non-empty
	// string. Stored in lower case except phone numbers and country codes, and a
	// list holds each value once (case-insensitive). Required unless
	// `reference_session_id` is sent; must be left empty with a document-capture
	// `face_image_source`.
	Value Opt[string] `json:"value"`

	// A person or business verification session of your application to take the
	// value from. Didit reads the session's most recent record of the list's entry
	// type (`face`, `document`, `phone`, `email`, `ip_address` or
	// `device_fingerprint`), links the entry to the session and to that record, and
	// fills `display_label` and `metadata` for documents. For a
	// `device_fingerprint` blocklist, a session that only has a device-class
	// fingerprint, or was completed on more than one device, is refused: send the
	// exact fingerprint as `value`. For other entry types, or when the session has
	// no such record, send `value` too; your `value` is then stored and the entry
	// is still linked to the session.
	ReferenceSessionID Opt[string] `json:"reference_session_id"`

	// UUID of the record the entry stands for when it does not come from a session:
	// a transaction UUID, or the `didit_internal_id` of a user or business. Pair it
	// with `metadata.reference_type`. Replaced by the session's record when
	// `reference_session_id` provides one.
	ReferenceObjectUUID Opt[string] `json:"reference_object_uuid"`

	// Face lists with `reference_session_id`: which of the session's images the
	// face is taken from. `liveness` (default) is the liveness selfie.
	// `front_image_camera_front` and `back_image_camera_front` are the selfies the
	// front camera took while the user photographed the front or back of their
	// document: accepted only on the system face blocklist, with
	// `reference_session_id` and an empty `value`. Each selfie can be added once
	// and must show one clear face.
	FaceImageSource Opt[ListsEntriesCreateParamsFaceImageSource] `json:"face_image_source"`

	// With a document-capture `face_image_source`: the ID verification node whose
	// selfie to use, for workflows with more than one. Defaults to the most recent
	// ID verification that has that image. Refused with `liveness`.
	ReferenceNodeID Opt[string] `json:"reference_node_id"`

	// Human-readable label. When empty, Didit derives one from the session where it
	// can (for example the holder's name and document number).
	DisplayLabel Opt[string] `json:"display_label"`

	// Free-text note, such as the reason for listing.
	Comment Opt[string] `json:"comment"`

	// Free-form JSON stored with the entry and returned as stored. Use
	// `reference_type` and `reference_id` so the console links back to the source.
	// `reference_image_url` and `front_image_url` are set by Didit only and are
	// dropped if you send them. For an entry read from a session, Didit's keys are
	// merged with yours.
	Metadata Opt[ListsEntriesCreateParamsMetadata] `json:"metadata"`
}

ListsEntriesCreateParams holds the parameters of Client.Lists.Entries.Create.

func (ListsEntriesCreateParams) MarshalJSON

func (r ListsEntriesCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type ListsEntriesCreateParamsFaceImageSource

type ListsEntriesCreateParamsFaceImageSource string

ListsEntriesCreateParamsFaceImageSource: Face lists with `reference_session_id`: which of the session's images the face is taken from. `liveness` (default) is the liveness selfie. `front_image_camera_front` and `back_image_camera_front` are the selfies the front camera took while the user photographed the front or back of their document: accepted only on the system face blocklist, with `reference_session_id` and an empty `value`. Each selfie can be added once and must show one clear face.

ListsEntriesCreateParamsFaceImageSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ListsEntriesCreateParamsFaceImageSourceLiveness              ListsEntriesCreateParamsFaceImageSource = "liveness"
	ListsEntriesCreateParamsFaceImageSourceFrontImageCameraFront ListsEntriesCreateParamsFaceImageSource = "front_image_camera_front"
	ListsEntriesCreateParamsFaceImageSourceBackImageCameraFront  ListsEntriesCreateParamsFaceImageSource = "back_image_camera_front"
)

Known values of ListsEntriesCreateParamsFaceImageSource.

type ListsEntriesCreateParamsMetadata

type ListsEntriesCreateParamsMetadata struct {
	// What `reference_object_uuid` points to.
	ReferenceType Opt[ListsEntriesCreateParamsMetadataReferenceType] `json:"reference_type"`

	// Identifier of the source record.
	ReferenceID Opt[string] `json:"reference_id"`
}

ListsEntriesCreateParamsMetadata: Free-form JSON stored with the entry and returned as stored. Use `reference_type` and `reference_id` so the console links back to the source. `reference_image_url` and `front_image_url` are set by Didit only and are dropped if you send them. For an entry read from a session, Didit's keys are merged with yours.

func (ListsEntriesCreateParamsMetadata) MarshalJSON

func (r ListsEntriesCreateParamsMetadata) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type ListsEntriesCreateParamsMetadataReferenceType

type ListsEntriesCreateParamsMetadataReferenceType string

ListsEntriesCreateParamsMetadataReferenceType: What `reference_object_uuid` points to.

ListsEntriesCreateParamsMetadataReferenceType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ListsEntriesCreateParamsMetadataReferenceTypeTransaction    ListsEntriesCreateParamsMetadataReferenceType = "transaction"
	ListsEntriesCreateParamsMetadataReferenceTypeVendorUser     ListsEntriesCreateParamsMetadataReferenceType = "vendor_user"
	ListsEntriesCreateParamsMetadataReferenceTypeVendorBusiness ListsEntriesCreateParamsMetadataReferenceType = "vendor_business"
)

Known values of ListsEntriesCreateParamsMetadataReferenceType.

type ListsEntriesListParams

type ListsEntriesListParams struct {
	// Case-insensitive text that the entry's `value` or `display_label` must
	// contain.
	Search Opt[string] `json:"-" query:"search"`

	// Only the entries taken from this person verification session, for example to
	// see which of its faces are already listed.
	ReferenceSessionID Opt[string] `json:"-" query:"reference_session_id"`

	// Page size. Defaults to 50. A value above 1000000 returns `400`; zero, a
	// negative or a non-numeric value falls back to 50.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based index of the first item to return. Prefer following `next`. A
	// value above 1000000 returns `400`; a negative or non-numeric value falls back
	// to 0.
	Offset Opt[int64] `json:"-" query:"offset"`
}

ListsEntriesListParams holds the parameters of Client.Lists.Entries.List.

func (ListsEntriesListParams) MarshalJSON

func (r ListsEntriesListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type ListsEntriesService

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

ListsEntriesService holds the lists entries operations. Use it through Client.Lists.Entries.

func (*ListsEntriesService) Create

Create: Create a list entry.

Adds one entry to a list, in one of three ways: by `value`; from a verification session with `reference_session_id`, where Didit reads the value from the session's most recent record of the list's entry type and links the entry to it; or by `value` with a `reference_object_uuid` and `metadata.reference_type` pointing back to a transaction, user or business. On the system face, document, phone and email blocklists, the record read from the session is also flagged as blocklisted, so new matching sessions are declined; on the system user and business blocklists, matching users or businesses are set to `BLOCKED`. Sessions and transactions that already finished are not changed. A scoped API key needs `workflows: write`. See [Create a list entry](https://docs.didit.me/management-api/lists/create-entry) for each mode.

POST /v3/lists/{list_uuid}/entries/

func (*ListsEntriesService) Delete

func (r *ListsEntriesService) Delete(ctx context.Context, listUUID string, entryUUID string, opts ...option.RequestOption) error

Delete: Delete a list entry.

Deletes one entry from a list, system lists included. The entry stops matching at once, and deletion is irreversible: to list the value again, create a new entry. On a system face, document, phone or email blocklist, the record the entry stands for is no longer flagged as blocklisted; on the system user or business blocklist, users or businesses of the application whose `vendor_data` equals the entry's value (or whose `didit_internal_id` equals its `reference_object_uuid`) and that are `BLOCKED` return to `ACTIVE`. Sessions and transactions that already finished keep their status. A scoped API key needs `workflows: write`.

DELETE /v3/lists/{list_uuid}/entries/{entry_uuid}/

func (*ListsEntriesService) List

List: List list entries.

Returns the current entries of one list, newest first. `search` matches part of an entry's `value` or `display_label` without regard to case, and `reference_session_id` narrows the results to the entries taken from one person verification session. Image URLs in `metadata` are short-lived signed URLs issued again on every call; a scoped API key without `media: read` receives `null` in their place. A scoped API key needs `workflows: read`.

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/lists/{list_uuid}/entries/

func (*ListsEntriesService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*ListsEntriesService) UploadFace

UploadFace: Upload a face to a list.

Adds a face to a face blocklist or face allowlist from a base64-encoded JPEG or PNG image, for when you have no verification session to reference. Didit detects the faces in the image, uses the largest one, and creates an entry whose `value` and `reference_object_uuid` are the UUID of the new face. A blocklisted face declines new sessions whose face matches; an allowlisted face skips the duplicated-face action and never overrides a blocklist match. In a sandbox application the image is not analyzed and the entry matches nothing. A scoped API key needs `workflows: write`. To list a face from an existing session, use [Create a list entry](https://docs.didit.me/management-api/lists/create-entry) with `reference_session_id` instead.

POST /v3/lists/{list_uuid}/entries/face-upload/

type ListsEntriesUploadFaceParams

type ListsEntriesUploadFaceParams struct {
	// Base64-encoded JPEG or PNG, at most 2 MB once decoded, showing a clearly
	// visible face. Send the bare base64 string, without a `data:image/...;base64,`
	// prefix. Required.
	Image string `json:"image"`

	// Optional free-text note, such as the reason for listing.
	Comment Opt[string] `json:"comment"`
}

ListsEntriesUploadFaceParams holds the parameters of Client.Lists.Entries.UploadFace.

func (ListsEntriesUploadFaceParams) MarshalJSON

func (r ListsEntriesUploadFaceParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type ListsListParams

type ListsListParams struct {
	// Only lists of this type.
	ListType Opt[ListsListParamsListType] `json:"-" query:"list_type"`

	// Only lists of this entry type.
	EntryType Opt[ListsListParamsEntryType] `json:"-" query:"entry_type"`

	// Sort order: `-created_at` (newest first, the default) or `created_at` (oldest
	// first).
	Ordering Opt[ListsListParamsOrdering] `json:"-" query:"ordering"`

	// Page size. Defaults to 50. A value above 1000000 returns `400`; zero, a
	// negative or a non-numeric value falls back to 50.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based index of the first item to return. Prefer following `next`. A
	// value above 1000000 returns `400`; a negative or non-numeric value falls back
	// to 0.
	Offset Opt[int64] `json:"-" query:"offset"`
}

ListsListParams holds the parameters of Client.Lists.List.

func (ListsListParams) MarshalJSON

func (r ListsListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type ListsListParamsEntryType

type ListsListParamsEntryType string

ListsListParamsEntryType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ListsListParamsEntryTypeFace              ListsListParamsEntryType = "face"
	ListsListParamsEntryTypeDocument          ListsListParamsEntryType = "document"
	ListsListParamsEntryTypePhone             ListsListParamsEntryType = "phone"
	ListsListParamsEntryTypeEmail             ListsListParamsEntryType = "email"
	ListsListParamsEntryTypeIPAddress         ListsListParamsEntryType = "ip_address"
	ListsListParamsEntryTypeDeviceFingerprint ListsListParamsEntryType = "device_fingerprint"
	ListsListParamsEntryTypeWalletAddress     ListsListParamsEntryType = "wallet_address"
	ListsListParamsEntryTypeBankAccount       ListsListParamsEntryType = "bank_account"
	ListsListParamsEntryTypeCountry           ListsListParamsEntryType = "country"
	ListsListParamsEntryTypeUser              ListsListParamsEntryType = "user"
	ListsListParamsEntryTypeBusiness          ListsListParamsEntryType = "business"
	ListsListParamsEntryTypeKey               ListsListParamsEntryType = "key"
)

Known values of ListsListParamsEntryType.

type ListsListParamsListType

type ListsListParamsListType string

ListsListParamsListType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ListsListParamsListTypeBlocklist ListsListParamsListType = "blocklist"
	ListsListParamsListTypeAllowlist ListsListParamsListType = "allowlist"
	ListsListParamsListTypeCustom    ListsListParamsListType = "custom"
)

Known values of ListsListParamsListType.

type ListsListParamsOrdering

type ListsListParamsOrdering string

ListsListParamsOrdering is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ListsListParamsOrderingCreatedAt  ListsListParamsOrdering = "-created_at"
	ListsListParamsOrderingCreatedAt2 ListsListParamsOrdering = "created_at"
)

Known values of ListsListParamsOrdering.

type ListsService

type ListsService struct {
	Entries *ListsEntriesService
	// contains filtered or unexported fields
}

ListsService holds the lists operations. Use it through Client.Lists.

func (*ListsService) Create

Create: Create a list.

Creates an allowlist or a custom list in the application the API key belongs to. Blocklists cannot be created: Didit provisions one system blocklist per entry type, and you add to it with [Create a list entry](https://docs.didit.me/management-api/lists/create-entry). `entry_type` cannot change after creation and decides how entry values are validated and matched. Allowlist entries mark matching items as trusted (for example, a face allowlist skips the duplicated-face action) and never override a blocklist match; reference any list from a workflow or transaction rule condition with `value_type: "list"`. A scoped API key needs `workflows: write`.

POST /v3/lists/

func (*ListsService) Delete

func (r *ListsService) Delete(ctx context.Context, listUUID string, opts ...option.RequestOption) error

Delete: Delete a list.

Deletes an allowlist or custom list together with its entries. Deletion is irreversible: the list and its entries no longer appear in any read, and workflow and transaction rule conditions that reference the list evaluate it as an empty list from then on. Sessions and transactions already evaluated keep their results, and the name can be reused for a new list. System lists cannot be deleted and return `400`; to empty one, [delete its entries](https://docs.didit.me/management-api/lists/delete-entry). A scoped API key needs `workflows: write`.

DELETE /v3/lists/{list_uuid}/

func (*ListsService) List

List: List lists.

Returns the application's lists, newest first: the system lists Didit provisions (one blocklist per entry type, the **High Risk Countries** custom list, and any system allowlist) and the allowlists and custom lists you created. Filter with `list_type` and `entry_type`; deleted lists never appear. Results are paginated with `limit` and `offset`. A scoped API key needs `workflows: read`. See [Lists](https://docs.didit.me/management-api/lists/overview) for what each list type does.

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/lists/

func (*ListsService) ListAutoPaging

func (r *ListsService) ListAutoPaging(ctx context.Context, params ListsListParams, opts ...option.RequestOption) *PageIterator[ComplianceList]

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*ListsService) Retrieve

func (r *ListsService) Retrieve(ctx context.Context, listUUID string, opts ...option.RequestOption) (*ComplianceList, error)

Retrieve: Get a list.

Returns one list of the application with its entry count and when its newest entry was added. A list of another application, or one that was deleted, returns `404`. This returns the list only: read its values with [List list entries](https://docs.didit.me/management-api/lists/list-entries). A scoped API key needs `workflows: read`.

GET /v3/lists/{list_uuid}/

func (*ListsService) Update

func (r *ListsService) Update(ctx context.Context, listUUID string, params ListsUpdateParams, opts ...option.RequestOption) (*ListsUpdateResponse, error)

Update: Update a list.

Renames a list or changes its description. Only `name` and `description` are read; any other field is ignored, so `list_type` and `entry_type` keep the values they were created with. System lists cannot be modified and return `400`. The response contains only `name` and `description`: call [Get a list](https://docs.didit.me/management-api/lists/get) for the full list. A scoped API key needs `workflows: write`.

PATCH /v3/lists/{list_uuid}/

type ListsUpdateParams

type ListsUpdateParams struct {
	// New name. Must differ from the name of every other list of the application.
	Name Opt[string] `json:"name"`

	// New description. Send an empty string to clear it.
	Description Opt[string] `json:"description"`
}

ListsUpdateParams holds the parameters of Client.Lists.Update.

func (ListsUpdateParams) MarshalJSON

func (r ListsUpdateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type ListsUpdateResponse

type ListsUpdateResponse struct {
	// The list's name after the update.
	Name string `json:"name"`

	// The list's description after the update.
	Description string `json:"description"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ListsUpdateResponse is a response object.

func (*ListsUpdateResponse) UnmarshalJSON

func (r *ListsUpdateResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ListsUpdateResponse leniently.

type LoginRequest

type LoginRequest struct {
	// Required.
	Email string `json:"email"`

	// Required.
	Password string `json:"password"`
}

LoginRequest is a request object.

func (LoginRequest) MarshalJSON

func (r LoginRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type LoginResponse

type LoginResponse struct {
	// RS256-signed JWT. Use as `Authorization: Bearer <token>` for Account
	// Management endpoints.
	AccessToken  string `json:"access_token"`
	RefreshToken string `json:"refresh_token"`

	// Lifetime of the access token in seconds (default 86400).
	ExpiresIn int64  `json:"expires_in"`
	Message   string `json:"message"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

LoginResponse is a response object.

func (*LoginResponse) UnmarshalJSON

func (r *LoginResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes LoginResponse leniently.

type MonitoringEvent

type MonitoringEvent struct {
	// Didit identifier of the event. Use it as `{event_uuid}` in the retrieve and
	// delete calls.
	EventUUID string `json:"event_uuid"`

	// Your own identifier, the idempotency key you sent.
	EventID string `json:"event_id"`

	// Event category.
	EventCategory MonitoringEventEventCategory `json:"event_category"`

	// What happened within the category, as you sent it.
	ActionType string `json:"action_type"`

	// When the event happened on your side.
	OccurredAt time.Time `json:"occurred_at"`

	// When Didit accepted the event.
	ReceivedAt time.Time `json:"received_at"`

	// `ACCEPTED`: stored, no matched rule changed its standing (the normal answer
	// for most events, and always the answer in a sandbox application, where no
	// rules run). `APPROVED`: a rule matched and the score stayed under your review
	// threshold. `IN_REVIEW`: a rule pushed the score over the review threshold or
	// set the status. `DECLINED`: a rule declined it or the score crossed your
	// decline threshold.
	Status MonitoringEventStatus `json:"status"`

	// Accumulated rule score. Starts at 0; rule `add_score` actions move it
	// (negative deltas are allowed).
	Score int64 `json:"score"`

	// `subject.vendor_data` of the event: your id for the user or company.
	SubjectVendorData string `json:"subject_vendor_data"`

	// `individual` or `company`: which kind of subject `subject_vendor_data` names.
	SubjectEntityType string `json:"subject_entity_type"`

	// UUID of the user (individual) or company the event resolved to, or null when
	// that record no longer exists.
	SubjectUUID string `json:"subject_uuid"`

	// The other player of a P2P event (promoted from
	// `payload.counterparty_vendor_data`).
	CounterpartyVendorData string `json:"counterparty_vendor_data"`

	// `session.session_id` sent with the event.
	SessionID string `json:"session_id"`

	// `device_context.fingerprint` sent with the event.
	DeviceFingerprint string `json:"device_fingerprint"`

	// IP address of the event. On the server lane this is
	// `device_context.network_context.ip_address` as you sent it; on the device
	// lane it is the IP of the request.
	IPAddress string `json:"ip_address"`

	// Country code of `ip_address` from IP enrichment, or null when the address was
	// not enriched (missing, private, or low-value telemetry whose address was not
	// already known).
	IPCountry string `json:"ip_country"`

	// Amount as a decimal string with 18 decimal places, from
	// `transaction_context.amount`, `payload.amount` or `payload.stake_amount`, in
	// that order.
	Amount string `json:"amount"`

	// Currency from `transaction_context.currency` or `payload.currency`.
	Currency string `json:"currency"`

	// Promoted from `payload.game_id`.
	GameID string `json:"game_id"`

	// Promoted from `payload.round_id`.
	RoundID string `json:"round_id"`

	// Promoted from `payload.bonus_id`.
	BonusID string `json:"bonus_id"`

	// Promoted from `payload.affiliate_code`.
	AffiliateCode string `json:"affiliate_code"`

	// Payment reference from `transaction_context.payment_reference_id` or
	// `payload.payment_reference_id`.
	PaymentReferenceID string `json:"payment_reference_id"`

	// Retention class. Payment and dispute events are `monetary_or_compliance`;
	// security and responsible-gambling events are `risk_relevant`;
	// `session.page_view`, `session.sdk_heartbeat`, `session.sdk_loaded`,
	// `session.device_seen`, `session.bot_signal_observed`,
	// `bonus.promotion_viewed` and `affiliate.referral_clicked` are `low_value`;
	// everything else is `standard`. An event an active rule matched is promoted to
	// `risk_relevant` (never demoted).
	RetentionClass MonitoringEventRetentionClass `json:"retention_class"`

	// Number of rules that matched the event, including rules in `TEST` mode (which
	// record evidence but apply no actions).
	RulesMatchedCount int64 `json:"rules_matched_count"`

	// `true` while an asynchronous rule (cross-subject correlation, or a sequence
	// longer than 24 hours) still has to run for this event. It resolves within
	// minutes and `status`, `score` and `rules_matched_count` update in place.
	CorrelationPending bool `json:"correlation_pending"`

	// Whether an SDK under backpressure may drop events of this kind. `false` for
	// every `security`, `payment`, `dispute` and `responsible_gambling` event and
	// for `gameplay.bet_placed`, `gameplay.bet_settled` and
	// `gameplay.p2p_settlement`.
	IsDroppable bool `json:"is_droppable"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

MonitoringEvent: One stored monitoring event as returned by the list and subject-timeline endpoints. Restricted evidence (payload, device context, rule evidence) is only returned by `GET /v3/events/{event_uuid}/`.

func (*MonitoringEvent) UnmarshalJSON

func (r *MonitoringEvent) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes MonitoringEvent leniently.

type MonitoringEventCreateRequest

type MonitoringEventCreateRequest struct {
	// Your identifier for the event, unique per application. It is the idempotency
	// key: resending the same `event_category`, `action_type`, `occurred_at`,
	// `subject.vendor_data` and `payload` under it is a replay, anything different
	// is a conflict. Required.
	EventID string `json:"event_id"`

	// Event category. Required.
	EventCategory MonitoringEventCreateRequestEventCategory `json:"event_category"`

	// What happened within the category. Open vocabulary; the managed actions
	// listed in [Event
	// ingestion](https://docs.didit.me/transaction-monitoring/events) (for example
	// `login`, `deposit_completed`, `chargeback_opened`) unlock typed validation
	// and managed rule fields. Leading and trailing whitespace is trimmed.
	// Required.
	ActionType string `json:"action_type"`

	// When the event happened on your side, ISO 8601 (a value without an offset is
	// read as UTC). Must be no more than 7 days in the past and no more than 5
	// minutes in the future. Required.
	OccurredAt time.Time `json:"occurred_at"`

	// Time zone of the occurrence on your side, for example `Europe/Madrid`. Stored
	// with the event; not returned by the read endpoints.
	TimeZone Opt[string] `json:"time_zone"`

	// The user or company the event belongs to. It resolves to the user (or
	// company) with this `vendor_data` in your application; one is created when
	// none exists. Required.
	Subject MonitoringEventCreateRequestSubject `json:"subject"`

	// The business the event belongs to, when it differs from the subject. Only
	// `vendor_data` is read.
	Business Opt[MonitoringEventCreateRequestBusiness] `json:"business"`

	// Your session context for the event.
	Session Opt[MonitoringEventCreateRequestSession] `json:"session"`

	// Device and network context, stored as sent and returned by `GET
	// /v3/events/{event_uuid}/`. On this server lane Didit does not see the end
	// user's connection, so the IP enriched and used by rules is
	// `network_context.ip_address` as you send it.
	DeviceContext Opt[MonitoringEventCreateRequestDeviceContext] `json:"device_context"`

	// Money context. Non-empty values here also satisfy the required payload keys
	// of the action.
	TransactionContext Opt[MonitoringEventCreateRequestTransactionContext] `json:"transaction_context"`

	// The category's domain fields, at most 16384 bytes once JSON-encoded. Some
	// actions require keys (in `payload` or `transaction_context`):
	// `gameplay.p2p_settlement` needs `game_id`, `counterparty_vendor_data`,
	// `stake_amount`, `net_result_amount`, `role` and one of `hand_id`, `round_id`,
	// `match_id`; `gameplay.bet_placed` and `gameplay.bet_settled` need `game_id`;
	// `payment.deposit_initiated`, `payment.deposit_completed`,
	// `payment.withdrawal_requested` and `payment.withdrawal_completed` need
	// `payment_reference_id`, `amount`, `currency`, `payment_method`, `status`;
	// `payment.withdrawal_address_changed` needs `withdrawal_address_hash`;
	// `dispute.chargeback_opened`, `dispute.chargeback_won` and
	// `dispute.chargeback_lost` need `payment_reference_id` and one of
	// `dispute_id`, `chargeback_id`; `session.bot_signal_observed` needs
	// `telemetry_schema_version` and one of `bot_score`, `actions_per_minute`,
	// `timing_variance_ms`, `pointer_entropy`, `keystroke_entropy`,
	// `reaction_time_ms_p50`; `responsible_gambling.self_exclusion_match` needs
	// `registry_source`, `exclusion_status`, `identity_match_ref`. Every `security`
	// action ending in `_changed` needs `changed_field`, plus
	// `previous_reference_hash` or `new_reference_hash` when the field is
	// `password`, `mfa_method`, `mfa`, `email`, `phone`, `withdrawal_address`,
	// `payout_method` or `api_key`. Send hashes and references, never a card
	// number, a full withdrawal address, a password hash or an MFA secret.
	Payload Opt[map[string]any] `json:"payload"`

	// Up to 100 keys of your own, addressable from rules as `custom_values.<key>`.
	// Values must be scalars (string, number, boolean or null); nested objects and
	// arrays are rejected.
	CustomValues Opt[map[string]any] `json:"custom_values"`
}

MonitoringEventCreateRequest: The event envelope, the same for every category. camelCase aliases are accepted: `eventId`, `eventCategory` (or `category`), `actionType`, `occurredAt`, `timeZone` (or `zoneId`), `deviceContext` (or `device`), `transactionContext`, `customValues` (or `props`); inside `subject`: `vendorData`, `entityType`, `fullName`; inside `session`: `sessionId`, `pageUrl`; inside `transaction_context`: `paymentReferenceId`.

func (MonitoringEventCreateRequest) MarshalJSON

func (r MonitoringEventCreateRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type MonitoringEventCreateRequestBusiness

type MonitoringEventCreateRequestBusiness struct {
	// Your id for the business. Filterable as `business_vendor_data`.
	VendorData Opt[string] `json:"vendor_data"`
}

MonitoringEventCreateRequestBusiness: The business the event belongs to, when it differs from the subject. Only `vendor_data` is read.

func (MonitoringEventCreateRequestBusiness) MarshalJSON

func (r MonitoringEventCreateRequestBusiness) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type MonitoringEventCreateRequestDeviceContext

type MonitoringEventCreateRequestDeviceContext struct {
	// Device fingerprint. Filterable as `device_fingerprint`.
	Fingerprint Opt[string] `json:"fingerprint"`

	// Your persistent device identifier.
	PersistentDeviceID Opt[string] `json:"persistent_device_id"`

	// Bot score from your own detection, as an integer.
	BotScore       Opt[int64]                                                   `json:"bot_score"`
	NetworkContext Opt[MonitoringEventCreateRequestDeviceContextNetworkContext] `json:"network_context"`
}

MonitoringEventCreateRequestDeviceContext: Device and network context, stored as sent and returned by `GET /v3/events/{event_uuid}/`. On this server lane Didit does not see the end user's connection, so the IP enriched and used by rules is `network_context.ip_address` as you send it.

func (MonitoringEventCreateRequestDeviceContext) MarshalJSON

MarshalJSON encodes the fields that are set.

type MonitoringEventCreateRequestDeviceContextNetworkContext

type MonitoringEventCreateRequestDeviceContextNetworkContext struct {
	// End user's IP address. Public addresses are enriched once per unique address.
	IPAddress Opt[string] `json:"ip_address"`
}

MonitoringEventCreateRequestDeviceContextNetworkContext is a request object.

func (MonitoringEventCreateRequestDeviceContextNetworkContext) MarshalJSON

MarshalJSON encodes the fields that are set.

type MonitoringEventCreateRequestEventCategory

type MonitoringEventCreateRequestEventCategory string

MonitoringEventCreateRequestEventCategory: Event category.

MonitoringEventCreateRequestEventCategory is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventCreateRequestEventCategoryAuth                MonitoringEventCreateRequestEventCategory = "auth"
	MonitoringEventCreateRequestEventCategorySession             MonitoringEventCreateRequestEventCategory = "session"
	MonitoringEventCreateRequestEventCategoryGameplay            MonitoringEventCreateRequestEventCategory = "gameplay"
	MonitoringEventCreateRequestEventCategoryBonus               MonitoringEventCreateRequestEventCategory = "bonus"
	MonitoringEventCreateRequestEventCategoryAffiliate           MonitoringEventCreateRequestEventCategory = "affiliate"
	MonitoringEventCreateRequestEventCategoryPayment             MonitoringEventCreateRequestEventCategory = "payment"
	MonitoringEventCreateRequestEventCategoryDispute             MonitoringEventCreateRequestEventCategory = "dispute"
	MonitoringEventCreateRequestEventCategorySecurity            MonitoringEventCreateRequestEventCategory = "security"
	MonitoringEventCreateRequestEventCategoryResponsibleGambling MonitoringEventCreateRequestEventCategory = "responsible_gambling"
	MonitoringEventCreateRequestEventCategoryCustom              MonitoringEventCreateRequestEventCategory = "custom"
)

Known values of MonitoringEventCreateRequestEventCategory.

type MonitoringEventCreateRequestSession

type MonitoringEventCreateRequestSession struct {
	// Your session identifier. Filterable and returned as `session_id`.
	SessionID Opt[string] `json:"session_id"`

	// Position of the event within the session. Returned as `session_sequence`.
	Sequence Opt[int64] `json:"sequence"`

	// Validated; not stored on the event.
	PageURL Opt[string] `json:"page_url"`

	// Validated; not stored on the event.
	Referrer Opt[string] `json:"referrer"`
}

MonitoringEventCreateRequestSession: Your session context for the event.

func (MonitoringEventCreateRequestSession) MarshalJSON

func (r MonitoringEventCreateRequestSession) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type MonitoringEventCreateRequestSubject

type MonitoringEventCreateRequestSubject struct {
	// Your id for the subject. Required.
	VendorData string `json:"vendor_data"`

	// `company` resolves the subject to a company; any other value (default
	// `individual`) resolves it to an individual. The same `vendor_data` can name
	// one of each.
	EntityType Opt[string] `json:"entity_type"`

	// Display name, used only when this event creates the user or company.
	FullName Opt[string] `json:"full_name"`

	// Validated as an email address; not stored on the event.
	Email Opt[string] `json:"email"`

	// Validated; not stored on the event.
	Phone Opt[string] `json:"phone"`

	// Validated; not stored on the event.
	Country Opt[string] `json:"country"`
}

MonitoringEventCreateRequestSubject: The user or company the event belongs to. It resolves to the user (or company) with this `vendor_data` in your application; one is created when none exists.

func (MonitoringEventCreateRequestSubject) MarshalJSON

func (r MonitoringEventCreateRequestSubject) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type MonitoringEventCreateRequestTransactionContext

type MonitoringEventCreateRequestTransactionContext struct {
	// Amount as a decimal string (a number is also accepted).
	Amount Opt[string] `json:"amount"`

	// Currency code.
	Currency Opt[string] `json:"currency"`

	// Direction of the money movement, for example `inbound` or `outbound`.
	Direction Opt[string] `json:"direction"`

	// Your payment reference. Filterable as `payment_reference_id`.
	PaymentReferenceID Opt[string] `json:"payment_reference_id"`
}

MonitoringEventCreateRequestTransactionContext: Money context. Non-empty values here also satisfy the required payload keys of the action.

func (MonitoringEventCreateRequestTransactionContext) MarshalJSON

MarshalJSON encodes the fields that are set.

type MonitoringEventDetail

type MonitoringEventDetail struct {
	// Didit identifier of the event. Use it as `{event_uuid}` in the retrieve and
	// delete calls.
	EventUUID string `json:"event_uuid"`

	// Your own identifier, the idempotency key you sent.
	EventID string `json:"event_id"`

	// Event category.
	EventCategory MonitoringEventDetailEventCategory `json:"event_category"`

	// What happened within the category, as you sent it.
	ActionType string `json:"action_type"`

	// When the event happened on your side.
	OccurredAt time.Time `json:"occurred_at"`

	// When Didit accepted the event.
	ReceivedAt time.Time `json:"received_at"`

	// `ACCEPTED`: stored, no matched rule changed its standing (the normal answer
	// for most events, and always the answer in a sandbox application, where no
	// rules run). `APPROVED`: a rule matched and the score stayed under your review
	// threshold. `IN_REVIEW`: a rule pushed the score over the review threshold or
	// set the status. `DECLINED`: a rule declined it or the score crossed your
	// decline threshold.
	Status MonitoringEventDetailStatus `json:"status"`

	// Accumulated rule score. Starts at 0; rule `add_score` actions move it
	// (negative deltas are allowed).
	Score int64 `json:"score"`

	// `subject.vendor_data` of the event: your id for the user or company.
	SubjectVendorData string `json:"subject_vendor_data"`

	// `individual` or `company`: which kind of subject `subject_vendor_data` names.
	SubjectEntityType string `json:"subject_entity_type"`

	// UUID of the user (individual) or company the event resolved to, or null when
	// that record no longer exists.
	SubjectUUID string `json:"subject_uuid"`

	// The other player of a P2P event (promoted from
	// `payload.counterparty_vendor_data`).
	CounterpartyVendorData string `json:"counterparty_vendor_data"`

	// `session.session_id` sent with the event.
	SessionID string `json:"session_id"`

	// `device_context.fingerprint` sent with the event.
	DeviceFingerprint string `json:"device_fingerprint"`

	// IP address of the event. On the server lane this is
	// `device_context.network_context.ip_address` as you sent it; on the device
	// lane it is the IP of the request.
	IPAddress string `json:"ip_address"`

	// Country code of `ip_address` from IP enrichment, or null when the address was
	// not enriched (missing, private, or low-value telemetry whose address was not
	// already known).
	IPCountry string `json:"ip_country"`

	// Amount as a decimal string with 18 decimal places, from
	// `transaction_context.amount`, `payload.amount` or `payload.stake_amount`, in
	// that order.
	Amount string `json:"amount"`

	// Currency from `transaction_context.currency` or `payload.currency`.
	Currency string `json:"currency"`

	// Promoted from `payload.game_id`.
	GameID string `json:"game_id"`

	// Promoted from `payload.round_id`.
	RoundID string `json:"round_id"`

	// Promoted from `payload.bonus_id`.
	BonusID string `json:"bonus_id"`

	// Promoted from `payload.affiliate_code`.
	AffiliateCode string `json:"affiliate_code"`

	// Payment reference from `transaction_context.payment_reference_id` or
	// `payload.payment_reference_id`.
	PaymentReferenceID string `json:"payment_reference_id"`

	// Retention class. Payment and dispute events are `monetary_or_compliance`;
	// security and responsible-gambling events are `risk_relevant`;
	// `session.page_view`, `session.sdk_heartbeat`, `session.sdk_loaded`,
	// `session.device_seen`, `session.bot_signal_observed`,
	// `bonus.promotion_viewed` and `affiliate.referral_clicked` are `low_value`;
	// everything else is `standard`. An event an active rule matched is promoted to
	// `risk_relevant` (never demoted).
	RetentionClass MonitoringEventDetailRetentionClass `json:"retention_class"`

	// Number of rules that matched the event, including rules in `TEST` mode (which
	// record evidence but apply no actions).
	RulesMatchedCount int64 `json:"rules_matched_count"`

	// `true` while an asynchronous rule (cross-subject correlation, or a sequence
	// longer than 24 hours) still has to run for this event. It resolves within
	// minutes and `status`, `score` and `rules_matched_count` update in place.
	CorrelationPending bool `json:"correlation_pending"`

	// Whether an SDK under backpressure may drop events of this kind. `false` for
	// every `security`, `payment`, `dispute` and `responsible_gambling` event and
	// for `gameplay.bet_placed`, `gameplay.bet_settled` and
	// `gameplay.p2p_settlement`.
	IsDroppable bool `json:"is_droppable"`

	// The category fields you sent in `payload`.
	Payload map[string]any `json:"payload"`

	// The scalar `custom_values` you sent. Didit adds `vpn_or_proxy_detected: true`
	// or `is_data_center: true` when IP enrichment flags the address and you did
	// not set them.
	CustomValues map[string]any `json:"custom_values"`

	// The device context as stored: your `device_context` (including `fingerprint`,
	// `persistent_device_id` and `bot_score` when sent) with `network_context`
	// completed by IP enrichment (`ip_country`, `ip_country_code`, `ip_city`,
	// `asn_number`, `asn_organization`, `is_vpn_or_tor`, `is_data_center`,
	// `proxy_type`, `connection_type`) for keys you left empty.
	DeviceContext map[string]any `json:"device_context"`

	// Field path to provenance: `customer` (sent by your backend), `sdk` (sent
	// through the device lane) or `server` (derived by Didit, such as `received_at`
	// and enriched network fields). Check it before acting on a match.
	FieldSources map[string]MonitoringEventDetailFieldSources `json:"field_sources"`

	// `session.sequence` sent with the event.
	SessionSequence int64 `json:"session_sequence"`

	// Promoted from `payload.table_id`.
	TableID string `json:"table_id"`

	// Promoted from `payload.hand_id`.
	HandID string `json:"hand_id"`

	// Promoted from `payload.match_id`.
	MatchID string `json:"match_id"`

	// Promoted from `payload.market_id`.
	MarketID string `json:"market_id"`

	// Promoted from `payload.side`.
	Side string `json:"side"`

	// Promoted from `payload.role`.
	Role string `json:"role"`

	// Promoted from `payload.net_result_amount`, as a decimal string with 18
	// decimal places.
	NetResultAmount string `json:"net_result_amount"`

	// Promoted from `payload.payment_fingerprint`.
	PaymentFingerprint string `json:"payment_fingerprint"`

	// Promoted from `payload.instrument_reference_hash`.
	InstrumentReferenceHash string `json:"instrument_reference_hash"`

	// Promoted from `payload.withdrawal_address_hash` (or
	// `payload.destination_reference_hash`).
	WithdrawalAddressHash string `json:"withdrawal_address_hash"`

	// Promoted from `payload.dispute_id`.
	DisputeID string `json:"dispute_id"`

	// Promoted from `payload.chargeback_id`.
	ChargebackID string `json:"chargeback_id"`

	// Promoted from `payload.changed_field` (security change events).
	ChangedField string `json:"changed_field"`

	// Promoted from `payload.identity_match_ref` (responsible-gambling registry
	// matches).
	IdentityMatchRef string `json:"identity_match_ref"`

	// Version of the event envelope schema. Currently `1`.
	SchemaVersion int64 `json:"schema_version"`

	// When the event expires under its retention class and is deleted:
	// `occurred_at` plus the class period (14, 30 or 90 days by default, adjustable
	// per application). Null for `monetary_or_compliance` events, which follow
	// transaction retention.
	ExpiresAt time.Time `json:"expires_at"`

	// Number of event rules evaluated for this event.
	RulesEvaluatedCount int64 `json:"rules_evaluated_count"`

	// Every rule that matched the event, newest first.
	RuleRuns []MonitoringEventRuleRun `json:"rule_runs"`

	// Enrichment of the event's IP address, or null when the address was not
	// enriched. See [IP
	// enrichment](https://docs.didit.me/transaction-monitoring/ip-enrichment).
	IPEnrichment MonitoringEventDetailIPEnrichment `json:"ip_enrichment"`

	// Cached email and phone risk signals of the subject, or null when no profile
	// exists for the subject.
	SubjectProfile MonitoringEventDetailSubjectProfile `json:"subject_profile"`

	// Names of the tags attached to the event (rule `add_tags` actions).
	Tags []string `json:"tags"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

MonitoringEventDetail: One monitoring event with its full envelope, enrichment and rule evidence. Every field of `MonitoringEvent` plus the fields below.

func (*MonitoringEventDetail) UnmarshalJSON

func (r *MonitoringEventDetail) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes MonitoringEventDetail leniently.

type MonitoringEventDetailEventCategory

type MonitoringEventDetailEventCategory string

MonitoringEventDetailEventCategory: Event category.

MonitoringEventDetailEventCategory is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventDetailEventCategoryAuth                MonitoringEventDetailEventCategory = "auth"
	MonitoringEventDetailEventCategorySession             MonitoringEventDetailEventCategory = "session"
	MonitoringEventDetailEventCategoryGameplay            MonitoringEventDetailEventCategory = "gameplay"
	MonitoringEventDetailEventCategoryBonus               MonitoringEventDetailEventCategory = "bonus"
	MonitoringEventDetailEventCategoryAffiliate           MonitoringEventDetailEventCategory = "affiliate"
	MonitoringEventDetailEventCategoryPayment             MonitoringEventDetailEventCategory = "payment"
	MonitoringEventDetailEventCategoryDispute             MonitoringEventDetailEventCategory = "dispute"
	MonitoringEventDetailEventCategorySecurity            MonitoringEventDetailEventCategory = "security"
	MonitoringEventDetailEventCategoryResponsibleGambling MonitoringEventDetailEventCategory = "responsible_gambling"
	MonitoringEventDetailEventCategoryCustom              MonitoringEventDetailEventCategory = "custom"
)

Known values of MonitoringEventDetailEventCategory.

type MonitoringEventDetailFieldSources

type MonitoringEventDetailFieldSources string

MonitoringEventDetailFieldSources is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventDetailFieldSourcesCustomer MonitoringEventDetailFieldSources = "customer"
	MonitoringEventDetailFieldSourcesSDK      MonitoringEventDetailFieldSources = "sdk"
	MonitoringEventDetailFieldSourcesServer   MonitoringEventDetailFieldSources = "server"
)

Known values of MonitoringEventDetailFieldSources.

type MonitoringEventDetailIPEnrichment

type MonitoringEventDetailIPEnrichment struct {
	// Country code of the address.
	IPCountryCode string `json:"ip_country_code"`

	// City of the address.
	IPCity string `json:"ip_city"`

	// Autonomous system number.
	AsnNumber int64 `json:"asn_number"`

	// Organization that operates the autonomous system.
	AsnOrganization string `json:"asn_organization"`

	// Whether the address is a known VPN or Tor exit.
	IsVpnOrTor bool `json:"is_vpn_or_tor"`

	// Whether the address belongs to a hosting or data-centre network.
	IsDataCenter bool `json:"is_data_center"`

	// Proxy classification of the address as an opaque string, or null.
	ProxyType string `json:"proxy_type"`

	// When the address was last enriched.
	LastEnrichedAt time.Time `json:"last_enriched_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

MonitoringEventDetailIPEnrichment: Enrichment of the event's IP address, or null when the address was not enriched. See [IP enrichment](https://docs.didit.me/transaction-monitoring/ip-enrichment).

func (*MonitoringEventDetailIPEnrichment) UnmarshalJSON

func (r *MonitoringEventDetailIPEnrichment) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes MonitoringEventDetailIPEnrichment leniently.

type MonitoringEventDetailRetentionClass

type MonitoringEventDetailRetentionClass string

MonitoringEventDetailRetentionClass: Retention class. Payment and dispute events are `monetary_or_compliance`; security and responsible-gambling events are `risk_relevant`; `session.page_view`, `session.sdk_heartbeat`, `session.sdk_loaded`, `session.device_seen`, `session.bot_signal_observed`, `bonus.promotion_viewed` and `affiliate.referral_clicked` are `low_value`; everything else is `standard`. An event an active rule matched is promoted to `risk_relevant` (never demoted).

MonitoringEventDetailRetentionClass is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventDetailRetentionClassLowValue             MonitoringEventDetailRetentionClass = "low_value"
	MonitoringEventDetailRetentionClassStandard             MonitoringEventDetailRetentionClass = "standard"
	MonitoringEventDetailRetentionClassRiskRelevant         MonitoringEventDetailRetentionClass = "risk_relevant"
	MonitoringEventDetailRetentionClassMonetaryOrCompliance MonitoringEventDetailRetentionClass = "monetary_or_compliance"
)

Known values of MonitoringEventDetailRetentionClass.

type MonitoringEventDetailStatus

type MonitoringEventDetailStatus string

MonitoringEventDetailStatus: `ACCEPTED`: stored, no matched rule changed its standing (the normal answer for most events, and always the answer in a sandbox application, where no rules run). `APPROVED`: a rule matched and the score stayed under your review threshold. `IN_REVIEW`: a rule pushed the score over the review threshold or set the status. `DECLINED`: a rule declined it or the score crossed your decline threshold.

MonitoringEventDetailStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventDetailStatusAccepted MonitoringEventDetailStatus = "ACCEPTED"
	MonitoringEventDetailStatusApproved MonitoringEventDetailStatus = "APPROVED"
	MonitoringEventDetailStatusInReview MonitoringEventDetailStatus = "IN_REVIEW"
	MonitoringEventDetailStatusDeclined MonitoringEventDetailStatus = "DECLINED"
)

Known values of MonitoringEventDetailStatus.

type MonitoringEventDetailSubjectProfile

type MonitoringEventDetailSubjectProfile struct {
	// Email risk score.
	EmailRiskScore int64 `json:"email_risk_score"`

	// Email deliverability verdict.
	EmailDeliverability string `json:"email_deliverability"`

	// Whether the email address is disposable.
	EmailIsDisposable bool `json:"email_is_disposable"`

	// Whether the email address appears in known data breaches.
	EmailIsBreached bool `json:"email_is_breached"`

	// Number of online accounts linked to the email address.
	EmailSocialCount int64 `json:"email_social_count"`

	// Names of the online services where an account linked to the email address was
	// found.
	EmailSocialProviders []string `json:"email_social_providers"`

	// Phone risk score.
	PhoneRiskScore int64 `json:"phone_risk_score"`

	// Phone line type.
	PhoneLineType string `json:"phone_line_type"`

	// Phone carrier name.
	PhoneCarrier string `json:"phone_carrier"`

	// Number of online accounts linked to the phone number.
	PhoneSocialCount int64 `json:"phone_social_count"`

	// Names of the online services where an account linked to the phone number was
	// found.
	PhoneSocialProviders []string `json:"phone_social_providers"`

	// Opaque identifier of the source of the profile.
	SourceProvider string `json:"source_provider"`

	// When the profile was last refreshed.
	LastEnrichedAt time.Time `json:"last_enriched_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

MonitoringEventDetailSubjectProfile: Cached email and phone risk signals of the subject, or null when no profile exists for the subject.

func (*MonitoringEventDetailSubjectProfile) UnmarshalJSON

func (r *MonitoringEventDetailSubjectProfile) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes MonitoringEventDetailSubjectProfile leniently.

type MonitoringEventEventCategory

type MonitoringEventEventCategory string

MonitoringEventEventCategory: Event category.

MonitoringEventEventCategory is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventEventCategoryAuth                MonitoringEventEventCategory = "auth"
	MonitoringEventEventCategorySession             MonitoringEventEventCategory = "session"
	MonitoringEventEventCategoryGameplay            MonitoringEventEventCategory = "gameplay"
	MonitoringEventEventCategoryBonus               MonitoringEventEventCategory = "bonus"
	MonitoringEventEventCategoryAffiliate           MonitoringEventEventCategory = "affiliate"
	MonitoringEventEventCategoryPayment             MonitoringEventEventCategory = "payment"
	MonitoringEventEventCategoryDispute             MonitoringEventEventCategory = "dispute"
	MonitoringEventEventCategorySecurity            MonitoringEventEventCategory = "security"
	MonitoringEventEventCategoryResponsibleGambling MonitoringEventEventCategory = "responsible_gambling"
	MonitoringEventEventCategoryCustom              MonitoringEventEventCategory = "custom"
)

Known values of MonitoringEventEventCategory.

type MonitoringEventIngestResult

type MonitoringEventIngestResult struct {
	// Didit identifier of the stored event.
	EventUUID string `json:"event_uuid"`

	// Your `event_id`.
	EventID string `json:"event_id"`

	// Status after the real-time rules ran. See `MonitoringEvent.status`.
	Status MonitoringEventIngestResultStatus `json:"status"`

	// Score after the real-time rules ran.
	Score int64 `json:"score"`

	// Number of event rules evaluated in the request. 0 in a sandbox application,
	// where no rules run.
	RulesEvaluatedCount int64 `json:"rules_evaluated_count"`

	// Number of rules that matched, including `TEST` mode rules.
	RulesMatchedCount int64 `json:"rules_matched_count"`

	// `true` when an asynchronous rule still has to run. Read `GET
	// /v3/events/{event_uuid}/` a few minutes later for the final `status` and
	// `score`.
	CorrelationPending bool `json:"correlation_pending"`

	// Retention class, after any promotion by a matched rule.
	RetentionClass MonitoringEventIngestResultRetentionClass `json:"retention_class"`

	// When the event expires under its retention class and is deleted. Null for
	// `monetary_or_compliance` (payment and dispute) events.
	ExpiresAt time.Time `json:"expires_at"`

	// `true` when an event with this `event_id` and the same content was already
	// stored; the values are those of the stored event and no rule ran again.
	IdempotentReplay bool `json:"idempotent_replay"`

	// Rules that matched the event.
	RuleMatches []MonitoringEventIngestResultRuleMatches `json:"rule_matches"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

MonitoringEventIngestResult: Outcome of ingesting one event. The same shape is returned for a new event and for an idempotent replay.

func (*MonitoringEventIngestResult) UnmarshalJSON

func (r *MonitoringEventIngestResult) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes MonitoringEventIngestResult leniently.

type MonitoringEventIngestResultRetentionClass

type MonitoringEventIngestResultRetentionClass string

MonitoringEventIngestResultRetentionClass: Retention class, after any promotion by a matched rule.

MonitoringEventIngestResultRetentionClass is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventIngestResultRetentionClassLowValue             MonitoringEventIngestResultRetentionClass = "low_value"
	MonitoringEventIngestResultRetentionClassStandard             MonitoringEventIngestResultRetentionClass = "standard"
	MonitoringEventIngestResultRetentionClassRiskRelevant         MonitoringEventIngestResultRetentionClass = "risk_relevant"
	MonitoringEventIngestResultRetentionClassMonetaryOrCompliance MonitoringEventIngestResultRetentionClass = "monetary_or_compliance"
)

Known values of MonitoringEventIngestResultRetentionClass.

type MonitoringEventIngestResultRuleMatches

type MonitoringEventIngestResultRuleMatches struct {
	// UUID of the rule.
	RuleID string `json:"rule_id"`

	// Library key when the rule was installed from the rules library, otherwise
	// null.
	LibraryKey string `json:"library_key"`

	// `TEST` rules record the match but apply no actions.
	Mode MonitoringEventIngestResultRuleMatchesMode `json:"mode"`

	// `true` when the match came from the asynchronous pass.
	IsAsync bool `json:"is_async"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

MonitoringEventIngestResultRuleMatches is a response object.

func (*MonitoringEventIngestResultRuleMatches) UnmarshalJSON

func (r *MonitoringEventIngestResultRuleMatches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes MonitoringEventIngestResultRuleMatches leniently.

type MonitoringEventIngestResultRuleMatchesMode

type MonitoringEventIngestResultRuleMatchesMode string

MonitoringEventIngestResultRuleMatchesMode: `TEST` rules record the match but apply no actions.

MonitoringEventIngestResultRuleMatchesMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventIngestResultRuleMatchesModeActive MonitoringEventIngestResultRuleMatchesMode = "ACTIVE"
	MonitoringEventIngestResultRuleMatchesModeTest   MonitoringEventIngestResultRuleMatchesMode = "TEST"
)

Known values of MonitoringEventIngestResultRuleMatchesMode.

type MonitoringEventIngestResultStatus

type MonitoringEventIngestResultStatus string

MonitoringEventIngestResultStatus: Status after the real-time rules ran. See `MonitoringEvent.status`.

MonitoringEventIngestResultStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventIngestResultStatusAccepted MonitoringEventIngestResultStatus = "ACCEPTED"
	MonitoringEventIngestResultStatusApproved MonitoringEventIngestResultStatus = "APPROVED"
	MonitoringEventIngestResultStatusInReview MonitoringEventIngestResultStatus = "IN_REVIEW"
	MonitoringEventIngestResultStatusDeclined MonitoringEventIngestResultStatus = "DECLINED"
)

Known values of MonitoringEventIngestResultStatus.

type MonitoringEventRetentionClass

type MonitoringEventRetentionClass string

MonitoringEventRetentionClass: Retention class. Payment and dispute events are `monetary_or_compliance`; security and responsible-gambling events are `risk_relevant`; `session.page_view`, `session.sdk_heartbeat`, `session.sdk_loaded`, `session.device_seen`, `session.bot_signal_observed`, `bonus.promotion_viewed` and `affiliate.referral_clicked` are `low_value`; everything else is `standard`. An event an active rule matched is promoted to `risk_relevant` (never demoted).

MonitoringEventRetentionClass is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventRetentionClassLowValue             MonitoringEventRetentionClass = "low_value"
	MonitoringEventRetentionClassStandard             MonitoringEventRetentionClass = "standard"
	MonitoringEventRetentionClassRiskRelevant         MonitoringEventRetentionClass = "risk_relevant"
	MonitoringEventRetentionClassMonetaryOrCompliance MonitoringEventRetentionClass = "monetary_or_compliance"
)

Known values of MonitoringEventRetentionClass.

type MonitoringEventRuleRun

type MonitoringEventRuleRun struct {
	// UUID of the transaction monitoring rule.
	RuleUUID string `json:"rule_uuid"`

	// Title of the rule.
	RuleTitle string `json:"rule_title"`

	// Library key when the rule was installed from the rules library, otherwise
	// null.
	LibraryKey string `json:"library_key"`

	// Always `true`: only matching runs are recorded.
	Matched bool `json:"matched"`

	// Mode of the rule when it ran. A `TEST` run records evidence but applied no
	// actions.
	Mode MonitoringEventRuleRunMode `json:"mode"`

	// `true` when the run came from the asynchronous correlation pass rather than
	// the ingest request.
	IsAsync bool `json:"is_async"`

	// Severity of the rule. Null for `TEST` runs and for rules without a severity.
	Severity MonitoringEventRuleRunSeverity `json:"severity"`

	// How much this run changed the event's score (0 for `TEST` runs).
	ScoreDelta int64 `json:"score_delta"`

	// Short summary of the actions applied, for example `score +40;
	// add_tag:VPN_LOGIN`. Null when nothing was applied.
	ActionSummary string `json:"action_summary"`

	// The conditions and aggregations that matched. Condition entries carry
	// `field`, `operator`, `expected_value`, `current_value`, `matched`,
	// `group_index`, `group_logic` and `field_source` (`server`, `sdk` or
	// `customer`); aggregation entries carry `metric`, `field`, `operator`,
	// `expected_value`, `computed_value`, `window`, `filters`, `matched` and
	// `sample_references`.
	MatchedPayload []map[string]any `json:"matched_payload"`

	// When the rule run was recorded.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

MonitoringEventRuleRun is a response object.

func (*MonitoringEventRuleRun) UnmarshalJSON

func (r *MonitoringEventRuleRun) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes MonitoringEventRuleRun leniently.

type MonitoringEventRuleRunMode

type MonitoringEventRuleRunMode string

MonitoringEventRuleRunMode: Mode of the rule when it ran. A `TEST` run records evidence but applied no actions.

MonitoringEventRuleRunMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventRuleRunModeActive MonitoringEventRuleRunMode = "ACTIVE"
	MonitoringEventRuleRunModeTest   MonitoringEventRuleRunMode = "TEST"
)

Known values of MonitoringEventRuleRunMode.

type MonitoringEventRuleRunSeverity

type MonitoringEventRuleRunSeverity string

MonitoringEventRuleRunSeverity: Severity of the rule. Null for `TEST` runs and for rules without a severity.

MonitoringEventRuleRunSeverity is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventRuleRunSeverityUnknown  MonitoringEventRuleRunSeverity = "UNKNOWN"
	MonitoringEventRuleRunSeverityLow      MonitoringEventRuleRunSeverity = "LOW"
	MonitoringEventRuleRunSeverityMedium   MonitoringEventRuleRunSeverity = "MEDIUM"
	MonitoringEventRuleRunSeverityHigh     MonitoringEventRuleRunSeverity = "HIGH"
	MonitoringEventRuleRunSeverityCritical MonitoringEventRuleRunSeverity = "CRITICAL"
)

Known values of MonitoringEventRuleRunSeverity.

type MonitoringEventStatus

type MonitoringEventStatus string

MonitoringEventStatus: `ACCEPTED`: stored, no matched rule changed its standing (the normal answer for most events, and always the answer in a sandbox application, where no rules run). `APPROVED`: a rule matched and the score stayed under your review threshold. `IN_REVIEW`: a rule pushed the score over the review threshold or set the status. `DECLINED`: a rule declined it or the score crossed your decline threshold.

MonitoringEventStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventStatusAccepted MonitoringEventStatus = "ACCEPTED"
	MonitoringEventStatusApproved MonitoringEventStatus = "APPROVED"
	MonitoringEventStatusInReview MonitoringEventStatus = "IN_REVIEW"
	MonitoringEventStatusDeclined MonitoringEventStatus = "DECLINED"
)

Known values of MonitoringEventStatus.

type MonitoringEventsCreateBatchParams

type MonitoringEventsCreateBatchParams struct {
	// 1 to 500 events. Each item follows `MonitoringEventCreateRequest`, including
	// the 7-day past and 5-minute future window on `occurred_at`. Required.
	Events []MonitoringEventCreateRequest `json:"events"`
}

MonitoringEventsCreateBatchParams holds the parameters of Client.MonitoringEvents.CreateBatch.

func (MonitoringEventsCreateBatchParams) MarshalJSON

func (r MonitoringEventsCreateBatchParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type MonitoringEventsCreateBatchResponse

type MonitoringEventsCreateBatchResponse struct {
	// Items stored and evaluated.
	AcceptedCount int64 `json:"accepted_count"`

	// Items already stored with the same content.
	ReplayedCount int64 `json:"replayed_count"`

	// Items not stored.
	RejectedCount int64 `json:"rejected_count"`

	// One entry per item, in request order.
	Results []MonitoringEventsCreateBatchResponseResults `json:"results"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

MonitoringEventsCreateBatchResponse is a response object.

func (*MonitoringEventsCreateBatchResponse) UnmarshalJSON

func (r *MonitoringEventsCreateBatchResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes MonitoringEventsCreateBatchResponse leniently.

type MonitoringEventsCreateBatchResponseResults

type MonitoringEventsCreateBatchResponseResults struct {
	// Position of the item in your `events` array.
	Index int64 `json:"index"`

	// `accepted`: stored and evaluated. `replayed`: already stored with the same
	// content. `rejected`: not stored; see `errors`.
	Outcome MonitoringEventsCreateBatchResponseResultsOutcome `json:"outcome"`

	// Your `event_id`. On items rejected by validation it is read from the item's
	// snake_case `event_id` key, so it is null when the item omitted it or sent the
	// `eventId` alias.
	EventID string `json:"event_id"`

	// Rejected items only. Validation errors keyed by field, in the same shape as
	// the `400` of `POST /v3/events/`; a reused `event_id` with different content
	// is reported as a string under `errors.event_id`.
	Errors map[string]any `json:"errors"`

	// Accepted and replayed items only.
	EventUUID string `json:"event_uuid"`

	// Accepted and replayed items only.
	Status MonitoringEventsCreateBatchResponseResultsStatus `json:"status"`

	// Accepted and replayed items only.
	Score int64 `json:"score"`

	// Accepted and replayed items only.
	RulesEvaluatedCount int64 `json:"rules_evaluated_count"`

	// Accepted and replayed items only.
	RulesMatchedCount int64 `json:"rules_matched_count"`

	// Accepted and replayed items only.
	CorrelationPending bool `json:"correlation_pending"`

	// Accepted and replayed items only.
	RetentionClass MonitoringEventsCreateBatchResponseResultsRetentionClass `json:"retention_class"`

	// Accepted and replayed items only.
	ExpiresAt time.Time `json:"expires_at"`

	// Accepted and replayed items only.
	IdempotentReplay bool `json:"idempotent_replay"`

	// Accepted and replayed items only.
	RuleMatches []MonitoringEventsCreateBatchResponseResultsRuleMatches `json:"rule_matches"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

MonitoringEventsCreateBatchResponseResults: Outcome of one item. Accepted and replayed items also carry every field of `MonitoringEventIngestResult`; rejected items carry `event_id` and `errors` instead.

func (*MonitoringEventsCreateBatchResponseResults) UnmarshalJSON

func (r *MonitoringEventsCreateBatchResponseResults) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes MonitoringEventsCreateBatchResponseResults leniently.

type MonitoringEventsCreateBatchResponseResultsOutcome

type MonitoringEventsCreateBatchResponseResultsOutcome string

MonitoringEventsCreateBatchResponseResultsOutcome: `accepted`: stored and evaluated. `replayed`: already stored with the same content. `rejected`: not stored; see `errors`.

MonitoringEventsCreateBatchResponseResultsOutcome is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventsCreateBatchResponseResultsOutcomeAccepted MonitoringEventsCreateBatchResponseResultsOutcome = "accepted"
	MonitoringEventsCreateBatchResponseResultsOutcomeReplayed MonitoringEventsCreateBatchResponseResultsOutcome = "replayed"
	MonitoringEventsCreateBatchResponseResultsOutcomeRejected MonitoringEventsCreateBatchResponseResultsOutcome = "rejected"
)

Known values of MonitoringEventsCreateBatchResponseResultsOutcome.

type MonitoringEventsCreateBatchResponseResultsRetentionClass

type MonitoringEventsCreateBatchResponseResultsRetentionClass string

MonitoringEventsCreateBatchResponseResultsRetentionClass: Accepted and replayed items only.

MonitoringEventsCreateBatchResponseResultsRetentionClass is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventsCreateBatchResponseResultsRetentionClassLowValue             MonitoringEventsCreateBatchResponseResultsRetentionClass = "low_value"
	MonitoringEventsCreateBatchResponseResultsRetentionClassStandard             MonitoringEventsCreateBatchResponseResultsRetentionClass = "standard"
	MonitoringEventsCreateBatchResponseResultsRetentionClassRiskRelevant         MonitoringEventsCreateBatchResponseResultsRetentionClass = "risk_relevant"
	MonitoringEventsCreateBatchResponseResultsRetentionClassMonetaryOrCompliance MonitoringEventsCreateBatchResponseResultsRetentionClass = "monetary_or_compliance"
)

Known values of MonitoringEventsCreateBatchResponseResultsRetentionClass.

type MonitoringEventsCreateBatchResponseResultsRuleMatches

type MonitoringEventsCreateBatchResponseResultsRuleMatches struct {
	// UUID of the rule.
	RuleID string `json:"rule_id"`

	// Library key when the rule was installed from the rules library, otherwise
	// null.
	LibraryKey string `json:"library_key"`

	// `TEST` rules record the match but apply no actions.
	Mode MonitoringEventsCreateBatchResponseResultsRuleMatchesMode `json:"mode"`

	// `true` when the match came from the asynchronous pass.
	IsAsync bool `json:"is_async"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

MonitoringEventsCreateBatchResponseResultsRuleMatches is a response object.

func (*MonitoringEventsCreateBatchResponseResultsRuleMatches) UnmarshalJSON

UnmarshalJSON decodes MonitoringEventsCreateBatchResponseResultsRuleMatches leniently.

type MonitoringEventsCreateBatchResponseResultsRuleMatchesMode

type MonitoringEventsCreateBatchResponseResultsRuleMatchesMode string

MonitoringEventsCreateBatchResponseResultsRuleMatchesMode: `TEST` rules record the match but apply no actions.

MonitoringEventsCreateBatchResponseResultsRuleMatchesMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventsCreateBatchResponseResultsRuleMatchesModeActive MonitoringEventsCreateBatchResponseResultsRuleMatchesMode = "ACTIVE"
	MonitoringEventsCreateBatchResponseResultsRuleMatchesModeTest   MonitoringEventsCreateBatchResponseResultsRuleMatchesMode = "TEST"
)

Known values of MonitoringEventsCreateBatchResponseResultsRuleMatchesMode.

type MonitoringEventsCreateBatchResponseResultsStatus

type MonitoringEventsCreateBatchResponseResultsStatus string

MonitoringEventsCreateBatchResponseResultsStatus: Accepted and replayed items only.

MonitoringEventsCreateBatchResponseResultsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventsCreateBatchResponseResultsStatusAccepted MonitoringEventsCreateBatchResponseResultsStatus = "ACCEPTED"
	MonitoringEventsCreateBatchResponseResultsStatusApproved MonitoringEventsCreateBatchResponseResultsStatus = "APPROVED"
	MonitoringEventsCreateBatchResponseResultsStatusInReview MonitoringEventsCreateBatchResponseResultsStatus = "IN_REVIEW"
	MonitoringEventsCreateBatchResponseResultsStatusDeclined MonitoringEventsCreateBatchResponseResultsStatus = "DECLINED"
)

Known values of MonitoringEventsCreateBatchResponseResultsStatus.

type MonitoringEventsCreateSDKTokenParams

type MonitoringEventsCreateSDKTokenParams struct {
	// Your id for the subject every event submitted with this credential belongs
	// to. Required.
	VendorData string `json:"vendor_data"`

	// `company` binds a company subject; any other value (default `individual`)
	// binds an individual.
	EntityType Opt[string] `json:"entity_type"`

	// Categories the credential may submit. Omit it or send `[]` to allow every
	// category.
	AllowedEventCategories Opt[[]MonitoringEventsCreateSDKTokenParamsAllowedEventCategories] `json:"allowed_event_categories"`

	// Lifetime of the credential in seconds.
	TTLSeconds Opt[int64] `json:"ttl_seconds"`

	// Number of events the credential may submit (a batch spends one use per
	// event). Send `null` for no cap within the lifetime.
	MaxUses Opt[int64] `json:"max_uses"`

	// When set, the browser `Origin` header of every device request must equal this
	// value exactly; a request without `Origin` is refused.
	BindToOrigin Opt[string] `json:"bind_to_origin"`
}

MonitoringEventsCreateSDKTokenParams holds the parameters of Client.MonitoringEvents.CreateSDKToken.

func (MonitoringEventsCreateSDKTokenParams) MarshalJSON

func (r MonitoringEventsCreateSDKTokenParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type MonitoringEventsCreateSDKTokenParamsAllowedEventCategories

type MonitoringEventsCreateSDKTokenParamsAllowedEventCategories string

MonitoringEventsCreateSDKTokenParamsAllowedEventCategories is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventsCreateSDKTokenParamsAllowedEventCategoriesAuth                MonitoringEventsCreateSDKTokenParamsAllowedEventCategories = "auth"
	MonitoringEventsCreateSDKTokenParamsAllowedEventCategoriesSession             MonitoringEventsCreateSDKTokenParamsAllowedEventCategories = "session"
	MonitoringEventsCreateSDKTokenParamsAllowedEventCategoriesGameplay            MonitoringEventsCreateSDKTokenParamsAllowedEventCategories = "gameplay"
	MonitoringEventsCreateSDKTokenParamsAllowedEventCategoriesBonus               MonitoringEventsCreateSDKTokenParamsAllowedEventCategories = "bonus"
	MonitoringEventsCreateSDKTokenParamsAllowedEventCategoriesAffiliate           MonitoringEventsCreateSDKTokenParamsAllowedEventCategories = "affiliate"
	MonitoringEventsCreateSDKTokenParamsAllowedEventCategoriesPayment             MonitoringEventsCreateSDKTokenParamsAllowedEventCategories = "payment"
	MonitoringEventsCreateSDKTokenParamsAllowedEventCategoriesDispute             MonitoringEventsCreateSDKTokenParamsAllowedEventCategories = "dispute"
	MonitoringEventsCreateSDKTokenParamsAllowedEventCategoriesSecurity            MonitoringEventsCreateSDKTokenParamsAllowedEventCategories = "security"
	MonitoringEventsCreateSDKTokenParamsAllowedEventCategoriesResponsibleGambling MonitoringEventsCreateSDKTokenParamsAllowedEventCategories = "responsible_gambling"
	MonitoringEventsCreateSDKTokenParamsAllowedEventCategoriesCustom              MonitoringEventsCreateSDKTokenParamsAllowedEventCategories = "custom"
)

Known values of MonitoringEventsCreateSDKTokenParamsAllowedEventCategories.

type MonitoringEventsCreateSDKTokenResponse

type MonitoringEventsCreateSDKTokenResponse struct {
	// The device credential (a 43-character URL-safe token). Send it in the
	// `X-Monitoring-Token` header.
	MonitoringToken string `json:"monitoring_token"`

	// When the credential stops being accepted.
	ExpiresAt time.Time `json:"expires_at"`

	// Categories the credential may submit; `[]` means every category.
	AllowedEventCategories []MonitoringEventsCreateSDKTokenResponseAllowedEventCategories `json:"allowed_event_categories"`

	// Event budget of the credential; null means no cap.
	MaxUses int64 `json:"max_uses"`

	// Origin the credential is bound to, or null.
	BindToOrigin string `json:"bind_to_origin"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

MonitoringEventsCreateSDKTokenResponse is a response object.

func (*MonitoringEventsCreateSDKTokenResponse) UnmarshalJSON

func (r *MonitoringEventsCreateSDKTokenResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes MonitoringEventsCreateSDKTokenResponse leniently.

type MonitoringEventsCreateSDKTokenResponseAllowedEventCategories

type MonitoringEventsCreateSDKTokenResponseAllowedEventCategories string

MonitoringEventsCreateSDKTokenResponseAllowedEventCategories is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventsCreateSDKTokenResponseAllowedEventCategoriesAuth                MonitoringEventsCreateSDKTokenResponseAllowedEventCategories = "auth"
	MonitoringEventsCreateSDKTokenResponseAllowedEventCategoriesSession             MonitoringEventsCreateSDKTokenResponseAllowedEventCategories = "session"
	MonitoringEventsCreateSDKTokenResponseAllowedEventCategoriesGameplay            MonitoringEventsCreateSDKTokenResponseAllowedEventCategories = "gameplay"
	MonitoringEventsCreateSDKTokenResponseAllowedEventCategoriesBonus               MonitoringEventsCreateSDKTokenResponseAllowedEventCategories = "bonus"
	MonitoringEventsCreateSDKTokenResponseAllowedEventCategoriesAffiliate           MonitoringEventsCreateSDKTokenResponseAllowedEventCategories = "affiliate"
	MonitoringEventsCreateSDKTokenResponseAllowedEventCategoriesPayment             MonitoringEventsCreateSDKTokenResponseAllowedEventCategories = "payment"
	MonitoringEventsCreateSDKTokenResponseAllowedEventCategoriesDispute             MonitoringEventsCreateSDKTokenResponseAllowedEventCategories = "dispute"
	MonitoringEventsCreateSDKTokenResponseAllowedEventCategoriesSecurity            MonitoringEventsCreateSDKTokenResponseAllowedEventCategories = "security"
	MonitoringEventsCreateSDKTokenResponseAllowedEventCategoriesResponsibleGambling MonitoringEventsCreateSDKTokenResponseAllowedEventCategories = "responsible_gambling"
	MonitoringEventsCreateSDKTokenResponseAllowedEventCategoriesCustom              MonitoringEventsCreateSDKTokenResponseAllowedEventCategories = "custom"
)

Known values of MonitoringEventsCreateSDKTokenResponseAllowedEventCategories.

type MonitoringEventsListParams

type MonitoringEventsListParams struct {
	// Maximum number of events per page. Defaults to 50. Values above 1000000
	// return `400`; a non-numeric, zero or negative value falls back to 50.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Number of events to skip. Defaults to 0. Prefer following the `next` URL from
	// the response.
	Offset Opt[int64] `json:"-" query:"offset"`

	// Only events in these categories. Repeat the parameter for several values
	// (`?event_category=payment&event_category=dispute`); an event matching any of
	// them is returned.
	EventCategory Opt[[]MonitoringEventsListParamsEventCategory] `json:"-" query:"event_category"`

	// Only events with these action types (exact, case-sensitive). Repeat for
	// several values.
	ActionType Opt[[]string] `json:"-" query:"action_type"`

	// Only events with these statuses. Repeat for several values.
	Status Opt[[]MonitoringEventsListParamsStatus] `json:"-" query:"status"`

	// Only events in these retention classes. Repeat for several values.
	RetentionClass Opt[[]MonitoringEventsListParamsRetentionClass] `json:"-" query:"retention_class"`

	// Exact match on the subject's `vendor_data`. The same id can name an
	// individual and a company; add `subject_entity_type` to pick one, or use `GET
	// /v3/events/subjects/{vendor_data}/`.
	SubjectVendorData Opt[string] `json:"-" query:"subject_vendor_data"`

	// `company` returns only events of company subjects; any other non-empty value
	// (for example `individual`) returns only events of individuals. Omit it to
	// return both.
	SubjectEntityType Opt[MonitoringEventsListParamsSubjectEntityType] `json:"-" query:"subject_entity_type"`

	// Exact match on the `business.vendor_data` sent with the event.
	BusinessVendorData Opt[string] `json:"-" query:"business_vendor_data"`

	// Exact match on `session.session_id`.
	SessionID Opt[string] `json:"-" query:"session_id"`

	// Exact match on `device_context.fingerprint`.
	DeviceFingerprint Opt[string] `json:"-" query:"device_fingerprint"`

	// Exact match on the event's IP address.
	IPAddress Opt[string] `json:"-" query:"ip_address"`

	// Exact match on the promoted `game_id`.
	GameID Opt[string] `json:"-" query:"game_id"`

	// Exact match on the promoted `round_id`.
	RoundID Opt[string] `json:"-" query:"round_id"`

	// Exact match on the promoted `affiliate_code`.
	AffiliateCode Opt[string] `json:"-" query:"affiliate_code"`

	// Exact match on the payment reference (from
	// `transaction_context.payment_reference_id` or
	// `payload.payment_reference_id`).
	PaymentReferenceID Opt[string] `json:"-" query:"payment_reference_id"`

	// Exact match on the promoted `counterparty_vendor_data`.
	CounterpartyVendorData Opt[string] `json:"-" query:"counterparty_vendor_data"`

	// `true` (also `1` or `yes`, case-insensitive) returns only events at least one
	// rule matched (`rules_matched_count` above 0). Any other value is ignored.
	MatchedOnly Opt[bool] `json:"-" query:"matched_only"`

	// Only events with `occurred_at` at or after this instant (inclusive). Send an
	// ISO 8601 value: `2026-10-01T00:00:00Z`, an explicit offset with the `+`
	// percent-encoded (`2026-10-01T02:00:00%2B02:00`; an unencoded `+` is decoded
	// as a space and the value no longer parses), or a date alone (`2026-10-01`),
	// which means 00:00:00 UTC of that day. A value without an offset is read as
	// UTC. Values in any other format are not accepted.
	OccurredFrom Opt[time.Time] `json:"-" query:"occurred_from"`

	// Only events with `occurred_at` at or before this instant (inclusive). A date
	// alone means the start of that day, so `occurred_to=2026-10-15` excludes the
	// rest of 15 October; send `2026-10-15T23:59:59Z` to include it. Send an ISO
	// 8601 value: `2026-10-01T00:00:00Z`, an explicit offset with the `+`
	// percent-encoded (`2026-10-01T02:00:00%2B02:00`; an unencoded `+` is decoded
	// as a space and the value no longer parses), or a date alone (`2026-10-01`),
	// which means 00:00:00 UTC of that day. A value without an offset is read as
	// UTC. Values in any other format are not accepted.
	OccurredTo Opt[time.Time] `json:"-" query:"occurred_to"`

	// Case-insensitive substring match on `event_id`, `action_type`,
	// `subject_vendor_data` or `counterparty_vendor_data`.
	Search Opt[string] `json:"-" query:"search"`
}

MonitoringEventsListParams holds the parameters of Client.MonitoringEvents.List.

func (MonitoringEventsListParams) MarshalJSON

func (r MonitoringEventsListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type MonitoringEventsListParamsEventCategory

type MonitoringEventsListParamsEventCategory string

MonitoringEventsListParamsEventCategory is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventsListParamsEventCategoryAuth                MonitoringEventsListParamsEventCategory = "auth"
	MonitoringEventsListParamsEventCategorySession             MonitoringEventsListParamsEventCategory = "session"
	MonitoringEventsListParamsEventCategoryGameplay            MonitoringEventsListParamsEventCategory = "gameplay"
	MonitoringEventsListParamsEventCategoryBonus               MonitoringEventsListParamsEventCategory = "bonus"
	MonitoringEventsListParamsEventCategoryAffiliate           MonitoringEventsListParamsEventCategory = "affiliate"
	MonitoringEventsListParamsEventCategoryPayment             MonitoringEventsListParamsEventCategory = "payment"
	MonitoringEventsListParamsEventCategoryDispute             MonitoringEventsListParamsEventCategory = "dispute"
	MonitoringEventsListParamsEventCategorySecurity            MonitoringEventsListParamsEventCategory = "security"
	MonitoringEventsListParamsEventCategoryResponsibleGambling MonitoringEventsListParamsEventCategory = "responsible_gambling"
	MonitoringEventsListParamsEventCategoryCustom              MonitoringEventsListParamsEventCategory = "custom"
)

Known values of MonitoringEventsListParamsEventCategory.

type MonitoringEventsListParamsRetentionClass

type MonitoringEventsListParamsRetentionClass string

MonitoringEventsListParamsRetentionClass is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventsListParamsRetentionClassLowValue             MonitoringEventsListParamsRetentionClass = "low_value"
	MonitoringEventsListParamsRetentionClassStandard             MonitoringEventsListParamsRetentionClass = "standard"
	MonitoringEventsListParamsRetentionClassRiskRelevant         MonitoringEventsListParamsRetentionClass = "risk_relevant"
	MonitoringEventsListParamsRetentionClassMonetaryOrCompliance MonitoringEventsListParamsRetentionClass = "monetary_or_compliance"
)

Known values of MonitoringEventsListParamsRetentionClass.

type MonitoringEventsListParamsStatus

type MonitoringEventsListParamsStatus string

MonitoringEventsListParamsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventsListParamsStatusAccepted MonitoringEventsListParamsStatus = "ACCEPTED"
	MonitoringEventsListParamsStatusApproved MonitoringEventsListParamsStatus = "APPROVED"
	MonitoringEventsListParamsStatusInReview MonitoringEventsListParamsStatus = "IN_REVIEW"
	MonitoringEventsListParamsStatusDeclined MonitoringEventsListParamsStatus = "DECLINED"
)

Known values of MonitoringEventsListParamsStatus.

type MonitoringEventsListParamsSubjectEntityType

type MonitoringEventsListParamsSubjectEntityType string

MonitoringEventsListParamsSubjectEntityType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventsListParamsSubjectEntityTypeIndividual MonitoringEventsListParamsSubjectEntityType = "individual"
	MonitoringEventsListParamsSubjectEntityTypeCompany    MonitoringEventsListParamsSubjectEntityType = "company"
)

Known values of MonitoringEventsListParamsSubjectEntityType.

type MonitoringEventsRetrieveEnrichmentMetricsParams

type MonitoringEventsRetrieveEnrichmentMetricsParams struct {
	// Length of the period in days. Defaults to 30; values are clamped to 1 to 365,
	// and a non-integer value falls back to 30. The value applied is returned as
	// `period_days`.
	Days Opt[int64] `json:"-" query:"days"`
}

MonitoringEventsRetrieveEnrichmentMetricsParams holds the parameters of Client.MonitoringEvents.RetrieveEnrichmentMetrics.

func (MonitoringEventsRetrieveEnrichmentMetricsParams) MarshalJSON

MarshalJSON encodes the fields that are set.

type MonitoringEventsRetrieveEnrichmentMetricsResponse

type MonitoringEventsRetrieveEnrichmentMetricsResponse struct {
	// New events stored. Idempotent replays are not counted.
	EventsIngested int64 `json:"events_ingested"`

	// Items rejected inside batch requests (server and device lanes). A rejected
	// single-event request is not counted.
	EventsRejected int64 `json:"events_rejected"`

	// Events whose public IP address was resolved, from the cache or freshly.
	EnrichmentLookups int64 `json:"enrichment_lookups"`

	// Lookups answered from the cache.
	EnrichmentCacheHits int64 `json:"enrichment_cache_hits"`

	// Lookups that needed a fresh resolution of the address.
	EnrichmentProviderCalls int64 `json:"enrichment_provider_calls"`

	// Low-value telemetry events whose address was not already known. They never
	// trigger a fresh resolution of their own.
	EnrichmentSkippedLowValue int64 `json:"enrichment_skipped_low_value"`

	// Addresses that needed a fresh resolution.
	UniqueIPsSeen int64 `json:"unique_ips_seen"`

	// The `days` value applied after clamping.
	PeriodDays int64 `json:"period_days"`

	// `enrichment_cache_hits / enrichment_lookups`, rounded to 4 decimals. Null
	// when there were no lookups.
	CacheHitRate float64 `json:"cache_hit_rate"`

	// `unique_ips_seen / events_ingested`, rounded to 4 decimals. Null when no
	// events were ingested.
	UniqueIPRatio float64 `json:"unique_ip_ratio"`

	// Fresh resolutions per 1000 ingested events, rounded to 2 decimals. Null when
	// no events were ingested.
	ProviderCallsPer1kEvents float64 `json:"provider_calls_per_1k_events"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

MonitoringEventsRetrieveEnrichmentMetricsResponse is a response object.

func (*MonitoringEventsRetrieveEnrichmentMetricsResponse) UnmarshalJSON

UnmarshalJSON decodes MonitoringEventsRetrieveEnrichmentMetricsResponse leniently.

type MonitoringEventsRetrieveSubjectTimelineParams

type MonitoringEventsRetrieveSubjectTimelineParams struct {
	// `company` returns the company with this `vendor_data`; any other value, or
	// none, returns the individual. `subject_entity_type` is accepted as an alias
	// when `entity_type` is absent.
	EntityType Opt[MonitoringEventsRetrieveSubjectTimelineParamsEntityType] `json:"-" query:"entity_type"`

	// Maximum number of events per page. Defaults to 50. Values above 1000000
	// return `400`; a non-numeric, zero or negative value falls back to 50.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Number of events to skip. Defaults to 0. Prefer following the `next` URL from
	// the response.
	Offset Opt[int64] `json:"-" query:"offset"`

	// Only events in these categories. Repeat the parameter for several values
	// (`?event_category=payment&event_category=dispute`); an event matching any of
	// them is returned.
	EventCategory Opt[[]MonitoringEventsRetrieveSubjectTimelineParamsEventCategory] `json:"-" query:"event_category"`

	// Only events with these action types (exact, case-sensitive). Repeat for
	// several values.
	ActionType Opt[[]string] `json:"-" query:"action_type"`

	// Only events with these statuses. Repeat for several values.
	Status Opt[[]MonitoringEventsRetrieveSubjectTimelineParamsStatus] `json:"-" query:"status"`

	// Only events in these retention classes. Repeat for several values.
	RetentionClass Opt[[]MonitoringEventsRetrieveSubjectTimelineParamsRetentionClass] `json:"-" query:"retention_class"`

	// Exact match on the `business.vendor_data` sent with the event.
	BusinessVendorData Opt[string] `json:"-" query:"business_vendor_data"`

	// Exact match on `session.session_id`.
	SessionID Opt[string] `json:"-" query:"session_id"`

	// Exact match on `device_context.fingerprint`.
	DeviceFingerprint Opt[string] `json:"-" query:"device_fingerprint"`

	// Exact match on the event's IP address.
	IPAddress Opt[string] `json:"-" query:"ip_address"`

	// Exact match on the promoted `game_id`.
	GameID Opt[string] `json:"-" query:"game_id"`

	// Exact match on the promoted `round_id`.
	RoundID Opt[string] `json:"-" query:"round_id"`

	// Exact match on the promoted `affiliate_code`.
	AffiliateCode Opt[string] `json:"-" query:"affiliate_code"`

	// Exact match on the payment reference (from
	// `transaction_context.payment_reference_id` or
	// `payload.payment_reference_id`).
	PaymentReferenceID Opt[string] `json:"-" query:"payment_reference_id"`

	// Exact match on the promoted `counterparty_vendor_data`.
	CounterpartyVendorData Opt[string] `json:"-" query:"counterparty_vendor_data"`

	// `true` (also `1` or `yes`, case-insensitive) returns only events at least one
	// rule matched (`rules_matched_count` above 0). Any other value is ignored.
	MatchedOnly Opt[bool] `json:"-" query:"matched_only"`

	// Only events with `occurred_at` at or after this instant (inclusive). Send an
	// ISO 8601 value: `2026-10-01T00:00:00Z`, an explicit offset with the `+`
	// percent-encoded (`2026-10-01T02:00:00%2B02:00`; an unencoded `+` is decoded
	// as a space and the value no longer parses), or a date alone (`2026-10-01`),
	// which means 00:00:00 UTC of that day. A value without an offset is read as
	// UTC. Values in any other format are not accepted.
	OccurredFrom Opt[time.Time] `json:"-" query:"occurred_from"`

	// Only events with `occurred_at` at or before this instant (inclusive). A date
	// alone means the start of that day, so `occurred_to=2026-10-15` excludes the
	// rest of 15 October; send `2026-10-15T23:59:59Z` to include it. Send an ISO
	// 8601 value: `2026-10-01T00:00:00Z`, an explicit offset with the `+`
	// percent-encoded (`2026-10-01T02:00:00%2B02:00`; an unencoded `+` is decoded
	// as a space and the value no longer parses), or a date alone (`2026-10-01`),
	// which means 00:00:00 UTC of that day. A value without an offset is read as
	// UTC. Values in any other format are not accepted.
	OccurredTo Opt[time.Time] `json:"-" query:"occurred_to"`

	// Case-insensitive substring match on `event_id`, `action_type`,
	// `subject_vendor_data` or `counterparty_vendor_data`.
	Search Opt[string] `json:"-" query:"search"`
}

MonitoringEventsRetrieveSubjectTimelineParams holds the parameters of Client.MonitoringEvents.RetrieveSubjectTimeline.

func (MonitoringEventsRetrieveSubjectTimelineParams) MarshalJSON

MarshalJSON encodes the fields that are set.

type MonitoringEventsRetrieveSubjectTimelineParamsEntityType

type MonitoringEventsRetrieveSubjectTimelineParamsEntityType string

MonitoringEventsRetrieveSubjectTimelineParamsEntityType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventsRetrieveSubjectTimelineParamsEntityTypeIndividual MonitoringEventsRetrieveSubjectTimelineParamsEntityType = "individual"
	MonitoringEventsRetrieveSubjectTimelineParamsEntityTypeCompany    MonitoringEventsRetrieveSubjectTimelineParamsEntityType = "company"
)

Known values of MonitoringEventsRetrieveSubjectTimelineParamsEntityType.

type MonitoringEventsRetrieveSubjectTimelineParamsEventCategory

type MonitoringEventsRetrieveSubjectTimelineParamsEventCategory string

MonitoringEventsRetrieveSubjectTimelineParamsEventCategory is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventsRetrieveSubjectTimelineParamsEventCategoryAuth                MonitoringEventsRetrieveSubjectTimelineParamsEventCategory = "auth"
	MonitoringEventsRetrieveSubjectTimelineParamsEventCategorySession             MonitoringEventsRetrieveSubjectTimelineParamsEventCategory = "session"
	MonitoringEventsRetrieveSubjectTimelineParamsEventCategoryGameplay            MonitoringEventsRetrieveSubjectTimelineParamsEventCategory = "gameplay"
	MonitoringEventsRetrieveSubjectTimelineParamsEventCategoryBonus               MonitoringEventsRetrieveSubjectTimelineParamsEventCategory = "bonus"
	MonitoringEventsRetrieveSubjectTimelineParamsEventCategoryAffiliate           MonitoringEventsRetrieveSubjectTimelineParamsEventCategory = "affiliate"
	MonitoringEventsRetrieveSubjectTimelineParamsEventCategoryPayment             MonitoringEventsRetrieveSubjectTimelineParamsEventCategory = "payment"
	MonitoringEventsRetrieveSubjectTimelineParamsEventCategoryDispute             MonitoringEventsRetrieveSubjectTimelineParamsEventCategory = "dispute"
	MonitoringEventsRetrieveSubjectTimelineParamsEventCategorySecurity            MonitoringEventsRetrieveSubjectTimelineParamsEventCategory = "security"
	MonitoringEventsRetrieveSubjectTimelineParamsEventCategoryResponsibleGambling MonitoringEventsRetrieveSubjectTimelineParamsEventCategory = "responsible_gambling"
	MonitoringEventsRetrieveSubjectTimelineParamsEventCategoryCustom              MonitoringEventsRetrieveSubjectTimelineParamsEventCategory = "custom"
)

Known values of MonitoringEventsRetrieveSubjectTimelineParamsEventCategory.

type MonitoringEventsRetrieveSubjectTimelineParamsRetentionClass

type MonitoringEventsRetrieveSubjectTimelineParamsRetentionClass string

MonitoringEventsRetrieveSubjectTimelineParamsRetentionClass is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventsRetrieveSubjectTimelineParamsRetentionClassLowValue             MonitoringEventsRetrieveSubjectTimelineParamsRetentionClass = "low_value"
	MonitoringEventsRetrieveSubjectTimelineParamsRetentionClassStandard             MonitoringEventsRetrieveSubjectTimelineParamsRetentionClass = "standard"
	MonitoringEventsRetrieveSubjectTimelineParamsRetentionClassRiskRelevant         MonitoringEventsRetrieveSubjectTimelineParamsRetentionClass = "risk_relevant"
	MonitoringEventsRetrieveSubjectTimelineParamsRetentionClassMonetaryOrCompliance MonitoringEventsRetrieveSubjectTimelineParamsRetentionClass = "monetary_or_compliance"
)

Known values of MonitoringEventsRetrieveSubjectTimelineParamsRetentionClass.

type MonitoringEventsRetrieveSubjectTimelineParamsStatus

type MonitoringEventsRetrieveSubjectTimelineParamsStatus string

MonitoringEventsRetrieveSubjectTimelineParamsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	MonitoringEventsRetrieveSubjectTimelineParamsStatusAccepted MonitoringEventsRetrieveSubjectTimelineParamsStatus = "ACCEPTED"
	MonitoringEventsRetrieveSubjectTimelineParamsStatusApproved MonitoringEventsRetrieveSubjectTimelineParamsStatus = "APPROVED"
	MonitoringEventsRetrieveSubjectTimelineParamsStatusInReview MonitoringEventsRetrieveSubjectTimelineParamsStatus = "IN_REVIEW"
	MonitoringEventsRetrieveSubjectTimelineParamsStatusDeclined MonitoringEventsRetrieveSubjectTimelineParamsStatus = "DECLINED"
)

Known values of MonitoringEventsRetrieveSubjectTimelineParamsStatus.

type MonitoringEventsService

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

MonitoringEventsService holds the monitoring_events operations. Use it through Client.MonitoringEvents.

func (*MonitoringEventsService) Create

Create: Create monitoring event.

Send one non-monetary event (login, session, gameplay, bonus, affiliate, payment, dispute, security, responsible gambling or custom) from your backend. The event is validated against its category contract, stored, IP-enriched once per unique public address, and evaluated by your real-time event rules before the response returns; cross-subject and long-window rules run asynchronously (`correlation_pending: true`), and in a sandbox application no rules run. `event_id` is the idempotency key: the same `event_id` with the same `event_category`, `action_type`, `occurred_at`, `subject.vendor_data` and `payload` returns `200` with `idempotent_replay: true` and the stored outcome (other envelope fields are not compared), while different values return `409`. Event ingestion is opt-in per application: until it is switched on this endpoint returns `403` with `code: event_monitoring_disabled` and stores nothing. A scoped API key needs `transactions: write`. See [Event ingestion](https://docs.didit.me/transaction-monitoring/events) and [Rules on events](https://docs.didit.me/transaction-monitoring/event-rules); to send events from a browser or app, use [SDK event submission](https://docs.didit.me/transaction-monitoring/sdk-event-submission).

POST /v3/events/

func (*MonitoringEventsService) CreateBatch

CreateBatch: Create monitoring events in batch.

Submit 1 to 500 events in one request, each in the same envelope as `POST /v3/events/`. Every item is validated, stored and evaluated on its own and gets its own outcome (`accepted`, `replayed` or `rejected`), so one malformed event never rolls back the others: the response is `201` when no item was rejected and `207` when at least one was, and both mean the request was processed. Send `{"events": [...]}`; a bare JSON array of events is also accepted. Event ingestion must be switched on for the application, otherwise the whole request returns `403` with `code: event_monitoring_disabled` and nothing is stored. A scoped API key needs `transactions: write`. See [Batches](https://docs.didit.me/transaction-monitoring/events#batches).

POST /v3/events/batch/

func (*MonitoringEventsService) CreateSDKToken

CreateSDKToken: Mint monitoring SDK token.

Mint a short-lived device credential bound to one subject, so your web or mobile app can send that user's events straight to Didit without an API key. The app sends the returned `monitoring_token` in the `X-Monitoring-Token` header to the device lane (`POST /v1/events/` and `POST /v1/events/batch/`), where the subject is always overwritten with this `vendor_data`, events outside `allowed_event_categories` are rejected, each submitted event spends one use, and a request whose `Origin` does not equal `bind_to_origin` is refused. Call it from your backend only; minting creates the credential and nothing else (no user is created). Event ingestion must be switched on for the application, otherwise this endpoint returns `403` with `code: event_monitoring_disabled` instead of minting a credential that could never write. A scoped API key needs `transactions: write`. See [SDK event submission](https://docs.didit.me/transaction-monitoring/sdk-event-submission).

POST /v3/events/sdk-token/

func (*MonitoringEventsService) Delete

func (r *MonitoringEventsService) Delete(ctx context.Context, eventUUID string, opts ...option.RequestOption) error

Delete: Delete monitoring event.

Permanently delete one monitoring event together with its rule runs, notes and tag links, for example an event sent by mistake. After the `204` the event is gone from every read (retrieve returns `404`, and it no longer appears in the list or the subject timeline), the deletion is irreversible, and its `event_id` is free to be used for a new event. Not affected: the user or company the event resolved to, cases a rule opened, list entries a rule added, and the scores and statuses already applied to other events. To erase everything about a person or a company, delete the user or the company instead, which also deletes their events. A scoped API key needs `transactions: write`.

DELETE /v3/events/{event_uuid}/delete/

func (*MonitoringEventsService) List

List: List monitoring events.

List the monitoring events stored for your application, newest `occurred_at` first, with optional filters that combine with AND. Multi-value filters (`event_category`, `action_type`, `status`, `retention_class`) repeat the parameter and match any of the values; the other filters are exact matches, and unknown values simply return no events. Each result is a summary: call `GET /v3/events/{event_uuid}/` for the payload, device context, IP enrichment and rule evidence, and prefer `GET /v3/events/subjects/{vendor_data}/` for one subject's history. Reads work whether or not event ingestion is switched on. A scoped API key needs `transactions: read`. See [Event ingestion](https://docs.didit.me/transaction-monitoring/events).

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/events/

func (*MonitoringEventsService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*MonitoringEventsService) Retrieve

Retrieve: Get monitoring event.

Retrieve one monitoring event with everything the list returns plus the payload, custom values, device context, field provenance (`field_sources`), the promoted domain fields, `expires_at`, every matching rule run with its evidence, the IP enrichment and the tags rules attached. While `correlation_pending` is `true` an asynchronous rule still has to run; read the event again a few minutes later for the final `status`, `score` and `rule_runs`. Reads work whether or not event ingestion is switched on. A scoped API key needs `transactions: read`. See [Evidence](https://docs.didit.me/transaction-monitoring/event-rules#evidence) and [IP enrichment](https://docs.didit.me/transaction-monitoring/ip-enrichment).

GET /v3/events/{event_uuid}/

func (*MonitoringEventsService) RetrieveEnrichmentMetrics

RetrieveEnrichmentMetrics: Get event enrichment metrics.

Return the event ingestion and IP-enrichment counters of your application for a period, summed over every lane (server, batch and device), so you can watch event volume and confirm that enrichment is resolved once per unique address rather than once per event. The period covers today plus the previous `days` days, counted by UTC calendar date. The three ratios are null when their denominator is zero. A scoped API key needs `transactions: read`. See [IP enrichment](https://docs.didit.me/transaction-monitoring/events#ip-enrichment).

GET /v3/events/enrichment-metrics/

func (*MonitoringEventsService) RetrieveSubjectTimeline

RetrieveSubjectTimeline: Get subject event timeline.

List every monitoring event of one subject, newest `occurred_at` first. A `vendor_data` is unique only within an entity type, so the same id can name an individual and a company: `entity_type` picks which timeline you get, and it defaults to `individual`, so a company's events need `entity_type=company`. The filters of `GET /v3/events/` apply on top, and a `vendor_data` with no events returns an empty page rather than `404`. A scoped API key needs `transactions: read`. See [Reading events back](https://docs.didit.me/transaction-monitoring/events#reading-events-back).

It returns one page; RetrieveSubjectTimelineAutoPaging iterates over every item of every page.

GET /v3/events/subjects/{vendor_data}/

func (*MonitoringEventsService) RetrieveSubjectTimelineAutoPaging

func (r *MonitoringEventsService) RetrieveSubjectTimelineAutoPaging(ctx context.Context, vendorData string, params MonitoringEventsRetrieveSubjectTimelineParams, opts ...option.RequestOption) *PageIterator[MonitoringEvent]

RetrieveSubjectTimelineAutoPaging iterates over every item of every page of RetrieveSubjectTimeline, fetching pages as needed.

type NetworkDetail

type NetworkDetail struct {
	UUID string `json:"uuid"`

	// Human-readable per-organization sequential id, e.g. N-0001.
	NetworkID string `json:"network_id"`
	Name      string `json:"name"`

	// Network lifecycle status. Distinct from the per-applicant outcome_status
	// inside a network (approved/in_review/declined/not_completed).
	Status NetworkDetailStatus `json:"status"`
	Risk   NetworkRiskDisplay  `json:"risk"`

	// The clustering patterns detected in this network.
	PatternTypes []NetworkDetailPatternTypes `json:"pattern_types"`

	// The distinct signal types present in this network.
	SignalTypes []NetworkDetailSignalTypes `json:"signal_types"`

	// Counts of members by category (e.g. total, per outcome_status).
	MemberCounts map[string]any `json:"member_counts"`

	// Breakdown of members by outcome_status.
	MemberStatus map[string]any `json:"member_status"`

	// Per signal_type coverage of this network's members.
	SignalCoverage  map[string]any `json:"signal_coverage"`
	FirstActivityAt time.Time      `json:"first_activity_at"`
	LastActivityAt  time.Time      `json:"last_activity_at"`

	// Aggregate stats for the network (e.g. member totals).
	Stats map[string]any `json:"stats"`

	// Fraud-pattern tags surfaced on the network.
	FraudTags []map[string]any `json:"fraud_tags"`

	// Risk-signal summaries: residential_proxy_reuse, email_intelligence,
	// phone_intelligence.
	RiskSignals  map[string]any `json:"risk_signals"`
	ReviewedAt   time.Time      `json:"reviewed_at"`
	ReviewedBy   string         `json:"reviewed_by"`
	ReviewReason string         `json:"review_reason"`

	// Number of private analyst notes in this investigation.
	NotesCount int64 `json:"notes_count"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkDetail is a response object.

func (*NetworkDetail) UnmarshalJSON

func (r *NetworkDetail) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkDetail leniently.

type NetworkDetailPatternTypes

type NetworkDetailPatternTypes string

NetworkDetailPatternTypes is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkDetailPatternTypesExactSameDevice          NetworkDetailPatternTypes = "exact_same_device"
	NetworkDetailPatternTypesSimilarDevice            NetworkDetailPatternTypes = "similar_device"
	NetworkDetailPatternTypesSameIPAddress            NetworkDetailPatternTypes = "same_ip_address"
	NetworkDetailPatternTypesSameAddress              NetworkDetailPatternTypes = "same_address"
	NetworkDetailPatternTypesSimilarSelfieBackgrounds NetworkDetailPatternTypes = "similar_selfie_backgrounds"
	NetworkDetailPatternTypesSimilarPOADocuments      NetworkDetailPatternTypes = "similar_poa_documents"
	NetworkDetailPatternTypesSameDocumentNumber       NetworkDetailPatternTypes = "same_document_number"
	NetworkDetailPatternTypesSamePhoneNumber          NetworkDetailPatternTypes = "same_phone_number"
	NetworkDetailPatternTypesSameEmail                NetworkDetailPatternTypes = "same_email"
)

Known values of NetworkDetailPatternTypes.

type NetworkDetailResponse

type NetworkDetailResponse struct {
	UUID string `json:"uuid"`

	// Human-readable per-organization sequential id, e.g. N-0001.
	NetworkID string `json:"network_id"`
	Name      string `json:"name"`

	// Network lifecycle status. Distinct from the per-applicant outcome_status
	// inside a network (approved/in_review/declined/not_completed).
	Status NetworkDetailResponseStatus `json:"status"`
	Risk   NetworkRiskDisplay          `json:"risk"`

	// The clustering patterns detected in this network.
	PatternTypes []NetworkDetailResponsePatternTypes `json:"pattern_types"`

	// The distinct signal types present in this network.
	SignalTypes []NetworkDetailResponseSignalTypes `json:"signal_types"`

	// Counts of members by category (e.g. total, per outcome_status).
	MemberCounts map[string]any `json:"member_counts"`

	// Breakdown of members by outcome_status.
	MemberStatus map[string]any `json:"member_status"`

	// Per signal_type coverage of this network's members.
	SignalCoverage  map[string]any `json:"signal_coverage"`
	FirstActivityAt time.Time      `json:"first_activity_at"`
	LastActivityAt  time.Time      `json:"last_activity_at"`

	// Aggregate stats for the network (e.g. member totals).
	Stats map[string]any `json:"stats"`

	// Fraud-pattern tags surfaced on the network.
	FraudTags []map[string]any `json:"fraud_tags"`

	// Risk-signal summaries: residential_proxy_reuse, email_intelligence,
	// phone_intelligence.
	RiskSignals  map[string]any `json:"risk_signals"`
	ReviewedAt   time.Time      `json:"reviewed_at"`
	ReviewedBy   string         `json:"reviewed_by"`
	ReviewReason string         `json:"review_reason"`

	// Number of private analyst notes in this investigation.
	NotesCount int64 `json:"notes_count"`

	// The organization's cross-organization sharing mode. Only `global` compares
	// networks across organizations; `private` and `off` keep them to the
	// organization's own history.
	SharingMode NetworkDetailResponseSharingMode `json:"sharing_mode"`

	// Whether cross-organization signals apply to this organization. They need both
	// the Identity Enterprise plan and the `global` sharing mode.
	CrossOrgAvailable bool `json:"cross_org_available"`

	// Why cross-organization signals do not apply, checked in this order. `plan`:
	// the organization's Identity plan does not include the cross-organization
	// fraud network (it needs Identity Enterprise), whatever the sharing mode.
	// `sharing_mode`: the plan includes it, but the sharing mode is `private` or
	// `off`. Null when `cross_org_available` is `true`.
	CrossOrgUnavailableReason NetworkDetailResponseCrossOrgUnavailableReason `json:"cross_org_unavailable_reason"`

	// Your application's tags on the network, oldest first. Each application sees
	// only its own tags. `fraud_tags` is separate and unchanged: the tags the
	// network's members carry.
	Tags     []NetworkTag    `json:"tags"`
	Outcomes NetworkOutcomes `json:"outcomes"`

	// Pattern scores over the whole network. Today one item, `background`.
	Patterns []NetworkPatternScore `json:"patterns"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkDetailResponse: The network detail, plus the organization's sharing mode, whether cross-organization signals apply to it, your application's tags on the network, member outcomes and pattern scores.

func (*NetworkDetailResponse) UnmarshalJSON

func (r *NetworkDetailResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkDetailResponse leniently.

type NetworkDetailResponseCrossOrgUnavailableReason

type NetworkDetailResponseCrossOrgUnavailableReason string

NetworkDetailResponseCrossOrgUnavailableReason: Why cross-organization signals do not apply, checked in this order. `plan`: the organization's Identity plan does not include the cross-organization fraud network (it needs Identity Enterprise), whatever the sharing mode. `sharing_mode`: the plan includes it, but the sharing mode is `private` or `off`. Null when `cross_org_available` is `true`.

NetworkDetailResponseCrossOrgUnavailableReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkDetailResponseCrossOrgUnavailableReasonPlan        NetworkDetailResponseCrossOrgUnavailableReason = "plan"
	NetworkDetailResponseCrossOrgUnavailableReasonSharingMode NetworkDetailResponseCrossOrgUnavailableReason = "sharing_mode"
)

Known values of NetworkDetailResponseCrossOrgUnavailableReason.

type NetworkDetailResponsePatternTypes

type NetworkDetailResponsePatternTypes string

NetworkDetailResponsePatternTypes is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkDetailResponsePatternTypesExactSameDevice          NetworkDetailResponsePatternTypes = "exact_same_device"
	NetworkDetailResponsePatternTypesSimilarDevice            NetworkDetailResponsePatternTypes = "similar_device"
	NetworkDetailResponsePatternTypesSameIPAddress            NetworkDetailResponsePatternTypes = "same_ip_address"
	NetworkDetailResponsePatternTypesSameAddress              NetworkDetailResponsePatternTypes = "same_address"
	NetworkDetailResponsePatternTypesSimilarSelfieBackgrounds NetworkDetailResponsePatternTypes = "similar_selfie_backgrounds"
	NetworkDetailResponsePatternTypesSimilarPOADocuments      NetworkDetailResponsePatternTypes = "similar_poa_documents"
	NetworkDetailResponsePatternTypesSameDocumentNumber       NetworkDetailResponsePatternTypes = "same_document_number"
	NetworkDetailResponsePatternTypesSamePhoneNumber          NetworkDetailResponsePatternTypes = "same_phone_number"
	NetworkDetailResponsePatternTypesSameEmail                NetworkDetailResponsePatternTypes = "same_email"
)

Known values of NetworkDetailResponsePatternTypes.

type NetworkDetailResponseSharingMode

type NetworkDetailResponseSharingMode string

NetworkDetailResponseSharingMode: The organization's cross-organization sharing mode. Only `global` compares networks across organizations; `private` and `off` keep them to the organization's own history.

NetworkDetailResponseSharingMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkDetailResponseSharingModeOff     NetworkDetailResponseSharingMode = "off"
	NetworkDetailResponseSharingModePrivate NetworkDetailResponseSharingMode = "private"
	NetworkDetailResponseSharingModeGlobal  NetworkDetailResponseSharingMode = "global"
)

Known values of NetworkDetailResponseSharingMode.

type NetworkDetailResponseSignalTypes

type NetworkDetailResponseSignalTypes string

NetworkDetailResponseSignalTypes is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkDetailResponseSignalTypesIPAddress      NetworkDetailResponseSignalTypes = "ip_address"
	NetworkDetailResponseSignalTypesDevice         NetworkDetailResponseSignalTypes = "device"
	NetworkDetailResponseSignalTypesFace           NetworkDetailResponseSignalTypes = "face"
	NetworkDetailResponseSignalTypesDocumentNumber NetworkDetailResponseSignalTypes = "document_number"
	NetworkDetailResponseSignalTypesPhone          NetworkDetailResponseSignalTypes = "phone"
	NetworkDetailResponseSignalTypesEmail          NetworkDetailResponseSignalTypes = "email"
	NetworkDetailResponseSignalTypesAddress        NetworkDetailResponseSignalTypes = "address"
)

Known values of NetworkDetailResponseSignalTypes.

type NetworkDetailResponseStatus

type NetworkDetailResponseStatus string

NetworkDetailResponseStatus: Network lifecycle status. Distinct from the per-applicant outcome_status inside a network (approved/in_review/declined/not_completed).

NetworkDetailResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkDetailResponseStatusActive    NetworkDetailResponseStatus = "active"
	NetworkDetailResponseStatusInReview  NetworkDetailResponseStatus = "in_review"
	NetworkDetailResponseStatusResolved  NetworkDetailResponseStatus = "resolved"
	NetworkDetailResponseStatusDismissed NetworkDetailResponseStatus = "dismissed"
)

Known values of NetworkDetailResponseStatus.

type NetworkDetailSignalTypes

type NetworkDetailSignalTypes string

NetworkDetailSignalTypes is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkDetailSignalTypesIPAddress      NetworkDetailSignalTypes = "ip_address"
	NetworkDetailSignalTypesDevice         NetworkDetailSignalTypes = "device"
	NetworkDetailSignalTypesFace           NetworkDetailSignalTypes = "face"
	NetworkDetailSignalTypesDocumentNumber NetworkDetailSignalTypes = "document_number"
	NetworkDetailSignalTypesPhone          NetworkDetailSignalTypes = "phone"
	NetworkDetailSignalTypesEmail          NetworkDetailSignalTypes = "email"
	NetworkDetailSignalTypesAddress        NetworkDetailSignalTypes = "address"
)

Known values of NetworkDetailSignalTypes.

type NetworkDetailStatus

type NetworkDetailStatus string

NetworkDetailStatus: Network lifecycle status. Distinct from the per-applicant outcome_status inside a network (approved/in_review/declined/not_completed).

NetworkDetailStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkDetailStatusActive    NetworkDetailStatus = "active"
	NetworkDetailStatusInReview  NetworkDetailStatus = "in_review"
	NetworkDetailStatusResolved  NetworkDetailStatus = "resolved"
	NetworkDetailStatusDismissed NetworkDetailStatus = "dismissed"
)

Known values of NetworkDetailStatus.

type NetworkGraph

type NetworkGraph struct {
	Network NetworkDetail `json:"network"`

	// Effective depth applied, or null when unbounded (depth=all).
	Depth int64 `json:"depth"`

	// True if the neighborhood was cut off by depth.
	Truncated bool                `json:"truncated"`
	Nodes     []NetworkGraphNode  `json:"nodes"`
	Edges     []NetworkGraphEdge  `json:"edges"`
	Metrics   NetworkGraphMetrics `json:"metrics"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkGraph is a response object.

func (*NetworkGraph) UnmarshalJSON

func (r *NetworkGraph) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkGraph leniently.

type NetworkGraphEdge

type NetworkGraphEdge struct {
	ID string `json:"id"`

	// Subject node id.
	Source string `json:"source"`

	// Signal node id.
	Target      string                      `json:"target"`
	SubjectKind NetworkGraphEdgeSubjectKind `json:"subject_kind"`
	SignalType  NetworkGraphEdgeSignalType  `json:"signal_type"`

	// 1.0 for an exact match.
	Confidence       float64   `json:"confidence"`
	ObservationCount int64     `json:"observation_count"`
	FirstSeenAt      time.Time `json:"first_seen_at"`
	LastSeenAt       time.Time `json:"last_seen_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkGraphEdge is a response object.

func (*NetworkGraphEdge) UnmarshalJSON

func (r *NetworkGraphEdge) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkGraphEdge leniently.

type NetworkGraphEdgeSignalType

type NetworkGraphEdgeSignalType string

NetworkGraphEdgeSignalType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkGraphEdgeSignalTypeIPAddress      NetworkGraphEdgeSignalType = "ip_address"
	NetworkGraphEdgeSignalTypeDevice         NetworkGraphEdgeSignalType = "device"
	NetworkGraphEdgeSignalTypeFace           NetworkGraphEdgeSignalType = "face"
	NetworkGraphEdgeSignalTypeDocumentNumber NetworkGraphEdgeSignalType = "document_number"
	NetworkGraphEdgeSignalTypePhone          NetworkGraphEdgeSignalType = "phone"
	NetworkGraphEdgeSignalTypeEmail          NetworkGraphEdgeSignalType = "email"
	NetworkGraphEdgeSignalTypeAddress        NetworkGraphEdgeSignalType = "address"
)

Known values of NetworkGraphEdgeSignalType.

type NetworkGraphEdgeSubjectKind

type NetworkGraphEdgeSubjectKind string

NetworkGraphEdgeSubjectKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkGraphEdgeSubjectKindVendorUser       NetworkGraphEdgeSubjectKind = "vendor_user"
	NetworkGraphEdgeSubjectKindVendorBusiness   NetworkGraphEdgeSubjectKind = "vendor_business"
	NetworkGraphEdgeSubjectKindTransactionParty NetworkGraphEdgeSubjectKind = "transaction_party"
)

Known values of NetworkGraphEdgeSubjectKind.

type NetworkGraphMetrics

type NetworkGraphMetrics struct {
	NodeCount      int64 `json:"node_count"`
	EdgeCount      int64 `json:"edge_count"`
	HubSignalCount int64 `json:"hub_signal_count"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkGraphMetrics is a response object.

func (*NetworkGraphMetrics) UnmarshalJSON

func (r *NetworkGraphMetrics) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkGraphMetrics leniently.

type NetworkGraphNode

type NetworkGraphNode struct {
	ID   string               `json:"id"`
	Kind NetworkGraphNodeKind `json:"kind"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkGraphNode: A subject node or a signal node, distinguished by kind. Subject nodes (kind: vendor_user | vendor_business | transaction_party) carry id, kind, subject, node_status (approved | in_review | declined | not_completed), and tags. Signal nodes (kind: signal) carry id, kind, uuid, signal_type, subject_count, coverage, is_hub, is_datacenter_ip, is_high_collision_device, node_status (signal_active | signal_guarded), tags, risk_evidence, first_seen_at, and last_seen_at.

func (*NetworkGraphNode) UnmarshalJSON

func (r *NetworkGraphNode) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkGraphNode leniently.

type NetworkGraphNodeKind

type NetworkGraphNodeKind string

NetworkGraphNodeKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkGraphNodeKindVendorUser       NetworkGraphNodeKind = "vendor_user"
	NetworkGraphNodeKindVendorBusiness   NetworkGraphNodeKind = "vendor_business"
	NetworkGraphNodeKindTransactionParty NetworkGraphNodeKind = "transaction_party"
	NetworkGraphNodeKindSignal           NetworkGraphNodeKind = "signal"
)

Known values of NetworkGraphNodeKind.

type NetworkListItem

type NetworkListItem struct {
	UUID string `json:"uuid"`

	// Human-readable per-organization sequential id, e.g. N-0001.
	NetworkID string `json:"network_id"`
	Name      string `json:"name"`

	// Network lifecycle status. Distinct from the per-applicant outcome_status
	// inside a network (approved/in_review/declined/not_completed).
	Status NetworkListItemStatus `json:"status"`
	Risk   NetworkRiskDisplay    `json:"risk"`

	// The clustering patterns detected in this network.
	PatternTypes []NetworkListItemPatternTypes `json:"pattern_types"`

	// The distinct signal types present in this network.
	SignalTypes []NetworkListItemSignalTypes `json:"signal_types"`

	// Counts of members by category (e.g. total, per outcome_status).
	MemberCounts map[string]any `json:"member_counts"`

	// Breakdown of members by outcome_status.
	MemberStatus map[string]any `json:"member_status"`

	// Per signal_type coverage of this network's members.
	SignalCoverage  map[string]any `json:"signal_coverage"`
	FirstActivityAt time.Time      `json:"first_activity_at"`
	LastActivityAt  time.Time      `json:"last_activity_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkListItem is a response object.

func (*NetworkListItem) UnmarshalJSON

func (r *NetworkListItem) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkListItem leniently.

type NetworkListItemPatternTypes

type NetworkListItemPatternTypes string

NetworkListItemPatternTypes is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkListItemPatternTypesExactSameDevice          NetworkListItemPatternTypes = "exact_same_device"
	NetworkListItemPatternTypesSimilarDevice            NetworkListItemPatternTypes = "similar_device"
	NetworkListItemPatternTypesSameIPAddress            NetworkListItemPatternTypes = "same_ip_address"
	NetworkListItemPatternTypesSameAddress              NetworkListItemPatternTypes = "same_address"
	NetworkListItemPatternTypesSimilarSelfieBackgrounds NetworkListItemPatternTypes = "similar_selfie_backgrounds"
	NetworkListItemPatternTypesSimilarPOADocuments      NetworkListItemPatternTypes = "similar_poa_documents"
	NetworkListItemPatternTypesSameDocumentNumber       NetworkListItemPatternTypes = "same_document_number"
	NetworkListItemPatternTypesSamePhoneNumber          NetworkListItemPatternTypes = "same_phone_number"
	NetworkListItemPatternTypesSameEmail                NetworkListItemPatternTypes = "same_email"
)

Known values of NetworkListItemPatternTypes.

type NetworkListItemSignalTypes

type NetworkListItemSignalTypes string

NetworkListItemSignalTypes is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkListItemSignalTypesIPAddress      NetworkListItemSignalTypes = "ip_address"
	NetworkListItemSignalTypesDevice         NetworkListItemSignalTypes = "device"
	NetworkListItemSignalTypesFace           NetworkListItemSignalTypes = "face"
	NetworkListItemSignalTypesDocumentNumber NetworkListItemSignalTypes = "document_number"
	NetworkListItemSignalTypesPhone          NetworkListItemSignalTypes = "phone"
	NetworkListItemSignalTypesEmail          NetworkListItemSignalTypes = "email"
	NetworkListItemSignalTypesAddress        NetworkListItemSignalTypes = "address"
)

Known values of NetworkListItemSignalTypes.

type NetworkListItemStatus

type NetworkListItemStatus string

NetworkListItemStatus: Network lifecycle status. Distinct from the per-applicant outcome_status inside a network (approved/in_review/declined/not_completed).

NetworkListItemStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkListItemStatusActive    NetworkListItemStatus = "active"
	NetworkListItemStatusInReview  NetworkListItemStatus = "in_review"
	NetworkListItemStatusResolved  NetworkListItemStatus = "resolved"
	NetworkListItemStatusDismissed NetworkListItemStatus = "dismissed"
)

Known values of NetworkListItemStatus.

type NetworkMap

type NetworkMap struct {
	Network NetworkDetail `json:"network"`

	// Number of distinct address/location points members converge on.
	ConvergenceCount int64              `json:"convergence_count"`
	Countries        []string           `json:"countries"`
	Points           []NetworkMapPoints `json:"points"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkMap is a response object.

func (*NetworkMap) UnmarshalJSON

func (r *NetworkMap) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkMap leniently.

type NetworkMapPoints

type NetworkMapPoints struct {
	UUID        string    `json:"uuid"`
	Country     string    `json:"country"`
	CountryCode string    `json:"country_code"`
	City        string    `json:"city"`
	Latitude    float64   `json:"latitude"`
	Longitude   float64   `json:"longitude"`
	ObservedAt  time.Time `json:"observed_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkMapPoints is a response object.

func (*NetworkMapPoints) UnmarshalJSON

func (r *NetworkMapPoints) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkMapPoints leniently.

type NetworkMember

type NetworkMember struct {
	// The vendor_user, vendor_business, or transaction_party this member
	// represents.
	Subject map[string]any `json:"subject"`

	// The subject's verification/decision outcome.
	OutcomeStatus string `json:"outcome_status"`

	// For a member row this is always one of the subject-outcome values: approved,
	// in_review, declined, or not_completed.
	NodeStatus           NetworkMemberNodeStatus `json:"node_status"`
	Tags                 []NetworkNodeTag        `json:"tags"`
	Risk                 NetworkRiskDisplay      `json:"risk"`
	SignalCoverage       map[string]any          `json:"signal_coverage"`
	SharedInfrastructure map[string]any          `json:"shared_infrastructure"`
	JoinedAt             time.Time               `json:"joined_at"`
	LastSeenAt           time.Time               `json:"last_seen_at"`
	Provenance           NetworkMemberProvenance `json:"provenance"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkMember is a response object.

func (*NetworkMember) UnmarshalJSON

func (r *NetworkMember) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkMember leniently.

type NetworkMemberNodeStatus

type NetworkMemberNodeStatus string

NetworkMemberNodeStatus: For a member row this is always one of the subject-outcome values: approved, in_review, declined, or not_completed.

NetworkMemberNodeStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkMemberNodeStatusApproved      NetworkMemberNodeStatus = "approved"
	NetworkMemberNodeStatusInReview      NetworkMemberNodeStatus = "in_review"
	NetworkMemberNodeStatusDeclined      NetworkMemberNodeStatus = "declined"
	NetworkMemberNodeStatusNotCompleted  NetworkMemberNodeStatus = "not_completed"
	NetworkMemberNodeStatusSignalActive  NetworkMemberNodeStatus = "signal_active"
	NetworkMemberNodeStatusSignalGuarded NetworkMemberNodeStatus = "signal_guarded"
)

Known values of NetworkMemberNodeStatus.

type NetworkMemberProvenance

type NetworkMemberProvenance struct {
	SessionIDs         []string `json:"session_ids"`
	BusinessSessionIDs []string `json:"business_session_ids"`
	TransactionIDs     []string `json:"transaction_ids"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkMemberProvenance is a response object.

func (*NetworkMemberProvenance) UnmarshalJSON

func (r *NetworkMemberProvenance) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkMemberProvenance leniently.

type NetworkNodeTag

type NetworkNodeTag struct {
	ID   string `json:"id"`
	Name string `json:"name"`

	// Null for guard tags, whose color token the renderer owns.
	Color string `json:"color"`

	// Where the tag came from: a tag on the user/business, a tag on a session in
	// this network, a tag on a transaction a party belongs to, or a signal guard
	// condition (e.g. hub, datacenter IP).
	Source NetworkNodeTagSource `json:"source"`

	// customer for customer-defined tags, quality for signal-quality guard tags.
	// Null when not applicable.
	Category NetworkNodeTagCategory `json:"category"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkNodeTag is a response object.

func (*NetworkNodeTag) UnmarshalJSON

func (r *NetworkNodeTag) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkNodeTag leniently.

type NetworkNodeTagCategory

type NetworkNodeTagCategory string

NetworkNodeTagCategory: customer for customer-defined tags, quality for signal-quality guard tags. Null when not applicable.

NetworkNodeTagCategory is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkNodeTagCategoryCustomer NetworkNodeTagCategory = "customer"
	NetworkNodeTagCategoryQuality  NetworkNodeTagCategory = "quality"
)

Known values of NetworkNodeTagCategory.

type NetworkNodeTagSource

type NetworkNodeTagSource string

NetworkNodeTagSource: Where the tag came from: a tag on the user/business, a tag on a session in this network, a tag on a transaction a party belongs to, or a signal guard condition (e.g. hub, datacenter IP).

NetworkNodeTagSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkNodeTagSourceSubjectTag     NetworkNodeTagSource = "subject_tag"
	NetworkNodeTagSourceSessionTag     NetworkNodeTagSource = "session_tag"
	NetworkNodeTagSourceTransactionTag NetworkNodeTagSource = "transaction_tag"
	NetworkNodeTagSourceSignalGuard    NetworkNodeTagSource = "signal_guard"
)

Known values of NetworkNodeTagSource.

type NetworkNote

type NetworkNote struct {
	UUID string `json:"uuid"`

	// Authenticated author, assigned by the server.
	ActorEmail      string    `json:"actor_email"`
	Comment         string    `json:"comment"`
	ClientReference string    `json:"client_reference"`
	CreatedAt       time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkNote is a response object.

func (*NetworkNote) UnmarshalJSON

func (r *NetworkNote) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkNote leniently.

type NetworkOutcomes

type NetworkOutcomes struct {
	// Members whose most recent decided verification was approved.
	Approved int64 `json:"approved"`

	// Members whose most recent decided verification was declined.
	Declined int64 `json:"declined"`

	// Members whose most recent decided verification is in review.
	InReview int64 `json:"in_review"`

	// Members with at least one verification, decided or not. A member whose
	// verifications are all undecided (not started, in progress, expired or
	// abandoned) counts here and in no other key.
	Total int64 `json:"total"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkOutcomes: Where the network's people and businesses stand. Each member you may see counts once, by the status of their most recent verification that reached a decision. Transaction parties are not counted.

func (*NetworkOutcomes) UnmarshalJSON

func (r *NetworkOutcomes) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkOutcomes leniently.

type NetworkPatternScore

type NetworkPatternScore struct {
	// `background`: the mean similarity of every pair of member selfie backgrounds,
	// with the person masked out. It reads the newest selfie of each person, at
	// most the 50 newest, and leaves out age assurance sessions. It covers the
	// whole network, not only the members of your applications.
	Type NetworkPatternScoreType `json:"type"`

	// From 0 to 1, rounded to 4 decimals. Null when `reason` is set.
	Score float64 `json:"score"`

	// How many members' selfies the score compared. A selfie that cannot be read,
	// or shows too little background, is not compared. Null while `computing`; 0 or
	// 1 with `not_enough_selfies`.
	Members int64 `json:"members"`

	// Why there is no score. `computing`: the score for the current members is
	// being computed; read the network again later. `not_enough_selfies`: fewer
	// than two members have a usable selfie. Null when there is a score.
	Reason NetworkPatternScoreReason `json:"reason"`

	// When the score was computed. Null while `computing`.
	ComputedAt time.Time `json:"computed_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkPatternScore: How alike one kind of the members' data is across the whole network. A pattern is not a signal: no shared value links the members.

func (*NetworkPatternScore) UnmarshalJSON

func (r *NetworkPatternScore) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkPatternScore leniently.

type NetworkPatternScoreReason

type NetworkPatternScoreReason string

NetworkPatternScoreReason: Why there is no score. `computing`: the score for the current members is being computed; read the network again later. `not_enough_selfies`: fewer than two members have a usable selfie. Null when there is a score.

NetworkPatternScoreReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkPatternScoreReasonComputing        NetworkPatternScoreReason = "computing"
	NetworkPatternScoreReasonNotEnoughSelfies NetworkPatternScoreReason = "not_enough_selfies"
)

Known values of NetworkPatternScoreReason.

type NetworkPatternScoreType

type NetworkPatternScoreType string

NetworkPatternScoreType: `background`: the mean similarity of every pair of member selfie backgrounds, with the person masked out. It reads the newest selfie of each person, at most the 50 newest, and leaves out age assurance sessions. It covers the whole network, not only the members of your applications.

NetworkPatternScoreType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkPatternScoreTypeBackground NetworkPatternScoreType = "background"
)

Known values of NetworkPatternScoreType.

type NetworkRiskDisplay

type NetworkRiskDisplay struct {
	// Risk score, 0-100.
	Score int64 `json:"score"`

	// Band the score renders as. high >= 70, medium >= 40, otherwise low.
	Band NetworkRiskDisplayBand `json:"band"`

	// Normalized 0-1 value for rendering a risk bar.
	Bar float64 `json:"bar"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkRiskDisplay is a response object.

func (*NetworkRiskDisplay) UnmarshalJSON

func (r *NetworkRiskDisplay) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkRiskDisplay leniently.

type NetworkRiskDisplayBand

type NetworkRiskDisplayBand string

NetworkRiskDisplayBand: Band the score renders as. high >= 70, medium >= 40, otherwise low.

NetworkRiskDisplayBand is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkRiskDisplayBandLow    NetworkRiskDisplayBand = "low"
	NetworkRiskDisplayBandMedium NetworkRiskDisplayBand = "medium"
	NetworkRiskDisplayBandHigh   NetworkRiskDisplayBand = "high"
)

Known values of NetworkRiskDisplayBand.

type NetworkSignal

type NetworkSignal struct {
	UUID         string                  `json:"uuid"`
	SignalType   NetworkSignalSignalType `json:"signal_type"`
	SubjectCount int64                   `json:"subject_count"`
	Coverage     float64                 `json:"coverage"`

	// True when this signal links an unusually large number of subjects.
	IsHub                 bool                    `json:"is_hub"`
	IsDatacenterIP        bool                    `json:"is_datacenter_ip"`
	IsHighCollisionDevice bool                    `json:"is_high_collision_device"`
	NodeStatus            NetworkSignalNodeStatus `json:"node_status"`
	Tags                  []NetworkNodeTag        `json:"tags"`
	RiskEvidence          map[string]any          `json:"risk_evidence"`
	FirstSeenAt           time.Time               `json:"first_seen_at"`
	LastSeenAt            time.Time               `json:"last_seen_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkSignal is a response object.

func (*NetworkSignal) UnmarshalJSON

func (r *NetworkSignal) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkSignal leniently.

type NetworkSignalNodeStatus

type NetworkSignalNodeStatus string

NetworkSignalNodeStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkSignalNodeStatusSignalActive  NetworkSignalNodeStatus = "signal_active"
	NetworkSignalNodeStatusSignalGuarded NetworkSignalNodeStatus = "signal_guarded"
)

Known values of NetworkSignalNodeStatus.

type NetworkSignalSignalType

type NetworkSignalSignalType string

NetworkSignalSignalType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkSignalSignalTypeIPAddress      NetworkSignalSignalType = "ip_address"
	NetworkSignalSignalTypeDevice         NetworkSignalSignalType = "device"
	NetworkSignalSignalTypeFace           NetworkSignalSignalType = "face"
	NetworkSignalSignalTypeDocumentNumber NetworkSignalSignalType = "document_number"
	NetworkSignalSignalTypePhone          NetworkSignalSignalType = "phone"
	NetworkSignalSignalTypeEmail          NetworkSignalSignalType = "email"
	NetworkSignalSignalTypeAddress        NetworkSignalSignalType = "address"
)

Known values of NetworkSignalSignalType.

type NetworkTag

type NetworkTag struct {
	// The tag's UUID, the same value you pass as `tag_uuid`.
	UUID string `json:"uuid"`
	Name string `json:"name"`

	// Hex color, for example `#6366F1`.
	Color string `json:"color"`

	// `didit` for a Didit preset tag, `custom` for a tag your team created.
	Source NetworkTagSource `json:"source"`

	// Email of the console member who added the tag. Null when an API key added it.
	AddedBy string    `json:"added_by"`
	AddedAt time.Time `json:"added_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkTag: One of your application's tags on the network.

func (*NetworkTag) UnmarshalJSON

func (r *NetworkTag) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkTag leniently.

type NetworkTagRequest

type NetworkTagRequest struct {
	// UUID of one of your application's tags. Required.
	TagUUID string `json:"tag_uuid"`
}

NetworkTagRequest is a request object.

func (NetworkTagRequest) MarshalJSON

func (r NetworkTagRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type NetworkTagSource

type NetworkTagSource string

NetworkTagSource: `didit` for a Didit preset tag, `custom` for a tag your team created.

NetworkTagSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkTagSourceDidit  NetworkTagSource = "didit"
	NetworkTagSourceCustom NetworkTagSource = "custom"
)

Known values of NetworkTagSource.

type NetworkTimelineAccount

type NetworkTimelineAccount struct {
	// `<kind>:<uuid>`, where kind is `vendor_user`, `vendor_business` or
	// `transaction_party`.
	NodeID      string                         `json:"node_id"`
	NodeType    NetworkTimelineAccountNodeType `json:"node_type"`
	UUID        string                         `json:"uuid"`
	VendorData  string                         `json:"vendor_data"`
	DisplayName string                         `json:"display_name"`

	// `owned` when the record belongs to the application you called (for a console
	// member, to an application they were granted). `organization` when it belongs
	// to another application of your organization.
	Ownership NetworkTimelineAccountOwnership `json:"ownership"`
	Route     NetworkTimelineRoute            `json:"route"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkTimelineAccount: The member account the event belongs to.

func (*NetworkTimelineAccount) UnmarshalJSON

func (r *NetworkTimelineAccount) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkTimelineAccount leniently.

type NetworkTimelineAccountNodeType

type NetworkTimelineAccountNodeType string

NetworkTimelineAccountNodeType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkTimelineAccountNodeTypeAccount          NetworkTimelineAccountNodeType = "account"
	NetworkTimelineAccountNodeTypeBusinessAccount  NetworkTimelineAccountNodeType = "business_account"
	NetworkTimelineAccountNodeTypeTransactionParty NetworkTimelineAccountNodeType = "transaction_party"
)

Known values of NetworkTimelineAccountNodeType.

type NetworkTimelineAccountOwnership

type NetworkTimelineAccountOwnership string

NetworkTimelineAccountOwnership: `owned` when the record belongs to the application you called (for a console member, to an application they were granted). `organization` when it belongs to another application of your organization.

NetworkTimelineAccountOwnership is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkTimelineAccountOwnershipOwned        NetworkTimelineAccountOwnership = "owned"
	NetworkTimelineAccountOwnershipOrganization NetworkTimelineAccountOwnership = "organization"
)

Known values of NetworkTimelineAccountOwnership.

type NetworkTimelineAmount

type NetworkTimelineAmount struct {
	// Decimal amount as a string.
	Value     string `json:"value"`
	Currency  string `json:"currency"`
	Direction string `json:"direction"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkTimelineAmount is a response object.

func (*NetworkTimelineAmount) UnmarshalJSON

func (r *NetworkTimelineAmount) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkTimelineAmount leniently.

type NetworkTimelineAttempt

type NetworkTimelineAttempt struct {
	// The session UUID, or the business session UUID for a company.
	SessionID     string `json:"session_id"`
	SessionNumber int64  `json:"session_number"`

	// This session's position among the account's sessions, in creation order.
	Attempt int64 `json:"attempt"`

	// How many sessions the account has.
	AttemptCount int64 `json:"attempt_count"`

	// The session status, for example `Approved` or `Declined`.
	Status          string    `json:"status"`
	StatusChangedAt time.Time `json:"status_changed_at"`

	// For a declined session only: its warnings, oldest first, once per warning.
	// Empty otherwise.
	DeclineReasons []NetworkTimelineDeclineReason `json:"decline_reasons"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkTimelineAttempt: One verification session of the account.

func (*NetworkTimelineAttempt) UnmarshalJSON

func (r *NetworkTimelineAttempt) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkTimelineAttempt leniently.

type NetworkTimelineCaseLinked

type NetworkTimelineCaseLinked struct {
	CaseID      string `json:"case_id"`
	CaseNumber  string `json:"case_number"`
	Status      string `json:"status"`
	AuthorEmail string `json:"author_email"`
	AuthorName  string `json:"author_name"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkTimelineCaseLinked: A case opened for the network in your organization. `source_ref.ownership` says whether it belongs to the application you called.

func (*NetworkTimelineCaseLinked) UnmarshalJSON

func (r *NetworkTimelineCaseLinked) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkTimelineCaseLinked leniently.

type NetworkTimelineDeclineReason

type NetworkTimelineDeclineReason struct {
	// The warning code.
	Risk string `json:"risk"`

	// The feature that raised the warning.
	Feature          string `json:"feature"`
	ShortDescription string `json:"short_description"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkTimelineDeclineReason is a response object.

func (*NetworkTimelineDeclineReason) UnmarshalJSON

func (r *NetworkTimelineDeclineReason) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkTimelineDeclineReason leniently.

type NetworkTimelineDevice

type NetworkTimelineDevice struct {
	Fingerprint string `json:"fingerprint"`

	// A readable device label built from the event's device context.
	Label string `json:"label"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkTimelineDevice is a response object.

func (*NetworkTimelineDevice) UnmarshalJSON

func (r *NetworkTimelineDevice) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkTimelineDevice leniently.

type NetworkTimelineIP

type NetworkTimelineIP struct {
	Address     string `json:"address"`
	CountryCode string `json:"country_code"`
	City        string `json:"city"`

	// The connection type label for the address, as free text.
	ConnectionType string `json:"connection_type"`
	IsVpnOrTor     bool   `json:"is_vpn_or_tor"`
	IsDataCenter   bool   `json:"is_data_center"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkTimelineIP is a response object.

func (*NetworkTimelineIP) UnmarshalJSON

func (r *NetworkTimelineIP) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkTimelineIP leniently.

type NetworkTimelineLogin

type NetworkTimelineLogin struct {
	// `<event_category>.<action_type>`: `auth.login` or `security.login_succeeded`
	// for a sign-in, `auth.login_failed` or `security.login_failed` for a failed
	// one.
	Action    string `json:"action"`
	Succeeded bool   `json:"succeeded"`

	// The event's status.
	Status string `json:"status"`

	// Null when the event has no IP address.
	IP NetworkTimelineIP `json:"ip"`

	// Null when the event has no device fingerprint or context.
	Device NetworkTimelineDevice `json:"device"`

	// The account's first successful sign-in on record.
	IsFirstLogin bool `json:"is_first_login"`

	// A successful sign-in from a device none of the account's earlier successful
	// sign-ins came from. Never true on the first sign-in.
	IsNewDevice bool `json:"is_new_device"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkTimelineLogin: A sign-in event you posted for a person through the events API.

func (*NetworkTimelineLogin) UnmarshalJSON

func (r *NetworkTimelineLogin) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkTimelineLogin leniently.

type NetworkTimelineNoteAdded

type NetworkTimelineNoteAdded struct {
	NoteID      string `json:"note_id"`
	AuthorEmail string `json:"author_email"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkTimelineNoteAdded: A note left on the network. The note text is not included.

func (*NetworkTimelineNoteAdded) UnmarshalJSON

func (r *NetworkTimelineNoteAdded) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkTimelineNoteAdded leniently.

type NetworkTimelineRoute

type NetworkTimelineRoute struct {
	// `user`, `business` or `transaction_party` for an account; `session`,
	// `business_session` or `transaction` for a source record.
	Kind          string `json:"kind"`
	ID            string `json:"id"`
	ApplicationID string `json:"application_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkTimelineRoute: Where the record opens: its kind, its UUID and the application it belongs to.

func (*NetworkTimelineRoute) UnmarshalJSON

func (r *NetworkTimelineRoute) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkTimelineRoute leniently.

type NetworkTimelineRuleHit

type NetworkTimelineRuleHit struct {
	RuleID        string `json:"rule_id"`
	RuleTitle     string `json:"rule_title"`
	RuleCategory  string `json:"rule_category"`
	RuleSource    string `json:"rule_source"`
	Severity      string `json:"severity"`
	ScoreDelta    int64  `json:"score_delta"`
	StatusTarget  string `json:"status_target"`
	ActionSummary string `json:"action_summary"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkTimelineRuleHit: A live rule that matched a member's transaction or event. Test-mode matches are not included.

func (*NetworkTimelineRuleHit) UnmarshalJSON

func (r *NetworkTimelineRuleHit) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkTimelineRuleHit leniently.

type NetworkTimelineSourceRef

type NetworkTimelineSourceRef struct {
	Kind NetworkTimelineSourceRefKind `json:"kind"`
	ID   string                       `json:"id"`

	// `owned` when the record belongs to the application you called (for a console
	// member, to an application they were granted). `organization` when it belongs
	// to another application of your organization.
	Ownership NetworkTimelineSourceRefOwnership `json:"ownership"`

	// Absent for `monitoring_event` and `case`.
	Route NetworkTimelineRoute `json:"route"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkTimelineSourceRef: The record the event was read from.

func (*NetworkTimelineSourceRef) UnmarshalJSON

func (r *NetworkTimelineSourceRef) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkTimelineSourceRef leniently.

type NetworkTimelineSourceRefKind

type NetworkTimelineSourceRefKind string

NetworkTimelineSourceRefKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkTimelineSourceRefKindSession         NetworkTimelineSourceRefKind = "session"
	NetworkTimelineSourceRefKindBusinessSession NetworkTimelineSourceRefKind = "business_session"
	NetworkTimelineSourceRefKindTransaction     NetworkTimelineSourceRefKind = "transaction"
	NetworkTimelineSourceRefKindMonitoringEvent NetworkTimelineSourceRefKind = "monitoring_event"
	NetworkTimelineSourceRefKindCase            NetworkTimelineSourceRefKind = "case"
)

Known values of NetworkTimelineSourceRefKind.

type NetworkTimelineSourceRefOwnership

type NetworkTimelineSourceRefOwnership string

NetworkTimelineSourceRefOwnership: `owned` when the record belongs to the application you called (for a console member, to an application they were granted). `organization` when it belongs to another application of your organization.

NetworkTimelineSourceRefOwnership is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworkTimelineSourceRefOwnershipOwned        NetworkTimelineSourceRefOwnership = "owned"
	NetworkTimelineSourceRefOwnershipOrganization NetworkTimelineSourceRefOwnership = "organization"
)

Known values of NetworkTimelineSourceRefOwnership.

type NetworkTimelineTransaction

type NetworkTimelineTransaction struct {
	TransactionID     string `json:"transaction_id"`
	TransactionNumber int64  `json:"transaction_number"`
	TransactionType   string `json:"transaction_type"`
	ActionType        string `json:"action_type"`

	// Null when the transaction has no amount.
	Amount              NetworkTimelineAmount `json:"amount"`
	Status              string                `json:"status"`
	DecisionReasonCode  string                `json:"decision_reason_code"`
	DecisionReasonLabel string                `json:"decision_reason_label"`

	// The account's role in the transaction: `APPLICANT`, `REMITTER`, `BENEFICIARY`
	// or `COUNTERPARTY`.
	PartyRole string `json:"party_role"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworkTimelineTransaction: A transaction a member account took part in, dated by its transaction date.

func (*NetworkTimelineTransaction) UnmarshalJSON

func (r *NetworkTimelineTransaction) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworkTimelineTransaction leniently.

type NetworksDownloadReportParams

type NetworksDownloadReportParams struct {
	// Console user access token in the form Bearer <token>. Required.
	Authorization string `json:"-" header:"Authorization"`
}

NetworksDownloadReportParams holds the parameters of Client.Networks.DownloadReport.

func (NetworksDownloadReportParams) MarshalJSON

func (r NetworksDownloadReportParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type NetworksListMembersResponse

type NetworksListMembersResponse struct {
	Results []NetworkMember `json:"results"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworksListMembersResponse is a response object.

func (*NetworksListMembersResponse) UnmarshalJSON

func (r *NetworksListMembersResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworksListMembersResponse leniently.

type NetworksListParams

type NetworksListParams struct {
	// Comma-separated statuses to include: active,in_review,resolved,dismissed.
	// Omit to exclude dismissed.
	Status Opt[string] `json:"-" query:"status"`

	// `transactions` keeps networks whose members are all transaction parties;
	// `identity` keeps every other network. Omit for both. It also narrows
	// `counts.views` and `counts.facets`. Any other value returns 400.
	Scope Opt[NetworksListParamsScope] `json:"-" query:"scope"`

	// Comma-separated signal types:
	// ip_address,device,face,document_number,phone,email,address.
	SignalType Opt[string] `json:"-" query:"signal_type"`

	// Comma-separated pattern types, e.g. exact_same_device,same_email.
	PatternType Opt[string] `json:"-" query:"pattern_type"`

	// Comma-separated bands: low,medium,high.
	RiskBand Opt[string] `json:"-" query:"risk_band"`

	// Minimum member count.
	MinSize Opt[int64] `json:"-" query:"min_size"`

	// Maximum member count.
	MaxSize Opt[int64] `json:"-" query:"max_size"`

	// Comma-separated assignees: `unassigned`, member emails (matched
	// case-insensitively), or `me` for the calling console member. A network
	// matches any value. `me` needs a console member token: an API key gets 400
	// `{"assignee": ["\"me\" needs a user token; an API key has no assignee
	// identity."]}`.
	Assignee Opt[string] `json:"-" query:"assignee"`

	// Comma-separated priorities: `low`, `medium`, `high`, or `none` for networks
	// without a priority. Any other value returns 400 `{"priority": "Unknown
	// priority: <values>."}`.
	Priority Opt[string] `json:"-" query:"priority"`

	// Minimum risk score, a whole number from 0 to 100. A value that is not a whole
	// number returns 400 `{"risk_min": "Use a whole number from 0 to 100."}`.
	RiskMin Opt[int64] `json:"-" query:"risk_min"`

	// `true` keeps the networks your application opened a case for, `false` the
	// others. Any other value is ignored.
	HasCase Opt[bool] `json:"-" query:"has_case"`

	// Lower bound on last_activity_at (ISO 8601 date or datetime).
	DateFrom Opt[string] `json:"-" query:"date_from"`

	// Upper bound on first_activity_at (ISO 8601 date or datetime).
	DateTo Opt[string] `json:"-" query:"date_to"`

	// Free-text search across network name, member names, the network_id (N-0001),
	// and exact pattern_type tokens.
	Q Opt[string] `json:"-" query:"q"`

	// One of risk_score, -risk_score, last_activity_at, -last_activity_at,
	// first_activity_at, -first_activity_at, network_number, -network_number.
	// Defaults to -risk_score,-last_activity_at.
	Ordering Opt[string] `json:"-" query:"ordering"`

	// Page size, 1-500. Defaults to 100.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based offset of the first record.
	Offset Opt[int64] `json:"-" query:"offset"`

	// `false` returns the page and its `count` only, without `kpis` and `counts`.
	// Defaults to `true`. Any value other than `true` or `false` returns 400.
	Summary Opt[bool] `json:"-" query:"summary"`
}

NetworksListParams holds the parameters of Client.Networks.List.

func (NetworksListParams) MarshalJSON

func (r NetworksListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type NetworksListParamsScope

type NetworksListParamsScope string

NetworksListParamsScope is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworksListParamsScopeIdentity     NetworksListParamsScope = "identity"
	NetworksListParamsScopeTransactions NetworksListParamsScope = "transactions"
)

Known values of NetworksListParamsScope.

type NetworksListSignalsResponse

type NetworksListSignalsResponse struct {
	Results []NetworkSignal `json:"results"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworksListSignalsResponse is a response object.

func (*NetworksListSignalsResponse) UnmarshalJSON

func (r *NetworksListSignalsResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworksListSignalsResponse leniently.

type NetworksNotesCreateParams

type NetworksNotesCreateParams struct {
	// Required.
	Comment string `json:"comment"`

	// Required.
	ClientReference string `json:"client_reference"`

	// Console user access token in the form Bearer <token>. Required.
	Authorization string `json:"-" header:"Authorization"`
}

NetworksNotesCreateParams holds the parameters of Client.Networks.Notes.Create.

func (NetworksNotesCreateParams) MarshalJSON

func (r NetworksNotesCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type NetworksNotesDeleteParams

type NetworksNotesDeleteParams struct {
	// Console user access token in the form Bearer <token>. Required.
	Authorization string `json:"-" header:"Authorization"`
}

NetworksNotesDeleteParams holds the parameters of Client.Networks.Notes.Delete.

func (NetworksNotesDeleteParams) MarshalJSON

func (r NetworksNotesDeleteParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type NetworksNotesListParams

type NetworksNotesListParams struct {
	Limit  Opt[int64] `json:"-" query:"limit"`
	Offset Opt[int64] `json:"-" query:"offset"`

	// Console user access token in the form Bearer <token>. Required.
	Authorization string `json:"-" header:"Authorization"`
}

NetworksNotesListParams holds the parameters of Client.Networks.Notes.List.

func (NetworksNotesListParams) MarshalJSON

func (r NetworksNotesListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type NetworksNotesService

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

NetworksNotesService holds the networks notes operations. Use it through Client.Networks.Notes.

func (*NetworksNotesService) Create

Create: Add a private network note.

Requires a console user with write:networks. The author is assigned from the authenticated user. Supply a new random UUID client_reference for each note; retry the same body and reference after an uncertain response to avoid duplicates. Reusing a reference for another body, author or network returns 409. Notes follow the surviving investigation when networks merge.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/notes/

func (*NetworksNotesService) Delete

func (r *NetworksNotesService) Delete(ctx context.Context, networkUUID string, noteUUID string, params NetworksNotesDeleteParams, opts ...option.RequestOption) error

Delete: Delete your network note.

Requires write:networks and the authenticated author of the note. Deletion is irreversible. Connected account and verification data are unaffected.

The organization and application ids come from the client options.

DELETE /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/notes/{note_uuid}/

func (*NetworksNotesService) List

List: List private network notes.

Console users with read:networks can read notes on a network visible to the application. Notes stay within the organization and are not contributed to shared intelligence. Newest notes appear first.

It returns one page; ListAutoPaging iterates over every item of every page.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/notes/

func (*NetworksNotesService) ListAutoPaging

func (r *NetworksNotesService) ListAutoPaging(ctx context.Context, networkUUID string, params NetworksNotesListParams, opts ...option.RequestOption) *PageIterator[NetworkNote]

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

type NetworksRetrieveGraphParams

type NetworksRetrieveGraphParams struct {
	// Hops from the focus subject to include. Defaults to all (unbounded).
	Depth Opt[NetworksRetrieveGraphParamsDepth] `json:"-" query:"depth"`

	// Subject type to center the graph on. Must be supplied together with focus_id;
	// defaults to an arbitrary member when depth is bounded and neither is
	// supplied.
	FocusKind Opt[NetworksRetrieveGraphParamsFocusKind] `json:"-" query:"focus_kind"`

	// Subject UUID to center the graph on.
	FocusID Opt[string] `json:"-" query:"focus_id"`
}

NetworksRetrieveGraphParams holds the parameters of Client.Networks.RetrieveGraph.

func (NetworksRetrieveGraphParams) MarshalJSON

func (r NetworksRetrieveGraphParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type NetworksRetrieveGraphParamsDepth

type NetworksRetrieveGraphParamsDepth string

NetworksRetrieveGraphParamsDepth is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworksRetrieveGraphParamsDepth1   NetworksRetrieveGraphParamsDepth = "1"
	NetworksRetrieveGraphParamsDepth2   NetworksRetrieveGraphParamsDepth = "2"
	NetworksRetrieveGraphParamsDepth3   NetworksRetrieveGraphParamsDepth = "3"
	NetworksRetrieveGraphParamsDepthAll NetworksRetrieveGraphParamsDepth = "all"
)

Known values of NetworksRetrieveGraphParamsDepth.

type NetworksRetrieveGraphParamsFocusKind

type NetworksRetrieveGraphParamsFocusKind string

NetworksRetrieveGraphParamsFocusKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworksRetrieveGraphParamsFocusKindVendorUser       NetworksRetrieveGraphParamsFocusKind = "vendor_user"
	NetworksRetrieveGraphParamsFocusKindVendorBusiness   NetworksRetrieveGraphParamsFocusKind = "vendor_business"
	NetworksRetrieveGraphParamsFocusKindTransactionParty NetworksRetrieveGraphParamsFocusKind = "transaction_party"
)

Known values of NetworksRetrieveGraphParamsFocusKind.

type NetworksRetrieveTimelineParams

type NetworksRetrieveTimelineParams struct {
	// `2` returns the typed timeline. Omit it for the default timeline. Any other
	// value returns 400.
	Contract Opt[NetworksRetrieveTimelineParamsContract] `json:"-" query:"contract"`

	// Typed timeline only. Events per page, 1 to 500. Defaults to 100.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Typed timeline only. The previous page's `next_cursor`. An invalid or empty
	// cursor returns 400.
	Cursor Opt[string] `json:"-" query:"cursor"`

	// Typed timeline only. Event types to keep, repeated or comma-separated, at
	// most 20 values. Defaults to every type.
	EventType Opt[[]NetworksRetrieveTimelineParamsEventType] `json:"-" query:"event_type"`
}

NetworksRetrieveTimelineParams holds the parameters of Client.Networks.RetrieveTimeline.

func (NetworksRetrieveTimelineParams) MarshalJSON

func (r NetworksRetrieveTimelineParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type NetworksRetrieveTimelineParamsContract

type NetworksRetrieveTimelineParamsContract string

NetworksRetrieveTimelineParamsContract is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworksRetrieveTimelineParamsContract2 NetworksRetrieveTimelineParamsContract = "2"
)

Known values of NetworksRetrieveTimelineParamsContract.

type NetworksRetrieveTimelineParamsEventType

type NetworksRetrieveTimelineParamsEventType string

NetworksRetrieveTimelineParamsEventType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	NetworksRetrieveTimelineParamsEventTypeNetworkDetected     NetworksRetrieveTimelineParamsEventType = "network_detected"
	NetworksRetrieveTimelineParamsEventTypeSignalObserved      NetworksRetrieveTimelineParamsEventType = "signal_observed"
	NetworksRetrieveTimelineParamsEventTypeNetworkActive       NetworksRetrieveTimelineParamsEventType = "network_active"
	NetworksRetrieveTimelineParamsEventTypeNetworkInReview     NetworksRetrieveTimelineParamsEventType = "network_in_review"
	NetworksRetrieveTimelineParamsEventTypeNetworkResolved     NetworksRetrieveTimelineParamsEventType = "network_resolved"
	NetworksRetrieveTimelineParamsEventTypeNetworkDismissed    NetworksRetrieveTimelineParamsEventType = "network_dismissed"
	NetworksRetrieveTimelineParamsEventTypeVerificationAttempt NetworksRetrieveTimelineParamsEventType = "verification_attempt"
	NetworksRetrieveTimelineParamsEventTypeTransaction         NetworksRetrieveTimelineParamsEventType = "transaction"
	NetworksRetrieveTimelineParamsEventTypeLogin               NetworksRetrieveTimelineParamsEventType = "login"
	NetworksRetrieveTimelineParamsEventTypeRuleHit             NetworksRetrieveTimelineParamsEventType = "rule_hit"
	NetworksRetrieveTimelineParamsEventTypeCaseLinked          NetworksRetrieveTimelineParamsEventType = "case_linked"
	NetworksRetrieveTimelineParamsEventTypeNoteAdded           NetworksRetrieveTimelineParamsEventType = "note_added"
)

Known values of NetworksRetrieveTimelineParamsEventType.

type NetworksRetrieveTimelineResponse

type NetworksRetrieveTimelineResponse struct {
	Results []NetworksRetrieveTimelineResponseResults `json:"results"`

	// Pass as `cursor` to read the next page. Null on the last page.
	NextCursor string `json:"next_cursor"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworksRetrieveTimelineResponse is a response object.

func (*NetworksRetrieveTimelineResponse) UnmarshalJSON

func (r *NetworksRetrieveTimelineResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworksRetrieveTimelineResponse leniently.

type NetworksRetrieveTimelineResponseResults

type NetworksRetrieveTimelineResponseResults struct {
	// e.g. network_detected, signal_observed, network_in_review, network_resolved,
	// network_dismissed.
	EventType  string    `json:"event_type"`
	OccurredAt time.Time `json:"occurred_at"`
	Label      string    `json:"label"`
	Metadata   any       `json:"metadata"`

	// `<source>:<uuid>`, unique within the timeline.
	ID string `json:"id"`

	// When Didit stored it.
	IngestedAt time.Time `json:"ingested_at"`

	// The member account. Null for the network's own events, `case_linked` and
	// `note_added`.
	Account NetworkTimelineAccount `json:"account"`

	// The source record. Null for the network's own events and `note_added`.
	SourceRef NetworkTimelineSourceRef `json:"source_ref"`

	// Set on `verification_attempt` events.
	VerificationAttempt NetworkTimelineAttempt `json:"verification_attempt"`

	// Set on `transaction` events.
	Transaction NetworkTimelineTransaction `json:"transaction"`

	// Set on `login` events.
	Login NetworkTimelineLogin `json:"login"`

	// Set on `rule_hit` events.
	RuleHit NetworkTimelineRuleHit `json:"rule_hit"`

	// Set on `case_linked` events.
	CaseLinked NetworkTimelineCaseLinked `json:"case_linked"`

	// Set on `note_added` events. Never returned to an API key.
	NoteAdded NetworkTimelineNoteAdded `json:"note_added"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

NetworksRetrieveTimelineResponseResults is a response object.

func (*NetworksRetrieveTimelineResponseResults) UnmarshalJSON

func (r *NetworksRetrieveTimelineResponseResults) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes NetworksRetrieveTimelineResponseResults leniently.

type NetworksService

type NetworksService struct {
	Notes *NetworksNotesService
	// contains filtered or unexported fields
}

NetworksService holds the networks operations. Use it through Client.Networks.

func (*NetworksService) AddTag

func (r *NetworksService) AddTag(ctx context.Context, networkUUID string, params NetworkTagRequest, opts ...option.RequestOption) (*NetworkDetailResponse, error)

AddTag: Add a tag to a network.

Put one of your application's tags on the network. Returns the network detail, whose `tags` lists your application's tags on the network, with `201` when the tag was added and `200` when it was already on the network. A tag that belongs to another application, or does not exist, returns 404 `Tag not found.`. Requires a full-access API key, or `write:networks` for a console member.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/tags/add/

func (*NetworksService) DownloadReport

func (r *NetworksService) DownloadReport(ctx context.Context, networkUUID string, params NetworksDownloadReportParams, opts ...option.RequestOption) (*http.Response, error)

DownloadReport: Download a network evidence report.

Download a PDF of the current organization network, its observed account connections, signal references and review status. Requires read:networks. Global intelligence and private analyst notes are not included. Each account and signal list is capped at 500 entries and the report states when it is incomplete. The request does not change network status. Errors are returned as JSON.

The response is a file (application/pdf). Read it from the returned response's body and close it.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/report/

func (*NetworksService) List

List: List networks.

List fraud networks detected within this application's organization, highest risk first by default. By default dismissed networks are excluded; pass status to include them. Sandbox applications never have networks: clustering excludes sandbox data entirely. Every response carries the organization's `sharing_mode` and whether cross-organization signals apply to it (`cross_org_available`, `cross_org_unavailable_reason`). `kpis` aggregate the networks that match your filters and `counts` aggregate every network the application can see; pass `summary=false` to skip both when you only need the page. Requires a full-access API key, or `list:networks` for a console member.

It returns one page; ListAutoPaging iterates over every item of every page.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/networks/

func (*NetworksService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*NetworksService) ListMembers

func (r *NetworksService) ListMembers(ctx context.Context, networkUUID string, opts ...option.RequestOption) (*NetworksListMembersResponse, error)

ListMembers: List network members.

List the subjects (vendor users, vendor businesses, or transaction parties) that belong to this network.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/members/

func (*NetworksService) ListSignals

func (r *NetworksService) ListSignals(ctx context.Context, networkUUID string, opts ...option.RequestOption) (*NetworksListSignalsResponse, error)

ListSignals: List network signals.

List the signals (shared device, IP, face, document number, phone, email, or address values) that link this network's members.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/signals/

func (*NetworksService) RemoveTag

func (r *NetworksService) RemoveTag(ctx context.Context, networkUUID string, params NetworkTagRequest, opts ...option.RequestOption) (*NetworkDetailResponse, error)

RemoveTag: Remove a tag from a network.

Remove one of your application's tags from the network. Returns the network detail. 404 when the tag is not on the network, or does not belong to your application. Requires a full-access API key, or `write:networks` for a console member.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/tags/remove/

func (*NetworksService) Retrieve

func (r *NetworksService) Retrieve(ctx context.Context, networkUUID string, opts ...option.RequestOption) (*NetworkDetailResponse, error)

Retrieve: Get network.

Retrieve a single network's full detail: stats, fraud tags and risk signals, plus the organization's `sharing_mode` and cross-organization availability, your application's `tags` on the network, member `outcomes` and pattern scores (`patterns`). Requires a full-access API key, or `read:networks` for a console member.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/

func (*NetworksService) RetrieveGraph

func (r *NetworksService) RetrieveGraph(ctx context.Context, networkUUID string, params NetworksRetrieveGraphParams, opts ...option.RequestOption) (*NetworkGraph, error)

RetrieveGraph: Get network graph.

Retrieve the network as a graph of subject nodes (vendor users, vendor businesses, transaction parties) and signal nodes (the shared device/IP/face/document/phone/email/address values linking them), with edges representing memberships.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/graph/

func (*NetworksService) RetrieveMap

func (r *NetworksService) RetrieveMap(ctx context.Context, networkUUID string, opts ...option.RequestOption) (*NetworkMap, error)

RetrieveMap: Get network map.

Geographic points where this network's members' addresses/locations converge, sourced from the sessions, business sessions, and transactions backing its memberships.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/map/

func (*NetworksService) RetrieveTimeline

RetrieveTimeline: Get network timeline.

Without `contract`: the network's own events (detection, each signal's latest observation and its review), oldest first and not paginated. `limit`, `cursor` and `event_type` are ignored. With `contract=2`: the typed timeline, newest first and paginated by cursor. It adds what the member accounts did (verification attempts, transactions, sign-ins you post through the events API and the live rules they hit) and the cases opened for the network. `note_added` events are returned to console members only, never to an API key. Requires a full-access API key, or `read:networks` for a console member.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/timeline/

type NotFoundError

type NotFoundError struct{ *APIStatusError }

NotFoundError is an *APIStatusError with status 404.

func (*NotFoundError) Unwrap

func (e *NotFoundError) Unwrap() error

type OngoingMonitoringJob

type OngoingMonitoringJob struct {
	JobID     string                     `json:"job_id"`
	Status    OngoingMonitoringJobStatus `json:"status"`
	IsEnabled bool                       `json:"is_enabled"`
	Total     int64                      `json:"total"`
	Processed int64                      `json:"processed"`

	// Per-entity outcome counters. Nothing is silently skipped: every requested
	// entity resolves to exactly one counter.
	Outcomes OngoingMonitoringJobOutcomes `json:"outcomes"`
	Error    string                       `json:"error"`

	// Cost preview. Returned directly when estimate_only is true (no writes are
	// performed).
	Estimate OngoingMonitoringJobEstimate `json:"estimate"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

OngoingMonitoringJob is a response object.

func (*OngoingMonitoringJob) UnmarshalJSON

func (r *OngoingMonitoringJob) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes OngoingMonitoringJob leniently.

type OngoingMonitoringJobEstimate

type OngoingMonitoringJobEstimate struct {
	// Entities in the selection.
	UsersTotal     int64 `json:"users_total"`
	AlreadyEnabled int64 `json:"already_enabled"`

	// Entities whose existing AML screening will be switched to monitored.
	WithExistingAML int64 `json:"with_existing_aml"`

	// Entities without any AML screening that will be screened first (billed).
	NeedingScreening                 int64   `json:"needing_screening"`
	SkippedNoIdentityData            int64   `json:"skipped_no_identity_data"`
	SkippedBlocked                   int64   `json:"skipped_blocked"`
	EstimatedScreeningCostUsd        float64 `json:"estimated_screening_cost_usd"`
	EstimatedAnnualMonitoringCostUsd float64 `json:"estimated_annual_monitoring_cost_usd"`
	BalanceSufficient                bool    `json:"balance_sufficient"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

OngoingMonitoringJobEstimate: Cost preview. Returned directly when estimate_only is true (no writes are performed).

func (*OngoingMonitoringJobEstimate) UnmarshalJSON

func (r *OngoingMonitoringJobEstimate) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes OngoingMonitoringJobEstimate leniently.

type OngoingMonitoringJobOutcomes

type OngoingMonitoringJobOutcomes struct {
	// Monitoring enabled on an existing AML screening.
	Enabled int64 `json:"enabled"`

	// A new AML screening was created (billed) and monitoring enabled.
	ScreenedAndEnabled int64 `json:"screened_and_enabled"`

	// Monitoring was already active (legacy duplicate rows are consolidated).
	AlreadyEnabled int64 `json:"already_enabled"`

	// Monitoring disabled on every AML row of the entity.
	Disabled int64 `json:"disabled"`

	// Skipped: no full name + date of birth + country available to screen.
	SkippedNoIdentityData int64 `json:"skipped_no_identity_data"`

	// Skipped: the user is blocked.
	SkippedBlocked int64 `json:"skipped_blocked"`

	// Skipped: sandbox application.
	SkippedSandbox int64 `json:"skipped_sandbox"`

	// The screening provider call failed.
	FailedProvider int64 `json:"failed_provider"`

	// Balance ran out mid-job.
	FailedInsufficientBalance int64 `json:"failed_insufficient_balance"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

OngoingMonitoringJobOutcomes: Per-entity outcome counters. Nothing is silently skipped: every requested entity resolves to exactly one counter.

func (*OngoingMonitoringJobOutcomes) UnmarshalJSON

func (r *OngoingMonitoringJobOutcomes) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes OngoingMonitoringJobOutcomes leniently.

type OngoingMonitoringJobStatus

type OngoingMonitoringJobStatus string

OngoingMonitoringJobStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	OngoingMonitoringJobStatusPending    OngoingMonitoringJobStatus = "PENDING"
	OngoingMonitoringJobStatusProcessing OngoingMonitoringJobStatus = "PROCESSING"
	OngoingMonitoringJobStatusCompleted  OngoingMonitoringJobStatus = "COMPLETED"
	OngoingMonitoringJobStatusFailed     OngoingMonitoringJobStatus = "FAILED"
)

Known values of OngoingMonitoringJobStatus.

type OngoingMonitoringToggleRequest

type OngoingMonitoringToggleRequest struct {
	// true to enable monitoring, false to disable it. Required.
	IsEnabled bool `json:"is_enabled"`

	// When true, returns the cost estimate and performs no writes.
	EstimateOnly Opt[bool] `json:"estimate_only"`

	// Apply to every entity of the application (scoped by the filter_* params when
	// present).
	UpdateAll      Opt[bool]     `json:"update_all"`
	FilterSearch   Opt[string]   `json:"filter_search"`
	FilterStatus   Opt[[]string] `json:"filter_status"`
	FilterCountry  Opt[string]   `json:"filter_country"`
	FilterDateFrom Opt[string]   `json:"filter_date_from"`
	FilterDateTo   Opt[string]   `json:"filter_date_to"`

	// Entities to toggle. Required unless update_all is true.
	DiditInternalIDList Opt[[]string] `json:"didit_internal_id_list"`
}

OngoingMonitoringToggleRequest is a request object.

func (OngoingMonitoringToggleRequest) MarshalJSON

func (r OngoingMonitoringToggleRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type Opt

type Opt[T any] struct {
	// contains filtered or unexported fields
}

Opt is an optional request field. Its zero value is omitted: the field is not sent at all, so a Go zero value is never sent by accident.

didit.SessionsCreateParams{
	WorkflowID: "...",
	VendorData: didit.String("user-42"),    // sent
	Callback:   didit.Null[string](),       // sent as null
	                                         // other Opt fields: not sent
}

Use the constructors String, Int, Float, Bool, Time, Some and Null.

func Bool

func Bool(b bool) Opt[bool]

Bool returns an Opt holding b.

func Float

func Float(f float64) Opt[float64]

Float returns an Opt holding f.

func Int

func Int(n int64) Opt[int64]

Int returns an Opt holding n.

func Null

func Null[T any]() Opt[T]

Null returns an Opt sent as JSON null.

func Some

func Some[T any](v T) Opt[T]

Some returns an Opt holding v.

func String

func String(s string) Opt[string]

String returns an Opt holding s.

func Time

func Time(t time.Time) Opt[time.Time]

Time returns an Opt holding t.

func (Opt[T]) IsNull

func (o Opt[T]) IsNull() bool

IsNull reports whether o is sent as JSON null.

func (Opt[T]) IsOmitted

func (o Opt[T]) IsOmitted() bool

IsOmitted reports whether o is not sent.

func (Opt[T]) IsSet

func (o Opt[T]) IsSet() bool

IsSet reports whether o holds a value (not omitted and not null).

func (Opt[T]) MarshalJSON

func (o Opt[T]) MarshalJSON() ([]byte, error)

MarshalJSON encodes the value, or null. Omitted values are skipped by the enclosing parameter type and also encode as null when marshalled directly.

func (Opt[T]) Or

func (o Opt[T]) Or(fallback T) T

Or returns the value of o, or fallback when o holds no value.

func (Opt[T]) String

func (o Opt[T]) String() string

String formats the value, "null" or "omitted".

func (*Opt[T]) UnmarshalJSON

func (o *Opt[T]) UnmarshalJSON(data []byte) error

UnmarshalJSON sets o from JSON: null gives Null, anything else a value.

func (Opt[T]) Value

func (o Opt[T]) Value() (T, bool)

Value returns the value and true when o holds a value, and the zero value and false when o is omitted or null.

type Organization

type Organization struct {
	// Use as `{org_id}` on the application endpoints.
	UUID string `json:"uuid"`

	// Display name of the organization.
	Name string `json:"name"`

	// Primary contact email for the organization.
	ContactEmail string    `json:"contact_email"`
	CreatedAt    time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

Organization is a response object.

func (*Organization) UnmarshalJSON

func (r *Organization) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes Organization leniently.

type OrganizationSummary

type OrganizationSummary struct {
	UUID string `json:"uuid"`
	Name string `json:"name"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

OrganizationSummary: Minimal organization shape returned inline by `POST /programmatic/verify-email/`.

func (*OrganizationSummary) UnmarshalJSON

func (r *OrganizationSummary) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes OrganizationSummary leniently.

type Page

type Page[T any] struct {
	// Count is the total number of items, on every page.
	Count int64 `json:"count"`
	// Next is the URL of the next page, empty on the last page.
	Next string `json:"next"`
	// Previous is the URL of the previous page, empty on the first page.
	Previous string `json:"previous"`
	// Results holds the items of this page.
	Results []T `json:"results"`

	JSON ResponseJSON `json:"-"`
	// contains filtered or unexported fields
}

Page is one page of a list: the fields of the API's {count, next, previous, results} envelope. List methods return it, and their AutoPaging variants iterate over every item of every page.

Lists that send more top-level fields (for example kpis or total_transactions) keep them readable through JSON.Field.

func (*Page[T]) GetNextPage

func (p *Page[T]) GetNextPage(ctx context.Context) (*Page[T], error)

GetNextPage fetches the next page. It returns nil and no error after the last page. A next link on an origin other than the configured base URL is refused with an *UnexpectedResponseError, so the API key never leaves it, and so is a next link back to this page or one fetched before it, which would loop forever.

func (*Page[T]) HasNextPage

func (p *Page[T]) HasNextPage() bool

HasNextPage reports whether the API announced a next page.

func (*Page[T]) UnmarshalJSON

func (p *Page[T]) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes a page leniently, like every response type.

type PageIterator

type PageIterator[T any] struct {
	// contains filtered or unexported fields
}

PageIterator iterates over the items of every page of a list, fetching the next page when needed:

iter := client.Sessions.ListAutoPaging(ctx, didit.SessionsListParams{})
for iter.Next() {
	session := iter.Current()
	// ...
}
if err := iter.Err(); err != nil {
	// ...
}

With Go 1.23 or later, All returns an iter.Seq2 for a range loop.

func (*PageIterator[T]) All

func (it *PageIterator[T]) All() iter.Seq2[T, error]

All returns an iterator over the remaining items, for a range loop:

for session, err := range client.Sessions.ListAutoPaging(ctx, params).All() {
	if err != nil {
		return err
	}
	// ...
}

An error ends the iteration after it is yielded. It needs Go 1.23 or later; use Next, Current and Err on Go 1.22.

func (*PageIterator[T]) Current

func (it *PageIterator[T]) Current() T

Current returns the current item.

func (*PageIterator[T]) Err

func (it *PageIterator[T]) Err() error

Err returns the error that stopped the iteration, if any.

func (*PageIterator[T]) Next

func (it *PageIterator[T]) Next() bool

Next advances to the next item, fetching pages as needed. It returns false at the end or on an error; check Err afterwards.

func (*PageIterator[T]) Page

func (it *PageIterator[T]) Page() *Page[T]

Page returns the page holding the current item.

type PassiveLivenessCheckParams

type PassiveLivenessCheckParams struct {
	// Front-facing face image (e.g. a selfie). Allowed extensions: `tiff`, `jpg`,
	// `jpeg`, `png`, `webp`. Maximum upload size: **5 MB** (larger files are
	// rejected with `400`). Images are automatically compressed to ~0.5 MB before
	// processing, so very high resolutions do not improve accuracy. The image
	// should contain a single subject - when several faces are present, the largest
	// one is evaluated and a `MULTIPLE_FACES_DETECTED` warning is added. Required.
	UserImage File `json:"-" form:"user_image"`

	// Liveness score threshold (0-100). A computed score **at or below** this value
	// emits a `LOW_LIVENESS_SCORE` warning and sets `status` to `Declined`. Default
	// `30`; raise it for a stricter anti-spoofing posture. Values outside 0-100
	// return `400`.
	FaceLivenessScoreDeclineThreshold Opt[float64] `json:"face_liveness_score_decline_threshold"`

	// When `true`, the service tries 90-degree rotations of the input and uses the
	// orientation that yields the best face detection. Useful when EXIF orientation
	// is missing. Adds latency.
	RotateImage Opt[bool] `json:"rotate_image"`

	// When `true` (default), persists the call as an API-type session, stores the
	// face images, emits a `status.updated` webhook, and enrolls the detected face
	// into your face search index. When `false`, the call is one-shot - nothing is
	// stored and the face is not enrolled. Blocklist and duplicate screening run
	// either way.
	SaveAPIRequest Opt[bool] `json:"save_api_request"`

	// Optional opaque identifier (your user id, email, UUID…) stored on the
	// persisted session and echoed back. Also used to exclude prior sessions with
	// the same `vendor_data` from the duplicate-face check, so re-verifying the
	// same user does not raise `DUPLICATED_FACE`.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the session (when `save_api_request=true`)
	// and echoed back. In multipart requests, send it as a JSON-encoded string
	// field - it is parsed into an object.
	Metadata Opt[map[string]any] `json:"metadata"`
}

PassiveLivenessCheckParams holds the parameters of Client.PassiveLiveness.Check.

func (PassiveLivenessCheckParams) MarshalJSON

func (r PassiveLivenessCheckParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type PassiveLivenessCheckResponse

type PassiveLivenessCheckResponse struct {
	// Persisted session id when `save_api_request=true` (usable with `GET
	// /v3/session/{sessionId}/decision/`); otherwise a transient correlation UUID.
	RequestID string                               `json:"request_id"`
	Liveness  PassiveLivenessCheckResponseLiveness `json:"liveness"`

	// Echo of the `vendor_data` you sent, or `null`.
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` object you sent, or `null`.
	Metadata map[string]any `json:"metadata"`

	// ISO 8601 timestamp (UTC) of when the response was generated, e.g.
	// `2026-06-12T01:04:42.763237+00:00`.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PassiveLivenessCheckResponse is a response object.

func (*PassiveLivenessCheckResponse) UnmarshalJSON

func (r *PassiveLivenessCheckResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PassiveLivenessCheckResponse leniently.

type PassiveLivenessCheckResponseLiveness

type PassiveLivenessCheckResponseLiveness struct {
	// `Declined` when at least one `error`-severity warning fired (no face, low
	// score, presentation attack, or a blocklist hit); `Approved` otherwise.
	// `warning`/`information` entries (multiple faces, duplicates) never decline on
	// their own.
	Status PassiveLivenessCheckResponseLivenessStatus `json:"status"`

	// Always `PASSIVE` for this endpoint.
	Method PassiveLivenessCheckResponseLivenessMethod `json:"method"`

	// Liveness confidence (0-100, two decimals) that the image depicts a live
	// person rather than a spoof. `null` when the model returned no confidence.
	Score float64 `json:"score"`

	// Face-detection results for the submitted image.
	UserImage PassiveLivenessCheckResponseLivenessUserImage `json:"user_image"`

	// Risk signals. `error` severity (declines): `NO_FACE_DETECTED`,
	// `LOW_LIVENESS_SCORE` (score at or below the threshold),
	// `LIVENESS_FACE_ATTACK`, `FACE_IN_BLOCKLIST`, `POSSIBLE_FACE_IN_BLOCKLIST`.
	// `warning` severity (review, no decline): `MULTIPLE_FACES_DETECTED`.
	// `information` severity (no decline): `DUPLICATED_FACE`,
	// `POSSIBLE_DUPLICATED_FACE` - the same face already appeared in another
	// approved session.
	Warnings []PassiveLivenessCheckResponseLivenessWarnings `json:"warnings"`

	// Capture-quality score of the detected face, normalized to 0-100. `null` when
	// the model could not produce a reliable value.
	FaceQuality float64 `json:"face_quality"`

	// Brightness of the detected face, normalized to 0-100. `null` when
	// unavailable.
	FaceLuminance float64 `json:"face_luminance"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PassiveLivenessCheckResponseLiveness is a response object.

func (*PassiveLivenessCheckResponseLiveness) UnmarshalJSON

func (r *PassiveLivenessCheckResponseLiveness) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PassiveLivenessCheckResponseLiveness leniently.

type PassiveLivenessCheckResponseLivenessMethod

type PassiveLivenessCheckResponseLivenessMethod string

PassiveLivenessCheckResponseLivenessMethod: Always `PASSIVE` for this endpoint.

PassiveLivenessCheckResponseLivenessMethod is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PassiveLivenessCheckResponseLivenessMethodPassive PassiveLivenessCheckResponseLivenessMethod = "PASSIVE"
)

Known values of PassiveLivenessCheckResponseLivenessMethod.

type PassiveLivenessCheckResponseLivenessStatus

type PassiveLivenessCheckResponseLivenessStatus string

PassiveLivenessCheckResponseLivenessStatus: `Declined` when at least one `error`-severity warning fired (no face, low score, presentation attack, or a blocklist hit); `Approved` otherwise. `warning`/`information` entries (multiple faces, duplicates) never decline on their own.

PassiveLivenessCheckResponseLivenessStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PassiveLivenessCheckResponseLivenessStatusApproved PassiveLivenessCheckResponseLivenessStatus = "Approved"
	PassiveLivenessCheckResponseLivenessStatusDeclined PassiveLivenessCheckResponseLivenessStatus = "Declined"
)

Known values of PassiveLivenessCheckResponseLivenessStatus.

type PassiveLivenessCheckResponseLivenessUserImage

type PassiveLivenessCheckResponseLivenessUserImage struct {
	// One entry per detected face. The largest face is the one evaluated.
	Entities []PassiveLivenessCheckResponseLivenessUserImageEntities `json:"entities"`

	// Rotation (degrees) that produced the best face detection; non-zero only when
	// `rotate_image=true` corrected the orientation.
	BestAngle int64 `json:"best_angle"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PassiveLivenessCheckResponseLivenessUserImage: Face-detection results for the submitted image.

func (*PassiveLivenessCheckResponseLivenessUserImage) UnmarshalJSON

func (r *PassiveLivenessCheckResponseLivenessUserImage) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PassiveLivenessCheckResponseLivenessUserImage leniently.

type PassiveLivenessCheckResponseLivenessUserImageEntities

type PassiveLivenessCheckResponseLivenessUserImageEntities struct {
	// Bounding box of the detected face as `[x_min, y_min, x_max, y_max]` pixel
	// coordinates in the processed image.
	Bbox []int64 `json:"bbox"`

	// Face-detection confidence (0-1).
	Confidence float64 `json:"confidence"`

	// Model-estimated age of the detected face, in years. Informational only - it
	// does not affect the liveness decision.
	Age float64 `json:"age"`

	// Model-predicted gender of the detected face (`male` or `female`).
	// Informational only.
	Gender string `json:"gender"`

	// Reserved field - always `null` in responses from this endpoint.
	Race string `json:"race"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PassiveLivenessCheckResponseLivenessUserImageEntities is a response object.

func (*PassiveLivenessCheckResponseLivenessUserImageEntities) UnmarshalJSON

UnmarshalJSON decodes PassiveLivenessCheckResponseLivenessUserImageEntities leniently.

type PassiveLivenessCheckResponseLivenessWarnings

type PassiveLivenessCheckResponseLivenessWarnings struct {
	// Machine-readable risk code.
	Risk PassiveLivenessCheckResponseLivenessWarningsRisk `json:"risk"`

	// Feature that raised the warning. Always `LIVENESS` on this endpoint.
	Feature PassiveLivenessCheckResponseLivenessWarningsFeature `json:"feature"`

	// `null` for most warnings. Blocklist hits carry `{blocklisted_session_id,
	// blocklisted_session_number, api_service}`; duplicate hits carry
	// `{duplicated_session_id, duplicated_session_number, api_service}` pointing at
	// the matching session.
	AdditionalData map[string]any `json:"additional_data"`

	// Severity. `error` warnings drive `status` to `Declined`; `warning` and
	// `information` entries are advisory and never decline on their own.
	LogType PassiveLivenessCheckResponseLivenessWarningsLogType `json:"log_type"`

	// Human-readable one-line summary of the risk.
	ShortDescription string `json:"short_description"`

	// Human-readable explanation of the risk.
	LongDescription string `json:"long_description"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PassiveLivenessCheckResponseLivenessWarnings is a response object.

func (*PassiveLivenessCheckResponseLivenessWarnings) UnmarshalJSON

func (r *PassiveLivenessCheckResponseLivenessWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PassiveLivenessCheckResponseLivenessWarnings leniently.

type PassiveLivenessCheckResponseLivenessWarningsFeature

type PassiveLivenessCheckResponseLivenessWarningsFeature string

PassiveLivenessCheckResponseLivenessWarningsFeature: Feature that raised the warning. Always `LIVENESS` on this endpoint.

PassiveLivenessCheckResponseLivenessWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PassiveLivenessCheckResponseLivenessWarningsFeatureLiveness PassiveLivenessCheckResponseLivenessWarningsFeature = "LIVENESS"
)

Known values of PassiveLivenessCheckResponseLivenessWarningsFeature.

type PassiveLivenessCheckResponseLivenessWarningsLogType

type PassiveLivenessCheckResponseLivenessWarningsLogType string

PassiveLivenessCheckResponseLivenessWarningsLogType: Severity. `error` warnings drive `status` to `Declined`; `warning` and `information` entries are advisory and never decline on their own.

PassiveLivenessCheckResponseLivenessWarningsLogType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PassiveLivenessCheckResponseLivenessWarningsLogTypeError       PassiveLivenessCheckResponseLivenessWarningsLogType = "error"
	PassiveLivenessCheckResponseLivenessWarningsLogTypeWarning     PassiveLivenessCheckResponseLivenessWarningsLogType = "warning"
	PassiveLivenessCheckResponseLivenessWarningsLogTypeInformation PassiveLivenessCheckResponseLivenessWarningsLogType = "information"
)

Known values of PassiveLivenessCheckResponseLivenessWarningsLogType.

type PassiveLivenessCheckResponseLivenessWarningsRisk

type PassiveLivenessCheckResponseLivenessWarningsRisk string

PassiveLivenessCheckResponseLivenessWarningsRisk: Machine-readable risk code.

PassiveLivenessCheckResponseLivenessWarningsRisk is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PassiveLivenessCheckResponseLivenessWarningsRiskNoFaceDetected          PassiveLivenessCheckResponseLivenessWarningsRisk = "NO_FACE_DETECTED"
	PassiveLivenessCheckResponseLivenessWarningsRiskLowLivenessScore        PassiveLivenessCheckResponseLivenessWarningsRisk = "LOW_LIVENESS_SCORE"
	PassiveLivenessCheckResponseLivenessWarningsRiskLivenessFaceAttack      PassiveLivenessCheckResponseLivenessWarningsRisk = "LIVENESS_FACE_ATTACK"
	PassiveLivenessCheckResponseLivenessWarningsRiskMultipleFacesDetected   PassiveLivenessCheckResponseLivenessWarningsRisk = "MULTIPLE_FACES_DETECTED"
	PassiveLivenessCheckResponseLivenessWarningsRiskFaceInBlocklist         PassiveLivenessCheckResponseLivenessWarningsRisk = "FACE_IN_BLOCKLIST"
	PassiveLivenessCheckResponseLivenessWarningsRiskPossibleFaceInBlocklist PassiveLivenessCheckResponseLivenessWarningsRisk = "POSSIBLE_FACE_IN_BLOCKLIST"
	PassiveLivenessCheckResponseLivenessWarningsRiskDuplicatedFace          PassiveLivenessCheckResponseLivenessWarningsRisk = "DUPLICATED_FACE"
	PassiveLivenessCheckResponseLivenessWarningsRiskPossibleDuplicatedFace  PassiveLivenessCheckResponseLivenessWarningsRisk = "POSSIBLE_DUPLICATED_FACE"
)

Known values of PassiveLivenessCheckResponseLivenessWarningsRisk.

type PassiveLivenessService

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

PassiveLivenessService holds the passive_liveness operations. Use it through Client.PassiveLiveness.

func (*PassiveLivenessService) Check

Check: Passive Liveness.

Detect presentation attacks - printed photos, screen replays, masks, deepfakes - from a single face image. No video, motion, or user interaction required.

**How it works.** The image is analyzed by a biometric model; the largest detected face is evaluated and a liveness `score` (0-100) is computed. `status` is `Declined` when any `error`-severity warning fires:

  • `NO_FACE_DETECTED` - the liveness model found no face,
  • `LOW_LIVENESS_SCORE` - score at or below `face_liveness_score_decline_threshold` (default `30`),
  • `LIVENESS_FACE_ATTACK` - the model detected a presentation attack,
  • `FACE_IN_BLOCKLIST` / `POSSIBLE_FACE_IN_BLOCKLIST` - the face matches an entry on your face blocklist.

`MULTIPLE_FACES_DETECTED` is a `warning`-severity signal (does not decline), and `DUPLICATED_FACE` / `POSSIBLE_DUPLICATED_FACE` are `information`-severity signals that the same face already appeared in another approved session (they never decline). `face_quality` and `face_luminance` (0-100, nullable) describe capture quality.

**Blocklist and duplicate screening.** Runs on **every** call - with or without `save_api_request` - by matching the detected face against your application's face search index. Prior faces with the same `vendor_data` are excluded from the entire index search - so re-running liveness for the same user does not trigger `DUPLICATED_FACE`, and a blocklisted face originating from a session with the caller's own `vendor_data` is also NOT flagged (`FACE_IN_BLOCKLIST` screening is bypassed for same-`vendor_data` faces).

**Billing.** Each `200` response consumes one Passive Liveness API credit (standalone APIs have no free tier). Insufficient balance returns `403` before any image processing.

**Session persistence and face enrollment (`save_api_request`, default `true`).** When `true`, the call is persisted as an API-type session (Business Console, `GET /v3/session/{sessionId}/decision/` via the returned `request_id`, `status.updated` webhook), the reference image and face crop are stored, and the detected face is **enrolled into your face search index** so later Face Search calls and duplicate checks can match it. When `false`, the call is one-shot: nothing is stored and the face is not enrolled (blocklist/duplicate screening still runs).

**Sandbox.** Sandbox API keys skip all processing and billing: after request validation (malformed input still returns `400`), the endpoint returns a static `Approved` mock payload, no session is persisted, and no credits are consumed.

**Authentication.** Send your application's API key in the `x-api-key` header. Missing or invalid credentials return `403` (`{"detail": "You do not have permission to perform this action."}`) - this API never returns `401`.

**Rate limit.** Shared write budget of 300 requests/min per API key across all POST/PATCH/DELETE endpoints; exceeding it returns `429`.

POST /v3/passive-liveness/

type PermissionDeniedError

type PermissionDeniedError struct{ *APIStatusError }

PermissionDeniedError is an *APIStatusError with status 403.

func (*PermissionDeniedError) Unwrap

func (e *PermissionDeniedError) Unwrap() error

type PhoneCheckCodeParams

type PhoneCheckCodeParams struct {
	// The same phone number used in the matching [`POST
	// /v3/phone/send/`](/standalone-apis/phone-send) call, in E.164 format. This is
	// what links the check to the send. Required.
	PhoneNumber string `json:"phone_number"`

	// The OTP the end user received. Must be 4-8 numeric digits - anything else
	// returns `400` without consuming an attempt. A well-formed but wrong code
	// returns `200` with `status: "Failed"` and consumes one of the 3 attempts.
	// Required.
	Code string `json:"code"`

	// What to do when the same number was already used by a different user
	// (different `vendor_data`) of your application. `DECLINE` flips the final
	// `status` to `Declined`; `NO_ACTION` records the risk in `phone.warnings` and
	// fills `phone.matches`.
	DuplicatedPhoneNumberAction Opt[PhoneCheckCodeParamsDuplicatedPhoneNumberAction] `json:"duplicated_phone_number_action"`

	// What to do when the carrier lookup flags the number as a temporary/burner
	// line (`phone.is_disposable`). `DECLINE` flips the final `status` to
	// `Declined`; `NO_ACTION` records the risk in `phone.warnings`.
	DisposableNumberAction Opt[PhoneCheckCodeParamsDisposableNumberAction] `json:"disposable_number_action"`

	// What to do when the carrier lookup reports a virtual line type - `voip`,
	// `isp`, or `vpn` (`phone.is_virtual`). `DECLINE` flips the final `status` to
	// `Declined`; `NO_ACTION` records the risk in `phone.warnings`.
	VoipNumberAction Opt[PhoneCheckCodeParamsVoipNumberAction] `json:"voip_number_action"`

	// When true, also look up the social footprint of the number - the messaging,
	// social, e-commerce and professional platforms it is registered on. Billed as
	// one `phone_social` unit per request in addition to this endpoint's own price.
	EnableSocial Opt[bool] `json:"enable_social"`

	// Action when the social footprint check finds the number registered on none of
	// the platforms it covers. Only NO_ACTION and DECLINE are accepted on this
	// endpoint; REVIEW is available on the workflow configuration key of the same
	// name.
	PhoneNoSocialPresenceAction Opt[PhoneCheckCodeParamsPhoneNoSocialPresenceAction] `json:"phone_no_social_presence_action"`
}

PhoneCheckCodeParams holds the parameters of Client.Phone.CheckCode.

func (PhoneCheckCodeParams) MarshalJSON

func (r PhoneCheckCodeParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type PhoneCheckCodeParamsDisposableNumberAction

type PhoneCheckCodeParamsDisposableNumberAction string

PhoneCheckCodeParamsDisposableNumberAction: What to do when the carrier lookup flags the number as a temporary/burner line (`phone.is_disposable`). `DECLINE` flips the final `status` to `Declined`; `NO_ACTION` records the risk in `phone.warnings`.

PhoneCheckCodeParamsDisposableNumberAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PhoneCheckCodeParamsDisposableNumberActionNoAction PhoneCheckCodeParamsDisposableNumberAction = "NO_ACTION"
	PhoneCheckCodeParamsDisposableNumberActionDecline  PhoneCheckCodeParamsDisposableNumberAction = "DECLINE"
)

Known values of PhoneCheckCodeParamsDisposableNumberAction.

type PhoneCheckCodeParamsDuplicatedPhoneNumberAction

type PhoneCheckCodeParamsDuplicatedPhoneNumberAction string

PhoneCheckCodeParamsDuplicatedPhoneNumberAction: What to do when the same number was already used by a different user (different `vendor_data`) of your application. `DECLINE` flips the final `status` to `Declined`; `NO_ACTION` records the risk in `phone.warnings` and fills `phone.matches`.

PhoneCheckCodeParamsDuplicatedPhoneNumberAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PhoneCheckCodeParamsDuplicatedPhoneNumberActionNoAction PhoneCheckCodeParamsDuplicatedPhoneNumberAction = "NO_ACTION"
	PhoneCheckCodeParamsDuplicatedPhoneNumberActionDecline  PhoneCheckCodeParamsDuplicatedPhoneNumberAction = "DECLINE"
)

Known values of PhoneCheckCodeParamsDuplicatedPhoneNumberAction.

type PhoneCheckCodeParamsPhoneNoSocialPresenceAction

type PhoneCheckCodeParamsPhoneNoSocialPresenceAction string

PhoneCheckCodeParamsPhoneNoSocialPresenceAction: Action when the social footprint check finds the number registered on none of the platforms it covers. Only NO_ACTION and DECLINE are accepted on this endpoint; REVIEW is available on the workflow configuration key of the same name.

PhoneCheckCodeParamsPhoneNoSocialPresenceAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PhoneCheckCodeParamsPhoneNoSocialPresenceActionNoAction PhoneCheckCodeParamsPhoneNoSocialPresenceAction = "NO_ACTION"
	PhoneCheckCodeParamsPhoneNoSocialPresenceActionDecline  PhoneCheckCodeParamsPhoneNoSocialPresenceAction = "DECLINE"
)

Known values of PhoneCheckCodeParamsPhoneNoSocialPresenceAction.

type PhoneCheckCodeParamsVoipNumberAction

type PhoneCheckCodeParamsVoipNumberAction string

PhoneCheckCodeParamsVoipNumberAction: What to do when the carrier lookup reports a virtual line type - `voip`, `isp`, or `vpn` (`phone.is_virtual`). `DECLINE` flips the final `status` to `Declined`; `NO_ACTION` records the risk in `phone.warnings`.

PhoneCheckCodeParamsVoipNumberAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PhoneCheckCodeParamsVoipNumberActionNoAction PhoneCheckCodeParamsVoipNumberAction = "NO_ACTION"
	PhoneCheckCodeParamsVoipNumberActionDecline  PhoneCheckCodeParamsVoipNumberAction = "DECLINE"
)

Known values of PhoneCheckCodeParamsVoipNumberAction.

type PhoneIntelligence

type PhoneIntelligence struct {
	// Normalized 0-100 risk score. Higher is riskier.
	Score float64 `json:"score"`

	// `Low`, `Medium` or `High`, derived from the score.
	PhoneTypeRisk string `json:"phone_type_risk"`

	// Inverse of the score, for dashboards that prefer higher is better.
	PhoneTrustIndex float64 `json:"phone_trust_index"`

	// Stability of the line's network.
	NetworkStabilityIndex float64 `json:"network_stability_index"`

	// `true` when the number looks disposable or virtual.
	IsDisposable bool `json:"is_disposable"`

	// `true` when the number has moved carrier.
	IsPorted bool `json:"is_ported"`

	// `true` when the port happened recently.
	IsRecentlyPorted bool `json:"is_recently_ported"`

	// Line classification reported by the lookup (e.g., `mobile`).
	CarrierType string `json:"carrier_type"`

	// Machine-readable codes explaining the score. Values can grow over time, so do
	// not reject unknown codes.
	ReasonCodes []string `json:"reason_codes"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PhoneIntelligence: Normalized phone-intelligence block. Present only when the intelligence add-on ran for this lookup; when present it is also exposed under the `enrichment` alias with identical values.

func (*PhoneIntelligence) UnmarshalJSON

func (r *PhoneIntelligence) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PhoneIntelligence leniently.

type PhoneMatchItem

type PhoneMatchItem struct {
	// Session id of the other verification that used this phone number.
	SessionID string `json:"session_id"`

	// Human-friendly sequential number of that session.
	SessionNumber int64 `json:"session_number"`

	// `vendor_data` of that session.
	VendorData string `json:"vendor_data"`

	// When that session was created (`YYYY-MM-DDTHH:MM:SSZ`).
	VerificationDate string `json:"verification_date"`

	// The matched phone number.
	PhoneNumber string `json:"phone_number"`

	// Status of that session (e.g., `Approved`, `Declined`, `In Progress`).
	Status string `json:"status"`

	// Whether the phone number is on your application's blocklist.
	IsBlocklisted bool `json:"is_blocklisted"`

	// For API-type sessions, the standalone API that created it; `null` for regular
	// verification sessions.
	APIService string `json:"api_service"`

	// Where the match was found. Usually `session`; a blocklist hit via an
	// organization list entry uses `list_entry`.
	Source string `json:"source"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PhoneMatchItem: Another session of your application that used the same phone number with a different `vendor_data`.

func (*PhoneMatchItem) UnmarshalJSON

func (r *PhoneMatchItem) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PhoneMatchItem leniently.

type PhoneRiskRequest

type PhoneRiskRequest struct {
	// Phone number to score. It is validated and normalized to E.164. Required.
	PhoneNumber string `json:"phone_number"`

	// Optional ISO 3166-1 alpha-2 or alpha-3 country hint for intelligence
	// coverage.
	CountryCode Opt[string]      `json:"country_code"`
	Signals     Opt[RiskSignals] `json:"signals"`

	// Your stable reference for this request. Stored on the API session and echoed
	// in the response.
	VendorData Opt[string] `json:"vendor_data"`

	// Your non-sensitive JSON metadata. Stored on the API session and echoed in the
	// response.
	Metadata Opt[map[string]any] `json:"metadata"`

	// When true, also look up the social footprint of the number - the messaging,
	// social, e-commerce and professional platforms it is registered on. Billed as
	// one `phone_social` unit per request in addition to this endpoint's own price.
	EnableSocial Opt[bool] `json:"enable_social"`
}

PhoneRiskRequest is a request object.

func (PhoneRiskRequest) MarshalJSON

func (r PhoneRiskRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type PhoneRiskResponse

type PhoneRiskResponse struct {
	// Id of the API session created for this request. Store it with `vendor_data`
	// if you need to correlate the result with later webhooks or console activity.
	RequestID string `json:"request_id"`

	// Final decision for this API session. Normally `Approved`; the risk evaluation
	// can produce `In Review` or `Declined`.
	Status PhoneRiskResponseStatus `json:"status"`

	// Echo of the `vendor_data` you sent, `null` when you did not send one.
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` you sent, `null` when you did not send one.
	Metadata map[string]any `json:"metadata"`

	// Timestamp of this response.
	CreatedAt time.Time `json:"created_at"`

	// Normalized phone report, the same block used by Phone Verification responses.
	Phone PhoneRiskResponsePhone `json:"phone"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PhoneRiskResponse is a response object.

func (*PhoneRiskResponse) UnmarshalJSON

func (r *PhoneRiskResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PhoneRiskResponse leniently.

type PhoneRiskResponsePhone

type PhoneRiskResponsePhone struct {
	// Decision for this phone number. Mirrors the top-level `status`.
	Status PhoneRiskResponsePhoneStatus `json:"status"`

	// Country calling code with leading `+` (e.g., `+1`).
	PhoneNumberPrefix string `json:"phone_number_prefix"`

	// National number without the country calling code.
	PhoneNumber string `json:"phone_number"`

	// Complete number in E.164 format.
	FullNumber string `json:"full_number"`

	// ISO 3166-1 alpha-2 country of the number.
	CountryCode string `json:"country_code"`

	// Full country name derived from `country_code`.
	CountryName string `json:"country_name"`

	// Current network serving the number. `null` when the lookup could not resolve
	// a carrier.
	Carrier PhoneRiskResponsePhoneCarrier `json:"carrier"`

	// `true` when the number belongs to a temporary or burner number service.
	IsDisposable bool `json:"is_disposable"`

	// `true` when the line type is virtual (`voip`, `isp`, or `vpn`).
	IsVirtual bool `json:"is_virtual"`

	// OTP channel of the underlying verification. `null` for risk lookups, which
	// never send a code.
	VerificationMethod string `json:"verification_method"`

	// OTP sends for this number. `0` for risk lookups.
	VerificationAttempts int64 `json:"verification_attempts"`

	// When the number was last verified by an OTP. `null` for risk lookups.
	VerifiedAt time.Time `json:"verified_at"`

	// Risk warnings recorded for this request. Empty array when there are none.
	Warnings []RiskWarning `json:"warnings"`

	// Chronological audit trail of the request. Empty array for risk lookups
	// without send events.
	Lifecycle []RiskLifecycleEvent `json:"lifecycle"`

	// Other sessions of your application where the same phone number was used by a
	// different user (different `vendor_data`). Up to 5 entries. Empty array when
	// there are no matches.
	Matches           []PhoneMatchItem     `json:"matches"`
	PhoneIntelligence PhoneIntelligence    `json:"phone_intelligence"`
	Enrichment        PhoneIntelligence    `json:"enrichment"`
	PhoneSocial       PhoneSocialFootprint `json:"phone_social"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PhoneRiskResponsePhone: Normalized phone report, the same block used by Phone Verification responses.

func (*PhoneRiskResponsePhone) UnmarshalJSON

func (r *PhoneRiskResponsePhone) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PhoneRiskResponsePhone leniently.

type PhoneRiskResponsePhoneCarrier

type PhoneRiskResponsePhoneCarrier struct {
	// Carrier name. Empty string when the lookup could not identify it.
	Name string `json:"name"`

	// Line type reported by the lookup: `mobile`, `fixed_line`, `voip`, `isp`,
	// `vpn`, `toll_free`, `premium_rate`, or similar.
	Type string `json:"type"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PhoneRiskResponsePhoneCarrier: Current network serving the number. `null` when the lookup could not resolve a carrier.

func (*PhoneRiskResponsePhoneCarrier) UnmarshalJSON

func (r *PhoneRiskResponsePhoneCarrier) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PhoneRiskResponsePhoneCarrier leniently.

type PhoneRiskResponsePhoneStatus

type PhoneRiskResponsePhoneStatus string

PhoneRiskResponsePhoneStatus: Decision for this phone number. Mirrors the top-level `status`.

PhoneRiskResponsePhoneStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PhoneRiskResponsePhoneStatusApproved PhoneRiskResponsePhoneStatus = "Approved"
	PhoneRiskResponsePhoneStatusInReview PhoneRiskResponsePhoneStatus = "In Review"
	PhoneRiskResponsePhoneStatusDeclined PhoneRiskResponsePhoneStatus = "Declined"
)

Known values of PhoneRiskResponsePhoneStatus.

type PhoneRiskResponseStatus

type PhoneRiskResponseStatus string

PhoneRiskResponseStatus: Final decision for this API session. Normally `Approved`; the risk evaluation can produce `In Review` or `Declined`.

PhoneRiskResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PhoneRiskResponseStatusApproved PhoneRiskResponseStatus = "Approved"
	PhoneRiskResponseStatusInReview PhoneRiskResponseStatus = "In Review"
	PhoneRiskResponseStatusDeclined PhoneRiskResponseStatus = "Declined"
)

Known values of PhoneRiskResponseStatus.

type PhoneSendCodeParams

type PhoneSendCodeParams struct {
	// Recipient phone number in E.164 format - leading `+` and country code (e.g.,
	// `+14155552671`). Numbers are validated and normalized to E.164; unparseable
	// or invalid numbers return `400` with a `phone_number` field error. Required.
	PhoneNumber string `json:"phone_number"`

	// OTP delivery options. All fields are optional.
	Options Opt[PhoneSendCodeParamsOptions] `json:"options"`

	// Optional device and network signals about the end user, forwarded to the
	// anti-fraud layer to improve detection of abusive or automated traffic. All
	// fields are optional.
	Signals Opt[PhoneSendCodeParamsSignals] `json:"signals"`

	// Optional caller-controlled identifier (your internal user id, an email, a
	// UUID, etc.) persisted on the session and echoed back in the send response,
	// the matching check response, webhooks, and the Business Console. Use it to
	// correlate Didit's `request_id` with your user record.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional free-form JSON object persisted on the session and echoed back in
	// the send response, the matching check response, webhooks, and the Business
	// Console.
	Metadata Opt[map[string]any] `json:"metadata"`
}

PhoneSendCodeParams holds the parameters of Client.Phone.SendCode.

func (PhoneSendCodeParams) MarshalJSON

func (r PhoneSendCodeParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type PhoneSendCodeParamsOptions

type PhoneSendCodeParamsOptions struct {
	// Number of digits in the OTP.
	CodeSize Opt[int64] `json:"code_size"`

	// BCP-47 locale used to localize the verification message (e.g., `en-US`, `fr`,
	// `es`). Invalid formats return `400`.
	Locale Opt[string] `json:"locale"`

	// Preferred delivery channel. If the channel is unavailable for the destination
	// country or number, the message automatically falls back to SMS - the send
	// still reports `Success`.
	PreferredChannel Opt[PhoneSendCodeParamsOptionsPreferredChannel] `json:"preferred_channel"`

	// When `true`, the send is white-labelled: if your application has no SMS
	// sender name, the SMS names your white-label public name instead ("123456 is
	// your verification code for Acme Bank"). Your SMS sender name, when set, is
	// used with or without this flag. Applies to SMS messages, including an SMS
	// fallback from another channel; WhatsApp codes are sent with a fixed message
	// and are not branded. Defaults to `false`.
	UseWhiteLabelCustomization Opt[bool] `json:"use_white_label_customization"`

	// The name this code's SMS carries ("123456 is your verification code for Acme
	// Bank"), instead of your application's SMS sender name. Free. 1 to 30
	// characters: letters, digits, spaces and ' & - ! only, not only digits, with
	// single spaces between words; any other value returns `400` and no code is
	// sent. Omitted, `null` or blank, your application's SMS sender name is used.
	// Each application can start using up to two new names per day (UTC); past
	// that, the code is sent with your application's name. Applies to SMS messages,
	// including an SMS fallback from another channel; WhatsApp codes are not
	// branded.
	SMSSenderName Opt[string] `json:"sms_sender_name"`
}

PhoneSendCodeParamsOptions: OTP delivery options. All fields are optional.

func (PhoneSendCodeParamsOptions) MarshalJSON

func (r PhoneSendCodeParamsOptions) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type PhoneSendCodeParamsOptionsPreferredChannel

type PhoneSendCodeParamsOptionsPreferredChannel string

PhoneSendCodeParamsOptionsPreferredChannel: Preferred delivery channel. If the channel is unavailable for the destination country or number, the message automatically falls back to SMS - the send still reports `Success`.

PhoneSendCodeParamsOptionsPreferredChannel is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PhoneSendCodeParamsOptionsPreferredChannelWhatsapp PhoneSendCodeParamsOptionsPreferredChannel = "whatsapp"
	PhoneSendCodeParamsOptionsPreferredChannelSMS      PhoneSendCodeParamsOptionsPreferredChannel = "sms"
	PhoneSendCodeParamsOptionsPreferredChannelTelegram PhoneSendCodeParamsOptionsPreferredChannel = "telegram"
	PhoneSendCodeParamsOptionsPreferredChannelVoice    PhoneSendCodeParamsOptionsPreferredChannel = "voice"
	PhoneSendCodeParamsOptionsPreferredChannelRcs      PhoneSendCodeParamsOptionsPreferredChannel = "rcs"
	PhoneSendCodeParamsOptionsPreferredChannelViber    PhoneSendCodeParamsOptionsPreferredChannel = "viber"
	PhoneSendCodeParamsOptionsPreferredChannelZalo     PhoneSendCodeParamsOptionsPreferredChannel = "zalo"
)

Known values of PhoneSendCodeParamsOptionsPreferredChannel.

type PhoneSendCodeParamsSignals

type PhoneSendCodeParamsSignals struct {
	// IP address of the end user's device. IPv4 or IPv6.
	IP Opt[string] `json:"ip"`

	// Unique identifier of the end user's device. Android: `ANDROID_ID`; iOS:
	// `identifierForVendor`.
	DeviceID Opt[string] `json:"device_id"`

	// Platform of the end user's device.
	DevicePlatform Opt[PhoneSendCodeParamsSignalsDevicePlatform] `json:"device_platform"`

	// Model of the end user's device.
	DeviceModel Opt[string] `json:"device_model"`

	// Operating-system version of the end user's device.
	OsVersion Opt[string] `json:"os_version"`

	// Version of your application.
	AppVersion Opt[string] `json:"app_version"`

	// User agent of the end user's browser or app.
	UserAgent Opt[string] `json:"user_agent"`
}

PhoneSendCodeParamsSignals: Optional device and network signals about the end user, forwarded to the anti-fraud layer to improve detection of abusive or automated traffic. All fields are optional.

func (PhoneSendCodeParamsSignals) MarshalJSON

func (r PhoneSendCodeParamsSignals) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type PhoneSendCodeParamsSignalsDevicePlatform

type PhoneSendCodeParamsSignalsDevicePlatform string

PhoneSendCodeParamsSignalsDevicePlatform: Platform of the end user's device.

PhoneSendCodeParamsSignalsDevicePlatform is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PhoneSendCodeParamsSignalsDevicePlatformAndroid PhoneSendCodeParamsSignalsDevicePlatform = "android"
	PhoneSendCodeParamsSignalsDevicePlatformIos     PhoneSendCodeParamsSignalsDevicePlatform = "ios"
	PhoneSendCodeParamsSignalsDevicePlatformIpados  PhoneSendCodeParamsSignalsDevicePlatform = "ipados"
	PhoneSendCodeParamsSignalsDevicePlatformTvos    PhoneSendCodeParamsSignalsDevicePlatform = "tvos"
	PhoneSendCodeParamsSignalsDevicePlatformWeb     PhoneSendCodeParamsSignalsDevicePlatform = "web"
)

Known values of PhoneSendCodeParamsSignalsDevicePlatform.

type PhoneService

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

PhoneService holds the phone operations. Use it through Client.Phone.

func (*PhoneService) AssessRisk

func (r *PhoneService) AssessRisk(ctx context.Context, params PhoneRiskRequest, opts ...option.RequestOption) (*PhoneRiskResponse, error)

AssessRisk: Risk-score a phone number.

Resolve a phone number and return carrier, line-type, porting, disposable-number, cross-session match, and normalized risk-intelligence signals without sending an OTP. The endpoint creates an API session and returns its id as `request_id`.

**Decision.** The top-level `status` mirrors `phone.status`. It is normally `Approved`; the risk evaluation can produce `In Review` or `Declined`.

**Compatibility aliases.** Live responses expose the normalized intelligence object as both `phone.phone_intelligence` and `phone.enrichment`. The values are identical. New integrations can read `phone.enrichment`. Both keys are absent when no usable intelligence data was returned.

**Billing.** Live calls use Phone Risk API pricing. The request is billable once the lookup starts, even when some best-effort fields are unavailable.

**Sandbox.** Sandbox keys validate the request and return deterministic approved data without sending an OTP, consuming credits, creating a session, or contributing to Networks.

**Authentication.** Send your application's API key in `x-api-key`. Missing or invalid credentials return `403` - this API never returns `401`.

**Rate limit.** Shared write budget of 300 requests per minute per API key across all POST/PATCH/DELETE endpoints.

**Social footprint.** Set `enable_social` to `true` to add a `phone_social` block: the online platforms this number is registered on, with per-category counts and any profile details available. `profiles_registered: 0` means the platforms were checked and the number was found on none of them - a valid, billable answer. The block is absent when the add-on was not requested or the check could not be completed, and it is not billed in that case. Billing adds one `phone_social` unit per request on top of this endpoint's own price.

POST /v3/phone/risk/

func (*PhoneService) CheckCode

CheckCode: Check Phone Code.

Verify the OTP delivered by [`POST /v3/phone/send/`](/standalone-apis/phone-send) and get the final verification result plus phone intelligence: carrier name and line type, virtual (VoIP) and disposable flags, and duplicate usage of the number across your sessions.

**How the check finds the verification.** Matching is by your application plus the E.164 `phone_number` - `request_id` is not an input. The most recent pending verification created within the last **5 minutes** is checked. If there is none (never sent, already finalized, or older than 5 minutes) the endpoint returns `200` with `status: "Expired or Not Found"`.

**Attempt budget.** Each verification allows **3 code attempts**. The first two wrong codes return `status: "Failed"` with the attempts remaining and `phone: null`; the third wrong code finalizes the verification as `Declined` with a `VERIFICATION_CODE_ATTEMPTS_EXCEEDED` warning and returns the full phone report.

**Outcomes.** `Approved` - correct code and no declining risk. `Declined` - terminal: the code was correct but a declining risk matched (a `DECLINE` action below, a blocklisted or high-risk number), or the attempt budget was exhausted. `Failed` - wrong code, attempts remaining. `Expired or Not Found` - nothing to check. On `Approved`/`Declined` the `request_id` equals the send's `request_id` (the session id) and `phone` carries the full report (`carrier`, `is_virtual`, `is_disposable`, `warnings`, `lifecycle`, `matches`); on `Failed` and `Expired or Not Found` the `request_id` is a one-off random UUID.

**Risk actions.** `duplicated_phone_number_action`, `disposable_number_action`, and `voip_number_action` decide what happens when the corresponding risk is detected on a correct code: `DECLINE` flips the final status to `Declined`; `NO_ACTION` (default) records the risk in `phone.warnings` without affecting the status.

**Billing.** Checks are free - delivery is billed on the send side (see [Phone Verification Pricing](/getting-started/phone-verification-pricing)).

**Session persistence.** A finalized check updates the session created by the send (visible in the Business Console, queryable via `GET /v3/session/{sessionId}/decision/`) and fires a `status.updated` webhook.

**Sandbox.** Sandbox API keys skip all processing: any well-formed code (4-8 digits, `123456` included) returns a static `Approved` payload with a simplified flat `phone` object (`status`, `phone_number`, `country_code`, `carrier_name`, `line_type`, `flags`); malformed input still returns `400`. Nothing is persisted.

**Authentication.** Send your application's API key in the `x-api-key` header. Missing or invalid credentials return `403` (`{"detail": "You do not have permission to perform this action."}`) - this API never returns `401`.

**Rate limits.** Shared write budget of 300 requests/min per API key, plus the upstream anti-abuse cap of 4 attempts per number per hour; exceeding either returns `429`.

**Social footprint.** Set `enable_social` to `true` to add a `phone_social` block: the online platforms this number is registered on, with per-category counts and any profile details available. `profiles_registered: 0` means the platforms were checked and the number was found on none of them - a valid, billable answer. The block is absent when the add-on was not requested or the check could not be completed, and it is not billed in that case. Billing adds one `phone_social` unit per request on top of this endpoint's own price.

POST /v3/phone/check/

func (*PhoneService) SendCode

SendCode: Send Phone Code.

Send a one-time passcode (OTP) to a phone number over WhatsApp, SMS, or another supported channel, then verify it with [`POST /v3/phone/check/`](/standalone-apis/phone-check).

**How send and check pair up.** Verification state is keyed by your application plus the E.164 `phone_number` - the check call does not take `request_id`. Each new send creates a pending verification that lives for **5 minutes**: call the check with the same number and the code the user received before the window closes. Calling send again for the same number while a verification is pending re-sends a code for that same verification (`status: "Retry"`, same `request_id`). At most one retry is attached this way (two sends total); a further send starts a fresh verification with a new `request_id`. The 5-minute window is measured from the first send and is not extended by retries.

**Delivery channels.** `options.preferred_channel` selects the channel (`whatsapp` by default; `sms`, `telegram`, `voice`, `rcs`, `viber`, and `zalo` are also supported). When the preferred channel is unavailable for the destination country or number, delivery automatically falls back to SMS - the send still reports `Success`, and the channel actually used is reported by the check response (`phone.verification_method` and the `lifecycle` events).

**Branding.** SMS codes carry your application's SMS sender name, set in the Business Console, at no extra cost. Pass `options.sms_sender_name` to sign one code with another name, or `options.use_white_label_customization: true` to fall back to your white-label public name when no sender name is set. WhatsApp codes use a fixed message; connect your own WhatsApp Business number in the Business Console to send them from your business name and number, billed at the Didit fee only.

**Send statuses.** `Success` - OTP sent for a new verification; `Retry` - OTP re-sent for the pending verification; `Blocked` - the anti-fraud layer refused to send (see `reason`, e.g. `repeated_attempts`, `suspicious`, `spam`). A `Blocked` send immediately finalizes the verification as `Declined` with a high-risk warning, so a follow-up check returns `Expired or Not Found`.

**Billing.** The price depends on the destination country and the channel that actually delivers the message - see [Phone Verification Pricing](/getting-started/phone-verification-pricing). Only `Blocked` sends are guaranteed free: any other unbilled send attempt is charged at verification finalization or expiration, even if delivery was never confirmed or the delivery provider reported the message undeliverable. Checks are always free. As an anti-abuse measure, phone verification is disabled until your organization's first top-up (`403`).

**Session persistence.** Every new verification is persisted as an API-type session: `request_id` is a real session id you can pass to `GET /v3/session/{sessionId}/decision/`, the verification appears in the Business Console, and `status.updated` webhooks fire as it progresses.

**Sandbox.** Sandbox API keys skip delivery and billing: after request validation (malformed input still returns `400`), the endpoint returns a static `Success` payload with a random `request_id`; no message is sent and nothing is persisted. Use code `123456` on the sandbox check.

**Authentication.** Send your application's API key in the `x-api-key` header. Missing or invalid credentials return `403` (`{"detail": "You do not have permission to perform this action."}`) - this API never returns `401`.

**Rate limits.** Shared write budget of 300 requests/min per API key across all POST/PATCH/DELETE endpoints, plus an anti-abuse cap of 4 send attempts per phone number per hour; exceeding either returns `429`.

POST /v3/phone/send/

type PhoneSocialFootprint

type PhoneSocialFootprint struct {
	// Platforms where the phone number is confirmed registered.
	ProfilesRegistered int64 `json:"profiles_registered"`

	// Platforms evaluated for registration.
	ProfilesChecked int64 `json:"profiles_checked"`

	// Platforms that returned an associated name.
	NamesFound int64 `json:"names_found"`

	// Platforms that returned a profile photo.
	PhotosFound int64 `json:"photos_found"`

	// Communication platforms with detected presence.
	CommunicationBreadth int64 `json:"communication_breadth"`

	// Distinct platform categories with detected presence.
	DigitalFootprintDiversity int64 `json:"digital_footprint_diversity"`

	// Composite digital-maturity indicator, 0-10.
	DigitalSophisticationIndex int64 `json:"digital_sophistication_index"`

	// Profile-richness indicator, 0-10.
	EngagementDepthIndex int64 `json:"engagement_depth_index"`

	// Free vs paid platform mix, 0-10.
	SubscriptionAffordabilityIndex int64 `json:"subscription_affordability_index"`

	// Registrations on free platforms.
	FreePlatforms int64 `json:"free_platforms"`

	// Registrations on fully paid platforms.
	FullPaidPlatforms int64 `json:"full_paid_platforms"`

	// Registrations on freemium platforms.
	PartialPaidPlatforms int64 `json:"partial_paid_platforms"`

	// Completeness of the WhatsApp profile. Phone only; null for email.
	WhatsappProfileCompleteness PhoneSocialFootprintWhatsappProfileCompleteness `json:"whatsapp_profile_completeness"`

	// Platforms where registration is confirmed.
	RegisteredPlatforms []SocialFootprintPlatform `json:"registered_platforms"`

	// Platforms checked with a negative result.
	NotRegisteredPlatforms []SocialFootprintPlatform `json:"not_registered_platforms"`

	// Registered count and ratio per platform category.
	Categories map[string]SocialFootprintCategorySummary `json:"categories"`

	// Per-platform profile details, keyed by platform, when the platform exposes
	// them.
	Profiles map[string]SocialFootprintProfile `json:"profiles"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PhoneSocialFootprint: Social footprint of the phone number: the online platforms it is registered on. Present only when `enable_social` was set and the check completed. Every count may be null when no data was returned for it. `profiles_registered: 0` means the platforms were checked and the phone number was found on none of them - a valid, billable answer and a common synthetic-identity signal.

func (*PhoneSocialFootprint) UnmarshalJSON

func (r *PhoneSocialFootprint) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PhoneSocialFootprint leniently.

type PhoneSocialFootprintWhatsappProfileCompleteness

type PhoneSocialFootprintWhatsappProfileCompleteness string

PhoneSocialFootprintWhatsappProfileCompleteness: Completeness of the WhatsApp profile. Phone only; null for email.

PhoneSocialFootprintWhatsappProfileCompleteness is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PhoneSocialFootprintWhatsappProfileCompletenessBasic      PhoneSocialFootprintWhatsappProfileCompleteness = "Basic"
	PhoneSocialFootprintWhatsappProfileCompletenessPartial    PhoneSocialFootprintWhatsappProfileCompleteness = "Partial"
	PhoneSocialFootprintWhatsappProfileCompletenessComplete   PhoneSocialFootprintWhatsappProfileCompleteness = "Complete"
	PhoneSocialFootprintWhatsappProfileCompletenessNotPresent PhoneSocialFootprintWhatsappProfileCompleteness = "Not Present"
)

Known values of PhoneSocialFootprintWhatsappProfileCompleteness.

type PhoneVerificationCheckResponse

type PhoneVerificationCheckResponse struct {
	// On `Approved`/`Declined`: the session id of the matched verification -
	// identical to the `request_id` returned by `POST /v3/phone/send/`. On `Failed`
	// and `Expired or Not Found`: a random one-off UUID that cannot be looked up
	// later.
	RequestID string `json:"request_id"`

	// `Approved` - correct code, no declining risk. `Declined` - terminal: a
	// declining risk matched or the attempt budget (3) was exhausted. `Failed` -
	// wrong code, attempts remaining. `Expired or Not Found` - no pending
	// verification for this number in the last 5 minutes.
	Status PhoneVerificationCheckResponseStatus `json:"status"`

	// Human-readable explanation of the outcome, including the number of attempts
	// remaining after a wrong code.
	Message string `json:"message"`

	// Full phone report. Present (non-null) only on finalized outcomes
	// (`Approved`/`Declined`); `null` on `Failed` and absent on `Expired or Not
	// Found`.
	Phone PhoneVerificationCheckResponsePhone `json:"phone"`

	// `vendor_data` of the matched verification's session. `null` on `Expired or
	// Not Found`.
	VendorData string `json:"vendor_data"`

	// `metadata` of the matched verification's session. `null` on `Expired or Not
	// Found`.
	Metadata map[string]any `json:"metadata"`

	// Timestamp of this check response.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PhoneVerificationCheckResponse is a response object.

func (*PhoneVerificationCheckResponse) UnmarshalJSON

func (r *PhoneVerificationCheckResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PhoneVerificationCheckResponse leniently.

type PhoneVerificationCheckResponsePhone

type PhoneVerificationCheckResponsePhone struct {
	// Final status of the phone verification. Matches the top-level `status` for
	// finalized checks.
	Status PhoneVerificationCheckResponsePhoneStatus `json:"status"`

	// Country calling code with leading `+` (e.g., `+1`).
	PhoneNumberPrefix string `json:"phone_number_prefix"`

	// National number without the country calling code.
	PhoneNumber string `json:"phone_number"`

	// Complete number in E.164 format.
	FullNumber string `json:"full_number"`

	// ISO 3166-1 alpha-2 country of the number.
	CountryCode string `json:"country_code"`

	// Full country name derived from `country_code`.
	CountryName string `json:"country_name"`

	// Current network serving the number, from the carrier lookup run at
	// finalization.
	Carrier PhoneVerificationCheckResponsePhoneCarrier `json:"carrier"`

	// `true` when the number belongs to a temporary/burner number service.
	IsDisposable bool `json:"is_disposable"`

	// `true` when the line type is virtual (`voip`, `isp`, or `vpn`).
	IsVirtual bool `json:"is_virtual"`

	// Channel that actually delivered the OTP once delivery is confirmed (e.g.,
	// `whatsapp`, `sms`); until then, the requested channel.
	VerificationMethod string `json:"verification_method"`

	// Number of OTP sends for this verification (1, or 2 after a retry).
	VerificationAttempts int64 `json:"verification_attempts"`

	// When the correct code was entered. `null` if the verification was never
	// approved.
	VerifiedAt time.Time `json:"verified_at"`

	// Risk warnings recorded during the verification (duplicate, disposable, VoIP,
	// attempts exceeded, blocklist, etc.). Empty array when there are none.
	Warnings []PhoneVerificationCheckResponsePhoneWarnings `json:"warnings"`

	// Chronological audit trail of the verification. Event `type` is one of
	// `PHONE_VERIFICATION_MESSAGE_SENT`, `PHONE_VERIFICATION_RETRY_MESSAGE_SENT`,
	// `PHONE_VERIFICATION_BLOCKED`, `PHONE_DELIVERY_DELIVERED`,
	// `PHONE_DELIVERY_UNDELIVERABLE`, `VALID_CODE_ENTERED`, `INVALID_CODE_ENTERED`,
	// `PHONE_VERIFICATION_APPROVED`, `PHONE_VERIFICATION_DECLINED`,
	// `PHONE_VERIFICATION_IN_REVIEW`, `PHONE_VERIFICATION_EXPIRED`.
	Lifecycle []PhoneVerificationCheckResponsePhoneLifecycle `json:"lifecycle"`

	// Other sessions of your application (KYC, KYB, or API) where the same phone
	// number was used by a different user (different `vendor_data`). Up to 5
	// entries, a synthetic list-entry blocklist match first when present
	// (session-derived matches keep query order). Empty array when there are no
	// matches.
	Matches     []PhoneVerificationCheckResponsePhoneMatches `json:"matches"`
	PhoneSocial PhoneSocialFootprint                         `json:"phone_social"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PhoneVerificationCheckResponsePhone: Full phone report. Present (non-null) only on finalized outcomes (`Approved`/`Declined`); `null` on `Failed` and absent on `Expired or Not Found`.

func (*PhoneVerificationCheckResponsePhone) UnmarshalJSON

func (r *PhoneVerificationCheckResponsePhone) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PhoneVerificationCheckResponsePhone leniently.

type PhoneVerificationCheckResponsePhoneCarrier

type PhoneVerificationCheckResponsePhoneCarrier struct {
	// Carrier name. Empty string when the lookup could not identify it.
	Name string `json:"name"`

	// Line type reported by the lookup: `mobile`, `fixed_line`, `voip`, `isp`,
	// `vpn`, `toll_free`, `premium_rate`, `pager`, `payphone`, `satellite`,
	// `service`, `shared_cost`, `short_codes_commercial`, `calling_cards`,
	// `local_rate`, `universal_access`, `voice_mail`, `other`, or `unknown`.
	Type string `json:"type"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PhoneVerificationCheckResponsePhoneCarrier: Current network serving the number, from the carrier lookup run at finalization.

func (*PhoneVerificationCheckResponsePhoneCarrier) UnmarshalJSON

func (r *PhoneVerificationCheckResponsePhoneCarrier) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PhoneVerificationCheckResponsePhoneCarrier leniently.

type PhoneVerificationCheckResponsePhoneLifecycle

type PhoneVerificationCheckResponsePhoneLifecycle struct {
	// Event type.
	Type string `json:"type"`

	// When the event happened.
	Timestamp time.Time `json:"timestamp"`

	// Event-specific payload. Send events: `{status, reason, channel,
	// actual_channel}` (`actual_channel` is filled once delivery is confirmed).
	// Delivery events: `{channel, status}`. Code-entry events: `{code_tried,
	// status}`. Final-status events: `null`, or `{reason}` when declined or in
	// review.
	Details map[string]any `json:"details"`

	// USD amount billed for this event. Non-zero only on send events (the delivery
	// price); 0 for code entries, delivery confirmations, and status events.
	Fee float64 `json:"fee"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PhoneVerificationCheckResponsePhoneLifecycle is a response object.

func (*PhoneVerificationCheckResponsePhoneLifecycle) UnmarshalJSON

func (r *PhoneVerificationCheckResponsePhoneLifecycle) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PhoneVerificationCheckResponsePhoneLifecycle leniently.

type PhoneVerificationCheckResponsePhoneMatches

type PhoneVerificationCheckResponsePhoneMatches struct {
	// Session id of the other verification that used this phone number.
	SessionID string `json:"session_id"`

	// Human-friendly sequential number of that session.
	SessionNumber int64 `json:"session_number"`

	// `vendor_data` of that session.
	VendorData string `json:"vendor_data"`

	// When that session was created (`YYYY-MM-DDTHH:MM:SSZ`).
	VerificationDate string `json:"verification_date"`

	// The matched phone number.
	PhoneNumber string `json:"phone_number"`

	// Status of that session (e.g., `Approved`, `Declined`, `In Progress`).
	Status string `json:"status"`

	// Whether the phone number is on your application's blocklist.
	IsBlocklisted bool `json:"is_blocklisted"`

	// For API-type sessions, the standalone API that created it (e.g.,
	// `PHONE_VERIFICATION`); `null` for regular verification sessions.
	APIService string `json:"api_service"`

	// Where the match was found. Usually `session`; a blocklist hit via an
	// organization list entry prepends a synthetic match with `source:
	// "list_entry"` and null `session_id`/`session_number`.
	Source string `json:"source"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PhoneVerificationCheckResponsePhoneMatches is a response object.

func (*PhoneVerificationCheckResponsePhoneMatches) UnmarshalJSON

func (r *PhoneVerificationCheckResponsePhoneMatches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PhoneVerificationCheckResponsePhoneMatches leniently.

type PhoneVerificationCheckResponsePhoneStatus

type PhoneVerificationCheckResponsePhoneStatus string

PhoneVerificationCheckResponsePhoneStatus: Final status of the phone verification. Matches the top-level `status` for finalized checks.

PhoneVerificationCheckResponsePhoneStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PhoneVerificationCheckResponsePhoneStatusApproved    PhoneVerificationCheckResponsePhoneStatus = "Approved"
	PhoneVerificationCheckResponsePhoneStatusDeclined    PhoneVerificationCheckResponsePhoneStatus = "Declined"
	PhoneVerificationCheckResponsePhoneStatusInReview    PhoneVerificationCheckResponsePhoneStatus = "In Review"
	PhoneVerificationCheckResponsePhoneStatusNotFinished PhoneVerificationCheckResponsePhoneStatus = "Not Finished"
	PhoneVerificationCheckResponsePhoneStatusExpired     PhoneVerificationCheckResponsePhoneStatus = "Expired"
)

Known values of PhoneVerificationCheckResponsePhoneStatus.

type PhoneVerificationCheckResponsePhoneWarnings

type PhoneVerificationCheckResponsePhoneWarnings struct {
	// Feature that produced the warning. Always `PHONE` here.
	Feature string `json:"feature"`

	// Machine-readable risk code.
	Risk string `json:"risk"`

	// Risk-specific context (e.g., the duplicated session id for duplicate risks).
	// `null` when the risk carries no extra data.
	AdditionalData map[string]any `json:"additional_data"`

	// Severity. `error` risks decline the verification, `warning` flags it for
	// review, `information` is recorded without affecting the status.
	LogType PhoneVerificationCheckResponsePhoneWarningsLogType `json:"log_type"`

	// Human-readable one-line summary of the risk.
	ShortDescription string `json:"short_description"`

	// Human-readable explanation of the risk.
	LongDescription string `json:"long_description"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PhoneVerificationCheckResponsePhoneWarnings is a response object.

func (*PhoneVerificationCheckResponsePhoneWarnings) UnmarshalJSON

func (r *PhoneVerificationCheckResponsePhoneWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PhoneVerificationCheckResponsePhoneWarnings leniently.

type PhoneVerificationCheckResponsePhoneWarningsLogType

type PhoneVerificationCheckResponsePhoneWarningsLogType string

PhoneVerificationCheckResponsePhoneWarningsLogType: Severity. `error` risks decline the verification, `warning` flags it for review, `information` is recorded without affecting the status.

PhoneVerificationCheckResponsePhoneWarningsLogType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PhoneVerificationCheckResponsePhoneWarningsLogTypeError       PhoneVerificationCheckResponsePhoneWarningsLogType = "error"
	PhoneVerificationCheckResponsePhoneWarningsLogTypeWarning     PhoneVerificationCheckResponsePhoneWarningsLogType = "warning"
	PhoneVerificationCheckResponsePhoneWarningsLogTypeInformation PhoneVerificationCheckResponsePhoneWarningsLogType = "information"
)

Known values of PhoneVerificationCheckResponsePhoneWarningsLogType.

type PhoneVerificationCheckResponseStatus

type PhoneVerificationCheckResponseStatus string

PhoneVerificationCheckResponseStatus: `Approved` - correct code, no declining risk. `Declined` - terminal: a declining risk matched or the attempt budget (3) was exhausted. `Failed` - wrong code, attempts remaining. `Expired or Not Found` - no pending verification for this number in the last 5 minutes.

PhoneVerificationCheckResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PhoneVerificationCheckResponseStatusApproved          PhoneVerificationCheckResponseStatus = "Approved"
	PhoneVerificationCheckResponseStatusDeclined          PhoneVerificationCheckResponseStatus = "Declined"
	PhoneVerificationCheckResponseStatusFailed            PhoneVerificationCheckResponseStatus = "Failed"
	PhoneVerificationCheckResponseStatusExpiredOrNotFound PhoneVerificationCheckResponseStatus = "Expired or Not Found"
)

Known values of PhoneVerificationCheckResponseStatus.

type PhoneVerificationSendResponse

type PhoneVerificationSendResponse struct {
	// Session id of the verification. A `Retry` send returns the same `request_id`
	// as the original send. This id appears in the Business Console, is returned
	// again by a finalized `POST /v3/phone/check/`, and can be passed to `GET
	// /v3/session/{sessionId}/decision/`.
	RequestID string `json:"request_id"`

	// `Success` - OTP sent to a new verification. `Retry` - OTP re-sent for the
	// pending verification created by a previous send. `Blocked` - the anti-fraud
	// layer refused to send; the verification is immediately finalized as
	// `Declined` and nothing is billed.
	Status PhoneVerificationSendResponseStatus `json:"status"`

	// Why a send was `Blocked` (e.g., `repeated_attempts`, `suspicious`, `spam`).
	// `null` on `Success` and `Retry`.
	Reason string `json:"reason"`

	// Echo of the `vendor_data` stored on the session (from the first send).
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` stored on the session (from the first send).
	Metadata map[string]any `json:"metadata"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

PhoneVerificationSendResponse is a response object.

func (*PhoneVerificationSendResponse) UnmarshalJSON

func (r *PhoneVerificationSendResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes PhoneVerificationSendResponse leniently.

type PhoneVerificationSendResponseStatus

type PhoneVerificationSendResponseStatus string

PhoneVerificationSendResponseStatus: `Success` - OTP sent to a new verification. `Retry` - OTP re-sent for the pending verification created by a previous send. `Blocked` - the anti-fraud layer refused to send; the verification is immediately finalized as `Declined` and nothing is billed.

PhoneVerificationSendResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	PhoneVerificationSendResponseStatusSuccess PhoneVerificationSendResponseStatus = "Success"
	PhoneVerificationSendResponseStatusRetry   PhoneVerificationSendResponseStatus = "Retry"
	PhoneVerificationSendResponseStatusBlocked PhoneVerificationSendResponseStatus = "Blocked"
)

Known values of PhoneVerificationSendResponseStatus.

type PricingService

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

PricingService holds the pricing operations. Use it through Client.Pricing.

func (*PricingService) BankVerification

func (r *PricingService) BankVerification(ctx context.Context, opts ...option.RequestOption) (*BankVerificationPricing, error)

BankVerification: Get bank verification prices (public, unauthenticated).

Returns the list price of each Bank Verification method in every country: bank sign-in with its balance and transactions add-ons, and the account check. Use it to quote a bank step before you build a workflow, or to show bank prices in your own product.

Public: send no auth header. The response contains no organization data and is the same for every caller. It is cached publicly for one hour and carries an `ETag`, so send `If-None-Match` to get a `304 Not Modified` when nothing changed.

A method is `available` only where Didit serves it in production today, and its `price_usd` is `null` everywhere else, so the feed never shows a price you cannot buy. `available: false` covers a country with no approved price, a method the country does not support, and a route that is not switched on yet.

These are list prices before your plan discount. Your plan discount applies to the whole bank price, and a negotiated or contract price replaces the list price for your organization.

GET /v3/organization/bank-verification-pricing/

type ProofOfAddressService

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

ProofOfAddressService holds the proof_of_address operations. Use it through Client.ProofOfAddress.

func (*ProofOfAddressService) Verify

Verify: Proof of Address (document OCR + address checks).

Extract and validate a Proof of Address document - utility bills, bank statements, and government-issued documents - in one call. Returns the issuer, issue/expiry dates, the holder name, the raw and parsed/geocoded address, an `Approved`/`Declined` `status`, and a `warnings` list explaining every issue found.

**Latency.** Extraction is LLM-based: typical calls take **5-15 seconds**, multi-page PDFs up to **~30 seconds**. Configure a client timeout of **at least 45 seconds** and do not retry before the call completes.

**How it works.** The document (image or PDF, up to 15 MB; encrypted PDFs require `document_password`) is classified into a document type and subtype (e.g. `UTILITY_BILL` / `WATER_BILL`), and the issuer, dates, holder name, and address are extracted with LLM-based extraction. The address is parsed and geocoded into `poa_parsed_address`. PDF/EXIF forensics screen for tampering - modification after digital signing, known PDF editors, overlay-text manipulation, suspicious re-exports - surfacing `SUSPECTED_DOCUMENT_MANIPULATION` or `DOCUMENT_METADATA_MISMATCH`. Document age is validated against `poa_document_age_months`, and the language against `poa_languages_allowed`. If you pass `expected_address`, `expected_country`, or `expected_first_name`/`expected_last_name`, the extracted values are cross-checked and mismatches are flagged.

**Decision logic.** `status` is `Approved` unless at least one warning resolves to a decline. Hard failures always decline: `MISSING_ADDRESS_INFORMATION`, `POA_DOCUMENT_EXPIRED`, `INVALID_DOCUMENT_TYPE`, `UNABLE_TO_VALIDATE_DOCUMENT_AGE`, plus `UNABLE_TO_EXTRACT_ISSUE_DATE` and `POA_NAME_NOT_DETECTED` (not configurable on this endpoint). Five risk groups are configurable per request via the `poa_*_action` options (`DECLINE` or `NO_ACTION`, all defaulting to `DECLINE`). `POA_DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION` and `UNPARSABLE_OR_INVALID_ADDRESS` are informational on this endpoint and never decline. A document that cannot be processed at all returns `400`; a readable but problematic document returns `200` with `status: "Declined"` - always inspect `poa.status` and `poa.warnings`, not just the HTTP code.

**Billing.** Each `200` response consumes one Proof of Address API credit (standalone APIs have no free tier). When the organization's balance cannot cover the call, the endpoint returns `403` with the not-enough-credits error before any document processing.

**Session persistence (`save_api_request`, default `true`).** When `true`, the call is persisted as an API-type session: it appears in the Business Console, the uploaded document is stored, the returned `request_id` is a real session id you can pass to `GET /v3/session/{sessionId}/decision/` (the decision additionally exposes `document_file` and the `document_metadata` forensics, which this response omits), and a `status.updated` webhook is emitted. When `false`, nothing is stored and `request_id` is a one-off correlation UUID that cannot be looked up later.

**Sandbox.** Sandbox API keys skip all processing and billing: after request validation (malformed input still returns `400`), the endpoint returns a static `Approved` mock payload (a fictional "Sandbox Power Co." electricity bill), no session is persisted, and no credits are consumed.

**Authentication.** Send your application's API key in the `x-api-key` header. Missing or invalid credentials return `403` (`{"detail": "You do not have permission to perform this action."}`) - this API never returns `401`.

**Rate limit.** Shared write budget of 300 requests/min per API key across all POST/PATCH/DELETE endpoints; exceeding it returns `429`.

Note: `FUTURE_ISSUE_DATE` and `POOR_DOCUMENT_QUALITY` exist in workflow sessions but are never produced by this standalone endpoint - a future-dated document is not auto-declined here.

POST /v3/poa/

type ProofOfAddressVerifyParams

type ProofOfAddressVerifyParams struct {
	// The Proof of Address document. Allowed extensions: `tiff`, `jpg`, `jpeg`,
	// `png`, `pdf`, `webp`. Maximum upload size: **15 MB** (larger files are
	// rejected with `400`). Multi-page PDFs are supported (expect higher latency);
	// encrypted PDFs require `document_password`. Images are automatically
	// compressed before processing. Required.
	Document File `json:"-" form:"document"`

	// Password to decrypt `document` when it is an encrypted PDF. Sending an
	// encrypted PDF without (or with a wrong) password returns `400`.
	DocumentPassword Opt[string] `json:"document_password"`

	// Address to verify against the document. It is geocoded and compared with the
	// extracted address; a mismatch (or an expected address that cannot be
	// geocoded/verified) adds `ADDRESS_MISMATCH_WITH_PROVIDED`, governed by
	// `poa_address_mismatch_action`. The geocoded form is echoed back in
	// `expected_details_formatted_address` / `expected_details_parsed_address`.
	ExpectedAddress Opt[string] `json:"expected_address"`

	// Country to verify against the document (ISO 3166-1 code, e.g. `ARG` or `AR`).
	// A mismatch with the document's country adds
	// `POA_COUNTRY_MISMATCH_WITH_PROVIDED`, governed by
	// `poa_address_mismatch_action`.
	ExpectedCountry Opt[string] `json:"expected_country"`

	// First name to verify against `name_on_document` (fuzzy match,
	// transliteration-aware). A score below the match threshold adds
	// `NAME_MISMATCH_WITH_PROVIDED`, governed by `poa_address_mismatch_action`.
	ExpectedFirstName Opt[string] `json:"expected_first_name"`

	// Last name to verify against `name_on_document`, combined with
	// `expected_first_name` for the match score.
	ExpectedLastName Opt[string] `json:"expected_last_name"`

	// Comma-separated list of accepted document languages as ISO 639-1 codes (e.g.
	// `en,es,fr`). When omitted or blank, **all 51 supported languages** are
	// accepted. A document in a language outside the list adds
	// `UNSUPPORTED_DOCUMENT_LANGUAGE` (governed by
	// `poa_unsupported_language_action`); an unknown code in the list returns `400`
	// with the full set of supported codes.
	POALanguagesAllowed Opt[string] `json:"poa_languages_allowed"`

	// Comma-separated `key:value` pairs setting the maximum document age in months
	// per document type - keys: `utility_bill`, `bank_statement`,
	// `government_issued_document`, `other_poa_document`; values: `1`-`120`, or
	// `-1` for unlimited (no age check). Defaults when omitted:
	// `utility_bill:3,bank_statement:3,government_issued_document:12,other_poa_document:12`.
	// A document older than its limit declines with `POA_DOCUMENT_EXPIRED`.
	// **Caution:** when you provide this field, list *every* type you accept -
	// omitted types are treated as not accepted (informational
	// `POA_DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION`) and their age check is skipped.
	POADocumentAgeMonths Opt[string] `json:"poa_document_age_months"`

	// Accepted but **currently not applied** - name-mismatch warnings
	// (`NAME_MISMATCH_WITH_PROVIDED`) follow `poa_address_mismatch_action` instead.
	// Set `poa_address_mismatch_action` to control both name and address mismatch
	// behavior.
	POANameMismatchAction Opt[ProofOfAddressVerifyParamsPOANameMismatchAction] `json:"poa_name_mismatch_action"`

	// What to do on file-integrity problems - in practice only
	// `DOCUMENT_METADATA_MISMATCH` is produced by this endpoint.
	POADocumentIssuesAction Opt[ProofOfAddressVerifyParamsPOADocumentIssuesAction] `json:"poa_document_issues_action"`

	// What to do when document manipulation is suspected
	// (`SUSPECTED_DOCUMENT_MANIPULATION`) - e.g. the PDF was modified after digital
	// signing, processed by a known PDF editor, shows overlay-text manipulation, or
	// has inconsistent EXIF dates.
	POADocumentAuthenticityAction Opt[ProofOfAddressVerifyParamsPOADocumentAuthenticityAction] `json:"poa_document_authenticity_action"`

	// What to do when the document language is outside `poa_languages_allowed`
	// (`UNSUPPORTED_DOCUMENT_LANGUAGE`).
	POAUnsupportedLanguageAction Opt[ProofOfAddressVerifyParamsPOAUnsupportedLanguageAction] `json:"poa_unsupported_language_action"`

	// What to do when the extracted details disagree with the `expected_*` fields:
	// `ADDRESS_MISMATCH_WITH_PROVIDED`, `NAME_MISMATCH_WITH_PROVIDED`, and
	// `POA_COUNTRY_MISMATCH_WITH_PROVIDED` all follow this action.
	POAAddressMismatchAction Opt[ProofOfAddressVerifyParamsPOAAddressMismatchAction] `json:"poa_address_mismatch_action"`

	// What to do when no issuing company/organization can be identified on the
	// document (`ISSUER_NOT_IDENTIFIED`).
	POAIssuerNotIdentifiedAction Opt[ProofOfAddressVerifyParamsPOAIssuerNotIdentifiedAction] `json:"poa_issuer_not_identified_action"`

	// When `true` (default), persists the call as an API-type session - visible in
	// the Business Console, retrievable via `GET /v3/session/{sessionId}/decision/`
	// using the returned `request_id`, announced through a `status.updated`
	// webhook, and with the uploaded document stored. When `false`, nothing is
	// stored and `request_id` is a transient UUID for response correlation only.
	SaveAPIRequest Opt[bool] `json:"save_api_request"`

	// Optional opaque string (your internal user id, email, UUID…) stored on the
	// persisted session and echoed back in the response. Use it to correlate API
	// calls with your own records and to filter sessions later.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional JSON object stored with the session (when `save_api_request=true`)
	// and echoed back in the response. In multipart requests, send it as a
	// JSON-encoded string field (e.g. `metadata={"flow":"onboarding"}`) - it is
	// parsed into an object.
	Metadata Opt[map[string]any] `json:"metadata"`
}

ProofOfAddressVerifyParams holds the parameters of Client.ProofOfAddress.Verify.

func (ProofOfAddressVerifyParams) MarshalJSON

func (r ProofOfAddressVerifyParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type ProofOfAddressVerifyParamsPOAAddressMismatchAction

type ProofOfAddressVerifyParamsPOAAddressMismatchAction string

ProofOfAddressVerifyParamsPOAAddressMismatchAction: What to do when the extracted details disagree with the `expected_*` fields: `ADDRESS_MISMATCH_WITH_PROVIDED`, `NAME_MISMATCH_WITH_PROVIDED`, and `POA_COUNTRY_MISMATCH_WITH_PROVIDED` all follow this action.

ProofOfAddressVerifyParamsPOAAddressMismatchAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ProofOfAddressVerifyParamsPOAAddressMismatchActionDecline  ProofOfAddressVerifyParamsPOAAddressMismatchAction = "DECLINE"
	ProofOfAddressVerifyParamsPOAAddressMismatchActionNoAction ProofOfAddressVerifyParamsPOAAddressMismatchAction = "NO_ACTION"
)

Known values of ProofOfAddressVerifyParamsPOAAddressMismatchAction.

type ProofOfAddressVerifyParamsPOADocumentAuthenticityAction

type ProofOfAddressVerifyParamsPOADocumentAuthenticityAction string

ProofOfAddressVerifyParamsPOADocumentAuthenticityAction: What to do when document manipulation is suspected (`SUSPECTED_DOCUMENT_MANIPULATION`) - e.g. the PDF was modified after digital signing, processed by a known PDF editor, shows overlay-text manipulation, or has inconsistent EXIF dates.

ProofOfAddressVerifyParamsPOADocumentAuthenticityAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ProofOfAddressVerifyParamsPOADocumentAuthenticityActionDecline  ProofOfAddressVerifyParamsPOADocumentAuthenticityAction = "DECLINE"
	ProofOfAddressVerifyParamsPOADocumentAuthenticityActionNoAction ProofOfAddressVerifyParamsPOADocumentAuthenticityAction = "NO_ACTION"
)

Known values of ProofOfAddressVerifyParamsPOADocumentAuthenticityAction.

type ProofOfAddressVerifyParamsPOADocumentIssuesAction

type ProofOfAddressVerifyParamsPOADocumentIssuesAction string

ProofOfAddressVerifyParamsPOADocumentIssuesAction: What to do on file-integrity problems - in practice only `DOCUMENT_METADATA_MISMATCH` is produced by this endpoint.

ProofOfAddressVerifyParamsPOADocumentIssuesAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ProofOfAddressVerifyParamsPOADocumentIssuesActionDecline  ProofOfAddressVerifyParamsPOADocumentIssuesAction = "DECLINE"
	ProofOfAddressVerifyParamsPOADocumentIssuesActionNoAction ProofOfAddressVerifyParamsPOADocumentIssuesAction = "NO_ACTION"
)

Known values of ProofOfAddressVerifyParamsPOADocumentIssuesAction.

type ProofOfAddressVerifyParamsPOAIssuerNotIdentifiedAction

type ProofOfAddressVerifyParamsPOAIssuerNotIdentifiedAction string

ProofOfAddressVerifyParamsPOAIssuerNotIdentifiedAction: What to do when no issuing company/organization can be identified on the document (`ISSUER_NOT_IDENTIFIED`).

ProofOfAddressVerifyParamsPOAIssuerNotIdentifiedAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ProofOfAddressVerifyParamsPOAIssuerNotIdentifiedActionDecline  ProofOfAddressVerifyParamsPOAIssuerNotIdentifiedAction = "DECLINE"
	ProofOfAddressVerifyParamsPOAIssuerNotIdentifiedActionNoAction ProofOfAddressVerifyParamsPOAIssuerNotIdentifiedAction = "NO_ACTION"
)

Known values of ProofOfAddressVerifyParamsPOAIssuerNotIdentifiedAction.

type ProofOfAddressVerifyParamsPOANameMismatchAction

type ProofOfAddressVerifyParamsPOANameMismatchAction string

ProofOfAddressVerifyParamsPOANameMismatchAction: Accepted but **currently not applied** - name-mismatch warnings (`NAME_MISMATCH_WITH_PROVIDED`) follow `poa_address_mismatch_action` instead. Set `poa_address_mismatch_action` to control both name and address mismatch behavior.

ProofOfAddressVerifyParamsPOANameMismatchAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ProofOfAddressVerifyParamsPOANameMismatchActionDecline  ProofOfAddressVerifyParamsPOANameMismatchAction = "DECLINE"
	ProofOfAddressVerifyParamsPOANameMismatchActionNoAction ProofOfAddressVerifyParamsPOANameMismatchAction = "NO_ACTION"
)

Known values of ProofOfAddressVerifyParamsPOANameMismatchAction.

type ProofOfAddressVerifyParamsPOAUnsupportedLanguageAction

type ProofOfAddressVerifyParamsPOAUnsupportedLanguageAction string

ProofOfAddressVerifyParamsPOAUnsupportedLanguageAction: What to do when the document language is outside `poa_languages_allowed` (`UNSUPPORTED_DOCUMENT_LANGUAGE`).

ProofOfAddressVerifyParamsPOAUnsupportedLanguageAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ProofOfAddressVerifyParamsPOAUnsupportedLanguageActionDecline  ProofOfAddressVerifyParamsPOAUnsupportedLanguageAction = "DECLINE"
	ProofOfAddressVerifyParamsPOAUnsupportedLanguageActionNoAction ProofOfAddressVerifyParamsPOAUnsupportedLanguageAction = "NO_ACTION"
)

Known values of ProofOfAddressVerifyParamsPOAUnsupportedLanguageAction.

type ProofOfAddressVerifyResponse

type ProofOfAddressVerifyResponse struct {
	// Persisted session id when `save_api_request=true` (usable with `GET
	// /v3/session/{sessionId}/decision/`); otherwise a transient correlation UUID.
	RequestID string                          `json:"request_id"`
	POA       ProofOfAddressVerifyResponsePOA `json:"poa"`

	// Echo of the `vendor_data` you sent, or `null`.
	VendorData string `json:"vendor_data"`

	// Echo of the `metadata` object you sent, or `null`.
	Metadata map[string]any `json:"metadata"`

	// ISO 8601 timestamp (UTC) of when the response was generated.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ProofOfAddressVerifyResponse is a response object.

func (*ProofOfAddressVerifyResponse) UnmarshalJSON

func (r *ProofOfAddressVerifyResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ProofOfAddressVerifyResponse leniently.

type ProofOfAddressVerifyResponsePOA

type ProofOfAddressVerifyResponsePOA struct {
	// `Approved` when no warning resolves to a decline; `Declined` otherwise - the
	// `warnings` list explains why.
	Status ProofOfAddressVerifyResponsePOAStatus `json:"status"`

	// Country the document was issued in, as extracted from the document - usually
	// ISO 3166-1 alpha-3 (e.g. `ARG`).
	IssuingState string `json:"issuing_state"`

	// Detected document category. `UNKNOWN` means the document could not be
	// classified as an acceptable Proof of Address and auto-declines with
	// `INVALID_DOCUMENT_TYPE`. Never null - classification failures fall back to
	// `UNKNOWN`.
	DocumentType ProofOfAddressVerifyResponsePOADocumentType `json:"document_type"`

	// Finer-grained classification within `document_type` - e.g.
	// `ELECTRICITY_BILL`, `WATER_BILL`, `GAS_BILL`, `INTERNET_BILL`, `PHONE_BILL`
	// (utility bills); `ACCOUNT_STATEMENT`, `CREDIT_CARD_STATEMENT` (bank
	// statements); `TAX_ASSESSMENT`, `RESIDENCY_CERTIFICATE` (government
	// documents). `UNKNOWN` when no subtype could be determined. Never null -
	// classification failures fall back to `UNKNOWN`.
	DocumentSubtype string `json:"document_subtype"`

	// Detected document language (ISO 639-1).
	DocumentLanguage string `json:"document_language"`

	// Company or organization that issued the document. `null` adds
	// `ISSUER_NOT_IDENTIFIED`.
	Issuer string `json:"issuer"`

	// Document issue date (`YYYY-MM-DD`). `null` when it could not be extracted -
	// that declines with `UNABLE_TO_EXTRACT_ISSUE_DATE` on this endpoint.
	IssueDate string `json:"issue_date"`

	// Explicit expiry/validity date printed on the document, when present.
	// Independent of the `poa_document_age_months` age check.
	ExpirationDate string `json:"expiration_date"`

	// Address exactly as printed on the document. `null` auto-declines with
	// `MISSING_ADDRESS_INFORMATION`.
	POAAddress string `json:"poa_address"`

	// Geocoded, normalized version of `poa_address`.
	POAFormattedAddress string `json:"poa_formatted_address"`

	// Structured, geocoded breakdown of the document address. `null` when the
	// address could not be parsed.
	POAParsedAddress ProofOfAddressVerifyResponsePOAPOAParsedAddress `json:"poa_parsed_address"`

	// Echo of the `expected_address` you sent, or `null`.
	ExpectedDetailsAddress string `json:"expected_details_address"`

	// Geocoded, normalized version of `expected_address`; `null` when not provided
	// or not geocodable.
	ExpectedDetailsFormattedAddress string `json:"expected_details_formatted_address"`

	// Full geocoding result for `expected_address`
	// (street/city/region/country/postal code plus raw geocoder output and an
	// `is_verified` flag). `null` when `expected_address` was not provided.
	ExpectedDetailsParsedAddress map[string]any `json:"expected_details_parsed_address"`

	// Primary holder name extracted from the document; compared against
	// `expected_first_name`/`expected_last_name` when provided. `null` declines
	// with `POA_NAME_NOT_DETECTED` on this endpoint.
	NameOnDocument string `json:"name_on_document"`

	// Document-specific extras. Bank fields are populated for bank statements when
	// printed on the document; `null` otherwise.
	ExtraFields ProofOfAddressVerifyResponsePOAExtraFields `json:"extra_fields"`

	// Empty on a clean approval. Every entry explains one detected risk; entries
	// with `log_type: "error"` set `status` to `Declined`.
	Warnings []ProofOfAddressVerifyResponsePOAWarnings `json:"warnings"`

	// QR codes and barcodes detected across every processed page of the document.
	// Empty when none are found. A located but undecodable QR code has
	// `parsed_payload: null`.
	DetectedCodes []DocumentAiDetectedCode `json:"detected_codes"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ProofOfAddressVerifyResponsePOA is a response object.

func (*ProofOfAddressVerifyResponsePOA) UnmarshalJSON

func (r *ProofOfAddressVerifyResponsePOA) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ProofOfAddressVerifyResponsePOA leniently.

type ProofOfAddressVerifyResponsePOADocumentType

type ProofOfAddressVerifyResponsePOADocumentType string

ProofOfAddressVerifyResponsePOADocumentType: Detected document category. `UNKNOWN` means the document could not be classified as an acceptable Proof of Address and auto-declines with `INVALID_DOCUMENT_TYPE`. Never null - classification failures fall back to `UNKNOWN`.

ProofOfAddressVerifyResponsePOADocumentType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ProofOfAddressVerifyResponsePOADocumentTypeUtilityBill              ProofOfAddressVerifyResponsePOADocumentType = "UTILITY_BILL"
	ProofOfAddressVerifyResponsePOADocumentTypeBankStatement            ProofOfAddressVerifyResponsePOADocumentType = "BANK_STATEMENT"
	ProofOfAddressVerifyResponsePOADocumentTypeGovernmentIssuedDocument ProofOfAddressVerifyResponsePOADocumentType = "GOVERNMENT_ISSUED_DOCUMENT"
	ProofOfAddressVerifyResponsePOADocumentTypeOtherPOADocument         ProofOfAddressVerifyResponsePOADocumentType = "OTHER_POA_DOCUMENT"
	ProofOfAddressVerifyResponsePOADocumentTypeUnknown                  ProofOfAddressVerifyResponsePOADocumentType = "UNKNOWN"
)

Known values of ProofOfAddressVerifyResponsePOADocumentType.

type ProofOfAddressVerifyResponsePOAExtraFields

type ProofOfAddressVerifyResponsePOAExtraFields struct {
	BankAccountNumber string `json:"bank_account_number"`
	BankIBAN          string `json:"bank_iban"`
	BankSortCode      string `json:"bank_sort_code"`
	BankRoutingNumber string `json:"bank_routing_number"`
	BankSwiftBIC      string `json:"bank_swift_bic"`
	BankBranchName    string `json:"bank_branch_name"`
	BankBranchAddress string `json:"bank_branch_address"`

	// Contact phone number printed on the document.
	DocumentPhoneNumber string `json:"document_phone_number"`

	// Other holder names found on the document (e.g. co-account holders, previous
	// account names).
	AdditionalNames []string `json:"additional_names"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ProofOfAddressVerifyResponsePOAExtraFields: Document-specific extras. Bank fields are populated for bank statements when printed on the document; `null` otherwise.

func (*ProofOfAddressVerifyResponsePOAExtraFields) UnmarshalJSON

func (r *ProofOfAddressVerifyResponsePOAExtraFields) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ProofOfAddressVerifyResponsePOAExtraFields leniently.

type ProofOfAddressVerifyResponsePOAPOAParsedAddress

type ProofOfAddressVerifyResponsePOAPOAParsedAddress struct {
	Street1 string `json:"street_1"`
	Street2 string `json:"street_2"`
	City    string `json:"city"`
	Region  string `json:"region"`

	// ISO 3166-1 alpha-2 country code.
	Country    string `json:"country"`
	PostalCode string `json:"postal_code"`

	// Geocoded coordinates of the document address.
	DocumentLocation ProofOfAddressVerifyResponsePOAPOAParsedAddressDocumentLocation `json:"document_location"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ProofOfAddressVerifyResponsePOAPOAParsedAddress: Structured, geocoded breakdown of the document address. `null` when the address could not be parsed.

func (*ProofOfAddressVerifyResponsePOAPOAParsedAddress) UnmarshalJSON

UnmarshalJSON decodes ProofOfAddressVerifyResponsePOAPOAParsedAddress leniently.

type ProofOfAddressVerifyResponsePOAPOAParsedAddressDocumentLocation

type ProofOfAddressVerifyResponsePOAPOAParsedAddressDocumentLocation struct {
	Latitude  float64 `json:"latitude"`
	Longitude float64 `json:"longitude"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ProofOfAddressVerifyResponsePOAPOAParsedAddressDocumentLocation: Geocoded coordinates of the document address.

func (*ProofOfAddressVerifyResponsePOAPOAParsedAddressDocumentLocation) UnmarshalJSON

UnmarshalJSON decodes ProofOfAddressVerifyResponsePOAPOAParsedAddressDocumentLocation leniently.

type ProofOfAddressVerifyResponsePOAStatus

type ProofOfAddressVerifyResponsePOAStatus string

ProofOfAddressVerifyResponsePOAStatus: `Approved` when no warning resolves to a decline; `Declined` otherwise - the `warnings` list explains why.

ProofOfAddressVerifyResponsePOAStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ProofOfAddressVerifyResponsePOAStatusApproved ProofOfAddressVerifyResponsePOAStatus = "Approved"
	ProofOfAddressVerifyResponsePOAStatusDeclined ProofOfAddressVerifyResponsePOAStatus = "Declined"
)

Known values of ProofOfAddressVerifyResponsePOAStatus.

type ProofOfAddressVerifyResponsePOAWarnings

type ProofOfAddressVerifyResponsePOAWarnings struct {
	// Machine-readable risk code. Always-decline: `MISSING_ADDRESS_INFORMATION`,
	// `POA_DOCUMENT_EXPIRED`, `INVALID_DOCUMENT_TYPE`,
	// `UNABLE_TO_VALIDATE_DOCUMENT_AGE`, plus `UNABLE_TO_EXTRACT_ISSUE_DATE` and
	// `POA_NAME_NOT_DETECTED` (fixed to decline on this endpoint). Governed by
	// request options: `NAME_MISMATCH_WITH_PROVIDED` /
	// `ADDRESS_MISMATCH_WITH_PROVIDED` / `POA_COUNTRY_MISMATCH_WITH_PROVIDED`
	// (`poa_address_mismatch_action`), `POOR_DOCUMENT_QUALITY` (never produced by
	// this endpoint) / `DOCUMENT_METADATA_MISMATCH` (`poa_document_issues_action`),
	// `SUSPECTED_DOCUMENT_MANIPULATION` (`poa_document_authenticity_action`),
	// `UNSUPPORTED_DOCUMENT_LANGUAGE` (`poa_unsupported_language_action`),
	// `ISSUER_NOT_IDENTIFIED` (`poa_issuer_not_identified_action`). Informational
	// on this endpoint: `POA_DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION`,
	// `UNPARSABLE_OR_INVALID_ADDRESS`.
	Risk string `json:"risk"`

	// Feature that raised the warning. Always `PROOF_OF_ADDRESS` on this endpoint.
	Feature ProofOfAddressVerifyResponsePOAWarningsFeature `json:"feature"`

	// Extra context for some risks - e.g. `POA_DOCUMENT_EXPIRED` includes
	// `expiration_reason` (`printed_expiration` or `age_window`), `document_type`,
	// `document_subtype`, and `issue_date`, plus `expiration_date` on the
	// `printed_expiration` path or `max_age_months` on the `age_window` path;
	// `SUSPECTED_DOCUMENT_MANIPULATION` includes `reason` and `detection_method`.
	// `null` for most risks.
	AdditionalData map[string]any `json:"additional_data"`

	// Severity. `error` warnings drive `status` to `Declined`; `information`
	// entries are advisory and never decline on their own. (`warning` is not
	// produced by this endpoint - its options only accept `DECLINE` or
	// `NO_ACTION`.)
	LogType ProofOfAddressVerifyResponsePOAWarningsLogType `json:"log_type"`

	// Human-readable one-line summary of the risk.
	ShortDescription string `json:"short_description"`

	// Human-readable explanation of the risk.
	LongDescription string `json:"long_description"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ProofOfAddressVerifyResponsePOAWarnings is a response object.

func (*ProofOfAddressVerifyResponsePOAWarnings) UnmarshalJSON

func (r *ProofOfAddressVerifyResponsePOAWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ProofOfAddressVerifyResponsePOAWarnings leniently.

type ProofOfAddressVerifyResponsePOAWarningsFeature

type ProofOfAddressVerifyResponsePOAWarningsFeature string

ProofOfAddressVerifyResponsePOAWarningsFeature: Feature that raised the warning. Always `PROOF_OF_ADDRESS` on this endpoint.

ProofOfAddressVerifyResponsePOAWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ProofOfAddressVerifyResponsePOAWarningsFeatureProofOfAddress ProofOfAddressVerifyResponsePOAWarningsFeature = "PROOF_OF_ADDRESS"
)

Known values of ProofOfAddressVerifyResponsePOAWarningsFeature.

type ProofOfAddressVerifyResponsePOAWarningsLogType

type ProofOfAddressVerifyResponsePOAWarningsLogType string

ProofOfAddressVerifyResponsePOAWarningsLogType: Severity. `error` warnings drive `status` to `Declined`; `information` entries are advisory and never decline on their own. (`warning` is not produced by this endpoint - its options only accept `DECLINE` or `NO_ACTION`.)

ProofOfAddressVerifyResponsePOAWarningsLogType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ProofOfAddressVerifyResponsePOAWarningsLogTypeError       ProofOfAddressVerifyResponsePOAWarningsLogType = "error"
	ProofOfAddressVerifyResponsePOAWarningsLogTypeInformation ProofOfAddressVerifyResponsePOAWarningsLogType = "information"
)

Known values of ProofOfAddressVerifyResponsePOAWarningsLogType.

type QuestionnaireDetail

type QuestionnaireDetail struct {
	// Unique identifier of the questionnaire. Use this id when referencing the
	// questionnaire from a workflow or in subsequent update/delete requests.
	QuestionnaireID       string   `json:"questionnaire_id"`
	Title                 string   `json:"title"`
	Description           string   `json:"description"`
	Languages             []string `json:"languages"`
	DefaultLanguage       string   `json:"default_language"`
	IsActive              bool     `json:"is_active"`
	IsSimpleQuestionnaire bool     `json:"is_simple_questionnaire"`

	// Graph structure with start_node and nodes map.
	Graph map[string]any `json:"graph"`

	// Questionnaire content grouped into sections (derived from the graph).
	Sections []map[string]any `json:"sections"`

	// Stable identifier that groups all versions of the same questionnaire.
	QuestionnaireGroupID string                    `json:"questionnaire_group_id"`
	Version              int64                     `json:"version"`
	Status               QuestionnaireDetailStatus `json:"status"`
	PublishedAt          time.Time                 `json:"published_at"`

	// True when the questionnaire can still be edited in place (draft versions).
	IsEditable bool `json:"is_editable"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

QuestionnaireDetail: Full questionnaire detail returned from GET, POST (create) and PATCH (update) endpoints.

func (*QuestionnaireDetail) UnmarshalJSON

func (r *QuestionnaireDetail) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes QuestionnaireDetail leniently.

type QuestionnaireDetailStatus

type QuestionnaireDetailStatus string

QuestionnaireDetailStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	QuestionnaireDetailStatusDraft     QuestionnaireDetailStatus = "draft"
	QuestionnaireDetailStatusPublished QuestionnaireDetailStatus = "published"
)

Known values of QuestionnaireDetailStatus.

type QuestionnaireListItem

type QuestionnaireListItem struct {
	// Per-version UUID. Use as `{questionnaire_uuid}` for get/update/delete and as
	// `questionnaire_uuid` in a workflow's QUESTIONNAIRE feature config.
	UUID            string   `json:"uuid"`
	Title           string   `json:"title"`
	Description     string   `json:"description"`
	Languages       []string `json:"languages"`
	DefaultLanguage string   `json:"default_language"`
	IsActive        bool     `json:"is_active"`

	// True for linear questionnaires created through this API; false for
	// graph-based questionnaires built in the Console.
	IsSimpleQuestionnaire bool      `json:"is_simple_questionnaire"`
	CreatedAt             time.Time `json:"created_at"`
	UpdatedAt             time.Time `json:"updated_at"`

	// Uppercase element types of the answerable questions, in creation order (e.g.
	// `SHORT_TEXT`, `MULTIPLE_CHOICE`, `FILE_UPLOAD`). Structural `SECTION_HEADER`
	// and `SEPARATOR` elements are excluded. One entry per question, so values can
	// repeat.
	QuestionTypes []string `json:"question_types"`

	// Names of workflows using this questionnaire. Currently always `[]` on this
	// endpoint (populated only in the Console listing).
	WorkflowNames []string `json:"workflow_names"`

	// Stable identifier that groups all versions of the same questionnaire.
	QuestionnaireGroupID string `json:"questionnaire_group_id"`

	// Version number within the group, starting at 1.
	Version int64                       `json:"version"`
	Status  QuestionnaireListItemStatus `json:"status"`

	// When this version was published. `null` for drafts.
	PublishedAt time.Time `json:"published_at"`

	// True when this version is a `draft`.
	IsEditable bool `json:"is_editable"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

QuestionnaireListItem: One questionnaire version in the list view.

func (*QuestionnaireListItem) UnmarshalJSON

func (r *QuestionnaireListItem) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes QuestionnaireListItem leniently.

type QuestionnaireListItemStatus

type QuestionnaireListItemStatus string

QuestionnaireListItemStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	QuestionnaireListItemStatusDraft     QuestionnaireListItemStatus = "draft"
	QuestionnaireListItemStatusPublished QuestionnaireListItemStatus = "published"
)

Known values of QuestionnaireListItemStatus.

type QuestionnairesListParams

type QuestionnairesListParams struct {
	// Page size (number of questionnaires per page).
	Limit Opt[int64] `json:"-" query:"limit"`

	// Number of rows to skip before the first returned questionnaire.
	Offset Opt[int64] `json:"-" query:"offset"`
}

QuestionnairesListParams holds the parameters of Client.Questionnaires.List.

func (QuestionnairesListParams) MarshalJSON

func (r QuestionnairesListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type QuestionnairesService

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

QuestionnairesService holds the questionnaires operations. Use it through Client.Questionnaires.

func (*QuestionnairesService) Create

Create: Create questionnaire.

Create a simple linear questionnaire. Send `form_elements` in display order; branching and repeatable groups require the Console. Defaults to `published` v1.

POST /v3/questionnaires/

func (*QuestionnairesService) Delete

func (r *QuestionnairesService) Delete(ctx context.Context, questionnaireUUID string, opts ...option.RequestOption) error

Delete: Delete questionnaire.

Permanently delete one questionnaire version (no undo). Stored questionnaire responses linked to this version are deleted with it, and sessions referencing it lose the link; other versions in the same group are not deleted. Workflows that referenced it keep running but the questionnaire step can no longer load it.

DELETE /v3/questionnaires/{questionnaire_uuid}/

func (*QuestionnairesService) List

List: List questionnaires.

List your questionnaires, newest first, in a limit/offset pagination envelope (`{count, next, previous, results}`, default page size 50). Each row is one version; `questionnaire_group_id` is the stable group ID resolved to the latest `published` version.

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/questionnaires/

func (*QuestionnairesService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*QuestionnairesService) Retrieve

func (r *QuestionnairesService) Retrieve(ctx context.Context, questionnaireUUID string, opts ...option.RequestOption) (*QuestionnaireDetail, error)

Retrieve: Get questionnaire.

Fetch full questionnaire detail for one version by `questionnaire_uuid`: title, `languages`, canonical `graph`, derived `sections`, and version metadata.

GET /v3/questionnaires/{questionnaire_uuid}/

func (*QuestionnairesService) Update

Update: Update questionnaire.

Update a questionnaire. Versioning depends on the `status` field you send and the current state of the version: (1) no `status` on a **published** version → the published version is updated in place (same `questionnaire_id`, same `version`); (2) no `status` on a **draft** → the draft is updated and immediately published; (3) `status: "published"` on a **published** version → a NEW published version is created under the same `questionnaire_group_id` (new `questionnaire_id`, `version` + 1) and returned, and any existing draft in the group is deleted; (4) `status: "draft"` keeps a draft as a draft (autosave) but is rejected with 400 on a published version (`"Cannot revert a published version to draft."`).

PATCH /v3/questionnaires/{questionnaire_uuid}/

type RateLimitError

type RateLimitError struct{ *APIStatusError }

RateLimitError is an *APIStatusError with status 429.

func (*RateLimitError) Unwrap

func (e *RateLimitError) Unwrap() error

type RegisterRequest

type RegisterRequest struct {
	// Any valid email address (personal, work, alias). Used as the unique account
	// identifier. Required.
	Email string `json:"email"`

	// Minimum 8 characters. Must contain at least one uppercase letter (`A-Z`), one
	// lowercase letter (`a-z`), one digit (`0-9`), and one special character from
	// `!@#$%^&*()_+-=[]{}|;:,.<>?`. Validation reports one failed rule at a time.
	// Required.
	Password string `json:"password"`
}

RegisterRequest is a request object.

func (RegisterRequest) MarshalJSON

func (r RegisterRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type RegisterResponse

type RegisterResponse struct {
	// Human-readable confirmation that the verification code was sent.
	Message string `json:"message"`

	// The email the verification code was sent to.
	Email string `json:"email"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

RegisterResponse is a response object.

func (*RegisterResponse) UnmarshalJSON

func (r *RegisterResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes RegisterResponse leniently.

type RegulatoryReportDetail

type RegulatoryReportDetail struct {
	UUID              string                           `json:"uuid"`
	CaseUUID          string                           `json:"case_uuid"`
	CaseNumber        string                           `json:"case_number"`
	ReportType        RegulatoryReportDetailReportType `json:"report_type"`
	ReportTypeDisplay string                           `json:"report_type_display"`

	// goAML report code derived from report_type, e.g. STR, CTR, BCR.
	ReportCode    string                       `json:"report_code"`
	ReportNumber  string                       `json:"report_number"`
	Status        RegulatoryReportDetailStatus `json:"status"`
	StatusDisplay string                       `json:"status_display"`
	Jurisdiction  string                       `json:"jurisdiction"`

	// Reporting entity ID issued by the FIU.
	RentityID         string                               `json:"rentity_id"`
	RentityBranch     string                               `json:"rentity_branch"`
	SubmissionCode    RegulatoryReportDetailSubmissionCode `json:"submission_code"`
	EntityReference   string                               `json:"entity_reference"`
	FiuRefNumber      string                               `json:"fiu_ref_number"`
	CurrencyCodeLocal string                               `json:"currency_code_local"`
	SubmissionDate    time.Time                            `json:"submission_date"`
	ReportingPerson   map[string]any                       `json:"reporting_person"`
	Location          map[string]any                       `json:"location"`
	Reason            string                               `json:"reason"`
	Action            string                               `json:"action"`
	Activity          string                               `json:"activity"`

	// Five Ws narrative sections.
	Narrative        RegulatoryReportDetailNarrative `json:"narrative"`
	ReportIndicators []string                        `json:"report_indicators"`
	IncludedFields   []string                        `json:"included_fields"`
	Transactions     []string                        `json:"transactions"`

	// Result of the most recent validation; each entry is a {field, message}
	// object.
	ValidationErrors []RegulatoryReportDetailValidationErrors `json:"validation_errors"`
	ValidatedAt      time.Time                                `json:"validated_at"`
	FinalizedAt      time.Time                                `json:"finalized_at"`
	CreatedByEmail   string                                   `json:"created_by_email"`
	CreatedByName    string                                   `json:"created_by_name"`
	CreatedAt        time.Time                                `json:"created_at"`
	UpdatedAt        time.Time                                `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

RegulatoryReportDetail is a response object.

func (*RegulatoryReportDetail) UnmarshalJSON

func (r *RegulatoryReportDetail) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes RegulatoryReportDetail leniently.

type RegulatoryReportDetailNarrative

type RegulatoryReportDetailNarrative struct {
	Who   string `json:"who"`
	What  string `json:"what"`
	When  string `json:"when"`
	Where string `json:"where"`
	Why   string `json:"why"`
	How   string `json:"how"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

RegulatoryReportDetailNarrative: Five Ws narrative sections.

func (*RegulatoryReportDetailNarrative) UnmarshalJSON

func (r *RegulatoryReportDetailNarrative) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes RegulatoryReportDetailNarrative leniently.

type RegulatoryReportDetailReportType

type RegulatoryReportDetailReportType string

RegulatoryReportDetailReportType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	RegulatoryReportDetailReportTypeSar RegulatoryReportDetailReportType = "SAR"
	RegulatoryReportDetailReportTypeStr RegulatoryReportDetailReportType = "STR"
	RegulatoryReportDetailReportTypeCtr RegulatoryReportDetailReportType = "CTR"
	RegulatoryReportDetailReportTypeTtr RegulatoryReportDetailReportType = "TTR"
	RegulatoryReportDetailReportTypeUtr RegulatoryReportDetailReportType = "UTR"
	RegulatoryReportDetailReportTypeIft RegulatoryReportDetailReportType = "IFT"
	RegulatoryReportDetailReportTypeCbr RegulatoryReportDetailReportType = "CBR"
	RegulatoryReportDetailReportTypeTfr RegulatoryReportDetailReportType = "TFR"
)

Known values of RegulatoryReportDetailReportType.

type RegulatoryReportDetailStatus

type RegulatoryReportDetailStatus string

RegulatoryReportDetailStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	RegulatoryReportDetailStatusDraft     RegulatoryReportDetailStatus = "DRAFT"
	RegulatoryReportDetailStatusValidated RegulatoryReportDetailStatus = "VALIDATED"
	RegulatoryReportDetailStatusFinalized RegulatoryReportDetailStatus = "FINALIZED"
)

Known values of RegulatoryReportDetailStatus.

type RegulatoryReportDetailSubmissionCode

type RegulatoryReportDetailSubmissionCode string

RegulatoryReportDetailSubmissionCode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	RegulatoryReportDetailSubmissionCodeE RegulatoryReportDetailSubmissionCode = "E"
	RegulatoryReportDetailSubmissionCodeM RegulatoryReportDetailSubmissionCode = "M"
)

Known values of RegulatoryReportDetailSubmissionCode.

type RegulatoryReportDetailValidationErrors

type RegulatoryReportDetailValidationErrors struct {
	Field   string `json:"field"`
	Message string `json:"message"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

RegulatoryReportDetailValidationErrors is a response object.

func (*RegulatoryReportDetailValidationErrors) UnmarshalJSON

func (r *RegulatoryReportDetailValidationErrors) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes RegulatoryReportDetailValidationErrors leniently.

type RegulatoryReportsCreateParams

type RegulatoryReportsCreateParams struct {
	// Required.
	Case string `json:"case"`

	// Required.
	Template string `json:"template"`

	// Required unless a template is given; the template's report_type is used
	// otherwise.
	ReportType Opt[RegulatoryReportsCreateParamsReportType] `json:"report_type"`

	// Required unless a template is given.
	Jurisdiction Opt[string] `json:"jurisdiction"`

	// Transactions to attach; defaults to the case's linked transactions.
	Transactions      Opt[[]string]                                    `json:"transactions"`
	RentityID         Opt[string]                                      `json:"rentity_id"`
	RentityBranch     Opt[string]                                      `json:"rentity_branch"`
	SubmissionCode    Opt[RegulatoryReportsCreateParamsSubmissionCode] `json:"submission_code"`
	EntityReference   Opt[string]                                      `json:"entity_reference"`
	FiuRefNumber      Opt[string]                                      `json:"fiu_ref_number"`
	CurrencyCodeLocal Opt[string]                                      `json:"currency_code_local"`
	SubmissionDate    Opt[time.Time]                                   `json:"submission_date"`
	ReportingPerson   Opt[map[string]any]                              `json:"reporting_person"`
	Location          Opt[map[string]any]                              `json:"location"`
	Reason            Opt[string]                                      `json:"reason"`
	Action            Opt[string]                                      `json:"action"`
	Activity          Opt[string]                                      `json:"activity"`
	Narrative         Opt[RegulatoryReportsCreateParamsNarrative]      `json:"narrative"`
	ReportIndicators  Opt[[]string]                                    `json:"report_indicators"`
	IncludedFields    Opt[[]string]                                    `json:"included_fields"`
}

RegulatoryReportsCreateParams holds the parameters of Client.RegulatoryReports.Create.

func (RegulatoryReportsCreateParams) MarshalJSON

func (r RegulatoryReportsCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type RegulatoryReportsCreateParamsNarrative

type RegulatoryReportsCreateParamsNarrative struct {
	Who   Opt[string] `json:"who"`
	What  Opt[string] `json:"what"`
	When  Opt[string] `json:"when"`
	Where Opt[string] `json:"where"`
	Why   Opt[string] `json:"why"`
	How   Opt[string] `json:"how"`
}

RegulatoryReportsCreateParamsNarrative is a request object.

func (RegulatoryReportsCreateParamsNarrative) MarshalJSON

func (r RegulatoryReportsCreateParamsNarrative) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type RegulatoryReportsCreateParamsReportType

type RegulatoryReportsCreateParamsReportType string

RegulatoryReportsCreateParamsReportType: Required unless a template is given; the template's report_type is used otherwise.

RegulatoryReportsCreateParamsReportType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	RegulatoryReportsCreateParamsReportTypeSar RegulatoryReportsCreateParamsReportType = "SAR"
	RegulatoryReportsCreateParamsReportTypeStr RegulatoryReportsCreateParamsReportType = "STR"
	RegulatoryReportsCreateParamsReportTypeCtr RegulatoryReportsCreateParamsReportType = "CTR"
	RegulatoryReportsCreateParamsReportTypeTtr RegulatoryReportsCreateParamsReportType = "TTR"
	RegulatoryReportsCreateParamsReportTypeUtr RegulatoryReportsCreateParamsReportType = "UTR"
	RegulatoryReportsCreateParamsReportTypeIft RegulatoryReportsCreateParamsReportType = "IFT"
	RegulatoryReportsCreateParamsReportTypeCbr RegulatoryReportsCreateParamsReportType = "CBR"
	RegulatoryReportsCreateParamsReportTypeTfr RegulatoryReportsCreateParamsReportType = "TFR"
)

Known values of RegulatoryReportsCreateParamsReportType.

type RegulatoryReportsCreateParamsSubmissionCode

type RegulatoryReportsCreateParamsSubmissionCode string

RegulatoryReportsCreateParamsSubmissionCode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	RegulatoryReportsCreateParamsSubmissionCodeE RegulatoryReportsCreateParamsSubmissionCode = "E"
	RegulatoryReportsCreateParamsSubmissionCodeM RegulatoryReportsCreateParamsSubmissionCode = "M"
)

Known values of RegulatoryReportsCreateParamsSubmissionCode.

type RegulatoryReportsListParams

type RegulatoryReportsListParams struct {
	// Page size.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based offset.
	Offset Opt[int64] `json:"-" query:"offset"`

	// Filter by status.
	Status Opt[RegulatoryReportsListParamsStatus] `json:"-" query:"status"`

	// Filter by report type.
	ReportType Opt[RegulatoryReportsListParamsReportType] `json:"-" query:"report_type"`

	// Filter to reports on this case.
	Case Opt[string] `json:"-" query:"case"`
}

RegulatoryReportsListParams holds the parameters of Client.RegulatoryReports.List.

func (RegulatoryReportsListParams) MarshalJSON

func (r RegulatoryReportsListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type RegulatoryReportsListParamsReportType

type RegulatoryReportsListParamsReportType string

RegulatoryReportsListParamsReportType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	RegulatoryReportsListParamsReportTypeSar RegulatoryReportsListParamsReportType = "SAR"
	RegulatoryReportsListParamsReportTypeStr RegulatoryReportsListParamsReportType = "STR"
	RegulatoryReportsListParamsReportTypeCtr RegulatoryReportsListParamsReportType = "CTR"
	RegulatoryReportsListParamsReportTypeTtr RegulatoryReportsListParamsReportType = "TTR"
	RegulatoryReportsListParamsReportTypeUtr RegulatoryReportsListParamsReportType = "UTR"
	RegulatoryReportsListParamsReportTypeIft RegulatoryReportsListParamsReportType = "IFT"
	RegulatoryReportsListParamsReportTypeCbr RegulatoryReportsListParamsReportType = "CBR"
	RegulatoryReportsListParamsReportTypeTfr RegulatoryReportsListParamsReportType = "TFR"
)

Known values of RegulatoryReportsListParamsReportType.

type RegulatoryReportsListParamsStatus

type RegulatoryReportsListParamsStatus string

RegulatoryReportsListParamsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	RegulatoryReportsListParamsStatusDraft     RegulatoryReportsListParamsStatus = "DRAFT"
	RegulatoryReportsListParamsStatusValidated RegulatoryReportsListParamsStatus = "VALIDATED"
	RegulatoryReportsListParamsStatusFinalized RegulatoryReportsListParamsStatus = "FINALIZED"
)

Known values of RegulatoryReportsListParamsStatus.

type RegulatoryReportsRetrieveDownloadURLParams

type RegulatoryReportsRetrieveDownloadURLParams struct {
	// Which file to download.
	File Opt[RegulatoryReportsRetrieveDownloadURLParamsFile] `json:"-" query:"file"`
}

RegulatoryReportsRetrieveDownloadURLParams holds the parameters of Client.RegulatoryReports.RetrieveDownloadURL.

func (RegulatoryReportsRetrieveDownloadURLParams) MarshalJSON

MarshalJSON encodes the fields that are set.

type RegulatoryReportsRetrieveDownloadURLParamsFile

type RegulatoryReportsRetrieveDownloadURLParamsFile string

RegulatoryReportsRetrieveDownloadURLParamsFile is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	RegulatoryReportsRetrieveDownloadURLParamsFilePDF RegulatoryReportsRetrieveDownloadURLParamsFile = "pdf"
	RegulatoryReportsRetrieveDownloadURLParamsFileXML RegulatoryReportsRetrieveDownloadURLParamsFile = "xml"
)

Known values of RegulatoryReportsRetrieveDownloadURLParamsFile.

type RegulatoryReportsRetrieveDownloadURLResponse

type RegulatoryReportsRetrieveDownloadURLResponse struct {
	DownloadURL string                                           `json:"download_url"`
	File        RegulatoryReportsRetrieveDownloadURLResponseFile `json:"file"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

RegulatoryReportsRetrieveDownloadURLResponse is a response object.

func (*RegulatoryReportsRetrieveDownloadURLResponse) UnmarshalJSON

func (r *RegulatoryReportsRetrieveDownloadURLResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes RegulatoryReportsRetrieveDownloadURLResponse leniently.

type RegulatoryReportsRetrieveDownloadURLResponseFile

type RegulatoryReportsRetrieveDownloadURLResponseFile string

RegulatoryReportsRetrieveDownloadURLResponseFile is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	RegulatoryReportsRetrieveDownloadURLResponseFilePDF RegulatoryReportsRetrieveDownloadURLResponseFile = "pdf"
	RegulatoryReportsRetrieveDownloadURLResponseFileXML RegulatoryReportsRetrieveDownloadURLResponseFile = "xml"
)

Known values of RegulatoryReportsRetrieveDownloadURLResponseFile.

type RegulatoryReportsService

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

RegulatoryReportsService holds the regulatory_reports operations. Use it through Client.RegulatoryReports.

func (*RegulatoryReportsService) Create

Create: Create standalone report.

Create a draft FIU report from the standalone Reports page: both case and template are required (unlike the case-scoped create, which can omit template).

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/regulatory-reports/

func (*RegulatoryReportsService) Delete

func (r *RegulatoryReportsService) Delete(ctx context.Context, reportUUID string, opts ...option.RequestOption) error

Delete: Delete report.

Delete a draft or validated report. Finalized reports cannot be deleted (409).

The organization and application ids come from the client options.

DELETE /v3/organization/{organization_id}/application/{application_id}/regulatory-reports/{report_uuid}/

func (*RegulatoryReportsService) Finalize

Finalize: Finalize report.

Re-validate, then render the goAML XML and PDF and upload both to S3. On SAR/STR/TFR reports, this also moves the case's transaction alerts from Pending SAR to SAR filed.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/regulatory-reports/{report_uuid}/finalize/

func (*RegulatoryReportsService) List

List: List reports.

Application-wide FIU report list, optionally filtered by status, report_type, or case.

It returns one page; ListAutoPaging iterates over every item of every page.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/regulatory-reports/

func (*RegulatoryReportsService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*RegulatoryReportsService) Retrieve

Retrieve: Get report.

Retrieve a regulatory report.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/regulatory-reports/{report_uuid}/

func (*RegulatoryReportsService) RetrieveDownloadURL

RetrieveDownloadURL: Get report download URL.

Mint a presigned URL for a finalized report's goAML XML or PDF.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/regulatory-reports/{report_uuid}/download-url/

func (*RegulatoryReportsService) Update

Update: Update report.

Edit a draft or validated report's fields. Finalized reports cannot be edited (409).

The organization and application ids come from the client options.

PATCH /v3/organization/{organization_id}/application/{application_id}/regulatory-reports/{report_uuid}/

func (*RegulatoryReportsService) Validate

Validate: Validate report.

Check the report against the obligatory goAML header fields (reporting entity ID, submission code, local currency, action taken, submission date), plus at least one attached transaction and a 2-letter jurisdiction, without generating any files. Also stores the result on the report: validation_errors and validated_at are updated, and a non-finalized report's status moves to VALIDATED (no errors) or back to DRAFT (errors).

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/regulatory-reports/{report_uuid}/validate/

type RegulatoryReportsUpdateParams

type RegulatoryReportsUpdateParams struct {
	Jurisdiction      Opt[string]                                      `json:"jurisdiction"`
	RentityID         Opt[string]                                      `json:"rentity_id"`
	RentityBranch     Opt[string]                                      `json:"rentity_branch"`
	SubmissionCode    Opt[RegulatoryReportsUpdateParamsSubmissionCode] `json:"submission_code"`
	EntityReference   Opt[string]                                      `json:"entity_reference"`
	FiuRefNumber      Opt[string]                                      `json:"fiu_ref_number"`
	CurrencyCodeLocal Opt[string]                                      `json:"currency_code_local"`
	SubmissionDate    Opt[time.Time]                                   `json:"submission_date"`
	ReportingPerson   Opt[map[string]any]                              `json:"reporting_person"`
	Location          Opt[map[string]any]                              `json:"location"`
	Reason            Opt[string]                                      `json:"reason"`
	Action            Opt[string]                                      `json:"action"`
	Activity          Opt[string]                                      `json:"activity"`
	Narrative         Opt[RegulatoryReportsUpdateParamsNarrative]      `json:"narrative"`
	ReportIndicators  Opt[[]string]                                    `json:"report_indicators"`
	IncludedFields    Opt[[]string]                                    `json:"included_fields"`
}

RegulatoryReportsUpdateParams holds the parameters of Client.RegulatoryReports.Update.

func (RegulatoryReportsUpdateParams) MarshalJSON

func (r RegulatoryReportsUpdateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type RegulatoryReportsUpdateParamsNarrative

type RegulatoryReportsUpdateParamsNarrative struct {
	Who   Opt[string] `json:"who"`
	What  Opt[string] `json:"what"`
	When  Opt[string] `json:"when"`
	Where Opt[string] `json:"where"`
	Why   Opt[string] `json:"why"`
	How   Opt[string] `json:"how"`
}

RegulatoryReportsUpdateParamsNarrative is a request object.

func (RegulatoryReportsUpdateParamsNarrative) MarshalJSON

func (r RegulatoryReportsUpdateParamsNarrative) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type RegulatoryReportsUpdateParamsSubmissionCode

type RegulatoryReportsUpdateParamsSubmissionCode string

RegulatoryReportsUpdateParamsSubmissionCode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	RegulatoryReportsUpdateParamsSubmissionCodeE RegulatoryReportsUpdateParamsSubmissionCode = "E"
	RegulatoryReportsUpdateParamsSubmissionCodeM RegulatoryReportsUpdateParamsSubmissionCode = "M"
)

Known values of RegulatoryReportsUpdateParamsSubmissionCode.

type RegulatoryReportsValidateResponse

type RegulatoryReportsValidateResponse struct {
	Status  RegulatoryReportsValidateResponseStatus `json:"status"`
	IsValid bool                                    `json:"is_valid"`

	// Empty when valid.
	Errors []RegulatoryReportsValidateResponseErrors `json:"errors"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

RegulatoryReportsValidateResponse is a response object.

func (*RegulatoryReportsValidateResponse) UnmarshalJSON

func (r *RegulatoryReportsValidateResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes RegulatoryReportsValidateResponse leniently.

type RegulatoryReportsValidateResponseErrors

type RegulatoryReportsValidateResponseErrors struct {
	Field   string `json:"field"`
	Message string `json:"message"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

RegulatoryReportsValidateResponseErrors is a response object.

func (*RegulatoryReportsValidateResponseErrors) UnmarshalJSON

func (r *RegulatoryReportsValidateResponseErrors) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes RegulatoryReportsValidateResponseErrors leniently.

type RegulatoryReportsValidateResponseStatus

type RegulatoryReportsValidateResponseStatus string

RegulatoryReportsValidateResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	RegulatoryReportsValidateResponseStatusDraft     RegulatoryReportsValidateResponseStatus = "DRAFT"
	RegulatoryReportsValidateResponseStatusValidated RegulatoryReportsValidateResponseStatus = "VALIDATED"
	RegulatoryReportsValidateResponseStatusFinalized RegulatoryReportsValidateResponseStatus = "FINALIZED"
)

Known values of RegulatoryReportsValidateResponseStatus.

type ReportTemplateDetail

type ReportTemplateDetail struct {
	UUID string `json:"uuid"`
	Name string `json:"name"`

	// ISO 3166-1 alpha-2 country code.
	Jurisdiction      string                         `json:"jurisdiction"`
	ReportType        ReportTemplateDetailReportType `json:"report_type"`
	ReportTypeDisplay string                         `json:"report_type_display"`

	// Reusable goAML header defaults. Template-level obligatory fields: rentity_id,
	// submission_code, and currency_code_local (3-letter). Optional: enabled_fields
	// (which optional report blocks to include) plus reporting_person, location,
	// reason, and action defaults. Per-filing header fields (action,
	// submission_date, transactions, jurisdiction) are enforced when the report is
	// validated or finalized, not on the template.
	FieldConfig map[string]any `json:"field_config"`
	CreatedAt   time.Time      `json:"created_at"`
	UpdatedAt   time.Time      `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ReportTemplateDetail is a response object.

func (*ReportTemplateDetail) UnmarshalJSON

func (r *ReportTemplateDetail) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ReportTemplateDetail leniently.

type ReportTemplateDetailReportType

type ReportTemplateDetailReportType string

ReportTemplateDetailReportType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ReportTemplateDetailReportTypeSar ReportTemplateDetailReportType = "SAR"
	ReportTemplateDetailReportTypeStr ReportTemplateDetailReportType = "STR"
	ReportTemplateDetailReportTypeCtr ReportTemplateDetailReportType = "CTR"
	ReportTemplateDetailReportTypeTtr ReportTemplateDetailReportType = "TTR"
	ReportTemplateDetailReportTypeUtr ReportTemplateDetailReportType = "UTR"
	ReportTemplateDetailReportTypeIft ReportTemplateDetailReportType = "IFT"
	ReportTemplateDetailReportTypeCbr ReportTemplateDetailReportType = "CBR"
	ReportTemplateDetailReportTypeTfr ReportTemplateDetailReportType = "TFR"
)

Known values of ReportTemplateDetailReportType.

type ReportTemplatesCreateParams

type ReportTemplatesCreateParams struct {
	// Required.
	Name string `json:"name"`

	// ISO 3166-1 alpha-2 country code, upper-cased on save. Required.
	Jurisdiction string `json:"jurisdiction"`

	// Required.
	ReportType ReportTemplatesCreateParamsReportType `json:"report_type"`

	// Reusable goAML header defaults. Template-level obligatory fields: rentity_id,
	// submission_code, and currency_code_local (3-letter). Optional: enabled_fields
	// (which optional report blocks to include) plus reporting_person, location,
	// reason, and action defaults. Per-filing header fields (action,
	// submission_date, transactions, jurisdiction) are enforced when the report is
	// validated or finalized, not on the template.
	FieldConfig Opt[map[string]any] `json:"field_config"`
}

ReportTemplatesCreateParams holds the parameters of Client.ReportTemplates.Create.

func (ReportTemplatesCreateParams) MarshalJSON

func (r ReportTemplatesCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type ReportTemplatesCreateParamsReportType

type ReportTemplatesCreateParamsReportType string

ReportTemplatesCreateParamsReportType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ReportTemplatesCreateParamsReportTypeSar ReportTemplatesCreateParamsReportType = "SAR"
	ReportTemplatesCreateParamsReportTypeStr ReportTemplatesCreateParamsReportType = "STR"
	ReportTemplatesCreateParamsReportTypeCtr ReportTemplatesCreateParamsReportType = "CTR"
	ReportTemplatesCreateParamsReportTypeTtr ReportTemplatesCreateParamsReportType = "TTR"
	ReportTemplatesCreateParamsReportTypeUtr ReportTemplatesCreateParamsReportType = "UTR"
	ReportTemplatesCreateParamsReportTypeIft ReportTemplatesCreateParamsReportType = "IFT"
	ReportTemplatesCreateParamsReportTypeCbr ReportTemplatesCreateParamsReportType = "CBR"
	ReportTemplatesCreateParamsReportTypeTfr ReportTemplatesCreateParamsReportType = "TFR"
)

Known values of ReportTemplatesCreateParamsReportType.

type ReportTemplatesListParams

type ReportTemplatesListParams struct {
	// Page size.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based offset.
	Offset Opt[int64] `json:"-" query:"offset"`
}

ReportTemplatesListParams holds the parameters of Client.ReportTemplates.List.

func (ReportTemplatesListParams) MarshalJSON

func (r ReportTemplatesListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type ReportTemplatesService

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

ReportTemplatesService holds the report_templates operations. Use it through Client.ReportTemplates.

func (*ReportTemplatesService) Create

Create: Create report template.

Create a reusable per-jurisdiction, per-report-type goAML header template. Rejected with 400 if any of the template-level obligatory fields (rentity_id, submission_code, currency_code_local) is missing from field_config; an invalid template cannot be saved or used to create a report. Per-filing header fields (action, submission_date, transactions) are enforced at report validate/finalize time instead.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/report-templates/

func (*ReportTemplatesService) Delete

func (r *ReportTemplatesService) Delete(ctx context.Context, templateUUID string, opts ...option.RequestOption) error

Delete: Delete report template.

Delete a report template. Reports already created from it are unaffected.

The organization and application ids come from the client options.

DELETE /v3/organization/{organization_id}/application/{application_id}/report-templates/{template_uuid}/

func (*ReportTemplatesService) List

List: List report templates.

List FIU report templates for the application.

It returns one page; ListAutoPaging iterates over every item of every page.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/report-templates/

func (*ReportTemplatesService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*ReportTemplatesService) Retrieve

func (r *ReportTemplatesService) Retrieve(ctx context.Context, templateUUID string, opts ...option.RequestOption) (*ReportTemplateDetail, error)

Retrieve: Get report template.

Retrieve a report template.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/report-templates/{template_uuid}/

func (*ReportTemplatesService) Update

Update: Update report template.

Partially update a report template. Re-validates obligatory goAML fields on save.

The organization and application ids come from the client options.

PATCH /v3/organization/{organization_id}/application/{application_id}/report-templates/{template_uuid}/

type ReportTemplatesUpdateParams

type ReportTemplatesUpdateParams struct {
	Name Opt[string] `json:"name"`

	// ISO 3166-1 alpha-2 country code, upper-cased on save.
	Jurisdiction Opt[string]                                `json:"jurisdiction"`
	ReportType   Opt[ReportTemplatesUpdateParamsReportType] `json:"report_type"`

	// Reusable goAML header defaults. Template-level obligatory fields: rentity_id,
	// submission_code, and currency_code_local (3-letter). Optional: enabled_fields
	// (which optional report blocks to include) plus reporting_person, location,
	// reason, and action defaults. Per-filing header fields (action,
	// submission_date, transactions, jurisdiction) are enforced when the report is
	// validated or finalized, not on the template.
	FieldConfig Opt[map[string]any] `json:"field_config"`
}

ReportTemplatesUpdateParams holds the parameters of Client.ReportTemplates.Update.

func (ReportTemplatesUpdateParams) MarshalJSON

func (r ReportTemplatesUpdateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type ReportTemplatesUpdateParamsReportType

type ReportTemplatesUpdateParamsReportType string

ReportTemplatesUpdateParamsReportType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ReportTemplatesUpdateParamsReportTypeSar ReportTemplatesUpdateParamsReportType = "SAR"
	ReportTemplatesUpdateParamsReportTypeStr ReportTemplatesUpdateParamsReportType = "STR"
	ReportTemplatesUpdateParamsReportTypeCtr ReportTemplatesUpdateParamsReportType = "CTR"
	ReportTemplatesUpdateParamsReportTypeTtr ReportTemplatesUpdateParamsReportType = "TTR"
	ReportTemplatesUpdateParamsReportTypeUtr ReportTemplatesUpdateParamsReportType = "UTR"
	ReportTemplatesUpdateParamsReportTypeIft ReportTemplatesUpdateParamsReportType = "IFT"
	ReportTemplatesUpdateParamsReportTypeCbr ReportTemplatesUpdateParamsReportType = "CBR"
	ReportTemplatesUpdateParamsReportTypeTfr ReportTemplatesUpdateParamsReportType = "TFR"
)

Known values of ReportTemplatesUpdateParamsReportType.

type ResponseJSON

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

ResponseJSON describes the JSON object a response type was decoded from. Every generated response type has one in its JSON field:

decision.JSON.Raw()                // the object as received
decision.JSON.Present("metadata")  // the key was sent (maybe as null)
decision.JSON.Null("metadata")     // the key was sent as null
decision.JSON.ExtraFields()        // keys this SDK version does not know

Decoding is lenient: a value that does not fit its Go field leaves the field at its zero value and Invalid reports it; the value stays readable through Field.

func (ResponseJSON) ExtraFields

func (j ResponseJSON) ExtraFields() map[string]json.RawMessage

ExtraFields returns the keys of the object that this SDK version does not know, with their raw values. Newer API fields appear here until the SDK is updated.

func (ResponseJSON) Field

func (j ResponseJSON) Field(key string) (json.RawMessage, bool)

Field returns the raw JSON value of any key, known or unknown.

func (ResponseJSON) Invalid

func (j ResponseJSON) Invalid(key string) bool

Invalid reports whether the key's value did not fit the Go field, which then holds its zero value.

func (ResponseJSON) Null

func (j ResponseJSON) Null(key string) bool

Null reports whether the object had the key with a null value.

func (ResponseJSON) Present

func (j ResponseJSON) Present(key string) bool

Present reports whether the object had the key, even with a null value. It covers known and unknown keys.

func (ResponseJSON) Raw

func (j ResponseJSON) Raw() string

Raw returns the JSON object as received.

type ReviewItem

type ReviewItem struct {
	// Unique identifier of this feed entry.
	UUID string `json:"uuid"`

	// What kind of activity this entry records. `STATUS_UPDATED` rows come from
	// manual decisions (`PATCH /v3/session/{session_id}/update-status/`) and from
	// entries added via `POST …/reviews/` (which default to this type even when no
	// status is recorded). `COMMENT` rows come from Console reviewers; Console
	// detail-page views are also stored as `COMMENT` rows flagged with
	// `metadata.system_event = "DETAIL_VIEWED"`. The remaining types track data
	// edits, file changes, tags, and AML monitoring activity. STATUS_UPDATED rows
	// are also written by system actors (e.g. AML ongoing monitoring with
	// actor_type SYSTEM, and automatic feature-status updates), not only by the
	// update-status endpoint and manual review posts. `FEATURE_OVERRIDE_PENDING`,
	// `FEATURE_OVERRIDE_APPLIED` and `FEATURE_OVERRIDE_CANCELLED` record an
	// override of one check's status (`PATCH
	// /v3/session/{session_id}/features/{node_id}/update-status/`): requested to
	// wait for the flow to finish, applied, or cancelled. They carry the check's
	// status in `previous_value` / `new_value` (`{"status": ...}`), leave
	// `previous_status` and `new_status` `null`, and name the override in
	// `metadata` (`feature_override_id`, `node_id`, `feature_model`, `forced`,
	// `state`, `cancel_reason`). The entry for the request carries the reviewer's
	// `comment`; an override applied when the flow finishes is recorded with
	// `actor_type` `SYSTEM`.
	ActivityType ReviewItemActivityType `json:"activity_type"`

	// Human-readable author label, resolved in order: actor's full name → Console
	// account identifier → local part of `actor_email` → `"API Client"` (for
	// `API_KEY` actors) → `"System"` (for `SYSTEM` actors) → `"Unknown"`. Entries
	// created via `POST …/reviews/` always display `"Unknown"` because that
	// endpoint records no actor attribution.
	ActorDisplay string `json:"actor_display"`

	// Email of the Console user who performed the action. `null` for API-key and
	// system actors.
	ActorEmail string `json:"actor_email"`

	// Who performed the action: an API key, a Console user, or Didit itself
	// (`SYSTEM`, e.g. AML ongoing monitoring). Entries created via `POST
	// …/reviews/` carry the default `CONSOLE_USER` regardless of the caller.
	ActorType ReviewItemActorType `json:"actor_type"`

	// Session status recorded by this entry (for status updates). `null` for
	// comments and data-change entries.
	NewStatus ReviewItemNewStatus `json:"new_status"`

	// Status the session had before the change. Populated on `STATUS_UPDATED`
	// entries written by the update-status endpoint; `null` on entries added via
	// `POST …/reviews/`. Also populated on system-written STATUS_UPDATED rows.
	PreviousStatus ReviewItemPreviousStatus `json:"previous_status"`

	// Free-text note attached to the entry, or `null`.
	Comment string `json:"comment"`

	// Console users `@email`-mentioned in the comment. Always empty for entries
	// created via this API - mention processing is a Console-only feature.
	MentionedEmails []string `json:"mentioned_emails"`

	// Snapshot of the changed data before the action, e.g. `{"status": "In
	// Review"}` on a status change. `null` when nothing was changed.
	PreviousValue map[string]any `json:"previous_value"`

	// Snapshot of the changed data after the action, e.g. `{"status": "Approved"}`.
	// `null` when nothing was changed.
	NewValue map[string]any `json:"new_value"`

	// Names of the fields modified by this activity (e.g. `["status"]`). Empty for
	// comments and for entries added via `POST …/reviews/`.
	ChangedFields []string `json:"changed_fields"`

	// Extra context for system-generated entries. Console detail-page views carry
	// `{"system_event": "DETAIL_VIEWED", "detail_type": "verification"}` so they
	// can be filtered out of notification logic. `null` for ordinary entries.
	Metadata map[string]any `json:"metadata"`

	// When the entry was written, ISO 8601 UTC.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

ReviewItem: One entry in a session's review / activity feed. Status changes carry `previous_status`, `new_status`, `previous_value`, `new_value`, and `changed_fields`; comments carry `comment` and (for Console comments) `mentioned_emails`; the remaining fields are `null` or empty when they do not apply to the activity type.

func (*ReviewItem) UnmarshalJSON

func (r *ReviewItem) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes ReviewItem leniently.

type ReviewItemActivityType

type ReviewItemActivityType string

ReviewItemActivityType: What kind of activity this entry records. `STATUS_UPDATED` rows come from manual decisions (`PATCH /v3/session/{session_id}/update-status/`) and from entries added via `POST …/reviews/` (which default to this type even when no status is recorded). `COMMENT` rows come from Console reviewers; Console detail-page views are also stored as `COMMENT` rows flagged with `metadata.system_event = "DETAIL_VIEWED"`. The remaining types track data edits, file changes, tags, and AML monitoring activity. STATUS_UPDATED rows are also written by system actors (e.g. AML ongoing monitoring with actor_type SYSTEM, and automatic feature-status updates), not only by the update-status endpoint and manual review posts. `FEATURE_OVERRIDE_PENDING`, `FEATURE_OVERRIDE_APPLIED` and `FEATURE_OVERRIDE_CANCELLED` record an override of one check's status (`PATCH /v3/session/{session_id}/features/{node_id}/update-status/`): requested to wait for the flow to finish, applied, or cancelled. They carry the check's status in `previous_value` / `new_value` (`{"status": ...}`), leave `previous_status` and `new_status` `null`, and name the override in `metadata` (`feature_override_id`, `node_id`, `feature_model`, `forced`, `state`, `cancel_reason`). The entry for the request carries the reviewer's `comment`; an override applied when the flow finishes is recorded with `actor_type` `SYSTEM`.

ReviewItemActivityType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ReviewItemActivityTypeComment                  ReviewItemActivityType = "COMMENT"
	ReviewItemActivityTypeStatusUpdated            ReviewItemActivityType = "STATUS_UPDATED"
	ReviewItemActivityTypeKYCDataUpdated           ReviewItemActivityType = "KYC_DATA_UPDATED"
	ReviewItemActivityTypePOADataUpdated           ReviewItemActivityType = "POA_DATA_UPDATED"
	ReviewItemActivityTypeFileAdded                ReviewItemActivityType = "FILE_ADDED"
	ReviewItemActivityTypeFileRemoved              ReviewItemActivityType = "FILE_REMOVED"
	ReviewItemActivityTypeAMLOngoingMatch          ReviewItemActivityType = "AML_ONGOING_MATCH"
	ReviewItemActivityTypeAMLStatusUpdated         ReviewItemActivityType = "AML_STATUS_UPDATED"
	ReviewItemActivityTypeAMLHitStatusUpdated      ReviewItemActivityType = "AML_HIT_STATUS_UPDATED"
	ReviewItemActivityTypeKYBDataUpdated           ReviewItemActivityType = "KYB_DATA_UPDATED"
	ReviewItemActivityTypeKYBDocumentUploaded      ReviewItemActivityType = "KYB_DOCUMENT_UPLOADED"
	ReviewItemActivityTypeTagAdded                 ReviewItemActivityType = "TAG_ADDED"
	ReviewItemActivityTypeTagRemoved               ReviewItemActivityType = "TAG_REMOVED"
	ReviewItemActivityTypeFeatureOverridePending   ReviewItemActivityType = "FEATURE_OVERRIDE_PENDING"
	ReviewItemActivityTypeFeatureOverrideApplied   ReviewItemActivityType = "FEATURE_OVERRIDE_APPLIED"
	ReviewItemActivityTypeFeatureOverrideCancelled ReviewItemActivityType = "FEATURE_OVERRIDE_CANCELLED"
)

Known values of ReviewItemActivityType.

type ReviewItemActorType

type ReviewItemActorType string

ReviewItemActorType: Who performed the action: an API key, a Console user, or Didit itself (`SYSTEM`, e.g. AML ongoing monitoring). Entries created via `POST …/reviews/` carry the default `CONSOLE_USER` regardless of the caller.

ReviewItemActorType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ReviewItemActorTypeAPIKey      ReviewItemActorType = "API_KEY"
	ReviewItemActorTypeConsoleUser ReviewItemActorType = "CONSOLE_USER"
	ReviewItemActorTypeSystem      ReviewItemActorType = "SYSTEM"
)

Known values of ReviewItemActorType.

type ReviewItemNewStatus

type ReviewItemNewStatus string

ReviewItemNewStatus: Session status recorded by this entry (for status updates). `null` for comments and data-change entries.

ReviewItemNewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ReviewItemNewStatusNotStarted   ReviewItemNewStatus = "Not Started"
	ReviewItemNewStatusInProgress   ReviewItemNewStatus = "In Progress"
	ReviewItemNewStatusApproved     ReviewItemNewStatus = "Approved"
	ReviewItemNewStatusDeclined     ReviewItemNewStatus = "Declined"
	ReviewItemNewStatusInReview     ReviewItemNewStatus = "In Review"
	ReviewItemNewStatusExpired      ReviewItemNewStatus = "Expired"
	ReviewItemNewStatusAbandoned    ReviewItemNewStatus = "Abandoned"
	ReviewItemNewStatusKYCExpired   ReviewItemNewStatus = "Kyc Expired"
	ReviewItemNewStatusResubmitted  ReviewItemNewStatus = "Resubmitted"
	ReviewItemNewStatusAwaitingUser ReviewItemNewStatus = "Awaiting User"
)

Known values of ReviewItemNewStatus.

type ReviewItemPreviousStatus

type ReviewItemPreviousStatus string

ReviewItemPreviousStatus: Status the session had before the change. Populated on `STATUS_UPDATED` entries written by the update-status endpoint; `null` on entries added via `POST …/reviews/`. Also populated on system-written STATUS_UPDATED rows.

ReviewItemPreviousStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	ReviewItemPreviousStatusNotStarted   ReviewItemPreviousStatus = "Not Started"
	ReviewItemPreviousStatusInProgress   ReviewItemPreviousStatus = "In Progress"
	ReviewItemPreviousStatusApproved     ReviewItemPreviousStatus = "Approved"
	ReviewItemPreviousStatusDeclined     ReviewItemPreviousStatus = "Declined"
	ReviewItemPreviousStatusInReview     ReviewItemPreviousStatus = "In Review"
	ReviewItemPreviousStatusExpired      ReviewItemPreviousStatus = "Expired"
	ReviewItemPreviousStatusAbandoned    ReviewItemPreviousStatus = "Abandoned"
	ReviewItemPreviousStatusKYCExpired   ReviewItemPreviousStatus = "Kyc Expired"
	ReviewItemPreviousStatusResubmitted  ReviewItemPreviousStatus = "Resubmitted"
	ReviewItemPreviousStatusAwaitingUser ReviewItemPreviousStatus = "Awaiting User"
)

Known values of ReviewItemPreviousStatus.

type RiskLifecycleEvent

type RiskLifecycleEvent struct {
	// Machine-readable event type. New values can be added over time.
	Type string `json:"type"`

	// When the event happened.
	Timestamp time.Time `json:"timestamp"`

	// Event-specific payload, or `null`.
	Details map[string]any `json:"details"`

	// USD amount billed for this event.
	Fee float64 `json:"fee"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

RiskLifecycleEvent is a response object.

func (*RiskLifecycleEvent) UnmarshalJSON

func (r *RiskLifecycleEvent) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes RiskLifecycleEvent leniently.

type RiskSignals

type RiskSignals struct {
	// IPv4 or IPv6 address observed for the end user.
	IP Opt[string] `json:"ip"`

	// Stable device identifier collected by your application (Android `ANDROID_ID`,
	// iOS `identifierForVendor`).
	DeviceID Opt[string] `json:"device_id"`

	// Platform of the end user's device.
	DevicePlatform Opt[RiskSignalsDevicePlatform] `json:"device_platform"`

	// Device model reported by your application.
	DeviceModel Opt[string] `json:"device_model"`

	// Operating-system version.
	OsVersion Opt[string] `json:"os_version"`

	// Version of your application.
	AppVersion Opt[string] `json:"app_version"`

	// Browser or app user agent.
	UserAgent Opt[string] `json:"user_agent"`
}

RiskSignals: Optional device and network context observed by your application. All fields are optional. Passing them feeds cross-session match detection in Networks.

func (RiskSignals) MarshalJSON

func (r RiskSignals) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type RiskSignalsDevicePlatform

type RiskSignalsDevicePlatform string

RiskSignalsDevicePlatform: Platform of the end user's device.

RiskSignalsDevicePlatform is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	RiskSignalsDevicePlatformAndroid RiskSignalsDevicePlatform = "android"
	RiskSignalsDevicePlatformIos     RiskSignalsDevicePlatform = "ios"
	RiskSignalsDevicePlatformIpados  RiskSignalsDevicePlatform = "ipados"
	RiskSignalsDevicePlatformTvos    RiskSignalsDevicePlatform = "tvos"
	RiskSignalsDevicePlatformWeb     RiskSignalsDevicePlatform = "web"
)

Known values of RiskSignalsDevicePlatform.

type RiskWarning

type RiskWarning struct {
	// Feature that produced the warning.
	Feature string `json:"feature"`

	// Machine-readable risk code. New values can be added over time.
	Risk string `json:"risk"`

	// Risk-specific context, or `null`.
	AdditionalData map[string]any `json:"additional_data"`

	// Severity used by the decision rules.
	LogType RiskWarningLogType `json:"log_type"`

	// Human-readable one-line summary.
	ShortDescription string `json:"short_description"`

	// Human-readable explanation.
	LongDescription string `json:"long_description"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

RiskWarning is a response object.

func (*RiskWarning) UnmarshalJSON

func (r *RiskWarning) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes RiskWarning leniently.

type RiskWarningLogType

type RiskWarningLogType string

RiskWarningLogType: Severity used by the decision rules.

RiskWarningLogType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	RiskWarningLogTypeError       RiskWarningLogType = "error"
	RiskWarningLogTypeWarning     RiskWarningLogType = "warning"
	RiskWarningLogTypeInformation RiskWarningLogType = "information"
)

Known values of RiskWarningLogType.

type RoutingPublicationCaseRoutingRule

type RoutingPublicationCaseRoutingRule struct {
	UUID           string                               `json:"uuid"`
	Name           string                               `json:"name"`
	Description    string                               `json:"description"`
	Priority       int64                                `json:"priority"`
	Conditions     []RoutingPublicationRoutingCondition `json:"conditions"`
	RequiredSkills []string                             `json:"required_skills"`
	Blueprint      string                               `json:"blueprint"`
	BlueprintName  string                               `json:"blueprint_name"`
	Team           string                               `json:"team"`
	TeamName       string                               `json:"team_name"`
	IsActive       bool                                 `json:"is_active"`
	Version        int64                                `json:"version"`
	CreatedAt      time.Time                            `json:"created_at"`
	UpdatedAt      time.Time                            `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

RoutingPublicationCaseRoutingRule is a response object.

func (*RoutingPublicationCaseRoutingRule) UnmarshalJSON

func (r *RoutingPublicationCaseRoutingRule) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes RoutingPublicationCaseRoutingRule leniently.

type RoutingPublicationFieldEnum

type RoutingPublicationFieldEnum string

RoutingPublicationFieldEnum: * `source` - source

  • `priority` - priority
  • `tags` - tags

RoutingPublicationFieldEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	RoutingPublicationFieldEnumSource   RoutingPublicationFieldEnum = "source"
	RoutingPublicationFieldEnumPriority RoutingPublicationFieldEnum = "priority"
	RoutingPublicationFieldEnumTags     RoutingPublicationFieldEnum = "tags"
)

Known values of RoutingPublicationFieldEnum.

type RoutingPublicationOperatorEnum

type RoutingPublicationOperatorEnum string

RoutingPublicationOperatorEnum: * `equals` - equals

  • `in` - in
  • `contains` - contains

RoutingPublicationOperatorEnum is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	RoutingPublicationOperatorEnumEquals   RoutingPublicationOperatorEnum = "equals"
	RoutingPublicationOperatorEnumIn       RoutingPublicationOperatorEnum = "in"
	RoutingPublicationOperatorEnumContains RoutingPublicationOperatorEnum = "contains"
)

Known values of RoutingPublicationOperatorEnum.

type RoutingPublicationPolicyDraft

type RoutingPublicationPolicyDraft struct {
	Revision    string    `json:"revision"`
	BaseVersion int64     `json:"base_version"`
	Changes     any       `json:"changes"`
	ActorEmail  string    `json:"actor_email"`
	UpdatedAt   time.Time `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

RoutingPublicationPolicyDraft is a response object.

func (*RoutingPublicationPolicyDraft) UnmarshalJSON

func (r *RoutingPublicationPolicyDraft) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes RoutingPublicationPolicyDraft leniently.

type RoutingPublicationPolicyDraftPreconditionRequest

type RoutingPublicationPolicyDraftPreconditionRequest struct {
	// Required.
	ExpectedVersion int64 `json:"expected_version"`

	// Required.
	ExpectedRevision Opt[string] `json:"expected_revision"`
}

RoutingPublicationPolicyDraftPreconditionRequest is a request object.

func (RoutingPublicationPolicyDraftPreconditionRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type RoutingPublicationPolicyDraftResponse

type RoutingPublicationPolicyDraftResponse struct {
	Draft RoutingPublicationPolicyDraft `json:"draft"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

RoutingPublicationPolicyDraftResponse is a response object.

func (*RoutingPublicationPolicyDraftResponse) UnmarshalJSON

func (r *RoutingPublicationPolicyDraftResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes RoutingPublicationPolicyDraftResponse leniently.

type RoutingPublicationPolicyDraftWriteRequest

type RoutingPublicationPolicyDraftWriteRequest struct {
	// Required.
	ExpectedVersion int64 `json:"expected_version"`

	// Required.
	ExpectedRevision Opt[string] `json:"expected_revision"`

	// Required.
	Changes map[string]any `json:"changes"`
}

RoutingPublicationPolicyDraftWriteRequest is a request object.

func (RoutingPublicationPolicyDraftWriteRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type RoutingPublicationPolicyRevision

type RoutingPublicationPolicyRevision struct {
	Version     int64     `json:"version"`
	Snapshot    any       `json:"snapshot"`
	ActorEmail  string    `json:"actor_email"`
	PublishedAt time.Time `json:"published_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

RoutingPublicationPolicyRevision is a response object.

func (*RoutingPublicationPolicyRevision) UnmarshalJSON

func (r *RoutingPublicationPolicyRevision) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes RoutingPublicationPolicyRevision leniently.

type RoutingPublicationRoutingCondition

type RoutingPublicationRoutingCondition struct {
	Field    RoutingPublicationFieldEnum    `json:"field"`
	Operator RoutingPublicationOperatorEnum `json:"operator"`
	Value    any                            `json:"value"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

RoutingPublicationRoutingCondition is a response object.

func (*RoutingPublicationRoutingCondition) UnmarshalJSON

func (r *RoutingPublicationRoutingCondition) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes RoutingPublicationRoutingCondition leniently.

type SandboxSimulateRequest

type SandboxSimulateRequest struct {
	// The status to set. When you leave it out, it defaults to the default status
	// of the risk case (`risk`, or the first risk the scenario's magic values
	// carry), else to the scenario's default status.
	NewStatus Opt[SandboxSimulateRequestNewStatus] `json:"new_status"`

	// Note added to the activity entry the status change records.
	Comment Opt[string] `json:"comment"`

	// A scenario slug from the catalog (`GET /v1/sandbox/scenarios/`). It supplies
	// the default status and, without `risk`, the warning its magic values carry.
	// An unknown slug returns `400`.
	Scenario Opt[string] `json:"scenario"`

	// A risk case from the catalog. Its warning is added to the session, with a log
	// type that follows `new_status`. An unknown value returns `400`.
	Risk Opt[string] `json:"risk"`

	// Workflow node the risk warning is attached to. Defaults to the session's
	// current node.
	NodeID Opt[string] `json:"node_id"`

	// `true` sends exactly the webhooks a real status change sends to the sandbox
	// application's destinations: `status.updated`, plus the `user.status.updated`
	// / `user.data.updated` (or `business.status.updated` /
	// `business.data.updated`) events the change causes, for destinations
	// subscribed to them. `false` changes the status without logging or sending any
	// webhook: the missed-webhook recovery never re-sends that decision, the
	// console still updates live, and the next status change of the session sends
	// webhooks as usual.
	SendWebhooks Opt[bool] `json:"send_webhooks"`
}

SandboxSimulateRequest: Force a sandbox session's status. Every field is optional, but at least one of `new_status`, `scenario` or `risk` is required.

func (SandboxSimulateRequest) MarshalJSON

func (r SandboxSimulateRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SandboxSimulateRequestNewStatus

type SandboxSimulateRequestNewStatus string

SandboxSimulateRequestNewStatus: The status to set. When you leave it out, it defaults to the default status of the risk case (`risk`, or the first risk the scenario's magic values carry), else to the scenario's default status.

SandboxSimulateRequestNewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SandboxSimulateRequestNewStatusApproved  SandboxSimulateRequestNewStatus = "Approved"
	SandboxSimulateRequestNewStatusDeclined  SandboxSimulateRequestNewStatus = "Declined"
	SandboxSimulateRequestNewStatusInReview  SandboxSimulateRequestNewStatus = "In Review"
	SandboxSimulateRequestNewStatusExpired   SandboxSimulateRequestNewStatus = "Expired"
	SandboxSimulateRequestNewStatusAbandoned SandboxSimulateRequestNewStatus = "Abandoned"
)

Known values of SandboxSimulateRequestNewStatus.

type SandboxSimulateResponse

type SandboxSimulateResponse struct {
	SessionID string `json:"session_id"`

	// The session's status before the simulation.
	PreviousStatus SandboxSimulateResponsePreviousStatus `json:"previous_status"`

	// The status the simulation set.
	Status SandboxSimulateResponseStatus `json:"status"`

	// The scenario slug you passed, or `null`.
	Scenario string `json:"scenario"`

	// The risk case applied (`risk`, or the one taken from the scenario), or `null`
	// when none.
	Risk string `json:"risk"`

	// The `send_webhooks` value the simulation applied.
	SendWebhooks bool `json:"send_webhooks"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SandboxSimulateResponse is a response object.

func (*SandboxSimulateResponse) UnmarshalJSON

func (r *SandboxSimulateResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SandboxSimulateResponse leniently.

type SandboxSimulateResponsePreviousStatus

type SandboxSimulateResponsePreviousStatus string

SandboxSimulateResponsePreviousStatus: The session's status before the simulation.

SandboxSimulateResponsePreviousStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SandboxSimulateResponsePreviousStatusNotStarted   SandboxSimulateResponsePreviousStatus = "Not Started"
	SandboxSimulateResponsePreviousStatusInProgress   SandboxSimulateResponsePreviousStatus = "In Progress"
	SandboxSimulateResponsePreviousStatusApproved     SandboxSimulateResponsePreviousStatus = "Approved"
	SandboxSimulateResponsePreviousStatusDeclined     SandboxSimulateResponsePreviousStatus = "Declined"
	SandboxSimulateResponsePreviousStatusInReview     SandboxSimulateResponsePreviousStatus = "In Review"
	SandboxSimulateResponsePreviousStatusExpired      SandboxSimulateResponsePreviousStatus = "Expired"
	SandboxSimulateResponsePreviousStatusAbandoned    SandboxSimulateResponsePreviousStatus = "Abandoned"
	SandboxSimulateResponsePreviousStatusKYCExpired   SandboxSimulateResponsePreviousStatus = "Kyc Expired"
	SandboxSimulateResponsePreviousStatusResubmitted  SandboxSimulateResponsePreviousStatus = "Resubmitted"
	SandboxSimulateResponsePreviousStatusAwaitingUser SandboxSimulateResponsePreviousStatus = "Awaiting User"
)

Known values of SandboxSimulateResponsePreviousStatus.

type SandboxSimulateResponseStatus

type SandboxSimulateResponseStatus string

SandboxSimulateResponseStatus: The status the simulation set.

SandboxSimulateResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SandboxSimulateResponseStatusApproved  SandboxSimulateResponseStatus = "Approved"
	SandboxSimulateResponseStatusDeclined  SandboxSimulateResponseStatus = "Declined"
	SandboxSimulateResponseStatusInReview  SandboxSimulateResponseStatus = "In Review"
	SandboxSimulateResponseStatusExpired   SandboxSimulateResponseStatus = "Expired"
	SandboxSimulateResponseStatusAbandoned SandboxSimulateResponseStatus = "Abandoned"
)

Known values of SandboxSimulateResponseStatus.

type SessionDecision

type SessionDecision struct {
	// The unique identifier of the session.
	SessionID string `json:"session_id"`

	// Discriminator indicating whether this is a User Verification (KYC) or
	// Business Verification (KYB) session. When `user`, the KYC feature arrays
	// (`id_verifications`, `nfc_verifications`, `liveness_checks`, `face_matches`,
	// `poa_verifications`, `document_ai_documents`, `database_validations`, ...)
	// apply and the business arrays are absent. When `business`, the payload
	// instead carries `registry_checks`, `document_verifications`,
	// `key_people_checks` plus the shared arrays (`aml_screenings`,
	// `phone_verifications`, `email_verifications`, `ip_analyses`,
	// `questionnaire_responses`). **Omitted when `include=events` is passed** - the
	// events shape only exists for user sessions, so the discriminator is dropped
	// from that variant.
	SessionKind SessionDecisionSessionKind `json:"session_kind"`

	// For a session cloned with `POST /v3/session/import-shared/`: the `session_id`
	// of the original session in the source application. `null` for every other
	// session. Omitted when `include=events` is passed.
	SharedFromSession string `json:"shared_from_session"`

	// The number of the session.
	SessionNumber int64 `json:"session_number"`

	// The URL of the session.
	SessionURL string `json:"session_url"`

	// Overall lifecycle status of the session - the rolled-up workflow result.
	// Terminal values are `Approved`, `Declined`, `In Review`, `Expired`, `Kyc
	// Expired`, and `Abandoned`; `Not Started`, `In Progress`, `Awaiting User`, and
	// `Resubmitted` indicate the session is still moving through the workflow.
	Status SessionDecisionStatus `json:"status"`

	// Stable identifier of the workflow group that produced this session. Workflows
	// are versioned - this value identifies the workflow itself, not the specific
	// version.
	WorkflowID string `json:"workflow_id"`

	// List of verification features configured for this session, as display names:
	// `ID_VERIFICATION`, `NFC`, `LIVENESS`, `FACE_MATCH`, `POA`, `PHONE`,
	// `EMAIL_VERIFICATION`, `AML`, `IP_ANALYSIS`, `DATABASE_VALIDATION`,
	// `QUESTIONNAIRE`, `AGE_ESTIMATION`, `FACE_SEARCH` (Business Verification
	// sessions use the KYB feature set: `KYB_REGISTRY`, `KYB_DOCUMENTS`,
	// `KYB_KEY_PEOPLE`, `AML`, `PHONE`, `EMAIL_VERIFICATION`, `IP_ANALYSIS`,
	// `QUESTIONNAIRE`). With `include=events` each entry becomes an object
	// `{feature, node_id}` instead of a plain string, and the email feature is
	// renamed: it appears as `EMAIL` in events mode instead of the
	// `EMAIL_VERIFICATION` used here.
	Features []string `json:"features"`

	// The vendor data of the session.
	VendorData string `json:"vendor_data"`

	// The metadata of the session.
	Metadata map[string]any `json:"metadata"`

	// Expected details supplied at session creation - used for cross-validation
	// against extracted data (KYC) or to pre-fill the company registry search
	// (KYB). Echoes back exactly the keys that were provided; `null` when none were
	// supplied. KYC sessions carry the person fields; Business (KYB) sessions carry
	// `company_name`, `registry_country` and `registration_number`.
	ExpectedDetails SessionDecisionExpectedDetails `json:"expected_details"`

	// Contact details supplied when the session was created (used for notification
	// emails, prefilled phone/email verification, and communication language).
	// `null` when neither an email nor a phone number was provided.
	ContactDetails SessionDecisionContactDetails `json:"contact_details"`

	// The callback URL of the session.
	Callback string `json:"callback"`

	// **Array of ID verification (OCR) reports** produced by ID-document steps in
	// the workflow graph. Always a JSON array - read `id_verifications[0]` and
	// iterate if your workflow can run more than one ID check (for example a
	// primary check plus a step-up). `null` until at least one ID step has produced
	// data. Each item is the full report, including `node_id`, feature-level
	// `status`, extracted document fields, image URLs, quality scores, MRZ, address
	// parsing, cross-session matches, and `warnings[]`.
	IDVerifications []SessionDecisionIDVerifications `json:"id_verifications"`

	// Why NFC chip verification did not run, populated whenever the workflow
	// includes an NFC step. `null` while NFC is pending or when the chip was
	// actually read. Values: `USER_SKIPPED` - the user chose to skip on an
	// NFC-capable device (allowed by `allow_nfc_skip`); `DOCUMENT_WITHOUT_CHIP` -
	// the document has no readable NFC chip (not an ICAO 9303 electronic document);
	// `CHIP_CERTIFICATE_UNAVAILABLE` - the issuing country's signing certificate
	// (CSCA) covering the document's issue period is unavailable, so the chip
	// signature cannot be verified; `DEVICE_WITHOUT_NFC` - the device reported no
	// NFC reader; `INTEGRATION_WITHOUT_NFC_ACCESS` - the verification ran without a
	// native SDK (e.g. in a web browser), which has no access to the phone's NFC
	// reader; `MRZ_KEY_UNAVAILABLE` - the chip access key could not be derived from
	// the document's MRZ; `JPKI_UNAVAILABLE` - the document is a Japan My Number
	// Card, whose chip is read through JPKI, and JPKI was not available for this
	// verification: it is not enabled, or the app's native SDK cannot read My
	// Number Cards.
	NFCSkipReason SessionDecisionNFCSkipReason `json:"nfc_skip_reason"`

	// **Array of NFC / ePassport reports** produced by NFC steps in the workflow
	// graph. **This is always a JSON array, never a singular `nfc` object** - read
	// `nfc_verifications[0]` and iterate if your workflow can run NFC more than
	// once. `null` until at least one NFC step has produced data. Each item is the
	// full report, including `node_id`, feature-level `status`, `chip_protocol`,
	// `chip_data`, `authenticity` (SOD + DG integrity), `certificate_summary`, and
	// `warnings[]`. A Japan My Number Card is read through JPKI instead of ICAO
	// 9303: its item has `chip_protocol: "jpki"`, carries its evidence under
	// `jpki`, and leaves the ICAO fields `null`. When the NFC step was bypassed
	// before it could ever be offered (chipless document, missing certificate, no
	// NFC capability reported, unreadable MRZ key, JPKI unavailable for a My Number
	// Card), this stays `null` and `nfc_skip_reason` explains why; a skip at the
	// step itself (user tapped skip, or the reader turned out unavailable at scan
	// time) still produces a report with `is_nfc_skipped: true`.
	NFCVerifications []SessionDecisionNFCVerifications `json:"nfc_verifications"`

	// **Array of liveness reports** produced by liveness steps in the workflow
	// graph. Always a JSON array - never a singular `liveness` object. `null` until
	// at least one liveness step has produced data. Each item is the full report,
	// including `node_id`, feature-level `status`, `method`, `score`,
	// `reference_image`, `video_url`, optional `age_estimation`, cross-session
	// `matches[]`, and `warnings[]`.
	LivenessChecks []SessionDecisionLivenessChecks `json:"liveness_checks"`

	// **Array of face-match reports** produced by face-match steps in the workflow
	// graph. Always a JSON array - never a singular `face_match` object. `null`
	// until at least one face-match step has produced data. Each item is the full
	// report, including `node_id`, feature-level `status`, similarity `score`,
	// `source_image`, `target_image`, and `warnings[]`.
	FaceMatches []SessionDecisionFaceMatches `json:"face_matches"`

	// **Array of phone verification reports** - always a JSON array, never a
	// singular `phone` object. `null` until at least one phone step has produced
	// data. Each item is the full report, including `node_id`, feature-level
	// `status`, the phone number and country metadata, `lifecycle[]`, `matches[]`,
	// and `warnings[]`.
	PhoneVerifications []SessionDecisionPhoneVerifications `json:"phone_verifications"`

	// **Array of email verification reports** - always a JSON array, never a
	// singular `email` object. `null` until at least one email step has produced
	// data. Each item is the full report, including `node_id`, feature-level
	// `status`, the email address, breach data, `lifecycle[]`, `matches[]`, and
	// `warnings[]`.
	EmailVerifications []SessionDecisionEmailVerifications `json:"email_verifications"`

	// **Array of Proof of Address (POA) reports** - always a JSON array, never a
	// singular `poa` object. `null` until at least one POA step has produced data.
	// Each item is the full report, including `node_id`, feature-level `status`,
	// the document file URL, issuer, dates, parsed address, and `warnings[]`.
	POAVerifications []SessionDecisionPOAVerifications `json:"poa_verifications"`

	// **Document AI reports grouped by workflow node** - always a JSON array, never
	// a singular object. `null` until at least one Document AI step has produced
	// data. Present only when `session_kind = user`. Each item is a node group with
	// an aggregate `status`, the `node_id`, an `items[]` array of the per-document
	// results (extracted data keyed by the configured field key), and `warnings`.
	DocumentAiDocuments []SessionDecisionDocumentAiDocuments `json:"document_ai_documents"`

	// **Array of questionnaire response reports** - always a JSON array, never a
	// singular `questionnaire` object. `null` until at least one questionnaire step
	// has produced data. Each item is the full report, including `node_id`, the
	// questionnaire metadata, sections with form elements, and the user's answers.
	QuestionnaireResponses []SessionDecisionQuestionnaireResponses `json:"questionnaire_responses"`

	// Bank Verification results, one item per Bank Verification step, for User and
	// Business Verification. `null` until a step produces one. Each item's `method`
	// says how the account was verified: `open_banking` (bank sign-in) or
	// `account_lookup` (account check), or a `statement` or `microdeposits`
	// fallback, and `none` when the person continued without a bank before any
	// attempt was evaluated (`continued_without_bank`). See [Bank verification
	// methods](/core-technology/bank-verification/verification-methods).
	BankVerifications []BankVerificationResult `json:"bank_verifications"`

	// Electronic Signature results, one item per signer and signature step, for
	// User and Business Verification. Present only when the workflow has an
	// Electronic Signature step; an empty array until a signer reaches it. See the
	// [Electronic Signature
	// report](/core-technology/electronic-signature/report-electronic-signature).
	Signatures []SignatureResult `json:"signatures"`

	// **Array of AML screening reports** - always a JSON array, never a singular
	// `aml` object. `null` until at least one AML step has produced data. Each item
	// is the full report, including `node_id`, feature-level `status`,
	// `total_hits`, `entity_type`, `hits[]`, `score`, `screened_data`,
	// `is_ongoing_monitoring_enabled`, and `warnings[]`.
	AMLScreenings []AMLScreening `json:"aml_screenings"`

	// **Array of Device & IP Analysis reports** - always a JSON array, never a
	// singular `ip_analysis` object. `null` until at least one IP-analysis step has
	// produced data. Each item is the full report, including `node_id`,
	// feature-level `status`, IP and geolocation data, device fingerprint, and
	// `warnings[]`. Entries with duplicate `(node_id, ip_address,
	// device_fingerprint)` are deduplicated server-side.
	IPAnalyses []SessionDecisionIPAnalyses `json:"ip_analyses"`

	// **Array of Database Validation reports** - always a JSON array, never a
	// singular `database_validation` object. `null` until at least one DB
	// validation step has produced data. Each item is the full report, including
	// `node_id`, feature-level `status`, `screened_data`, the per-service
	// `validations[]` (each with its registry `source_data`), and `warnings[]`. The
	// `screened_data` and `source_data` fields vary by country:
	//
	// **ARG (Argentina)**: screened_data: {document_number, selfie, gender,
	// first_name, last_name}. source_data: {identification_number, first_name,
	// last_name, full_name, date_of_birth, date_of_death, tax_id, tax_id_type,
	// face_match_score, sit_1_since, banks, last_position, highest_position,
	// rejected_checks}. Uses RENAPER biometric face-match validation. Gender is
	// auto-inferred from face analysis or given name when not present in the
	// document (e.g., driver licenses)
	//
	// **BOL (Bolivia)**: screened_data: {document_number, date_of_birth,
	// first_name, last_name}. source_data: {identification_number, first_name,
	// last_name, full_name, date_of_birth, gender}
	//
	// **BRA (Brazil)**: screened_data: {tax_number, first_name, last_name,
	// date_of_birth}. source_data always includes {identification_number,
	// first_name, last_name, date_of_birth, lgpd_minor, minor_under_18,
	// minor_under_16} for successful CPF matches. Successful adult lookups set
	// those flags to false. The Receita Federal Consulta CPF service may return
	// HTTP 422 (minor under 18) or 451 (under 16) with LGPD-withheld data; in those
	// cases source_data sets the minor flags to true as appropriate, includes the
	// upstream HTTP status, and field-level validation is no_match. See the Brazil
	// section of the Database Validation Outcome Codes reference for the full code
	// list.
	//
	// **CHL (Chile)**: screened_data: {personal_number, first_name, last_name,
	// date_of_birth}. source_data: {identification_number, first_name, last_name,
	// date_of_birth, gender}
	//
	// **COL (Colombia)**: screened_data: {document_number, document_type,
	// first_name, last_name}. source_data: {identification_number, first_name,
	// last_name, full_name, date_of_birth, document_type}
	//
	// **CRI (Costa Rica)**: screened_data: {personal_number, first_name,
	// last_name}. source_data: {identification_number, first_name, last_name,
	// full_name}
	//
	// **DOM (Dominican Republic)**: screened_data: {personal_number}. source_data:
	// {identification_number} (returns valid/invalid only)
	//
	// **ECU (Ecuador)**: screened_data: {personal_number, first_name, last_name}.
	// source_data: {identification_number, first_name, last_name, street,
	// formatted_address, gender, nationality, education, marital_status, spouse,
	// mother_name, father_name, profession}
	//
	// **ESP (Spain)**: screened_data: {personal_number, document_type,
	// expiration_date, first_name, last_name}. source_data: {identification_number,
	// first_name, last_name, full_name, document_type, expiration_date}
	//
	// **GTM (Guatemala)**: screened_data: {document_number, first_name, last_name}.
	// source_data: {identification_number, first_name, last_name, full_name}
	//
	// **HND (Honduras)**: screened_data: {document_number, first_name, last_name}.
	// source_data: {identification_number, first_name, last_name, full_name}
	//
	// **MEX (Mexico)**: screened_data: {personal_number (CURP), first_name,
	// last_name}. source_data: {identification_number, first_name, last_name,
	// full_name, date_of_birth, gender, nationality, curp_status, state_of_birth,
	// doc_probatorio, registration_year, registration_state,
	// registration_municipality, num_acta, crip, issuing_state_code,
	// foreign_registry_number, folio_carta, folio_certificado}. Uses the RENAPO
	// civil registry. A separate INE validity-check service is also available for
	// MEX as an additional one-by-one validation.
	//
	// **PAN (Panama)**: screened_data: {personal_number, selfie}. source_data:
	// {identification_number}. Uses SIB biometric validation
	//
	// **PER (Peru)**: screened_data: {personal_number (DNI), first_name,
	// last_name}. source_data: {identification_number, first_name, last_name,
	// paternal_name, maternal_name, verification_number, verification_letter}
	//
	// **PRY (Paraguay)**: screened_data: {document_number, first_name, last_name}.
	// source_data: {identification_number, first_name, last_name, full_name}
	//
	// **SLV (El Salvador)**: screened_data: {document_number, date_of_birth,
	// first_name, last_name}. source_data: {identification_number, first_name,
	// last_name, full_name}
	//
	// **URY (Uruguay)**: screened_data: {personal_number, date_of_birth,
	// first_name, last_name}. source_data: {identification_number, first_name,
	// last_name, full_name}
	//
	// **VEN (Venezuela)**: screened_data: {document_number, first_name, last_name}.
	// source_data: {identification_number, first_name, last_name, full_name,
	// gender, date_of_birth, document_type}
	DatabaseValidations []SessionDecisionDatabaseValidations `json:"database_validations"`
	Reviews             []SessionDecisionReviews             `json:"reviews"`

	// Timestamp at which the session was created (ISO 8601, UTC).
	CreatedAt time.Time `json:"created_at"`

	// Timestamp at which this session is scheduled to expire. Set on User
	// Verification (KYC) sessions when an expiration was configured at creation
	// time (or once `Approved` status triggers KYC expiry computation). `null` for
	// sessions without a configured expiration, and for kinds that do not use
	// expiry (e.g. Business Verification (KYB) sessions that never received an
	// `expires_at`).
	ExpiresAt time.Time `json:"expires_at"`

	// Company registry checks. Present only when `session_kind = business`. Each
	// item wraps the full company-registry payload.
	RegistryChecks []SessionDecisionRegistryChecks `json:"registry_checks"`

	// Aggregate key-people checks. Present only when `session_kind = business`.
	// Each item uses the two-bucket shape (`registry`, `submitted`,
	// `ubo_kyc_summary`).
	KeyPeopleChecks []SessionDecisionKeyPeopleChecks `json:"key_people_checks"`

	// Document verification checks grouped by workflow node. Present only when
	// `session_kind = business`.
	DocumentVerifications []SessionDecisionDocumentVerifications `json:"document_verifications"`

	// Whether the session was created by a live application (`live`) or a sandbox
	// application (`sandbox`). Sandbox sessions are free, fully simulated, and
	// never bill credits.
	Environment SessionDecisionEnvironment `json:"environment"`

	// Returned only with `include=resubmissions`, for user and business sessions.
	// One entry per resubmission request, oldest first. Each entry carries the
	// results the resubmitted steps returned before the request, so earlier
	// submissions stay readable. Deleting the session deletes every submission.
	Resubmissions []SessionDecisionResubmissions `json:"resubmissions"`
	Investigator  InvestigatorBlock              `json:"investigator"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecision is a response object.

func (*SessionDecision) UnmarshalJSON

func (r *SessionDecision) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecision leniently.

type SessionDecisionContactDetails

type SessionDecisionContactDetails struct {
	// Email address of the user (e.g., "john.doe@example.com") that will be used
	// during the Email Verification step. If not provided, the user must provide it
	// during the verification flow.
	Email string `json:"email"`

	// Language code (ISO 639-1) for email notifications. Controls the language of
	// all email communications (e.g., "en", "es", "fr").
	EmailLang string `json:"email_lang"`

	// If true and an email is provided, Didit sends the initial "Verify your
	// identity" email asynchronously when the User Verification (KYC) or Business
	// Verification (KYB) session is created. Didit also sends verification status
	// notifications for sessions requiring manual review to the provided email
	// address.
	SendNotificationEmails bool `json:"send_notification_emails"`

	// Phone number of the user in E.164 format if available (e.g., +14155552671).
	// `null` when only an email was supplied at session creation. Note: This field
	// returns the original phone number provided during session creation. If the
	// number was invalid, it may not be in E.164 format.
	Phone string `json:"phone"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionContactDetails: Contact details supplied when the session was created (used for notification emails, prefilled phone/email verification, and communication language). `null` when neither an email nor a phone number was provided.

func (*SessionDecisionContactDetails) UnmarshalJSON

func (r *SessionDecisionContactDetails) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionContactDetails leniently.

type SessionDecisionDatabaseValidations

type SessionDecisionDatabaseValidations struct {
	// Unique identifier for this database validation step in the workflow graph.
	NodeID string `json:"node_id"`

	// ISO 3166-1 alpha-3 code of the country whose government/registry sources were
	// queried (e.g. `BRA`, `MEX`, `ESP`, `NGA`, `IDN`). Database Validation covers
	// 60+ countries across the Americas, Europe, Africa, the Middle East and
	// Asia-Pacific, plus global multi-country sources - coverage expands regularly,
	// so treat the value as an open set rather than a fixed enum.
	IssuingState string `json:"issuing_state"`

	// How the result was corroborated: `one_by_one` (single-service outcome),
	// `two_by_two` (two or more distinct services independently full-matched the
	// identification number), or `not_enabled` (persisted when no service produced
	// a usable match). The value is never `null`. Dedicated biometric 2x2
	// validation modes are currently available for `ECU` and `PER`.
	ValidationType SessionDecisionDatabaseValidationsValidationType `json:"validation_type"`

	// The input data used for validation. Fields vary by country - see the Database
	// Validation docs (`/core-technology/database-validation/overview`) for
	// country-specific formats.
	ScreenedData SessionDecisionDatabaseValidationsScreenedData `json:"screened_data"`

	// One entry per registry service that returned a validation payload. Each entry
	// identifies the service (`service_id`, `service_name`) and carries the
	// per-field `validation` comparison, the service `outcome_code` /
	// `outcome_detail` when reported, and the normalised registry record in
	// `source_data`.
	Validations []SessionDecisionDatabaseValidationsValidations `json:"validations"`

	// Errors returned by registry services while validating, each tagged with the
	// `service_id` that produced it. **This key is omitted entirely when there are
	// no errors.**
	Errors []SessionDecisionDatabaseValidationsErrors `json:"errors"`

	// The aggregate match outcome across the queried services. `null` until the
	// validation has been evaluated.
	MatchType SessionDecisionDatabaseValidationsMatchType `json:"match_type"`

	// Feature-level status of this database validation. Independent of the
	// top-level session `status` - a session can reach its overall decision while
	// an individual feature stays `In Review`.
	Status SessionDecisionDatabaseValidationsStatus `json:"status"`

	// Warnings related to the database validation.
	Warnings []SessionDecisionDatabaseValidationsWarnings `json:"warnings"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionDatabaseValidations is a response object.

func (*SessionDecisionDatabaseValidations) UnmarshalJSON

func (r *SessionDecisionDatabaseValidations) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionDatabaseValidations leniently.

type SessionDecisionDatabaseValidationsErrors

type SessionDecisionDatabaseValidationsErrors struct {
	// Identifier of the registry service that errored.
	ServiceID string `json:"service_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionDatabaseValidationsErrors: The upstream service's error object spread as-is - its keys vary by service (commonly a message/code and any provider-specific details) - plus `service_id` identifying the service that errored.

func (*SessionDecisionDatabaseValidationsErrors) UnmarshalJSON

func (r *SessionDecisionDatabaseValidationsErrors) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionDatabaseValidationsErrors leniently.

type SessionDecisionDatabaseValidationsMatchType

type SessionDecisionDatabaseValidationsMatchType string

SessionDecisionDatabaseValidationsMatchType: The aggregate match outcome across the queried services. `null` until the validation has been evaluated.

SessionDecisionDatabaseValidationsMatchType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionDatabaseValidationsMatchTypeNoMatch      SessionDecisionDatabaseValidationsMatchType = "no_match"
	SessionDecisionDatabaseValidationsMatchTypePartialMatch SessionDecisionDatabaseValidationsMatchType = "partial_match"
	SessionDecisionDatabaseValidationsMatchTypeFullMatch    SessionDecisionDatabaseValidationsMatchType = "full_match"
)

Known values of SessionDecisionDatabaseValidationsMatchType.

type SessionDecisionDatabaseValidationsScreenedData

type SessionDecisionDatabaseValidationsScreenedData struct {
	LastName  string `json:"last_name"`
	FirstName string `json:"first_name"`

	// Brazil: CPF (11 digits)
	TaxNumber string `json:"tax_number"`

	// Chile: RUT, DOM: Cédula (11 digits), ECU: Cédula (10 digits), ESP: DNI/NIE,
	// MEX: CURP (18 chars), PER: DNI (8 digits), URY: CI
	PersonalNumber string `json:"personal_number"`

	// ARG: DNI, BOL: CI, COL: Cédula, GTM: DPI, HND: DNI, PAN: Cédula, PRY: CI,
	// SLV: DUI, VEN: Cédula
	DocumentNumber string `json:"document_number"`
	DateOfBirth    string `json:"date_of_birth"`

	// COL: CC/CE/TI/NIT, ESP: ID/PASSPORT
	DocumentType string `json:"document_type"`

	// Required for ESP
	ExpirationDate string `json:"expiration_date"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionDatabaseValidationsScreenedData: The input data used for validation. Fields vary by country - see the Database Validation docs (`/core-technology/database-validation/overview`) for country-specific formats.

func (*SessionDecisionDatabaseValidationsScreenedData) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionDatabaseValidationsScreenedData leniently.

type SessionDecisionDatabaseValidationsStatus

type SessionDecisionDatabaseValidationsStatus string

SessionDecisionDatabaseValidationsStatus: Feature-level status of this database validation. Independent of the top-level session `status` - a session can reach its overall decision while an individual feature stays `In Review`.

SessionDecisionDatabaseValidationsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionDatabaseValidationsStatusNotFinished    SessionDecisionDatabaseValidationsStatus = "Not Finished"
	SessionDecisionDatabaseValidationsStatusApproved       SessionDecisionDatabaseValidationsStatus = "Approved"
	SessionDecisionDatabaseValidationsStatusDeclined       SessionDecisionDatabaseValidationsStatus = "Declined"
	SessionDecisionDatabaseValidationsStatusInReview       SessionDecisionDatabaseValidationsStatus = "In Review"
	SessionDecisionDatabaseValidationsStatusResubRequested SessionDecisionDatabaseValidationsStatus = "Resub Requested"
)

Known values of SessionDecisionDatabaseValidationsStatus.

type SessionDecisionDatabaseValidationsValidationType

type SessionDecisionDatabaseValidationsValidationType string

SessionDecisionDatabaseValidationsValidationType: How the result was corroborated: `one_by_one` (single-service outcome), `two_by_two` (two or more distinct services independently full-matched the identification number), or `not_enabled` (persisted when no service produced a usable match). The value is never `null`. Dedicated biometric 2x2 validation modes are currently available for `ECU` and `PER`.

SessionDecisionDatabaseValidationsValidationType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionDatabaseValidationsValidationTypeOneByOne   SessionDecisionDatabaseValidationsValidationType = "one_by_one"
	SessionDecisionDatabaseValidationsValidationTypeTwoByTwo   SessionDecisionDatabaseValidationsValidationType = "two_by_two"
	SessionDecisionDatabaseValidationsValidationTypeNotEnabled SessionDecisionDatabaseValidationsValidationType = "not_enabled"
)

Known values of SessionDecisionDatabaseValidationsValidationType.

type SessionDecisionDatabaseValidationsValidations

type SessionDecisionDatabaseValidationsValidations struct {
	// Identifier of the registry service that produced this validation result.
	ServiceID string `json:"service_id"`

	// Human-readable name of the registry service.
	ServiceName string `json:"service_name"`

	// The results of the field validations.
	Validation SessionDecisionDatabaseValidationsValidationsValidation `json:"validation"`

	// Machine-readable outcome of the registry lookup (e.g. `MATCH`, `NO_MATCH`,
	// `PARTIAL_MATCH`, `INCONCLUSIVE`, source-specific codes). Present when the
	// service reports one.
	OutcomeCode string `json:"outcome_code"`

	// Human-readable explanation of `outcome_code`, when provided by the service.
	OutcomeDetail string `json:"outcome_detail"`

	// The data returned from the government database. Common fields:
	// identification_number, first_name, last_name, full_name, date_of_birth,
	// gender. Additional fields by country: BRA always includes lgpd_minor,
	// minor_under_18, and minor_under_16 on successful CPF matches; it also
	// includes the upstream HTTP status when CPF data is withheld under LGPD (HTTP
	// 422/451). ECU adds street, formatted_address, nationality, education,
	// marital_status, spouse, mother_name, father_name, profession. PER adds
	// paternal_name, maternal_name, verification_number, verification_letter. ESP
	// adds document_type, expiration_date. VEN/COL add document_type.
	SourceData map[string]any `json:"source_data"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionDatabaseValidationsValidations is a response object.

func (*SessionDecisionDatabaseValidationsValidations) UnmarshalJSON

func (r *SessionDecisionDatabaseValidationsValidations) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionDatabaseValidationsValidations leniently.

type SessionDecisionDatabaseValidationsValidationsValidation

type SessionDecisionDatabaseValidationsValidationsValidation struct {
	// Match result for full name (e.g., 'full_match', 'partial_match', 'no_match').
	FullName string `json:"full_name"`

	// Match result for date of birth.
	DateOfBirth string `json:"date_of_birth"`

	// Match result for identification number.
	IdentificationNumber string `json:"identification_number"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionDatabaseValidationsValidationsValidation: The results of the field validations.

func (*SessionDecisionDatabaseValidationsValidationsValidation) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionDatabaseValidationsValidationsValidation leniently.

type SessionDecisionDatabaseValidationsWarnings

type SessionDecisionDatabaseValidationsWarnings struct {
	// The feature that generated this warning. The value identifies the feature
	// block the warning belongs to. Each module's warnings array typically uses the
	// value matching its module (e.g. `PHONE` inside
	// `phone_verifications[].warnings`), but the enum above is authoritative across
	// all feature warnings on the decision payload.
	Feature          SessionDecisionDatabaseValidationsWarningsFeature `json:"feature"`
	Risk             string                                            `json:"risk"`
	AdditionalData   map[string]any                                    `json:"additional_data"`
	LogType          string                                            `json:"log_type"`
	ShortDescription string                                            `json:"short_description"`
	LongDescription  string                                            `json:"long_description"`

	// The workflow graph node ID that generated this warning
	NodeID string `json:"node_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionDatabaseValidationsWarnings is a response object.

func (*SessionDecisionDatabaseValidationsWarnings) UnmarshalJSON

func (r *SessionDecisionDatabaseValidationsWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionDatabaseValidationsWarnings leniently.

type SessionDecisionDatabaseValidationsWarningsFeature

type SessionDecisionDatabaseValidationsWarningsFeature string

SessionDecisionDatabaseValidationsWarningsFeature: The feature that generated this warning. The value identifies the feature block the warning belongs to. Each module's warnings array typically uses the value matching its module (e.g. `PHONE` inside `phone_verifications[].warnings`), but the enum above is authoritative across all feature warnings on the decision payload.

SessionDecisionDatabaseValidationsWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionDatabaseValidationsWarningsFeatureIDVerification     SessionDecisionDatabaseValidationsWarningsFeature = "ID_VERIFICATION"
	SessionDecisionDatabaseValidationsWarningsFeatureNFC                SessionDecisionDatabaseValidationsWarningsFeature = "NFC"
	SessionDecisionDatabaseValidationsWarningsFeatureLiveness           SessionDecisionDatabaseValidationsWarningsFeature = "LIVENESS"
	SessionDecisionDatabaseValidationsWarningsFeatureFacematch          SessionDecisionDatabaseValidationsWarningsFeature = "FACEMATCH"
	SessionDecisionDatabaseValidationsWarningsFeatureProofOfAddress     SessionDecisionDatabaseValidationsWarningsFeature = "PROOF_OF_ADDRESS"
	SessionDecisionDatabaseValidationsWarningsFeaturePhone              SessionDecisionDatabaseValidationsWarningsFeature = "PHONE"
	SessionDecisionDatabaseValidationsWarningsFeatureEmail              SessionDecisionDatabaseValidationsWarningsFeature = "EMAIL"
	SessionDecisionDatabaseValidationsWarningsFeatureAML                SessionDecisionDatabaseValidationsWarningsFeature = "AML"
	SessionDecisionDatabaseValidationsWarningsFeatureLocation           SessionDecisionDatabaseValidationsWarningsFeature = "LOCATION"
	SessionDecisionDatabaseValidationsWarningsFeatureDatabaseValidation SessionDecisionDatabaseValidationsWarningsFeature = "DATABASE_VALIDATION"
	SessionDecisionDatabaseValidationsWarningsFeatureQuestionnaire      SessionDecisionDatabaseValidationsWarningsFeature = "QUESTIONNAIRE"
	SessionDecisionDatabaseValidationsWarningsFeatureDocumentAi         SessionDecisionDatabaseValidationsWarningsFeature = "DOCUMENT_AI"
	SessionDecisionDatabaseValidationsWarningsFeatureKYBRegistry        SessionDecisionDatabaseValidationsWarningsFeature = "KYB_REGISTRY"
	SessionDecisionDatabaseValidationsWarningsFeatureKYBDocuments       SessionDecisionDatabaseValidationsWarningsFeature = "KYB_DOCUMENTS"
	SessionDecisionDatabaseValidationsWarningsFeatureKYBKeyPeople       SessionDecisionDatabaseValidationsWarningsFeature = "KYB_KEY_PEOPLE"
)

Known values of SessionDecisionDatabaseValidationsWarningsFeature.

type SessionDecisionDocumentAiDocuments

type SessionDecisionDocumentAiDocuments struct {
	// Aggregate Document AI status for this node, rolled up from its `items[]`.
	Status SessionDecisionDocumentAiDocumentsStatus `json:"status"`

	// Unique identifier for this Document AI step in the workflow graph.
	NodeID string                                    `json:"node_id"`
	Items  []SessionDecisionDocumentAiDocumentsItems `json:"items"`

	// Warning logs raised for this Document AI node.
	Warnings []map[string]any `json:"warnings"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionDocumentAiDocuments: Document AI results grouped by workflow node.

func (*SessionDecisionDocumentAiDocuments) UnmarshalJSON

func (r *SessionDecisionDocumentAiDocuments) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionDocumentAiDocuments leniently.

type SessionDecisionDocumentAiDocumentsItems

type SessionDecisionDocumentAiDocumentsItems struct {
	UUID string `json:"uuid"`

	// Workflow graph node that produced this document.
	NodeID string `json:"node_id"`

	// Key of the configured Document AI document this file corresponds to.
	DocumentKey string `json:"document_key"`

	// Filename as uploaded by the user.
	OriginalFilename string `json:"original_filename"`

	// File size in bytes.
	FileSize int64 `json:"file_size"`

	// Short-lived presigned link to the uploaded file.
	FileURL string `json:"file_url"`

	// Per-document Document AI status.
	Status SessionDecisionDocumentAiDocumentsItemsStatus `json:"status"`

	// Values extracted by Document AI, keyed by the configured field `key`. Each
	// value is a string, number, or `null`.
	ExtractedData map[string]any `json:"extracted_data"`

	// QR codes and barcodes detected across every processed page. Empty when none
	// are found. A located but undecodable QR code has `parsed_payload: null`.
	DetectedCodes []DocumentAiDetectedCode `json:"detected_codes"`

	// The configured extraction fields for this document.
	Fields []SessionDecisionDocumentAiDocumentsItemsFields `json:"fields"`

	// File-forensics metadata extracted from the uploaded document (e.g.
	// `is_tampered`). `null` when nothing could be extracted.
	DocumentMetadata map[string]any `json:"document_metadata"`

	// Cross-reference of the extracted document fields against other session data.
	// `null` when no cross-check was performed.
	CrossCheckResult map[string]any `json:"cross_check_result"`
	CreatedAt        time.Time      `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionDocumentAiDocumentsItems is a response object.

func (*SessionDecisionDocumentAiDocumentsItems) UnmarshalJSON

func (r *SessionDecisionDocumentAiDocumentsItems) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionDocumentAiDocumentsItems leniently.

type SessionDecisionDocumentAiDocumentsItemsFields

type SessionDecisionDocumentAiDocumentsItemsFields struct {
	// Stable field key used as the key in `extracted_data`.
	Key string `json:"key"`

	// Human-readable field name.
	Name string `json:"name"`

	// Extraction instruction shown to the model.
	Instruction string `json:"instruction"`

	// Expected value type of the extracted field.
	Type SessionDecisionDocumentAiDocumentsItemsFieldsType `json:"type"`

	// Whether this field is required.
	Required bool `json:"required"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionDocumentAiDocumentsItemsFields is a response object.

func (*SessionDecisionDocumentAiDocumentsItemsFields) UnmarshalJSON

func (r *SessionDecisionDocumentAiDocumentsItemsFields) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionDocumentAiDocumentsItemsFields leniently.

type SessionDecisionDocumentAiDocumentsItemsFieldsType

type SessionDecisionDocumentAiDocumentsItemsFieldsType string

SessionDecisionDocumentAiDocumentsItemsFieldsType: Expected value type of the extracted field.

SessionDecisionDocumentAiDocumentsItemsFieldsType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionDocumentAiDocumentsItemsFieldsTypeText   SessionDecisionDocumentAiDocumentsItemsFieldsType = "text"
	SessionDecisionDocumentAiDocumentsItemsFieldsTypeNumber SessionDecisionDocumentAiDocumentsItemsFieldsType = "number"
	SessionDecisionDocumentAiDocumentsItemsFieldsTypeDate   SessionDecisionDocumentAiDocumentsItemsFieldsType = "date"
)

Known values of SessionDecisionDocumentAiDocumentsItemsFieldsType.

type SessionDecisionDocumentAiDocumentsItemsStatus

type SessionDecisionDocumentAiDocumentsItemsStatus string

SessionDecisionDocumentAiDocumentsItemsStatus: Per-document Document AI status.

SessionDecisionDocumentAiDocumentsItemsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionDocumentAiDocumentsItemsStatusApproved    SessionDecisionDocumentAiDocumentsItemsStatus = "Approved"
	SessionDecisionDocumentAiDocumentsItemsStatusDeclined    SessionDecisionDocumentAiDocumentsItemsStatus = "Declined"
	SessionDecisionDocumentAiDocumentsItemsStatusInReview    SessionDecisionDocumentAiDocumentsItemsStatus = "In Review"
	SessionDecisionDocumentAiDocumentsItemsStatusNotFinished SessionDecisionDocumentAiDocumentsItemsStatus = "Not Finished"
)

Known values of SessionDecisionDocumentAiDocumentsItemsStatus.

type SessionDecisionDocumentAiDocumentsStatus

type SessionDecisionDocumentAiDocumentsStatus string

SessionDecisionDocumentAiDocumentsStatus: Aggregate Document AI status for this node, rolled up from its `items[]`.

SessionDecisionDocumentAiDocumentsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionDocumentAiDocumentsStatusApproved    SessionDecisionDocumentAiDocumentsStatus = "Approved"
	SessionDecisionDocumentAiDocumentsStatusDeclined    SessionDecisionDocumentAiDocumentsStatus = "Declined"
	SessionDecisionDocumentAiDocumentsStatusInReview    SessionDecisionDocumentAiDocumentsStatus = "In Review"
	SessionDecisionDocumentAiDocumentsStatusNotFinished SessionDecisionDocumentAiDocumentsStatus = "Not Finished"
)

Known values of SessionDecisionDocumentAiDocumentsStatus.

type SessionDecisionDocumentVerifications

type SessionDecisionDocumentVerifications struct {
	Status string                                      `json:"status"`
	NodeID string                                      `json:"node_id"`
	Items  []SessionDecisionDocumentVerificationsItems `json:"items"`

	// Per-group progress counters keyed by group name (e.g. legal_presence,
	// ownership_structure).
	Groups         map[string]SessionDecisionDocumentVerificationsGroups `json:"groups"`
	RequiredGroups []string                                              `json:"required_groups"`
	Warnings       []map[string]any                                      `json:"warnings"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionDocumentVerifications: Documents grouped by workflow node. Present only when session_kind = business.

func (*SessionDecisionDocumentVerifications) UnmarshalJSON

func (r *SessionDecisionDocumentVerifications) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionDocumentVerifications leniently.

type SessionDecisionDocumentVerificationsGroups

type SessionDecisionDocumentVerificationsGroups struct {
	Total    int64 `json:"total"`
	Approved int64 `json:"approved"`
	Pending  int64 `json:"pending"`
	Declined int64 `json:"declined"`
	InReview int64 `json:"in_review"`
	Other    int64 `json:"other"`

	// Requested placeholders with no file uploaded yet.
	Missing int64 `json:"missing"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionDocumentVerificationsGroups is a response object.

func (*SessionDecisionDocumentVerificationsGroups) UnmarshalJSON

func (r *SessionDecisionDocumentVerificationsGroups) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionDocumentVerificationsGroups leniently.

type SessionDecisionDocumentVerificationsItems

type SessionDecisionDocumentVerificationsItems struct {
	UUID string `json:"uuid"`

	// High-level KYB document group the file was classified into. `null` while
	// unclassified.
	DocumentType SessionDecisionDocumentVerificationsItemsDocumentType `json:"document_type"`

	// Specific OCR-detected subtype (e.g. `CERTIFICATE_OF_INCORPORATION`,
	// `SHAREHOLDER_REGISTRY`); `UNKNOWN` when the OCR could not confidently
	// classify the document.
	DocumentSubtype string `json:"document_subtype"`

	// Alias of `document_type` - the group name used by `groups` and
	// `required_groups`.
	DocumentGroup SessionDecisionDocumentVerificationsItemsDocumentGroup `json:"document_group"`

	// Short-lived presigned link to the uploaded file. `null` for analyst-created
	// document request placeholders (`is_requested = true`) that have not been
	// fulfilled yet.
	FileURL string `json:"file_url"`

	// Filename as uploaded by the user or analyst.
	OriginalFilename string `json:"original_filename"`

	// File size in bytes.
	FileSize int64 `json:"file_size"`

	// Per-document verification status.
	Status    SessionDecisionDocumentVerificationsItemsStatus `json:"status"`
	CreatedAt time.Time                                       `json:"created_at"`

	// Cross-reference of the OCR-extracted document fields against the registry
	// company profile. An object with `critical`, `non_critical` and `people`
	// sections, each mapping a field name (e.g. `company_name`,
	// `registration_number`, `incorporation_date`, `registered_address`) to a
	// comparison record like `{"document": "...", "registry": "...", "match": true,
	// "score": 0.97}`. `null` when the document had no OCR data or there was no
	// registry company to compare against.
	CrossCheckResult map[string]any `json:"cross_check_result"`

	// Metadata extracted from the uploaded corporate document. When metadata
	// extraction succeeded, all 16 keys are always present (individual values are
	// `null` when not applicable to the file type); the whole object is `null` when
	// nothing could be extracted. For PDFs, `overlay_manipulation` carries forensic
	// overlay-text analysis.
	DocumentMetadata SessionDecisionDocumentVerificationsItemsDocumentMetadata `json:"document_metadata"`

	// Analyst-provided label or reason for a document request. `null` for regular
	// uploads.
	Description string `json:"description"`

	// True for analyst-created document request placeholders awaiting an upload.
	IsRequested bool           `json:"is_requested"`
	OCRData     map[string]any `json:"ocr_data"`

	// True for documents uploaded from the console rather than the end-user flow.
	// Console uploads never change the feature-level aggregate status.
	IsConsoleUpload bool `json:"is_console_upload"`

	// Console uploads start `false` and flip `true` once the admin confirms them;
	// end-user uploads are always `true`.
	IsConfirmed bool `json:"is_confirmed"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionDocumentVerificationsItems is a response object.

func (*SessionDecisionDocumentVerificationsItems) UnmarshalJSON

func (r *SessionDecisionDocumentVerificationsItems) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionDocumentVerificationsItems leniently.

type SessionDecisionDocumentVerificationsItemsDocumentGroup

type SessionDecisionDocumentVerificationsItemsDocumentGroup string

SessionDecisionDocumentVerificationsItemsDocumentGroup: Alias of `document_type` - the group name used by `groups` and `required_groups`.

SessionDecisionDocumentVerificationsItemsDocumentGroup is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionDocumentVerificationsItemsDocumentGroupLegalPresence                SessionDecisionDocumentVerificationsItemsDocumentGroup = "LEGAL_PRESENCE"
	SessionDecisionDocumentVerificationsItemsDocumentGroupCompanyDetails               SessionDecisionDocumentVerificationsItemsDocumentGroup = "COMPANY_DETAILS"
	SessionDecisionDocumentVerificationsItemsDocumentGroupOwnershipStructure           SessionDecisionDocumentVerificationsItemsDocumentGroup = "OWNERSHIP_STRUCTURE"
	SessionDecisionDocumentVerificationsItemsDocumentGroupRepresentativesAuthorization SessionDecisionDocumentVerificationsItemsDocumentGroup = "REPRESENTATIVES_AUTHORIZATION"
	SessionDecisionDocumentVerificationsItemsDocumentGroupOther                        SessionDecisionDocumentVerificationsItemsDocumentGroup = "OTHER"
)

Known values of SessionDecisionDocumentVerificationsItemsDocumentGroup.

type SessionDecisionDocumentVerificationsItemsDocumentMetadata

type SessionDecisionDocumentVerificationsItemsDocumentMetadata struct {
	// Size of the document.
	FileSize int64 `json:"file_size"`

	// Content type of the document.
	ContentType string `json:"content_type"`

	// Date when the document was created.
	CreationDate string `json:"creation_date"`

	// Date when the document was modified.
	ModifiedDate string `json:"modified_date"`

	// Authoring tool/user recorded in the file metadata (PDF `Creator`).
	Creator string `json:"creator"`

	// Software that produced the file (PDF `Producer`).
	Producer string `json:"producer"`

	// Editing software recorded in the file metadata.
	Software string `json:"software"`

	// Encryption scheme of the file, when encrypted.
	Encryption string `json:"encryption"`

	// Whether the document carries a digital signature.
	IsSigned bool `json:"is_signed"`

	// Whether the digital signature failed validation (post-signing modification).
	IsTampered bool `json:"is_tampered"`

	// Details of the digital signature(s), when present.
	SignatureInfo map[string]any `json:"signature_info"`

	// EXIF original capture date, for image uploads.
	ExifOriginalDate string `json:"exif_original_date"`

	// EXIF digitization date, for image uploads.
	ExifDigitizedDate string `json:"exif_digitized_date"`

	// Whether metadata indicates the file passed through a known image/PDF editor.
	ProcessedByKnownEditor bool `json:"processed_by_known_editor"`

	// Whether creation and modification dates differ - a possible (but not
	// conclusive) editing signal.
	HasDifferentCreationModDate bool `json:"has_different_creation_mod_date"`

	// PDF forensic analysis for suspected overlay-text manipulation. Null when no
	// overlay manipulation evidence was found or the document was not a PDF.
	OverlayManipulation SessionDecisionDocumentVerificationsItemsDocumentMetadataOverlayManipulation `json:"overlay_manipulation"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionDocumentVerificationsItemsDocumentMetadata: Metadata extracted from the uploaded corporate document. When metadata extraction succeeded, all 16 keys are always present (individual values are `null` when not applicable to the file type); the whole object is `null` when nothing could be extracted. For PDFs, `overlay_manipulation` carries forensic overlay-text analysis.

func (*SessionDecisionDocumentVerificationsItemsDocumentMetadata) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionDocumentVerificationsItemsDocumentMetadata leniently.

type SessionDecisionDocumentVerificationsItemsDocumentMetadataOverlayManipulation

type SessionDecisionDocumentVerificationsItemsDocumentMetadataOverlayManipulation struct {
	// Whether overlay-text manipulation evidence was detected.
	Detected bool `json:"detected"`

	// Whether the PDF could be analyzed.
	Analyzed bool `json:"analyzed"`

	// Forensic signals that fired, such as duplicate_font_subset or
	// glyph_fragmentation.
	Signals []string `json:"signals"`

	// Suspected manipulated areas in PDF page coordinates.
	ManipulatedRegions []SessionDecisionDocumentVerificationsItemsDocumentMetadataOverlayManipulationManipulatedRegions `json:"manipulated_regions"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionDocumentVerificationsItemsDocumentMetadataOverlayManipulation: PDF forensic analysis for suspected overlay-text manipulation. Null when no overlay manipulation evidence was found or the document was not a PDF.

func (*SessionDecisionDocumentVerificationsItemsDocumentMetadataOverlayManipulation) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionDocumentVerificationsItemsDocumentMetadataOverlayManipulation leniently.

type SessionDecisionDocumentVerificationsItemsDocumentMetadataOverlayManipulationManipulatedRegions

type SessionDecisionDocumentVerificationsItemsDocumentMetadataOverlayManipulationManipulatedRegions struct {
	Page       int64   `json:"page"`
	X          float64 `json:"x"`
	Y          float64 `json:"y"`
	Width      float64 `json:"width"`
	Height     float64 `json:"height"`
	PageWidth  float64 `json:"page_width"`
	PageHeight float64 `json:"page_height"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionDocumentVerificationsItemsDocumentMetadataOverlayManipulationManipulatedRegions is a response object.

func (*SessionDecisionDocumentVerificationsItemsDocumentMetadataOverlayManipulationManipulatedRegions) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionDocumentVerificationsItemsDocumentMetadataOverlayManipulationManipulatedRegions leniently.

type SessionDecisionDocumentVerificationsItemsDocumentType

type SessionDecisionDocumentVerificationsItemsDocumentType string

SessionDecisionDocumentVerificationsItemsDocumentType: High-level KYB document group the file was classified into. `null` while unclassified.

SessionDecisionDocumentVerificationsItemsDocumentType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionDocumentVerificationsItemsDocumentTypeLegalPresence                SessionDecisionDocumentVerificationsItemsDocumentType = "LEGAL_PRESENCE"
	SessionDecisionDocumentVerificationsItemsDocumentTypeCompanyDetails               SessionDecisionDocumentVerificationsItemsDocumentType = "COMPANY_DETAILS"
	SessionDecisionDocumentVerificationsItemsDocumentTypeOwnershipStructure           SessionDecisionDocumentVerificationsItemsDocumentType = "OWNERSHIP_STRUCTURE"
	SessionDecisionDocumentVerificationsItemsDocumentTypeRepresentativesAuthorization SessionDecisionDocumentVerificationsItemsDocumentType = "REPRESENTATIVES_AUTHORIZATION"
	SessionDecisionDocumentVerificationsItemsDocumentTypeOther                        SessionDecisionDocumentVerificationsItemsDocumentType = "OTHER"
)

Known values of SessionDecisionDocumentVerificationsItemsDocumentType.

type SessionDecisionDocumentVerificationsItemsStatus

type SessionDecisionDocumentVerificationsItemsStatus string

SessionDecisionDocumentVerificationsItemsStatus: Per-document verification status.

SessionDecisionDocumentVerificationsItemsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionDocumentVerificationsItemsStatusNotFinished    SessionDecisionDocumentVerificationsItemsStatus = "Not Finished"
	SessionDecisionDocumentVerificationsItemsStatusApproved       SessionDecisionDocumentVerificationsItemsStatus = "Approved"
	SessionDecisionDocumentVerificationsItemsStatusDeclined       SessionDecisionDocumentVerificationsItemsStatus = "Declined"
	SessionDecisionDocumentVerificationsItemsStatusInReview       SessionDecisionDocumentVerificationsItemsStatus = "In Review"
	SessionDecisionDocumentVerificationsItemsStatusResubRequested SessionDecisionDocumentVerificationsItemsStatus = "Resub Requested"
)

Known values of SessionDecisionDocumentVerificationsItemsStatus.

type SessionDecisionEmailVerifications

type SessionDecisionEmailVerifications struct {
	// Unique identifier for this email step in the workflow graph.
	NodeID string `json:"node_id"`

	// Feature-level status of this email verification step. Independent of the
	// top-level session `status` - a session can reach its overall decision while
	// an individual feature stays `In Review`.
	Status SessionDecisionEmailVerificationsStatus `json:"status"`

	// The email address being verified
	Email string `json:"email"`

	// Indicates if the email was found in known data breaches
	IsBreached bool `json:"is_breached"`

	// List of known breaches this email was found in
	Breaches []SessionDecisionEmailVerificationsBreaches `json:"breaches"`

	// Indicates if the email is from a disposable provider
	IsDisposable bool `json:"is_disposable"`

	// Indicates if the email address is undeliverable
	IsUndeliverable bool `json:"is_undeliverable"`

	// Number of verification attempts for this email
	VerificationAttempts int64 `json:"verification_attempts"`

	// Timestamp when the email was verified
	VerifiedAt time.Time `json:"verified_at"`

	// List of warnings related to email verification
	Warnings []SessionDecisionEmailVerificationsWarnings `json:"warnings"`

	// Chronological list of events in the email verification lifecycle.
	Lifecycle []SessionDecisionEmailVerificationsLifecycle `json:"lifecycle"`

	// Matches found for this email address. Each match has a `source`: `session`
	// (another verification session in your application matched on the same email,
	// returned with
	// `session_id`/`session_number`/`vendor_data`/`verification_date`) or
	// `list_entry` (the email is on an org-managed allow/block list - see
	// `/management-api/lists/overview`). Cross-session matches use different
	// `vendor_data` and are capped at 5.
	Matches []SessionDecisionEmailVerificationsMatches `json:"matches"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionEmailVerifications is a response object.

func (*SessionDecisionEmailVerifications) UnmarshalJSON

func (r *SessionDecisionEmailVerifications) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionEmailVerifications leniently.

type SessionDecisionEmailVerificationsBreaches

type SessionDecisionEmailVerificationsBreaches struct {
	// Name of the breach
	Name string `json:"name"`

	// Domain affected by the breach
	Domain string `json:"domain"`

	// URL to the logo of the breached service
	LogoPath string `json:"logo_path"`

	// Date when the breach occurred
	BreachDate string `json:"breach_date"`

	// Description of the breach
	Description string `json:"description"`

	// Whether the breach is verified
	IsVerified bool `json:"is_verified"`

	// Types of data exposed in the breach
	DataClasses []string `json:"data_classes"`

	// Number of email addresses affected in the breach
	BreachEmailsCount int64 `json:"breach_emails_count"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionEmailVerificationsBreaches is a response object.

func (*SessionDecisionEmailVerificationsBreaches) UnmarshalJSON

func (r *SessionDecisionEmailVerificationsBreaches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionEmailVerificationsBreaches leniently.

type SessionDecisionEmailVerificationsLifecycle

type SessionDecisionEmailVerificationsLifecycle struct {
	Type      string    `json:"type"`
	Timestamp time.Time `json:"timestamp"`

	// Event-specific payload. Send events carry `status`, `reason`; code-check
	// events carry `code_tried`, `status`; final status events carry `reason` - or
	// `null` when there is no reason to report (e.g.
	// `EMAIL_VERIFICATION_APPROVED`).
	Details SessionDecisionEmailVerificationsLifecycleDetails `json:"details"`
	Fee     float64                                           `json:"fee"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionEmailVerificationsLifecycle is a response object.

func (*SessionDecisionEmailVerificationsLifecycle) UnmarshalJSON

func (r *SessionDecisionEmailVerificationsLifecycle) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionEmailVerificationsLifecycle leniently.

type SessionDecisionEmailVerificationsLifecycleDetails

type SessionDecisionEmailVerificationsLifecycleDetails struct {
	Status    string `json:"status"`
	Reason    string `json:"reason"`
	CodeTried string `json:"code_tried"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionEmailVerificationsLifecycleDetails: Event-specific payload. Send events carry `status`, `reason`; code-check events carry `code_tried`, `status`; final status events carry `reason` - or `null` when there is no reason to report (e.g. `EMAIL_VERIFICATION_APPROVED`).

func (*SessionDecisionEmailVerificationsLifecycleDetails) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionEmailVerificationsLifecycleDetails leniently.

type SessionDecisionEmailVerificationsMatches

type SessionDecisionEmailVerificationsMatches struct {
	SessionID        string    `json:"session_id"`
	SessionNumber    int64     `json:"session_number"`
	VendorData       string    `json:"vendor_data"`
	VerificationDate time.Time `json:"verification_date"`
	Email            string    `json:"email"`
	Status           string    `json:"status"`
	IsBlocklisted    bool      `json:"is_blocklisted"`
	APIService       string    `json:"api_service"`

	// Where this match came from. `session` means another verification session in
	// your application matched on this value. `list_entry` means the value was hit
	// against an org-managed list (allowlist/blocklist) - see the management API
	// lists overview at `/management-api/lists/overview` for how to manage those
	// lists.
	Source SessionDecisionEmailVerificationsMatchesSource `json:"source"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionEmailVerificationsMatches is a response object.

func (*SessionDecisionEmailVerificationsMatches) UnmarshalJSON

func (r *SessionDecisionEmailVerificationsMatches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionEmailVerificationsMatches leniently.

type SessionDecisionEmailVerificationsMatchesSource

type SessionDecisionEmailVerificationsMatchesSource string

SessionDecisionEmailVerificationsMatchesSource: Where this match came from. `session` means another verification session in your application matched on this value. `list_entry` means the value was hit against an org-managed list (allowlist/blocklist) - see the management API lists overview at `/management-api/lists/overview` for how to manage those lists.

SessionDecisionEmailVerificationsMatchesSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionEmailVerificationsMatchesSourceSession   SessionDecisionEmailVerificationsMatchesSource = "session"
	SessionDecisionEmailVerificationsMatchesSourceListEntry SessionDecisionEmailVerificationsMatchesSource = "list_entry"
)

Known values of SessionDecisionEmailVerificationsMatchesSource.

type SessionDecisionEmailVerificationsStatus

type SessionDecisionEmailVerificationsStatus string

SessionDecisionEmailVerificationsStatus: Feature-level status of this email verification step. Independent of the top-level session `status` - a session can reach its overall decision while an individual feature stays `In Review`.

SessionDecisionEmailVerificationsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionEmailVerificationsStatusNotFinished SessionDecisionEmailVerificationsStatus = "Not Finished"
	SessionDecisionEmailVerificationsStatusApproved    SessionDecisionEmailVerificationsStatus = "Approved"
	SessionDecisionEmailVerificationsStatusDeclined    SessionDecisionEmailVerificationsStatus = "Declined"
	SessionDecisionEmailVerificationsStatusInReview    SessionDecisionEmailVerificationsStatus = "In Review"
	SessionDecisionEmailVerificationsStatusExpired     SessionDecisionEmailVerificationsStatus = "Expired"
)

Known values of SessionDecisionEmailVerificationsStatus.

type SessionDecisionEmailVerificationsWarnings

type SessionDecisionEmailVerificationsWarnings struct {
	// The feature that generated this warning. The value identifies the feature
	// block the warning belongs to. Each module's warnings array typically uses the
	// value matching its module (e.g. `PHONE` inside
	// `phone_verifications[].warnings`), but the enum above is authoritative across
	// all feature warnings on the decision payload.
	Feature          SessionDecisionEmailVerificationsWarningsFeature `json:"feature"`
	Risk             string                                           `json:"risk"`
	AdditionalData   map[string]any                                   `json:"additional_data"`
	LogType          string                                           `json:"log_type"`
	ShortDescription string                                           `json:"short_description"`
	LongDescription  string                                           `json:"long_description"`

	// The workflow graph node ID that generated this warning
	NodeID string `json:"node_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionEmailVerificationsWarnings is a response object.

func (*SessionDecisionEmailVerificationsWarnings) UnmarshalJSON

func (r *SessionDecisionEmailVerificationsWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionEmailVerificationsWarnings leniently.

type SessionDecisionEmailVerificationsWarningsFeature

type SessionDecisionEmailVerificationsWarningsFeature string

SessionDecisionEmailVerificationsWarningsFeature: The feature that generated this warning. The value identifies the feature block the warning belongs to. Each module's warnings array typically uses the value matching its module (e.g. `PHONE` inside `phone_verifications[].warnings`), but the enum above is authoritative across all feature warnings on the decision payload.

SessionDecisionEmailVerificationsWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionEmailVerificationsWarningsFeatureIDVerification     SessionDecisionEmailVerificationsWarningsFeature = "ID_VERIFICATION"
	SessionDecisionEmailVerificationsWarningsFeatureNFC                SessionDecisionEmailVerificationsWarningsFeature = "NFC"
	SessionDecisionEmailVerificationsWarningsFeatureLiveness           SessionDecisionEmailVerificationsWarningsFeature = "LIVENESS"
	SessionDecisionEmailVerificationsWarningsFeatureFacematch          SessionDecisionEmailVerificationsWarningsFeature = "FACEMATCH"
	SessionDecisionEmailVerificationsWarningsFeatureProofOfAddress     SessionDecisionEmailVerificationsWarningsFeature = "PROOF_OF_ADDRESS"
	SessionDecisionEmailVerificationsWarningsFeaturePhone              SessionDecisionEmailVerificationsWarningsFeature = "PHONE"
	SessionDecisionEmailVerificationsWarningsFeatureEmail              SessionDecisionEmailVerificationsWarningsFeature = "EMAIL"
	SessionDecisionEmailVerificationsWarningsFeatureAML                SessionDecisionEmailVerificationsWarningsFeature = "AML"
	SessionDecisionEmailVerificationsWarningsFeatureLocation           SessionDecisionEmailVerificationsWarningsFeature = "LOCATION"
	SessionDecisionEmailVerificationsWarningsFeatureDatabaseValidation SessionDecisionEmailVerificationsWarningsFeature = "DATABASE_VALIDATION"
	SessionDecisionEmailVerificationsWarningsFeatureQuestionnaire      SessionDecisionEmailVerificationsWarningsFeature = "QUESTIONNAIRE"
	SessionDecisionEmailVerificationsWarningsFeatureDocumentAi         SessionDecisionEmailVerificationsWarningsFeature = "DOCUMENT_AI"
	SessionDecisionEmailVerificationsWarningsFeatureKYBRegistry        SessionDecisionEmailVerificationsWarningsFeature = "KYB_REGISTRY"
	SessionDecisionEmailVerificationsWarningsFeatureKYBDocuments       SessionDecisionEmailVerificationsWarningsFeature = "KYB_DOCUMENTS"
	SessionDecisionEmailVerificationsWarningsFeatureKYBKeyPeople       SessionDecisionEmailVerificationsWarningsFeature = "KYB_KEY_PEOPLE"
)

Known values of SessionDecisionEmailVerificationsWarningsFeature.

type SessionDecisionEnvironment

type SessionDecisionEnvironment string

SessionDecisionEnvironment: Whether the session was created by a live application (`live`) or a sandbox application (`sandbox`). Sandbox sessions are free, fully simulated, and never bill credits.

SessionDecisionEnvironment is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionEnvironmentLive    SessionDecisionEnvironment = "live"
	SessionDecisionEnvironmentSandbox SessionDecisionEnvironment = "sandbox"
)

Known values of SessionDecisionEnvironment.

type SessionDecisionExpectedDetails

type SessionDecisionExpectedDetails struct {
	// User's first name. For example, `John`.
	FirstName string `json:"first_name"`

	// User's last name. For example, `Doe`.
	LastName string `json:"last_name"`

	// User's date of birth with format: YYYY-MM-DD. For example, `1990-05-15`.
	DateOfBirth string `json:"date_of_birth"`

	// User's gender. Must be either 'M', 'F', or null.
	Gender SessionDecisionExpectedDetailsGender `json:"gender"`

	// ISO 3166-1 alpha-3 country code representing the applicant's country of
	// origin. For example, `USA`.
	Nationality string `json:"nationality"`

	// ISO 3166-1 alpha-3 country code representing the country of the Proof of
	// Address document, or the country of the applicant's ID document, which may
	// differ from nationality. For example, `GBR`.
	Country string `json:"country"`

	// The address in a human readable format, including as much information as
	// possible. For example, `123 Main St, San Francisco, CA 94105, USA`.
	Address string `json:"address"`

	// The user's document number, personal number, or tax number. For example,
	// `123456789`.
	IdentificationNumber string `json:"identification_number"`

	// Expected IP address for the session. If the actual IP address differs from
	// this value, a warning will be logged. For example, `192.168.1.100`.
	IPAddress string `json:"ip_address"`

	// Document types the ID verification step was restricted to at session
	// creation. Empty/unset means no restriction. Codes: `P` (passport), `ID`
	// (national ID), `DL` (driver's license), `RP` (residence permit), `HIC`
	// (health insurance card), `TC` (tax card), `SSC` (social security card).
	ExpectedDocumentTypes []SessionDecisionExpectedDetailsExpectedDocumentTypes `json:"expected_document_types"`

	// Expected ID-document issuing country (ISO 3166-1 alpha-3), when restricted at
	// creation time.
	IDCountry string `json:"id_country"`

	// Expected Proof of Address document country (ISO 3166-1 alpha-3), when
	// restricted at creation time.
	POACountry string `json:"poa_country"`

	// Expected legal name of the business. Business (KYB) sessions only.
	CompanyName string `json:"company_name"`

	// Expected registry country as `XX` or `XX-YY` (ISO 3166-1 alpha-2, optionally
	// with an ISO 3166-2 subdivision for state-level registries, e.g. `US-CA`).
	// Business (KYB) sessions only.
	RegistryCountry string `json:"registry_country"`

	// Expected company registration number. Business (KYB) sessions only.
	RegistrationNumber string `json:"registration_number"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionExpectedDetails: Expected details supplied at session creation - used for cross-validation against extracted data (KYC) or to pre-fill the company registry search (KYB). Echoes back exactly the keys that were provided; `null` when none were supplied. KYC sessions carry the person fields; Business (KYB) sessions carry `company_name`, `registry_country` and `registration_number`.

func (*SessionDecisionExpectedDetails) UnmarshalJSON

func (r *SessionDecisionExpectedDetails) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionExpectedDetails leniently.

type SessionDecisionExpectedDetailsExpectedDocumentTypes

type SessionDecisionExpectedDetailsExpectedDocumentTypes string

SessionDecisionExpectedDetailsExpectedDocumentTypes is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionExpectedDetailsExpectedDocumentTypesP   SessionDecisionExpectedDetailsExpectedDocumentTypes = "P"
	SessionDecisionExpectedDetailsExpectedDocumentTypesID  SessionDecisionExpectedDetailsExpectedDocumentTypes = "ID"
	SessionDecisionExpectedDetailsExpectedDocumentTypesDl  SessionDecisionExpectedDetailsExpectedDocumentTypes = "DL"
	SessionDecisionExpectedDetailsExpectedDocumentTypesRp  SessionDecisionExpectedDetailsExpectedDocumentTypes = "RP"
	SessionDecisionExpectedDetailsExpectedDocumentTypesHic SessionDecisionExpectedDetailsExpectedDocumentTypes = "HIC"
	SessionDecisionExpectedDetailsExpectedDocumentTypesTc  SessionDecisionExpectedDetailsExpectedDocumentTypes = "TC"
	SessionDecisionExpectedDetailsExpectedDocumentTypesSsc SessionDecisionExpectedDetailsExpectedDocumentTypes = "SSC"
)

Known values of SessionDecisionExpectedDetailsExpectedDocumentTypes.

type SessionDecisionExpectedDetailsGender

type SessionDecisionExpectedDetailsGender string

SessionDecisionExpectedDetailsGender: User's gender. Must be either 'M', 'F', or null.

SessionDecisionExpectedDetailsGender is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionExpectedDetailsGenderM SessionDecisionExpectedDetailsGender = "M"
	SessionDecisionExpectedDetailsGenderF SessionDecisionExpectedDetailsGender = "F"
)

Known values of SessionDecisionExpectedDetailsGender.

type SessionDecisionFaceMatches

type SessionDecisionFaceMatches struct {
	// Workflow graph node id of the face-match step that produced this report.
	NodeID string `json:"node_id"`

	// Feature-level status of this face-match step. Independent of the top-level
	// session `status` - a session can reach its overall decision while an
	// individual feature stays `In Review`.
	Status SessionDecisionFaceMatchesStatus `json:"status"`

	// Confidence score of the face match
	Score float64 `json:"score"`

	// Session id under which the source (reference) portrait is stored. In
	// biometric-authentication flows this is the session's own id (the submitted
	// portrait is stored under the new session). `null` when the source image is
	// the same session's document portrait.
	SourceImageSessionID string `json:"source_image_session_id"`

	// URL of the source image used for comparison
	SourceImage string `json:"source_image"`

	// URL of the target image used for comparison
	TargetImage string `json:"target_image"`

	// Face match verification warnings
	Warnings []SessionDecisionFaceMatchesWarnings `json:"warnings"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionFaceMatches: One face-match report - the full report.

func (*SessionDecisionFaceMatches) UnmarshalJSON

func (r *SessionDecisionFaceMatches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionFaceMatches leniently.

type SessionDecisionFaceMatchesStatus

type SessionDecisionFaceMatchesStatus string

SessionDecisionFaceMatchesStatus: Feature-level status of this face-match step. Independent of the top-level session `status` - a session can reach its overall decision while an individual feature stays `In Review`.

SessionDecisionFaceMatchesStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionFaceMatchesStatusNotFinished    SessionDecisionFaceMatchesStatus = "Not Finished"
	SessionDecisionFaceMatchesStatusApproved       SessionDecisionFaceMatchesStatus = "Approved"
	SessionDecisionFaceMatchesStatusDeclined       SessionDecisionFaceMatchesStatus = "Declined"
	SessionDecisionFaceMatchesStatusInReview       SessionDecisionFaceMatchesStatus = "In Review"
	SessionDecisionFaceMatchesStatusResubRequested SessionDecisionFaceMatchesStatus = "Resub Requested"
)

Known values of SessionDecisionFaceMatchesStatus.

type SessionDecisionFaceMatchesWarnings

type SessionDecisionFaceMatchesWarnings struct {
	// The feature that generated this warning. The value identifies the feature
	// block the warning belongs to. Each module's warnings array typically uses the
	// value matching its module (e.g. `PHONE` inside
	// `phone_verifications[].warnings`), but the enum above is authoritative across
	// all feature warnings on the decision payload.
	Feature          SessionDecisionFaceMatchesWarningsFeature `json:"feature"`
	Risk             string                                    `json:"risk"`
	AdditionalData   map[string]any                            `json:"additional_data"`
	LogType          string                                    `json:"log_type"`
	ShortDescription string                                    `json:"short_description"`
	LongDescription  string                                    `json:"long_description"`

	// The workflow graph node ID that generated this warning
	NodeID string `json:"node_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionFaceMatchesWarnings is a response object.

func (*SessionDecisionFaceMatchesWarnings) UnmarshalJSON

func (r *SessionDecisionFaceMatchesWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionFaceMatchesWarnings leniently.

type SessionDecisionFaceMatchesWarningsFeature

type SessionDecisionFaceMatchesWarningsFeature string

SessionDecisionFaceMatchesWarningsFeature: The feature that generated this warning. The value identifies the feature block the warning belongs to. Each module's warnings array typically uses the value matching its module (e.g. `PHONE` inside `phone_verifications[].warnings`), but the enum above is authoritative across all feature warnings on the decision payload.

SessionDecisionFaceMatchesWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionFaceMatchesWarningsFeatureIDVerification     SessionDecisionFaceMatchesWarningsFeature = "ID_VERIFICATION"
	SessionDecisionFaceMatchesWarningsFeatureNFC                SessionDecisionFaceMatchesWarningsFeature = "NFC"
	SessionDecisionFaceMatchesWarningsFeatureLiveness           SessionDecisionFaceMatchesWarningsFeature = "LIVENESS"
	SessionDecisionFaceMatchesWarningsFeatureFacematch          SessionDecisionFaceMatchesWarningsFeature = "FACEMATCH"
	SessionDecisionFaceMatchesWarningsFeatureProofOfAddress     SessionDecisionFaceMatchesWarningsFeature = "PROOF_OF_ADDRESS"
	SessionDecisionFaceMatchesWarningsFeaturePhone              SessionDecisionFaceMatchesWarningsFeature = "PHONE"
	SessionDecisionFaceMatchesWarningsFeatureEmail              SessionDecisionFaceMatchesWarningsFeature = "EMAIL"
	SessionDecisionFaceMatchesWarningsFeatureAML                SessionDecisionFaceMatchesWarningsFeature = "AML"
	SessionDecisionFaceMatchesWarningsFeatureLocation           SessionDecisionFaceMatchesWarningsFeature = "LOCATION"
	SessionDecisionFaceMatchesWarningsFeatureDatabaseValidation SessionDecisionFaceMatchesWarningsFeature = "DATABASE_VALIDATION"
	SessionDecisionFaceMatchesWarningsFeatureQuestionnaire      SessionDecisionFaceMatchesWarningsFeature = "QUESTIONNAIRE"
	SessionDecisionFaceMatchesWarningsFeatureDocumentAi         SessionDecisionFaceMatchesWarningsFeature = "DOCUMENT_AI"
	SessionDecisionFaceMatchesWarningsFeatureKYBRegistry        SessionDecisionFaceMatchesWarningsFeature = "KYB_REGISTRY"
	SessionDecisionFaceMatchesWarningsFeatureKYBDocuments       SessionDecisionFaceMatchesWarningsFeature = "KYB_DOCUMENTS"
	SessionDecisionFaceMatchesWarningsFeatureKYBKeyPeople       SessionDecisionFaceMatchesWarningsFeature = "KYB_KEY_PEOPLE"
)

Known values of SessionDecisionFaceMatchesWarningsFeature.

type SessionDecisionIDVerifications

type SessionDecisionIDVerifications struct {
	// Workflow graph node id of the OCR step that produced this report.
	NodeID string `json:"node_id"`

	// Which ID Verification method produced this report. `document` - the user
	// photographed a physical ID (the default, and the value on every session
	// created before the other methods existed). `id_lookup` - the user typed their
	// national ID number and it was checked against a government register or
	// another authoritative source for that country (`id_lookup.source` names
	// which). `wallet` - the user signed in with a government or bank digital
	// identity.
	VerificationMethod SessionDecisionIDVerificationsVerificationMethod `json:"verification_method"`

	// Assurance tier derived from `verification_method`: `documentary` for a
	// document that was captured and checked, `data_match` for details that matched
	// a record held by the source queried, `cryptographic` for attributes an
	// identity provider authenticated and signed.
	Assurance SessionDecisionIDVerificationsAssurance `json:"assurance"`

	// Catalog wallet id when `verification_method` is `wallet` (`mitid`,
	// `bankid_se`, `itsme`, ...). `null` otherwise.
	WalletProvider string `json:"wallet_provider"`

	// Why a non-document method ended the ID step. Set on the declined report when
	// a lookup or a wallet sign-in failed and the country's fallback switch was
	// `decline`. `null` otherwise.
	FallbackFrom SessionDecisionIDVerificationsFallbackFrom `json:"fallback_from"`

	// Registry evidence. Present only when `verification_method` is `id_lookup`;
	// `null` otherwise.
	IDLookup SessionDecisionIDVerificationsIDLookup `json:"id_lookup"`

	// Credential evidence. Present only when `verification_method` is `wallet`;
	// `null` otherwise.
	WalletVerification SessionDecisionIDVerificationsWalletVerification `json:"wallet_verification"`

	// Feature-level status of this ID verification step. Independent of the
	// top-level session `status` - a session can reach its overall decision while
	// an individual feature stays `In Review`.
	Status SessionDecisionIDVerificationsStatus `json:"status"`

	// Type of identity document
	DocumentType string `json:"document_type"`

	// Accepted document subtype code from the workflow document settings, including
	// the document region when applicable. Examples: `ID_CARD_GENERIC`,
	// `QUEENSLAND_DRIVER_LICENSE_GENERIC`.
	DocumentSubtype string `json:"document_subtype"`

	// Document identification number
	DocumentNumber string `json:"document_number"`

	// Personal identification number
	PersonalNumber string `json:"personal_number"`

	// URL of the portrait image
	PortraitImage string `json:"portrait_image"`

	// URL of the front document image
	FrontImage string `json:"front_image"`

	// URL of the front document video
	FrontVideo string `json:"front_video"`

	// URL of the back document image
	BackImage string `json:"back_image"`

	// URL of the back document video
	BackVideo string `json:"back_video"`

	// URL of the full front document image
	FullFrontImage string `json:"full_front_image"`

	// URL of the full back document image
	FullBackImage string `json:"full_back_image"`

	// URL of the front document image captured from the front-facing camera
	FrontImageCameraFront string `json:"front_image_camera_front"`

	// URL of the back document image captured from the front-facing camera
	BackImageCameraFront string `json:"back_image_camera_front"`

	// Date of birth from document
	DateOfBirth string `json:"date_of_birth"`

	// Calculated age from date of birth
	Age int64 `json:"age"`

	// Document expiration date
	ExpirationDate string `json:"expiration_date"`

	// Document issue date
	DateOfIssue string `json:"date_of_issue"`

	// ISO code of issuing state
	IssuingState string `json:"issuing_state"`

	// Full name of issuing state
	IssuingStateName string `json:"issuing_state_name"`

	// First name from document
	FirstName string `json:"first_name"`

	// Last name from document
	LastName string `json:"last_name"`

	// Full name from document
	FullName string `json:"full_name"`

	// Gender from document
	Gender string `json:"gender"`

	// Raw address from document
	Address string `json:"address"`

	// Formatted full address
	FormattedAddress string `json:"formatted_address"`

	// Place of birth from document
	PlaceOfBirth string `json:"place_of_birth"`

	// Marital status from document
	MaritalStatus string `json:"marital_status"`

	// ISO nationality code
	Nationality string `json:"nationality"`

	// Additional document fields. Includes document-specific attributes (e.g.
	// `dl_categories`, `blood_group`, `sponsor`, `employer`,
	// `dl_class_code_b_from`, `dl_class_code_b_to`). Driver license class validity
	// dates are returned as `dl_class_code_<class>_from` and
	// `dl_class_code_<class>_to`, and per-class restriction/information codes (e.g.
	// column 12 of UK licences) as `dl_class_code_<class>_notes`. When the document
	// carries names, address, or place of birth in multiple scripts, this object
	// also includes alternate-script versions of those fields. The workflow setting
	// `preferred_characters` (`latin` or `non_latin`) controls which script
	// populates the top-level fields (`first_name`, `last_name`, `full_name`,
	// `address`, `place_of_birth`); the opposite script lands here as
	// `first_name_non_latin` / `last_name_non_latin` / `full_name_non_latin` /
	// `middle_name_non_latin` / `address_non_latin` / `place_of_birth_non_latin`
	// (when `preferred_characters` is `latin`) or with a `_latin` suffix (when
	// `preferred_characters` is `non_latin`). Keys appear only when the OCR
	// actually extracts a real alternate-script value - a field whose alternate
	// value is in the same script as the preferred set (for example, a
	// Cyrillic-labelled field whose OCR value came back in Latin homoglyphs) is
	// skipped. When `preferred_characters` is `latin` but the document only carries
	// non-Latin text, Didit transliterates the extracted values and exposes
	// `first_name_latin` / `last_name_latin` / etc. as a fallback.
	ExtraFields SessionDecisionIDVerificationsExtraFields `json:"extra_fields"`

	// Parsed Machine-Readable Zone (MRZ) fields extracted from the document. `null`
	// if no MRZ was detected.
	MRZ SessionDecisionIDVerificationsMRZ `json:"mrz"`

	// Structured address details
	ParsedAddress SessionDecisionIDVerificationsParsedAddress `json:"parsed_address"`

	// Additional document verification files
	ExtraFiles []string `json:"extra_files"`

	// Face match score between the portrait extracted from the front document image
	// and the front camera image
	FrontImageCameraFrontFaceMatchScore float64 `json:"front_image_camera_front_face_match_score"`

	// Face match score between the portrait extracted from the back document image
	// and the front camera image
	BackImageCameraFrontFaceMatchScore float64 `json:"back_image_camera_front_face_match_score"`

	// Previous sessions or face blocklist entries whose face matched the selfie the
	// front camera took during document capture (Silent Capture Face Search). Same
	// entry format as `liveness_checks[].matches`. `null` for sessions created
	// before this field existed or when the search did not run; an empty array when
	// it ran and found nothing. `match_image_url` is a presigned URL that expires.
	DocumentSelfieFaceMatches []SessionDecisionIDVerificationsDocumentSelfieFaceMatches `json:"document_selfie_face_matches"`

	// Quality metrics for the front document image. Each sub-score ranges from 0 to
	// 100.
	FrontImageQualityScore SessionDecisionIDVerificationsFrontImageQualityScore `json:"front_image_quality_score"`

	// Quality metrics for the back document image. Same structure as
	// front_image_quality_score.
	BackImageQualityScore SessionDecisionIDVerificationsBackImageQualityScore `json:"back_image_quality_score"`

	// Document verification warnings
	Warnings []SessionDecisionIDVerificationsWarnings `json:"warnings"`

	// Matching documents found during duplicate/blocklist detection (up to 5
	// matches)
	Matches []SessionDecisionIDVerificationsMatches `json:"matches"`

	// Document-liveness scores per fraud type, reported whether or not a warning
	// fired, so an approved document can still be audited. `null` when the check
	// did not run.
	DocumentLiveness SessionDecisionIDVerificationsDocumentLiveness `json:"document_liveness"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerifications: One ID verification report - the full report for a single ID Verification step. `verification_method` says which of the three methods produced it (document capture, non-doc lookup or wallet sign-in) and the method-specific evidence block is populated accordingly.

func (*SessionDecisionIDVerifications) UnmarshalJSON

func (r *SessionDecisionIDVerifications) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIDVerifications leniently.

type SessionDecisionIDVerificationsAssurance

type SessionDecisionIDVerificationsAssurance string

SessionDecisionIDVerificationsAssurance: Assurance tier derived from `verification_method`: `documentary` for a document that was captured and checked, `data_match` for details that matched a record held by the source queried, `cryptographic` for attributes an identity provider authenticated and signed.

SessionDecisionIDVerificationsAssurance is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIDVerificationsAssuranceDocumentary   SessionDecisionIDVerificationsAssurance = "documentary"
	SessionDecisionIDVerificationsAssuranceDataMatch     SessionDecisionIDVerificationsAssurance = "data_match"
	SessionDecisionIDVerificationsAssuranceCryptographic SessionDecisionIDVerificationsAssurance = "cryptographic"
)

Known values of SessionDecisionIDVerificationsAssurance.

type SessionDecisionIDVerificationsBackImageQualityScore

type SessionDecisionIDVerificationsBackImageQualityScore struct {
	// Sharpness of the image measured via top-10% local Laplacian variance. Robust
	// to documents with large uniform backgrounds. Higher values indicate a
	// sharper, less blurry image.
	FocusScore float64 `json:"focus_score"`

	// How well-lit the image is. Penalizes images that are too dark or overexposed,
	// with ideal brightness around mid-range.
	BrightnessScore float64 `json:"brightness_score"`

	// Indicates the direction of the brightness problem when the brightness_score
	// is low. 'ok' means brightness is acceptable, 'too_dark' means the image is
	// underexposed, 'too_bright' means the image is overexposed.
	BrightnessIssue SessionDecisionIDVerificationsBackImageQualityScoreBrightnessIssue `json:"brightness_issue"`

	// true if all four corners of the document are fully visible inside the image
	// frame, false if any corner is cut off. Null when corner coordinates are
	// unavailable.
	IsDocumentFullyVisible bool `json:"is_document_fully_visible"`

	// Effective resolution of the image based on total pixel count.
	ResolutionScore float64 `json:"resolution_score"`

	// Weighted composite of sub-scores (focus 45%, brightness 30%, resolution 25%).
	OverallScore float64 `json:"overall_score"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsBackImageQualityScore: Quality metrics for the back document image. Same structure as front_image_quality_score.

func (*SessionDecisionIDVerificationsBackImageQualityScore) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsBackImageQualityScore leniently.

type SessionDecisionIDVerificationsBackImageQualityScoreBrightnessIssue

type SessionDecisionIDVerificationsBackImageQualityScoreBrightnessIssue string

SessionDecisionIDVerificationsBackImageQualityScoreBrightnessIssue: Indicates the direction of the brightness problem when the brightness_score is low. 'ok' means brightness is acceptable, 'too_dark' means the image is underexposed, 'too_bright' means the image is overexposed.

SessionDecisionIDVerificationsBackImageQualityScoreBrightnessIssue is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIDVerificationsBackImageQualityScoreBrightnessIssueOk        SessionDecisionIDVerificationsBackImageQualityScoreBrightnessIssue = "ok"
	SessionDecisionIDVerificationsBackImageQualityScoreBrightnessIssueTooDark   SessionDecisionIDVerificationsBackImageQualityScoreBrightnessIssue = "too_dark"
	SessionDecisionIDVerificationsBackImageQualityScoreBrightnessIssueTooBright SessionDecisionIDVerificationsBackImageQualityScoreBrightnessIssue = "too_bright"
)

Known values of SessionDecisionIDVerificationsBackImageQualityScoreBrightnessIssue.

type SessionDecisionIDVerificationsDocumentLiveness

type SessionDecisionIDVerificationsDocumentLiveness struct {
	PortraitReplace SessionDecisionIDVerificationsDocumentLivenessPortraitReplace `json:"portrait_replace"`
	PrintedCopy     SessionDecisionIDVerificationsDocumentLivenessPrintedCopy     `json:"printed_copy"`
	ScreenReplay    SessionDecisionIDVerificationsDocumentLivenessScreenReplay    `json:"screen_replay"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsDocumentLiveness: Document-liveness scores per fraud type, reported whether or not a warning fired, so an approved document can still be audited. `null` when the check did not run.

func (*SessionDecisionIDVerificationsDocumentLiveness) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsDocumentLiveness leniently.

type SessionDecisionIDVerificationsDocumentLivenessPortraitReplace

type SessionDecisionIDVerificationsDocumentLivenessPortraitReplace struct {
	// Likelihood that the document is genuine for this fraud type, 0-100 (higher =
	// more likely genuine). The lowest of the two sides - the value the decision
	// used. `null` when neither side produced a usable score.
	Score float64 `json:"score"`

	// Score for the front side; `null` when not captured or when the score was
	// dropped.
	Front float64 `json:"front"`

	// Score for the back side; `null` when not captured or when the score was
	// dropped.
	Back float64 `json:"back"`

	// The decline threshold saved when this document was evaluated. Later workflow
	// edits do not change it. Null when historical evaluation evidence is
	// unavailable.
	DeclineThreshold float64 `json:"decline_threshold"`

	// The review threshold saved when this document was evaluated. Later workflow
	// edits do not change it. Null when historical evaluation evidence is
	// unavailable.
	ReviewThreshold float64 `json:"review_threshold"`

	// The fraud-type bucket saved at evaluation time. Null when there is no usable
	// score, the check was not applied, or historical evaluation evidence is
	// unavailable. Later workflow edits do not change it.
	Bucket SessionDecisionIDVerificationsDocumentLivenessPortraitReplaceBucket `json:"bucket"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsDocumentLivenessPortraitReplace is a response object.

func (*SessionDecisionIDVerificationsDocumentLivenessPortraitReplace) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsDocumentLivenessPortraitReplace leniently.

type SessionDecisionIDVerificationsDocumentLivenessPortraitReplaceBucket

type SessionDecisionIDVerificationsDocumentLivenessPortraitReplaceBucket string

SessionDecisionIDVerificationsDocumentLivenessPortraitReplaceBucket: The fraud-type bucket saved at evaluation time. Null when there is no usable score, the check was not applied, or historical evaluation evidence is unavailable. Later workflow edits do not change it.

SessionDecisionIDVerificationsDocumentLivenessPortraitReplaceBucket is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIDVerificationsDocumentLivenessPortraitReplaceBucketApprove SessionDecisionIDVerificationsDocumentLivenessPortraitReplaceBucket = "approve"
	SessionDecisionIDVerificationsDocumentLivenessPortraitReplaceBucketReview  SessionDecisionIDVerificationsDocumentLivenessPortraitReplaceBucket = "review"
	SessionDecisionIDVerificationsDocumentLivenessPortraitReplaceBucketDecline SessionDecisionIDVerificationsDocumentLivenessPortraitReplaceBucket = "decline"
)

Known values of SessionDecisionIDVerificationsDocumentLivenessPortraitReplaceBucket.

type SessionDecisionIDVerificationsDocumentLivenessPrintedCopy

type SessionDecisionIDVerificationsDocumentLivenessPrintedCopy struct {
	// Likelihood that the document is genuine for this fraud type, 0-100 (higher =
	// more likely genuine). The lowest of the two sides - the value the decision
	// used. `null` when neither side produced a usable score.
	Score float64 `json:"score"`

	// Score for the front side; `null` when not captured or when the score was
	// dropped.
	Front float64 `json:"front"`

	// Score for the back side; `null` when not captured or when the score was
	// dropped.
	Back float64 `json:"back"`

	// The decline threshold saved when this document was evaluated. Later workflow
	// edits do not change it. Null when historical evaluation evidence is
	// unavailable.
	DeclineThreshold float64 `json:"decline_threshold"`

	// The review threshold saved when this document was evaluated. Later workflow
	// edits do not change it. Null when historical evaluation evidence is
	// unavailable.
	ReviewThreshold float64 `json:"review_threshold"`

	// The fraud-type bucket saved at evaluation time. Null when there is no usable
	// score, the check was not applied, or historical evaluation evidence is
	// unavailable. Later workflow edits do not change it.
	Bucket SessionDecisionIDVerificationsDocumentLivenessPrintedCopyBucket `json:"bucket"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsDocumentLivenessPrintedCopy is a response object.

func (*SessionDecisionIDVerificationsDocumentLivenessPrintedCopy) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsDocumentLivenessPrintedCopy leniently.

type SessionDecisionIDVerificationsDocumentLivenessPrintedCopyBucket

type SessionDecisionIDVerificationsDocumentLivenessPrintedCopyBucket string

SessionDecisionIDVerificationsDocumentLivenessPrintedCopyBucket: The fraud-type bucket saved at evaluation time. Null when there is no usable score, the check was not applied, or historical evaluation evidence is unavailable. Later workflow edits do not change it.

SessionDecisionIDVerificationsDocumentLivenessPrintedCopyBucket is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIDVerificationsDocumentLivenessPrintedCopyBucketApprove SessionDecisionIDVerificationsDocumentLivenessPrintedCopyBucket = "approve"
	SessionDecisionIDVerificationsDocumentLivenessPrintedCopyBucketReview  SessionDecisionIDVerificationsDocumentLivenessPrintedCopyBucket = "review"
	SessionDecisionIDVerificationsDocumentLivenessPrintedCopyBucketDecline SessionDecisionIDVerificationsDocumentLivenessPrintedCopyBucket = "decline"
)

Known values of SessionDecisionIDVerificationsDocumentLivenessPrintedCopyBucket.

type SessionDecisionIDVerificationsDocumentLivenessScreenReplay

type SessionDecisionIDVerificationsDocumentLivenessScreenReplay struct {
	// Likelihood that the document is genuine for this fraud type, 0-100 (higher =
	// more likely genuine). The lowest of the two sides - the value the decision
	// used. `null` when neither side produced a usable score.
	Score float64 `json:"score"`

	// Score for the front side; `null` when not captured or when the score was
	// dropped.
	Front float64 `json:"front"`

	// Score for the back side; `null` when not captured or when the score was
	// dropped.
	Back float64 `json:"back"`

	// The decline threshold saved when this document was evaluated. Later workflow
	// edits do not change it. Null when historical evaluation evidence is
	// unavailable.
	DeclineThreshold float64 `json:"decline_threshold"`

	// The review threshold saved when this document was evaluated. Later workflow
	// edits do not change it. Null when historical evaluation evidence is
	// unavailable.
	ReviewThreshold float64 `json:"review_threshold"`

	// The fraud-type bucket saved at evaluation time. Null when there is no usable
	// score, the check was not applied, or historical evaluation evidence is
	// unavailable. Later workflow edits do not change it.
	Bucket SessionDecisionIDVerificationsDocumentLivenessScreenReplayBucket `json:"bucket"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsDocumentLivenessScreenReplay is a response object.

func (*SessionDecisionIDVerificationsDocumentLivenessScreenReplay) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsDocumentLivenessScreenReplay leniently.

type SessionDecisionIDVerificationsDocumentLivenessScreenReplayBucket

type SessionDecisionIDVerificationsDocumentLivenessScreenReplayBucket string

SessionDecisionIDVerificationsDocumentLivenessScreenReplayBucket: The fraud-type bucket saved at evaluation time. Null when there is no usable score, the check was not applied, or historical evaluation evidence is unavailable. Later workflow edits do not change it.

SessionDecisionIDVerificationsDocumentLivenessScreenReplayBucket is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIDVerificationsDocumentLivenessScreenReplayBucketApprove SessionDecisionIDVerificationsDocumentLivenessScreenReplayBucket = "approve"
	SessionDecisionIDVerificationsDocumentLivenessScreenReplayBucketReview  SessionDecisionIDVerificationsDocumentLivenessScreenReplayBucket = "review"
	SessionDecisionIDVerificationsDocumentLivenessScreenReplayBucketDecline SessionDecisionIDVerificationsDocumentLivenessScreenReplayBucket = "decline"
)

Known values of SessionDecisionIDVerificationsDocumentLivenessScreenReplayBucket.

type SessionDecisionIDVerificationsDocumentSelfieFaceMatches

type SessionDecisionIDVerificationsDocumentSelfieFaceMatches struct {
	// Session ID of the matching face. `null` when `source` is `imported`,
	// `list_entry`, or `retained_template`.
	SessionID     string `json:"session_id"`
	SessionNumber int64  `json:"session_number"`

	// Face similarity between the two images, clamped to 0-100.
	SimilarityPercentage float64 `json:"similarity_percentage"`

	// `vendor_data` of the matching session or linked User for imported and
	// retained-template faces.
	VendorData string `json:"vendor_data"`

	// Linked User id for `imported` and `retained_template` matches and for session
	// matches linked to a User. `null` for list entries and sessions without a
	// User.
	VendorUserID string `json:"vendor_user_id"`

	// Id of the retained biometric template. Set only when `source` is
	// `retained_template`; `null` otherwise.
	BiometricTemplateID string `json:"biometric_template_id"`

	// When the matching face was captured, or when a retained template was created.
	// `null` for list entries.
	VerificationDate time.Time `json:"verification_date"`

	// Identity data from the matching session or imported User profile. Always
	// `null` for `retained_template` and `list_entry` matches.
	UserDetails SessionDecisionIDVerificationsDocumentSelfieFaceMatchesUserDetails `json:"user_details"`

	// Reference image for image-backed matches. Always `null` for
	// `retained_template` matches because retained templates contain no image.
	MatchImageURL string `json:"match_image_url"`

	// Lifecycle status of the matching session. `null` for non-session sources.
	Status string `json:"status"`

	// Whether the matching face is on a blocklist.
	IsBlocklisted bool `json:"is_blocklisted"`

	// Whether the matching face is on an allowlist.
	IsAllowlisted bool `json:"is_allowlisted"`

	// Standalone API service of the matching session (e.g. `PASSIVE_LIVENESS`,
	// `FACE_MATCH`); `null` for workflow sessions and non-session sources.
	APIService string `json:"api_service"`

	// Origin of the matching face: `session`, `imported` (User face upload),
	// `list_entry` (allow/block list), or `retained_template` (an image-free
	// biometric template stored on a User, listed under
	// `/v3/biometric-templates/`).
	Source SessionDecisionIDVerificationsDocumentSelfieFaceMatchesSource `json:"source"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsDocumentSelfieFaceMatches is a response object.

func (*SessionDecisionIDVerificationsDocumentSelfieFaceMatches) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsDocumentSelfieFaceMatches leniently.

type SessionDecisionIDVerificationsDocumentSelfieFaceMatchesSource

type SessionDecisionIDVerificationsDocumentSelfieFaceMatchesSource string

SessionDecisionIDVerificationsDocumentSelfieFaceMatchesSource: Origin of the matching face: `session`, `imported` (User face upload), `list_entry` (allow/block list), or `retained_template` (an image-free biometric template stored on a User, listed under `/v3/biometric-templates/`).

SessionDecisionIDVerificationsDocumentSelfieFaceMatchesSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIDVerificationsDocumentSelfieFaceMatchesSourceSession          SessionDecisionIDVerificationsDocumentSelfieFaceMatchesSource = "session"
	SessionDecisionIDVerificationsDocumentSelfieFaceMatchesSourceImported         SessionDecisionIDVerificationsDocumentSelfieFaceMatchesSource = "imported"
	SessionDecisionIDVerificationsDocumentSelfieFaceMatchesSourceListEntry        SessionDecisionIDVerificationsDocumentSelfieFaceMatchesSource = "list_entry"
	SessionDecisionIDVerificationsDocumentSelfieFaceMatchesSourceRetainedTemplate SessionDecisionIDVerificationsDocumentSelfieFaceMatchesSource = "retained_template"
)

Known values of SessionDecisionIDVerificationsDocumentSelfieFaceMatchesSource.

type SessionDecisionIDVerificationsDocumentSelfieFaceMatchesUserDetails

type SessionDecisionIDVerificationsDocumentSelfieFaceMatchesUserDetails struct {
	FullName       string `json:"full_name"`
	DocumentType   string `json:"document_type"`
	DocumentNumber string `json:"document_number"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsDocumentSelfieFaceMatchesUserDetails: Identity data from the matching session or imported User profile. Always `null` for `retained_template` and `list_entry` matches.

func (*SessionDecisionIDVerificationsDocumentSelfieFaceMatchesUserDetails) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsDocumentSelfieFaceMatchesUserDetails leniently.

type SessionDecisionIDVerificationsExtraFields

type SessionDecisionIDVerificationsExtraFields struct {
	DlCategories []string `json:"dl_categories"`
	BloodGroup   string   `json:"blood_group"`

	// First name in the non-Latin script when `preferred_characters=latin` and a
	// non-Latin version is present on the document (e.g. `Айна` for a Kyrgyz ID).
	FirstNameNonLatin string `json:"first_name_non_latin"`

	// Surname in the non-Latin script when `preferred_characters=latin` and a
	// non-Latin version is present on the document.
	LastNameNonLatin string `json:"last_name_non_latin"`

	// Middle name / patronymic in the non-Latin script when
	// `preferred_characters=latin` and a non-Latin version is present on the
	// document.
	MiddleNameNonLatin string `json:"middle_name_non_latin"`

	// Composed full name in the non-Latin script. Reconstructed from the individual
	// components when both first and last names are available.
	FullNameNonLatin string `json:"full_name_non_latin"`

	// Address in the non-Latin script when `preferred_characters=latin` and a
	// non-Latin version is present on the document.
	AddressNonLatin string `json:"address_non_latin"`

	// Place of birth in the non-Latin script when `preferred_characters=latin` and
	// a non-Latin version is present on the document.
	PlaceOfBirthNonLatin string `json:"place_of_birth_non_latin"`

	// First name in Latin script. Populated when `preferred_characters=non_latin`
	// and a Latin version is present on the document, or - as a transliteration
	// fallback - when `preferred_characters=latin` but the document only carries
	// non-Latin text.
	FirstNameLatin string `json:"first_name_latin"`

	// Surname in Latin script. Same rules as `first_name_latin`.
	LastNameLatin string `json:"last_name_latin"`

	// Middle name / patronymic in Latin script. Same rules as `first_name_latin`.
	MiddleNameLatin string `json:"middle_name_latin"`

	// Composed full name in Latin script. Always reconstructed from the individual
	// components when both first and last names are available.
	FullNameLatin string `json:"full_name_latin"`

	// Address in Latin script. Same rules as `first_name_latin`.
	AddressLatin string `json:"address_latin"`

	// Place of birth in Latin script. Same rules as `first_name_latin`.
	PlaceOfBirthLatin string `json:"place_of_birth_latin"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsExtraFields: Additional document fields. Includes document-specific attributes (e.g. `dl_categories`, `blood_group`, `sponsor`, `employer`, `dl_class_code_b_from`, `dl_class_code_b_to`). Driver license class validity dates are returned as `dl_class_code_<class>_from` and `dl_class_code_<class>_to`, and per-class restriction/information codes (e.g. column 12 of UK licences) as `dl_class_code_<class>_notes`. When the document carries names, address, or place of birth in multiple scripts, this object also includes alternate-script versions of those fields. The workflow setting `preferred_characters` (`latin` or `non_latin`) controls which script populates the top-level fields (`first_name`, `last_name`, `full_name`, `address`, `place_of_birth`); the opposite script lands here as `first_name_non_latin` / `last_name_non_latin` / `full_name_non_latin` / `middle_name_non_latin` / `address_non_latin` / `place_of_birth_non_latin` (when `preferred_characters` is `latin`) or with a `_latin` suffix (when `preferred_characters` is `non_latin`). Keys appear only when the OCR actually extracts a real alternate-script value - a field whose alternate value is in the same script as the preferred set (for example, a Cyrillic-labelled field whose OCR value came back in Latin homoglyphs) is skipped. When `preferred_characters` is `latin` but the document only carries non-Latin text, Didit transliterates the extracted values and exposes `first_name_latin` / `last_name_latin` / etc. as a fallback.

func (*SessionDecisionIDVerificationsExtraFields) UnmarshalJSON

func (r *SessionDecisionIDVerificationsExtraFields) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIDVerificationsExtraFields leniently.

type SessionDecisionIDVerificationsFallbackFrom

type SessionDecisionIDVerificationsFallbackFrom struct {
	// The method that failed.
	Method SessionDecisionIDVerificationsFallbackFromMethod `json:"method"`

	// The outcome that ended it, e.g. `no_match`, `provider_error`, `cancelled`,
	// `timeout`.
	Reason string `json:"reason"`

	// The configured action that was taken, e.g. `decline`.
	Action string `json:"action"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsFallbackFrom: Why a non-document method ended the ID step. Set on the declined report when a lookup or a wallet sign-in failed and the country's fallback switch was `decline`. `null` otherwise.

func (*SessionDecisionIDVerificationsFallbackFrom) UnmarshalJSON

func (r *SessionDecisionIDVerificationsFallbackFrom) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIDVerificationsFallbackFrom leniently.

type SessionDecisionIDVerificationsFallbackFromMethod

type SessionDecisionIDVerificationsFallbackFromMethod string

SessionDecisionIDVerificationsFallbackFromMethod: The method that failed.

SessionDecisionIDVerificationsFallbackFromMethod is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIDVerificationsFallbackFromMethodIDLookup SessionDecisionIDVerificationsFallbackFromMethod = "id_lookup"
	SessionDecisionIDVerificationsFallbackFromMethodWallet   SessionDecisionIDVerificationsFallbackFromMethod = "wallet"
)

Known values of SessionDecisionIDVerificationsFallbackFromMethod.

type SessionDecisionIDVerificationsFrontImageQualityScore

type SessionDecisionIDVerificationsFrontImageQualityScore struct {
	// Sharpness of the image measured via top-10% local Laplacian variance. Robust
	// to documents with large uniform backgrounds. Higher values indicate a
	// sharper, less blurry image.
	FocusScore float64 `json:"focus_score"`

	// How well-lit the image is. Penalizes images that are too dark or overexposed,
	// with ideal brightness around mid-range.
	BrightnessScore float64 `json:"brightness_score"`

	// Indicates the direction of the brightness problem when the brightness_score
	// is low. 'ok' means brightness is acceptable, 'too_dark' means the image is
	// underexposed, 'too_bright' means the image is overexposed.
	BrightnessIssue SessionDecisionIDVerificationsFrontImageQualityScoreBrightnessIssue `json:"brightness_issue"`

	// true if all four corners of the document are fully visible inside the image
	// frame, false if any corner is cut off. Null when corner coordinates are
	// unavailable.
	IsDocumentFullyVisible bool `json:"is_document_fully_visible"`

	// Effective resolution of the image based on total pixel count.
	ResolutionScore float64 `json:"resolution_score"`

	// Weighted composite of sub-scores (focus 45%, brightness 30%, resolution 25%).
	OverallScore float64 `json:"overall_score"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsFrontImageQualityScore: Quality metrics for the front document image. Each sub-score ranges from 0 to 100.

func (*SessionDecisionIDVerificationsFrontImageQualityScore) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsFrontImageQualityScore leniently.

type SessionDecisionIDVerificationsFrontImageQualityScoreBrightnessIssue

type SessionDecisionIDVerificationsFrontImageQualityScoreBrightnessIssue string

SessionDecisionIDVerificationsFrontImageQualityScoreBrightnessIssue: Indicates the direction of the brightness problem when the brightness_score is low. 'ok' means brightness is acceptable, 'too_dark' means the image is underexposed, 'too_bright' means the image is overexposed.

SessionDecisionIDVerificationsFrontImageQualityScoreBrightnessIssue is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIDVerificationsFrontImageQualityScoreBrightnessIssueOk        SessionDecisionIDVerificationsFrontImageQualityScoreBrightnessIssue = "ok"
	SessionDecisionIDVerificationsFrontImageQualityScoreBrightnessIssueTooDark   SessionDecisionIDVerificationsFrontImageQualityScoreBrightnessIssue = "too_dark"
	SessionDecisionIDVerificationsFrontImageQualityScoreBrightnessIssueTooBright SessionDecisionIDVerificationsFrontImageQualityScoreBrightnessIssue = "too_bright"
)

Known values of SessionDecisionIDVerificationsFrontImageQualityScoreBrightnessIssue.

type SessionDecisionIDVerificationsIDLookup

type SessionDecisionIDVerificationsIDLookup struct {
	// Customer-facing name of the source queried, e.g. `Department of Home Affairs`
	// (a government register) or `UK credit bureau and financial services records`
	// (not a government register). This is the only statement of provenance for the
	// lookup; do not assume a government source.
	Source string `json:"source"`

	// When the register answered.
	CheckedAt time.Time `json:"checked_at"`

	// 1-based attempt number this report came from.
	Attempts int64 `json:"attempts"`

	// Attempt budget configured for the country (1 to 5, default 1).
	MaxAttempts int64 `json:"max_attempts"`

	// What the register answered. Only `match`, `partial_match` and `no_match`
	// count against the attempt budget and bill.
	Outcome SessionDecisionIDVerificationsIDLookupOutcome `json:"outcome"`

	// One row per comparable field the source answered on, plus one row per source
	// error. Comparison rows use the normalised field names below rather than the
	// country's request field keys, because several request fields (first and last
	// name, or any of the identifier aliases) collapse into a single comparison. A
	// source that failed appends a row with `field: "provider"` and `result:
	// "error"`, so read `result` before treating a row as a field verdict.
	Comparison []SessionDecisionIDVerificationsIDLookupComparison `json:"comparison"`

	// Short-lived presigned URL to the portrait the source returned. Only the four
	// government registers that return one (South Africa, Nigeria, Argentina,
	// Panama).
	RegistryPortrait string `json:"registry_portrait"`

	// Selfie against the registry portrait, 0-100. Only where the register returns
	// a portrait.
	FaceMatchScore float64 `json:"face_match_score"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsIDLookup: Registry evidence. Present only when `verification_method` is `id_lookup`; `null` otherwise.

func (*SessionDecisionIDVerificationsIDLookup) UnmarshalJSON

func (r *SessionDecisionIDVerificationsIDLookup) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIDVerificationsIDLookup leniently.

type SessionDecisionIDVerificationsIDLookupComparison

type SessionDecisionIDVerificationsIDLookupComparison struct {
	// Normalised comparison field. `provider` is not a user field: it marks a
	// source error row.
	Field SessionDecisionIDVerificationsIDLookupComparisonField `json:"field"`

	// Display label for the row, e.g. `ID number`, `Full name`, `Provider`.
	Label string `json:"label"`

	// What the user typed. `null` on a `provider` error row.
	Provided string `json:"provided"`

	// What the source held. On a `provider` error row this carries the error
	// message instead.
	Record string `json:"record"`

	// Per-field comparison result. `error` appears only on a `provider` row and
	// means that source did not answer; treat it as evidence about the query, never
	// as a field mismatch.
	Result SessionDecisionIDVerificationsIDLookupComparisonResult `json:"result"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsIDLookupComparison is a response object.

func (*SessionDecisionIDVerificationsIDLookupComparison) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsIDLookupComparison leniently.

type SessionDecisionIDVerificationsIDLookupComparisonField

type SessionDecisionIDVerificationsIDLookupComparisonField string

SessionDecisionIDVerificationsIDLookupComparisonField: Normalised comparison field. `provider` is not a user field: it marks a source error row.

SessionDecisionIDVerificationsIDLookupComparisonField is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIDVerificationsIDLookupComparisonFieldIdentificationNumber SessionDecisionIDVerificationsIDLookupComparisonField = "identification_number"
	SessionDecisionIDVerificationsIDLookupComparisonFieldFullName             SessionDecisionIDVerificationsIDLookupComparisonField = "full_name"
	SessionDecisionIDVerificationsIDLookupComparisonFieldDateOfBirth          SessionDecisionIDVerificationsIDLookupComparisonField = "date_of_birth"
	SessionDecisionIDVerificationsIDLookupComparisonFieldAddress              SessionDecisionIDVerificationsIDLookupComparisonField = "address"
	SessionDecisionIDVerificationsIDLookupComparisonFieldProvider             SessionDecisionIDVerificationsIDLookupComparisonField = "provider"
)

Known values of SessionDecisionIDVerificationsIDLookupComparisonField.

type SessionDecisionIDVerificationsIDLookupComparisonResult

type SessionDecisionIDVerificationsIDLookupComparisonResult string

SessionDecisionIDVerificationsIDLookupComparisonResult: Per-field comparison result. `error` appears only on a `provider` row and means that source did not answer; treat it as evidence about the query, never as a field mismatch.

SessionDecisionIDVerificationsIDLookupComparisonResult is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIDVerificationsIDLookupComparisonResultMatch   SessionDecisionIDVerificationsIDLookupComparisonResult = "match"
	SessionDecisionIDVerificationsIDLookupComparisonResultPartial SessionDecisionIDVerificationsIDLookupComparisonResult = "partial"
	SessionDecisionIDVerificationsIDLookupComparisonResultNoMatch SessionDecisionIDVerificationsIDLookupComparisonResult = "no_match"
	SessionDecisionIDVerificationsIDLookupComparisonResultError   SessionDecisionIDVerificationsIDLookupComparisonResult = "error"
)

Known values of SessionDecisionIDVerificationsIDLookupComparisonResult.

type SessionDecisionIDVerificationsIDLookupOutcome

type SessionDecisionIDVerificationsIDLookupOutcome string

SessionDecisionIDVerificationsIDLookupOutcome: What the register answered. Only `match`, `partial_match` and `no_match` count against the attempt budget and bill.

SessionDecisionIDVerificationsIDLookupOutcome is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIDVerificationsIDLookupOutcomeMatch          SessionDecisionIDVerificationsIDLookupOutcome = "match"
	SessionDecisionIDVerificationsIDLookupOutcomePartialMatch   SessionDecisionIDVerificationsIDLookupOutcome = "partial_match"
	SessionDecisionIDVerificationsIDLookupOutcomeNoMatch        SessionDecisionIDVerificationsIDLookupOutcome = "no_match"
	SessionDecisionIDVerificationsIDLookupOutcomeProviderError  SessionDecisionIDVerificationsIDLookupOutcome = "provider_error"
	SessionDecisionIDVerificationsIDLookupOutcomeFormatRejected SessionDecisionIDVerificationsIDLookupOutcome = "format_rejected"
)

Known values of SessionDecisionIDVerificationsIDLookupOutcome.

type SessionDecisionIDVerificationsMRZ

type SessionDecisionIDVerificationsMRZ struct {
	Surname            string   `json:"surname"`
	Name               string   `json:"name"`
	Country            string   `json:"country"`
	Nationality        string   `json:"nationality"`
	BirthDate          string   `json:"birth_date"`
	ExpiryDate         string   `json:"expiry_date"`
	Sex                string   `json:"sex"`
	DocumentType       string   `json:"document_type"`
	DocumentNumber     string   `json:"document_number"`
	OptionalData       string   `json:"optional_data"`
	OptionalData2      string   `json:"optional_data_2"`
	BirthDateHash      string   `json:"birth_date_hash"`
	ExpiryDateHash     string   `json:"expiry_date_hash"`
	DocumentNumberHash string   `json:"document_number_hash"`
	FinalHash          string   `json:"final_hash"`
	PersonalNumber     string   `json:"personal_number"`
	Warnings           []string `json:"warnings"`
	Errors             []string `json:"errors"`
	MRZType            string   `json:"mrz_type"`
	MRZString          string   `json:"mrz_string"`
	MRZKey             string   `json:"mrz_key"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsMRZ: Parsed Machine-Readable Zone (MRZ) fields extracted from the document. `null` if no MRZ was detected.

func (*SessionDecisionIDVerificationsMRZ) UnmarshalJSON

func (r *SessionDecisionIDVerificationsMRZ) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIDVerificationsMRZ leniently.

type SessionDecisionIDVerificationsMatches

type SessionDecisionIDVerificationsMatches struct {
	// Session ID of the matching document
	SessionID string `json:"session_id"`

	// Session number of the matching document
	SessionNumber int64 `json:"session_number"`

	// Vendor data associated with the matching session
	VendorData string `json:"vendor_data"`

	// Date when the matching session was verified
	VerificationDate time.Time                                        `json:"verification_date"`
	UserDetails      SessionDecisionIDVerificationsMatchesUserDetails `json:"user_details"`

	// Status of the matching session
	Status string `json:"status"`

	// Whether the matching document is blocklisted
	IsBlocklisted bool `json:"is_blocklisted"`

	// API service type of the matching session
	APIService string `json:"api_service"`

	// URL of the front document image from the matching document
	FrontImageURL string `json:"front_image_url"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsMatches is a response object.

func (*SessionDecisionIDVerificationsMatches) UnmarshalJSON

func (r *SessionDecisionIDVerificationsMatches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIDVerificationsMatches leniently.

type SessionDecisionIDVerificationsMatchesUserDetails

type SessionDecisionIDVerificationsMatchesUserDetails struct {
	// Full name from the matching document
	Name string `json:"name"`

	// Type of the matching document
	DocumentType string `json:"document_type"`

	// Document number of the matching document
	DocumentNumber string `json:"document_number"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsMatchesUserDetails is a response object.

func (*SessionDecisionIDVerificationsMatchesUserDetails) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsMatchesUserDetails leniently.

type SessionDecisionIDVerificationsParsedAddress

type SessionDecisionIDVerificationsParsedAddress struct {
	City   string `json:"city"`
	Label  string `json:"label"`
	Region string `json:"region"`

	// Two-letter country code
	Country string `json:"country"`

	// Address category (e.g., Residential, Commercial)
	Category string `json:"category"`
	Street1  string `json:"street_1"`
	Street2  string `json:"street_2"`

	// Whether the address has been verified
	IsVerified       bool                                                        `json:"is_verified"`
	PostalCode       string                                                      `json:"postal_code"`
	RawResults       SessionDecisionIDVerificationsParsedAddressRawResults       `json:"raw_results"`
	AddressType      string                                                      `json:"address_type"`
	DocumentLocation SessionDecisionIDVerificationsParsedAddressDocumentLocation `json:"document_location"`
	FormattedAddress string                                                      `json:"formatted_address"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsParsedAddress: Structured address details

func (*SessionDecisionIDVerificationsParsedAddress) UnmarshalJSON

func (r *SessionDecisionIDVerificationsParsedAddress) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIDVerificationsParsedAddress leniently.

type SessionDecisionIDVerificationsParsedAddressDocumentLocation

type SessionDecisionIDVerificationsParsedAddressDocumentLocation struct {
	Latitude  float64 `json:"latitude"`
	Longitude float64 `json:"longitude"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsParsedAddressDocumentLocation is a response object.

func (*SessionDecisionIDVerificationsParsedAddressDocumentLocation) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsParsedAddressDocumentLocation leniently.

type SessionDecisionIDVerificationsParsedAddressRawResults

type SessionDecisionIDVerificationsParsedAddressRawResults struct {
	Types             []string                                                                 `json:"types"`
	Geometry          SessionDecisionIDVerificationsParsedAddressRawResultsGeometry            `json:"geometry"`
	PlaceID           string                                                                   `json:"place_id"`
	FormattedAddress  string                                                                   `json:"formatted_address"`
	NavigationPoints  []SessionDecisionIDVerificationsParsedAddressRawResultsNavigationPoints  `json:"navigation_points"`
	AddressComponents []SessionDecisionIDVerificationsParsedAddressRawResultsAddressComponents `json:"address_components"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsParsedAddressRawResults is a response object.

func (*SessionDecisionIDVerificationsParsedAddressRawResults) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsParsedAddressRawResults leniently.

type SessionDecisionIDVerificationsParsedAddressRawResultsAddressComponents

type SessionDecisionIDVerificationsParsedAddressRawResultsAddressComponents struct {
	Types     []string `json:"types"`
	LongName  string   `json:"long_name"`
	ShortName string   `json:"short_name"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsParsedAddressRawResultsAddressComponents is a response object.

func (*SessionDecisionIDVerificationsParsedAddressRawResultsAddressComponents) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsParsedAddressRawResultsAddressComponents leniently.

type SessionDecisionIDVerificationsParsedAddressRawResultsGeometry

type SessionDecisionIDVerificationsParsedAddressRawResultsGeometry struct {
	Location     SessionDecisionIDVerificationsParsedAddressRawResultsGeometryLocation `json:"location"`
	Viewport     SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewport `json:"viewport"`
	LocationType string                                                                `json:"location_type"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsParsedAddressRawResultsGeometry is a response object.

func (*SessionDecisionIDVerificationsParsedAddressRawResultsGeometry) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsParsedAddressRawResultsGeometry leniently.

type SessionDecisionIDVerificationsParsedAddressRawResultsGeometryLocation

type SessionDecisionIDVerificationsParsedAddressRawResultsGeometryLocation struct {
	Lat float64 `json:"lat"`
	Lng float64 `json:"lng"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsParsedAddressRawResultsGeometryLocation is a response object.

func (*SessionDecisionIDVerificationsParsedAddressRawResultsGeometryLocation) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsParsedAddressRawResultsGeometryLocation leniently.

type SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewport

type SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewport struct {
	Northeast SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewportNortheast `json:"northeast"`
	Southwest SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewportSouthwest `json:"southwest"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewport is a response object.

func (*SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewport) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewport leniently.

type SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewportNortheast

type SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewportNortheast struct {
	Lat float64 `json:"lat"`
	Lng float64 `json:"lng"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewportNortheast is a response object.

func (*SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewportNortheast) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewportNortheast leniently.

type SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewportSouthwest

type SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewportSouthwest struct {
	Lat float64 `json:"lat"`
	Lng float64 `json:"lng"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewportSouthwest is a response object.

func (*SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewportSouthwest) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsParsedAddressRawResultsGeometryViewportSouthwest leniently.

type SessionDecisionIDVerificationsParsedAddressRawResultsNavigationPoints

type SessionDecisionIDVerificationsParsedAddressRawResultsNavigationPoints struct {
	Location SessionDecisionIDVerificationsParsedAddressRawResultsNavigationPointsLocation `json:"location"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsParsedAddressRawResultsNavigationPoints is a response object.

func (*SessionDecisionIDVerificationsParsedAddressRawResultsNavigationPoints) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsParsedAddressRawResultsNavigationPoints leniently.

type SessionDecisionIDVerificationsParsedAddressRawResultsNavigationPointsLocation

type SessionDecisionIDVerificationsParsedAddressRawResultsNavigationPointsLocation struct {
	Latitude  float64 `json:"latitude"`
	Longitude float64 `json:"longitude"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsParsedAddressRawResultsNavigationPointsLocation is a response object.

func (*SessionDecisionIDVerificationsParsedAddressRawResultsNavigationPointsLocation) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsParsedAddressRawResultsNavigationPointsLocation leniently.

type SessionDecisionIDVerificationsStatus

type SessionDecisionIDVerificationsStatus string

SessionDecisionIDVerificationsStatus: Feature-level status of this ID verification step. Independent of the top-level session `status` - a session can reach its overall decision while an individual feature stays `In Review`.

SessionDecisionIDVerificationsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIDVerificationsStatusNotFinished SessionDecisionIDVerificationsStatus = "Not Finished"
	SessionDecisionIDVerificationsStatusApproved    SessionDecisionIDVerificationsStatus = "Approved"
	SessionDecisionIDVerificationsStatusDeclined    SessionDecisionIDVerificationsStatus = "Declined"
	SessionDecisionIDVerificationsStatusInReview    SessionDecisionIDVerificationsStatus = "In Review"
	SessionDecisionIDVerificationsStatusExpired     SessionDecisionIDVerificationsStatus = "Expired"
)

Known values of SessionDecisionIDVerificationsStatus.

type SessionDecisionIDVerificationsVerificationMethod

type SessionDecisionIDVerificationsVerificationMethod string

SessionDecisionIDVerificationsVerificationMethod: Which ID Verification method produced this report. `document` - the user photographed a physical ID (the default, and the value on every session created before the other methods existed). `id_lookup` - the user typed their national ID number and it was checked against a government register or another authoritative source for that country (`id_lookup.source` names which). `wallet` - the user signed in with a government or bank digital identity.

SessionDecisionIDVerificationsVerificationMethod is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIDVerificationsVerificationMethodDocument SessionDecisionIDVerificationsVerificationMethod = "document"
	SessionDecisionIDVerificationsVerificationMethodIDLookup SessionDecisionIDVerificationsVerificationMethod = "id_lookup"
	SessionDecisionIDVerificationsVerificationMethodWallet   SessionDecisionIDVerificationsVerificationMethod = "wallet"
)

Known values of SessionDecisionIDVerificationsVerificationMethod.

type SessionDecisionIDVerificationsWalletVerification

type SessionDecisionIDVerificationsWalletVerification struct {
	// Catalog wallet id, e.g. `mitid`.
	Provider string `json:"provider"`

	// Wallet name as the end user knows it, e.g. `MitID`.
	ProviderName string `json:"provider_name"`

	// The authority behind the wallet, e.g. `Danish Agency for Digital Government`.
	IssuingAuthority string `json:"issuing_authority"`

	// ISO 3166-1 alpha-3 country the wallet was offered in.
	IssuingCountry string `json:"issuing_country"`

	// Credential the wallet presented, e.g. `person_identification`.
	CredentialType string `json:"credential_type"`

	// The level of assurance the wallet asserted. A sign-in that asserts less than
	// the level requested fails instead of downgrading.
	LevelOfAssurance SessionDecisionIDVerificationsWalletVerificationLevelOfAssurance `json:"level_of_assurance"`

	// The wallet's authentication instant.
	VerifiedAt time.Time `json:"verified_at"`

	// Whether the signed assertion the wallet returned validated.
	SignatureValid bool `json:"signature_valid"`

	// The attributes the wallet shared, keyed as the wallet's catalog entry lists
	// them.
	Attributes map[string]any `json:"attributes"`

	// Short-lived presigned URL to the portrait the wallet shared, where it shares
	// one.
	Portrait string `json:"portrait"`

	// Selfie against the wallet portrait, 0-100, where the wallet shares one.
	FaceMatchScore float64 `json:"face_match_score"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsWalletVerification: Credential evidence. Present only when `verification_method` is `wallet`; `null` otherwise.

func (*SessionDecisionIDVerificationsWalletVerification) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionIDVerificationsWalletVerification leniently.

type SessionDecisionIDVerificationsWalletVerificationLevelOfAssurance

type SessionDecisionIDVerificationsWalletVerificationLevelOfAssurance string

SessionDecisionIDVerificationsWalletVerificationLevelOfAssurance: The level of assurance the wallet asserted. A sign-in that asserts less than the level requested fails instead of downgrading.

SessionDecisionIDVerificationsWalletVerificationLevelOfAssurance is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIDVerificationsWalletVerificationLevelOfAssuranceLow         SessionDecisionIDVerificationsWalletVerificationLevelOfAssurance = "low"
	SessionDecisionIDVerificationsWalletVerificationLevelOfAssuranceSubstantial SessionDecisionIDVerificationsWalletVerificationLevelOfAssurance = "substantial"
	SessionDecisionIDVerificationsWalletVerificationLevelOfAssuranceHigh        SessionDecisionIDVerificationsWalletVerificationLevelOfAssurance = "high"
)

Known values of SessionDecisionIDVerificationsWalletVerificationLevelOfAssurance.

type SessionDecisionIDVerificationsWarnings

type SessionDecisionIDVerificationsWarnings struct {
	// The feature that generated this warning (e.g., `ID_VERIFICATION`, `NFC`,
	// `LIVENESS`). The value identifies the feature block the warning belongs to.
	// Each module's warnings array typically uses the value matching its module,
	// but the enum above is authoritative across all feature warnings on the
	// decision payload.
	Feature SessionDecisionIDVerificationsWarningsFeature `json:"feature"`
	Risk    string                                        `json:"risk"`

	// Additional contextual data about the warning
	AdditionalData map[string]any `json:"additional_data"`

	// Type of log: information, warning, or error
	LogType          string `json:"log_type"`
	ShortDescription string `json:"short_description"`
	LongDescription  string `json:"long_description"`

	// The workflow graph node ID that generated this warning (for graph-based
	// workflows)
	NodeID string `json:"node_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIDVerificationsWarnings is a response object.

func (*SessionDecisionIDVerificationsWarnings) UnmarshalJSON

func (r *SessionDecisionIDVerificationsWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIDVerificationsWarnings leniently.

type SessionDecisionIDVerificationsWarningsFeature

type SessionDecisionIDVerificationsWarningsFeature string

SessionDecisionIDVerificationsWarningsFeature: The feature that generated this warning (e.g., `ID_VERIFICATION`, `NFC`, `LIVENESS`). The value identifies the feature block the warning belongs to. Each module's warnings array typically uses the value matching its module, but the enum above is authoritative across all feature warnings on the decision payload.

SessionDecisionIDVerificationsWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIDVerificationsWarningsFeatureIDVerification     SessionDecisionIDVerificationsWarningsFeature = "ID_VERIFICATION"
	SessionDecisionIDVerificationsWarningsFeatureNFC                SessionDecisionIDVerificationsWarningsFeature = "NFC"
	SessionDecisionIDVerificationsWarningsFeatureLiveness           SessionDecisionIDVerificationsWarningsFeature = "LIVENESS"
	SessionDecisionIDVerificationsWarningsFeatureFacematch          SessionDecisionIDVerificationsWarningsFeature = "FACEMATCH"
	SessionDecisionIDVerificationsWarningsFeatureProofOfAddress     SessionDecisionIDVerificationsWarningsFeature = "PROOF_OF_ADDRESS"
	SessionDecisionIDVerificationsWarningsFeaturePhone              SessionDecisionIDVerificationsWarningsFeature = "PHONE"
	SessionDecisionIDVerificationsWarningsFeatureEmail              SessionDecisionIDVerificationsWarningsFeature = "EMAIL"
	SessionDecisionIDVerificationsWarningsFeatureAML                SessionDecisionIDVerificationsWarningsFeature = "AML"
	SessionDecisionIDVerificationsWarningsFeatureLocation           SessionDecisionIDVerificationsWarningsFeature = "LOCATION"
	SessionDecisionIDVerificationsWarningsFeatureDatabaseValidation SessionDecisionIDVerificationsWarningsFeature = "DATABASE_VALIDATION"
	SessionDecisionIDVerificationsWarningsFeatureQuestionnaire      SessionDecisionIDVerificationsWarningsFeature = "QUESTIONNAIRE"
	SessionDecisionIDVerificationsWarningsFeatureDocumentAi         SessionDecisionIDVerificationsWarningsFeature = "DOCUMENT_AI"
	SessionDecisionIDVerificationsWarningsFeatureKYBRegistry        SessionDecisionIDVerificationsWarningsFeature = "KYB_REGISTRY"
	SessionDecisionIDVerificationsWarningsFeatureKYBDocuments       SessionDecisionIDVerificationsWarningsFeature = "KYB_DOCUMENTS"
	SessionDecisionIDVerificationsWarningsFeatureKYBKeyPeople       SessionDecisionIDVerificationsWarningsFeature = "KYB_KEY_PEOPLE"
)

Known values of SessionDecisionIDVerificationsWarningsFeature.

type SessionDecisionIPAnalyses

type SessionDecisionIPAnalyses struct {
	// Unique identifier for this Device & IP Analysis step in the workflow graph.
	NodeID string `json:"node_id"`

	// Feature-level status of this Device & IP Analysis entry. Independent of the
	// top-level session `status` - a session can reach its overall decision while
	// an individual feature stays `In Review`.
	Status SessionDecisionIPAnalysesStatus `json:"status"`

	// Brand of the device used
	DeviceBrand string `json:"device_brand"`

	// Model of the device used
	DeviceModel string `json:"device_model"`

	// Browser family used
	BrowserFamily string `json:"browser_family"`

	// Operating system family
	OsFamily string `json:"os_family"`

	// Platform type (mobile, desktop, etc)
	Platform string `json:"platform"`

	// Unique device fingerprint identifier
	DeviceFingerprint string `json:"device_fingerprint"`

	// Country detected from IP
	IPCountry string `json:"ip_country"`

	// Two-letter country code from IP
	IPCountryCode string `json:"ip_country_code"`

	// State/region detected from IP
	IPState string `json:"ip_state"`

	// City detected from IP
	IPCity string `json:"ip_city"`

	// Latitude coordinate of IP location
	Latitude float64 `json:"latitude"`

	// Longitude coordinate of IP location
	Longitude float64 `json:"longitude"`

	// IP address
	IPAddress string `json:"ip_address"`

	// Internet Service Provider
	Isp string `json:"isp"`

	// Organization associated with IP
	Organization string `json:"organization"`

	// Whether IP is from VPN or Tor network
	IsVpnOrTor bool `json:"is_vpn_or_tor"`

	// Whether IP is from a data center
	IsDataCenter bool `json:"is_data_center"`

	// Time zone detected from IP
	TimeZone string `json:"time_zone"`

	// Time zone offset
	TimeZoneOffset string `json:"time_zone_offset"`

	// IP geolocation of this entry plus great-circle distances (km) to the ID
	// document address and the POA document address. Distances are `null` when
	// either side has no resolvable location.
	IP SessionDecisionIPAnalysesIP `json:"ip"`

	// Location extracted from the ID document address plus distances (km) to the IP
	// geolocation and the POA document address. `location` is `null` when no
	// document address could be geocoded.
	IDDocument SessionDecisionIPAnalysesIDDocument `json:"id_document"`

	// Location extracted from the Proof of Address document plus distances (km) to
	// the IP geolocation and the ID document address. `location` is `null` when the
	// session has no POA step or the address could not be geocoded.
	POADocument SessionDecisionIPAnalysesPOADocument `json:"poa_document"`
	Warnings    []SessionDecisionIPAnalysesWarnings  `json:"warnings"`

	// Cross-session matches found for this entry's IP address or device identity.
	// Every match is another verification session in your application (`source` is
	// always `session`) that shares the same value, always belonging to a different
	// vendor user / `vendor_data` than the current session, capped at 5 per
	// collector (`device_fingerprint` sums two independently capped collectors, so
	// up to 10 entries are possible). Every item carries `match_source`,
	// `confidence`, `match_mode`, `device_info` and `location_info`; the keys
	// `recovery_similarity`, `tls_ja4_corroborated` and `recovery_gate_reason` are
	// present only when `match_source` is `recovered_high`.
	Matches []SessionDecisionIPAnalysesMatches `json:"matches"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIPAnalyses is a response object.

func (*SessionDecisionIPAnalyses) UnmarshalJSON

func (r *SessionDecisionIPAnalyses) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIPAnalyses leniently.

type SessionDecisionIPAnalysesIDDocument

type SessionDecisionIPAnalysesIDDocument struct {
	// Coordinates, or `null` when unavailable.
	Location                SessionDecisionIPAnalysesIDDocumentLocation `json:"location"`
	DistanceFromIP          float64                                     `json:"distance_from_ip"`
	DistanceFromPOADocument float64                                     `json:"distance_from_poa_document"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIPAnalysesIDDocument: Location extracted from the ID document address plus distances (km) to the IP geolocation and the POA document address. `location` is `null` when no document address could be geocoded.

func (*SessionDecisionIPAnalysesIDDocument) UnmarshalJSON

func (r *SessionDecisionIPAnalysesIDDocument) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIPAnalysesIDDocument leniently.

type SessionDecisionIPAnalysesIDDocumentLocation

type SessionDecisionIPAnalysesIDDocumentLocation struct {
	Latitude  float64 `json:"latitude"`
	Longitude float64 `json:"longitude"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIPAnalysesIDDocumentLocation: Coordinates, or `null` when unavailable.

func (*SessionDecisionIPAnalysesIDDocumentLocation) UnmarshalJSON

func (r *SessionDecisionIPAnalysesIDDocumentLocation) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIPAnalysesIDDocumentLocation leniently.

type SessionDecisionIPAnalysesIP

type SessionDecisionIPAnalysesIP struct {
	// Coordinates, or `null` when unavailable.
	Location                SessionDecisionIPAnalysesIPLocation `json:"location"`
	DistanceFromIDDocument  float64                             `json:"distance_from_id_document"`
	DistanceFromPOADocument float64                             `json:"distance_from_poa_document"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIPAnalysesIP: IP geolocation of this entry plus great-circle distances (km) to the ID document address and the POA document address. Distances are `null` when either side has no resolvable location.

func (*SessionDecisionIPAnalysesIP) UnmarshalJSON

func (r *SessionDecisionIPAnalysesIP) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIPAnalysesIP leniently.

type SessionDecisionIPAnalysesIPLocation

type SessionDecisionIPAnalysesIPLocation struct {
	Latitude  float64 `json:"latitude"`
	Longitude float64 `json:"longitude"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIPAnalysesIPLocation: Coordinates, or `null` when unavailable.

func (*SessionDecisionIPAnalysesIPLocation) UnmarshalJSON

func (r *SessionDecisionIPAnalysesIPLocation) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIPAnalysesIPLocation leniently.

type SessionDecisionIPAnalysesMatches

type SessionDecisionIPAnalysesMatches struct {
	// Session ID of the matching session.
	SessionID string `json:"session_id"`

	// Sequential number of the matching session.
	SessionNumber int64 `json:"session_number"`

	// `vendor_data` of the matching session - always different from the current
	// session's vendor user.
	VendorData string `json:"vendor_data"`

	// Creation date of the matching session (`YYYY-MM-DDTHH:MM:SSZ`).
	VerificationDate time.Time `json:"verification_date"`

	// Whether the match was on IP address or device fingerprint
	MatchType SessionDecisionIPAnalysesMatchesMatchType `json:"match_type"`

	// How this match was reached: `ip_address` (shared IP address - network
	// co-location, not a device-identity claim), `persistent_id` (exact stored
	// persistent device identifier), `legacy_fp` (legacy `didit-fp-*`
	// device-fingerprint hash), or `recovered_high` (high-confidence fuzzy
	// fingerprint-recovery hit). Lower-confidence recovery candidates surface as
	// risk warnings only, never in this array.
	MatchSource SessionDecisionIPAnalysesMatchesMatchSource `json:"match_source"`

	// The value that matched: the shared IP address, the persistent device
	// identifier or legacy fingerprint hash, or - for `recovered_high` - the UUID
	// of the recovered device.
	MatchedValue string `json:"matched_value"`

	// Lifecycle status of the matching session.
	Status string `json:"status"`

	// Whether the matched value is on a blocklist. Currently always `false` for
	// device/IP matches.
	IsBlocklisted bool `json:"is_blocklisted"`

	// Standalone API service of the matching session; `null` for workflow sessions.
	APIService string `json:"api_service"`

	// Always `session` for device/IP matches - every match is another verification
	// session in your application.
	Source SessionDecisionIPAnalysesMatchesSource `json:"source"`

	// Device details observed on the matching session.
	DeviceInfo SessionDecisionIPAnalysesMatchesDeviceInfo `json:"device_info"`

	// Network and geolocation details observed on the matching session.
	LocationInfo SessionDecisionIPAnalysesMatchesLocationInfo `json:"location_info"`

	// Server-side identification confidence, computed as `1 - P(false positive)`:
	// `1.0` for deterministic matches (`persistent_id`, or hardware-rooted
	// `recovered_high`), `0.5` for `legacy_fp`, `0.0` for `ip_address` (co-location
	// only), and a corroboration-adjusted value below `1.0` for probabilistic
	// recovered matches (higher when the TLS JA4 fingerprint and IP country
	// independently agree).
	Confidence float64 `json:"confidence"`

	// Evidence class of the match: `deterministic` (exact stored or hardware-rooted
	// identifier that cannot collide between physical devices), `probabilistic`
	// (fuzzy fingerprint evidence), or `co_occurrence` (shared network only, no
	// device-identity claim).
	MatchMode SessionDecisionIPAnalysesMatchesMatchMode `json:"match_mode"`

	// Cosine similarity of the fingerprint-recovery match, rounded to 4 decimals.
	// Present only when `match_source` is `recovered_high`.
	RecoverySimilarity float64 `json:"recovery_similarity"`

	// Whether the TLS JA4 fingerprints of the two observations agree - a
	// server-observed signal the browser cannot spoof. Present only when
	// `match_source` is `recovered_high`.
	TLSJa4Corroborated bool `json:"tls_ja4_corroborated"`

	// Why the recovery match passed the false-positive hard gate:
	// `hardware_root_match` (a hardware-rooted device identifier matched exactly)
	// or, on configurations that admit probe-only evidence,
	// `exact_composite_plus_<n>_families` /
	// `very_high_similarity_plus_<n>_families`. Present only when `match_source` is
	// `recovered_high`.
	RecoveryGateReason string `json:"recovery_gate_reason"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIPAnalysesMatches is a response object.

func (*SessionDecisionIPAnalysesMatches) UnmarshalJSON

func (r *SessionDecisionIPAnalysesMatches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIPAnalysesMatches leniently.

type SessionDecisionIPAnalysesMatchesDeviceInfo

type SessionDecisionIPAnalysesMatchesDeviceInfo struct {
	DeviceBrand       string `json:"device_brand"`
	DeviceModel       string `json:"device_model"`
	BrowserFamily     string `json:"browser_family"`
	OsFamily          string `json:"os_family"`
	Platform          string `json:"platform"`
	DeviceFingerprint string `json:"device_fingerprint"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIPAnalysesMatchesDeviceInfo: Device details observed on the matching session.

func (*SessionDecisionIPAnalysesMatchesDeviceInfo) UnmarshalJSON

func (r *SessionDecisionIPAnalysesMatchesDeviceInfo) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIPAnalysesMatchesDeviceInfo leniently.

type SessionDecisionIPAnalysesMatchesLocationInfo

type SessionDecisionIPAnalysesMatchesLocationInfo struct {
	IPAddress     string `json:"ip_address"`
	IPCountry     string `json:"ip_country"`
	IPCountryCode string `json:"ip_country_code"`
	IPState       string `json:"ip_state"`
	IPCity        string `json:"ip_city"`
	IsVpnOrTor    bool   `json:"is_vpn_or_tor"`
	IsDataCenter  bool   `json:"is_data_center"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIPAnalysesMatchesLocationInfo: Network and geolocation details observed on the matching session.

func (*SessionDecisionIPAnalysesMatchesLocationInfo) UnmarshalJSON

func (r *SessionDecisionIPAnalysesMatchesLocationInfo) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIPAnalysesMatchesLocationInfo leniently.

type SessionDecisionIPAnalysesMatchesMatchMode

type SessionDecisionIPAnalysesMatchesMatchMode string

SessionDecisionIPAnalysesMatchesMatchMode: Evidence class of the match: `deterministic` (exact stored or hardware-rooted identifier that cannot collide between physical devices), `probabilistic` (fuzzy fingerprint evidence), or `co_occurrence` (shared network only, no device-identity claim).

SessionDecisionIPAnalysesMatchesMatchMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIPAnalysesMatchesMatchModeDeterministic SessionDecisionIPAnalysesMatchesMatchMode = "deterministic"
	SessionDecisionIPAnalysesMatchesMatchModeProbabilistic SessionDecisionIPAnalysesMatchesMatchMode = "probabilistic"
	SessionDecisionIPAnalysesMatchesMatchModeCoOccurrence  SessionDecisionIPAnalysesMatchesMatchMode = "co_occurrence"
)

Known values of SessionDecisionIPAnalysesMatchesMatchMode.

type SessionDecisionIPAnalysesMatchesMatchSource

type SessionDecisionIPAnalysesMatchesMatchSource string

SessionDecisionIPAnalysesMatchesMatchSource: How this match was reached: `ip_address` (shared IP address - network co-location, not a device-identity claim), `persistent_id` (exact stored persistent device identifier), `legacy_fp` (legacy `didit-fp-*` device-fingerprint hash), or `recovered_high` (high-confidence fuzzy fingerprint-recovery hit). Lower-confidence recovery candidates surface as risk warnings only, never in this array.

SessionDecisionIPAnalysesMatchesMatchSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIPAnalysesMatchesMatchSourceIPAddress     SessionDecisionIPAnalysesMatchesMatchSource = "ip_address"
	SessionDecisionIPAnalysesMatchesMatchSourcePersistentID  SessionDecisionIPAnalysesMatchesMatchSource = "persistent_id"
	SessionDecisionIPAnalysesMatchesMatchSourceLegacyFp      SessionDecisionIPAnalysesMatchesMatchSource = "legacy_fp"
	SessionDecisionIPAnalysesMatchesMatchSourceRecoveredHigh SessionDecisionIPAnalysesMatchesMatchSource = "recovered_high"
)

Known values of SessionDecisionIPAnalysesMatchesMatchSource.

type SessionDecisionIPAnalysesMatchesMatchType

type SessionDecisionIPAnalysesMatchesMatchType string

SessionDecisionIPAnalysesMatchesMatchType: Whether the match was on IP address or device fingerprint

SessionDecisionIPAnalysesMatchesMatchType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIPAnalysesMatchesMatchTypeIPAddress         SessionDecisionIPAnalysesMatchesMatchType = "ip_address"
	SessionDecisionIPAnalysesMatchesMatchTypeDeviceFingerprint SessionDecisionIPAnalysesMatchesMatchType = "device_fingerprint"
)

Known values of SessionDecisionIPAnalysesMatchesMatchType.

type SessionDecisionIPAnalysesMatchesSource

type SessionDecisionIPAnalysesMatchesSource string

SessionDecisionIPAnalysesMatchesSource: Always `session` for device/IP matches - every match is another verification session in your application.

SessionDecisionIPAnalysesMatchesSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIPAnalysesMatchesSourceSession SessionDecisionIPAnalysesMatchesSource = "session"
)

Known values of SessionDecisionIPAnalysesMatchesSource.

type SessionDecisionIPAnalysesPOADocument

type SessionDecisionIPAnalysesPOADocument struct {
	// Coordinates, or `null` when unavailable.
	Location               SessionDecisionIPAnalysesPOADocumentLocation `json:"location"`
	DistanceFromIP         float64                                      `json:"distance_from_ip"`
	DistanceFromIDDocument float64                                      `json:"distance_from_id_document"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIPAnalysesPOADocument: Location extracted from the Proof of Address document plus distances (km) to the IP geolocation and the ID document address. `location` is `null` when the session has no POA step or the address could not be geocoded.

func (*SessionDecisionIPAnalysesPOADocument) UnmarshalJSON

func (r *SessionDecisionIPAnalysesPOADocument) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIPAnalysesPOADocument leniently.

type SessionDecisionIPAnalysesPOADocumentLocation

type SessionDecisionIPAnalysesPOADocumentLocation struct {
	Latitude  float64 `json:"latitude"`
	Longitude float64 `json:"longitude"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIPAnalysesPOADocumentLocation: Coordinates, or `null` when unavailable.

func (*SessionDecisionIPAnalysesPOADocumentLocation) UnmarshalJSON

func (r *SessionDecisionIPAnalysesPOADocumentLocation) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIPAnalysesPOADocumentLocation leniently.

type SessionDecisionIPAnalysesStatus

type SessionDecisionIPAnalysesStatus string

SessionDecisionIPAnalysesStatus: Feature-level status of this Device & IP Analysis entry. Independent of the top-level session `status` - a session can reach its overall decision while an individual feature stays `In Review`.

SessionDecisionIPAnalysesStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIPAnalysesStatusNotFinished    SessionDecisionIPAnalysesStatus = "Not Finished"
	SessionDecisionIPAnalysesStatusApproved       SessionDecisionIPAnalysesStatus = "Approved"
	SessionDecisionIPAnalysesStatusDeclined       SessionDecisionIPAnalysesStatus = "Declined"
	SessionDecisionIPAnalysesStatusInReview       SessionDecisionIPAnalysesStatus = "In Review"
	SessionDecisionIPAnalysesStatusResubRequested SessionDecisionIPAnalysesStatus = "Resub Requested"
)

Known values of SessionDecisionIPAnalysesStatus.

type SessionDecisionIPAnalysesWarnings

type SessionDecisionIPAnalysesWarnings struct {
	// The feature that generated this warning. The value identifies the feature
	// block the warning belongs to. Each module's warnings array typically uses the
	// value matching its module (e.g. `PHONE` inside
	// `phone_verifications[].warnings`), but the enum above is authoritative across
	// all feature warnings on the decision payload.
	Feature          SessionDecisionIPAnalysesWarningsFeature `json:"feature"`
	Risk             string                                   `json:"risk"`
	AdditionalData   map[string]any                           `json:"additional_data"`
	LogType          string                                   `json:"log_type"`
	ShortDescription string                                   `json:"short_description"`
	LongDescription  string                                   `json:"long_description"`

	// The workflow graph node ID that generated this warning
	NodeID string `json:"node_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionIPAnalysesWarnings is a response object.

func (*SessionDecisionIPAnalysesWarnings) UnmarshalJSON

func (r *SessionDecisionIPAnalysesWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionIPAnalysesWarnings leniently.

type SessionDecisionIPAnalysesWarningsFeature

type SessionDecisionIPAnalysesWarningsFeature string

SessionDecisionIPAnalysesWarningsFeature: The feature that generated this warning. The value identifies the feature block the warning belongs to. Each module's warnings array typically uses the value matching its module (e.g. `PHONE` inside `phone_verifications[].warnings`), but the enum above is authoritative across all feature warnings on the decision payload.

SessionDecisionIPAnalysesWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionIPAnalysesWarningsFeatureIDVerification     SessionDecisionIPAnalysesWarningsFeature = "ID_VERIFICATION"
	SessionDecisionIPAnalysesWarningsFeatureNFC                SessionDecisionIPAnalysesWarningsFeature = "NFC"
	SessionDecisionIPAnalysesWarningsFeatureLiveness           SessionDecisionIPAnalysesWarningsFeature = "LIVENESS"
	SessionDecisionIPAnalysesWarningsFeatureFacematch          SessionDecisionIPAnalysesWarningsFeature = "FACEMATCH"
	SessionDecisionIPAnalysesWarningsFeatureProofOfAddress     SessionDecisionIPAnalysesWarningsFeature = "PROOF_OF_ADDRESS"
	SessionDecisionIPAnalysesWarningsFeaturePhone              SessionDecisionIPAnalysesWarningsFeature = "PHONE"
	SessionDecisionIPAnalysesWarningsFeatureEmail              SessionDecisionIPAnalysesWarningsFeature = "EMAIL"
	SessionDecisionIPAnalysesWarningsFeatureAML                SessionDecisionIPAnalysesWarningsFeature = "AML"
	SessionDecisionIPAnalysesWarningsFeatureLocation           SessionDecisionIPAnalysesWarningsFeature = "LOCATION"
	SessionDecisionIPAnalysesWarningsFeatureDatabaseValidation SessionDecisionIPAnalysesWarningsFeature = "DATABASE_VALIDATION"
	SessionDecisionIPAnalysesWarningsFeatureQuestionnaire      SessionDecisionIPAnalysesWarningsFeature = "QUESTIONNAIRE"
	SessionDecisionIPAnalysesWarningsFeatureDocumentAi         SessionDecisionIPAnalysesWarningsFeature = "DOCUMENT_AI"
	SessionDecisionIPAnalysesWarningsFeatureKYBRegistry        SessionDecisionIPAnalysesWarningsFeature = "KYB_REGISTRY"
	SessionDecisionIPAnalysesWarningsFeatureKYBDocuments       SessionDecisionIPAnalysesWarningsFeature = "KYB_DOCUMENTS"
	SessionDecisionIPAnalysesWarningsFeatureKYBKeyPeople       SessionDecisionIPAnalysesWarningsFeature = "KYB_KEY_PEOPLE"
)

Known values of SessionDecisionIPAnalysesWarningsFeature.

type SessionDecisionKeyPeopleChecks

type SessionDecisionKeyPeopleChecks struct {
	Status string `json:"status"`
	NodeID string `json:"node_id"`

	// Parties discovered via the registry check.
	Registry SessionDecisionKeyPeopleChecksRegistry `json:"registry"`

	// Parties submitted by the business admin during the Key People flow
	// (BusinessParty rows where source=USER).
	Submitted SessionDecisionKeyPeopleChecksSubmitted `json:"submitted"`

	// Aggregate UBO KYC progress, or null when no UBOs have linked KYC sessions.
	UBOKYCSummary SessionDecisionKeyPeopleChecksUBOKYCSummary `json:"ubo_kyc_summary"`
	Warnings      []map[string]any                            `json:"warnings"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionKeyPeopleChecks: Aggregate check over the company's officers + UBOs. Uses the `registry` / `submitted` shape. Present only when session_kind = business.

func (*SessionDecisionKeyPeopleChecks) UnmarshalJSON

func (r *SessionDecisionKeyPeopleChecks) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionKeyPeopleChecks leniently.

type SessionDecisionKeyPeopleChecksRegistry

type SessionDecisionKeyPeopleChecksRegistry struct {
	// Officers discovered via the registry check, each enriched with the status of
	// any child KYC session and AML screening spawned for them.
	Officers []SessionDecisionKeyPeopleChecksRegistryOfficers `json:"officers"`

	// Beneficial owners discovered via the registry check, each enriched with the
	// status of any child KYC session and AML screening spawned for them.
	BeneficialOwners []SessionDecisionKeyPeopleChecksRegistryBeneficialOwners `json:"beneficial_owners"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionKeyPeopleChecksRegistry: Parties discovered via the registry check.

func (*SessionDecisionKeyPeopleChecksRegistry) UnmarshalJSON

func (r *SessionDecisionKeyPeopleChecksRegistry) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionKeyPeopleChecksRegistry leniently.

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwners

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwners struct {
	UUID string `json:"uuid"`

	// Beneficial owner's full name (or company name for corporate UBOs).
	Name      string `json:"name"`
	FirstName string `json:"first_name"`
	LastName  string `json:"last_name"`

	// Complete birth date when reported.
	DateOfBirth        string                                                           `json:"date_of_birth"`
	CountryOfBirth     string                                                           `json:"country_of_birth"`
	Email              string                                                           `json:"email"`
	CompanyName        string                                                           `json:"company_name"`
	RegistrationNumber string                                                           `json:"registration_number"`
	EntityType         SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersEntityType `json:"entity_type"`
	Nationality        string                                                           `json:"nationality"`
	Designation        string                                                           `json:"designation"`

	// Role names held by this owner, e.g. `["ubo", "shareholder"]`.
	Roles []string `json:"roles"`

	// Lower bound of the ownership percentage as reported by the registry.
	// Free-form string (e.g. `"25"`, `"25-50%"`); use `effective_ownership_percent`
	// for a parsed numeric value.
	OwnershipMinShares string `json:"ownership_min_shares"`

	// Upper bound of the ownership percentage as reported by the registry.
	// Free-form string; use `effective_ownership_percent` for a parsed numeric
	// value.
	OwnershipMaxShares string `json:"ownership_max_shares"`
	IsActive           bool   `json:"is_active"`

	// Status of the AML screening run for this beneficial owner. `null` when no AML
	// screening was run.
	AMLStatus SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersAMLStatus `json:"aml_status"`

	// Raw lifecycle status of the child KYC session spawned for this beneficial
	// owner. This is the full session status enum (not a reduced
	// Approved/Declined/Pending set). `null` when no child KYC session exists.
	KYCStatus SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatus `json:"kyc_status"`

	// Shareable URL of the child KYC session. `null` when no child session exists.
	KYCSessionURL string `json:"kyc_session_url"`

	// Session id of the child KYC session. Pass it to this same decision endpoint
	// to fetch the person's full KYC report. `null` when no child session exists.
	KYCSessionID string `json:"kyc_session_id"`

	// Base workflow type of the child session's workflow (e.g. `kyc`). `null` for
	// graph-based workflows or when no child session exists.
	VerificationWorkflowType string `json:"verification_workflow_type"`

	// Workflow id used by the child session. `null` when no child session exists.
	VerificationWorkflowID string `json:"verification_workflow_id"`

	// Human-readable label of the child session's workflow. `null` when unset.
	VerificationWorkflowLabel string `json:"verification_workflow_label"`

	// Per-feature progress of the child verification session, e.g. `[{"feature":
	// "ID_VERIFICATION", "status": "Approved"}]`. `null` when the child session has
	// no resolvable feature list.
	VerificationWorkflowFeatures []SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeatures `json:"verification_workflow_features"`

	// Stable internal identifier of the verified individual behind the child
	// session - useful for cross-session linking. `null` when no child session
	// exists or the user has not been resolved yet.
	DiditInternalID string `json:"didit_internal_id"`

	// Document type presented in the child KYC session (e.g. `P`, `ID`, `DL`).
	// `null` until the child session has an ID verification result.
	KYCDocumentType string `json:"kyc_document_type"`

	// Nationality extracted from the document in the child KYC session. `null`
	// until available.
	KYCNationality string `json:"kyc_nationality"`

	// Whether the child KYC session's liveness check passed. `null` when no
	// liveness check has run.
	KYCLivenessPassed bool `json:"kyc_liveness_passed"`

	// When the child KYC session reached `Approved`. `null` while the child session
	// has any other status.
	KYCVerifiedAt time.Time `json:"kyc_verified_at"`

	// Per-category summary derived from the person's AML hits. `null` when there
	// are no hits.
	KYCAMLCategories SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategories `json:"kyc_aml_categories"`

	// ISO 8601 timestamp of the last verification-invite notification sent for this
	// person's child session. `null` when none was sent.
	KYCNotificationSentAt string `json:"kyc_notification_sent_at"`

	// For corporate UBOs: the owning entity's own beneficial owners, as raw objects
	// extracted from the registry. Empty array when not applicable.
	ChildBeneficialOwners []map[string]any `json:"child_beneficial_owners"`

	// Parsed numeric ownership percentage - the max bound when available, otherwise
	// the min bound. `null` when neither bound could be parsed.
	EffectiveOwnershipPercent float64 `json:"effective_ownership_percent"`
	VotingMinShares           string  `json:"voting_min_shares"`
	VotingMaxShares           string  `json:"voting_max_shares"`

	// Appointment date when reported.
	AppointmentDate string `json:"appointment_date"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionKeyPeopleChecksRegistryBeneficialOwners is a response object.

func (*SessionDecisionKeyPeopleChecksRegistryBeneficialOwners) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionKeyPeopleChecksRegistryBeneficialOwners leniently.

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersAMLStatus

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersAMLStatus string

SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersAMLStatus: Status of the AML screening run for this beneficial owner. `null` when no AML screening was run.

SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersAMLStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersAMLStatusNotFinished    SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersAMLStatus = "Not Finished"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersAMLStatusApproved       SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersAMLStatus = "Approved"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersAMLStatusDeclined       SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersAMLStatus = "Declined"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersAMLStatusInReview       SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersAMLStatus = "In Review"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersAMLStatusResubRequested SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersAMLStatus = "Resub Requested"
)

Known values of SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersAMLStatus.

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersEntityType

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersEntityType string

SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersEntityType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersEntityTypePerson  SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersEntityType = "person"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersEntityTypeCompany SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersEntityType = "company"
)

Known values of SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersEntityType.

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategories

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategories struct {
	Sanctions    SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesSanctions    `json:"sanctions"`
	PEP          SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesPEP          `json:"pep"`
	AdverseMedia SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesAdverseMedia `json:"adverse_media"`
	Warnings     SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesWarnings     `json:"warnings"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategories: Per-category summary derived from the person's AML hits. `null` when there are no hits.

func (*SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategories) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategories leniently.

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesAdverseMedia

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesAdverseMedia string

SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesAdverseMedia is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesAdverseMediaMatch SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesAdverseMedia = "match"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesAdverseMediaClear SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesAdverseMedia = "clear"
)

Known values of SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesAdverseMedia.

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesPEP

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesPEP string

SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesPEP is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesPEPMatch SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesPEP = "match"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesPEPClear SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesPEP = "clear"
)

Known values of SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesPEP.

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesSanctions

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesSanctions string

SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesSanctions is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesSanctionsMatch SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesSanctions = "match"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesSanctionsClear SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesSanctions = "clear"
)

Known values of SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesSanctions.

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesWarnings

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesWarnings string

SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesWarnings is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesWarningsMatch SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesWarnings = "match"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesWarningsClear SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesWarnings = "clear"
)

Known values of SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCAMLCategoriesWarnings.

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatus

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatus string

SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatus: Raw lifecycle status of the child KYC session spawned for this beneficial owner. This is the full session status enum (not a reduced Approved/Declined/Pending set). `null` when no child KYC session exists.

SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatusNotStarted   SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatus = "Not Started"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatusInProgress   SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatus = "In Progress"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatusApproved     SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatus = "Approved"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatusDeclined     SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatus = "Declined"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatusInReview     SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatus = "In Review"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatusExpired      SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatus = "Expired"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatusAbandoned    SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatus = "Abandoned"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatusKYCExpired   SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatus = "Kyc Expired"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatusResubmitted  SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatus = "Resubmitted"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatusAwaitingUser SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatus = "Awaiting User"
)

Known values of SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersKYCStatus.

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeatures

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeatures struct {
	// Feature display name (e.g. `ID_VERIFICATION`, `LIVENESS`, `AML`).
	Feature string `json:"feature"`

	// Feature-level status inside the child session.
	Status SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeaturesStatus `json:"status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeatures is a response object.

func (*SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeatures) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeatures leniently.

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeaturesStatus

type SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeaturesStatus string

SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeaturesStatus: Feature-level status inside the child session.

SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeaturesStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeaturesStatusNotFinished    SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeaturesStatus = "Not Finished"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeaturesStatusApproved       SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeaturesStatus = "Approved"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeaturesStatusDeclined       SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeaturesStatus = "Declined"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeaturesStatusInReview       SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeaturesStatus = "In Review"
	SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeaturesStatusResubRequested SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeaturesStatus = "Resub Requested"
)

Known values of SessionDecisionKeyPeopleChecksRegistryBeneficialOwnersVerificationWorkflowFeaturesStatus.

type SessionDecisionKeyPeopleChecksRegistryOfficers

type SessionDecisionKeyPeopleChecksRegistryOfficers struct {
	UUID string `json:"uuid"`

	// Officer's full name as recorded in the registry.
	Name string `json:"name"`

	// Free-text designation from the registry (e.g. `Director`, `Company
	// Secretary`).
	Designation string `json:"designation"`

	// Normalized officer role.
	Role        SessionDecisionKeyPeopleChecksRegistryOfficersRole `json:"role"`
	Nationality string                                             `json:"nationality"`

	// Date the officer was appointed.
	AppointmentDate string `json:"appointment_date"`

	// Date the appointment ended, when reported.
	TerminationDate string `json:"termination_date"`
	IsActive        bool   `json:"is_active"`

	// Officer address reported by the registry.
	Address string `json:"address"`

	// Status of the AML screening run for this officer. `null` when no AML
	// screening was run.
	AMLStatus SessionDecisionKeyPeopleChecksRegistryOfficersAMLStatus `json:"aml_status"`

	// Raw lifecycle status of the child KYC session spawned for this officer. This
	// is the full session status enum (not a reduced Approved/Declined/Pending
	// set). `null` when no child KYC session exists.
	KYCStatus SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatus `json:"kyc_status"`

	// Shareable URL of the child KYC session. `null` when no child session exists.
	KYCSessionURL string `json:"kyc_session_url"`

	// Session id of the child KYC session. Pass it to this same decision endpoint
	// to fetch the person's full KYC report. `null` when no child session exists.
	KYCSessionID string `json:"kyc_session_id"`

	// Base workflow type of the child session's workflow (e.g. `kyc`). `null` for
	// graph-based workflows or when no child session exists.
	VerificationWorkflowType string `json:"verification_workflow_type"`

	// Workflow id used by the child session. `null` when no child session exists.
	VerificationWorkflowID string `json:"verification_workflow_id"`

	// Human-readable label of the child session's workflow. `null` when unset.
	VerificationWorkflowLabel string `json:"verification_workflow_label"`

	// Per-feature progress of the child verification session, e.g. `[{"feature":
	// "ID_VERIFICATION", "status": "Approved"}]`. `null` when the child session has
	// no resolvable feature list.
	VerificationWorkflowFeatures []SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeatures `json:"verification_workflow_features"`

	// Stable internal identifier of the verified individual behind the child
	// session - useful for cross-session linking. `null` when no child session
	// exists or the user has not been resolved yet.
	DiditInternalID string `json:"didit_internal_id"`

	// Document type presented in the child KYC session (e.g. `P`, `ID`, `DL`).
	// `null` until the child session has an ID verification result.
	KYCDocumentType string `json:"kyc_document_type"`

	// Nationality extracted from the document in the child KYC session. `null`
	// until available.
	KYCNationality string `json:"kyc_nationality"`

	// Whether the child KYC session's liveness check passed. `null` when no
	// liveness check has run.
	KYCLivenessPassed bool `json:"kyc_liveness_passed"`

	// When the child KYC session reached `Approved`. `null` while the child session
	// has any other status.
	KYCVerifiedAt time.Time `json:"kyc_verified_at"`

	// Per-category summary derived from the person's AML hits. `null` when there
	// are no hits.
	KYCAMLCategories SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategories `json:"kyc_aml_categories"`

	// ISO 8601 timestamp of the last verification-invite notification sent for this
	// person's child session. `null` when none was sent.
	KYCNotificationSentAt string `json:"kyc_notification_sent_at"`

	// Given name when explicitly reported by the registry; not inferred from the
	// full name.
	FirstName string `json:"first_name"`

	// Family name when explicitly reported by the registry.
	LastName string `json:"last_name"`

	// Complete registry-reported birth date. Null when only a birth year or month
	// is known.
	DateOfBirth string `json:"date_of_birth"`

	// Registry-reported birth year, including when the full date is unavailable.
	DateOfBirthYear int64 `json:"date_of_birth_year"`

	// Registry-reported birth month. Null when only the year is known.
	DateOfBirthMonth int64 `json:"date_of_birth_month"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionKeyPeopleChecksRegistryOfficers is a response object.

func (*SessionDecisionKeyPeopleChecksRegistryOfficers) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionKeyPeopleChecksRegistryOfficers leniently.

type SessionDecisionKeyPeopleChecksRegistryOfficersAMLStatus

type SessionDecisionKeyPeopleChecksRegistryOfficersAMLStatus string

SessionDecisionKeyPeopleChecksRegistryOfficersAMLStatus: Status of the AML screening run for this officer. `null` when no AML screening was run.

SessionDecisionKeyPeopleChecksRegistryOfficersAMLStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksRegistryOfficersAMLStatusNotFinished    SessionDecisionKeyPeopleChecksRegistryOfficersAMLStatus = "Not Finished"
	SessionDecisionKeyPeopleChecksRegistryOfficersAMLStatusApproved       SessionDecisionKeyPeopleChecksRegistryOfficersAMLStatus = "Approved"
	SessionDecisionKeyPeopleChecksRegistryOfficersAMLStatusDeclined       SessionDecisionKeyPeopleChecksRegistryOfficersAMLStatus = "Declined"
	SessionDecisionKeyPeopleChecksRegistryOfficersAMLStatusInReview       SessionDecisionKeyPeopleChecksRegistryOfficersAMLStatus = "In Review"
	SessionDecisionKeyPeopleChecksRegistryOfficersAMLStatusResubRequested SessionDecisionKeyPeopleChecksRegistryOfficersAMLStatus = "Resub Requested"
)

Known values of SessionDecisionKeyPeopleChecksRegistryOfficersAMLStatus.

type SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategories

type SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategories struct {
	Sanctions    SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesSanctions    `json:"sanctions"`
	PEP          SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesPEP          `json:"pep"`
	AdverseMedia SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesAdverseMedia `json:"adverse_media"`
	Warnings     SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesWarnings     `json:"warnings"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategories: Per-category summary derived from the person's AML hits. `null` when there are no hits.

func (*SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategories) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategories leniently.

type SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesAdverseMedia

type SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesAdverseMedia string

SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesAdverseMedia is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesAdverseMediaMatch SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesAdverseMedia = "match"
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesAdverseMediaClear SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesAdverseMedia = "clear"
)

Known values of SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesAdverseMedia.

type SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesPEP

type SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesPEP string

SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesPEP is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesPEPMatch SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesPEP = "match"
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesPEPClear SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesPEP = "clear"
)

Known values of SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesPEP.

type SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesSanctions

type SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesSanctions string

SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesSanctions is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesSanctionsMatch SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesSanctions = "match"
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesSanctionsClear SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesSanctions = "clear"
)

Known values of SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesSanctions.

type SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesWarnings

type SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesWarnings string

SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesWarnings is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesWarningsMatch SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesWarnings = "match"
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesWarningsClear SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesWarnings = "clear"
)

Known values of SessionDecisionKeyPeopleChecksRegistryOfficersKYCAMLCategoriesWarnings.

type SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatus

type SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatus string

SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatus: Raw lifecycle status of the child KYC session spawned for this officer. This is the full session status enum (not a reduced Approved/Declined/Pending set). `null` when no child KYC session exists.

SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatusNotStarted   SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatus = "Not Started"
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatusInProgress   SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatus = "In Progress"
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatusApproved     SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatus = "Approved"
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatusDeclined     SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatus = "Declined"
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatusInReview     SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatus = "In Review"
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatusExpired      SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatus = "Expired"
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatusAbandoned    SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatus = "Abandoned"
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatusKYCExpired   SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatus = "Kyc Expired"
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatusResubmitted  SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatus = "Resubmitted"
	SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatusAwaitingUser SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatus = "Awaiting User"
)

Known values of SessionDecisionKeyPeopleChecksRegistryOfficersKYCStatus.

type SessionDecisionKeyPeopleChecksRegistryOfficersRole

type SessionDecisionKeyPeopleChecksRegistryOfficersRole string

SessionDecisionKeyPeopleChecksRegistryOfficersRole: Normalized officer role.

SessionDecisionKeyPeopleChecksRegistryOfficersRole is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleDirector             SessionDecisionKeyPeopleChecksRegistryOfficersRole = "director"
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleNonExecutiveDirector SessionDecisionKeyPeopleChecksRegistryOfficersRole = "non_executive_director"
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleSecretary            SessionDecisionKeyPeopleChecksRegistryOfficersRole = "secretary"
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleChairman             SessionDecisionKeyPeopleChecksRegistryOfficersRole = "chairman"
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleUBO                  SessionDecisionKeyPeopleChecksRegistryOfficersRole = "ubo"
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleShareholder          SessionDecisionKeyPeopleChecksRegistryOfficersRole = "shareholder"
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleRepresentative       SessionDecisionKeyPeopleChecksRegistryOfficersRole = "representative"
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleFounder              SessionDecisionKeyPeopleChecksRegistryOfficersRole = "founder"
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleLegalAdvisor         SessionDecisionKeyPeopleChecksRegistryOfficersRole = "legal_advisor"
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleAuthorizedSignatory  SessionDecisionKeyPeopleChecksRegistryOfficersRole = "authorized_signatory"
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleTrustee              SessionDecisionKeyPeopleChecksRegistryOfficersRole = "trustee"
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleBeneficiary          SessionDecisionKeyPeopleChecksRegistryOfficersRole = "beneficiary"
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleSettlor              SessionDecisionKeyPeopleChecksRegistryOfficersRole = "settlor"
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleProtector            SessionDecisionKeyPeopleChecksRegistryOfficersRole = "protector"
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleCompanyOfficer       SessionDecisionKeyPeopleChecksRegistryOfficersRole = "company_officer"
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleInvestor             SessionDecisionKeyPeopleChecksRegistryOfficersRole = "investor"
	SessionDecisionKeyPeopleChecksRegistryOfficersRoleOther                SessionDecisionKeyPeopleChecksRegistryOfficersRole = "other"
)

Known values of SessionDecisionKeyPeopleChecksRegistryOfficersRole.

type SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeatures

type SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeatures struct {
	// Feature display name (e.g. `ID_VERIFICATION`, `LIVENESS`, `AML`).
	Feature string `json:"feature"`

	// Feature-level status inside the child session.
	Status SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeaturesStatus `json:"status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeatures is a response object.

func (*SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeatures) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeatures leniently.

type SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeaturesStatus

type SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeaturesStatus string

SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeaturesStatus: Feature-level status inside the child session.

SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeaturesStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeaturesStatusNotFinished    SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeaturesStatus = "Not Finished"
	SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeaturesStatusApproved       SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeaturesStatus = "Approved"
	SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeaturesStatusDeclined       SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeaturesStatus = "Declined"
	SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeaturesStatusInReview       SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeaturesStatus = "In Review"
	SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeaturesStatusResubRequested SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeaturesStatus = "Resub Requested"
)

Known values of SessionDecisionKeyPeopleChecksRegistryOfficersVerificationWorkflowFeaturesStatus.

type SessionDecisionKeyPeopleChecksSubmitted

type SessionDecisionKeyPeopleChecksSubmitted struct {
	Parties []SessionDecisionKeyPeopleChecksSubmittedParties `json:"parties"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionKeyPeopleChecksSubmitted: Parties submitted by the business admin during the Key People flow (BusinessParty rows where source=USER).

func (*SessionDecisionKeyPeopleChecksSubmitted) UnmarshalJSON

func (r *SessionDecisionKeyPeopleChecksSubmitted) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionKeyPeopleChecksSubmitted leniently.

type SessionDecisionKeyPeopleChecksSubmittedParties

type SessionDecisionKeyPeopleChecksSubmittedParties struct {
	UUID       string                                                   `json:"uuid"`
	EntityType SessionDecisionKeyPeopleChecksSubmittedPartiesEntityType `json:"entity_type"`

	// Always `USER` here - this bucket only contains parties entered or confirmed
	// by the end user in the Key People flow (registry-discovered people appear
	// under `registry`).
	Source             SessionDecisionKeyPeopleChecksSubmittedPartiesSource `json:"source"`
	Name               string                                               `json:"name"`
	FirstName          string                                               `json:"first_name"`
	LastName           string                                               `json:"last_name"`
	CompanyName        string                                               `json:"company_name"`
	RegistrationNumber string                                               `json:"registration_number"`
	Email              string                                               `json:"email"`

	// Nationality for persons; country of incorporation for company parties.
	Nationality string `json:"nationality"`
	PhoneNumber string `json:"phone_number"`
	DateOfBirth string `json:"date_of_birth"`

	// Free-text job title / position (persons only).
	Position string `json:"position"`

	// Workflow-defined custom fields collected for this party; keys are defined by
	// the workflow's key-people field descriptors.
	CustomFields map[string]any `json:"custom_fields"`
	IsActive     bool           `json:"is_active"`

	// True when the end user skipped verification for this party (only possible
	// when the role allows skipping).
	IsSkipped bool `json:"is_skipped"`

	// True when a child KYC / KYB sub-session is required for this party based on
	// role settings and ownership thresholds.
	RequiresVerification bool `json:"requires_verification"`

	// All roles held by this party, each with its own ownership and voting
	// percentages. There is no scalar `role`/`ownership_percent` on the party
	// itself.
	Roles []SessionDecisionKeyPeopleChecksSubmittedPartiesRoles `json:"roles"`

	// Child KYC session id for person parties requiring verification. `null`
	// otherwise.
	KYCSessionID string `json:"kyc_session_id"`

	// Lifecycle status of the child KYC session. `null` when no child KYC session
	// exists.
	KYCSessionStatus SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatus `json:"kyc_session_status"`
	KYCSessionURL    string                                                         `json:"kyc_session_url"`

	// Child KYB sub-session id for corporate parties requiring verification. `null`
	// otherwise.
	KYBSubSessionID string `json:"kyb_sub_session_id"`

	// Lifecycle status of the child KYB sub-session. `null` when no sub-session
	// exists.
	KYBSubSessionStatus SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatus `json:"kyb_sub_session_status"`

	// Shareable URL of the child KYB sub-session. `null` when no sub-session
	// exists.
	KYBSubSessionURL string `json:"kyb_sub_session_url"`

	// Base workflow type of the child session's workflow (KYC session preferred,
	// falling back to the KYB sub-session). `null` for graph-based workflows or
	// when no child session exists.
	VerificationWorkflowType string `json:"verification_workflow_type"`

	// Workflow id used by the child session. `null` when no child session exists.
	VerificationWorkflowID string `json:"verification_workflow_id"`

	// Human-readable label of the child session's workflow. `null` when unset.
	VerificationWorkflowLabel string `json:"verification_workflow_label"`

	// Per-feature progress of the child verification session, e.g. `[{"feature":
	// "ID_VERIFICATION", "status": "Approved"}]`. `null` when the child session has
	// no resolvable feature list.
	VerificationWorkflowFeatures []SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeatures `json:"verification_workflow_features"`

	// Stable internal identifier of the verified individual behind the child
	// session. `null` when not resolved.
	DiditInternalID string `json:"didit_internal_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionKeyPeopleChecksSubmittedParties: Party submitted by the business admin via the Key People flow (source=USER).

func (*SessionDecisionKeyPeopleChecksSubmittedParties) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionKeyPeopleChecksSubmittedParties leniently.

type SessionDecisionKeyPeopleChecksSubmittedPartiesEntityType

type SessionDecisionKeyPeopleChecksSubmittedPartiesEntityType string

SessionDecisionKeyPeopleChecksSubmittedPartiesEntityType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksSubmittedPartiesEntityTypePerson  SessionDecisionKeyPeopleChecksSubmittedPartiesEntityType = "person"
	SessionDecisionKeyPeopleChecksSubmittedPartiesEntityTypeCompany SessionDecisionKeyPeopleChecksSubmittedPartiesEntityType = "company"
)

Known values of SessionDecisionKeyPeopleChecksSubmittedPartiesEntityType.

type SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatus

type SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatus string

SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatus: Lifecycle status of the child KYB sub-session. `null` when no sub-session exists.

SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatusNotStarted   SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatus = "Not Started"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatusInProgress   SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatus = "In Progress"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatusApproved     SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatus = "Approved"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatusDeclined     SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatus = "Declined"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatusInReview     SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatus = "In Review"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatusExpired      SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatus = "Expired"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatusAbandoned    SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatus = "Abandoned"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatusKYCExpired   SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatus = "Kyc Expired"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatusResubmitted  SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatus = "Resubmitted"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatusAwaitingUser SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatus = "Awaiting User"
)

Known values of SessionDecisionKeyPeopleChecksSubmittedPartiesKYBSubSessionStatus.

type SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatus

type SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatus string

SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatus: Lifecycle status of the child KYC session. `null` when no child KYC session exists.

SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatusNotStarted   SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatus = "Not Started"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatusInProgress   SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatus = "In Progress"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatusApproved     SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatus = "Approved"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatusDeclined     SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatus = "Declined"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatusInReview     SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatus = "In Review"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatusExpired      SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatus = "Expired"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatusAbandoned    SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatus = "Abandoned"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatusKYCExpired   SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatus = "Kyc Expired"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatusResubmitted  SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatus = "Resubmitted"
	SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatusAwaitingUser SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatus = "Awaiting User"
)

Known values of SessionDecisionKeyPeopleChecksSubmittedPartiesKYCSessionStatus.

type SessionDecisionKeyPeopleChecksSubmittedPartiesRoles

type SessionDecisionKeyPeopleChecksSubmittedPartiesRoles struct {
	Role             SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole `json:"role"`
	OwnershipPercent float64                                                 `json:"ownership_percent"`
	VotingPercent    float64                                                 `json:"voting_percent"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionKeyPeopleChecksSubmittedPartiesRoles is a response object.

func (*SessionDecisionKeyPeopleChecksSubmittedPartiesRoles) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionKeyPeopleChecksSubmittedPartiesRoles leniently.

type SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole

type SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole string

SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleDirector             SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "director"
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleNonExecutiveDirector SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "non_executive_director"
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleSecretary            SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "secretary"
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleChairman             SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "chairman"
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleUBO                  SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "ubo"
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleShareholder          SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "shareholder"
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleRepresentative       SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "representative"
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleFounder              SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "founder"
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleLegalAdvisor         SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "legal_advisor"
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleAuthorizedSignatory  SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "authorized_signatory"
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleTrustee              SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "trustee"
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleBeneficiary          SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "beneficiary"
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleSettlor              SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "settlor"
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleProtector            SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "protector"
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleCompanyOfficer       SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "company_officer"
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleInvestor             SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "investor"
	SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRoleOther                SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole = "other"
)

Known values of SessionDecisionKeyPeopleChecksSubmittedPartiesRolesRole.

type SessionDecisionKeyPeopleChecksSubmittedPartiesSource

type SessionDecisionKeyPeopleChecksSubmittedPartiesSource string

SessionDecisionKeyPeopleChecksSubmittedPartiesSource: Always `USER` here - this bucket only contains parties entered or confirmed by the end user in the Key People flow (registry-discovered people appear under `registry`).

SessionDecisionKeyPeopleChecksSubmittedPartiesSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksSubmittedPartiesSourceUser SessionDecisionKeyPeopleChecksSubmittedPartiesSource = "USER"
)

Known values of SessionDecisionKeyPeopleChecksSubmittedPartiesSource.

type SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeatures

type SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeatures struct {
	// Feature display name (e.g. `ID_VERIFICATION`, `LIVENESS`, `AML`).
	Feature string `json:"feature"`

	// Feature-level status inside the child session.
	Status SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeaturesStatus `json:"status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeatures is a response object.

func (*SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeatures) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeatures leniently.

type SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeaturesStatus

type SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeaturesStatus string

SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeaturesStatus: Feature-level status inside the child session.

SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeaturesStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeaturesStatusNotFinished    SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeaturesStatus = "Not Finished"
	SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeaturesStatusApproved       SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeaturesStatus = "Approved"
	SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeaturesStatusDeclined       SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeaturesStatus = "Declined"
	SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeaturesStatusInReview       SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeaturesStatus = "In Review"
	SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeaturesStatusResubRequested SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeaturesStatus = "Resub Requested"
)

Known values of SessionDecisionKeyPeopleChecksSubmittedPartiesVerificationWorkflowFeaturesStatus.

type SessionDecisionKeyPeopleChecksUBOKYCSummary

type SessionDecisionKeyPeopleChecksUBOKYCSummary struct {
	Total    int64 `json:"total"`
	Approved int64 `json:"approved"`

	// UBOs whose KYC is Declined or In Review.
	Flagged int64 `json:"flagged"`
	Pending int64 `json:"pending"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionKeyPeopleChecksUBOKYCSummary: Aggregate UBO KYC progress, or null when no UBOs have linked KYC sessions.

func (*SessionDecisionKeyPeopleChecksUBOKYCSummary) UnmarshalJSON

func (r *SessionDecisionKeyPeopleChecksUBOKYCSummary) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionKeyPeopleChecksUBOKYCSummary leniently.

type SessionDecisionLivenessChecks

type SessionDecisionLivenessChecks struct {
	// Workflow graph node id of the liveness step that produced this report.
	NodeID string `json:"node_id"`

	// Feature-level status of this liveness step. Independent of the top-level
	// session `status` - a session can reach its overall decision while an
	// individual feature stays `In Review`.
	Status SessionDecisionLivenessChecksStatus `json:"status"`

	// Method used for liveness detection
	Method string `json:"method"`

	// Confidence score of the liveness check
	Score float64 `json:"score"`

	// URL of the reference image used
	ReferenceImage string `json:"reference_image"`

	// URL of the liveness check video
	VideoURL string `json:"video_url"`

	// Estimated age of the person
	AgeEstimation float64 `json:"age_estimation"`

	// Similar faces found by the duplicate-face search (top matches,
	// blocklisted/allowlisted entries first). Each entry's `source` tells you where
	// the matching face came from: `session` (another verification session),
	// `imported` (a face uploaded against a vendor user), `list_entry` (an
	// org-managed allow/block list face), or `retained_template` (an image-free
	// biometric template stored on a User, listed under
	// `/v3/biometric-templates/`). `session_id`, `session_number`, `status` and
	// `api_service` are `null` for non-session sources. `imported` matches still
	// populate `vendor_data`, `verification_date` and - when the vendor user has a
	// name on file - `user_details` (with `full_name` only) from the vendor-user
	// record; `retained_template` matches populate `vendor_user_id`, `vendor_data`,
	// `biometric_template_id` and `verification_date`, while their image and
	// identity fields are `null`; `list_entry` matches return all of these as
	// `null`.
	Matches  []SessionDecisionLivenessChecksMatches  `json:"matches"`
	Warnings []SessionDecisionLivenessChecksWarnings `json:"warnings"`

	// Face image quality score (0-100%). Only available for passive liveness.
	FaceQuality float64 `json:"face_quality"`

	// Face luminance/brightness score (0-100%). Only available for passive
	// liveness.
	FaceLuminance float64 `json:"face_luminance"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionLivenessChecks: One liveness report - the full report for a single liveness pass.

func (*SessionDecisionLivenessChecks) UnmarshalJSON

func (r *SessionDecisionLivenessChecks) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionLivenessChecks leniently.

type SessionDecisionLivenessChecksMatches

type SessionDecisionLivenessChecksMatches struct {
	// Session ID of the matching face. `null` when `source` is `imported`,
	// `list_entry`, or `retained_template`.
	SessionID     string `json:"session_id"`
	SessionNumber int64  `json:"session_number"`

	// Face similarity between the two images, clamped to 0-100.
	SimilarityPercentage float64 `json:"similarity_percentage"`

	// `vendor_data` of the matching session or linked User for imported and
	// retained-template faces.
	VendorData string `json:"vendor_data"`

	// Linked User id for `imported` and `retained_template` matches and for session
	// matches linked to a User. `null` for list entries and sessions without a
	// User.
	VendorUserID string `json:"vendor_user_id"`

	// Id of the retained biometric template. Set only when `source` is
	// `retained_template`; `null` otherwise.
	BiometricTemplateID string `json:"biometric_template_id"`

	// When the matching face was captured, or when a retained template was created.
	// `null` for list entries.
	VerificationDate time.Time `json:"verification_date"`

	// Identity data from the matching session or imported User profile. Always
	// `null` for `retained_template` and `list_entry` matches.
	UserDetails SessionDecisionLivenessChecksMatchesUserDetails `json:"user_details"`

	// Reference image for image-backed matches. Always `null` for
	// `retained_template` matches because retained templates contain no image.
	MatchImageURL string `json:"match_image_url"`

	// Lifecycle status of the matching session. `null` for non-session sources.
	Status string `json:"status"`

	// Whether the matching face is on a blocklist.
	IsBlocklisted bool `json:"is_blocklisted"`

	// Whether the matching face is on an allowlist.
	IsAllowlisted bool `json:"is_allowlisted"`

	// Standalone API service of the matching session (e.g. `PASSIVE_LIVENESS`,
	// `FACE_MATCH`); `null` for workflow sessions and non-session sources.
	APIService string `json:"api_service"`

	// Origin of the matching face: `session`, `imported` (User face upload),
	// `list_entry` (allow/block list), or `retained_template` (an image-free
	// biometric template stored on a User, listed under
	// `/v3/biometric-templates/`).
	Source SessionDecisionLivenessChecksMatchesSource `json:"source"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionLivenessChecksMatches is a response object.

func (*SessionDecisionLivenessChecksMatches) UnmarshalJSON

func (r *SessionDecisionLivenessChecksMatches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionLivenessChecksMatches leniently.

type SessionDecisionLivenessChecksMatchesSource

type SessionDecisionLivenessChecksMatchesSource string

SessionDecisionLivenessChecksMatchesSource: Origin of the matching face: `session`, `imported` (User face upload), `list_entry` (allow/block list), or `retained_template` (an image-free biometric template stored on a User, listed under `/v3/biometric-templates/`).

SessionDecisionLivenessChecksMatchesSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionLivenessChecksMatchesSourceSession          SessionDecisionLivenessChecksMatchesSource = "session"
	SessionDecisionLivenessChecksMatchesSourceImported         SessionDecisionLivenessChecksMatchesSource = "imported"
	SessionDecisionLivenessChecksMatchesSourceListEntry        SessionDecisionLivenessChecksMatchesSource = "list_entry"
	SessionDecisionLivenessChecksMatchesSourceRetainedTemplate SessionDecisionLivenessChecksMatchesSource = "retained_template"
)

Known values of SessionDecisionLivenessChecksMatchesSource.

type SessionDecisionLivenessChecksMatchesUserDetails

type SessionDecisionLivenessChecksMatchesUserDetails struct {
	FullName       string `json:"full_name"`
	DocumentType   string `json:"document_type"`
	DocumentNumber string `json:"document_number"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionLivenessChecksMatchesUserDetails: Identity data from the matching session or imported User profile. Always `null` for `retained_template` and `list_entry` matches.

func (*SessionDecisionLivenessChecksMatchesUserDetails) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionLivenessChecksMatchesUserDetails leniently.

type SessionDecisionLivenessChecksStatus

type SessionDecisionLivenessChecksStatus string

SessionDecisionLivenessChecksStatus: Feature-level status of this liveness step. Independent of the top-level session `status` - a session can reach its overall decision while an individual feature stays `In Review`.

SessionDecisionLivenessChecksStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionLivenessChecksStatusNotFinished    SessionDecisionLivenessChecksStatus = "Not Finished"
	SessionDecisionLivenessChecksStatusApproved       SessionDecisionLivenessChecksStatus = "Approved"
	SessionDecisionLivenessChecksStatusDeclined       SessionDecisionLivenessChecksStatus = "Declined"
	SessionDecisionLivenessChecksStatusInReview       SessionDecisionLivenessChecksStatus = "In Review"
	SessionDecisionLivenessChecksStatusResubRequested SessionDecisionLivenessChecksStatus = "Resub Requested"
)

Known values of SessionDecisionLivenessChecksStatus.

type SessionDecisionLivenessChecksWarnings

type SessionDecisionLivenessChecksWarnings struct {
	// The feature that generated this warning. The value identifies the feature
	// block the warning belongs to. Each module's warnings array typically uses the
	// value matching its module (e.g. `PHONE` inside
	// `phone_verifications[].warnings`), but the enum above is authoritative across
	// all feature warnings on the decision payload.
	Feature          SessionDecisionLivenessChecksWarningsFeature `json:"feature"`
	Risk             string                                       `json:"risk"`
	AdditionalData   map[string]any                               `json:"additional_data"`
	LogType          string                                       `json:"log_type"`
	ShortDescription string                                       `json:"short_description"`
	LongDescription  string                                       `json:"long_description"`

	// The workflow graph node ID that generated this warning
	NodeID string `json:"node_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionLivenessChecksWarnings is a response object.

func (*SessionDecisionLivenessChecksWarnings) UnmarshalJSON

func (r *SessionDecisionLivenessChecksWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionLivenessChecksWarnings leniently.

type SessionDecisionLivenessChecksWarningsFeature

type SessionDecisionLivenessChecksWarningsFeature string

SessionDecisionLivenessChecksWarningsFeature: The feature that generated this warning. The value identifies the feature block the warning belongs to. Each module's warnings array typically uses the value matching its module (e.g. `PHONE` inside `phone_verifications[].warnings`), but the enum above is authoritative across all feature warnings on the decision payload.

SessionDecisionLivenessChecksWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionLivenessChecksWarningsFeatureIDVerification     SessionDecisionLivenessChecksWarningsFeature = "ID_VERIFICATION"
	SessionDecisionLivenessChecksWarningsFeatureNFC                SessionDecisionLivenessChecksWarningsFeature = "NFC"
	SessionDecisionLivenessChecksWarningsFeatureLiveness           SessionDecisionLivenessChecksWarningsFeature = "LIVENESS"
	SessionDecisionLivenessChecksWarningsFeatureFacematch          SessionDecisionLivenessChecksWarningsFeature = "FACEMATCH"
	SessionDecisionLivenessChecksWarningsFeatureProofOfAddress     SessionDecisionLivenessChecksWarningsFeature = "PROOF_OF_ADDRESS"
	SessionDecisionLivenessChecksWarningsFeaturePhone              SessionDecisionLivenessChecksWarningsFeature = "PHONE"
	SessionDecisionLivenessChecksWarningsFeatureEmail              SessionDecisionLivenessChecksWarningsFeature = "EMAIL"
	SessionDecisionLivenessChecksWarningsFeatureAML                SessionDecisionLivenessChecksWarningsFeature = "AML"
	SessionDecisionLivenessChecksWarningsFeatureLocation           SessionDecisionLivenessChecksWarningsFeature = "LOCATION"
	SessionDecisionLivenessChecksWarningsFeatureDatabaseValidation SessionDecisionLivenessChecksWarningsFeature = "DATABASE_VALIDATION"
	SessionDecisionLivenessChecksWarningsFeatureQuestionnaire      SessionDecisionLivenessChecksWarningsFeature = "QUESTIONNAIRE"
	SessionDecisionLivenessChecksWarningsFeatureDocumentAi         SessionDecisionLivenessChecksWarningsFeature = "DOCUMENT_AI"
	SessionDecisionLivenessChecksWarningsFeatureKYBRegistry        SessionDecisionLivenessChecksWarningsFeature = "KYB_REGISTRY"
	SessionDecisionLivenessChecksWarningsFeatureKYBDocuments       SessionDecisionLivenessChecksWarningsFeature = "KYB_DOCUMENTS"
	SessionDecisionLivenessChecksWarningsFeatureKYBKeyPeople       SessionDecisionLivenessChecksWarningsFeature = "KYB_KEY_PEOPLE"
)

Known values of SessionDecisionLivenessChecksWarningsFeature.

type SessionDecisionNFCSkipReason

type SessionDecisionNFCSkipReason string

SessionDecisionNFCSkipReason: Why NFC chip verification did not run, populated whenever the workflow includes an NFC step. `null` while NFC is pending or when the chip was actually read. Values: `USER_SKIPPED` - the user chose to skip on an NFC-capable device (allowed by `allow_nfc_skip`); `DOCUMENT_WITHOUT_CHIP` - the document has no readable NFC chip (not an ICAO 9303 electronic document); `CHIP_CERTIFICATE_UNAVAILABLE` - the issuing country's signing certificate (CSCA) covering the document's issue period is unavailable, so the chip signature cannot be verified; `DEVICE_WITHOUT_NFC` - the device reported no NFC reader; `INTEGRATION_WITHOUT_NFC_ACCESS` - the verification ran without a native SDK (e.g. in a web browser), which has no access to the phone's NFC reader; `MRZ_KEY_UNAVAILABLE` - the chip access key could not be derived from the document's MRZ; `JPKI_UNAVAILABLE` - the document is a Japan My Number Card, whose chip is read through JPKI, and JPKI was not available for this verification: it is not enabled, or the app's native SDK cannot read My Number Cards.

SessionDecisionNFCSkipReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionNFCSkipReasonUserSkipped                 SessionDecisionNFCSkipReason = "USER_SKIPPED"
	SessionDecisionNFCSkipReasonDocumentWithoutChip         SessionDecisionNFCSkipReason = "DOCUMENT_WITHOUT_CHIP"
	SessionDecisionNFCSkipReasonChipCertificateUnavailable  SessionDecisionNFCSkipReason = "CHIP_CERTIFICATE_UNAVAILABLE"
	SessionDecisionNFCSkipReasonDeviceWithoutNFC            SessionDecisionNFCSkipReason = "DEVICE_WITHOUT_NFC"
	SessionDecisionNFCSkipReasonIntegrationWithoutNFCAccess SessionDecisionNFCSkipReason = "INTEGRATION_WITHOUT_NFC_ACCESS"
	SessionDecisionNFCSkipReasonMRZKeyUnavailable           SessionDecisionNFCSkipReason = "MRZ_KEY_UNAVAILABLE"
	SessionDecisionNFCSkipReasonJpkiUnavailable             SessionDecisionNFCSkipReason = "JPKI_UNAVAILABLE"
)

Known values of SessionDecisionNFCSkipReason.

type SessionDecisionNFCVerifications

type SessionDecisionNFCVerifications struct {
	// Workflow graph node id of the NFC step that produced this report. Use it to
	// correlate the report with the workflow definition.
	NodeID string `json:"node_id"`

	// Feature-level status of this NFC step. Independent of the top-level session
	// `status` - a session can reach its overall decision while an individual
	// feature stays `In Review`.
	Status SessionDecisionNFCVerificationsStatus `json:"status"`

	// `true` when this NFC step was explicitly skipped instead of read;
	// `skip_reason` says why.
	IsNFCSkipped bool `json:"is_nfc_skipped"`

	// Why this NFC step was skipped. Only set when `is_nfc_skipped` is `true`. Same
	// taxonomy as the session-level `nfc_skip_reason`, which additionally covers
	// the cases where NFC never produced a report at all.
	SkipReason SessionDecisionNFCVerificationsSkipReason `json:"skip_reason"`

	// How the NFC step reads the chip. `icao`: ICAO 9303 ePassport or eID chip,
	// opened with the access key from the MRZ. `jpki`: Japan My Number Card, where
	// the card signs a one-time challenge after the holder enters the card PIN in a
	// native SDK; the result is under `jpki`. Also set on skipped steps, so you can
	// tell a skipped My Number Card read apart.
	ChipProtocol SessionDecisionNFCVerificationsChipProtocol `json:"chip_protocol"`

	// What a Japan My Number Card read through JPKI proved. Present when
	// `chip_protocol` is `jpki` and the card was read. `null` for ICAO chips, for
	// skipped steps, and when the NFC step closed without any card read (that case
	// raises `JPKI_SIGNATURE_INVALID`). Never carries the certificates, their
	// serial numbers, the signatures or the 12-digit My Number.
	Jpki SessionDecisionNFCVerificationsJpki `json:"jpki"`

	// Presigned URL to the portrait read from the chip (ICAO DG2). `null` for a
	// JPKI read (`chip_protocol: "jpki"`) and for skipped steps.
	PortraitImage string `json:"portrait_image"`

	// Presigned URL to the holder's signature image read from the chip (ICAO DG7),
	// when the chip stores one. `null` for a JPKI read (`chip_protocol: "jpki"`)
	// and for skipped steps.
	SignatureImage string `json:"signature_image"`

	// Personal data parsed from the ICAO chip's Data Groups. `null` for a JPKI read
	// (`chip_protocol: "jpki"`) and for skipped steps.
	ChipData SessionDecisionNFCVerificationsChipData `json:"chip_data"`

	// ICAO passive authentication: SOD signature (`sod_integrity`) and Data Group
	// hashes (`dg_integrity`). `null` for a JPKI read, which reports its proof
	// under `jpki`.
	Authenticity SessionDecisionNFCVerificationsAuthenticity `json:"authenticity"`

	// Summary of the ICAO Document Signer Certificate. `null` for a JPKI read
	// (`chip_protocol: "jpki"`) and for skipped steps.
	CertificateSummary SessionDecisionNFCVerificationsCertificateSummary `json:"certificate_summary"`
	Warnings           []SessionDecisionNFCVerificationsWarnings         `json:"warnings"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionNFCVerifications: One NFC report: the full report for a single chip read (an ICAO 9303 ePassport or eID chip, or a Japan My Number Card read through JPKI).

func (*SessionDecisionNFCVerifications) UnmarshalJSON

func (r *SessionDecisionNFCVerifications) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionNFCVerifications leniently.

type SessionDecisionNFCVerificationsAuthenticity

type SessionDecisionNFCVerificationsAuthenticity struct {
	SodIntegrity bool `json:"sod_integrity"`
	DgIntegrity  bool `json:"dg_integrity"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionNFCVerificationsAuthenticity: ICAO passive authentication: SOD signature (`sod_integrity`) and Data Group hashes (`dg_integrity`). `null` for a JPKI read, which reports its proof under `jpki`.

func (*SessionDecisionNFCVerificationsAuthenticity) UnmarshalJSON

func (r *SessionDecisionNFCVerificationsAuthenticity) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionNFCVerificationsAuthenticity leniently.

type SessionDecisionNFCVerificationsCertificateSummary

type SessionDecisionNFCVerificationsCertificateSummary struct {
	Issuer         string    `json:"issuer"`
	Subject        string    `json:"subject"`
	SerialNumber   string    `json:"serial_number"`
	NotValidAfter  time.Time `json:"not_valid_after"`
	NotValidBefore time.Time `json:"not_valid_before"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionNFCVerificationsCertificateSummary: Summary of the ICAO Document Signer Certificate. `null` for a JPKI read (`chip_protocol: "jpki"`) and for skipped steps.

func (*SessionDecisionNFCVerificationsCertificateSummary) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionNFCVerificationsCertificateSummary leniently.

type SessionDecisionNFCVerificationsChipData

type SessionDecisionNFCVerificationsChipData struct {
	DocumentType   string `json:"document_type"`
	IssuingCountry string `json:"issuing_country"`
	DocumentNumber string `json:"document_number"`
	ExpirationDate string `json:"expiration_date"`
	FirstName      string `json:"first_name"`
	LastName       string `json:"last_name"`
	BirthDate      string `json:"birth_date"`
	Gender         string `json:"gender"`
	Nationality    string `json:"nationality"`
	Address        string `json:"address"`
	PlaceOfBirth   string `json:"place_of_birth"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionNFCVerificationsChipData: Personal data parsed from the ICAO chip's Data Groups. `null` for a JPKI read (`chip_protocol: "jpki"`) and for skipped steps.

func (*SessionDecisionNFCVerificationsChipData) UnmarshalJSON

func (r *SessionDecisionNFCVerificationsChipData) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionNFCVerificationsChipData leniently.

type SessionDecisionNFCVerificationsChipProtocol

type SessionDecisionNFCVerificationsChipProtocol string

SessionDecisionNFCVerificationsChipProtocol: How the NFC step reads the chip. `icao`: ICAO 9303 ePassport or eID chip, opened with the access key from the MRZ. `jpki`: Japan My Number Card, where the card signs a one-time challenge after the holder enters the card PIN in a native SDK; the result is under `jpki`. Also set on skipped steps, so you can tell a skipped My Number Card read apart.

SessionDecisionNFCVerificationsChipProtocol is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionNFCVerificationsChipProtocolIcao SessionDecisionNFCVerificationsChipProtocol = "icao"
	SessionDecisionNFCVerificationsChipProtocolJpki SessionDecisionNFCVerificationsChipProtocol = "jpki"
)

Known values of SessionDecisionNFCVerificationsChipProtocol.

type SessionDecisionNFCVerificationsJpki

type SessionDecisionNFCVerificationsJpki struct {
	// The card certificates read. `user_authentication` (4-digit PIN) is always
	// read; `signature` (signature PIN) is read when the NFC node's
	// `jpki_request_attributes` setting is on.
	CertificateTypes []SessionDecisionNFCVerificationsJpkiCertificateTypes `json:"certificate_types"`

	// `true` when every certificate read chains to the JPKI certification
	// authority, is inside its validity period and is a My Number Card certificate
	// of its type.
	ChainValid bool `json:"chain_valid"`

	// `true` when every signature the card made over the one-time challenge
	// verifies. The card only signs after its PIN is entered, so this proves
	// possession of the card and knowledge of the PIN.
	SignatureValid bool `json:"signature_valid"`

	// `good` when the revocation check confirmed every certificate is valid,
	// `revoked` when any certificate is revoked (for example a card reported lost),
	// `unchecked` when no revocation answer was available. `unchecked` is never
	// treated as `good`: the NFC node's `jpki_revocation_unchecked_action` decides
	// the outcome (default `REVIEW`).
	RevocationStatus SessionDecisionNFCVerificationsJpkiRevocationStatus `json:"revocation_status"`

	// Generation of the JPKI certification authority that issued the certificates,
	// for example `2023`. `null` when no certificate chains to one.
	CaGeneration string `json:"ca_generation"`

	// The earliest expiry among the certificates read.
	CertificateExpiresAt time.Time `json:"certificate_expires_at"`

	// Per-certificate results, one entry per certificate read.
	Certificates []SessionDecisionNFCVerificationsJpkiCertificates `json:"certificates"`

	// The holder's data from the signature certificate, once its chain is valid.
	// `null` when the signature certificate was not requested or did not chain to
	// the JPKI certification authority.
	Attributes SessionDecisionNFCVerificationsJpkiAttributes `json:"attributes"`

	// `true` when the attributes match the data read from the photo of the same
	// card, `false` when any attribute differs (`JPKI_AND_OCR_DATA_NOT_SAME`),
	// `null` when nothing could be compared, including whenever `attributes` is
	// `null`.
	AttributesMatchOCR bool `json:"attributes_match_ocr"`

	// Names of the attributes that differ from the photo data, never their values.
	// Empty when everything compared matches.
	MismatchedAttributes []SessionDecisionNFCVerificationsJpkiMismatchedAttributes `json:"mismatched_attributes"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionNFCVerificationsJpki: What a Japan My Number Card read through JPKI proved. Present when `chip_protocol` is `jpki` and the card was read. `null` for ICAO chips, for skipped steps, and when the NFC step closed without any card read (that case raises `JPKI_SIGNATURE_INVALID`). Never carries the certificates, their serial numbers, the signatures or the 12-digit My Number.

func (*SessionDecisionNFCVerificationsJpki) UnmarshalJSON

func (r *SessionDecisionNFCVerificationsJpki) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionNFCVerificationsJpki leniently.

type SessionDecisionNFCVerificationsJpkiAttributes

type SessionDecisionNFCVerificationsJpkiAttributes struct {
	// Name as registered, usually in Japanese script.
	FullName string `json:"full_name"`

	// Date of birth, `YYYY-MM-DD`. `null` when the registered date is incomplete.
	DateOfBirth string `json:"date_of_birth"`

	// `M`, `F`, or `null` when not registered.
	Gender SessionDecisionNFCVerificationsJpkiAttributesGender `json:"gender"`

	// Registered address.
	Address string `json:"address"`

	// Position string marking the characters of `full_name` that were replaced by a
	// substitute because the original character is outside the standard character
	// set. `null` when none were replaced.
	NameSubstituteCharacters string `json:"name_substitute_characters"`

	// Position string marking substitute characters in `address`, as for
	// `name_substitute_characters`.
	AddressSubstituteCharacters string `json:"address_substitute_characters"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionNFCVerificationsJpkiAttributes: The holder's data from the signature certificate, once its chain is valid. `null` when the signature certificate was not requested or did not chain to the JPKI certification authority.

func (*SessionDecisionNFCVerificationsJpkiAttributes) UnmarshalJSON

func (r *SessionDecisionNFCVerificationsJpkiAttributes) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionNFCVerificationsJpkiAttributes leniently.

type SessionDecisionNFCVerificationsJpkiAttributesGender

type SessionDecisionNFCVerificationsJpkiAttributesGender string

SessionDecisionNFCVerificationsJpkiAttributesGender: `M`, `F`, or `null` when not registered.

SessionDecisionNFCVerificationsJpkiAttributesGender is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionNFCVerificationsJpkiAttributesGenderM SessionDecisionNFCVerificationsJpkiAttributesGender = "M"
	SessionDecisionNFCVerificationsJpkiAttributesGenderF SessionDecisionNFCVerificationsJpkiAttributesGender = "F"
)

Known values of SessionDecisionNFCVerificationsJpkiAttributesGender.

type SessionDecisionNFCVerificationsJpkiCertificateTypes

type SessionDecisionNFCVerificationsJpkiCertificateTypes string

SessionDecisionNFCVerificationsJpkiCertificateTypes is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionNFCVerificationsJpkiCertificateTypesUserAuthentication SessionDecisionNFCVerificationsJpkiCertificateTypes = "user_authentication"
	SessionDecisionNFCVerificationsJpkiCertificateTypesSignature          SessionDecisionNFCVerificationsJpkiCertificateTypes = "signature"
)

Known values of SessionDecisionNFCVerificationsJpkiCertificateTypes.

type SessionDecisionNFCVerificationsJpkiCertificates

type SessionDecisionNFCVerificationsJpkiCertificates struct {
	// Which card certificate this entry describes.
	Type SessionDecisionNFCVerificationsJpkiCertificatesType `json:"type"`

	// `true` when the certificate chains to the JPKI certification authority of its
	// type, is inside its validity period and is a My Number Card certificate of
	// that type.
	ChainValid bool `json:"chain_valid"`

	// `true` when the card's signature over the one-time challenge verifies against
	// this certificate.
	SignatureValid bool `json:"signature_valid"`

	// Generation of the JPKI certification authority that issued the certificate,
	// for example `2023`. `null` when no trusted issuer was found.
	CaGeneration string `json:"ca_generation"`

	// Start of the certificate's validity period. `null` when the certificate could
	// not be read.
	NotValidBefore time.Time `json:"not_valid_before"`

	// End of the certificate's validity period. `null` when the certificate could
	// not be read.
	NotValidAfter time.Time `json:"not_valid_after"`

	// Why `chain_valid` is `false`: `unreadable_certificate`, `untrusted_issuer`
	// (not issued by the JPKI certification authority of its type), `expired`,
	// `not_yet_valid`, `wrong_policy` (not a My Number Card certificate of that
	// type) or `key_usage` (the key may not sign). `null` when the chain is valid.
	Failure SessionDecisionNFCVerificationsJpkiCertificatesFailure `json:"failure"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionNFCVerificationsJpkiCertificates: What one certificate read from the card proved. Never the certificate itself or its serial number.

func (*SessionDecisionNFCVerificationsJpkiCertificates) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionNFCVerificationsJpkiCertificates leniently.

type SessionDecisionNFCVerificationsJpkiCertificatesFailure

type SessionDecisionNFCVerificationsJpkiCertificatesFailure string

SessionDecisionNFCVerificationsJpkiCertificatesFailure: Why `chain_valid` is `false`: `unreadable_certificate`, `untrusted_issuer` (not issued by the JPKI certification authority of its type), `expired`, `not_yet_valid`, `wrong_policy` (not a My Number Card certificate of that type) or `key_usage` (the key may not sign). `null` when the chain is valid.

SessionDecisionNFCVerificationsJpkiCertificatesFailure is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionNFCVerificationsJpkiCertificatesFailureUnreadableCertificate SessionDecisionNFCVerificationsJpkiCertificatesFailure = "unreadable_certificate"
	SessionDecisionNFCVerificationsJpkiCertificatesFailureUntrustedIssuer       SessionDecisionNFCVerificationsJpkiCertificatesFailure = "untrusted_issuer"
	SessionDecisionNFCVerificationsJpkiCertificatesFailureExpired               SessionDecisionNFCVerificationsJpkiCertificatesFailure = "expired"
	SessionDecisionNFCVerificationsJpkiCertificatesFailureNotYetValid           SessionDecisionNFCVerificationsJpkiCertificatesFailure = "not_yet_valid"
	SessionDecisionNFCVerificationsJpkiCertificatesFailureWrongPolicy           SessionDecisionNFCVerificationsJpkiCertificatesFailure = "wrong_policy"
	SessionDecisionNFCVerificationsJpkiCertificatesFailureKeyUsage              SessionDecisionNFCVerificationsJpkiCertificatesFailure = "key_usage"
)

Known values of SessionDecisionNFCVerificationsJpkiCertificatesFailure.

type SessionDecisionNFCVerificationsJpkiCertificatesType

type SessionDecisionNFCVerificationsJpkiCertificatesType string

SessionDecisionNFCVerificationsJpkiCertificatesType: Which card certificate this entry describes.

SessionDecisionNFCVerificationsJpkiCertificatesType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionNFCVerificationsJpkiCertificatesTypeUserAuthentication SessionDecisionNFCVerificationsJpkiCertificatesType = "user_authentication"
	SessionDecisionNFCVerificationsJpkiCertificatesTypeSignature          SessionDecisionNFCVerificationsJpkiCertificatesType = "signature"
)

Known values of SessionDecisionNFCVerificationsJpkiCertificatesType.

type SessionDecisionNFCVerificationsJpkiMismatchedAttributes

type SessionDecisionNFCVerificationsJpkiMismatchedAttributes string

SessionDecisionNFCVerificationsJpkiMismatchedAttributes is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionNFCVerificationsJpkiMismatchedAttributesFullName    SessionDecisionNFCVerificationsJpkiMismatchedAttributes = "full_name"
	SessionDecisionNFCVerificationsJpkiMismatchedAttributesDateOfBirth SessionDecisionNFCVerificationsJpkiMismatchedAttributes = "date_of_birth"
	SessionDecisionNFCVerificationsJpkiMismatchedAttributesGender      SessionDecisionNFCVerificationsJpkiMismatchedAttributes = "gender"
	SessionDecisionNFCVerificationsJpkiMismatchedAttributesAddress     SessionDecisionNFCVerificationsJpkiMismatchedAttributes = "address"
)

Known values of SessionDecisionNFCVerificationsJpkiMismatchedAttributes.

type SessionDecisionNFCVerificationsJpkiRevocationStatus

type SessionDecisionNFCVerificationsJpkiRevocationStatus string

SessionDecisionNFCVerificationsJpkiRevocationStatus: `good` when the revocation check confirmed every certificate is valid, `revoked` when any certificate is revoked (for example a card reported lost), `unchecked` when no revocation answer was available. `unchecked` is never treated as `good`: the NFC node's `jpki_revocation_unchecked_action` decides the outcome (default `REVIEW`).

SessionDecisionNFCVerificationsJpkiRevocationStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionNFCVerificationsJpkiRevocationStatusGood      SessionDecisionNFCVerificationsJpkiRevocationStatus = "good"
	SessionDecisionNFCVerificationsJpkiRevocationStatusRevoked   SessionDecisionNFCVerificationsJpkiRevocationStatus = "revoked"
	SessionDecisionNFCVerificationsJpkiRevocationStatusUnchecked SessionDecisionNFCVerificationsJpkiRevocationStatus = "unchecked"
)

Known values of SessionDecisionNFCVerificationsJpkiRevocationStatus.

type SessionDecisionNFCVerificationsSkipReason

type SessionDecisionNFCVerificationsSkipReason string

SessionDecisionNFCVerificationsSkipReason: Why this NFC step was skipped. Only set when `is_nfc_skipped` is `true`. Same taxonomy as the session-level `nfc_skip_reason`, which additionally covers the cases where NFC never produced a report at all.

SessionDecisionNFCVerificationsSkipReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionNFCVerificationsSkipReasonUserSkipped                 SessionDecisionNFCVerificationsSkipReason = "USER_SKIPPED"
	SessionDecisionNFCVerificationsSkipReasonDocumentWithoutChip         SessionDecisionNFCVerificationsSkipReason = "DOCUMENT_WITHOUT_CHIP"
	SessionDecisionNFCVerificationsSkipReasonChipCertificateUnavailable  SessionDecisionNFCVerificationsSkipReason = "CHIP_CERTIFICATE_UNAVAILABLE"
	SessionDecisionNFCVerificationsSkipReasonDeviceWithoutNFC            SessionDecisionNFCVerificationsSkipReason = "DEVICE_WITHOUT_NFC"
	SessionDecisionNFCVerificationsSkipReasonIntegrationWithoutNFCAccess SessionDecisionNFCVerificationsSkipReason = "INTEGRATION_WITHOUT_NFC_ACCESS"
	SessionDecisionNFCVerificationsSkipReasonMRZKeyUnavailable           SessionDecisionNFCVerificationsSkipReason = "MRZ_KEY_UNAVAILABLE"
	SessionDecisionNFCVerificationsSkipReasonJpkiUnavailable             SessionDecisionNFCVerificationsSkipReason = "JPKI_UNAVAILABLE"
)

Known values of SessionDecisionNFCVerificationsSkipReason.

type SessionDecisionNFCVerificationsStatus

type SessionDecisionNFCVerificationsStatus string

SessionDecisionNFCVerificationsStatus: Feature-level status of this NFC step. Independent of the top-level session `status` - a session can reach its overall decision while an individual feature stays `In Review`.

SessionDecisionNFCVerificationsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionNFCVerificationsStatusNotFinished    SessionDecisionNFCVerificationsStatus = "Not Finished"
	SessionDecisionNFCVerificationsStatusApproved       SessionDecisionNFCVerificationsStatus = "Approved"
	SessionDecisionNFCVerificationsStatusDeclined       SessionDecisionNFCVerificationsStatus = "Declined"
	SessionDecisionNFCVerificationsStatusInReview       SessionDecisionNFCVerificationsStatus = "In Review"
	SessionDecisionNFCVerificationsStatusResubRequested SessionDecisionNFCVerificationsStatus = "Resub Requested"
)

Known values of SessionDecisionNFCVerificationsStatus.

type SessionDecisionNFCVerificationsWarnings

type SessionDecisionNFCVerificationsWarnings struct {
	// The feature that generated this warning. The value identifies the feature
	// block the warning belongs to. Each module's warnings array typically uses the
	// value matching its module (e.g. `PHONE` inside
	// `phone_verifications[].warnings`), but the enum above is authoritative across
	// all feature warnings on the decision payload.
	Feature          SessionDecisionNFCVerificationsWarningsFeature `json:"feature"`
	Risk             string                                         `json:"risk"`
	AdditionalData   map[string]any                                 `json:"additional_data"`
	LogType          string                                         `json:"log_type"`
	ShortDescription string                                         `json:"short_description"`
	LongDescription  string                                         `json:"long_description"`

	// The workflow graph node ID that generated this warning
	NodeID string `json:"node_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionNFCVerificationsWarnings is a response object.

func (*SessionDecisionNFCVerificationsWarnings) UnmarshalJSON

func (r *SessionDecisionNFCVerificationsWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionNFCVerificationsWarnings leniently.

type SessionDecisionNFCVerificationsWarningsFeature

type SessionDecisionNFCVerificationsWarningsFeature string

SessionDecisionNFCVerificationsWarningsFeature: The feature that generated this warning. The value identifies the feature block the warning belongs to. Each module's warnings array typically uses the value matching its module (e.g. `PHONE` inside `phone_verifications[].warnings`), but the enum above is authoritative across all feature warnings on the decision payload.

SessionDecisionNFCVerificationsWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionNFCVerificationsWarningsFeatureIDVerification     SessionDecisionNFCVerificationsWarningsFeature = "ID_VERIFICATION"
	SessionDecisionNFCVerificationsWarningsFeatureNFC                SessionDecisionNFCVerificationsWarningsFeature = "NFC"
	SessionDecisionNFCVerificationsWarningsFeatureLiveness           SessionDecisionNFCVerificationsWarningsFeature = "LIVENESS"
	SessionDecisionNFCVerificationsWarningsFeatureFacematch          SessionDecisionNFCVerificationsWarningsFeature = "FACEMATCH"
	SessionDecisionNFCVerificationsWarningsFeatureProofOfAddress     SessionDecisionNFCVerificationsWarningsFeature = "PROOF_OF_ADDRESS"
	SessionDecisionNFCVerificationsWarningsFeaturePhone              SessionDecisionNFCVerificationsWarningsFeature = "PHONE"
	SessionDecisionNFCVerificationsWarningsFeatureEmail              SessionDecisionNFCVerificationsWarningsFeature = "EMAIL"
	SessionDecisionNFCVerificationsWarningsFeatureAML                SessionDecisionNFCVerificationsWarningsFeature = "AML"
	SessionDecisionNFCVerificationsWarningsFeatureLocation           SessionDecisionNFCVerificationsWarningsFeature = "LOCATION"
	SessionDecisionNFCVerificationsWarningsFeatureDatabaseValidation SessionDecisionNFCVerificationsWarningsFeature = "DATABASE_VALIDATION"
	SessionDecisionNFCVerificationsWarningsFeatureQuestionnaire      SessionDecisionNFCVerificationsWarningsFeature = "QUESTIONNAIRE"
	SessionDecisionNFCVerificationsWarningsFeatureDocumentAi         SessionDecisionNFCVerificationsWarningsFeature = "DOCUMENT_AI"
	SessionDecisionNFCVerificationsWarningsFeatureKYBRegistry        SessionDecisionNFCVerificationsWarningsFeature = "KYB_REGISTRY"
	SessionDecisionNFCVerificationsWarningsFeatureKYBDocuments       SessionDecisionNFCVerificationsWarningsFeature = "KYB_DOCUMENTS"
	SessionDecisionNFCVerificationsWarningsFeatureKYBKeyPeople       SessionDecisionNFCVerificationsWarningsFeature = "KYB_KEY_PEOPLE"
)

Known values of SessionDecisionNFCVerificationsWarningsFeature.

type SessionDecisionPOAVerifications

type SessionDecisionPOAVerifications struct {
	// Unique identifier for this POA step in the workflow graph.
	NodeID string `json:"node_id"`

	// Feature-level status of this Proof of Address step. Independent of the
	// top-level session `status` - a session can reach its overall decision while
	// an individual feature stays `In Review`.
	Status SessionDecisionPOAVerificationsStatus `json:"status"`

	// URL of the proof of address document
	DocumentFile string `json:"document_file"`

	// Two-letter country code of the issuing state
	IssuingState string `json:"issuing_state"`

	// Type of proof of address document
	DocumentType string `json:"document_type"`

	// More specific classification of the POA document within its `document_type`,
	// when one was detected. `null` otherwise.
	DocumentSubtype string `json:"document_subtype"`

	// Language code of the document
	DocumentLanguage string `json:"document_language"`

	// File-forensics metadata extracted from the uploaded POA document. Always
	// contains the keys below (values are `null` when not applicable, e.g. EXIF
	// dates for PDFs). `null` when no metadata could be extracted.
	DocumentMetadata SessionDecisionPOAVerificationsDocumentMetadata `json:"document_metadata"`

	// Name of the document issuer
	Issuer string `json:"issuer"`

	// Date when the document was issued
	IssueDate string `json:"issue_date"`

	// Expiration date of the document, if available
	ExpirationDate string `json:"expiration_date"`

	// Raw address from the proof of address document
	POAAddress string `json:"poa_address"`

	// Formatted address from the proof of address document
	POAFormattedAddress string                                          `json:"poa_formatted_address"`
	POAParsedAddress    SessionDecisionPOAVerificationsPOAParsedAddress `json:"poa_parsed_address"`

	// Account-holder / addressee name extracted from the POA document, used for
	// name matching. `null` when no name could be extracted.
	NameOnDocument string `json:"name_on_document"`

	// Similarity score (0-100) between `name_on_document` and the expected name
	// supplied at session creation. `null` when either side is missing.
	NameMatchScoreExpectedDetails float64 `json:"name_match_score_expected_details"`

	// Similarity score (0-100) between `name_on_document` and the name extracted by
	// the ID verification step. `null` when either side is missing.
	NameMatchScoreIDVerification float64 `json:"name_match_score_id_verification"`

	// Expected raw address for verification
	ExpectedDetailsAddress string `json:"expected_details_address"`

	// Expected formatted address for verification
	ExpectedDetailsFormattedAddress string `json:"expected_details_formatted_address"`

	// Expected parsed address details for verification
	ExpectedDetailsParsedAddress map[string]any `json:"expected_details_parsed_address"`

	// Additional banking and contact details extracted from the document.
	ExtraFields SessionDecisionPOAVerificationsExtraFields `json:"extra_fields"`

	// Additional proof of address files
	ExtraFiles []string                                  `json:"extra_files"`
	Warnings   []SessionDecisionPOAVerificationsWarnings `json:"warnings"`

	// QR codes and barcodes detected across every processed page of the document.
	// Empty when none are found. A located but undecodable QR code has
	// `parsed_payload: null`.
	DetectedCodes []DocumentAiDetectedCode `json:"detected_codes"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionPOAVerifications is a response object.

func (*SessionDecisionPOAVerifications) UnmarshalJSON

func (r *SessionDecisionPOAVerifications) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionPOAVerifications leniently.

type SessionDecisionPOAVerificationsDocumentMetadata

type SessionDecisionPOAVerificationsDocumentMetadata struct {
	// Size of the document
	FileSize int64 `json:"file_size"`

	// Content type of the document
	ContentType string `json:"content_type"`

	// Date when the document was created
	CreationDate string `json:"creation_date"`

	// Date when the document was modified
	ModifiedDate string `json:"modified_date"`

	// PDF forensic analysis for suspected overlay-text manipulation. Null when no
	// overlay manipulation evidence was found or the document was not a PDF.
	OverlayManipulation SessionDecisionPOAVerificationsDocumentMetadataOverlayManipulation `json:"overlay_manipulation"`

	// Creator application recorded in the document metadata.
	Creator string `json:"creator"`

	// Producer software recorded in the PDF metadata.
	Producer string `json:"producer"`

	// Editing/processing software recorded in the file metadata.
	Software string `json:"software"`

	// Encryption scheme of the document, when encrypted.
	Encryption string `json:"encryption"`

	// Whether the PDF carries a digital signature.
	IsSigned bool `json:"is_signed"`

	// Whether signature validation indicates the file was modified after signing.
	IsTampered bool `json:"is_tampered"`

	// Details of the digital signature(s), when present.
	SignatureInfo map[string]any `json:"signature_info"`

	// EXIF original capture date, for image uploads.
	ExifOriginalDate string `json:"exif_original_date"`

	// EXIF digitization date, for image uploads.
	ExifDigitizedDate string `json:"exif_digitized_date"`

	// Whether the file metadata indicates processing by a known document editor.
	ProcessedByKnownEditor bool `json:"processed_by_known_editor"`

	// Whether the creation and modification dates differ - a common manipulation
	// signal.
	HasDifferentCreationModDate bool `json:"has_different_creation_mod_date"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionPOAVerificationsDocumentMetadata: File-forensics metadata extracted from the uploaded POA document. Always contains the keys below (values are `null` when not applicable, e.g. EXIF dates for PDFs). `null` when no metadata could be extracted.

func (*SessionDecisionPOAVerificationsDocumentMetadata) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionPOAVerificationsDocumentMetadata leniently.

type SessionDecisionPOAVerificationsDocumentMetadataOverlayManipulation

type SessionDecisionPOAVerificationsDocumentMetadataOverlayManipulation struct {
	// Whether overlay-text manipulation evidence was detected.
	Detected bool `json:"detected"`

	// Whether the PDF could be analyzed.
	Analyzed bool `json:"analyzed"`

	// Forensic signals that fired, such as duplicate_font_subset or
	// glyph_fragmentation.
	Signals []string `json:"signals"`

	// Suspected manipulated areas in PDF page coordinates.
	ManipulatedRegions []SessionDecisionPOAVerificationsDocumentMetadataOverlayManipulationManipulatedRegions `json:"manipulated_regions"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionPOAVerificationsDocumentMetadataOverlayManipulation: PDF forensic analysis for suspected overlay-text manipulation. Null when no overlay manipulation evidence was found or the document was not a PDF.

func (*SessionDecisionPOAVerificationsDocumentMetadataOverlayManipulation) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionPOAVerificationsDocumentMetadataOverlayManipulation leniently.

type SessionDecisionPOAVerificationsDocumentMetadataOverlayManipulationManipulatedRegions

type SessionDecisionPOAVerificationsDocumentMetadataOverlayManipulationManipulatedRegions struct {
	Page       int64   `json:"page"`
	X          float64 `json:"x"`
	Y          float64 `json:"y"`
	Width      float64 `json:"width"`
	Height     float64 `json:"height"`
	PageWidth  float64 `json:"page_width"`
	PageHeight float64 `json:"page_height"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionPOAVerificationsDocumentMetadataOverlayManipulationManipulatedRegions is a response object.

func (*SessionDecisionPOAVerificationsDocumentMetadataOverlayManipulationManipulatedRegions) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionPOAVerificationsDocumentMetadataOverlayManipulationManipulatedRegions leniently.

type SessionDecisionPOAVerificationsExtraFields

type SessionDecisionPOAVerificationsExtraFields struct {
	BankAccountNumber   string   `json:"bank_account_number"`
	BankIBAN            string   `json:"bank_iban"`
	BankSortCode        string   `json:"bank_sort_code"`
	BankRoutingNumber   string   `json:"bank_routing_number"`
	BankSwiftBIC        string   `json:"bank_swift_bic"`
	BankBranchName      string   `json:"bank_branch_name"`
	BankBranchAddress   string   `json:"bank_branch_address"`
	DocumentPhoneNumber string   `json:"document_phone_number"`
	AdditionalNames     []string `json:"additional_names"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionPOAVerificationsExtraFields: Additional banking and contact details extracted from the document.

func (*SessionDecisionPOAVerificationsExtraFields) UnmarshalJSON

func (r *SessionDecisionPOAVerificationsExtraFields) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionPOAVerificationsExtraFields leniently.

type SessionDecisionPOAVerificationsPOAParsedAddress

type SessionDecisionPOAVerificationsPOAParsedAddress struct {
	// Type of address (Street, Avenue, etc)
	AddressType string `json:"address_type"`

	// Primary street address
	Street1 string `json:"street_1"`

	// Secondary street address
	Street2 string `json:"street_2"`

	// City name
	City string `json:"city"`

	// Region or state name
	Region string `json:"region"`

	// Two-letter country code
	Country string `json:"country"`

	// Postal code
	PostalCode       string                                                          `json:"postal_code"`
	DocumentLocation SessionDecisionPOAVerificationsPOAParsedAddressDocumentLocation `json:"document_location"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionPOAVerificationsPOAParsedAddress is a response object.

func (*SessionDecisionPOAVerificationsPOAParsedAddress) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionPOAVerificationsPOAParsedAddress leniently.

type SessionDecisionPOAVerificationsPOAParsedAddressDocumentLocation

type SessionDecisionPOAVerificationsPOAParsedAddressDocumentLocation struct {
	// Latitude coordinate
	Latitude float64 `json:"latitude"`

	// Longitude coordinate
	Longitude float64 `json:"longitude"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionPOAVerificationsPOAParsedAddressDocumentLocation is a response object.

func (*SessionDecisionPOAVerificationsPOAParsedAddressDocumentLocation) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionPOAVerificationsPOAParsedAddressDocumentLocation leniently.

type SessionDecisionPOAVerificationsStatus

type SessionDecisionPOAVerificationsStatus string

SessionDecisionPOAVerificationsStatus: Feature-level status of this Proof of Address step. Independent of the top-level session `status` - a session can reach its overall decision while an individual feature stays `In Review`.

SessionDecisionPOAVerificationsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionPOAVerificationsStatusNotFinished    SessionDecisionPOAVerificationsStatus = "Not Finished"
	SessionDecisionPOAVerificationsStatusApproved       SessionDecisionPOAVerificationsStatus = "Approved"
	SessionDecisionPOAVerificationsStatusDeclined       SessionDecisionPOAVerificationsStatus = "Declined"
	SessionDecisionPOAVerificationsStatusInReview       SessionDecisionPOAVerificationsStatus = "In Review"
	SessionDecisionPOAVerificationsStatusResubRequested SessionDecisionPOAVerificationsStatus = "Resub Requested"
)

Known values of SessionDecisionPOAVerificationsStatus.

type SessionDecisionPOAVerificationsWarnings

type SessionDecisionPOAVerificationsWarnings struct {
	// The feature that generated this warning. The value identifies the feature
	// block the warning belongs to. Each module's warnings array typically uses the
	// value matching its module (e.g. `PHONE` inside
	// `phone_verifications[].warnings`), but the enum above is authoritative across
	// all feature warnings on the decision payload.
	Feature          SessionDecisionPOAVerificationsWarningsFeature `json:"feature"`
	Risk             string                                         `json:"risk"`
	AdditionalData   map[string]any                                 `json:"additional_data"`
	LogType          string                                         `json:"log_type"`
	ShortDescription string                                         `json:"short_description"`
	LongDescription  string                                         `json:"long_description"`

	// The workflow graph node ID that generated this warning
	NodeID string `json:"node_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionPOAVerificationsWarnings is a response object.

func (*SessionDecisionPOAVerificationsWarnings) UnmarshalJSON

func (r *SessionDecisionPOAVerificationsWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionPOAVerificationsWarnings leniently.

type SessionDecisionPOAVerificationsWarningsFeature

type SessionDecisionPOAVerificationsWarningsFeature string

SessionDecisionPOAVerificationsWarningsFeature: The feature that generated this warning. The value identifies the feature block the warning belongs to. Each module's warnings array typically uses the value matching its module (e.g. `PHONE` inside `phone_verifications[].warnings`), but the enum above is authoritative across all feature warnings on the decision payload.

SessionDecisionPOAVerificationsWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionPOAVerificationsWarningsFeatureIDVerification     SessionDecisionPOAVerificationsWarningsFeature = "ID_VERIFICATION"
	SessionDecisionPOAVerificationsWarningsFeatureNFC                SessionDecisionPOAVerificationsWarningsFeature = "NFC"
	SessionDecisionPOAVerificationsWarningsFeatureLiveness           SessionDecisionPOAVerificationsWarningsFeature = "LIVENESS"
	SessionDecisionPOAVerificationsWarningsFeatureFacematch          SessionDecisionPOAVerificationsWarningsFeature = "FACEMATCH"
	SessionDecisionPOAVerificationsWarningsFeatureProofOfAddress     SessionDecisionPOAVerificationsWarningsFeature = "PROOF_OF_ADDRESS"
	SessionDecisionPOAVerificationsWarningsFeaturePhone              SessionDecisionPOAVerificationsWarningsFeature = "PHONE"
	SessionDecisionPOAVerificationsWarningsFeatureEmail              SessionDecisionPOAVerificationsWarningsFeature = "EMAIL"
	SessionDecisionPOAVerificationsWarningsFeatureAML                SessionDecisionPOAVerificationsWarningsFeature = "AML"
	SessionDecisionPOAVerificationsWarningsFeatureLocation           SessionDecisionPOAVerificationsWarningsFeature = "LOCATION"
	SessionDecisionPOAVerificationsWarningsFeatureDatabaseValidation SessionDecisionPOAVerificationsWarningsFeature = "DATABASE_VALIDATION"
	SessionDecisionPOAVerificationsWarningsFeatureQuestionnaire      SessionDecisionPOAVerificationsWarningsFeature = "QUESTIONNAIRE"
	SessionDecisionPOAVerificationsWarningsFeatureDocumentAi         SessionDecisionPOAVerificationsWarningsFeature = "DOCUMENT_AI"
	SessionDecisionPOAVerificationsWarningsFeatureKYBRegistry        SessionDecisionPOAVerificationsWarningsFeature = "KYB_REGISTRY"
	SessionDecisionPOAVerificationsWarningsFeatureKYBDocuments       SessionDecisionPOAVerificationsWarningsFeature = "KYB_DOCUMENTS"
	SessionDecisionPOAVerificationsWarningsFeatureKYBKeyPeople       SessionDecisionPOAVerificationsWarningsFeature = "KYB_KEY_PEOPLE"
)

Known values of SessionDecisionPOAVerificationsWarningsFeature.

type SessionDecisionPhoneVerifications

type SessionDecisionPhoneVerifications struct {
	// Unique identifier for this phone step in the workflow graph.
	NodeID string `json:"node_id"`

	// Feature-level status of this phone verification step. Independent of the
	// top-level session `status` - a session can reach its overall decision while
	// an individual feature stays `In Review`.
	Status SessionDecisionPhoneVerificationsStatus `json:"status"`

	// Country calling code prefix
	PhoneNumberPrefix string `json:"phone_number_prefix"`

	// Phone number without country prefix
	PhoneNumber string `json:"phone_number"`

	// Complete phone number with country prefix
	FullNumber string `json:"full_number"`

	// Two-letter country code (ISO 3166-1 alpha-2)
	CountryCode string `json:"country_code"`

	// Full country name
	CountryName string                                   `json:"country_name"`
	Carrier     SessionDecisionPhoneVerificationsCarrier `json:"carrier"`

	// Whether the phone number is from a disposable service
	IsDisposable bool `json:"is_disposable"`

	// Whether the phone number is virtual
	IsVirtual bool `json:"is_virtual"`

	// Method used to verify the phone number
	VerificationMethod string `json:"verification_method"`

	// Number of verification attempts made
	VerificationAttempts int64 `json:"verification_attempts"`

	// Timestamp when the phone was verified
	VerifiedAt time.Time `json:"verified_at"`

	// Chronological list of events in the phone verification lifecycle.
	Lifecycle []SessionDecisionPhoneVerificationsLifecycle `json:"lifecycle"`

	// List of warnings related to phone verification
	Warnings []SessionDecisionPhoneVerificationsWarnings `json:"warnings"`

	// Matches found for this phone number. Each match has a `source`: `session`
	// (another verification session in your application matched on the same number,
	// returned with
	// `session_id`/`session_number`/`vendor_data`/`verification_date`) or
	// `list_entry` (the number is on an org-managed allow/block list - see
	// `/management-api/lists/overview`). Cross-session matches use different
	// `vendor_data` and are capped at 5.
	Matches []SessionDecisionPhoneVerificationsMatches `json:"matches"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionPhoneVerifications is a response object.

func (*SessionDecisionPhoneVerifications) UnmarshalJSON

func (r *SessionDecisionPhoneVerifications) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionPhoneVerifications leniently.

type SessionDecisionPhoneVerificationsCarrier

type SessionDecisionPhoneVerificationsCarrier struct {
	// Name of the phone carrier
	Name string `json:"name"`

	// Type of phone line (mobile, landline, etc)
	Type string `json:"type"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionPhoneVerificationsCarrier is a response object.

func (*SessionDecisionPhoneVerificationsCarrier) UnmarshalJSON

func (r *SessionDecisionPhoneVerificationsCarrier) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionPhoneVerificationsCarrier leniently.

type SessionDecisionPhoneVerificationsLifecycle

type SessionDecisionPhoneVerificationsLifecycle struct {
	Type      string    `json:"type"`
	Timestamp time.Time `json:"timestamp"`

	// Event-specific payload. Send events carry `status`, `reason`, `channel`,
	// `actual_channel`; delivery events carry `channel`, `status`; code-check
	// events carry `code_tried`, `status`; final status events carry `reason` - or
	// `null` when there is no reason to report (e.g.
	// `PHONE_VERIFICATION_APPROVED`).
	Details SessionDecisionPhoneVerificationsLifecycleDetails `json:"details"`
	Fee     float64                                           `json:"fee"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionPhoneVerificationsLifecycle is a response object.

func (*SessionDecisionPhoneVerificationsLifecycle) UnmarshalJSON

func (r *SessionDecisionPhoneVerificationsLifecycle) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionPhoneVerificationsLifecycle leniently.

type SessionDecisionPhoneVerificationsLifecycleDetails

type SessionDecisionPhoneVerificationsLifecycleDetails struct {
	Status        string `json:"status"`
	Reason        string `json:"reason"`
	Channel       string `json:"channel"`
	ActualChannel string `json:"actual_channel"`
	CodeTried     string `json:"code_tried"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionPhoneVerificationsLifecycleDetails: Event-specific payload. Send events carry `status`, `reason`, `channel`, `actual_channel`; delivery events carry `channel`, `status`; code-check events carry `code_tried`, `status`; final status events carry `reason` - or `null` when there is no reason to report (e.g. `PHONE_VERIFICATION_APPROVED`).

func (*SessionDecisionPhoneVerificationsLifecycleDetails) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionPhoneVerificationsLifecycleDetails leniently.

type SessionDecisionPhoneVerificationsMatches

type SessionDecisionPhoneVerificationsMatches struct {
	SessionID        string    `json:"session_id"`
	SessionNumber    int64     `json:"session_number"`
	VendorData       string    `json:"vendor_data"`
	VerificationDate time.Time `json:"verification_date"`
	PhoneNumber      string    `json:"phone_number"`
	Status           string    `json:"status"`
	IsBlocklisted    bool      `json:"is_blocklisted"`
	APIService       string    `json:"api_service"`

	// Where this match came from. `session` means another verification session in
	// your application matched on this value. `list_entry` means the value was hit
	// against an org-managed list (allowlist/blocklist) - see the management API
	// lists overview at `/management-api/lists/overview` for how to manage those
	// lists.
	Source SessionDecisionPhoneVerificationsMatchesSource `json:"source"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionPhoneVerificationsMatches is a response object.

func (*SessionDecisionPhoneVerificationsMatches) UnmarshalJSON

func (r *SessionDecisionPhoneVerificationsMatches) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionPhoneVerificationsMatches leniently.

type SessionDecisionPhoneVerificationsMatchesSource

type SessionDecisionPhoneVerificationsMatchesSource string

SessionDecisionPhoneVerificationsMatchesSource: Where this match came from. `session` means another verification session in your application matched on this value. `list_entry` means the value was hit against an org-managed list (allowlist/blocklist) - see the management API lists overview at `/management-api/lists/overview` for how to manage those lists.

SessionDecisionPhoneVerificationsMatchesSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionPhoneVerificationsMatchesSourceSession   SessionDecisionPhoneVerificationsMatchesSource = "session"
	SessionDecisionPhoneVerificationsMatchesSourceListEntry SessionDecisionPhoneVerificationsMatchesSource = "list_entry"
)

Known values of SessionDecisionPhoneVerificationsMatchesSource.

type SessionDecisionPhoneVerificationsStatus

type SessionDecisionPhoneVerificationsStatus string

SessionDecisionPhoneVerificationsStatus: Feature-level status of this phone verification step. Independent of the top-level session `status` - a session can reach its overall decision while an individual feature stays `In Review`.

SessionDecisionPhoneVerificationsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionPhoneVerificationsStatusNotFinished SessionDecisionPhoneVerificationsStatus = "Not Finished"
	SessionDecisionPhoneVerificationsStatusApproved    SessionDecisionPhoneVerificationsStatus = "Approved"
	SessionDecisionPhoneVerificationsStatusDeclined    SessionDecisionPhoneVerificationsStatus = "Declined"
	SessionDecisionPhoneVerificationsStatusInReview    SessionDecisionPhoneVerificationsStatus = "In Review"
	SessionDecisionPhoneVerificationsStatusExpired     SessionDecisionPhoneVerificationsStatus = "Expired"
)

Known values of SessionDecisionPhoneVerificationsStatus.

type SessionDecisionPhoneVerificationsWarnings

type SessionDecisionPhoneVerificationsWarnings struct {
	// The feature that generated this warning. The value identifies the feature
	// block the warning belongs to. Each module's warnings array typically uses the
	// value matching its module (e.g. `PHONE` inside
	// `phone_verifications[].warnings`), but the enum above is authoritative across
	// all feature warnings on the decision payload.
	Feature          SessionDecisionPhoneVerificationsWarningsFeature `json:"feature"`
	Risk             string                                           `json:"risk"`
	AdditionalData   map[string]any                                   `json:"additional_data"`
	LogType          string                                           `json:"log_type"`
	ShortDescription string                                           `json:"short_description"`
	LongDescription  string                                           `json:"long_description"`

	// The workflow graph node ID that generated this warning
	NodeID string `json:"node_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionPhoneVerificationsWarnings is a response object.

func (*SessionDecisionPhoneVerificationsWarnings) UnmarshalJSON

func (r *SessionDecisionPhoneVerificationsWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionPhoneVerificationsWarnings leniently.

type SessionDecisionPhoneVerificationsWarningsFeature

type SessionDecisionPhoneVerificationsWarningsFeature string

SessionDecisionPhoneVerificationsWarningsFeature: The feature that generated this warning. The value identifies the feature block the warning belongs to. Each module's warnings array typically uses the value matching its module (e.g. `PHONE` inside `phone_verifications[].warnings`), but the enum above is authoritative across all feature warnings on the decision payload.

SessionDecisionPhoneVerificationsWarningsFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionPhoneVerificationsWarningsFeatureIDVerification     SessionDecisionPhoneVerificationsWarningsFeature = "ID_VERIFICATION"
	SessionDecisionPhoneVerificationsWarningsFeatureNFC                SessionDecisionPhoneVerificationsWarningsFeature = "NFC"
	SessionDecisionPhoneVerificationsWarningsFeatureLiveness           SessionDecisionPhoneVerificationsWarningsFeature = "LIVENESS"
	SessionDecisionPhoneVerificationsWarningsFeatureFacematch          SessionDecisionPhoneVerificationsWarningsFeature = "FACEMATCH"
	SessionDecisionPhoneVerificationsWarningsFeatureProofOfAddress     SessionDecisionPhoneVerificationsWarningsFeature = "PROOF_OF_ADDRESS"
	SessionDecisionPhoneVerificationsWarningsFeaturePhone              SessionDecisionPhoneVerificationsWarningsFeature = "PHONE"
	SessionDecisionPhoneVerificationsWarningsFeatureEmail              SessionDecisionPhoneVerificationsWarningsFeature = "EMAIL"
	SessionDecisionPhoneVerificationsWarningsFeatureAML                SessionDecisionPhoneVerificationsWarningsFeature = "AML"
	SessionDecisionPhoneVerificationsWarningsFeatureLocation           SessionDecisionPhoneVerificationsWarningsFeature = "LOCATION"
	SessionDecisionPhoneVerificationsWarningsFeatureDatabaseValidation SessionDecisionPhoneVerificationsWarningsFeature = "DATABASE_VALIDATION"
	SessionDecisionPhoneVerificationsWarningsFeatureQuestionnaire      SessionDecisionPhoneVerificationsWarningsFeature = "QUESTIONNAIRE"
	SessionDecisionPhoneVerificationsWarningsFeatureDocumentAi         SessionDecisionPhoneVerificationsWarningsFeature = "DOCUMENT_AI"
	SessionDecisionPhoneVerificationsWarningsFeatureKYBRegistry        SessionDecisionPhoneVerificationsWarningsFeature = "KYB_REGISTRY"
	SessionDecisionPhoneVerificationsWarningsFeatureKYBDocuments       SessionDecisionPhoneVerificationsWarningsFeature = "KYB_DOCUMENTS"
	SessionDecisionPhoneVerificationsWarningsFeatureKYBKeyPeople       SessionDecisionPhoneVerificationsWarningsFeature = "KYB_KEY_PEOPLE"
)

Known values of SessionDecisionPhoneVerificationsWarningsFeature.

type SessionDecisionQuestionnaireResponses

type SessionDecisionQuestionnaireResponses struct {
	// Unique identifier for this questionnaire step in the workflow graph.
	NodeID string `json:"node_id"`

	// Unique identifier for the questionnaire
	QuestionnaireID string `json:"questionnaire_id"`

	// Title of the questionnaire
	Title string `json:"title"`

	// Description of the questionnaire
	Description string `json:"description"`

	// Supported languages
	Languages []string `json:"languages"`

	// Default language
	DefaultLanguage string `json:"default_language"`

	// Whether the questionnaire is active
	IsActive bool `json:"is_active"`

	// Whether the questionnaire is a simple linear form (no branching graph).
	IsSimpleQuestionnaire bool `json:"is_simple_questionnaire"`

	// Stable identifier of the questionnaire group across versions.
	QuestionnaireGroupID string `json:"questionnaire_group_id"`

	// Version number of the questionnaire that was answered.
	Version int64 `json:"version"`

	// Timestamp at which this questionnaire version was published.
	PublishedAt time.Time                                       `json:"published_at"`
	Sections    []SessionDecisionQuestionnaireResponsesSections `json:"sections"`

	// Status of the questionnaire
	Status string `json:"status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionQuestionnaireResponses is a response object.

func (*SessionDecisionQuestionnaireResponses) UnmarshalJSON

func (r *SessionDecisionQuestionnaireResponses) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionQuestionnaireResponses leniently.

type SessionDecisionQuestionnaireResponsesSections

type SessionDecisionQuestionnaireResponsesSections struct {
	// Section title
	Title string `json:"title"`

	// Section description
	Description string                                               `json:"description"`
	Items       []SessionDecisionQuestionnaireResponsesSectionsItems `json:"items"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionQuestionnaireResponsesSections is a response object.

func (*SessionDecisionQuestionnaireResponsesSections) UnmarshalJSON

func (r *SessionDecisionQuestionnaireResponsesSections) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionQuestionnaireResponsesSections leniently.

type SessionDecisionQuestionnaireResponsesSectionsItems

type SessionDecisionQuestionnaireResponsesSectionsItems struct {
	// Unique identifier for the item
	UUID string `json:"uuid"`

	// Stable node identifier of this form element within the questionnaire graph.
	Value string `json:"value"`

	// Type of the questionnaire element
	ElementType string `json:"element_type"`

	// Whether the item is required
	IsRequired bool `json:"is_required"`

	// Title of the item
	Title string `json:"title"`

	// Description of the item
	Description string `json:"description"`

	// Placeholder text
	Placeholder string `json:"placeholder"`

	// Choices for dropdown or single choice elements
	Choices []SessionDecisionQuestionnaireResponsesSectionsItemsChoices `json:"choices"`

	// Maximum number of files allowed
	MaxFiles int64 `json:"max_files"`

	// Answer provided for the item
	Answer SessionDecisionQuestionnaireResponsesSectionsItemsAnswer `json:"answer"`

	// Conditional-requirement rule, when the element is only required for certain
	// answers.
	RequiredIf map[string]any `json:"required_if"`

	// Configuration for repeatable element groups, when applicable.
	RepeatableConfig map[string]any `json:"repeatable_config"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionQuestionnaireResponsesSectionsItems is a response object.

func (*SessionDecisionQuestionnaireResponsesSectionsItems) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionQuestionnaireResponsesSectionsItems leniently.

type SessionDecisionQuestionnaireResponsesSectionsItemsAnswer

type SessionDecisionQuestionnaireResponsesSectionsItemsAnswer struct {
	Value string   `json:"value"`
	Text  string   `json:"text"`
	Files []string `json:"files"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionQuestionnaireResponsesSectionsItemsAnswer: Answer provided for the item

func (*SessionDecisionQuestionnaireResponsesSectionsItemsAnswer) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionQuestionnaireResponsesSectionsItemsAnswer leniently.

type SessionDecisionQuestionnaireResponsesSectionsItemsChoices

type SessionDecisionQuestionnaireResponsesSectionsItemsChoices struct {
	Label string `json:"label"`
	Value string `json:"value"`

	// Whether this choice requires additional text input
	RequiresTextInput bool `json:"requires_text_input"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionQuestionnaireResponsesSectionsItemsChoices is a response object.

func (*SessionDecisionQuestionnaireResponsesSectionsItemsChoices) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionQuestionnaireResponsesSectionsItemsChoices leniently.

type SessionDecisionRegistryChecks

type SessionDecisionRegistryChecks struct {
	// Feature lifecycle status.
	Status       string `json:"status"`
	NodeID       string `json:"node_id"`
	DataResolved bool   `json:"data_resolved"`

	// Full registry payload for the company (registry record merged with any
	// user-provided or console-edited data).
	Company SessionDecisionRegistryChecksCompany `json:"company"`

	// Raw ownership snapshot kept for reviewers; its shape differs by registry
	// source and is not a stable contract. Read `company.beneficial_owners` and
	// `company.ownership` instead.
	OwnershipStructure map[string]any   `json:"ownership_structure"`
	Warnings           []map[string]any `json:"warnings"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionRegistryChecks: One company registry check - the full company-registry payload enriched with ownership structure and warnings. Present only when `session_kind = business`.

func (*SessionDecisionRegistryChecks) UnmarshalJSON

func (r *SessionDecisionRegistryChecks) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionRegistryChecks leniently.

type SessionDecisionRegistryChecksCompany

type SessionDecisionRegistryChecksCompany struct {
	UUID               string `json:"uuid"`
	NodeID             string `json:"node_id"`
	Status             string `json:"status"`
	RegistryStatus     string `json:"registry_status"`
	DataResolved       bool   `json:"data_resolved"`
	CompanyName        string `json:"company_name"`
	RegistrationNumber string `json:"registration_number"`

	// Country of incorporation (ISO 3166-1 alpha-2, e.g. `GB`, `DE`, `US`).
	CountryCode string `json:"country_code"`

	// ISO 3166-2 subdivision code when applicable (e.g. `CA`, `NY` for US states).
	Region             string                                        `json:"region"`
	CompanyType        string                                        `json:"company_type"`
	IncorporationDate  string                                        `json:"incorporation_date"`
	RegisteredAddress  string                                        `json:"registered_address"`
	TaxNumber          string                                        `json:"tax_number"`
	RiskLevel          SessionDecisionRegistryChecksCompanyRiskLevel `json:"risk_level"`
	VerificationStatus string                                        `json:"verification_status"`
	IsFromRegistry     bool                                          `json:"is_from_registry"`
	FetchStatus        string                                        `json:"fetch_status"`

	// Alternative, trading, former or original-language company names as text, when
	// reported.
	AlternativeNames  string `json:"alternative_names"`
	NatureOfBusiness  string `json:"nature_of_business"`
	RegisteredCapital string `json:"registered_capital"`

	// Registered/share capital amount as a decimal string (e.g. `"100.00"`), parsed
	// from the registry filing. `null` when not available.
	RegisteredCapitalAmount string `json:"registered_capital_amount"`

	// ISO 4217 currency code of `registered_capital_amount` (e.g. `"GBP"`). `null`
	// when not available.
	RegisteredCapitalCurrency string `json:"registered_capital_currency"`
	Website                   string `json:"website"`
	Email                     string `json:"email"`
	Phone                     string `json:"phone"`
	LegalEntityIdentifier     string `json:"legal_entity_identifier"`
	LocationOfRegistration    string `json:"location_of_registration"`

	// EU VAT number, when collected during the hosted registry step or edited
	// afterwards.
	VATNumber string `json:"vat_number"`

	// Result of validating the VAT number or, when there is none, the `tax_number`,
	// at registry submit. `valid` / `invalid`: decided by the official registry of
	// the country (EU VIES, Norway, Switzerland, Brazil, Colombia, Costa Rica,
	// Ecuador, Paraguay; Poland also by its domestic VAT register). `format_valid`
	// / `invalid_format`: decided by the country's format and check-digit rules
	// where no registry can be queried. `could_not_validate`: the registry was
	// unavailable. `not_applicable`: no number, a country without registry or
	// rules, or a sandbox session.
	VATValidationStatus SessionDecisionRegistryChecksCompanyVATValidationStatus `json:"vat_validation_status"`

	// The number that was checked, as the source knows it (for example the VAT
	// number derived from a French SIREN or a Dutch RSIN). `null` when no check
	// ran.
	VATValidatedNumber string `json:"vat_validated_number"`

	// The source that decided `vat_validation_status`: an official registry, or
	// `format_rules`. `null` when no check ran.
	VATValidationSource SessionDecisionRegistryChecksCompanyVATValidationSource `json:"vat_validation_source"`

	// Name registered with the source that validated the number, when it discloses
	// one. Only set when the status is `valid`.
	VATValidatedName string `json:"vat_validated_name"`

	// Address registered with the source that validated the number, when it
	// discloses one. Only set when the status is `valid`.
	VATValidatedAddress string `json:"vat_validated_address"`

	// Timestamp of the check. `null` when no check ran.
	VATCheckedAt     time.Time                                              `json:"vat_checked_at"`
	FinancialSummary map[string]any                                         `json:"financial_summary"`
	Officers         []SessionDecisionRegistryChecksCompanyOfficers         `json:"officers"`
	BeneficialOwners []SessionDecisionRegistryChecksCompanyBeneficialOwners `json:"beneficial_owners"`

	// Every address the registry states, one canonical shape. Null when it states
	// none.
	Addresses []KYBRegistryAddress `json:"addresses"`

	// The activities the registry classifies the company under, one canonical
	// shape. Null when it states none.
	Industries []KYBRegistryIndustry `json:"industries"`

	// Registry filing dates, when available. Annual returns and general meetings
	// use last_annual_return_date and last_agm_date; they are distinct from
	// financial accounts.
	Accounts map[string]any `json:"accounts"`

	// Raw record returned by the registry source, kept for reviewers. Its shape
	// differs by country and source and is not a stable contract: read the
	// canonical fields (`addresses`, `industries`, `ownership`,
	// `beneficial_owners[].shareholding`) instead.
	RegistryData map[string]any `json:"registry_data"`

	// Data confirmed or edited by the end user.
	UserProvidedData  map[string]any       `json:"user_provided_data"`
	ConfirmedByUserAt time.Time            `json:"confirmed_by_user_at"`
	LastConsoleEditAt time.Time            `json:"last_console_edit_at"`
	IsEditable        bool                 `json:"is_editable"`
	Ownership         KYBRegistryOwnership `json:"ownership"`

	// The registry tier the workflow ordered: `basic`, `shareholders` or `ubo`.
	// Also in `ownership.tier_requested`.
	RegistryTier string `json:"registry_tier"`

	// The tier the registry delivered and that is billed. Also in
	// `ownership.tier_delivered`.
	RegistryTierDelivered string `json:"registry_tier_delivered"`

	// `not_requested`, `pending`, `delivered` or `unavailable`. Also in
	// `ownership.status`.
	RegistryOwnershipStatus string `json:"registry_ownership_status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionRegistryChecksCompany: Full registry payload for the company (registry record merged with any user-provided or console-edited data).

func (*SessionDecisionRegistryChecksCompany) UnmarshalJSON

func (r *SessionDecisionRegistryChecksCompany) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionRegistryChecksCompany leniently.

type SessionDecisionRegistryChecksCompanyBeneficialOwners

type SessionDecisionRegistryChecksCompanyBeneficialOwners struct {
	UUID       string                                                         `json:"uuid"`
	Name       string                                                         `json:"name"`
	FirstName  string                                                         `json:"first_name"`
	LastName   string                                                         `json:"last_name"`
	EntityType SessionDecisionRegistryChecksCompanyBeneficialOwnersEntityType `json:"entity_type"`
	Roles      []string                                                       `json:"roles"`

	// Lower bound of the ownership percentage as reported by the registry.
	// Free-form string (e.g. `"25.00"`, `"50"`); use `effective_ownership_percent`
	// for a parsed numeric value.
	OwnershipMinShares string `json:"ownership_min_shares"`

	// Upper bound of the ownership percentage as reported by the registry.
	// Free-form string; use `effective_ownership_percent` for a parsed numeric
	// value.
	OwnershipMaxShares        string                                                        `json:"ownership_max_shares"`
	IsActive                  bool                                                          `json:"is_active"`
	KYCStatus                 SessionDecisionRegistryChecksCompanyBeneficialOwnersKYCStatus `json:"kyc_status"`
	KYCSessionURL             string                                                        `json:"kyc_session_url"`
	EffectiveOwnershipPercent float64                                                       `json:"effective_ownership_percent"`
	CompanyName               string                                                        `json:"company_name"`
	RegistrationNumber        string                                                        `json:"registration_number"`
	CountryOfBirth            string                                                        `json:"country_of_birth"`
	Email                     string                                                        `json:"email"`
	Nationality               string                                                        `json:"nationality"`
	Designation               string                                                        `json:"designation"`
	VotingMinShares           string                                                        `json:"voting_min_shares"`
	VotingMaxShares           string                                                        `json:"voting_max_shares"`

	// Complete birth date when reported.
	DateOfBirth string `json:"date_of_birth"`

	// Appointment date when reported.
	AppointmentDate string                  `json:"appointment_date"`
	Shareholding    KYBRegistryShareholding `json:"shareholding"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionRegistryChecksCompanyBeneficialOwners is a response object.

func (*SessionDecisionRegistryChecksCompanyBeneficialOwners) UnmarshalJSON

UnmarshalJSON decodes SessionDecisionRegistryChecksCompanyBeneficialOwners leniently.

type SessionDecisionRegistryChecksCompanyBeneficialOwnersEntityType

type SessionDecisionRegistryChecksCompanyBeneficialOwnersEntityType string

SessionDecisionRegistryChecksCompanyBeneficialOwnersEntityType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionRegistryChecksCompanyBeneficialOwnersEntityTypePerson  SessionDecisionRegistryChecksCompanyBeneficialOwnersEntityType = "person"
	SessionDecisionRegistryChecksCompanyBeneficialOwnersEntityTypeCompany SessionDecisionRegistryChecksCompanyBeneficialOwnersEntityType = "company"
)

Known values of SessionDecisionRegistryChecksCompanyBeneficialOwnersEntityType.

type SessionDecisionRegistryChecksCompanyBeneficialOwnersKYCStatus

type SessionDecisionRegistryChecksCompanyBeneficialOwnersKYCStatus string

SessionDecisionRegistryChecksCompanyBeneficialOwnersKYCStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionRegistryChecksCompanyBeneficialOwnersKYCStatusApproved SessionDecisionRegistryChecksCompanyBeneficialOwnersKYCStatus = "Approved"
	SessionDecisionRegistryChecksCompanyBeneficialOwnersKYCStatusDeclined SessionDecisionRegistryChecksCompanyBeneficialOwnersKYCStatus = "Declined"
	SessionDecisionRegistryChecksCompanyBeneficialOwnersKYCStatusPending  SessionDecisionRegistryChecksCompanyBeneficialOwnersKYCStatus = "Pending"
)

Known values of SessionDecisionRegistryChecksCompanyBeneficialOwnersKYCStatus.

type SessionDecisionRegistryChecksCompanyOfficers

type SessionDecisionRegistryChecksCompanyOfficers struct {
	UUID          string                                                `json:"uuid"`
	Name          string                                                `json:"name"`
	Designation   string                                                `json:"designation"`
	Role          string                                                `json:"role"`
	Nationality   string                                                `json:"nationality"`
	IsActive      bool                                                  `json:"is_active"`
	KYCStatus     SessionDecisionRegistryChecksCompanyOfficersKYCStatus `json:"kyc_status"`
	KYCSessionURL string                                                `json:"kyc_session_url"`

	// Given name when explicitly reported by the registry; not inferred from the
	// full name.
	FirstName string `json:"first_name"`

	// Family name when explicitly reported by the registry.
	LastName string `json:"last_name"`

	// Officer address reported by the registry.
	Address string `json:"address"`

	// Date the officer was appointed.
	AppointmentDate string `json:"appointment_date"`

	// Date the appointment ended, when reported.
	TerminationDate string `json:"termination_date"`

	// Complete registry-reported birth date. Null when only a birth year or month
	// is known.
	DateOfBirth string `json:"date_of_birth"`

	// Registry-reported birth year, including when the full date is unavailable.
	DateOfBirthYear int64 `json:"date_of_birth_year"`

	// Registry-reported birth month. Null when only the year is known.
	DateOfBirthMonth int64 `json:"date_of_birth_month"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionRegistryChecksCompanyOfficers is a response object.

func (*SessionDecisionRegistryChecksCompanyOfficers) UnmarshalJSON

func (r *SessionDecisionRegistryChecksCompanyOfficers) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionRegistryChecksCompanyOfficers leniently.

type SessionDecisionRegistryChecksCompanyOfficersKYCStatus

type SessionDecisionRegistryChecksCompanyOfficersKYCStatus string

SessionDecisionRegistryChecksCompanyOfficersKYCStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionRegistryChecksCompanyOfficersKYCStatusApproved SessionDecisionRegistryChecksCompanyOfficersKYCStatus = "Approved"
	SessionDecisionRegistryChecksCompanyOfficersKYCStatusDeclined SessionDecisionRegistryChecksCompanyOfficersKYCStatus = "Declined"
	SessionDecisionRegistryChecksCompanyOfficersKYCStatusPending  SessionDecisionRegistryChecksCompanyOfficersKYCStatus = "Pending"
)

Known values of SessionDecisionRegistryChecksCompanyOfficersKYCStatus.

type SessionDecisionRegistryChecksCompanyRiskLevel

type SessionDecisionRegistryChecksCompanyRiskLevel string

SessionDecisionRegistryChecksCompanyRiskLevel is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionRegistryChecksCompanyRiskLevelLow    SessionDecisionRegistryChecksCompanyRiskLevel = "LOW"
	SessionDecisionRegistryChecksCompanyRiskLevelMedium SessionDecisionRegistryChecksCompanyRiskLevel = "MEDIUM"
	SessionDecisionRegistryChecksCompanyRiskLevelHigh   SessionDecisionRegistryChecksCompanyRiskLevel = "HIGH"
)

Known values of SessionDecisionRegistryChecksCompanyRiskLevel.

type SessionDecisionRegistryChecksCompanyVATValidationSource

type SessionDecisionRegistryChecksCompanyVATValidationSource string

SessionDecisionRegistryChecksCompanyVATValidationSource: The source that decided `vat_validation_status`: an official registry, or `format_rules`. `null` when no check ran.

SessionDecisionRegistryChecksCompanyVATValidationSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionRegistryChecksCompanyVATValidationSourceEuVies           SessionDecisionRegistryChecksCompanyVATValidationSource = "eu_vies"
	SessionDecisionRegistryChecksCompanyVATValidationSourcePlVATWhiteList   SessionDecisionRegistryChecksCompanyVATValidationSource = "pl_vat_white_list"
	SessionDecisionRegistryChecksCompanyVATValidationSourceNoBrreg          SessionDecisionRegistryChecksCompanyVATValidationSource = "no_brreg"
	SessionDecisionRegistryChecksCompanyVATValidationSourceChUIDRegister    SessionDecisionRegistryChecksCompanyVATValidationSource = "ch_uid_register"
	SessionDecisionRegistryChecksCompanyVATValidationSourceBrReceitaFederal SessionDecisionRegistryChecksCompanyVATValidationSource = "br_receita_federal"
	SessionDecisionRegistryChecksCompanyVATValidationSourceCoRues           SessionDecisionRegistryChecksCompanyVATValidationSource = "co_rues"
	SessionDecisionRegistryChecksCompanyVATValidationSourceCrHacienda       SessionDecisionRegistryChecksCompanyVATValidationSource = "cr_hacienda"
	SessionDecisionRegistryChecksCompanyVATValidationSourceEcSri            SessionDecisionRegistryChecksCompanyVATValidationSource = "ec_sri"
	SessionDecisionRegistryChecksCompanyVATValidationSourcePyDnit           SessionDecisionRegistryChecksCompanyVATValidationSource = "py_dnit"
	SessionDecisionRegistryChecksCompanyVATValidationSourceFormatRules      SessionDecisionRegistryChecksCompanyVATValidationSource = "format_rules"
)

Known values of SessionDecisionRegistryChecksCompanyVATValidationSource.

type SessionDecisionRegistryChecksCompanyVATValidationStatus

type SessionDecisionRegistryChecksCompanyVATValidationStatus string

SessionDecisionRegistryChecksCompanyVATValidationStatus: Result of validating the VAT number or, when there is none, the `tax_number`, at registry submit. `valid` / `invalid`: decided by the official registry of the country (EU VIES, Norway, Switzerland, Brazil, Colombia, Costa Rica, Ecuador, Paraguay; Poland also by its domestic VAT register). `format_valid` / `invalid_format`: decided by the country's format and check-digit rules where no registry can be queried. `could_not_validate`: the registry was unavailable. `not_applicable`: no number, a country without registry or rules, or a sandbox session.

SessionDecisionRegistryChecksCompanyVATValidationStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionRegistryChecksCompanyVATValidationStatusValid            SessionDecisionRegistryChecksCompanyVATValidationStatus = "valid"
	SessionDecisionRegistryChecksCompanyVATValidationStatusInvalid          SessionDecisionRegistryChecksCompanyVATValidationStatus = "invalid"
	SessionDecisionRegistryChecksCompanyVATValidationStatusFormatValid      SessionDecisionRegistryChecksCompanyVATValidationStatus = "format_valid"
	SessionDecisionRegistryChecksCompanyVATValidationStatusInvalidFormat    SessionDecisionRegistryChecksCompanyVATValidationStatus = "invalid_format"
	SessionDecisionRegistryChecksCompanyVATValidationStatusCouldNotValidate SessionDecisionRegistryChecksCompanyVATValidationStatus = "could_not_validate"
	SessionDecisionRegistryChecksCompanyVATValidationStatusNotApplicable    SessionDecisionRegistryChecksCompanyVATValidationStatus = "not_applicable"
)

Known values of SessionDecisionRegistryChecksCompanyVATValidationStatus.

type SessionDecisionResubmissions

type SessionDecisionResubmissions struct {
	// 1 for the first resubmission of the session, 2 for the second, and so on.
	Number int64 `json:"number"`

	// When the resubmission was requested.
	CreatedAt time.Time `json:"created_at"`

	// The session status just before the request.
	PreviousStatus string `json:"previous_status"`

	// The workflow steps sent back to the user.
	Nodes []SessionDecisionResubmissionsNodes `json:"nodes"`

	// The reason given for each step, keyed by `node_id`.
	Reasons map[string]string `json:"reasons"`

	// Who requested the resubmission.
	RequestedBy SessionDecisionResubmissionsRequestedBy `json:"requested_by"`

	// What the resubmitted steps returned before the request, under the same keys
	// and in the same shape as the current results of this response
	// (`id_verifications`, `nfc_verifications`, `liveness_checks`, `face_matches`,
	// `poa_verifications`, `phone_verifications`, `email_verifications`,
	// `aml_screenings`, `ip_analyses`, `database_validations`,
	// `questionnaire_responses`, `document_ai_documents`, `geolocation_checks`; for
	// business sessions also `document_verifications`). Only the keys of the steps
	// that were sent back appear.
	Results map[string]any `json:"results"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionResubmissions is a response object.

func (*SessionDecisionResubmissions) UnmarshalJSON

func (r *SessionDecisionResubmissions) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionResubmissions leniently.

type SessionDecisionResubmissionsNodes

type SessionDecisionResubmissionsNodes struct {
	NodeID  string `json:"node_id"`
	Feature string `json:"feature"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionResubmissionsNodes is a response object.

func (*SessionDecisionResubmissionsNodes) UnmarshalJSON

func (r *SessionDecisionResubmissionsNodes) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionResubmissionsNodes leniently.

type SessionDecisionResubmissionsRequestedBy

type SessionDecisionResubmissionsRequestedBy struct {
	Name  string `json:"name"`
	Email string `json:"email"`
	Type  string `json:"type"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionResubmissionsRequestedBy: Who requested the resubmission.

func (*SessionDecisionResubmissionsRequestedBy) UnmarshalJSON

func (r *SessionDecisionResubmissionsRequestedBy) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionResubmissionsRequestedBy leniently.

type SessionDecisionReviews

type SessionDecisionReviews struct {
	// Who performed the review. Usually the console reviewer's identifier (their
	// email), but the value is `"API Client"` for status updates made with an API
	// key and `"Unknown"` when no actor could be resolved - so do not parse this
	// field as an email address.
	User      string    `json:"user"`
	NewStatus string    `json:"new_status"`
	Comment   string    `json:"comment"`
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDecisionReviews is a response object.

func (*SessionDecisionReviews) UnmarshalJSON

func (r *SessionDecisionReviews) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDecisionReviews leniently.

type SessionDecisionSessionKind

type SessionDecisionSessionKind string

SessionDecisionSessionKind: Discriminator indicating whether this is a User Verification (KYC) or Business Verification (KYB) session. When `user`, the KYC feature arrays (`id_verifications`, `nfc_verifications`, `liveness_checks`, `face_matches`, `poa_verifications`, `document_ai_documents`, `database_validations`, ...) apply and the business arrays are absent. When `business`, the payload instead carries `registry_checks`, `document_verifications`, `key_people_checks` plus the shared arrays (`aml_screenings`, `phone_verifications`, `email_verifications`, `ip_analyses`, `questionnaire_responses`). **Omitted when `include=events` is passed** - the events shape only exists for user sessions, so the discriminator is dropped from that variant.

SessionDecisionSessionKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionSessionKindUser     SessionDecisionSessionKind = "user"
	SessionDecisionSessionKindBusiness SessionDecisionSessionKind = "business"
)

Known values of SessionDecisionSessionKind.

type SessionDecisionStatus

type SessionDecisionStatus string

SessionDecisionStatus: Overall lifecycle status of the session - the rolled-up workflow result. Terminal values are `Approved`, `Declined`, `In Review`, `Expired`, `Kyc Expired`, and `Abandoned`; `Not Started`, `In Progress`, `Awaiting User`, and `Resubmitted` indicate the session is still moving through the workflow.

SessionDecisionStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDecisionStatusNotStarted   SessionDecisionStatus = "Not Started"
	SessionDecisionStatusInProgress   SessionDecisionStatus = "In Progress"
	SessionDecisionStatusAwaitingUser SessionDecisionStatus = "Awaiting User"
	SessionDecisionStatusInReview     SessionDecisionStatus = "In Review"
	SessionDecisionStatusApproved     SessionDecisionStatus = "Approved"
	SessionDecisionStatusDeclined     SessionDecisionStatus = "Declined"
	SessionDecisionStatusResubmitted  SessionDecisionStatus = "Resubmitted"
	SessionDecisionStatusExpired      SessionDecisionStatus = "Expired"
	SessionDecisionStatusKYCExpired   SessionDecisionStatus = "Kyc Expired"
	SessionDecisionStatusAbandoned    SessionDecisionStatus = "Abandoned"
)

Known values of SessionDecisionStatus.

type SessionDeletionJob

type SessionDeletionJob struct {
	// Poll `GET /v3/sessions/delete/{job_id}/` with this id.
	JobID string `json:"job_id"`

	// `PENDING`: accepted, not started yet. `PROCESSING`: deleting; `processed` and
	// `outcomes` are updating. `COMPLETED`: every selected session is accounted
	// for. `FAILED`: the job stopped early; see `error`.
	Status SessionDeletionJobStatus `json:"status"`

	// Sessions selected when the deletion was requested.
	Total int64 `json:"total"`

	// Sessions the job has finished with so far.
	Processed int64 `json:"processed"`

	// How many sessions ended in each outcome. Every key is always present.
	Outcomes SessionDeletionJobOutcomes `json:"outcomes"`

	// Verifications that the deleted business verifications created, deleted with
	// them. Always `0` for a job started by `POST /v3/sessions/delete/`, which
	// deletes KYC sessions only.
	DeletedChildVerifications int64 `json:"deleted_child_verifications"`

	// `null` unless `status` is `FAILED`; then why the deletion stopped. The
	// sessions the job had not reached are still in place: repeat the request to
	// delete them.
	Error string `json:"error"`

	// When the deletion was requested.
	CreatedAt time.Time `json:"created_at"`

	// When the job finished; `null` while it runs.
	CompletedAt time.Time `json:"completed_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDeletionJob: A bulk session deletion running in the background: progress and counts per outcome, never which sessions it deleted.

func (*SessionDeletionJob) UnmarshalJSON

func (r *SessionDeletionJob) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDeletionJob leniently.

type SessionDeletionJobOutcomes

type SessionDeletionJobOutcomes struct {
	// Sessions deleted together with their face embedding.
	Deleted int64 `json:"deleted"`

	// Sessions deleted that had no face embedding.
	None int64 `json:"none"`

	// Sessions deleted while one image-free biometric template was retained for
	// their User, as the request or the application policy asked.
	RetainedWithUser int64 `json:"retained_with_user"`

	// Sessions deleted, with their face embedding, because retention was requested
	// but they had no linked User.
	IneligibleNoVendorUser int64 `json:"ineligible_no_vendor_user"`

	// Sessions reported as not deleted. A job retries a group it could not delete
	// by itself instead of counting it here.
	FailedRetryable int64 `json:"failed_retryable"`

	// Selected sessions that were already deleted, for example by another request,
	// when the job reached them.
	AlreadyDeleted int64 `json:"already_deleted"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionDeletionJobOutcomes: How many sessions ended in each outcome. Every key is always present.

func (*SessionDeletionJobOutcomes) UnmarshalJSON

func (r *SessionDeletionJobOutcomes) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionDeletionJobOutcomes leniently.

type SessionDeletionJobStatus

type SessionDeletionJobStatus string

SessionDeletionJobStatus: `PENDING`: accepted, not started yet. `PROCESSING`: deleting; `processed` and `outcomes` are updating. `COMPLETED`: every selected session is accounted for. `FAILED`: the job stopped early; see `error`.

SessionDeletionJobStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionDeletionJobStatusPending    SessionDeletionJobStatus = "PENDING"
	SessionDeletionJobStatusProcessing SessionDeletionJobStatus = "PROCESSING"
	SessionDeletionJobStatusCompleted  SessionDeletionJobStatus = "COMPLETED"
	SessionDeletionJobStatusFailed     SessionDeletionJobStatus = "FAILED"
)

Known values of SessionDeletionJobStatus.

type SessionEvent

type SessionEvent struct {
	// Event identifier.
	UUID string `json:"uuid"`

	// What happened. Reported by the device during the hosted flow or SDK:
	// `LINK_OPENED`, `STEP_RENDERED`, `BUTTON_CLICKED`, `FORM_SUBMITTED`,
	// `FILE_UPLOADED`, `ATTEMPT_FAILED` and `LOG` (debugging). Recorded by the
	// server: `SESSION_CREATED`, `SESSION_STATUS_CHANGED` (`details.old_status`,
	// `details.current_status`), `FEATURE_STEP_CHANGED`
	// (`details.old_feature_step`, `details.current_feature_step`),
	// `WORKFLOW_BRANCH_EVALUATED` and `WORKFLOW_STATUS_NODE_REACHED` (the workflow
	// routing trace). `SESSION_COMPLETED`, `NOTE_ADDED` and `MANUAL_REVIEW_STARTED`
	// can appear on older sessions.
	EventType SessionEventEventType `json:"event_type"`

	// When Didit stored the event. Events are stored asynchronously, a few seconds
	// after `sent_at`.
	CreatedAt time.Time `json:"created_at"`

	// UI component that reported the event (device events only).
	Component string `json:"component"`

	// Verification feature the session was on when the event happened.
	FeatureStep SessionEventFeatureStep `json:"feature_step"`

	// Screen within the feature, for example `DOCUMENT_CAPTURE_FRONT` or
	// `FACE_PASSIVE_LIVENESS`.
	Step string `json:"step"`

	// Event-specific data. The keys depend on `event_type`.
	Details map[string]any `json:"details"`

	// IP address the device reported the event from. `null` for server-recorded
	// events.
	IPAddress string `json:"ip_address"`

	// User agent of the device. `null` for server-recorded events.
	UserAgent string `json:"user_agent"`

	// Device details the SDK or browser reported.
	DeviceInfo map[string]any `json:"device_info"`

	// Short-lived presigned link to a file attached to the event (for example a
	// captured image). `null` when there is none, and always `null` for a scoped
	// API key without `media: read`.
	FileURL string `json:"file_url"`

	// When the event happened, as a Unix timestamp in milliseconds. Results are
	// ordered by it.
	SentAt int64 `json:"sent_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionEvent: One entry of a verification session's event timeline.

func (*SessionEvent) UnmarshalJSON

func (r *SessionEvent) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionEvent leniently.

type SessionEventEventType

type SessionEventEventType string

SessionEventEventType: What happened. Reported by the device during the hosted flow or SDK: `LINK_OPENED`, `STEP_RENDERED`, `BUTTON_CLICKED`, `FORM_SUBMITTED`, `FILE_UPLOADED`, `ATTEMPT_FAILED` and `LOG` (debugging). Recorded by the server: `SESSION_CREATED`, `SESSION_STATUS_CHANGED` (`details.old_status`, `details.current_status`), `FEATURE_STEP_CHANGED` (`details.old_feature_step`, `details.current_feature_step`), `WORKFLOW_BRANCH_EVALUATED` and `WORKFLOW_STATUS_NODE_REACHED` (the workflow routing trace). `SESSION_COMPLETED`, `NOTE_ADDED` and `MANUAL_REVIEW_STARTED` can appear on older sessions.

SessionEventEventType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionEventEventTypeSessionCreated            SessionEventEventType = "SESSION_CREATED"
	SessionEventEventTypeSessionCompleted          SessionEventEventType = "SESSION_COMPLETED"
	SessionEventEventTypeSessionStatusChanged      SessionEventEventType = "SESSION_STATUS_CHANGED"
	SessionEventEventTypeLinkOpened                SessionEventEventType = "LINK_OPENED"
	SessionEventEventTypeFormSubmitted             SessionEventEventType = "FORM_SUBMITTED"
	SessionEventEventTypeButtonClicked             SessionEventEventType = "BUTTON_CLICKED"
	SessionEventEventTypeFileUploaded              SessionEventEventType = "FILE_UPLOADED"
	SessionEventEventTypeAttemptFailed             SessionEventEventType = "ATTEMPT_FAILED"
	SessionEventEventTypeFeatureStepChanged        SessionEventEventType = "FEATURE_STEP_CHANGED"
	SessionEventEventTypeStepRendered              SessionEventEventType = "STEP_RENDERED"
	SessionEventEventTypeNoteAdded                 SessionEventEventType = "NOTE_ADDED"
	SessionEventEventTypeManualReviewStarted       SessionEventEventType = "MANUAL_REVIEW_STARTED"
	SessionEventEventTypeWorkflowBranchEvaluated   SessionEventEventType = "WORKFLOW_BRANCH_EVALUATED"
	SessionEventEventTypeWorkflowStatusNodeReached SessionEventEventType = "WORKFLOW_STATUS_NODE_REACHED"
	SessionEventEventTypeLog                       SessionEventEventType = "LOG"
)

Known values of SessionEventEventType.

type SessionEventFeatureStep

type SessionEventFeatureStep string

SessionEventFeatureStep: Verification feature the session was on when the event happened.

SessionEventFeatureStep is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionEventFeatureStepOCR                SessionEventFeatureStep = "OCR"
	SessionEventFeatureStepOCRBack            SessionEventFeatureStep = "OCR_BACK"
	SessionEventFeatureStepNFC                SessionEventFeatureStep = "NFC"
	SessionEventFeatureStepAML                SessionEventFeatureStep = "AML"
	SessionEventFeatureStepFace               SessionEventFeatureStep = "FACE"
	SessionEventFeatureStepLiveness           SessionEventFeatureStep = "LIVENESS"
	SessionEventFeatureStepFaceMatch          SessionEventFeatureStep = "FACE_MATCH"
	SessionEventFeatureStepIPAnalysis         SessionEventFeatureStep = "IP_ANALYSIS"
	SessionEventFeatureStepAgeEstimation      SessionEventFeatureStep = "AGE_ESTIMATION"
	SessionEventFeatureStepProofOfAddress     SessionEventFeatureStep = "PROOF_OF_ADDRESS"
	SessionEventFeatureStepPhoneVerification  SessionEventFeatureStep = "PHONE_VERIFICATION"
	SessionEventFeatureStepEmailVerification  SessionEventFeatureStep = "EMAIL_VERIFICATION"
	SessionEventFeatureStepFaceSearch         SessionEventFeatureStep = "FACE_SEARCH"
	SessionEventFeatureStepDatabaseValidation SessionEventFeatureStep = "DATABASE_VALIDATION"
	SessionEventFeatureStepQuestionnaire      SessionEventFeatureStep = "QUESTIONNAIRE"
	SessionEventFeatureStepKYBRegistry        SessionEventFeatureStep = "KYB_REGISTRY"
	SessionEventFeatureStepKYBDocuments       SessionEventFeatureStep = "KYB_DOCUMENTS"
	SessionEventFeatureStepKYBKeyPeople       SessionEventFeatureStep = "KYB_KEY_PEOPLE"
	SessionEventFeatureStepDocumentAi         SessionEventFeatureStep = "DOCUMENT_AI"
	SessionEventFeatureStepGeolocation        SessionEventFeatureStep = "GEOLOCATION"
)

Known values of SessionEventFeatureStep.

type SessionImportError

type SessionImportError struct {
	UUID       string         `json:"uuid"`
	RowNumber  int64          `json:"row_number"`
	ExternalID string         `json:"external_id"`
	Error      string         `json:"error"`
	RawRow     map[string]any `json:"raw_row"`
	CreatedAt  time.Time      `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionImportError is a response object.

func (*SessionImportError) UnmarshalJSON

func (r *SessionImportError) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionImportError leniently.

type SessionImportJob

type SessionImportJob struct {
	// Import job id. Use this value to poll progress and fetch row errors.
	UUID            string                       `json:"uuid"`
	Status          SessionImportJobStatus       `json:"status"`
	ImportType      SessionImportJobImportType   `json:"import_type"`
	SourceFormat    SessionImportJobSourceFormat `json:"source_format"`
	SourceFilename  string                       `json:"source_filename"`
	TotalRows       int64                        `json:"total_rows"`
	ProcessedRows   int64                        `json:"processed_rows"`
	CheckpointRow   int64                        `json:"checkpoint_row"`
	CreatedCount    int64                        `json:"created_count"`
	UpdatedCount    int64                        `json:"updated_count"`
	SkippedCount    int64                        `json:"skipped_count"`
	FailedCount     int64                        `json:"failed_count"`
	TotalMediaBytes int64                        `json:"total_media_bytes"`
	LastError       string                       `json:"last_error"`
	CreatedAt       time.Time                    `json:"created_at"`
	UpdatedAt       time.Time                    `json:"updated_at"`
	StartedAt       time.Time                    `json:"started_at"`
	CompletedAt     time.Time                    `json:"completed_at"`

	// The job's state as the console shows it; `errors` is a completed job with
	// rejected rows.
	State  SessionImportJobState  `json:"state"`
	Source SessionImportJobSource `json:"source"`

	// Migration source; empty for a file or API import.
	Provider        string         `json:"provider"`
	ProviderOptions map[string]any `json:"provider_options"`

	// The first characters of the key the migration holds. The key itself is never
	// returned.
	CredentialHint       string    `json:"credential_hint"`
	CredentialsExpiresAt time.Time `json:"credentials_expires_at"`

	// When a job paused by the provider's rate limit resumes by itself.
	ResumesAt     time.Time         `json:"resumes_at"`
	StatusMapping map[string]string `json:"status_mapping"`
	IsDryRun      bool              `json:"is_dry_run"`

	// What a dry run found: `total`, `by_status`, `already_in_didit`,
	// `same_person`, `not_finished`, `failed`, `unmapped_statuses`.
	DryRunSummary          map[string]any `json:"dry_run_summary"`
	FaceTemplatesEnabled   bool           `json:"face_templates_enabled"`
	LawfulBasisConfirmedAt time.Time      `json:"lawful_basis_confirmed_at"`
	NotFinishedCount       int64          `json:"not_finished_count"`
	SamePersonCount        int64          `json:"same_person_count"`
	FaceTemplatesCount     int64          `json:"face_templates_count"`
	FaceDuplicatesCount    int64          `json:"face_duplicates_count"`
	FaceBlocklistHitsCount int64          `json:"face_blocklist_hits_count"`
	CreatedByName          string         `json:"created_by_name"`
	CreatedByEmail         string         `json:"created_by_email"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionImportJob is a response object.

func (*SessionImportJob) UnmarshalJSON

func (r *SessionImportJob) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionImportJob leniently.

type SessionImportJobImportType

type SessionImportJobImportType string

SessionImportJobImportType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionImportJobImportTypeUserVerification     SessionImportJobImportType = "user_verification"
	SessionImportJobImportTypeBusinessVerification SessionImportJobImportType = "business_verification"
	SessionImportJobImportTypeStatusRules          SessionImportJobImportType = "status_rules"
	SessionImportJobImportTypeTransactions         SessionImportJobImportType = "transactions"
)

Known values of SessionImportJobImportType.

type SessionImportJobSource

type SessionImportJobSource string

SessionImportJobSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionImportJobSourceFile     SessionImportJobSource = "file"
	SessionImportJobSourceAPI      SessionImportJobSource = "api"
	SessionImportJobSourceProvider SessionImportJobSource = "provider"
)

Known values of SessionImportJobSource.

type SessionImportJobSourceFormat

type SessionImportJobSourceFormat string

SessionImportJobSourceFormat is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionImportJobSourceFormatCSV    SessionImportJobSourceFormat = "csv"
	SessionImportJobSourceFormatNdjson SessionImportJobSourceFormat = "ndjson"
)

Known values of SessionImportJobSourceFormat.

type SessionImportJobState

type SessionImportJobState string

SessionImportJobState: The job's state as the console shows it; `errors` is a completed job with rejected rows.

SessionImportJobState is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionImportJobStateReady     SessionImportJobState = "ready"
	SessionImportJobStateQueued    SessionImportJobState = "queued"
	SessionImportJobStateRunning   SessionImportJobState = "running"
	SessionImportJobStatePaused    SessionImportJobState = "paused"
	SessionImportJobStateCompleted SessionImportJobState = "completed"
	SessionImportJobStateErrors    SessionImportJobState = "errors"
	SessionImportJobStateFailed    SessionImportJobState = "failed"
	SessionImportJobStateCancelled SessionImportJobState = "cancelled"
)

Known values of SessionImportJobState.

type SessionImportJobStatus

type SessionImportJobStatus string

SessionImportJobStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionImportJobStatusPending    SessionImportJobStatus = "PENDING"
	SessionImportJobStatusProcessing SessionImportJobStatus = "PROCESSING"
	SessionImportJobStatusCompleted  SessionImportJobStatus = "COMPLETED"
	SessionImportJobStatusFailed     SessionImportJobStatus = "FAILED"
	SessionImportJobStatusPaused     SessionImportJobStatus = "PAUSED"
	SessionImportJobStatusCancelled  SessionImportJobStatus = "CANCELLED"
	SessionImportJobStatusReady      SessionImportJobStatus = "READY"
)

Known values of SessionImportJobStatus.

type SessionSignDocument

type SessionSignDocument struct {
	// Title shown to the signer. Defaults to `file_name`.
	Title Opt[string] `json:"title"`

	// File name, ending in `.pdf` or `.docx`. Required.
	FileName string `json:"file_name"`

	// The file, base64-encoded. A PDF can have up to 20 MB and 100 pages, without a
	// password, scripts or attached files. A Word file (`.docx`) can have up to 20
	// MB and is converted to PDF while the request runs, in at most 25 seconds; the
	// PDF then has the same limits. Up to 5 Word files per session. A Word file
	// with macros, tracked changes, links to external content or embedded objects
	// is refused with `signature_document_not_supported`, and one that can't be
	// converted returns `signature_document_conversion_failed`, each with a
	// `reason`. Required.
	ContentBase64 string `json:"content_base64"`

	// Optional fields to place on this document, up to 200. Pages and positions
	// refer to the PDF, or to the converted PDF for a Word file. Without fields,
	// the signer reads the document and agrees to it.
	Fields Opt[[]SignatureField] `json:"fields"`
}

SessionSignDocument is a request object.

func (SessionSignDocument) MarshalJSON

func (r SessionSignDocument) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionWebhookDelivery

type SessionWebhookDelivery struct {
	// Delivery ID. Use it as `{webhook_uuid}` to get or resend this delivery.
	UUID string `json:"uuid"`

	// The session the delivery belongs to (the session in the path).
	SessionID string `json:"session_id"`

	// URL the delivery was sent to.
	RequestURL string `json:"request_url"`

	// HTTP status your endpoint returned. `null` while the delivery is queued and
	// not yet attempted. When no HTTP answer was received Didit records a status of
	// its own: `504` when your endpoint did not answer within 5 seconds, `503` for
	// a connection failure, `400` when the URL was refused as unsafe (for example a
	// private or internal address), and `404` for any other request error. `400` or
	// above counts as a failed delivery.
	ResponseStatus int64 `json:"response_status"`

	// Session status when the event was generated, for example `In Progress`,
	// `Approved` or `Declined`.
	Status      string       `json:"status"`
	WebhookType WebhookEvent `json:"webhook_type"`

	// JSON text (a string) of the request headers Didit sent: `Content-Type`,
	// `X-Signature`, `X-Signature-V2`, `X-Signature-Simple`, `X-Timestamp` and
	// `User-Agent`. Parse it with a JSON parser. It holds signatures, never the
	// signing secret.
	RequestHeader string `json:"request_header"`

	// JSON text (a string) of the exact payload Didit sent, keys sorted, including
	// `event_id` and `timestamp`. Parse it with a JSON parser; see [Payload
	// shape](https://docs.didit.me/integration/webhooks#payload-shape). For a
	// scoped key without `media: read`, media URLs inside it are `null`; without
	// `sessions: write`, session tokens and hosted verification links are `null`. A
	// body changed that way no longer matches its signatures. Didit does not record
	// the response body your endpoint returned.
	RequestBody string `json:"request_body"`

	// When the delivery was created.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionWebhookDelivery: One webhook delivery attempt recorded for a verification session, with the exact request headers and body Didit sent.

func (*SessionWebhookDelivery) UnmarshalJSON

func (r *SessionWebhookDelivery) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionWebhookDelivery leniently.

type SessionsAddImagesParams

type SessionsAddImagesParams struct {
	// The image or PDF. Allowed extensions: `jpg`, `jpeg`, `png`, `webp`, `tiff`,
	// `pdf`. At most 15 MB as uploaded; the file is then compressed and rejected
	// with `400` if it is still larger than 2 MB (2,097,152 bytes). Empty files are
	// rejected. Required.
	File File `json:"-" form:"file"`

	// `kyc` adds the file to the ID verification result, `poa` to the Proof of
	// Address result. Required.
	ModelType SessionsAddImagesParamsModelType `json:"model_type"`

	// Password of an encrypted PDF. Without it, or with a wrong one, an encrypted
	// PDF returns `400`.
	FilePassword Opt[string] `json:"file_password"`
}

SessionsAddImagesParams holds the parameters of Client.Sessions.AddImages.

func (SessionsAddImagesParams) MarshalJSON

func (r SessionsAddImagesParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsAddImagesParamsModelType

type SessionsAddImagesParamsModelType string

SessionsAddImagesParamsModelType: `kyc` adds the file to the ID verification result, `poa` to the Proof of Address result.

SessionsAddImagesParamsModelType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsAddImagesParamsModelTypeKYC SessionsAddImagesParamsModelType = "kyc"
	SessionsAddImagesParamsModelTypePOA SessionsAddImagesParamsModelType = "poa"
)

Known values of SessionsAddImagesParamsModelType.

type SessionsAddImagesResponse

type SessionsAddImagesResponse struct {
	// Short-lived presigned links to all extra files of the result named by
	// `model_type`, oldest first. Each link is `null` for a scoped API key without
	// `media: read`. Read fresh links from the session decision later.
	ExtraFiles []string `json:"extra_files"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsAddImagesResponse is a response object.

func (*SessionsAddImagesResponse) UnmarshalJSON

func (r *SessionsAddImagesResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsAddImagesResponse leniently.

type SessionsBatchDeleteParams

type SessionsBatchDeleteParams struct {
	// Numeric `session_number` values of the KYC sessions to delete, as digit-only
	// strings (JSON numbers are also accepted and coerced). Required unless
	// `delete_all` is `true`; an empty list returns `400`. Any non-digit entry
	// rejects the whole request with `400` (unless `delete_all` is `true`, in which
	// case validation is skipped and the entries are ignored). Numbers that do not
	// match a live session in your application are silently skipped.
	SessionNumbers Opt[[]string] `json:"session_numbers"`

	// When `true`, every remaining KYC session in the calling application is
	// deleted and `session_numbers` is ignored, unless you narrow the selection
	// with `filter_*` keys. More than 20 matching sessions run as a deletion job
	// (`202`) that covers only the sessions created before the request. Defaults to
	// `false`. Irreversible; there is no confirmation step.
	DeleteAll Opt[bool] `json:"delete_all"`

	// Override the application's `face_retention_policy` for this deletion. `true`
	// keeps one image-free face biometric template anchored to the session's User
	// after the session is deleted; `false` deletes the face embedding with the
	// session; omit or `null` to follow the application policy. Ignored for KYB
	// sessions and for sessions without a face embedding.
	RetainFaceEmbeddings Opt[bool] `json:"retain_face_embeddings"`

	// Finite retention duration, in days, for a retained template. Required when a
	// template is retained unless the application already sets
	// `face_retention_days`. The template's `expires_at` is the earliest of this
	// duration, the application's general data-retention window, and
	// `face_retention_deadline`.
	FaceRetentionDays Opt[int64] `json:"face_retention_days"`

	// Optional hard expiry for a retained template. Must be in the future.
	FaceRetentionDeadline Opt[time.Time] `json:"face_retention_deadline"`

	// The class of instruction you are giving. `operational_session_delete` deletes
	// the session and retains a template only when the policy or
	// `retain_face_embeddings` says so. `privacy_erasure` purges every retained
	// biometric template anchored to the session's User before deleting the
	// session, cannot be overridden by the application policy, and cannot be
	// combined with `retain_face_embeddings: true` (`400`).
	DeletionInstruction Opt[SessionsBatchDeleteParamsDeletionInstruction] `json:"deletion_instruction"`

	// Your durable reference for this deletion instruction (for example an
	// erasure-ticket id). Recorded on the audit trail and on any retained template.
	// Generated by Didit when omitted.
	InstructionID Opt[string] `json:"instruction_id"`

	// Narrows a `delete_all` to the sessions that match the `status` filter of
	// [List Sessions](/sessions-api/list-sessions), with the same values. A
	// comma-separated string or an array. Ignored without `delete_all`. An empty
	// value is ignored and does not narrow the selection.
	FilterStatus Opt[any] `json:"filter_status"`

	// Narrows a `delete_all` to the sessions that match the `vendor_data` filter of
	// [List Sessions](/sessions-api/list-sessions), with the same value. One value,
	// not a list: an array is joined into one comma-separated text, so several
	// values are not matched as alternatives. Ignored without `delete_all`. An
	// empty value is ignored and does not narrow the selection.
	FilterVendorData Opt[string] `json:"filter_vendor_data"`

	// Narrows a `delete_all` to the sessions that match the `search` filter of
	// [List Sessions](/sessions-api/list-sessions), with the same value. One value,
	// not a list: an array is joined into one comma-separated text, so several
	// values are not matched as alternatives. Ignored without `delete_all`. An
	// empty value is ignored and does not narrow the selection.
	FilterSearch Opt[string] `json:"filter_search"`

	// Narrows a `delete_all` to the sessions that match the `workflow_id` filter of
	// [List Sessions](/sessions-api/list-sessions), with the same values. A
	// comma-separated string or an array. Ignored without `delete_all`. An empty
	// value is ignored and does not narrow the selection.
	FilterWorkflowID Opt[any] `json:"filter_workflow_id"`

	// Narrows a `delete_all` to the sessions that match the `date_from` filter of
	// [List Sessions](/sessions-api/list-sessions), with the same value. One value,
	// not a list: an array is joined into one comma-separated value, so several
	// values are refused with `400`. Ignored without `delete_all`. An empty value
	// is ignored and does not narrow the selection.
	FilterDateFrom Opt[string] `json:"filter_date_from"`

	// Narrows a `delete_all` to the sessions that match the `date_to` filter of
	// [List Sessions](/sessions-api/list-sessions), with the same value. One value,
	// not a list: an array is joined into one comma-separated value, so several
	// values are refused with `400`. Ignored without `delete_all`. An empty value
	// is ignored and does not narrow the selection.
	FilterDateTo Opt[string] `json:"filter_date_to"`

	// Narrows a `delete_all` to the sessions that match the `country` filter of
	// [List Sessions](/sessions-api/list-sessions), with the same values. A
	// comma-separated string or an array. Ignored without `delete_all`. An empty
	// value is ignored and does not narrow the selection.
	FilterCountry Opt[any] `json:"filter_country"`

	// Narrows a `delete_all` to the sessions that match the `document_type` filter
	// of [List Sessions](/sessions-api/list-sessions), with the same values. A
	// comma-separated string or an array. Ignored without `delete_all`. An empty
	// value is ignored and does not narrow the selection.
	FilterDocumentType Opt[any] `json:"filter_document_type"`

	// Narrows a `delete_all` to the sessions that match the `document_name` filter
	// of [List Sessions](/sessions-api/list-sessions), with the same values. A
	// comma-separated string or an array. Ignored without `delete_all`. An empty
	// value is ignored and does not narrow the selection.
	FilterDocumentName Opt[any] `json:"filter_document_name"`

	// Narrows a `delete_all` to the sessions that match the `region` filter of
	// [List Sessions](/sessions-api/list-sessions), with the same values. A
	// comma-separated string or an array. Ignored without `delete_all`. An empty
	// value is ignored and does not narrow the selection.
	FilterRegion Opt[any] `json:"filter_region"`

	// Narrows a `delete_all` to the sessions that match the `didit_internal_id`
	// filter of [List Sessions](/sessions-api/list-sessions), with the same value.
	// One value, not a list: an array is joined into one comma-separated value, so
	// several values are refused with `400`. Ignored without `delete_all`. An empty
	// value is ignored and does not narrow the selection.
	FilterDiditInternalID Opt[string] `json:"filter_didit_internal_id"`

	// Narrows a `delete_all` to the sessions that match the `session_type` filter
	// of [List Sessions](/sessions-api/list-sessions), with the same values. A
	// comma-separated string or an array. Ignored without `delete_all`. An empty
	// value is ignored and does not narrow the selection.
	FilterSessionType Opt[any] `json:"filter_session_type"`

	// Narrows a `delete_all` to the sessions that match the `api_service` filter of
	// [List Sessions](/sessions-api/list-sessions), with the same value. One value,
	// not a list: an array is joined into one comma-separated value, so several
	// values are refused with `400`. Ignored without `delete_all`. An empty value
	// is ignored and does not narrow the selection.
	FilterAPIService Opt[string] `json:"filter_api_service"`

	// Narrows a `delete_all` to the sessions that match the `screened_full_name`
	// filter of [List Sessions](/sessions-api/list-sessions), with the same value.
	// One value, not a list: an array is joined into one comma-separated text, so
	// several values are not matched as alternatives. Ignored without `delete_all`.
	// An empty value is ignored and does not narrow the selection.
	FilterScreenedFullName Opt[string] `json:"filter_screened_full_name"`

	// Narrows a `delete_all` to the sessions that match the `warning` filter of
	// [List Sessions](/sessions-api/list-sessions), with the same values. A
	// comma-separated string or an array. Ignored without `delete_all`. An empty
	// value is ignored and does not narrow the selection.
	FilterWarning Opt[any] `json:"filter_warning"`

	// Narrows a `delete_all` to the sessions that match the
	// `status_initialized_as_in_review` filter of [List
	// Sessions](/sessions-api/list-sessions), with the same values. Ignored without
	// `delete_all`. An empty value is ignored and does not narrow the selection.
	FilterStatusInitializedAsInReview Opt[bool] `json:"filter_status_initialized_as_in_review"`

	// Narrows a `delete_all` to the sessions that match the `is_kyc_to_be_reviewed`
	// filter of [List Sessions](/sessions-api/list-sessions), with the same values.
	// Ignored without `delete_all`. An empty value is ignored and does not narrow
	// the selection.
	FilterIsKYCToBeReviewed Opt[bool] `json:"filter_is_kyc_to_be_reviewed"`

	// Narrows a `delete_all` to the sessions that match the `euuid` filter of [List
	// Sessions](/sessions-api/list-sessions), with the same value. One value, not a
	// list: an array is joined into one comma-separated value, so several values
	// are refused with `400`. Ignored without `delete_all`. An empty value is
	// ignored and does not narrow the selection.
	FilterEuuid Opt[string] `json:"filter_euuid"`

	// Narrows a `delete_all` to the sessions that match the `organization_name`
	// filter of [List Sessions](/sessions-api/list-sessions), with the same values.
	// A comma-separated string or an array. With an API key it can only match your
	// own organization's name, so it selects all of your sessions or none. Ignored
	// without `delete_all`. An empty value is ignored and does not narrow the
	// selection.
	FilterOrganizationName Opt[any] `json:"filter_organization_name"`
}

SessionsBatchDeleteParams holds the parameters of Client.Sessions.BatchDelete.

func (SessionsBatchDeleteParams) MarshalJSON

func (r SessionsBatchDeleteParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsBatchDeleteParamsDeletionInstruction

type SessionsBatchDeleteParamsDeletionInstruction string

SessionsBatchDeleteParamsDeletionInstruction: The class of instruction you are giving. `operational_session_delete` deletes the session and retains a template only when the policy or `retain_face_embeddings` says so. `privacy_erasure` purges every retained biometric template anchored to the session's User before deleting the session, cannot be overridden by the application policy, and cannot be combined with `retain_face_embeddings: true` (`400`).

SessionsBatchDeleteParamsDeletionInstruction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsBatchDeleteParamsDeletionInstructionOperationalSessionDelete SessionsBatchDeleteParamsDeletionInstruction = "operational_session_delete"
	SessionsBatchDeleteParamsDeletionInstructionPrivacyErasure           SessionsBatchDeleteParamsDeletionInstruction = "privacy_erasure"
)

Known values of SessionsBatchDeleteParamsDeletionInstruction.

type SessionsBatchDeleteResponse

type SessionsBatchDeleteResponse struct {
	Results []SessionsBatchDeleteResponseResults `json:"results"`

	// Poll `GET /v3/sessions/delete/{job_id}/` with this id.
	JobID string `json:"job_id"`

	// `PENDING`: accepted, not started yet. `PROCESSING`: deleting; `processed` and
	// `outcomes` are updating. `COMPLETED`: every selected session is accounted
	// for. `FAILED`: the job stopped early; see `error`.
	Status SessionsBatchDeleteResponseStatus `json:"status"`

	// Sessions selected when the deletion was requested.
	Total int64 `json:"total"`

	// Sessions the job has finished with so far.
	Processed int64 `json:"processed"`

	// How many sessions ended in each outcome. Every key is always present.
	Outcomes SessionsBatchDeleteResponseOutcomes `json:"outcomes"`

	// Verifications that the deleted business verifications created, deleted with
	// them. Always `0` for a job started by `POST /v3/sessions/delete/`, which
	// deletes KYC sessions only.
	DeletedChildVerifications int64 `json:"deleted_child_verifications"`

	// `null` unless `status` is `FAILED`; then why the deletion stopped. The
	// sessions the job had not reached are still in place: repeat the request to
	// delete them.
	Error string `json:"error"`

	// When the deletion was requested.
	CreatedAt time.Time `json:"created_at"`

	// When the job finished; `null` while it runs.
	CompletedAt time.Time `json:"completed_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsBatchDeleteResponse is a response object.

func (*SessionsBatchDeleteResponse) UnmarshalJSON

func (r *SessionsBatchDeleteResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsBatchDeleteResponse leniently.

type SessionsBatchDeleteResponseOutcomes

type SessionsBatchDeleteResponseOutcomes struct {
	// Sessions deleted together with their face embedding.
	Deleted int64 `json:"deleted"`

	// Sessions deleted that had no face embedding.
	None int64 `json:"none"`

	// Sessions deleted while one image-free biometric template was retained for
	// their User, as the request or the application policy asked.
	RetainedWithUser int64 `json:"retained_with_user"`

	// Sessions deleted, with their face embedding, because retention was requested
	// but they had no linked User.
	IneligibleNoVendorUser int64 `json:"ineligible_no_vendor_user"`

	// Sessions reported as not deleted. A job retries a group it could not delete
	// by itself instead of counting it here.
	FailedRetryable int64 `json:"failed_retryable"`

	// Selected sessions that were already deleted, for example by another request,
	// when the job reached them.
	AlreadyDeleted int64 `json:"already_deleted"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsBatchDeleteResponseOutcomes: How many sessions ended in each outcome. Every key is always present.

func (*SessionsBatchDeleteResponseOutcomes) UnmarshalJSON

func (r *SessionsBatchDeleteResponseOutcomes) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsBatchDeleteResponseOutcomes leniently.

type SessionsBatchDeleteResponseResults

type SessionsBatchDeleteResponseResults struct {
	// The deleted session.
	SessionID string `json:"session_id"`

	// The deleted session's number.
	SessionNumber int64 `json:"session_number"`

	// What happened to the session's face biometric data. `deleted`: the face
	// embedding was deleted with the session (default). `retained_with_user`: the
	// session is deleted and one image-free biometric template stays anchored to
	// the User; see `biometric_template_uuid`. `none`: the session had no face
	// embedding (for example a document-only KYC session without a liveness selfie;
	// KYB sessions are never selected by this endpoint).
	// `ineligible_no_vendor_user`: retention was requested but the session has no
	// linked User, so the embedding was deleted with the session.
	// `failed_retryable` (batch endpoint only): the group this session was deleted
	// with could not be deleted (a storage service, a biometric store, or a
	// monitoring provider was unavailable); this session is still in place, repeat
	// the request for it.
	FaceRetentionOutcome SessionsBatchDeleteResponseResultsFaceRetentionOutcome `json:"face_retention_outcome"`

	// Id of the retained biometric template when `face_retention_outcome` is
	// `retained_with_user`; `null` otherwise. Manage it through
	// `/v3/biometric-templates/{template_uuid}/`.
	BiometricTemplateUUID string `json:"biometric_template_uuid"`

	// When the retained biometric template is deleted, when
	// `face_retention_outcome` is `retained_with_user`; `null` when no template is
	// retained.
	BiometricTemplateExpiresAt time.Time `json:"biometric_template_expires_at"`

	// Always `0` on this endpoint, which deletes KYC sessions only. Deleting a
	// Business Verification (KYB) session with `DELETE
	// /v3/session/{sessionId}/delete/` reports the verifications it created that
	// were deleted with it.
	DeletedChildVerifications int64 `json:"deleted_child_verifications"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsBatchDeleteResponseResults is a response object.

func (*SessionsBatchDeleteResponseResults) UnmarshalJSON

func (r *SessionsBatchDeleteResponseResults) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsBatchDeleteResponseResults leniently.

type SessionsBatchDeleteResponseResultsFaceRetentionOutcome

type SessionsBatchDeleteResponseResultsFaceRetentionOutcome string

SessionsBatchDeleteResponseResultsFaceRetentionOutcome: What happened to the session's face biometric data. `deleted`: the face embedding was deleted with the session (default). `retained_with_user`: the session is deleted and one image-free biometric template stays anchored to the User; see `biometric_template_uuid`. `none`: the session had no face embedding (for example a document-only KYC session without a liveness selfie; KYB sessions are never selected by this endpoint). `ineligible_no_vendor_user`: retention was requested but the session has no linked User, so the embedding was deleted with the session. `failed_retryable` (batch endpoint only): the group this session was deleted with could not be deleted (a storage service, a biometric store, or a monitoring provider was unavailable); this session is still in place, repeat the request for it.

SessionsBatchDeleteResponseResultsFaceRetentionOutcome is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsBatchDeleteResponseResultsFaceRetentionOutcomeRetainedWithUser       SessionsBatchDeleteResponseResultsFaceRetentionOutcome = "retained_with_user"
	SessionsBatchDeleteResponseResultsFaceRetentionOutcomeDeleted                SessionsBatchDeleteResponseResultsFaceRetentionOutcome = "deleted"
	SessionsBatchDeleteResponseResultsFaceRetentionOutcomeNone                   SessionsBatchDeleteResponseResultsFaceRetentionOutcome = "none"
	SessionsBatchDeleteResponseResultsFaceRetentionOutcomeIneligibleNoVendorUser SessionsBatchDeleteResponseResultsFaceRetentionOutcome = "ineligible_no_vendor_user"
	SessionsBatchDeleteResponseResultsFaceRetentionOutcomeFailedRetryable        SessionsBatchDeleteResponseResultsFaceRetentionOutcome = "failed_retryable"
)

Known values of SessionsBatchDeleteResponseResultsFaceRetentionOutcome.

type SessionsBatchDeleteResponseStatus

type SessionsBatchDeleteResponseStatus string

SessionsBatchDeleteResponseStatus: `PENDING`: accepted, not started yet. `PROCESSING`: deleting; `processed` and `outcomes` are updating. `COMPLETED`: every selected session is accounted for. `FAILED`: the job stopped early; see `error`.

SessionsBatchDeleteResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsBatchDeleteResponseStatusPending    SessionsBatchDeleteResponseStatus = "PENDING"
	SessionsBatchDeleteResponseStatusProcessing SessionsBatchDeleteResponseStatus = "PROCESSING"
	SessionsBatchDeleteResponseStatusCompleted  SessionsBatchDeleteResponseStatus = "COMPLETED"
	SessionsBatchDeleteResponseStatusFailed     SessionsBatchDeleteResponseStatus = "FAILED"
)

Known values of SessionsBatchDeleteResponseStatus.

type SessionsBulkUpdateAMLHitStatusParams

type SessionsBulkUpdateAMLHitStatusParams struct {
	// Non-empty list of hit updates. Required.
	HitUpdates []SessionsBulkUpdateAMLHitStatusParamsHitUpdates `json:"hit_updates"`

	// Optional graph node ID. Use it (here or as a query parameter) when the
	// session has multiple AML checks.
	NodeID Opt[string] `json:"node_id"`

	// Workflow graph node ID. Required only when the session has multiple AML
	// checks (one per node); omit it for single-AML sessions.
	NodeIDQuery Opt[string] `json:"-" query:"node_id"`
}

SessionsBulkUpdateAMLHitStatusParams holds the parameters of Client.Sessions.BulkUpdateAMLHitStatus.

func (SessionsBulkUpdateAMLHitStatusParams) MarshalJSON

func (r SessionsBulkUpdateAMLHitStatusParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsBulkUpdateAMLHitStatusParamsHitUpdates

type SessionsBulkUpdateAMLHitStatusParamsHitUpdates struct {
	// Required.
	HitID string `json:"hit_id"`

	// Required.
	ReviewStatus SessionsBulkUpdateAMLHitStatusParamsHitUpdatesReviewStatus `json:"review_status"`
}

SessionsBulkUpdateAMLHitStatusParamsHitUpdates is a request object.

func (SessionsBulkUpdateAMLHitStatusParamsHitUpdates) MarshalJSON

MarshalJSON encodes the fields that are set.

type SessionsBulkUpdateAMLHitStatusParamsHitUpdatesReviewStatus

type SessionsBulkUpdateAMLHitStatusParamsHitUpdatesReviewStatus string

SessionsBulkUpdateAMLHitStatusParamsHitUpdatesReviewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsBulkUpdateAMLHitStatusParamsHitUpdatesReviewStatusUnreviewed     SessionsBulkUpdateAMLHitStatusParamsHitUpdatesReviewStatus = "Unreviewed"
	SessionsBulkUpdateAMLHitStatusParamsHitUpdatesReviewStatusConfirmedMatch SessionsBulkUpdateAMLHitStatusParamsHitUpdatesReviewStatus = "Confirmed Match"
	SessionsBulkUpdateAMLHitStatusParamsHitUpdatesReviewStatusFalsePositive  SessionsBulkUpdateAMLHitStatusParamsHitUpdatesReviewStatus = "False Positive"
	SessionsBulkUpdateAMLHitStatusParamsHitUpdatesReviewStatusInconclusive   SessionsBulkUpdateAMLHitStatusParamsHitUpdatesReviewStatus = "Inconclusive"
)

Known values of SessionsBulkUpdateAMLHitStatusParamsHitUpdatesReviewStatus.

type SessionsBulkUpdateAMLHitStatusResponse

type SessionsBulkUpdateAMLHitStatusResponse struct {
	// `Updated {n} hit(s) successfully`, where `n` is the number of entries in
	// `hit_updates`.
	Message string `json:"message"`

	// The `hit_id` of every entry in `hit_updates`, in request order, including
	// hits whose status did not change.
	UpdatedHits []string `json:"updated_hits"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsBulkUpdateAMLHitStatusResponse is a response object.

func (*SessionsBulkUpdateAMLHitStatusResponse) UnmarshalJSON

func (r *SessionsBulkUpdateAMLHitStatusResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsBulkUpdateAMLHitStatusResponse leniently.

type SessionsCreateParams

type SessionsCreateParams struct {
	// Stable identifier of the workflow that defines which verification steps the
	// session will run. Workflows are created and managed in the
	// [Workflows](/console/workflows) page of the Console. The `workflow_id` also
	// implicitly selects whether the session is KYC or KYB. Required.
	WorkflowID string `json:"workflow_id"`

	// A unique identifier for the user being verified, such as a UUID, email, or
	// internal user ID. This field is used for: (1) **User grouping** - sessions
	// with the same vendor_data are linked to the same user profile in the Users
	// tab. (2) **Cross-session duplicate detection** - when checking for duplicated
	// faces, documents, phone numbers, emails, IP addresses, or device
	// fingerprints, sessions with the same vendor_data are treated as the same user
	// and excluded from matches. Without vendor_data, every session is treated as a
	// unique user and all potential duplicates are surfaced. We strongly recommend
	// always providing a vendor_data to reduce noise in duplicate detection.
	VendorData Opt[string] `json:"vendor_data"`

	// URL to redirect the user to after verification completes. Didit automatically
	// appends `verificationSessionId` and `status` (Approved, Declined, In Review)
	// as query parameters. Custom URL schemes (e.g. `myapp://`) are supported for
	// mobile callbacks. If omitted, the workflow's default `callback_url` is used.
	// When the application has allowed domains (`allowed_domains` on `PATCH
	// /v3/webhook/`), an `http` or `https` callback must be on one of those origins
	// (same scheme, host and port), otherwise the request fails with 400 on
	// `callback`: `callback must be on one of the application's allowed domains:
	// https://app.example.com`. Custom URL schemes are always accepted.
	Callback Opt[string] `json:"callback"`

	// Determines which device should handle the redirect to the provided callback
	// URL. Use `initiator` to redirect only the device that started the flow,
	// `completer` for the device that finishes it, or `both` to allow either device
	// to trigger the callback. If you ever notice the callback not triggering
	// reliably, we recommend setting this value to `both`.
	CallbackMethod Opt[SessionsCreateParamsCallbackMethod] `json:"callback_method"`

	// Arbitrary JSON stored with the session and echoed back in the response and
	// webhooks. Any JSON value is accepted (object, string, number, array), but a
	// JSON object of key/value pairs is recommended. Not shown to the end user. Use
	// it to pass your own correlation ids, A/B variants, or business context.
	Metadata Opt[any] `json:"metadata"`

	// Language code (ISO 639-1) for the verification process interface. Controls
	// the language displayed to the end user during verification. If not provided,
	// the browser's language will be automatically detected and used. Check all the
	// supported languages [here](/integration/supported-languages).
	Language Opt[SessionsCreateParamsLanguage] `json:"language"`

	// User contact information that can be used for notifications, prefilling
	// verification forms, and phone verification. This includes email address,
	// preferred language for communications, and phone number.
	ContactDetails Opt[SessionsCreateParamsContactDetails] `json:"contact_details"`

	// Expected user details used to cross-validate against the data extracted from
	// the user's ID document, Proof of Address, and other verification steps.
	// Mismatches are surfaced as warnings on the decision; some fields (e.g.
	// `id_country`, `expected_document_types`) also alter the user-facing flow. For
	// Business Verification (KYB) workflows only the business fields
	// (`company_name`, `registry_country`, `registration_number`) are used - they
	// pre-fill the company registry search for the user - and all person-level
	// fields are ignored.
	ExpectedDetails Opt[SessionsCreateParamsExpectedDetails] `json:"expected_details"`

	// Base64-encoded portrait image of the end user's face (max 2MB; JPEG, PNG,
	// WebP, or TIFF). Used as the reference image to match against the liveness
	// capture when the workflow is a `Biometric Authentication` workflow with Face
	// Match enabled, or any graph workflow where Face Match runs before ID
	// Verification (OCR). Optional when the `vendor_data` user already has a stored
	// face image: Didit reuses it automatically, resolved in priority order:
	// approved liveness face, ePassport chip photo, ID document portrait, manually
	// enrolled profile face (only faces from approved sessions or faces you
	// enrolled yourself are reused). When provided, `portrait_image` always takes
	// precedence over the stored face. If omitted and no stored face exists (or
	// `vendor_data` is not sent), session creation fails with `400`. Ignored for
	// other workflow types.
	PortraitImage Opt[string] `json:"portrait_image"`

	// Sandbox-only scenario slug. Only accepted when the API key belongs to a
	// sandbox-mode application; rejected on live applications. When set, the create
	// flow expands the scenario's bundled magic values onto the session's input
	// fields (contact_details, expected_details) so the mocked providers reproduce
	// the scenario's outcome through the real workflow pipeline. See the scenario
	// catalog at GET /v1/sandbox/scenarios/ or [Sandbox & Test
	// Data](/integration/sandbox-testing). You can also arm (or re-arm) a scenario
	// after create via POST /v3/session/{sessionId}/sandbox/arm/, as long as the
	// session is still `Not Started`. For non-doc lookup, use
	// `lookup_partial_match`, `lookup_no_match`, or `lookup_provider_error` to test
	// the configured attempt budget and fallback. For identity wallets, use
	// `wallet_cancelled`, `wallet_timeout`, or `wallet_provider_error`; `approve`
	// simulates a verified wallet. All catalog wallets can be tested in sandbox,
	// including schemes unavailable on live applications. Simulated attempts are
	// not charged.
	SandboxScenario Opt[string] `json:"sandbox_scenario"`

	// Electronic Signature input for this session. `documents` are the documents to
	// sign, for a workflow whose Electronic Signature step takes documents from the
	// session (`signature_documents_source` `session` or `both`): up to 20
	// documents and 50 MB in total. `field_values` fills the fields whose `prefill`
	// is `api.<key>`, on workflow and session documents alike. Creating a session
	// again for the same `workflow_id` and `vendor_data` returns the pending
	// session; if that call sends `sign`, its documents, fields and values must be
	// identical to the first ones, and anything different returns `400` with
	// `{"sign": "signature_document_changed"}`. See [Electronic signature
	// documents](/sessions-api/create-session#electronic-signature-documents).
	Sign Opt[SessionsCreateParamsSign] `json:"sign"`
}

SessionsCreateParams holds the parameters of Client.Sessions.Create.

func (SessionsCreateParams) MarshalJSON

func (r SessionsCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsCreateParamsCallbackMethod

type SessionsCreateParamsCallbackMethod string

SessionsCreateParamsCallbackMethod: Determines which device should handle the redirect to the provided callback URL. Use `initiator` to redirect only the device that started the flow, `completer` for the device that finishes it, or `both` to allow either device to trigger the callback. If you ever notice the callback not triggering reliably, we recommend setting this value to `both`.

SessionsCreateParamsCallbackMethod is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsCreateParamsCallbackMethodInitiator SessionsCreateParamsCallbackMethod = "initiator"
	SessionsCreateParamsCallbackMethodCompleter SessionsCreateParamsCallbackMethod = "completer"
	SessionsCreateParamsCallbackMethodBoth      SessionsCreateParamsCallbackMethod = "both"
)

Known values of SessionsCreateParamsCallbackMethod.

type SessionsCreateParamsContactDetails

type SessionsCreateParamsContactDetails struct {
	// Email address of the user (e.g., "john.doe@example.com") that will be used
	// during the [Email Verification](/core-technology/email-verification/overview)
	// step. If not provided, the user must provide it during the verification flow.
	Email Opt[string] `json:"email"`

	// If true and an email is provided, Didit sends the initial "Verify your
	// identity" email asynchronously when the User Verification (KYC) or Business
	// Verification (KYB) session is created. Didit also sends verification status
	// notifications for sessions requiring manual review to the provided email
	// address (e.g., from 'In Review' to 'Approved' or 'Declined'). This helps
	// users return to your application once their verification is complete. If you
	// have white-label activated for the session, the email sent will be
	// white-labeled.
	SendNotificationEmails Opt[bool] `json:"send_notification_emails"`

	// Language code (ISO 639-1) for email notifications. Controls the language of
	// all email communications (e.g., "en", "es", "fr"). There is no stored default
	// - when omitted, the verification invite email simply falls back to English
	// (`en`) at send time. The enum below is a snapshot; the live source of truth
	// for accepted values is the [supported
	// languages](/integration/supported-languages) doc - always consult it before
	// relying on a specific code.
	EmailLang Opt[SessionsCreateParamsContactDetailsEmailLang] `json:"email_lang"`

	// Phone number in E.164 format (e.g., "+14155552671") that will be used during
	// the [Phone Verification](/core-technology/phone-verification/overview) step.
	// If not provided, the user must provide it during the verification flow.
	// Ignored for Business Verification (KYB) workflows. **Important:** This phone
	// number is only enforced if it is a valid E.164 phone number. If the provided
	// number is invalid or cannot be parsed, it will be ignored and the user will
	// be able to input any valid phone number during the Phone Verification step.
	Phone Opt[string] `json:"phone"`
}

SessionsCreateParamsContactDetails: User contact information that can be used for notifications, prefilling verification forms, and phone verification. This includes email address, preferred language for communications, and phone number.

func (SessionsCreateParamsContactDetails) MarshalJSON

func (r SessionsCreateParamsContactDetails) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsCreateParamsContactDetailsEmailLang

type SessionsCreateParamsContactDetailsEmailLang string

SessionsCreateParamsContactDetailsEmailLang: Language code (ISO 639-1) for email notifications. Controls the language of all email communications (e.g., "en", "es", "fr"). There is no stored default - when omitted, the verification invite email simply falls back to English (`en`) at send time. The enum below is a snapshot; the live source of truth for accepted values is the [supported languages](/integration/supported-languages) doc - always consult it before relying on a specific code.

SessionsCreateParamsContactDetailsEmailLang is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsCreateParamsContactDetailsEmailLangEn   SessionsCreateParamsContactDetailsEmailLang = "en"
	SessionsCreateParamsContactDetailsEmailLangAr   SessionsCreateParamsContactDetailsEmailLang = "ar"
	SessionsCreateParamsContactDetailsEmailLangBg   SessionsCreateParamsContactDetailsEmailLang = "bg"
	SessionsCreateParamsContactDetailsEmailLangBn   SessionsCreateParamsContactDetailsEmailLang = "bn"
	SessionsCreateParamsContactDetailsEmailLangBs   SessionsCreateParamsContactDetailsEmailLang = "bs"
	SessionsCreateParamsContactDetailsEmailLangCa   SessionsCreateParamsContactDetailsEmailLang = "ca"
	SessionsCreateParamsContactDetailsEmailLangCnr  SessionsCreateParamsContactDetailsEmailLang = "cnr"
	SessionsCreateParamsContactDetailsEmailLangCs   SessionsCreateParamsContactDetailsEmailLang = "cs"
	SessionsCreateParamsContactDetailsEmailLangDa   SessionsCreateParamsContactDetailsEmailLang = "da"
	SessionsCreateParamsContactDetailsEmailLangDe   SessionsCreateParamsContactDetailsEmailLang = "de"
	SessionsCreateParamsContactDetailsEmailLangEl   SessionsCreateParamsContactDetailsEmailLang = "el"
	SessionsCreateParamsContactDetailsEmailLangEs   SessionsCreateParamsContactDetailsEmailLang = "es"
	SessionsCreateParamsContactDetailsEmailLangEt   SessionsCreateParamsContactDetailsEmailLang = "et"
	SessionsCreateParamsContactDetailsEmailLangFa   SessionsCreateParamsContactDetailsEmailLang = "fa"
	SessionsCreateParamsContactDetailsEmailLangFi   SessionsCreateParamsContactDetailsEmailLang = "fi"
	SessionsCreateParamsContactDetailsEmailLangFr   SessionsCreateParamsContactDetailsEmailLang = "fr"
	SessionsCreateParamsContactDetailsEmailLangHe   SessionsCreateParamsContactDetailsEmailLang = "he"
	SessionsCreateParamsContactDetailsEmailLangHi   SessionsCreateParamsContactDetailsEmailLang = "hi"
	SessionsCreateParamsContactDetailsEmailLangHr   SessionsCreateParamsContactDetailsEmailLang = "hr"
	SessionsCreateParamsContactDetailsEmailLangHu   SessionsCreateParamsContactDetailsEmailLang = "hu"
	SessionsCreateParamsContactDetailsEmailLangHy   SessionsCreateParamsContactDetailsEmailLang = "hy"
	SessionsCreateParamsContactDetailsEmailLangID   SessionsCreateParamsContactDetailsEmailLang = "id"
	SessionsCreateParamsContactDetailsEmailLangIt   SessionsCreateParamsContactDetailsEmailLang = "it"
	SessionsCreateParamsContactDetailsEmailLangJa   SessionsCreateParamsContactDetailsEmailLang = "ja"
	SessionsCreateParamsContactDetailsEmailLangKa   SessionsCreateParamsContactDetailsEmailLang = "ka"
	SessionsCreateParamsContactDetailsEmailLangKk   SessionsCreateParamsContactDetailsEmailLang = "kk"
	SessionsCreateParamsContactDetailsEmailLangKo   SessionsCreateParamsContactDetailsEmailLang = "ko"
	SessionsCreateParamsContactDetailsEmailLangKy   SessionsCreateParamsContactDetailsEmailLang = "ky"
	SessionsCreateParamsContactDetailsEmailLangLt   SessionsCreateParamsContactDetailsEmailLang = "lt"
	SessionsCreateParamsContactDetailsEmailLangLv   SessionsCreateParamsContactDetailsEmailLang = "lv"
	SessionsCreateParamsContactDetailsEmailLangMk   SessionsCreateParamsContactDetailsEmailLang = "mk"
	SessionsCreateParamsContactDetailsEmailLangMn   SessionsCreateParamsContactDetailsEmailLang = "mn"
	SessionsCreateParamsContactDetailsEmailLangMs   SessionsCreateParamsContactDetailsEmailLang = "ms"
	SessionsCreateParamsContactDetailsEmailLangNl   SessionsCreateParamsContactDetailsEmailLang = "nl"
	SessionsCreateParamsContactDetailsEmailLangNo   SessionsCreateParamsContactDetailsEmailLang = "no"
	SessionsCreateParamsContactDetailsEmailLangPl   SessionsCreateParamsContactDetailsEmailLang = "pl"
	SessionsCreateParamsContactDetailsEmailLangPtBr SessionsCreateParamsContactDetailsEmailLang = "pt-BR"
	SessionsCreateParamsContactDetailsEmailLangPt   SessionsCreateParamsContactDetailsEmailLang = "pt"
	SessionsCreateParamsContactDetailsEmailLangRo   SessionsCreateParamsContactDetailsEmailLang = "ro"
	SessionsCreateParamsContactDetailsEmailLangRu   SessionsCreateParamsContactDetailsEmailLang = "ru"
	SessionsCreateParamsContactDetailsEmailLangSk   SessionsCreateParamsContactDetailsEmailLang = "sk"
	SessionsCreateParamsContactDetailsEmailLangSl   SessionsCreateParamsContactDetailsEmailLang = "sl"
	SessionsCreateParamsContactDetailsEmailLangSo   SessionsCreateParamsContactDetailsEmailLang = "so"
	SessionsCreateParamsContactDetailsEmailLangSq   SessionsCreateParamsContactDetailsEmailLang = "sq"
	SessionsCreateParamsContactDetailsEmailLangSr   SessionsCreateParamsContactDetailsEmailLang = "sr"
	SessionsCreateParamsContactDetailsEmailLangSv   SessionsCreateParamsContactDetailsEmailLang = "sv"
	SessionsCreateParamsContactDetailsEmailLangTh   SessionsCreateParamsContactDetailsEmailLang = "th"
	SessionsCreateParamsContactDetailsEmailLangTr   SessionsCreateParamsContactDetailsEmailLang = "tr"
	SessionsCreateParamsContactDetailsEmailLangUk   SessionsCreateParamsContactDetailsEmailLang = "uk"
	SessionsCreateParamsContactDetailsEmailLangUz   SessionsCreateParamsContactDetailsEmailLang = "uz"
	SessionsCreateParamsContactDetailsEmailLangVi   SessionsCreateParamsContactDetailsEmailLang = "vi"
	SessionsCreateParamsContactDetailsEmailLangZhCn SessionsCreateParamsContactDetailsEmailLang = "zh-CN"
	SessionsCreateParamsContactDetailsEmailLangZhTw SessionsCreateParamsContactDetailsEmailLang = "zh-TW"
	SessionsCreateParamsContactDetailsEmailLangZh   SessionsCreateParamsContactDetailsEmailLang = "zh"
)

Known values of SessionsCreateParamsContactDetailsEmailLang.

type SessionsCreateParamsExpectedDetails

type SessionsCreateParamsExpectedDetails struct {
	// User's first name. For example, `John`. The matching uses fuzzy comparison,
	// and you can tune the strictness by configuring the name match score threshold
	// in the Console for both ID Document and Proof of Address workflows.
	FirstName Opt[string] `json:"first_name"`

	// User's last name. For example, `Doe`. The matching uses fuzzy comparison, and
	// you can tune the strictness by configuring the name match score threshold in
	// the Console for both ID Document and Proof of Address workflows.
	LastName Opt[string] `json:"last_name"`

	// User's date of birth with format: YYYY-MM-DD. For example, `1990-05-15`.
	DateOfBirth Opt[string] `json:"date_of_birth"`

	// User's gender. Must be either 'M', 'F', or null.
	Gender Opt[SessionsCreateParamsExpectedDetailsGender] `json:"gender"`

	// ISO 3166-1 alpha-3 country code representing the applicant's country of
	// origin. For example, `USA`. See the [full list of supported country
	// codes](https://docs.didit.me/core-technology/id-verification/supported-documents-id-verification#supported-documents-by-country).
	Nationality Opt[string] `json:"nationality"`

	// ISO 3166-1 alpha-3 country code used as a fallback for both ID Verification
	// and Proof of Address country-mismatch checks. Required when `address` is
	// provided and neither `id_country` nor `poa_country` is set.
	Country Opt[string] `json:"country"`

	// ISO 3166-1 alpha-3 country code representing the expected country of the
	// applicant's ID document, which may differ from nationality. For example,
	// `GBR`. Takes priority over `country` for ID verification country mismatch
	// checks. See the [full list of supported country
	// codes](https://docs.didit.me/core-technology/id-verification/supported-documents-id-verification#supported-documents-by-country).
	IDCountry Opt[string] `json:"id_country"`

	// ISO 3166-1 alpha-3 country code representing the expected country of the
	// Proof of Address document. For example, `USA`. Takes priority over `country`
	// for POA country mismatch checks. See the [full list of supported country
	// codes](https://docs.didit.me/core-technology/id-verification/supported-documents-id-verification#supported-documents-by-country).
	POACountry Opt[string] `json:"poa_country"`

	// The address in a human readable format, including as much information as
	// possible. For example, `123 Main St, San Francisco, CA 94105, USA`. When
	// provided, you must also pass `country` or `poa_country`, otherwise the
	// request fails with `400`.
	Address Opt[string] `json:"address"`

	// The user's document number, personal number, or tax number. For example,
	// `123456789`.
	IdentificationNumber Opt[string] `json:"identification_number"`

	// Expected IP address for the session, in IPv4 or IPv6 format. If the actual IP
	// address differs from this value, a warning will be logged. For example,
	// `192.168.1.100` or `2001:db8::1`.
	IPAddress Opt[string] `json:"ip_address"`

	// Restricts the document types the user can present during the ID verification
	// (OCR) step. When set, the document selection screen only shows the requested
	// types and the returned `documents_allowed` is filtered accordingly. Values
	// are case-insensitive and deduplicated; unknown values are rejected with
	// `400`. Allowed codes: `P` (passport), `ID` (national ID), `DL` (driver's
	// license), `RP` (residence permit), `HIC` (health insurance card), `TC` (tax
	// card), `SSC` (social security card).
	ExpectedDocumentTypes Opt[[]SessionsCreateParamsExpectedDetailsExpectedDocumentTypes] `json:"expected_document_types"`

	// Expected legal name of the business being verified. For example, `Tesco PLC`.
	// Pre-fills the company-name field of the registry search in Business
	// Verification (KYB) workflows; when `registration_number` is also provided,
	// the registry lookup combines both identifiers. Ignored for KYC workflows.
	CompanyName Opt[string] `json:"company_name"`

	// ISO 3166-1 alpha-2 code of the country whose company registry the business is
	// registered in. For example, `GB`. Where company registries operate at state
	// or province level, append the ISO 3166-2 subdivision code as `XX-YY`: `US-CA`
	// targets the California registry. Same format as `country_code` on the [KYB
	// Registry Search
	// API](https://docs.didit.me/standalone-apis/kyb-registry-search). Pre-selects
	// the registry country in Business Verification (KYB) workflows; ignored for
	// KYC workflows.
	RegistryCountry Opt[string] `json:"registry_country"`

	// Expected registration number of the business in the company registry. For
	// example, `00445790`. Pre-fills the registration-number field of the registry
	// search in Business Verification (KYB) workflows; when `company_name` is also
	// provided, the registry lookup combines both identifiers. Ignored for KYC
	// workflows.
	RegistrationNumber Opt[string] `json:"registration_number"`
}

SessionsCreateParamsExpectedDetails: Expected user details used to cross-validate against the data extracted from the user's ID document, Proof of Address, and other verification steps. Mismatches are surfaced as warnings on the decision; some fields (e.g. `id_country`, `expected_document_types`) also alter the user-facing flow. For Business Verification (KYB) workflows only the business fields (`company_name`, `registry_country`, `registration_number`) are used - they pre-fill the company registry search for the user - and all person-level fields are ignored.

func (SessionsCreateParamsExpectedDetails) MarshalJSON

func (r SessionsCreateParamsExpectedDetails) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsCreateParamsExpectedDetailsExpectedDocumentTypes

type SessionsCreateParamsExpectedDetailsExpectedDocumentTypes string

SessionsCreateParamsExpectedDetailsExpectedDocumentTypes is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsCreateParamsExpectedDetailsExpectedDocumentTypesP   SessionsCreateParamsExpectedDetailsExpectedDocumentTypes = "P"
	SessionsCreateParamsExpectedDetailsExpectedDocumentTypesID  SessionsCreateParamsExpectedDetailsExpectedDocumentTypes = "ID"
	SessionsCreateParamsExpectedDetailsExpectedDocumentTypesDl  SessionsCreateParamsExpectedDetailsExpectedDocumentTypes = "DL"
	SessionsCreateParamsExpectedDetailsExpectedDocumentTypesRp  SessionsCreateParamsExpectedDetailsExpectedDocumentTypes = "RP"
	SessionsCreateParamsExpectedDetailsExpectedDocumentTypesHic SessionsCreateParamsExpectedDetailsExpectedDocumentTypes = "HIC"
	SessionsCreateParamsExpectedDetailsExpectedDocumentTypesTc  SessionsCreateParamsExpectedDetailsExpectedDocumentTypes = "TC"
	SessionsCreateParamsExpectedDetailsExpectedDocumentTypesSsc SessionsCreateParamsExpectedDetailsExpectedDocumentTypes = "SSC"
)

Known values of SessionsCreateParamsExpectedDetailsExpectedDocumentTypes.

type SessionsCreateParamsExpectedDetailsGender

type SessionsCreateParamsExpectedDetailsGender string

SessionsCreateParamsExpectedDetailsGender: User's gender. Must be either 'M', 'F', or null.

SessionsCreateParamsExpectedDetailsGender is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsCreateParamsExpectedDetailsGenderM SessionsCreateParamsExpectedDetailsGender = "M"
	SessionsCreateParamsExpectedDetailsGenderF SessionsCreateParamsExpectedDetailsGender = "F"
)

Known values of SessionsCreateParamsExpectedDetailsGender.

type SessionsCreateParamsLanguage

type SessionsCreateParamsLanguage string

SessionsCreateParamsLanguage: Language code (ISO 639-1) for the verification process interface. Controls the language displayed to the end user during verification. If not provided, the browser's language will be automatically detected and used. Check all the supported languages [here](/integration/supported-languages).

SessionsCreateParamsLanguage is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsCreateParamsLanguageEn   SessionsCreateParamsLanguage = "en"
	SessionsCreateParamsLanguageAr   SessionsCreateParamsLanguage = "ar"
	SessionsCreateParamsLanguageBg   SessionsCreateParamsLanguage = "bg"
	SessionsCreateParamsLanguageBn   SessionsCreateParamsLanguage = "bn"
	SessionsCreateParamsLanguageBs   SessionsCreateParamsLanguage = "bs"
	SessionsCreateParamsLanguageCa   SessionsCreateParamsLanguage = "ca"
	SessionsCreateParamsLanguageCnr  SessionsCreateParamsLanguage = "cnr"
	SessionsCreateParamsLanguageCs   SessionsCreateParamsLanguage = "cs"
	SessionsCreateParamsLanguageDa   SessionsCreateParamsLanguage = "da"
	SessionsCreateParamsLanguageDe   SessionsCreateParamsLanguage = "de"
	SessionsCreateParamsLanguageEl   SessionsCreateParamsLanguage = "el"
	SessionsCreateParamsLanguageEs   SessionsCreateParamsLanguage = "es"
	SessionsCreateParamsLanguageEt   SessionsCreateParamsLanguage = "et"
	SessionsCreateParamsLanguageFa   SessionsCreateParamsLanguage = "fa"
	SessionsCreateParamsLanguageFi   SessionsCreateParamsLanguage = "fi"
	SessionsCreateParamsLanguageFr   SessionsCreateParamsLanguage = "fr"
	SessionsCreateParamsLanguageHe   SessionsCreateParamsLanguage = "he"
	SessionsCreateParamsLanguageHi   SessionsCreateParamsLanguage = "hi"
	SessionsCreateParamsLanguageHr   SessionsCreateParamsLanguage = "hr"
	SessionsCreateParamsLanguageHu   SessionsCreateParamsLanguage = "hu"
	SessionsCreateParamsLanguageHy   SessionsCreateParamsLanguage = "hy"
	SessionsCreateParamsLanguageID   SessionsCreateParamsLanguage = "id"
	SessionsCreateParamsLanguageIt   SessionsCreateParamsLanguage = "it"
	SessionsCreateParamsLanguageJa   SessionsCreateParamsLanguage = "ja"
	SessionsCreateParamsLanguageKa   SessionsCreateParamsLanguage = "ka"
	SessionsCreateParamsLanguageKk   SessionsCreateParamsLanguage = "kk"
	SessionsCreateParamsLanguageKo   SessionsCreateParamsLanguage = "ko"
	SessionsCreateParamsLanguageKy   SessionsCreateParamsLanguage = "ky"
	SessionsCreateParamsLanguageLt   SessionsCreateParamsLanguage = "lt"
	SessionsCreateParamsLanguageLv   SessionsCreateParamsLanguage = "lv"
	SessionsCreateParamsLanguageMk   SessionsCreateParamsLanguage = "mk"
	SessionsCreateParamsLanguageMn   SessionsCreateParamsLanguage = "mn"
	SessionsCreateParamsLanguageMs   SessionsCreateParamsLanguage = "ms"
	SessionsCreateParamsLanguageNl   SessionsCreateParamsLanguage = "nl"
	SessionsCreateParamsLanguageNo   SessionsCreateParamsLanguage = "no"
	SessionsCreateParamsLanguagePl   SessionsCreateParamsLanguage = "pl"
	SessionsCreateParamsLanguagePtBr SessionsCreateParamsLanguage = "pt-BR"
	SessionsCreateParamsLanguagePt   SessionsCreateParamsLanguage = "pt"
	SessionsCreateParamsLanguageRo   SessionsCreateParamsLanguage = "ro"
	SessionsCreateParamsLanguageRu   SessionsCreateParamsLanguage = "ru"
	SessionsCreateParamsLanguageSk   SessionsCreateParamsLanguage = "sk"
	SessionsCreateParamsLanguageSl   SessionsCreateParamsLanguage = "sl"
	SessionsCreateParamsLanguageSo   SessionsCreateParamsLanguage = "so"
	SessionsCreateParamsLanguageSq   SessionsCreateParamsLanguage = "sq"
	SessionsCreateParamsLanguageSr   SessionsCreateParamsLanguage = "sr"
	SessionsCreateParamsLanguageSv   SessionsCreateParamsLanguage = "sv"
	SessionsCreateParamsLanguageTh   SessionsCreateParamsLanguage = "th"
	SessionsCreateParamsLanguageTr   SessionsCreateParamsLanguage = "tr"
	SessionsCreateParamsLanguageUk   SessionsCreateParamsLanguage = "uk"
	SessionsCreateParamsLanguageUz   SessionsCreateParamsLanguage = "uz"
	SessionsCreateParamsLanguageVi   SessionsCreateParamsLanguage = "vi"
	SessionsCreateParamsLanguageZhCn SessionsCreateParamsLanguage = "zh-CN"
	SessionsCreateParamsLanguageZhTw SessionsCreateParamsLanguage = "zh-TW"
	SessionsCreateParamsLanguageZh   SessionsCreateParamsLanguage = "zh"
)

Known values of SessionsCreateParamsLanguage.

type SessionsCreateParamsSign

type SessionsCreateParamsSign struct {
	Documents Opt[[]SessionSignDocument] `json:"documents"`

	// Values keyed by the `<key>` of each `api.<key>` pre-fill source: strings of 1
	// to 500 characters for `text` and `data` fields, booleans for a `checkbox`.
	// `400` with `field_value_unknown` for a key no field uses,
	// `field_value_missing` for a required field without its value, and
	// `field_value_invalid` for a value that fails its field's validation.
	FieldValues Opt[map[string]any] `json:"field_values"`
}

SessionsCreateParamsSign: Electronic Signature input for this session. `documents` are the documents to sign, for a workflow whose Electronic Signature step takes documents from the session (`signature_documents_source` `session` or `both`): up to 20 documents and 50 MB in total. `field_values` fills the fields whose `prefill` is `api.<key>`, on workflow and session documents alike. Creating a session again for the same `workflow_id` and `vendor_data` returns the pending session; if that call sends `sign`, its documents, fields and values must be identical to the first ones, and anything different returns `400` with `{"sign": "signature_document_changed"}`. See [Electronic signature documents](/sessions-api/create-session#electronic-signature-documents).

func (SessionsCreateParamsSign) MarshalJSON

func (r SessionsCreateParamsSign) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsCreateResponse

type SessionsCreateResponse struct {
	// Unique identifier of the verification session. Use this id when calling `GET
	// /v3/session/{sessionId}/decision/`.
	SessionID string `json:"session_id"`

	// Sequential, human-friendly number assigned to the session inside your
	// application. Useful for support and dashboards.
	SessionNumber int64 `json:"session_number"`

	// 12-character URL-safe token that authorizes the end user to access the hosted
	// verification flow at `url`. Valid until the session expires. Treat it as a
	// secret - anyone holding it can open the verification flow for this session.
	SessionToken string `json:"session_token"`

	// Hosted verification URL to redirect the end user to. The URL embeds the
	// `session_token` and, if configured, uses your white-label domain. When the
	// request includes `language`, the URL contains a language path segment -
	// `https://verify.didit.me/{language}/session/{session_token}` (e.g.
	// `/es/session/...`); without `language`, the segment is omitted.
	URL string `json:"url"`

	// Identifier you passed in the request to link the session to a user or
	// business in your own system. Echoed back verbatim. Null when not provided.
	VendorData string `json:"vendor_data"`

	// Arbitrary JSON payload you stored with the session at creation time. Echoed
	// back verbatim - whatever JSON value you sent (object, string, number, array)
	// is returned as-is, though a JSON object is recommended. Not shown to the end
	// user. Always present in responses; `null` when not provided at creation time.
	Metadata any `json:"metadata"`

	// Current status of the session. Newly created sessions return `Not Started`.
	// If a non-finished session already existed for the same `vendor_data` on the
	// workflow's latest published version, the returned status reflects that
	// existing session.
	Status SessionsCreateResponseStatus `json:"status"`

	// Final redirect URL the user is sent to after completing the flow. Didit
	// appends `?verificationSessionId={session_id}&status={status}` to this URL.
	// Falls back to the workflow's configured callback URL when not provided in the
	// request; `null` when neither is set. When the application has allowed domains
	// and this URL is a web URL outside them (for example a workflow default set
	// before the list changed), the hosted flow does not redirect the user to it.
	Callback string `json:"callback"`

	// Stable identifier of the workflow this session runs on. Always the workflow's
	// stable group identifier - even if you referenced a specific workflow version
	// UUID in the request (backward-compatible lookup), the response carries the
	// stable `workflow_id`. Use it to correlate the session with the workflow you
	// configured in the Console.
	WorkflowID string `json:"workflow_id"`

	// Version number of the published workflow version the session was pinned to at
	// creation. Didit resolves `workflow_id` to the workflow's latest published
	// version when the session is created, and the session keeps running that
	// version even if the workflow is republished later.
	WorkflowVersion int64 `json:"workflow_version"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsCreateResponse is a response object.

func (*SessionsCreateResponse) UnmarshalJSON

func (r *SessionsCreateResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsCreateResponse leniently.

type SessionsCreateResponseStatus

type SessionsCreateResponseStatus string

SessionsCreateResponseStatus: Current status of the session. Newly created sessions return `Not Started`. If a non-finished session already existed for the same `vendor_data` on the workflow's latest published version, the returned status reflects that existing session.

SessionsCreateResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsCreateResponseStatusNotStarted   SessionsCreateResponseStatus = "Not Started"
	SessionsCreateResponseStatusInProgress   SessionsCreateResponseStatus = "In Progress"
	SessionsCreateResponseStatusApproved     SessionsCreateResponseStatus = "Approved"
	SessionsCreateResponseStatusDeclined     SessionsCreateResponseStatus = "Declined"
	SessionsCreateResponseStatusInReview     SessionsCreateResponseStatus = "In Review"
	SessionsCreateResponseStatusExpired      SessionsCreateResponseStatus = "Expired"
	SessionsCreateResponseStatusAbandoned    SessionsCreateResponseStatus = "Abandoned"
	SessionsCreateResponseStatusKYCExpired   SessionsCreateResponseStatus = "Kyc Expired"
	SessionsCreateResponseStatusResubmitted  SessionsCreateResponseStatus = "Resubmitted"
	SessionsCreateResponseStatusAwaitingUser SessionsCreateResponseStatus = "Awaiting User"
)

Known values of SessionsCreateResponseStatus.

type SessionsDeleteParams

type SessionsDeleteParams struct {
	// Override the application's `face_retention_policy` for this deletion. `true`
	// keeps one image-free face biometric template anchored to the session's User
	// after the session is deleted; `false` deletes the face embedding with the
	// session; omit or `null` to follow the application policy. Ignored for KYB
	// sessions and for sessions without a face embedding.
	RetainFaceEmbeddings Opt[bool] `json:"retain_face_embeddings"`

	// Finite retention duration, in days, for a retained template. Required when a
	// template is retained unless the application already sets
	// `face_retention_days`. The template's `expires_at` is the earliest of this
	// duration, the application's general data-retention window, and
	// `face_retention_deadline`.
	FaceRetentionDays Opt[int64] `json:"face_retention_days"`

	// Optional hard expiry for a retained template. Must be in the future.
	FaceRetentionDeadline Opt[time.Time] `json:"face_retention_deadline"`

	// The class of instruction you are giving. `operational_session_delete` deletes
	// the session and retains a template only when the policy or
	// `retain_face_embeddings` says so. `privacy_erasure` purges every retained
	// biometric template anchored to the session's User before deleting the
	// session, cannot be overridden by the application policy, and cannot be
	// combined with `retain_face_embeddings: true` (`400`).
	DeletionInstruction Opt[SessionsDeleteParamsDeletionInstruction] `json:"deletion_instruction"`

	// Your durable reference for this deletion instruction (for example an
	// erasure-ticket id). Recorded on the audit trail and on any retained template.
	// Generated by Didit when omitted.
	InstructionID Opt[string] `json:"instruction_id"`
}

SessionsDeleteParams holds the parameters of Client.Sessions.Delete.

func (SessionsDeleteParams) MarshalJSON

func (r SessionsDeleteParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsDeleteParamsDeletionInstruction

type SessionsDeleteParamsDeletionInstruction string

SessionsDeleteParamsDeletionInstruction: The class of instruction you are giving. `operational_session_delete` deletes the session and retains a template only when the policy or `retain_face_embeddings` says so. `privacy_erasure` purges every retained biometric template anchored to the session's User before deleting the session, cannot be overridden by the application policy, and cannot be combined with `retain_face_embeddings: true` (`400`).

SessionsDeleteParamsDeletionInstruction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsDeleteParamsDeletionInstructionOperationalSessionDelete SessionsDeleteParamsDeletionInstruction = "operational_session_delete"
	SessionsDeleteParamsDeletionInstructionPrivacyErasure           SessionsDeleteParamsDeletionInstruction = "privacy_erasure"
)

Known values of SessionsDeleteParamsDeletionInstruction.

type SessionsDeleteResponse

type SessionsDeleteResponse struct {
	// The deleted session.
	SessionID string `json:"session_id"`

	// The deleted session's number.
	SessionNumber int64 `json:"session_number"`

	// What happened to the session's face biometric data. `deleted`: the face
	// embedding was deleted with the session (default). `retained_with_user`: the
	// session is deleted and one image-free biometric template stays anchored to
	// the User; see `biometric_template_uuid`. `none`: the session had no face
	// embedding (for example a KYB session, or a KYC session without a liveness
	// selfie). `ineligible_no_vendor_user`: retention was requested but the session
	// has no linked User, so the embedding was deleted with the session. A
	// biometric-store failure is never reported through this field on this
	// endpoint: it returns `503` and the session is not deleted.
	FaceRetentionOutcome SessionsDeleteResponseFaceRetentionOutcome `json:"face_retention_outcome"`

	// Id of the retained biometric template when `face_retention_outcome` is
	// `retained_with_user`; `null` otherwise. Manage it through
	// `/v3/biometric-templates/{template_uuid}/`.
	BiometricTemplateUUID string `json:"biometric_template_uuid"`

	// When the retained biometric template is deleted, when
	// `face_retention_outcome` is `retained_with_user`; `null` when no template is
	// retained.
	BiometricTemplateExpiresAt time.Time `json:"biometric_template_expires_at"`

	// For a Business Verification (KYB) session: how many verifications it created
	// (its key people's KYC sessions and its corporate owners' KYB sessions,
	// recursively) were deleted with it. Always `0` for a KYC session.
	DeletedChildVerifications int64 `json:"deleted_child_verifications"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsDeleteResponse is a response object.

func (*SessionsDeleteResponse) UnmarshalJSON

func (r *SessionsDeleteResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsDeleteResponse leniently.

type SessionsDeleteResponseFaceRetentionOutcome

type SessionsDeleteResponseFaceRetentionOutcome string

SessionsDeleteResponseFaceRetentionOutcome: What happened to the session's face biometric data. `deleted`: the face embedding was deleted with the session (default). `retained_with_user`: the session is deleted and one image-free biometric template stays anchored to the User; see `biometric_template_uuid`. `none`: the session had no face embedding (for example a KYB session, or a KYC session without a liveness selfie). `ineligible_no_vendor_user`: retention was requested but the session has no linked User, so the embedding was deleted with the session. A biometric-store failure is never reported through this field on this endpoint: it returns `503` and the session is not deleted.

SessionsDeleteResponseFaceRetentionOutcome is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsDeleteResponseFaceRetentionOutcomeRetainedWithUser       SessionsDeleteResponseFaceRetentionOutcome = "retained_with_user"
	SessionsDeleteResponseFaceRetentionOutcomeDeleted                SessionsDeleteResponseFaceRetentionOutcome = "deleted"
	SessionsDeleteResponseFaceRetentionOutcomeNone                   SessionsDeleteResponseFaceRetentionOutcome = "none"
	SessionsDeleteResponseFaceRetentionOutcomeIneligibleNoVendorUser SessionsDeleteResponseFaceRetentionOutcome = "ineligible_no_vendor_user"
)

Known values of SessionsDeleteResponseFaceRetentionOutcome.

type SessionsExportAMLScreeningHistoryParams

type SessionsExportAMLScreeningHistoryParams struct {
	// Workflow graph node ID of the AML check. Needed only when the session ran
	// more than one AML step; without it the most recent AML check is used. An
	// unknown node returns `404`.
	NodeID Opt[string] `json:"-" query:"node_id"`
}

SessionsExportAMLScreeningHistoryParams holds the parameters of Client.Sessions.ExportAMLScreeningHistory.

func (SessionsExportAMLScreeningHistoryParams) MarshalJSON

func (r SessionsExportAMLScreeningHistoryParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsImportSharedParams

type SessionsImportSharedParams struct {
	// JWT share token issued by [`POST
	// /v3/session/{sessionId}/share/`](/sessions-api/share-session). Required.
	ShareToken string `json:"share_token"`

	// If `true`, the cloned session keeps the source's final `status`. If `false`,
	// it is forced into `In Review`. Required.
	TrustReview bool `json:"trust_review"`

	// UUID of a workflow in the calling application. Cross-application IDs are
	// rejected with `404`. Required.
	WorkflowID string `json:"workflow_id"`

	// Optional override for the cloned session's `vendor_data`.
	VendorData Opt[string] `json:"vendor_data"`
}

SessionsImportSharedParams holds the parameters of Client.Sessions.ImportShared.

func (SessionsImportSharedParams) MarshalJSON

func (r SessionsImportSharedParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsImportsCheckProviderParams

type SessionsImportsCheckProviderParams struct {
	// Migration source, from `GET /v3/session/imports/providers/`. Required when
	// `source` is `provider`. Required.
	Provider SessionsImportsCheckProviderParamsProvider `json:"provider"`

	// The provider's read-only key, with the field names `credential_fields` lists.
	// Encrypted at rest, never returned, and erased when the import ends. Send it
	// as a JSON string in multipart. Required.
	Credentials map[string]string                              `json:"credentials"`
	Options     Opt[SessionsImportsCheckProviderParamsOptions] `json:"options"`

	// For `api_ids` providers: the first record ID of your export.
	RecordIDs Opt[[]string] `json:"record_ids"`
}

SessionsImportsCheckProviderParams holds the parameters of Client.Sessions.Imports.CheckProvider.

func (SessionsImportsCheckProviderParams) MarshalJSON

func (r SessionsImportsCheckProviderParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsImportsCheckProviderParamsOptions

type SessionsImportsCheckProviderParamsOptions struct {
	// The provider region, one of its `regions` (Onfido: `eu`, `us`, `ca`).
	Region Opt[string] `json:"region"`
}

SessionsImportsCheckProviderParamsOptions is a request object.

func (SessionsImportsCheckProviderParamsOptions) MarshalJSON

MarshalJSON encodes the fields that are set.

type SessionsImportsCheckProviderParamsProvider

type SessionsImportsCheckProviderParamsProvider string

SessionsImportsCheckProviderParamsProvider: Migration source, from `GET /v3/session/imports/providers/`. Required when `source` is `provider`.

SessionsImportsCheckProviderParamsProvider is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsImportsCheckProviderParamsProviderSumsub     SessionsImportsCheckProviderParamsProvider = "sumsub"
	SessionsImportsCheckProviderParamsProviderJumio      SessionsImportsCheckProviderParamsProvider = "jumio"
	SessionsImportsCheckProviderParamsProviderVeriff     SessionsImportsCheckProviderParamsProvider = "veriff"
	SessionsImportsCheckProviderParamsProviderOnfido     SessionsImportsCheckProviderParamsProvider = "onfido"
	SessionsImportsCheckProviderParamsProviderPersona    SessionsImportsCheckProviderParamsProvider = "persona"
	SessionsImportsCheckProviderParamsProviderMetamap    SessionsImportsCheckProviderParamsProvider = "metamap"
	SessionsImportsCheckProviderParamsProviderSocure     SessionsImportsCheckProviderParamsProvider = "socure"
	SessionsImportsCheckProviderParamsProviderIdnow      SessionsImportsCheckProviderParamsProvider = "idnow"
	SessionsImportsCheckProviderParamsProviderShufti     SessionsImportsCheckProviderParamsProvider = "shufti"
	SessionsImportsCheckProviderParamsProviderIdenfy     SessionsImportsCheckProviderParamsProvider = "idenfy"
	SessionsImportsCheckProviderParamsProviderOndato     SessionsImportsCheckProviderParamsProvider = "ondato"
	SessionsImportsCheckProviderParamsProviderTrulioo    SessionsImportsCheckProviderParamsProvider = "trulioo"
	SessionsImportsCheckProviderParamsProviderAu10tix    SessionsImportsCheckProviderParamsProvider = "au10tix"
	SessionsImportsCheckProviderParamsProviderComplycube SessionsImportsCheckProviderParamsProvider = "complycube"
	SessionsImportsCheckProviderParamsProviderOther      SessionsImportsCheckProviderParamsProvider = "other"
)

Known values of SessionsImportsCheckProviderParamsProvider.

type SessionsImportsCheckProviderResponse

type SessionsImportsCheckProviderResponse struct {
	Ok             bool   `json:"ok"`
	Provider       string `json:"provider"`
	CredentialHint string `json:"credential_hint"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsImportsCheckProviderResponse is a response object.

func (*SessionsImportsCheckProviderResponse) UnmarshalJSON

func (r *SessionsImportsCheckProviderResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsImportsCheckProviderResponse leniently.

type SessionsImportsCreateParams

type SessionsImportsCreateParams struct {
	// What to import: historical User Verification sessions, historical Business
	// Verification sessions, workflow custom status rules, or historical
	// transaction monitoring records.
	ImportType Opt[SessionsImportsCreateParamsImportType] `json:"import_type"`

	// Workflow UUID that imported sessions or status rules should be attached to.
	// Required for user_verification, business_verification, and status_rules. Omit
	// for transactions.
	WorkflowID Opt[string] `json:"workflow_id"`

	// Optional. Inferred from the URL's file extension when omitted.
	SourceFormat Opt[SessionsImportsCreateParamsSourceFormat] `json:"source_format"`

	// Alternative to file upload. Must be an HTTPS URL resolving to a public
	// address (private/loopback networks are rejected). Mutually exclusive with
	// `file`.
	SourceFileURL Opt[string] `json:"source_file_url"`

	// `provider` makes this a migration from another identity verification
	// provider. Omit for a file import.
	Source Opt[SessionsImportsCreateParamsSource] `json:"source"`

	// Migration source, from `GET /v3/session/imports/providers/`. Required when
	// `source` is `provider`.
	Provider Opt[SessionsImportsCreateParamsProvider] `json:"provider"`

	// The provider's read-only key, with the field names `credential_fields` lists.
	// Encrypted at rest, never returned, and erased when the import ends. Send it
	// as a JSON string in multipart.
	Credentials Opt[map[string]string]                  `json:"credentials"`
	Options     Opt[SessionsImportsCreateParamsOptions] `json:"options"`

	// Edits to the provider's default status mapping: source status to Didit
	// status. `Not Finished` and `Abandoned` are skipped and counted, never
	// imported.
	StatusMapping Opt[map[string]SessionsImportsCreateParamsStatusMapping] `json:"status_mapping"`

	// Count what the migration would import (by status, already in Didit, same
	// person, not finished) and write nothing. The job ends `READY`; start it with
	// `POST /v3/session/imports/{importId}/start/`.
	DryRun Opt[bool] `json:"dry_run"`

	// Build face templates from the imported selfies and search them against the
	// application's faces and blocklist. Matches are flagged for review only.
	// Requires `lawful_basis_confirmed`.
	FaceTemplates Opt[bool] `json:"face_templates"`

	// Confirms you have a lawful basis to share these selfies with Didit as
	// processor.
	LawfulBasisConfirmed Opt[bool] `json:"lawful_basis_confirmed"`

	// Canonical CSV or NDJSON file. Use NDJSON for large imports. Maximum upload
	// size 25 MB (use `source_file_url` for bigger files). Mutually exclusive with
	// `source_file_url`.
	File Opt[File] `json:"-" form:"file"`
}

SessionsImportsCreateParams holds the parameters of Client.Sessions.Imports.Create.

func (SessionsImportsCreateParams) MarshalJSON

func (r SessionsImportsCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsImportsCreateParamsImportType

type SessionsImportsCreateParamsImportType string

SessionsImportsCreateParamsImportType: What to import: historical User Verification sessions, historical Business Verification sessions, workflow custom status rules, or historical transaction monitoring records.

SessionsImportsCreateParamsImportType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsImportsCreateParamsImportTypeUserVerification     SessionsImportsCreateParamsImportType = "user_verification"
	SessionsImportsCreateParamsImportTypeBusinessVerification SessionsImportsCreateParamsImportType = "business_verification"
	SessionsImportsCreateParamsImportTypeStatusRules          SessionsImportsCreateParamsImportType = "status_rules"
	SessionsImportsCreateParamsImportTypeTransactions         SessionsImportsCreateParamsImportType = "transactions"
)

Known values of SessionsImportsCreateParamsImportType.

type SessionsImportsCreateParamsOptions

type SessionsImportsCreateParamsOptions struct {
	// The provider region, one of its `regions` (Onfido: `eu`, `us`, `ca`).
	Region Opt[string] `json:"region"`
}

SessionsImportsCreateParamsOptions is a request object.

func (SessionsImportsCreateParamsOptions) MarshalJSON

func (r SessionsImportsCreateParamsOptions) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsImportsCreateParamsProvider

type SessionsImportsCreateParamsProvider string

SessionsImportsCreateParamsProvider: Migration source, from `GET /v3/session/imports/providers/`. Required when `source` is `provider`.

SessionsImportsCreateParamsProvider is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsImportsCreateParamsProviderSumsub     SessionsImportsCreateParamsProvider = "sumsub"
	SessionsImportsCreateParamsProviderJumio      SessionsImportsCreateParamsProvider = "jumio"
	SessionsImportsCreateParamsProviderVeriff     SessionsImportsCreateParamsProvider = "veriff"
	SessionsImportsCreateParamsProviderOnfido     SessionsImportsCreateParamsProvider = "onfido"
	SessionsImportsCreateParamsProviderPersona    SessionsImportsCreateParamsProvider = "persona"
	SessionsImportsCreateParamsProviderMetamap    SessionsImportsCreateParamsProvider = "metamap"
	SessionsImportsCreateParamsProviderSocure     SessionsImportsCreateParamsProvider = "socure"
	SessionsImportsCreateParamsProviderIdnow      SessionsImportsCreateParamsProvider = "idnow"
	SessionsImportsCreateParamsProviderShufti     SessionsImportsCreateParamsProvider = "shufti"
	SessionsImportsCreateParamsProviderIdenfy     SessionsImportsCreateParamsProvider = "idenfy"
	SessionsImportsCreateParamsProviderOndato     SessionsImportsCreateParamsProvider = "ondato"
	SessionsImportsCreateParamsProviderTrulioo    SessionsImportsCreateParamsProvider = "trulioo"
	SessionsImportsCreateParamsProviderAu10tix    SessionsImportsCreateParamsProvider = "au10tix"
	SessionsImportsCreateParamsProviderComplycube SessionsImportsCreateParamsProvider = "complycube"
	SessionsImportsCreateParamsProviderOther      SessionsImportsCreateParamsProvider = "other"
)

Known values of SessionsImportsCreateParamsProvider.

type SessionsImportsCreateParamsSource

type SessionsImportsCreateParamsSource string

SessionsImportsCreateParamsSource: `provider` makes this a migration from another identity verification provider. Omit for a file import.

SessionsImportsCreateParamsSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsImportsCreateParamsSourceFile     SessionsImportsCreateParamsSource = "file"
	SessionsImportsCreateParamsSourceProvider SessionsImportsCreateParamsSource = "provider"
)

Known values of SessionsImportsCreateParamsSource.

type SessionsImportsCreateParamsSourceFormat

type SessionsImportsCreateParamsSourceFormat string

SessionsImportsCreateParamsSourceFormat is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsImportsCreateParamsSourceFormatCSV    SessionsImportsCreateParamsSourceFormat = "csv"
	SessionsImportsCreateParamsSourceFormatNdjson SessionsImportsCreateParamsSourceFormat = "ndjson"
)

Known values of SessionsImportsCreateParamsSourceFormat.

type SessionsImportsCreateParamsStatusMapping

type SessionsImportsCreateParamsStatusMapping string

SessionsImportsCreateParamsStatusMapping is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsImportsCreateParamsStatusMappingApproved    SessionsImportsCreateParamsStatusMapping = "Approved"
	SessionsImportsCreateParamsStatusMappingDeclined    SessionsImportsCreateParamsStatusMapping = "Declined"
	SessionsImportsCreateParamsStatusMappingInReview    SessionsImportsCreateParamsStatusMapping = "In Review"
	SessionsImportsCreateParamsStatusMappingExpired     SessionsImportsCreateParamsStatusMapping = "Expired"
	SessionsImportsCreateParamsStatusMappingNotFinished SessionsImportsCreateParamsStatusMapping = "Not Finished"
	SessionsImportsCreateParamsStatusMappingAbandoned   SessionsImportsCreateParamsStatusMapping = "Abandoned"
)

Known values of SessionsImportsCreateParamsStatusMapping.

type SessionsImportsListActiveJobsResponse

type SessionsImportsListActiveJobsResponse struct {
	Results []ImportJobSummary `json:"results"`
	Running int64              `json:"running"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsImportsListActiveJobsResponse is a response object.

func (*SessionsImportsListActiveJobsResponse) UnmarshalJSON

func (r *SessionsImportsListActiveJobsResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsImportsListActiveJobsResponse leniently.

type SessionsImportsListErrorsParams

type SessionsImportsListErrorsParams struct {
	// Page size. Defaults to 50 when omitted.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based offset of the first record to return.
	Offset Opt[int64] `json:"-" query:"offset"`
}

SessionsImportsListErrorsParams holds the parameters of Client.Sessions.Imports.ListErrors.

func (SessionsImportsListErrorsParams) MarshalJSON

func (r SessionsImportsListErrorsParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsImportsListJobsParams

type SessionsImportsListJobsParams struct {
	Scope Opt[SessionsImportsListJobsParamsScope] `json:"-" query:"scope"`
	Limit Opt[int64]                              `json:"-" query:"limit"`
}

SessionsImportsListJobsParams holds the parameters of Client.Sessions.Imports.ListJobs.

func (SessionsImportsListJobsParams) MarshalJSON

func (r SessionsImportsListJobsParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsImportsListJobsParamsScope

type SessionsImportsListJobsParamsScope string

SessionsImportsListJobsParamsScope is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsImportsListJobsParamsScopeAll        SessionsImportsListJobsParamsScope = "all"
	SessionsImportsListJobsParamsScopeSessions   SessionsImportsListJobsParamsScope = "sessions"
	SessionsImportsListJobsParamsScopeUsers      SessionsImportsListJobsParamsScope = "users"
	SessionsImportsListJobsParamsScopeBusinesses SessionsImportsListJobsParamsScope = "businesses"
)

Known values of SessionsImportsListJobsParamsScope.

type SessionsImportsListJobsResponse

type SessionsImportsListJobsResponse struct {
	Results []ImportJobSummary                    `json:"results"`
	Counts  SessionsImportsListJobsResponseCounts `json:"counts"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsImportsListJobsResponse is a response object.

func (*SessionsImportsListJobsResponse) UnmarshalJSON

func (r *SessionsImportsListJobsResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsImportsListJobsResponse leniently.

type SessionsImportsListJobsResponseCounts

type SessionsImportsListJobsResponseCounts struct {
	All               int64 `json:"all"`
	RunningAndWaiting int64 `json:"running_and_waiting"`
	NeedsAttention    int64 `json:"needs_attention"`
	Done              int64 `json:"done"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsImportsListJobsResponseCounts is a response object.

func (*SessionsImportsListJobsResponseCounts) UnmarshalJSON

func (r *SessionsImportsListJobsResponseCounts) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsImportsListJobsResponseCounts leniently.

type SessionsImportsListProvidersResponse

type SessionsImportsListProvidersResponse struct {
	Providers       []ImportProvider `json:"providers"`
	MappingTargets  []string         `json:"mapping_targets"`
	SkippedStatuses []string         `json:"skipped_statuses"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsImportsListProvidersResponse is a response object.

func (*SessionsImportsListProvidersResponse) UnmarshalJSON

func (r *SessionsImportsListProvidersResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsImportsListProvidersResponse leniently.

type SessionsImportsRetrieveTemplateParams

type SessionsImportsRetrieveTemplateParams struct {
	ImportType Opt[SessionsImportsRetrieveTemplateParamsImportType] `json:"-" query:"import_type"`
}

SessionsImportsRetrieveTemplateParams holds the parameters of Client.Sessions.Imports.RetrieveTemplate.

func (SessionsImportsRetrieveTemplateParams) MarshalJSON

func (r SessionsImportsRetrieveTemplateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsImportsRetrieveTemplateParamsImportType

type SessionsImportsRetrieveTemplateParamsImportType string

SessionsImportsRetrieveTemplateParamsImportType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsImportsRetrieveTemplateParamsImportTypeUserVerification     SessionsImportsRetrieveTemplateParamsImportType = "user_verification"
	SessionsImportsRetrieveTemplateParamsImportTypeBusinessVerification SessionsImportsRetrieveTemplateParamsImportType = "business_verification"
	SessionsImportsRetrieveTemplateParamsImportTypeStatusRules          SessionsImportsRetrieveTemplateParamsImportType = "status_rules"
	SessionsImportsRetrieveTemplateParamsImportTypeTransactions         SessionsImportsRetrieveTemplateParamsImportType = "transactions"
)

Known values of SessionsImportsRetrieveTemplateParamsImportType.

type SessionsImportsRetryParams

type SessionsImportsRetryParams struct {
	// The provider's read-only key, with the field names `credential_fields` lists.
	// Encrypted at rest, never returned, and erased when the import ends. Send it
	// as a JSON string in multipart.
	Credentials Opt[map[string]string] `json:"credentials"`

	// The record IDs or export file again, for `api_ids` and `export_file`
	// providers.
	File Opt[File] `json:"-" form:"file"`
}

SessionsImportsRetryParams holds the parameters of Client.Sessions.Imports.Retry.

func (SessionsImportsRetryParams) MarshalJSON

func (r SessionsImportsRetryParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsImportsService

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

SessionsImportsService holds the sessions imports operations. Use it through Client.Sessions.Imports.

func (*SessionsImportsService) Cancel

Cancel: Cancel an import job.

Cancel an import. What was imported stays; the uploaded file and the key are erased.

POST /v3/session/imports/{importId}/cancel/

func (*SessionsImportsService) CheckProvider

CheckProvider: Check a provider key.

Read the provider with your key before creating a migration. Nothing is stored.

POST /v3/session/imports/providers/check/

func (*SessionsImportsService) Create

Create: Create a verification import job.

Create an asynchronous import job for historical User Verification sessions, Business Verification sessions, transaction monitoring records, or workflow custom status rules. Set `source=provider` to migrate from another provider: Didit reads Sumsub, Onfido, Persona and ComplyCube with your read-only key, reads Veriff, iDenfy and MetaMap records by the IDs you upload in `file`, and imports an export file in Didit's format for the other providers. Record IDs are namespaced by provider (`sumsub:<id>`) so a re-run skips everything already in Didit. Imports are disabled by default and must be enabled per organization by Didit.

POST /v3/session/imports/

func (*SessionsImportsService) ListActiveJobs

ListActiveJobs: List active import jobs.

What is running or waiting, plus what just ended, for a progress indicator.

GET /v3/import-jobs/active/

func (*SessionsImportsService) ListErrors

ListErrors: List verification import row errors.

List row-level errors for a verification import job, ordered by `row_number`. Use this endpoint to produce a corrected retry file containing only failed rows.

It returns one page; ListErrorsAutoPaging iterates over every item of every page.

GET /v3/session/imports/{importId}/errors/

func (*SessionsImportsService) ListErrorsAutoPaging

ListErrorsAutoPaging iterates over every item of every page of ListErrors, fetching pages as needed.

func (*SessionsImportsService) ListJobs

ListJobs: List import jobs.

Every import of the application in one shape: verification imports and migrations, people and businesses.

GET /v3/import-jobs/

func (*SessionsImportsService) ListProviders

ListProviders: List migration providers.

The 15 providers you can migrate verifications from: what each needs to connect, whether its API can list records, the permissions its key needs and its default status mapping.

GET /v3/session/imports/providers/

func (*SessionsImportsService) Pause

Pause: Pause an import job.

Pause a queued or running import.

POST /v3/session/imports/{importId}/pause/

func (*SessionsImportsService) Resume

Resume: Resume an import job.

Resume an import you paused. A job paused by the provider's rate limit resumes by itself.

POST /v3/session/imports/{importId}/resume/

func (*SessionsImportsService) Retrieve

func (r *SessionsImportsService) Retrieve(ctx context.Context, importID string, opts ...option.RequestOption) (*SessionImportJob, error)

Retrieve: Retrieve a verification import job.

Retrieve import progress counters and terminal status for one job. Poll until `status` is `COMPLETED` or `FAILED`; `failed_count` > 0 means some rows were rejected - list them via the errors endpoint.

GET /v3/session/imports/{importId}/

func (*SessionsImportsService) RetrieveTemplate

RetrieveTemplate: Download verification import template.

Download the canonical CSV header for verification imports. The column set is determined by `import_type`. The first column of session templates is the idempotency key `external_id`.

The response is a file (text/csv). Read it from the returned response's body and close it.

GET /v3/session/imports/template/

func (*SessionsImportsService) Retry

Retry: Retry a migration.

Run a migration that ended again as a new job, with a new key (the old one was erased). It keeps the provider, workflow, region, status mapping and face templates choice; everything already in Didit is skipped.

POST /v3/session/imports/{importId}/retry/

func (*SessionsImportsService) Start

Start: Start a dry run.

Start a migration whose dry run finished (`READY`): the same job imports for real, with the status mapping and face templates choice as sent now.

POST /v3/session/imports/{importId}/start/

type SessionsImportsStartParams

type SessionsImportsStartParams struct {
	// Edits to the provider's default status mapping: source status to Didit
	// status. `Not Finished` and `Abandoned` are skipped and counted, never
	// imported.
	StatusMapping Opt[map[string]SessionsImportsStartParamsStatusMapping] `json:"status_mapping"`

	// Build face templates from the imported selfies and search them against the
	// application's faces and blocklist. Matches are flagged for review only.
	// Requires `lawful_basis_confirmed`.
	FaceTemplates Opt[bool] `json:"face_templates"`

	// Confirms you have a lawful basis to share these selfies with Didit as
	// processor.
	LawfulBasisConfirmed Opt[bool] `json:"lawful_basis_confirmed"`
}

SessionsImportsStartParams holds the parameters of Client.Sessions.Imports.Start.

func (SessionsImportsStartParams) MarshalJSON

func (r SessionsImportsStartParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsImportsStartParamsStatusMapping

type SessionsImportsStartParamsStatusMapping string

SessionsImportsStartParamsStatusMapping is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsImportsStartParamsStatusMappingApproved    SessionsImportsStartParamsStatusMapping = "Approved"
	SessionsImportsStartParamsStatusMappingDeclined    SessionsImportsStartParamsStatusMapping = "Declined"
	SessionsImportsStartParamsStatusMappingInReview    SessionsImportsStartParamsStatusMapping = "In Review"
	SessionsImportsStartParamsStatusMappingExpired     SessionsImportsStartParamsStatusMapping = "Expired"
	SessionsImportsStartParamsStatusMappingNotFinished SessionsImportsStartParamsStatusMapping = "Not Finished"
	SessionsImportsStartParamsStatusMappingAbandoned   SessionsImportsStartParamsStatusMapping = "Abandoned"
)

Known values of SessionsImportsStartParamsStatusMapping.

type SessionsListAMLScreeningHistoryParams

type SessionsListAMLScreeningHistoryParams struct {
	// Workflow graph node ID of the AML check. Needed only when the session ran
	// more than one AML step; without it the most recent AML check is used. An
	// unknown node returns `404`.
	NodeID Opt[string] `json:"-" query:"node_id"`

	// Maximum number of screening runs per page. Defaults to 50. A value below 1 or
	// a non-numeric value falls back to 50; a value above 1,000,000 returns `400`.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Number of results to skip before the first returned one. Defaults to 0; a
	// negative or non-numeric value falls back to 0, a value above 1,000,000
	// returns `400`. Prefer following the `next` and `previous` URLs.
	Offset Opt[int64] `json:"-" query:"offset"`

	// Optional sort override. The default order is `-completed_at`. Pass a result
	// field name (for example `completed_at`, `started_at`, `outcome` or `score`)
	// to sort ascending, prefix it with `-` to sort descending, and separate
	// several fields with commas. Unknown fields are ignored.
	Ordering Opt[string] `json:"-" query:"ordering"`
}

SessionsListAMLScreeningHistoryParams holds the parameters of Client.Sessions.ListAMLScreeningHistory.

func (SessionsListAMLScreeningHistoryParams) MarshalJSON

func (r SessionsListAMLScreeningHistoryParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsListEventsParams

type SessionsListEventsParams struct {
	// Maximum number of events per page. Defaults to 50. A value below 1 or a
	// non-numeric value falls back to 50; a value above 1,000,000 returns `400`.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Number of results to skip before the first returned one. Defaults to 0; a
	// negative or non-numeric value falls back to 0, a value above 1,000,000
	// returns `400`. Prefer following the `next` and `previous` URLs.
	Offset Opt[int64] `json:"-" query:"offset"`

	// Optional sort override. The default order is `-sent_at`. Pass a result field
	// name (for example `sent_at`, `created_at`, `event_type`, `feature_step` or
	// `step`) to sort ascending, prefix it with `-` to sort descending, and
	// separate several fields with commas. Unknown fields are ignored.
	Ordering Opt[string] `json:"-" query:"ordering"`
}

SessionsListEventsParams holds the parameters of Client.Sessions.ListEvents.

func (SessionsListEventsParams) MarshalJSON

func (r SessionsListEventsParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsListFeatureOverridesResponse

type SessionsListFeatureOverridesResponse struct {
	SessionID string `json:"session_id"`

	// Whether the person is still in the flow, so a new override with
	// `defer_until_flow_finishes: true` would wait.
	PersonInFlow bool `json:"person_in_flow"`

	// When the person last finished the flow. `null` while they are still in it (a
	// resubmission included) and when the session closed before they finished
	// (abandoned, expired or decided mid-flow).
	FlowFinishedAt time.Time `json:"flow_finished_at"`

	// Every override of the session, newest first.
	Overrides []FeatureStatusOverride `json:"overrides"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsListFeatureOverridesResponse is a response object.

func (*SessionsListFeatureOverridesResponse) UnmarshalJSON

func (r *SessionsListFeatureOverridesResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsListFeatureOverridesResponse leniently.

type SessionsListParams

type SessionsListParams struct {
	// Which kind of sessions to list: `user` (KYC only, default), `business` (KYB
	// only), or `all` (both, concatenated - see the description for
	// merged-pagination semantics). Matching is case-insensitive (`BUSINESS`
	// works); any value other than a case variant of `user`/`business`/`all`
	// returns `400`.
	SessionKind Opt[SessionsListParamsSessionKind] `json:"-" query:"session_kind"`

	// Maximum number of rows per page (per kind when `session_kind=all`). Defaults
	// to 50.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Number of rows to skip before the first returned row. Defaults to 0. Prefer
	// following the `next`/`previous` URLs from the response.
	Offset Opt[int64] `json:"-" query:"offset"`

	// Comma-separated list of session statuses to include, e.g. `Approved,In
	// Review`. Values are case-sensitive; see [Verification
	// Statuses](/integration/verification-statuses). Unknown values match nothing.
	Status Opt[string] `json:"-" query:"status"`

	// Exact-match filter on the `vendor_data` you sent at session creation (your
	// own user/business identifier). For partial matches use `search` instead.
	VendorData Opt[string] `json:"-" query:"vendor_data"`

	// Smart free-text search. A full UUID matches `session_id`; numeric input
	// matches session-number prefix, document/personal numbers, phone prefix, or
	// `vendor_data`; input containing `@` matches email prefixes; other text
	// matches names (accent-insensitive) and `vendor_data`. Free text containing
	// digits additionally matches document/personal-number search fields and
	// session-number prefixes.
	Search Opt[string] `json:"-" query:"search"`

	// Comma-separated workflow UUIDs (find them on the Workflows page in the
	// Console). Malformed UUIDs in the list are ignored; if none are valid the
	// result is empty.
	WorkflowID Opt[string] `json:"-" query:"workflow_id"`

	// Only sessions created on or after this date (UTC), format `YYYY-MM-DD`.
	// Malformed dates return `400`.
	DateFrom Opt[string] `json:"-" query:"date_from"`

	// Only sessions created up to this date (UTC), format `YYYY-MM-DD`. For KYC
	// rows the entire day is included; for KYB rows the comparison is `created_at
	// <= date_to` (midnight), so use the next day's date to include a full day of
	// KYB sessions.
	DateTo Opt[string] `json:"-" query:"date_to"`

	// Comma-separated country filter. For KYC rows: ISO 3166-1 alpha-3 codes of the
	// ID document's issuing state (e.g. `ESP,USA`), which may differ from
	// nationality. For KYB rows: the registry company's country code.
	Country Opt[string] `json:"-" query:"country"`

	// Comma-separated ID-document type codes verified in the session (KYC rows
	// only): `P` (Passport), `ID` (Identity Card), `DL` (Driver's License), `RP`
	// (Residence Permit), `SSC` (Social Security Card), `HIC` (Health Insurance
	// Card), `WP` (Work Permit), `TC` (Tax Card), `VISA`, `PSC` (Public Service
	// Card), `BC` (Birth Certificate), `OTHER`. Note the response field
	// `document_type` contains the display name, not the code.
	DocumentType Opt[string] `json:"-" query:"document_type"`

	// Exact document names; multiple names can be passed comma-separated, but the
	// value is only split on commas when it contains more than one ` - ` separator
	// (a lone name with an embedded comma is matched whole). Names are as
	// recognized by document verification (front or back side), e.g. `Spain - Id
	// Card (2021)`. KYC rows only.
	DocumentName Opt[string] `json:"-" query:"document_name"`

	// Comma-separated document region/state values (for documents issued per
	// region, such as US driver's licenses). KYC rows only.
	Region Opt[string] `json:"-" query:"region"`

	// Filter by Didit's internal user identifier (the `didit_internal_id` response
	// field) to list all sessions of one verified user. Must be a valid UUID;
	// malformed values return `400`. KYC rows only.
	DiditInternalID Opt[string] `json:"-" query:"didit_internal_id"`

	// Comma-separated session creation channels: `API`, `HOSTED`, `MIGRATED`. The
	// special value `ALL` (or omitting the parameter) disables the filter. KYC rows
	// only.
	SessionType Opt[string] `json:"-" query:"session_type"`

	// Filter standalone API sessions by service. Invalid values return `400`. KYC
	// rows only.
	APIService Opt[SessionsListParamsAPIService] `json:"-" query:"api_service"`

	// Accent-insensitive name search inside AML and database-validation screened
	// data. When combined with `api_service=AML` or
	// `api_service=DATABASE_VALIDATION`, the search is restricted to that feature's
	// screened data. KYC rows only.
	ScreenedFullName Opt[string] `json:"-" query:"screened_full_name"`

	// Comma-separated warning risk codes; returns sessions that raised any of them
	// (e.g. `POSSIBLE_FRAUD`). Risk codes are listed per feature in the [warnings
	// documentation](/integration/webhooks). Applies to KYC rows and, with business
	// warning codes, to KYB rows.
	Warning Opt[string] `json:"-" query:"warning"`

	// When `true`, only sessions whose decision initially landed in `In Review`
	// (useful to audit manual-review volume). KYC rows only.
	StatusInitializedAsInReview Opt[bool] `json:"-" query:"status_initialized_as_in_review"`

	// `true` returns sessions whose document verification is flagged for manual
	// review; `false` returns sessions with document verification explicitly not
	// flagged. Omit to disable. KYC rows only.
	IsKYCToBeReviewed Opt[bool] `json:"-" query:"is_kyc_to_be_reviewed"`

	// Filter by the end user's euuid (UUID assigned to the verifying user, used by
	// Console deep links). Must be a valid UUID; malformed values return a 400
	// field error. KYC rows only.
	Euuid Opt[string] `json:"-" query:"euuid"`

	// Comma-separated organization names. Console-oriented; with an API key
	// (already scoped to one application) it only matches your own organization's
	// name.
	OrganizationName Opt[string] `json:"-" query:"organization_name"`
}

SessionsListParams holds the parameters of Client.Sessions.List.

func (SessionsListParams) MarshalJSON

func (r SessionsListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsListParamsAPIService

type SessionsListParamsAPIService string

SessionsListParamsAPIService is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsListParamsAPIServiceIDVerification     SessionsListParamsAPIService = "ID_VERIFICATION"
	SessionsListParamsAPIServiceFaceMatch          SessionsListParamsAPIService = "FACE_MATCH"
	SessionsListParamsAPIServiceAgeEstimation      SessionsListParamsAPIService = "AGE_ESTIMATION"
	SessionsListParamsAPIServiceFaceSearch         SessionsListParamsAPIService = "FACE_SEARCH"
	SessionsListParamsAPIServicePOA                SessionsListParamsAPIService = "POA"
	SessionsListParamsAPIServiceAML                SessionsListParamsAPIService = "AML"
	SessionsListParamsAPIServiceKYBRegistry        SessionsListParamsAPIService = "KYB_REGISTRY"
	SessionsListParamsAPIServicePassiveLiveness    SessionsListParamsAPIService = "PASSIVE_LIVENESS"
	SessionsListParamsAPIServiceDatabaseValidation SessionsListParamsAPIService = "DATABASE_VALIDATION"
	SessionsListParamsAPIServicePhoneVerification  SessionsListParamsAPIService = "PHONE_VERIFICATION"
	SessionsListParamsAPIServiceEmailVerification  SessionsListParamsAPIService = "EMAIL_VERIFICATION"
)

Known values of SessionsListParamsAPIService.

type SessionsListParamsSessionKind

type SessionsListParamsSessionKind string

SessionsListParamsSessionKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsListParamsSessionKindUser     SessionsListParamsSessionKind = "user"
	SessionsListParamsSessionKindBusiness SessionsListParamsSessionKind = "business"
	SessionsListParamsSessionKindAll      SessionsListParamsSessionKind = "all"
)

Known values of SessionsListParamsSessionKind.

type SessionsListResponseResults

type SessionsListResponseResults struct {
	// Unique identifier of the verification session. Use it with `GET
	// /v3/session/{sessionId}/decision/` to fetch the full decision payload.
	SessionID string `json:"session_id"`

	// Row discriminator. Always `"user"` for KYC rows; Business Verification (KYB)
	// rows have `"business"` and a different shape.
	SessionKind SessionsListResponseResultsSessionKind `json:"session_kind"`

	// Human-friendly sequential number of the session within your application. Also
	// matched by the `search` parameter.
	SessionNumber int64 `json:"session_number"`

	// Hosted verification URL the end user opens to complete the flow. `null` when
	// the session has no hosted URL.
	SessionURL string `json:"session_url"`

	// Expiring (presigned) URL of the best available portrait: the NFC chip photo
	// when available, otherwise the ID document portrait, otherwise the liveness
	// reference image. `null` until one of those exists. Download promptly; the
	// link expires.
	PortraitImage string `json:"portrait_image"`

	// Human-readable type of the verified ID document. `null` before document
	// verification completes, and also `null` after completion when the verified
	// code has no display mapping (`SSC`, `WP`, `VISA`, `PSC`, `BC`, `OTHER`).
	// Note: the `document_type` query parameter filters by short codes (`P`, `ID`,
	// `DL`, `RP`, ...), not by these display values.
	DocumentType SessionsListResponseResultsDocumentType `json:"document_type"`

	// Best available full name for the session, resolved in order: ID document OCR,
	// AML screened data, database-validation screened data, proof-of-address
	// document, then the expected details provided at session creation. `null` when
	// none is available yet.
	FullName string `json:"full_name"`

	// ISO 3166-1 alpha-3 country associated with the session, resolved in order: ID
	// document issuing state, database-validation issuing state, proof-of-address
	// issuing state, expected details, then the verified phone's country. May
	// differ from nationality.
	Country string `json:"country"`

	// Overall session status. See the [Verification
	// Statuses](/integration/verification-statuses) page for the lifecycle.
	Status SessionsListResponseResultsStatus `json:"status"`

	// Your own identifier for the end user, echoed back exactly as sent at session
	// creation.
	VendorData string `json:"vendor_data"`

	// Didit's internal identifier for the verified user profile behind this
	// session. Stable across multiple sessions of the same user; filterable via the
	// `didit_internal_id` query parameter.
	DiditInternalID string `json:"didit_internal_id"`

	// UTC timestamp when the session was created.
	CreatedAt time.Time `json:"created_at"`

	// Per-feature status for every verification step configured in the session's
	// workflow, in workflow order.
	Features []SessionsListResponseResultsFeatures `json:"features"`

	// Phone associated with the session: the verified phone when phone verification
	// ran, otherwise the contact phone provided at session creation. `null` when
	// neither exists.
	PhoneNumber SessionsListResponseResultsPhoneNumber `json:"phone_number"`

	// Email associated with the session: the verified email when email verification
	// ran, otherwise the contact email provided at session creation. `null` when
	// neither exists.
	EmailAddress SessionsListResponseResultsEmailAddress `json:"email_address"`

	// Compact per-feature extras. Only features that produced data appear as keys;
	// `null` when no feature produced extras. Fields excluded by the workflow's
	// response-attributes configuration are omitted.
	AdditionalDetails SessionsListResponseResultsAdditionalDetails `json:"additional_details"`

	// Identifier of the workflow this session was created with.
	WorkflowID string `json:"workflow_id"`

	// Workflow type. `kyb` for business workflows.
	WorkflowType string `json:"workflow_type"`

	// Display name of the workflow.
	WorkflowLabel string `json:"workflow_label"`

	// Name of the company being verified, from the registry company linked to the
	// session. `null` until a company is selected.
	CompanyName string `json:"company_name"`

	// Company registration number from the registry company linked to the session.
	RegistrationNumber string `json:"registration_number"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsListResponseResults is a response object.

func (*SessionsListResponseResults) UnmarshalJSON

func (r *SessionsListResponseResults) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsListResponseResults leniently.

type SessionsListResponseResultsAdditionalDetails

type SessionsListResponseResultsAdditionalDetails struct {
	// Present when AML screening ran.
	AML SessionsListResponseResultsAdditionalDetailsAML `json:"aml"`

	// Present when database validation ran.
	DatabaseValidation SessionsListResponseResultsAdditionalDetailsDatabaseValidation `json:"database_validation"`

	// Present when proof of address ran.
	POA SessionsListResponseResultsAdditionalDetailsPOA `json:"poa"`

	// Present when a liveness check ran.
	Liveness SessionsListResponseResultsAdditionalDetailsLiveness `json:"liveness"`

	// Present when face match ran.
	FaceMatch SessionsListResponseResultsAdditionalDetailsFaceMatch `json:"face_match"`

	// Present when phone verification ran.
	PhoneVerification SessionsListResponseResultsAdditionalDetailsPhoneVerification `json:"phone_verification"`

	// Present when email verification ran.
	EmailVerification SessionsListResponseResultsAdditionalDetailsEmailVerification `json:"email_verification"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsListResponseResultsAdditionalDetails: Compact per-feature extras. Only features that produced data appear as keys; `null` when no feature produced extras. Fields excluded by the workflow's response-attributes configuration are omitted.

func (*SessionsListResponseResultsAdditionalDetails) UnmarshalJSON

func (r *SessionsListResponseResultsAdditionalDetails) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsListResponseResultsAdditionalDetails leniently.

type SessionsListResponseResultsAdditionalDetailsAML

type SessionsListResponseResultsAdditionalDetailsAML struct {
	// Number of AML screening hits.
	TotalHits int64 `json:"total_hits"`

	// Screened entity type.
	EntityType            string `json:"entity_type"`
	IsAdverseMediaFetched bool   `json:"is_adverse_media_fetched"`

	// Subset of the data that was screened. Only non-empty keys are included.
	ScreenedData SessionsListResponseResultsAdditionalDetailsAMLScreenedData `json:"screened_data"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsListResponseResultsAdditionalDetailsAML: Present when AML screening ran.

func (*SessionsListResponseResultsAdditionalDetailsAML) UnmarshalJSON

UnmarshalJSON decodes SessionsListResponseResultsAdditionalDetailsAML leniently.

type SessionsListResponseResultsAdditionalDetailsAMLScreenedData

type SessionsListResponseResultsAdditionalDetailsAMLScreenedData struct {
	Nationality    string `json:"nationality"`
	DocumentNumber string `json:"document_number"`
	DateOfBirth    string `json:"date_of_birth"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsListResponseResultsAdditionalDetailsAMLScreenedData: Subset of the data that was screened. Only non-empty keys are included.

func (*SessionsListResponseResultsAdditionalDetailsAMLScreenedData) UnmarshalJSON

UnmarshalJSON decodes SessionsListResponseResultsAdditionalDetailsAMLScreenedData leniently.

type SessionsListResponseResultsAdditionalDetailsDatabaseValidation

type SessionsListResponseResultsAdditionalDetailsDatabaseValidation struct {
	ValidationType string `json:"validation_type"`
	MatchType      string `json:"match_type"`

	// Tax, personal, or document number that was validated (first available).
	IdentificationNumber string `json:"identification_number"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsListResponseResultsAdditionalDetailsDatabaseValidation: Present when database validation ran.

func (*SessionsListResponseResultsAdditionalDetailsDatabaseValidation) UnmarshalJSON

UnmarshalJSON decodes SessionsListResponseResultsAdditionalDetailsDatabaseValidation leniently.

type SessionsListResponseResultsAdditionalDetailsEmailVerification

type SessionsListResponseResultsAdditionalDetailsEmailVerification struct {
	IsBreached      bool `json:"is_breached"`
	IsDisposable    bool `json:"is_disposable"`
	IsUndeliverable bool `json:"is_undeliverable"`
	IsBlocklisted   bool `json:"is_blocklisted"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsListResponseResultsAdditionalDetailsEmailVerification: Present when email verification ran.

func (*SessionsListResponseResultsAdditionalDetailsEmailVerification) UnmarshalJSON

UnmarshalJSON decodes SessionsListResponseResultsAdditionalDetailsEmailVerification leniently.

type SessionsListResponseResultsAdditionalDetailsFaceMatch

type SessionsListResponseResultsAdditionalDetailsFaceMatch struct {
	// Face-match similarity score, rounded to 2 decimals.
	Score float64 `json:"score"`

	// Expiring (presigned) URL of the source face image.
	SourceImage string `json:"source_image"`

	// Expiring (presigned) URL of the target face image.
	TargetImage string `json:"target_image"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsListResponseResultsAdditionalDetailsFaceMatch: Present when face match ran.

func (*SessionsListResponseResultsAdditionalDetailsFaceMatch) UnmarshalJSON

UnmarshalJSON decodes SessionsListResponseResultsAdditionalDetailsFaceMatch leniently.

type SessionsListResponseResultsAdditionalDetailsLiveness

type SessionsListResponseResultsAdditionalDetailsLiveness struct {
	Method string `json:"method"`

	// Liveness confidence score, rounded to 2 decimals.
	Score float64 `json:"score"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsListResponseResultsAdditionalDetailsLiveness: Present when a liveness check ran.

func (*SessionsListResponseResultsAdditionalDetailsLiveness) UnmarshalJSON

UnmarshalJSON decodes SessionsListResponseResultsAdditionalDetailsLiveness leniently.

type SessionsListResponseResultsAdditionalDetailsPOA

type SessionsListResponseResultsAdditionalDetailsPOA struct {
	DocumentType   string `json:"document_type"`
	Issuer         string `json:"issuer"`
	Address        string `json:"address"`
	NameOnDocument string `json:"name_on_document"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsListResponseResultsAdditionalDetailsPOA: Present when proof of address ran.

func (*SessionsListResponseResultsAdditionalDetailsPOA) UnmarshalJSON

UnmarshalJSON decodes SessionsListResponseResultsAdditionalDetailsPOA leniently.

type SessionsListResponseResultsAdditionalDetailsPhoneVerification

type SessionsListResponseResultsAdditionalDetailsPhoneVerification struct {
	// ISO 3166-1 alpha-2 country of the phone number.
	CountryCode string `json:"country_code"`
	IsTemporary bool   `json:"is_temporary"`
	IsPorted    bool   `json:"is_ported"`
	IsBlocked   bool   `json:"is_blocked"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsListResponseResultsAdditionalDetailsPhoneVerification: Present when phone verification ran.

func (*SessionsListResponseResultsAdditionalDetailsPhoneVerification) UnmarshalJSON

UnmarshalJSON decodes SessionsListResponseResultsAdditionalDetailsPhoneVerification leniently.

type SessionsListResponseResultsDocumentType

type SessionsListResponseResultsDocumentType string

SessionsListResponseResultsDocumentType: Human-readable type of the verified ID document. `null` before document verification completes, and also `null` after completion when the verified code has no display mapping (`SSC`, `WP`, `VISA`, `PSC`, `BC`, `OTHER`). Note: the `document_type` query parameter filters by short codes (`P`, `ID`, `DL`, `RP`, ...), not by these display values.

SessionsListResponseResultsDocumentType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsListResponseResultsDocumentTypePassport            SessionsListResponseResultsDocumentType = "Passport"
	SessionsListResponseResultsDocumentTypeIdentityCard        SessionsListResponseResultsDocumentType = "Identity Card"
	SessionsListResponseResultsDocumentTypeDriverSLicense      SessionsListResponseResultsDocumentType = "Driver's License"
	SessionsListResponseResultsDocumentTypeResidencePermit     SessionsListResponseResultsDocumentType = "Residence Permit"
	SessionsListResponseResultsDocumentTypeHealthInsuranceCard SessionsListResponseResultsDocumentType = "Health Insurance Card"
	SessionsListResponseResultsDocumentTypeTaxCard             SessionsListResponseResultsDocumentType = "Tax Card"
)

Known values of SessionsListResponseResultsDocumentType.

type SessionsListResponseResultsEmailAddress

type SessionsListResponseResultsEmailAddress struct {
	Email string `json:"email"`

	// `true` only when the email-verification feature approved this address.
	IsVerified bool `json:"is_verified"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsListResponseResultsEmailAddress: Email associated with the session: the verified email when email verification ran, otherwise the contact email provided at session creation. `null` when neither exists.

func (*SessionsListResponseResultsEmailAddress) UnmarshalJSON

func (r *SessionsListResponseResultsEmailAddress) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsListResponseResultsEmailAddress leniently.

type SessionsListResponseResultsFeatures

type SessionsListResponseResultsFeatures struct {
	// Verification feature identifier.
	Feature SessionsListResponseResultsFeaturesFeature `json:"feature"`

	// Status of this feature. `Not Finished` until the step completes.
	Status SessionsListResponseResultsFeaturesStatus `json:"status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsListResponseResultsFeatures is a response object.

func (*SessionsListResponseResultsFeatures) UnmarshalJSON

func (r *SessionsListResponseResultsFeatures) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsListResponseResultsFeatures leniently.

type SessionsListResponseResultsFeaturesFeature

type SessionsListResponseResultsFeaturesFeature string

SessionsListResponseResultsFeaturesFeature: Verification feature identifier.

SessionsListResponseResultsFeaturesFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsListResponseResultsFeaturesFeatureIDVerification     SessionsListResponseResultsFeaturesFeature = "ID_VERIFICATION"
	SessionsListResponseResultsFeaturesFeatureNFC                SessionsListResponseResultsFeaturesFeature = "NFC"
	SessionsListResponseResultsFeaturesFeatureLiveness           SessionsListResponseResultsFeaturesFeature = "LIVENESS"
	SessionsListResponseResultsFeaturesFeatureFaceMatch          SessionsListResponseResultsFeaturesFeature = "FACE_MATCH"
	SessionsListResponseResultsFeaturesFeaturePOA                SessionsListResponseResultsFeaturesFeature = "POA"
	SessionsListResponseResultsFeaturesFeatureQuestionnaire      SessionsListResponseResultsFeaturesFeature = "QUESTIONNAIRE"
	SessionsListResponseResultsFeaturesFeatureEmailVerification  SessionsListResponseResultsFeaturesFeature = "EMAIL_VERIFICATION"
	SessionsListResponseResultsFeaturesFeaturePhone              SessionsListResponseResultsFeaturesFeature = "PHONE"
	SessionsListResponseResultsFeaturesFeatureAML                SessionsListResponseResultsFeaturesFeature = "AML"
	SessionsListResponseResultsFeaturesFeatureIPAnalysis         SessionsListResponseResultsFeaturesFeature = "IP_ANALYSIS"
	SessionsListResponseResultsFeaturesFeatureAgeEstimation      SessionsListResponseResultsFeaturesFeature = "AGE_ESTIMATION"
	SessionsListResponseResultsFeaturesFeatureDatabaseValidation SessionsListResponseResultsFeaturesFeature = "DATABASE_VALIDATION"
)

Known values of SessionsListResponseResultsFeaturesFeature.

type SessionsListResponseResultsFeaturesStatus

type SessionsListResponseResultsFeaturesStatus string

SessionsListResponseResultsFeaturesStatus: Status of this feature. `Not Finished` until the step completes.

SessionsListResponseResultsFeaturesStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsListResponseResultsFeaturesStatusNotFinished    SessionsListResponseResultsFeaturesStatus = "Not Finished"
	SessionsListResponseResultsFeaturesStatusApproved       SessionsListResponseResultsFeaturesStatus = "Approved"
	SessionsListResponseResultsFeaturesStatusDeclined       SessionsListResponseResultsFeaturesStatus = "Declined"
	SessionsListResponseResultsFeaturesStatusInReview       SessionsListResponseResultsFeaturesStatus = "In Review"
	SessionsListResponseResultsFeaturesStatusResubRequested SessionsListResponseResultsFeaturesStatus = "Resub Requested"
)

Known values of SessionsListResponseResultsFeaturesStatus.

type SessionsListResponseResultsPhoneNumber

type SessionsListResponseResultsPhoneNumber struct {
	// Phone number in E.164 format.
	Number string `json:"number"`

	// `true` only when the phone-verification feature approved this number.
	IsVerified bool `json:"is_verified"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsListResponseResultsPhoneNumber: Phone associated with the session: the verified phone when phone verification ran, otherwise the contact phone provided at session creation. `null` when neither exists.

func (*SessionsListResponseResultsPhoneNumber) UnmarshalJSON

func (r *SessionsListResponseResultsPhoneNumber) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsListResponseResultsPhoneNumber leniently.

type SessionsListResponseResultsSessionKind

type SessionsListResponseResultsSessionKind string

SessionsListResponseResultsSessionKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsListResponseResultsSessionKindUser     SessionsListResponseResultsSessionKind = "user"
	SessionsListResponseResultsSessionKindBusiness SessionsListResponseResultsSessionKind = "business"
)

Known values of SessionsListResponseResultsSessionKind.

type SessionsListResponseResultsStatus

type SessionsListResponseResultsStatus string

SessionsListResponseResultsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsListResponseResultsStatusNotStarted   SessionsListResponseResultsStatus = "Not Started"
	SessionsListResponseResultsStatusInProgress   SessionsListResponseResultsStatus = "In Progress"
	SessionsListResponseResultsStatusApproved     SessionsListResponseResultsStatus = "Approved"
	SessionsListResponseResultsStatusDeclined     SessionsListResponseResultsStatus = "Declined"
	SessionsListResponseResultsStatusInReview     SessionsListResponseResultsStatus = "In Review"
	SessionsListResponseResultsStatusExpired      SessionsListResponseResultsStatus = "Expired"
	SessionsListResponseResultsStatusAbandoned    SessionsListResponseResultsStatus = "Abandoned"
	SessionsListResponseResultsStatusKYCExpired   SessionsListResponseResultsStatus = "Kyc Expired"
	SessionsListResponseResultsStatusResubmitted  SessionsListResponseResultsStatus = "Resubmitted"
	SessionsListResponseResultsStatusAwaitingUser SessionsListResponseResultsStatus = "Awaiting User"
)

Known values of SessionsListResponseResultsStatus.

type SessionsPreviewDecisionEmailParams

type SessionsPreviewDecisionEmailParams struct {
	// The decision whose email you want to preview. Required.
	NewStatus SessionsPreviewDecisionEmailParamsNewStatus `json:"new_status"`

	// Language of the email, the same default as Update Session Status. A language
	// that is not offered falls back to English; `language` in the response says
	// which one is used.
	EmailLanguage Opt[string] `json:"email_language"`
}

SessionsPreviewDecisionEmailParams holds the parameters of Client.Sessions.PreviewDecisionEmail.

func (SessionsPreviewDecisionEmailParams) MarshalJSON

func (r SessionsPreviewDecisionEmailParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsPreviewDecisionEmailParamsNewStatus

type SessionsPreviewDecisionEmailParamsNewStatus string

SessionsPreviewDecisionEmailParamsNewStatus: The decision whose email you want to preview.

SessionsPreviewDecisionEmailParamsNewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsPreviewDecisionEmailParamsNewStatusApproved SessionsPreviewDecisionEmailParamsNewStatus = "Approved"
	SessionsPreviewDecisionEmailParamsNewStatusDeclined SessionsPreviewDecisionEmailParamsNewStatus = "Declined"
)

Known values of SessionsPreviewDecisionEmailParamsNewStatus.

type SessionsPreviewDecisionEmailResponse

type SessionsPreviewDecisionEmailResponse struct {
	// The address the email goes to. An empty string when no address is known for
	// the person: then no email can be sent and `preview_token` is empty too. Pass
	// it as `email_address` when you confirm.
	Recipient string `json:"recipient"`

	// Where `recipient` comes from. `email_verification`: the address the person
	// verified in an email verification step of the flow. `contact_details`: the
	// address given in `contact_details` when the session was created. An empty
	// string when there is no address.
	RecipientSource SessionsPreviewDecisionEmailResponseRecipientSource `json:"recipient_source"`

	// The `From` header the email goes out with.
	Sender string `json:"sender"`

	// The display name part of `sender`.
	SenderName string `json:"sender_name"`

	// The address part of `sender`.
	SenderEmail string `json:"sender_email"`

	// `customer`: the email goes out from your application's verified sender domain
	// (white label). `didit`: it goes out from Didit's own sender.
	SenderKind SessionsPreviewDecisionEmailResponseSenderKind `json:"sender_kind"`

	// The subject line exactly as it is sent.
	Subject string `json:"subject"`

	// The email's HTML exactly as it is sent, with its logo embedded as a data URL.
	// Render it in a sandboxed frame, never directly in your application DOM.
	HTML string `json:"html"`

	// The language the email is written in. English (`en`) when the
	// `email_language` you asked for is not offered.
	Language string `json:"language"`

	// Whether confirming the change with `send_email: true` sends this email.
	// `false` when `not_sent_reason` is set.
	WillBeSent bool `json:"will_be_sent"`

	// Why confirming would send no email, or `null` when it will be sent.
	// `status_unchanged`: the session already has this status, so the update
	// changes nothing and sends nothing. `notification_emails_disabled`: the
	// session was created without `contact_details.send_notification_emails: true`,
	// so no decision email goes to the address given in `contact_details`.
	// `no_recipient`: no address is known for the person. `sandbox`: a sandbox
	// session whose recipient has not opted into sandbox email delivery, so the
	// send is only simulated.
	NotSentReason SessionsPreviewDecisionEmailResponseNotSentReason `json:"not_sent_reason"`

	// Signed receipt for this exact email, valid for 15 minutes. Pass it as
	// `email_preview_token` to [Update Session
	// Status](/sessions-api/update-status). An empty string when there is no
	// recipient.
	PreviewToken string `json:"preview_token"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsPreviewDecisionEmailResponse is a response object.

func (*SessionsPreviewDecisionEmailResponse) UnmarshalJSON

func (r *SessionsPreviewDecisionEmailResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsPreviewDecisionEmailResponse leniently.

type SessionsPreviewDecisionEmailResponseNotSentReason

type SessionsPreviewDecisionEmailResponseNotSentReason string

SessionsPreviewDecisionEmailResponseNotSentReason: Why confirming would send no email, or `null` when it will be sent. `status_unchanged`: the session already has this status, so the update changes nothing and sends nothing. `notification_emails_disabled`: the session was created without `contact_details.send_notification_emails: true`, so no decision email goes to the address given in `contact_details`. `no_recipient`: no address is known for the person. `sandbox`: a sandbox session whose recipient has not opted into sandbox email delivery, so the send is only simulated.

SessionsPreviewDecisionEmailResponseNotSentReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsPreviewDecisionEmailResponseNotSentReasonStatusUnchanged            SessionsPreviewDecisionEmailResponseNotSentReason = "status_unchanged"
	SessionsPreviewDecisionEmailResponseNotSentReasonNotificationEmailsDisabled SessionsPreviewDecisionEmailResponseNotSentReason = "notification_emails_disabled"
	SessionsPreviewDecisionEmailResponseNotSentReasonNoRecipient                SessionsPreviewDecisionEmailResponseNotSentReason = "no_recipient"
	SessionsPreviewDecisionEmailResponseNotSentReasonSandbox                    SessionsPreviewDecisionEmailResponseNotSentReason = "sandbox"
)

Known values of SessionsPreviewDecisionEmailResponseNotSentReason.

type SessionsPreviewDecisionEmailResponseRecipientSource

type SessionsPreviewDecisionEmailResponseRecipientSource string

SessionsPreviewDecisionEmailResponseRecipientSource: Where `recipient` comes from. `email_verification`: the address the person verified in an email verification step of the flow. `contact_details`: the address given in `contact_details` when the session was created. An empty string when there is no address.

SessionsPreviewDecisionEmailResponseRecipientSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsPreviewDecisionEmailResponseRecipientSourceEmailVerification SessionsPreviewDecisionEmailResponseRecipientSource = "email_verification"
	SessionsPreviewDecisionEmailResponseRecipientSourceContactDetails    SessionsPreviewDecisionEmailResponseRecipientSource = "contact_details"
	SessionsPreviewDecisionEmailResponseRecipientSourceEmpty             SessionsPreviewDecisionEmailResponseRecipientSource = ""
)

Known values of SessionsPreviewDecisionEmailResponseRecipientSource.

type SessionsPreviewDecisionEmailResponseSenderKind

type SessionsPreviewDecisionEmailResponseSenderKind string

SessionsPreviewDecisionEmailResponseSenderKind: `customer`: the email goes out from your application's verified sender domain (white label). `didit`: it goes out from Didit's own sender.

SessionsPreviewDecisionEmailResponseSenderKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsPreviewDecisionEmailResponseSenderKindCustomer SessionsPreviewDecisionEmailResponseSenderKind = "customer"
	SessionsPreviewDecisionEmailResponseSenderKindDidit    SessionsPreviewDecisionEmailResponseSenderKind = "didit"
)

Known values of SessionsPreviewDecisionEmailResponseSenderKind.

type SessionsPreviewResubmissionParams

type SessionsPreviewResubmissionParams struct {
	// Steps to preview, using the same validation, selection and workflow ordering
	// as a resubmission. Omit to auto-select recorded attempts needing
	// resubmission.
	NodesToResubmit Opt[[]SessionsPreviewResubmissionParamsNodesToResubmit] `json:"nodes_to_resubmit"`

	// Optional. Send the email to this address instead of the person's own. Without
	// it, the recipient is the address the person verified in the flow, else the
	// one given in `contact_details`. No email is sent by this call.
	EmailAddress Opt[string] `json:"email_address"`

	// Language for the notification email. Accepts any string at schema level;
	// unsupported codes silently fall back to English (`en`).
	EmailLanguage Opt[string] `json:"email_language"`
}

SessionsPreviewResubmissionParams holds the parameters of Client.Sessions.PreviewResubmission.

func (SessionsPreviewResubmissionParams) MarshalJSON

func (r SessionsPreviewResubmissionParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsPreviewResubmissionParamsNodesToResubmit

type SessionsPreviewResubmissionParamsNodesToResubmit struct {
	// Node identifier as it appears in the session's workflow definition (for
	// example `feature_ocr`, `feature_liveness`). Required.
	NodeID string `json:"node_id"`

	// Feature type of the node. The aliases `ID_VERIFICATION`, `POA`, `PHONE`, and
	// `EMAIL` are normalized server-side to `OCR`, `PROOF_OF_ADDRESS`,
	// `PHONE_VERIFICATION`, and `EMAIL_VERIFICATION`. `KYB_REGISTRY`,
	// `KYB_KEY_PEOPLE`, and `KYB` pass schema validation but are always rejected
	// with the business-rule `400` shown in the examples. Required.
	Feature SessionsPreviewResubmissionParamsNodesToResubmitFeature `json:"feature"`
}

SessionsPreviewResubmissionParamsNodesToResubmit is a request object.

func (SessionsPreviewResubmissionParamsNodesToResubmit) MarshalJSON

MarshalJSON encodes the fields that are set.

type SessionsPreviewResubmissionParamsNodesToResubmitFeature

type SessionsPreviewResubmissionParamsNodesToResubmitFeature string

SessionsPreviewResubmissionParamsNodesToResubmitFeature: Feature type of the node. The aliases `ID_VERIFICATION`, `POA`, `PHONE`, and `EMAIL` are normalized server-side to `OCR`, `PROOF_OF_ADDRESS`, `PHONE_VERIFICATION`, and `EMAIL_VERIFICATION`. `KYB_REGISTRY`, `KYB_KEY_PEOPLE`, and `KYB` pass schema validation but are always rejected with the business-rule `400` shown in the examples.

SessionsPreviewResubmissionParamsNodesToResubmitFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureOCR                SessionsPreviewResubmissionParamsNodesToResubmitFeature = "OCR"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureOCRBack            SessionsPreviewResubmissionParamsNodesToResubmitFeature = "OCR_BACK"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureNFC                SessionsPreviewResubmissionParamsNodesToResubmitFeature = "NFC"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureAML                SessionsPreviewResubmissionParamsNodesToResubmitFeature = "AML"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureFace               SessionsPreviewResubmissionParamsNodesToResubmitFeature = "FACE"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureLiveness           SessionsPreviewResubmissionParamsNodesToResubmitFeature = "LIVENESS"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureFaceMatch          SessionsPreviewResubmissionParamsNodesToResubmitFeature = "FACE_MATCH"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureIPAnalysis         SessionsPreviewResubmissionParamsNodesToResubmitFeature = "IP_ANALYSIS"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureAgeEstimation      SessionsPreviewResubmissionParamsNodesToResubmitFeature = "AGE_ESTIMATION"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureProofOfAddress     SessionsPreviewResubmissionParamsNodesToResubmitFeature = "PROOF_OF_ADDRESS"
	SessionsPreviewResubmissionParamsNodesToResubmitFeaturePhoneVerification  SessionsPreviewResubmissionParamsNodesToResubmitFeature = "PHONE_VERIFICATION"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureEmailVerification  SessionsPreviewResubmissionParamsNodesToResubmitFeature = "EMAIL_VERIFICATION"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureFaceSearch         SessionsPreviewResubmissionParamsNodesToResubmitFeature = "FACE_SEARCH"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureDatabaseValidation SessionsPreviewResubmissionParamsNodesToResubmitFeature = "DATABASE_VALIDATION"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureQuestionnaire      SessionsPreviewResubmissionParamsNodesToResubmitFeature = "QUESTIONNAIRE"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureDocumentAi         SessionsPreviewResubmissionParamsNodesToResubmitFeature = "DOCUMENT_AI"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureKYBDocuments       SessionsPreviewResubmissionParamsNodesToResubmitFeature = "KYB_DOCUMENTS"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureIDVerification     SessionsPreviewResubmissionParamsNodesToResubmitFeature = "ID_VERIFICATION"
	SessionsPreviewResubmissionParamsNodesToResubmitFeaturePOA                SessionsPreviewResubmissionParamsNodesToResubmitFeature = "POA"
	SessionsPreviewResubmissionParamsNodesToResubmitFeaturePhone              SessionsPreviewResubmissionParamsNodesToResubmitFeature = "PHONE"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureEmail              SessionsPreviewResubmissionParamsNodesToResubmitFeature = "EMAIL"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureKYBRegistry        SessionsPreviewResubmissionParamsNodesToResubmitFeature = "KYB_REGISTRY"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureKYBKeyPeople       SessionsPreviewResubmissionParamsNodesToResubmitFeature = "KYB_KEY_PEOPLE"
	SessionsPreviewResubmissionParamsNodesToResubmitFeatureKYB                SessionsPreviewResubmissionParamsNodesToResubmitFeature = "KYB"
)

Known values of SessionsPreviewResubmissionParamsNodesToResubmitFeature.

type SessionsPreviewResubmissionResponse

type SessionsPreviewResubmissionResponse struct {
	// The address the email goes to. An empty string when no address is known for
	// the person: then no email can be sent and `preview_token` is empty too. Pass
	// it as `email_address` when you confirm.
	Recipient string `json:"recipient"`

	// Where `recipient` comes from. `request`: the `email_address` you passed.
	// `email_verification`: the address the person verified in an email
	// verification step of the flow. `contact_details`: the address given in
	// `contact_details` when the session was created. An empty string when there is
	// no address.
	RecipientSource SessionsPreviewResubmissionResponseRecipientSource `json:"recipient_source"`

	// The `From` header the email goes out with.
	Sender string `json:"sender"`

	// The display name part of `sender`.
	SenderName string `json:"sender_name"`

	// The address part of `sender`.
	SenderEmail string `json:"sender_email"`

	// `customer`: the email goes out from your application's verified sender domain
	// (white label). `didit`: it goes out from Didit's own sender.
	SenderKind SessionsPreviewResubmissionResponseSenderKind `json:"sender_kind"`

	// The subject line exactly as it is sent.
	Subject string `json:"subject"`

	// The email's HTML exactly as it is sent, with its logo embedded as a data URL.
	// Render it in a sandboxed frame, never directly in your application DOM.
	HTML string `json:"html"`

	// The language the email is written in. English (`en`) when the
	// `email_language` you asked for is not offered.
	Language string `json:"language"`

	// Whether confirming the change with `send_email: true` sends this email.
	// `false` when `not_sent_reason` is set.
	WillBeSent bool `json:"will_be_sent"`

	// Why confirming would send no email, or `null` when it will be sent.
	// `no_user_action`: every selected step runs without the person, so the
	// resubmission finishes on its own and no email goes out. `no_recipient`: no
	// address is known for the person and you passed none. `sandbox`: a sandbox
	// session whose recipient has not opted into sandbox email delivery, so the
	// send is only simulated.
	NotSentReason   SessionsPreviewResubmissionResponseNotSentReason     `json:"not_sent_reason"`
	NodesToResubmit []SessionsPreviewResubmissionResponseNodesToResubmit `json:"nodes_to_resubmit"`

	// Whether at least one selected check requires user interaction. This does not
	// predict the final workflow outcome.
	RequiresUserAction bool `json:"requires_user_action"`

	// Signed receipt for this exact email, valid for 15 minutes. Pass it as
	// `email_preview_token` to [Update Session
	// Status](/sessions-api/update-status). An empty string when there is no
	// recipient.
	PreviewToken string `json:"preview_token"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsPreviewResubmissionResponse is a response object.

func (*SessionsPreviewResubmissionResponse) UnmarshalJSON

func (r *SessionsPreviewResubmissionResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsPreviewResubmissionResponse leniently.

type SessionsPreviewResubmissionResponseNodesToResubmit

type SessionsPreviewResubmissionResponseNodesToResubmit struct {
	// Node identifier as it appears in the session's workflow definition (for
	// example `feature_ocr`, `feature_liveness`).
	NodeID string `json:"node_id"`

	// Feature type of the node. The aliases `ID_VERIFICATION`, `POA`, `PHONE`, and
	// `EMAIL` are normalized server-side to `OCR`, `PROOF_OF_ADDRESS`,
	// `PHONE_VERIFICATION`, and `EMAIL_VERIFICATION`. `KYB_REGISTRY`,
	// `KYB_KEY_PEOPLE`, and `KYB` pass schema validation but are always rejected
	// with the business-rule `400` shown in the examples.
	Feature SessionsPreviewResubmissionResponseNodesToResubmitFeature `json:"feature"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsPreviewResubmissionResponseNodesToResubmit is a response object.

func (*SessionsPreviewResubmissionResponseNodesToResubmit) UnmarshalJSON

UnmarshalJSON decodes SessionsPreviewResubmissionResponseNodesToResubmit leniently.

type SessionsPreviewResubmissionResponseNodesToResubmitFeature

type SessionsPreviewResubmissionResponseNodesToResubmitFeature string

SessionsPreviewResubmissionResponseNodesToResubmitFeature: Feature type of the node. The aliases `ID_VERIFICATION`, `POA`, `PHONE`, and `EMAIL` are normalized server-side to `OCR`, `PROOF_OF_ADDRESS`, `PHONE_VERIFICATION`, and `EMAIL_VERIFICATION`. `KYB_REGISTRY`, `KYB_KEY_PEOPLE`, and `KYB` pass schema validation but are always rejected with the business-rule `400` shown in the examples.

SessionsPreviewResubmissionResponseNodesToResubmitFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureOCR                SessionsPreviewResubmissionResponseNodesToResubmitFeature = "OCR"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureOCRBack            SessionsPreviewResubmissionResponseNodesToResubmitFeature = "OCR_BACK"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureNFC                SessionsPreviewResubmissionResponseNodesToResubmitFeature = "NFC"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureAML                SessionsPreviewResubmissionResponseNodesToResubmitFeature = "AML"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureFace               SessionsPreviewResubmissionResponseNodesToResubmitFeature = "FACE"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureLiveness           SessionsPreviewResubmissionResponseNodesToResubmitFeature = "LIVENESS"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureFaceMatch          SessionsPreviewResubmissionResponseNodesToResubmitFeature = "FACE_MATCH"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureIPAnalysis         SessionsPreviewResubmissionResponseNodesToResubmitFeature = "IP_ANALYSIS"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureAgeEstimation      SessionsPreviewResubmissionResponseNodesToResubmitFeature = "AGE_ESTIMATION"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureProofOfAddress     SessionsPreviewResubmissionResponseNodesToResubmitFeature = "PROOF_OF_ADDRESS"
	SessionsPreviewResubmissionResponseNodesToResubmitFeaturePhoneVerification  SessionsPreviewResubmissionResponseNodesToResubmitFeature = "PHONE_VERIFICATION"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureEmailVerification  SessionsPreviewResubmissionResponseNodesToResubmitFeature = "EMAIL_VERIFICATION"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureFaceSearch         SessionsPreviewResubmissionResponseNodesToResubmitFeature = "FACE_SEARCH"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureDatabaseValidation SessionsPreviewResubmissionResponseNodesToResubmitFeature = "DATABASE_VALIDATION"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureQuestionnaire      SessionsPreviewResubmissionResponseNodesToResubmitFeature = "QUESTIONNAIRE"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureDocumentAi         SessionsPreviewResubmissionResponseNodesToResubmitFeature = "DOCUMENT_AI"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureKYBDocuments       SessionsPreviewResubmissionResponseNodesToResubmitFeature = "KYB_DOCUMENTS"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureIDVerification     SessionsPreviewResubmissionResponseNodesToResubmitFeature = "ID_VERIFICATION"
	SessionsPreviewResubmissionResponseNodesToResubmitFeaturePOA                SessionsPreviewResubmissionResponseNodesToResubmitFeature = "POA"
	SessionsPreviewResubmissionResponseNodesToResubmitFeaturePhone              SessionsPreviewResubmissionResponseNodesToResubmitFeature = "PHONE"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureEmail              SessionsPreviewResubmissionResponseNodesToResubmitFeature = "EMAIL"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureKYBRegistry        SessionsPreviewResubmissionResponseNodesToResubmitFeature = "KYB_REGISTRY"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureKYBKeyPeople       SessionsPreviewResubmissionResponseNodesToResubmitFeature = "KYB_KEY_PEOPLE"
	SessionsPreviewResubmissionResponseNodesToResubmitFeatureKYB                SessionsPreviewResubmissionResponseNodesToResubmitFeature = "KYB"
)

Known values of SessionsPreviewResubmissionResponseNodesToResubmitFeature.

type SessionsPreviewResubmissionResponseNotSentReason

type SessionsPreviewResubmissionResponseNotSentReason string

SessionsPreviewResubmissionResponseNotSentReason: Why confirming would send no email, or `null` when it will be sent. `no_user_action`: every selected step runs without the person, so the resubmission finishes on its own and no email goes out. `no_recipient`: no address is known for the person and you passed none. `sandbox`: a sandbox session whose recipient has not opted into sandbox email delivery, so the send is only simulated.

SessionsPreviewResubmissionResponseNotSentReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsPreviewResubmissionResponseNotSentReasonNoUserAction SessionsPreviewResubmissionResponseNotSentReason = "no_user_action"
	SessionsPreviewResubmissionResponseNotSentReasonNoRecipient  SessionsPreviewResubmissionResponseNotSentReason = "no_recipient"
	SessionsPreviewResubmissionResponseNotSentReasonSandbox      SessionsPreviewResubmissionResponseNotSentReason = "sandbox"
)

Known values of SessionsPreviewResubmissionResponseNotSentReason.

type SessionsPreviewResubmissionResponseRecipientSource

type SessionsPreviewResubmissionResponseRecipientSource string

SessionsPreviewResubmissionResponseRecipientSource: Where `recipient` comes from. `request`: the `email_address` you passed. `email_verification`: the address the person verified in an email verification step of the flow. `contact_details`: the address given in `contact_details` when the session was created. An empty string when there is no address.

SessionsPreviewResubmissionResponseRecipientSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsPreviewResubmissionResponseRecipientSourceEmailVerification SessionsPreviewResubmissionResponseRecipientSource = "email_verification"
	SessionsPreviewResubmissionResponseRecipientSourceContactDetails    SessionsPreviewResubmissionResponseRecipientSource = "contact_details"
	SessionsPreviewResubmissionResponseRecipientSourceRequest           SessionsPreviewResubmissionResponseRecipientSource = "request"
	SessionsPreviewResubmissionResponseRecipientSourceEmpty             SessionsPreviewResubmissionResponseRecipientSource = ""
)

Known values of SessionsPreviewResubmissionResponseRecipientSource.

type SessionsPreviewResubmissionResponseSenderKind

type SessionsPreviewResubmissionResponseSenderKind string

SessionsPreviewResubmissionResponseSenderKind: `customer`: the email goes out from your application's verified sender domain (white label). `didit`: it goes out from Didit's own sender.

SessionsPreviewResubmissionResponseSenderKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsPreviewResubmissionResponseSenderKindCustomer SessionsPreviewResubmissionResponseSenderKind = "customer"
	SessionsPreviewResubmissionResponseSenderKindDidit    SessionsPreviewResubmissionResponseSenderKind = "didit"
)

Known values of SessionsPreviewResubmissionResponseSenderKind.

type SessionsRetrieveDecisionParams

type SessionsRetrieveDecisionParams struct {
	// Comma-separated list of extra payload sections. Supported values: `events`
	// and `resubmissions`, alone or together (`events,resubmissions`). When
	// `include=events` is passed, the response additionally contains the session
	// event timeline (`events`, including the `WORKFLOW_BRANCH_EVALUATED` /
	// `WORKFLOW_STATUS_NODE_REACHED` routing events described on the Retrieve
	// Session page), the full activity log (`activity_reviews`), blocklist flags
	// (`blocklisted`), a per-session `cost_breakdown`, workflow metadata
	// (`workflow_type`, `workflow_version`, `workflow_version_id`, and
	// `workflow_terminal_node_id` - the last recorded workflow status node that set
	// a session status, or `null` if none has been recorded; historical provenance
	// that is not cleared by manual approvals, declines or resubmissions, and is
	// replaced by a later workflow status node), and session metadata
	// (`api_service` - string or `null`, set only for standalone-API sessions;
	// `session_type` - `API`, `HOSTED`, or `MIGRATED`; `has_device_nfc_support` -
	// boolean). Two fields change relative to the plain shape: the top-level
	// `session_kind` discriminator is **omitted** (the events shape only exists for
	// user sessions), and the `features` array switches from plain strings to
	// `{feature, node_id}` objects - where the email feature is reported as `EMAIL`
	// instead of `EMAIL_VERIFICATION`. This expanded shape is primarily used by the
	// Didit Console; most API integrations should omit the parameter. **KYB
	// limitation:** `include=events` only applies to user (KYC) sessions. Business
	// sessions (`session_kind = "business"`) always return the standard business
	// decision shape - `events`, `activity_reviews`, `blocklisted`,
	// `cost_breakdown` and the extra `workflow_*`/session metadata are never
	// returned for business sessions, and their `features` array stays a plain
	// string array. With `include=resubmissions` (user and business sessions alike)
	// the response also contains `resubmissions`: one entry per resubmission
	// request, oldest first, each with `number`, `created_at`, `previous_status`,
	// `nodes`, `reasons`, `requested_by` and `results` (what the resubmitted steps
	// returned before the request, under the same keys and in the same shape as the
	// current results). Each `cost_breakdown` item carries `usage_type`, `price`,
	// `details` and `created_at`: a resubmitted step that runs again is billed as a
	// new item.
	Include Opt[SessionsRetrieveDecisionParamsInclude] `json:"-" query:"include"`
}

SessionsRetrieveDecisionParams holds the parameters of Client.Sessions.RetrieveDecision.

func (SessionsRetrieveDecisionParams) MarshalJSON

func (r SessionsRetrieveDecisionParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsRetrieveDecisionParamsInclude

type SessionsRetrieveDecisionParamsInclude string

SessionsRetrieveDecisionParamsInclude is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsRetrieveDecisionParamsIncludeEvents              SessionsRetrieveDecisionParamsInclude = "events"
	SessionsRetrieveDecisionParamsIncludeResubmissions       SessionsRetrieveDecisionParamsInclude = "resubmissions"
	SessionsRetrieveDecisionParamsIncludeEventsResubmissions SessionsRetrieveDecisionParamsInclude = "events,resubmissions"
)

Known values of SessionsRetrieveDecisionParamsInclude.

type SessionsReviewsCreateParams

type SessionsReviewsCreateParams struct {
	// Optional status label to record on the entry. Accepts any session status
	// value, case-sensitive (`"approved"` is rejected with `400`). Recording a
	// status here does **not** change the session's actual status - use the
	// update-status endpoint for that.
	NewStatus Opt[SessionsReviewsCreateParamsNewStatus] `json:"new_status"`

	// Optional free-text note (no enforced length limit). Stored verbatim; `@email`
	// mentions are not processed on this endpoint.
	Comment Opt[string] `json:"comment"`
}

SessionsReviewsCreateParams holds the parameters of Client.Sessions.Reviews.Create.

func (SessionsReviewsCreateParams) MarshalJSON

func (r SessionsReviewsCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsReviewsCreateParamsNewStatus

type SessionsReviewsCreateParamsNewStatus string

SessionsReviewsCreateParamsNewStatus: Optional status label to record on the entry. Accepts any session status value, case-sensitive (`"approved"` is rejected with `400`). Recording a status here does **not** change the session's actual status - use the update-status endpoint for that.

SessionsReviewsCreateParamsNewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsReviewsCreateParamsNewStatusNotStarted   SessionsReviewsCreateParamsNewStatus = "Not Started"
	SessionsReviewsCreateParamsNewStatusInProgress   SessionsReviewsCreateParamsNewStatus = "In Progress"
	SessionsReviewsCreateParamsNewStatusApproved     SessionsReviewsCreateParamsNewStatus = "Approved"
	SessionsReviewsCreateParamsNewStatusDeclined     SessionsReviewsCreateParamsNewStatus = "Declined"
	SessionsReviewsCreateParamsNewStatusInReview     SessionsReviewsCreateParamsNewStatus = "In Review"
	SessionsReviewsCreateParamsNewStatusExpired      SessionsReviewsCreateParamsNewStatus = "Expired"
	SessionsReviewsCreateParamsNewStatusAbandoned    SessionsReviewsCreateParamsNewStatus = "Abandoned"
	SessionsReviewsCreateParamsNewStatusKYCExpired   SessionsReviewsCreateParamsNewStatus = "Kyc Expired"
	SessionsReviewsCreateParamsNewStatusResubmitted  SessionsReviewsCreateParamsNewStatus = "Resubmitted"
	SessionsReviewsCreateParamsNewStatusAwaitingUser SessionsReviewsCreateParamsNewStatus = "Awaiting User"
)

Known values of SessionsReviewsCreateParamsNewStatus.

type SessionsReviewsCreateResponse

type SessionsReviewsCreateResponse struct {
	// Display name of the entry's author. Always `"Unknown"` for entries created
	// through this endpoint, because it records no actor attribution.
	User string `json:"user"`

	// The status label recorded on the entry, or `null` if none was sent. The
	// session's actual status is not affected.
	NewStatus SessionsReviewsCreateResponseNewStatus `json:"new_status"`

	// The note recorded on the entry, or `null` if none was sent.
	Comment string `json:"comment"`

	// When the entry was written, ISO 8601 UTC.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsReviewsCreateResponse is a response object.

func (*SessionsReviewsCreateResponse) UnmarshalJSON

func (r *SessionsReviewsCreateResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsReviewsCreateResponse leniently.

type SessionsReviewsCreateResponseNewStatus

type SessionsReviewsCreateResponseNewStatus string

SessionsReviewsCreateResponseNewStatus: The status label recorded on the entry, or `null` if none was sent. The session's actual status is not affected.

SessionsReviewsCreateResponseNewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsReviewsCreateResponseNewStatusNotStarted   SessionsReviewsCreateResponseNewStatus = "Not Started"
	SessionsReviewsCreateResponseNewStatusInProgress   SessionsReviewsCreateResponseNewStatus = "In Progress"
	SessionsReviewsCreateResponseNewStatusApproved     SessionsReviewsCreateResponseNewStatus = "Approved"
	SessionsReviewsCreateResponseNewStatusDeclined     SessionsReviewsCreateResponseNewStatus = "Declined"
	SessionsReviewsCreateResponseNewStatusInReview     SessionsReviewsCreateResponseNewStatus = "In Review"
	SessionsReviewsCreateResponseNewStatusExpired      SessionsReviewsCreateResponseNewStatus = "Expired"
	SessionsReviewsCreateResponseNewStatusAbandoned    SessionsReviewsCreateResponseNewStatus = "Abandoned"
	SessionsReviewsCreateResponseNewStatusKYCExpired   SessionsReviewsCreateResponseNewStatus = "Kyc Expired"
	SessionsReviewsCreateResponseNewStatusResubmitted  SessionsReviewsCreateResponseNewStatus = "Resubmitted"
	SessionsReviewsCreateResponseNewStatusAwaitingUser SessionsReviewsCreateResponseNewStatus = "Awaiting User"
)

Known values of SessionsReviewsCreateResponseNewStatus.

type SessionsReviewsListParams

type SessionsReviewsListParams struct {
	// Page size. Defaults to `50`.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Number of entries to skip from the start of the (ordered) feed. Defaults to
	// `0`. The `next` / `previous` URLs in the response carry the right values for
	// walking the feed.
	Offset Opt[int64] `json:"-" query:"offset"`

	// Sort order. The feed defaults to newest first (`-created_at`); pass
	// `created_at` to read it oldest first. Unknown values are silently ignored
	// (default order is used); other serializer field names are also accepted.
	Ordering Opt[string] `json:"-" query:"ordering"`
}

SessionsReviewsListParams holds the parameters of Client.Sessions.Reviews.List.

func (SessionsReviewsListParams) MarshalJSON

func (r SessionsReviewsListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsReviewsService

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

SessionsReviewsService holds the sessions reviews operations. Use it through Client.Sessions.Reviews.

func (*SessionsReviewsService) Create

Create: Add a review note to a session's audit trail.

Append a note to a User Verification (KYC) session's review / activity feed. **This endpoint only records an entry - it never changes the session.** The session's `status` is left untouched, no status-transition validation runs, and no webhook fires. To actually approve, decline, or re-open a session (which also writes a fully-attributed `STATUS_UPDATED` entry to this feed), use `PATCH /v3/session/{session_id}/update-status/` instead.

Both body fields are optional and an empty JSON object is accepted. `new_status` is stored purely as a label on the entry and accepts any of the ten session status values (case-sensitive). `@email` mentions inside `comment` are stored as plain text only - they trigger no notifications on this endpoint, and the entry's `mentioned_emails` stays empty.

Note on attribution: entries created here carry no actor information. In the feed they show `actor_display: "Unknown"`, `actor_type: "CONSOLE_USER"`, and `activity_type: "STATUS_UPDATED"` (storage defaults), and the `201` body's `user` field is `"Unknown"`.

POST /v3/sessions/{session_id}/reviews/

func (*SessionsReviewsService) List

List: List session reviews and activity log.

Return the audit trail / activity feed for a User Verification (KYC) session, newest first, in a paginated envelope (`count` / `next` / `previous` / `results`, 50 entries per page by default).

Feed entries are written by every actor that touches the session: manual decisions made through `PATCH /v3/session/{session_id}/update-status/` (which records `previous_status` → `new_status`), Console reviewer activity (comments with `@email` mentions, KYC/POA data edits, file uploads/removals, tag changes, detail-page views), AML ongoing-monitoring matches, and notes appended via `POST` on this same path. Reading this feed is the API-side equivalent of the **Activity** panel in the Didit Console session view.

Only User Verification (KYC) sessions are addressable here; Business Verification (KYB) session IDs return `404`.

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/sessions/{session_id}/reviews/

func (*SessionsReviewsService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

type SessionsService

type SessionsService struct {
	Imports    *SessionsImportsService
	Reviews    *SessionsReviewsService
	Signatures *SessionsSignaturesService
	Webhooks   *SessionsWebhooksService
	// contains filtered or unexported fields
}

SessionsService holds the sessions operations. Use it through Client.Sessions.

func (*SessionsService) AddImages

AddImages: Add an image to a session.

Attach one extra image or PDF to the ID verification (`model_type=kyc`) or Proof of Address (`model_type=poa`) result of a finished User Verification (KYC) session, for example evidence collected outside the flow. The session must be `Approved`, `Declined`, `In Review` or `Kyc Expired` and carry the result named by `model_type`; Business Verification (KYB) sessions are not supported. Each call appends one file (to the most recent result when the step ran more than once), keeps the existing files and records a `FILE_ADDED` entry in the session activity log; the upload sends no webhook and does not change the session status. The file is compressed on upload and is returned in `extra_files` of the session decision. This endpoint is limited to 10 requests per minute per API key. A scoped API key needs `sessions: write`, and without `media: read` it receives the `extra_files` links as `null`.

PATCH /v3/session/{sessionId}/add-images/

func (*SessionsService) BatchDelete

BatchDelete: Bulk delete KYC sessions by session_number.

Bulk delete User Verification (KYC) sessions by their numeric `session_number`, or every KYC session in your application with `delete_all: true`.

`session_number` is the human-friendly incrementing counter shown in the Console session list and returned as `session_number` by the create-session and decision endpoints; it is **not** the `session_id` UUID. To delete a session by UUID, or to delete a Business Verification (KYB) session, which this endpoint never touches, use `DELETE /v3/session/{sessionId}/delete/` instead.

**Up to 20 sessions are deleted in the request, more run as a job.** The number of matching sessions decides, whether they are selected by `session_numbers` or with `delete_all`:

  • Up to 20 matching sessions: they are deleted before the response, which is `200` with one entry per session in `results[]`.
  • More than 20: the response is `202` with a deletion job, and the sessions are deleted in the background. Poll `GET /v3/sessions/delete/{job_id}/` until `status` is `COMPLETED` or `FAILED`. A job reports counts per outcome, never which sessions it deleted. A `delete_all` job deletes only the sessions created before the request; sessions started while it runs are not deleted.

Each deleted session gets exactly the same treatment as the single-session delete endpoint: the session, every verification attempt it holds, its decision and extracted data, its related feature records (ID verification, face, liveness, face match, and so on) and all of its stored files are deleted, it disappears from every read endpoint, and previously issued media URLs stop resolving. Webhook deliveries still queued for a deleted session, and their retries, are dropped; webhooks already delivered are not affected. Blocklist entries are **not** removed, credits already consumed are **not** refunded, and the parent User entities are **not** deleted (use `POST /v3/users/delete/` for those); no webhook is emitted for the deletion. Deletion is permanent and irreversible.

**Selection semantics:**

  • With `delete_all: true` you can narrow the selection with the filters of `GET /v3/sessions/`, each prefixed with `filter_` (for example `filter_status`, `filter_workflow_id`, `filter_date_from`). Filters that take several values in List Sessions (`status`, `workflow_id`, `country`, `region`, `document_type`, `document_name`, `session_type`, `warning`, `organization_name`) accept a comma-separated string or an array; the others take one value. An empty value is ignored. Filters apply only together with `delete_all`, and a deletion job applies the same filters.
  • An unknown `filter_*` key, or a filter value that cannot be read, rejects the whole request with `400` before anything is deleted, so a mistyped filter never widens the deletion to every session.
  • Entries in `session_numbers` that do not match a live KYC session in your application (unknown numbers, already-deleted sessions, or sessions owned by another application) are **silently skipped**: they do not appear in `results` and are not counted in a job's `total`.
  • Validation failures (a non-numeric entry, an empty list, neither `session_numbers` nor `delete_all` provided, or a template retention the application cannot honour) reject the **whole request** with `400` and delete nothing.
  • Sessions are deleted in groups. If a group cannot be deleted (for example because a storage service is unavailable), every session in that group is reported as `face_retention_outcome: failed_retryable` and stays in place; the other groups are unaffected. Repeat the request for those sessions. A job retries such a group by itself.
  • There is no documented cap on the list length; the shared write rate limit (below) is the practical bound.

**Face biometric data:** the optional `retain_face_embeddings`, `face_retention_days`, `face_retention_deadline`, `deletion_instruction`, and `instruction_id` fields have the same meaning as on `DELETE /v3/session/{sessionId}/delete/` and apply to every matched session. Each result reports its own `face_retention_outcome`.

**Response:** `200 OK` with `results[]` for up to 20 matching sessions, or `202 Accepted` with a deletion job for more. Every result confirms deletion except `face_retention_outcome: failed_retryable`, which reports a session that was NOT deleted and should be retried. Earlier versions of this endpoint returned `204 No Content`; update clients that assert on `204`.

**Idempotency:** repeating the same request deletes nothing more: numbers that no longer match a session are skipped.

**`delete_all: true` (destructive):** deletes **every** remaining KYC session in the application; `session_numbers` is ignored when set. There is no confirmation step and no undo.

**Authentication:** API key in the `x-api-key` header. Missing or invalid credentials return `403` (`{"detail": "You do not have permission to perform this action."}`); this API never returns `401`.

**Rate limit:** shared write budget of 300 requests/min per API key across all POST/PATCH/DELETE endpoints; exceeding it returns `429`.

This endpoint accepts API keys only. Business Console user Bearer tokens are rejected with `403` (unlike the single-session delete, which accepts both).

POST /v3/sessions/delete/

func (*SessionsService) BulkUpdateAMLHitStatus

BulkUpdateAMLHitStatus: Bulk update AML hit review statuses.

Update the review status of **multiple AML hits** in one call. Provide `hit_updates`, a list of `{ hit_id, review_status }` pairs. `review_status` is one of `Unreviewed`, `Confirmed Match`, `False Positive`, or `Inconclusive`.

The update is all-or-nothing: if any `hit_id` is not found in the AML check, the request returns `404` and no hit is changed. A successful call fires a single `data.updated` webhook and records one activity entry covering all changes. For graph workflows with multiple AML checks, pass `node_id` to target a specific check.

Authenticate with your API key (`x-api-key`) or a user authorization header - either must carry the `write:sessions` privilege.

PATCH /v3/session/{sessionId}/bulk-update-aml-hit-status/

func (*SessionsService) CancelFeatureOverride

func (r *SessionsService) CancelFeatureOverride(ctx context.Context, sessionID string, overrideID string, opts ...option.RequestOption) (*FeatureStatusOverride, error)

CancelFeatureOverride: Cancel a check override that waits for the flow to finish.

Cancel an override of a feature (step) status that is still `pending_until_flow_finishes`, so it never applies. The check keeps its status, the cancellation is recorded in the session's activity as `FEATURE_OVERRIDE_CANCELLED`, and no webhook is sent. The response is the override with `state: cancelled` and `cancel_reason: cancelled_by_reviewer`.

An override that already applied or was cancelled returns `409` with the code `feature_override_not_pending`. Find override IDs with `GET /v3/session/{sessionId}/features/overrides/` or in the `override` returned by the feature status update.

Requires the `write:sessions` privilege; a scoped API key needs write access to decisions.

POST /v3/session/{sessionId}/features/overrides/{overrideId}/cancel/

func (*SessionsService) Create

Create: Create a verification session.

Create a User Verification (KYC) or Business Verification (KYB) session and receive a hosted verification `url` plus a `session_token` to redirect or embed for your end user. The `workflow_id` selects which verification steps run and whether the session is KYC or KYB.

Call this from your backend (never the browser - the API key is a secret) whenever a user or business needs to be verified: at signup, before a sensitive action, or when re-verification is required. Prerequisites: a published workflow (created in the Console [Workflows](https://docs.didit.me/console/workflows) page) and an application API key with available credits. Sandbox applications bypass the credit check.

**Idempotency:** when `vendor_data` is provided and an unfinished session (`Not Started`, `In Progress`, `Resubmitted`, or `Awaiting User`) with the same `vendor_data` already exists on the workflow's **current latest published version** (and that session already has a hosted verification URL), the existing session is returned (still `201`) instead of creating a duplicate - with its `callback` and `metadata` updated to the newly provided values. An unfinished session created on an older version of the workflow (one that has since been republished) is **not** reused; a new session pinned to the latest published version is created instead. Sessions in `Approved`, `Declined`, `In Review`, `Expired`, `Abandoned`, or `Kyc Expired` are never reused.

**Side effects:** the hosted verification URL is generated and stored; if `contact_details.send_notification_emails` is `true` and an email is provided, a verification invite email is sent. The session expires after the workflow's configured session expiration time. For KYB workflows, `contact_details.phone` and `expected_details` are ignored.

POST /v3/session/

func (*SessionsService) Delete

Delete: Delete a verification session (KYC or KYB).

Delete a single verification session, User Verification (KYC) or Business Verification (KYB), by its `session_id`. The id is resolved against KYC sessions first, then KYB sessions, so both kinds are deleted through this one URL.

**What is deleted:**

  • The session and every verification attempt it holds, including results that a resubmission replaced: the decision, extracted data, all related feature records (ID verification, face, liveness, face match, AML, registry checks, IP analysis, and so on), its reviews and its activity log.
  • All stored files owned by the session: document front/back photos (full, cropped, and privacy-blurred variants), document-capture videos, portrait crops, NFC chip portrait and signature images, face reference images, liveness videos, face-match source/target images, Proof of Address documents, and any extra uploaded files (KYC); uploaded company documents and extra files (KYB). Electronic Signature documents, signed PDFs, evidence PDFs and signature images (KYC and KYB): their download paths stop working. Previously issued media URLs (`https://<media-host>/...`) stop resolving.
  • The session's face data. Its face embedding is deleted too, unless you choose to keep an image-free template (see **Face biometric data**).
  • Webhook deliveries still queued for the session, and their retries. Webhooks already delivered are not affected.
  • For a Business Verification (KYB) session: the verifications it created for its key people (KYC) and its corporate owners (KYB), recursively, reported as `deleted_child_verifications`. A verification it only links to, such as an existing approved KYC it reused, is not deleted.

The session disappears from every read endpoint immediately: `GET /v3/session/{sessionId}/decision/` returns `404` and `GET /v3/sessions/` stops listing it. Ongoing AML monitoring and KYB registry monitoring started by the deleted verifications stop.

**What is not affected:** blocklist entries created from this session (face or document) are **not** removed; manage those with the blocklist endpoints. Share tokens issued for the session are not revoked, but there is nothing left for them to import: an import with one returns `400` with `{"share_token": ["Original session does not exist."]}`. Credits already consumed are **not** refunded. The parent User or Business entity is **not** deleted; use `POST /v3/users/delete/` or `POST /v3/businesses/delete/` for those. If the User's profile portrait came from this session, the portrait is removed with it.

**Face biometric data:** by default the session's face embedding is deleted with the session (`face_retention_outcome: deleted`). An application that opted in to biometric-template retention (`face_retention_policy: retain_until_user_deleted` on `PATCH /v3/webhook/`), or a request with `retain_face_embeddings: true`, keeps one separately managed, image-free face biometric template anchored to the session's User (`retained_with_user`) so that duplicate detection, Face Search, and biometric authentication keep working. The template never contains the face image, media, identity fields, the decision, or the deleted session's id; it is biometric data deleted at `biometric_template_expires_at`, or earlier on User deletion, privacy erasure, or an explicit purge through `/v3/biometric-templates/`. A session without a linked User cannot retain a template (`ineligible_no_vendor_user`). Send `deletion_instruction: privacy_erasure` for data-subject requests: it purges every retained template for that User and never retains a new one.

**Irreversible:** deletion is permanent and there is no restore endpoint. Export anything you need (for example a decision PDF) before you call it.

**Side effects:** no webhook is emitted for deletions.

**Response:** `200 OK` once the deletion has completed, with a JSON body reporting the `face_retention_outcome`, the retained template's expiry and, for a KYB session, `deleted_child_verifications`. Earlier versions of this endpoint returned `204 No Content`; update clients that assert on `204`. Keep your `instruction_id` in your own erasure log.

**Idempotency:** not idempotent at the HTTP level: the first call returns `200`; repeating it returns `404` because the session no longer resolves. After a `503` the session is still in place; repeat the same request to finish deleting it.

**Authentication:** send your application's API key in the `x-api-key` header; the session must belong to that application. Console user access tokens (`Authorization: Bearer ...`) may also call this endpoint when they carry the `delete:sessions` permission. Authentication and permission failures both return `403`; this API never returns `401`.

**Rate limit:** shared write budget of 300 requests/min per API key across all POST/PATCH/DELETE endpoints; exceeding it returns `429`.

To bulk-delete KYC sessions by their numeric `session_number`, use `POST /v3/sessions/delete/` instead.

DELETE /v3/session/{sessionId}/delete/

func (*SessionsService) ExportAMLScreeningHistory

func (r *SessionsService) ExportAMLScreeningHistory(ctx context.Context, sessionID string, params SessionsExportAMLScreeningHistoryParams, opts ...option.RequestOption) (*http.Response, error)

ExportAMLScreeningHistory: Export AML screening history as CSV.

Download the same ongoing-monitoring history as `GET /v3/session/{sessionId}/aml-screening-history/` as a CSV file, one line per completed re-screen, newest first, ready to hand to an auditor. The file is streamed whole (no pagination) and starts with a header line; an empty cell means unknown, dataset dates are never estimated, and a value that would start a spreadsheet formula is prefixed with an apostrophe. Works for KYC and KYB session IDs; pass `node_id` when the session ran more than one AML step. Errors are returned as JSON, not CSV. A scoped API key needs `decisions: read` and `media: read`: the response is a file, so a key without `media: read` gets `403`.

The response is a file (text/csv). Read it from the returned response's body and close it.

GET /v3/session/{sessionId}/aml-screening-history/export/

func (*SessionsService) GeneratePDF

func (r *SessionsService) GeneratePDF(ctx context.Context, sessionID string, opts ...option.RequestOption) (*http.Response, error)

GeneratePDF: Download a PDF report for a verification session.

Render and download a compliance-ready PDF report for a finished verification session. The same path serves both User Verification (KYC) and Business Verification (KYB) sessions - the server resolves the `sessionId` against both session types and picks the matching report template.

**Eligible statuses.** The session must already carry a final or reviewable status:

  • KYC sessions: `Approved`, `Declined`, `In Review`, or `Kyc Expired`.
  • KYB sessions: `Approved`, `Declined`, or `In Review`.

Any other status (`Not Started`, `In Progress`, `Expired`, `Abandoned`, …) returns `403` with an explanatory `detail` string - see the `403` response below.

**What the report contains.** The PDF mirrors the console session view at the moment of the request:

  • **KYC** - rolled-up session status, the warnings list, and one section per executed feature: ID Verification (document images plus extracted fields), NFC, Liveness, Face Match, Email Verification, Phone Verification, Proof of Address, Questionnaire answers, Database Validation, AML Screening, and IP Analysis - followed by session tags, console review activity (comments and status changes), and the session event timeline.
  • **KYB** - registry checks (company data), AML screenings, business document verifications, key-people checks, questionnaire responses, phone/email verifications, IP analyses, and the session event timeline, followed by tags and review activity.

**Branding.** If your application has white-label customization, the report is rendered with your logo and links to your privacy-policy URL; otherwise it carries Didit branding. Reports are rendered in English - there is no language parameter.

**No caching.** Every call re-renders the PDF from the current session data, so a report generated after a manual review reflects the reviewer’s decision. Two calls for the same session can produce byte-different files - archive the downloaded file if you need an immutable copy.

**Latency.** Rendering downloads every stored image (document sides, selfies, extra files) before composing the PDF, so media-heavy sessions can take several seconds. Use a generous client read timeout (60 s recommended) and stream the body to disk.

**Trailing slash.** The canonical route ends with a trailing slash (`…/generate-pdf/`). A request without it is served directly with the same response - there is no `301` redirect, so no client has to follow redirects and `curl` does not need `-L`. Use the slashed URL as in the samples.

If you need the underlying data as JSON instead of a rendered report, use `GET /v3/session/{sessionId}/decision/`. For every reportable session of one user in a single document, use `GET /v3/users/{vendor_data}/generate-pdf/`.

The response is a file (application/pdf). Read it from the returned response's body and close it.

GET /v3/session/{sessionId}/generate-pdf/

func (*SessionsService) ImportShared

ImportShared: Redeem a share token to clone a verification session into your application.

Redeem a share token to clone a KYC or KYB session into the calling application with a fresh `session_id`. Not idempotent - a token redeems once per receiver.

POST /v3/session/import-shared/

func (*SessionsService) List

List: List verification sessions (KYC and/or KYB) with filters and pagination.

Returns a paginated list of verification sessions for the application identified by your API key, newest first (descending `session_number`).

**Canonical URL:** the route is `/v3/sessions/` (trailing slash). Requests to `/v3/sessions` without the slash receive a `301` redirect to the slashed URL with the query string preserved; most HTTP clients follow it transparently on GET.

**When to use this endpoint vs webhooks.** Use this endpoint for dashboards, back-office search, reconciliation, and batch exports. Do not poll it to track the progress of individual verifications - configure [webhooks](/integration/webhooks) instead, which push `status.updated` events the moment a session changes. For one session's full result, call `GET /v3/session/{sessionId}/decision/`.

**KYC and KYB sessions.** `session_kind` selects which kinds are listed:

  • `user` (default) - User Verification (KYC) sessions only. Backward-compatible behavior.
  • `business` - Business Verification (KYB) sessions only. Rows have a different, smaller shape (see the response schema).
  • `all` - both kinds in one response: the KYC page and the KYB page for the same `limit`/`offset` are concatenated in `results` (KYC rows first), so a page can contain up to `2 x limit` rows. `count` is the sum of both kinds and `next`/`previous` reflect the KYC-side pagination. For strict pagination of mixed data, call `user` and `business` separately.

Every row carries a `session_kind` discriminator (`"user"` or `"business"`).

**Pagination.** Standard limit/offset: `limit` (default 50) and `offset` (default 0), with `next`/`previous` ready-made page URLs. For KYC rows `count` is exact. For KYB rows `count` is computed with a bounded scan and is capped at 100 - when there are more than 100 matches it stays at 100, so iterate using `next` (or by checking whether a full page came back) rather than computing total pages from `count`.

**Filter semantics.** All filters combine with AND and apply to KYC rows. When `session_kind` is `business` or `all`, the KYB side honors the shared parameters `vendor_data`, `status`, `workflow_id`, `country` (registry-company country code), `date_from`, `date_to`, `search` (company name, registration number - type registration numbers without separators, e.g. `DPC001` not `DPC-001` - vendor_data, session number, or session UUID), `warning`, and `organization_name`; the remaining KYC-only filters are ignored for KYB rows. Comma-separated parameters (`status`, `country`, `document_type`, `region`, `workflow_id`, `document_name`, `warning`, `organization_name`, `session_type`) match any of the listed values (OR within the parameter). `vendor_data` is an exact match - use `search` for partial matching. Unknown values in list filters simply return no rows (no error); malformed typed values (`date_from`, `date_to`, `didit_internal_id`, `api_service`, `session_kind`) return `400` with a per-field error object.

**Search.** `search` adapts to the input: a full UUID looks up `session_id`; digits (with optional `+ - . space`) match session-number prefix, document/personal numbers, phone-number prefix, or `vendor_data`; values containing `@` match email prefixes; any other text matches names (accent-insensitive) and `vendor_data`.

No fixed per-endpoint rate limit is enforced, but keep list polling infrequent and rely on webhooks for real-time updates.

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/sessions/

func (*SessionsService) ListAMLScreeningHistory

func (r *SessionsService) ListAMLScreeningHistory(ctx context.Context, sessionID string, params SessionsListAMLScreeningHistoryParams, opts ...option.RequestOption) (*Page[AMLScreeningRun], error)

ListAMLScreeningHistory: List AML screening history.

List every completed ongoing-monitoring re-screen of a session's AML check, newest first by `completed_at`, including the runs where nothing changed: alerts, activity entries and webhooks fire only when a result moves, so this history is the evidence that a clean subject was still being screened. Works for KYC and KYB session IDs; pass `node_id` when the session ran more than one AML step. Only ongoing-monitoring re-screens are listed (the first screening is part of the session decision) and runs from before this history existed are not reconstructed, so a session without ongoing monitoring returns an empty list. `count` is exact up to 100 and capped at 100 above that, so follow `next` until it is `null`. A scoped API key needs `decisions: read`; see [Continuous AML monitoring](https://docs.didit.me/core-technology/aml-screening/continuous-monitoring-aml-screening).

It returns one page; ListAMLScreeningHistoryAutoPaging iterates over every item of every page.

GET /v3/session/{sessionId}/aml-screening-history/

func (*SessionsService) ListAMLScreeningHistoryAutoPaging

func (r *SessionsService) ListAMLScreeningHistoryAutoPaging(ctx context.Context, sessionID string, params SessionsListAMLScreeningHistoryParams, opts ...option.RequestOption) *PageIterator[AMLScreeningRun]

ListAMLScreeningHistoryAutoPaging iterates over every item of every page of ListAMLScreeningHistory, fetching pages as needed.

func (*SessionsService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*SessionsService) ListEvents

func (r *SessionsService) ListEvents(ctx context.Context, sessionID string, params SessionsListEventsParams, opts ...option.RequestOption) (*Page[SessionEvent], error)

ListEvents: List session events.

Read the event timeline of one verification session, newest first by `sent_at`: the screens the user saw, buttons and uploads, failed attempts, status and feature-step changes, and the workflow routing trace. Works for User Verification (KYC) and Business Verification (KYB) session IDs. Events are stored asynchronously, so a new event can take a few seconds to appear. Results are paginated with `limit` and `offset`; follow `next` until it is `null`. A scoped API key needs `sessions: read` and `decisions: read`, and without `media: read` it receives `file_url` as `null`. The routing events are described in [Retrieve session](https://docs.didit.me/sessions-api/retrieve-session).

It returns one page; ListEventsAutoPaging iterates over every item of every page.

GET /v3/session/{sessionId}/events/

func (*SessionsService) ListEventsAutoPaging

func (r *SessionsService) ListEventsAutoPaging(ctx context.Context, sessionID string, params SessionsListEventsParams, opts ...option.RequestOption) *PageIterator[SessionEvent]

ListEventsAutoPaging iterates over every item of every page of ListEvents, fetching pages as needed.

func (*SessionsService) ListFeatureOverrides

func (r *SessionsService) ListFeatureOverrides(ctx context.Context, sessionID string, opts ...option.RequestOption) (*SessionsListFeatureOverridesResponse, error)

ListFeatureOverrides: List a session's check overrides.

Every override of an individual feature (step) status on a User Verification (KYC) or Business Verification (KYB) session, newest first and not paginated: applied ones, ones waiting for the person to finish the flow (`pending_until_flow_finishes`) and cancelled ones, each with who asked, their reason, and whether it applied while the person was still in the flow (`forced`).

`person_in_flow` tells you whether a new override with `defer_until_flow_finishes: true` would wait. `flow_finished_at` is when the person last finished the flow; it is `null` while they are still in it (a resubmission included) and when the session closed before they finished.

Requires the `read:sessions` privilege; a scoped API key needs read access to decisions.

GET /v3/session/{sessionId}/features/overrides/

func (*SessionsService) ListNetworks

func (r *SessionsService) ListNetworks(ctx context.Context, sessionID string, opts ...option.RequestOption) (*EntityNetworkMembershipList, error)

ListNetworks: List networks for a session.

List the networks the session's vendor user belongs to. Resolves through the session's vendor_data-linked user.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/sessions/{session_id}/networks/

func (*SessionsService) PreviewDecisionEmail

PreviewDecisionEmail: Preview a session's decision email.

Render the email the person receives when you set a session to `Approved` or `Declined` with `send_email: true`, without changing the session or sending anything. The response shows the subject and HTML exactly as they are sent, the recipient, the sender, the language, and whether confirming the change sends the email at all (`will_be_sent`, `not_sent_reason`).

The recipient is the person's own address: the one they verified in an email verification step of the flow, else the one given in `contact_details` when the session was created. The sender is your application's verified sender domain when white label applies (`sender_kind: customer`), else Didit's sender (`sender_kind: didit`).

To send exactly what you previewed, call [Update Session Status](/sessions-api/update-status) with the same `new_status`, `send_email: true`, `email_address` set to `recipient`, `email_language` set to `language` and `email_preview_token` set to `preview_token`. The receipt expires after 15 minutes. When the recipient, language, session status, sender or email changed since the preview, the update returns `409` before anything changes; preview again and confirm with the new receipt.

Works for User Verification (KYC) and Business Verification (KYB) sessions in `Approved`, `Declined`, `In Review`, `Kyc Expired`, `Abandoned` or `Resubmitted` status. The status check runs before body validation. Requires the `write:sessions` privilege; a scoped API key needs write access to decisions. Responses use `Cache-Control: no-store`: treat them as sensitive verification content.

POST /v3/session/{sessionId}/decision-email-preview/

func (*SessionsService) PreviewResubmission

PreviewResubmission: Preview a resubmission email.

Render the email that would accompany a KYC or KYB resubmission without changing the session, resetting checks, extending its expiry, running checks or sending mail. Requires the `write:sessions` privilege (a scoped API key needs write access to decisions) and a session in `Approved`, `Declined`, `In Review`, `Kyc Expired` or `Abandoned` status. The server validates the selected workflow steps and renders its fixed translated template with the applicable verified white-label sender and branding. The request cannot set a subject, message body or action URL.

`email_address` is optional. Without it, the email goes to the person's own address: the one they verified in an email verification step of the flow, else the one given in `contact_details` when the session was created. An address you pass wins (`recipient_source: request`). When no address is known and you pass none, `recipient` and `preview_token` are empty strings and no email can be sent.

The response includes the recipient and where it comes from, the sender, subject, HTML, language, resolved steps, whether confirming sends the email (`will_be_sent`, `not_sent_reason`) and a signed `preview_token`. `requires_user_action` is `false` when every selected step runs without the person: the resubmission then finishes on its own and no email goes out (`not_sent_reason: no_user_action`).

This preview does not reserve session state or authorize delivery. After reviewing it, call [Update Session Status](/sessions-api/update-status) with `new_status: Resubmitted`, the same `nodes_to_resubmit` and `email_language` you previewed, `send_email: true`, `email_address` set to `recipient` and `email_preview_token` set to `preview_token`. The receipt expires after 15 minutes. When a receipt is supplied, changed inputs, message content, sender or session state return `409` before any mutation or send. Existing integrations may omit the receipt. Regenerate the preview after a conflict. Treat the response as sensitive verification content; responses use `Cache-Control: no-store`. Render HTML in a sandboxed frame, never directly in your application DOM.

POST /v3/session/{sessionId}/resubmission-preview/

func (*SessionsService) RegenerateKYBParty

func (r *SessionsService) RegenerateKYBParty(ctx context.Context, sessionID string, partyUUID string, opts ...option.RequestOption) (*KYBKeyPeopleParty, error)

RegenerateKYBParty: Regenerate a Key People party's KYC session.

Give a Key People party of a Business Verification (KYB) session a new individual KYC session after its previous one was deleted or expired before the person started it, so the Key People check can finish again; send no request body. It works when the party's KYC session was deleted (`kyc_session_deleted: true`) or expired before the person started it (`Expired`, never started). A session still in progress or one that ended in any other status (`Approved`, `Declined`, `In Review`, `Abandoned`, ...) returns `409` unless it was deleted. A party that never had one or a company party always returns `409`. Didit creates a new hosted KYC session with the workflow the party was verified with (its latest published version) or, when that is no longer known, the workflow your Key People settings assign to the party's role, so its link lasts that KYC workflow's session expiration time; it emails the link to the party when an email is on file, clears `is_skipped`, and recomputes the Key People check and the business session status. It then sends a `data.updated` [webhook](https://docs.didit.me/integration/webhooks) for the business session with trigger `console_key_people_regenerate`; to exempt the party instead, use `PATCH /v3/session/{sessionId}/kyb/parties/{partyUuid}/`. A scoped API key needs `decisions: write`, and without `sessions: write` it receives `kyc_session_url` as `null`. Deleted sessions qualify even if the person had already started or finished verification. Imported sessions do not qualify through expiry; they must have been deleted.

POST /v3/session/{sessionId}/kyb/parties/{partyUuid}/regenerate/

func (*SessionsService) RetrieveDecision

func (r *SessionsService) RetrieveDecision(ctx context.Context, sessionID string, params SessionsRetrieveDecisionParams, opts ...option.RequestOption) (*SessionDecision, error)

RetrieveDecision: Retrieve the full decision for a verification session.

Retrieve the complete decision report for a verification session - the rolled-up session `status` plus one report per verification feature the workflow executed. This is the canonical read endpoint for both User Verification (KYC) and Business Verification (KYB) sessions: the same path serves both, and the top-level `session_kind` discriminator tells you which shape you received (`"user"` or `"business"`).

**Every feature report is a plural array.** V3 workflows are graphs that can run the same feature more than once, so each block (`id_verifications`, `nfc_verifications`, `liveness_checks`, `face_matches`, `poa_verifications`, `document_ai_documents`, `phone_verifications`, `email_verifications`, `aml_screenings`, `ip_analyses`, `database_validations`, `questionnaire_responses`) is a JSON array whose items each carry a `node_id` identifying the workflow graph node that produced them. Read NFC as `response.nfc_verifications[0]` - never as a singular `nfc` field. A block is `null` until the workflow has run that feature at least once; features the workflow does not include never appear with data. Electronic Signature results are in `signatures`, which is present only when the workflow has an Electronic Signature step.

**When to call.** The recommended pattern is event-driven: wait for the `status.updated` webhook that fires when the session reaches a decision (`Approved`, `Declined`, `In Review`), then call this endpoint once to fetch the full report. Polling also works - the endpoint can be called at any point in the session lifecycle and returns the data produced so far - but webhook-then-fetch is cheaper and faster. Media URLs in the response (document images, videos, PDFs) are short-lived presigned links: fetch them promptly or re-request the decision to get fresh ones, and do not persist them as long-term references.

**Statuses.** The top-level `status` is the session lifecycle status (`Not Started`, `In Progress`, `Awaiting User`, `In Review`, `Approved`, `Declined`, `Resubmitted`, `Expired`, `Kyc Expired`, `Abandoned`). Each feature item additionally carries its own feature-level `status` (`Not Finished`, `Approved`, `Declined`, `In Review`, ...). A session can be `Approved` overall while an individual feature is `In Review`, depending on the workflow's decision rules.

**Authentication and visibility.** Authenticate with the application API key in the `x-api-key` header (a console user Bearer token with the `read:sessions` permission also works). Only sessions owned by the authenticated application are visible. If your workflow restricts response attributes, non-allowed fields inside feature items are returned as `null` while `status`, `warnings`, and `node_id` are always preserved.

**Rate limits.** GET requests are limited to 600 per minute per API key. Exceeding the limit returns `429` with `Retry-After` and `X-RateLimit-*` headers.

GET /v3/session/{sessionId}/decision/

func (*SessionsService) RetrieveDeletionJob

func (r *SessionsService) RetrieveDeletionJob(ctx context.Context, jobID string, opts ...option.RequestOption) (*SessionDeletionJob, error)

RetrieveDeletionJob: Get a bulk session deletion job.

Progress of a bulk session deletion that `POST /v3/sessions/delete/` answered with `202` (more than 20 matching sessions, selected by `session_numbers` or with `delete_all`). Poll every few seconds while `status` is `PENDING` or `PROCESSING`; stop when it is `COMPLETED` or `FAILED`.

The job reports how many sessions ended in each outcome and how many it has processed, never which sessions it deleted. A `FAILED` job carries the reason in `error`; the sessions it had not reached are still in place, so repeat the deletion request to delete them.

**Authentication:** API key in the `x-api-key` header. A job is only visible to the application that created it; any other `job_id` returns `404`. Missing or invalid credentials return `403`; this API never returns `401`.

GET /v3/sessions/delete/{job_id}/

func (*SessionsService) Share

Share: Mint a share token for a finished verification session.

Mint a short-lived JWT that lets a specific Didit application import this finished session. Pair with `POST /v3/session/import-shared/`.

POST /v3/session/{sessionId}/share/

func (*SessionsService) Simulate

Simulate: Simulate a sandbox session's status.

Force a terminal status on a sandbox session after the fact, from your backend, without running the flow. Sandbox applications only: a live session returns `404`. Works for User Verification (KYC) and Business Verification (KYB) sessions.

Set `new_status`, or let `scenario` or `risk` supply it. `risk` (or the first risk the scenario's magic values carry) adds that warning to the session. The change is recorded in the session's activity.

`send_webhooks` (default `true`) sends exactly the webhooks a real status change sends. With `false` the status still changes and the console still updates live, but no webhook is logged or sent, the missed-webhook recovery never re-sends that decision, and the next status change sends webhooks as usual. The response echoes the value applied.

Requires the `write:sessions` privilege; a scoped API key needs write access to sessions. An unknown `session_id` returns `404` and another application's session returns `403`, both before the body is read; a live session returns `404` only after the body is validated. To simulate from the hosted flow with the session's own token, use `POST /v3/session/{sessionId}/sandbox/simulate/`. See [Sandbox & Test Data](/integration/sandbox-testing) for the scenario catalog.

POST /v3/session/{sessionId}/simulate/

func (*SessionsService) UpdateAMLHitStatus

UpdateAMLHitStatus: Update an AML hit review status.

Set the review status of a **single AML hit** (a potential sanction / PEP / watchlist / adverse-media match) returned by AML screening, without changing the overall session decision. Identify the hit by its `hit_id` (the `id` of an entry in the AML check's `hits` array - see the session decision).

`review_status` is one of `Unreviewed`, `Confirmed Match`, `False Positive`, or `Inconclusive`. Reviewer decisions are preserved across ongoing-monitoring updates, so a hit you mark `False Positive` stays that way when the provider re-screens.

A successful call fires a `data.updated` webhook and appends an activity entry (with actor attribution) to the session's review trail. For graph workflows with multiple AML checks, pass `node_id` to target a specific check.

Authenticate with your API key (`x-api-key`) or a user authorization header - either must carry the `write:sessions` privilege.

PATCH /v3/session/{sessionId}/update-aml-hit-status/

func (*SessionsService) UpdateAMLStatus

UpdateAMLStatus: Update an AML check status.

Set the status of a session's AML screening check as a whole (the `status` of an `aml_screenings[]` entry in the session decision), for example `Approved` after your team cleared every hit. Works for KYC and KYB session IDs; pass `node_id` (query parameter or body field) when the session ran more than one AML step, otherwise the most recent AML check is updated. When the status actually changes, an `AML_STATUS_UPDATED` activity entry is recorded and a `data.updated` [webhook](https://docs.didit.me/integration/webhooks) is sent; sending the current status returns `200` and changes nothing. The session status is not recomputed: use `PATCH /v3/session/{sessionId}/update-status/` for the session decision and `PATCH /v3/session/{sessionId}/update-aml-hit-status/` for single hits. A scoped API key needs `decisions: write`.

PATCH /v3/session/{sessionId}/update-aml-status/

func (*SessionsService) UpdateData

UpdateData: Update KYC data extracted from the ID document on a verification session.

Correct the identity fields that were extracted (OCR / NFC) from the user's ID document - misread names, dates, document numbers, and so on - after the verification has finished. Typical callers are a compliance analyst working from your own back office, or an automated reconciliation job. Every field in the body is optional: only the keys you send are written, everything else is left untouched (`PATCH` semantics).

The session must belong to your application and be in `Approved`, `Declined`, `In Review`, or `Kyc Expired` status. Sessions in any other state (e.g. still `In Progress`) return `404` with `"No Session matches the given query."` - distinct from the `"Not found."` returned for an unknown or deleted `sessionId`. The session must also carry an ID-verification (KYC) record: sessions whose workflow never ran an ID-verification step return `404` (`"The session does not have a KYC."`). For graph workflows with multiple ID-verification steps, target a specific step with `node_id` (query parameter or body field); when omitted, the most recent KYC record is patched.

Two derived fields are recomputed on every call: `full_name` (from `first_name` + `last_name`) and `issuing_state_name` (from `issuing_state`). If the free-text `address` changes, the server may also re-geocode it and refresh `parsed_address` (skipped for sandbox sessions). `extra_fields` and `parsed_address` are merged key-by-key rather than replaced - see the per-field descriptions for the `null`-to-delete semantics.

Submitting at least one valid field fires the `data.updated` [webhook](/integration/webhooks) (trigger `manual_review`) - even when the submitted values equal the stored ones. When values actually change, a `KYC_DATA_UPDATED` activity entry recording the changed fields with previous and new values is appended to the session's `reviews`, visible in [Get Decision](#get-/v3/session/-sessionId-/decision/) and the console activity timeline. The session's status and decision are **not** re-evaluated - use [Update Status](#patch-/v3/session/-sessionId-/update-status/) to change the outcome. An empty JSON body (`{}`) is accepted and simply returns the current KYC data without firing the webhook.

Accepts an API key or a console user token; either way the credential needs the `write:sessions` permission. Authentication and permission failures both return `403` - this API never responds `401`. Note that the session lookup runs before credential checks, so an unknown `sessionId` returns `404` even with missing credentials. This endpoint has a dedicated rate limit of 10 requests per minute per API key (invalid requests count too); the shared write budget of 300 requests per minute also applies.

PATCH /v3/session/{sessionId}/update-data/

func (*SessionsService) UpdateDocumentAiData

func (r *SessionsService) UpdateDocumentAiData(ctx context.Context, sessionID string, documentUUID string, params SessionsUpdateDocumentAiDataParams, opts ...option.RequestOption) (*SessionsUpdateDocumentAiDataResponse, error)

UpdateDocumentAiData: Update a Document AI document.

Correct the fields Document AI extracted from one uploaded document, set its review status, or both, on a KYC or KYB session. `extracted_data` must be a JSON object and is merged key by key: a key you send replaces the stored value (a key sent as `null` is stored as `null`) and keys you leave out keep their values. The document status feeds the Document AI result of its workflow node in the session decision; the session status itself is not recomputed. Every successful call, including one that changes nothing, sends a `data.updated` [webhook](https://docs.didit.me/integration/webhooks) with trigger `manual_review`. A scoped API key needs `decisions: write`; see [Document AI](https://docs.didit.me/core-technology/document-ai/overview).

PATCH /v3/document-ai/{sessionId}/documents/{documentUuid}/

func (*SessionsService) UpdateFeatureStatus

UpdateFeatureStatus: Update an individual feature (step) status.

Set the status of a single verification feature (step) within a session. Target the feature by its workflow graph `nodeId`. On non-graph workflows, whose steps have no node, use `default` and also pass `feature_type` to say which step you mean.

Works for both User Verification (KYC) and Business Verification (KYB) sessions and every step type: ID/OCR, Liveness, Face Match, NFC, AML, Proof of Address, Phone, Email, Database Validation, Questionnaire, and the KYB registry / documents / key-people checks. This endpoint is **not** available for standalone API sessions (`session_type = API`).

`new_status` must be one of `Approved`, `Declined`, or `In Review`, and must differ from the feature's current status.

**When the override applies.** Without `defer_until_flow_finishes` (or with `false`) the override applies at once, as it always did; when the person is still in the flow it is recorded as `forced`. With `defer_until_flow_finishes: true` while the person is still in the flow (the session is `Not Started`, `In Progress` or `Resubmitted` and has not finished), the override is stored as `pending_until_flow_finishes` and applies when the flow finishes, after the flow reaches its own decision. On a session whose flow already ended it applies at once either way. A waiting override is cancelled instead when the person redoes its step before finishing, when a newer override on the same check replaces it, when the session leaves the flow unfinished (abandoned, expired, or decided mid-flow), or when you cancel it with `POST /v3/session/{sessionId}/features/overrides/{overrideId}/cancel/`. List a session's overrides with `GET /v3/session/{sessionId}/features/overrides/`.

**Effect on the session.** A session that already has a decision keeps it: only the check changes. When the session has no decision yet and its workflow is waiting on exactly this step, applying the override completes the step: the workflow moves on, later steps run, and a status node can set the session decision and fire `status.updated`.

**Webhooks and activity.** A `data.updated` webhook fires when the override applies (at once, or when the flow finishes), never while it waits or when it is cancelled. Every override is recorded in the session's activity as `FEATURE_OVERRIDE_PENDING`, `FEATURE_OVERRIDE_APPLIED` or `FEATURE_OVERRIDE_CANCELLED`, with who made it; the request's entry carries your `comment`.

Authenticate with your API key (`x-api-key`) or a user authorization header carrying the `write:sessions` privilege; a scoped API key needs write access to decisions.

PATCH /v3/session/{sessionId}/features/{nodeId}/update-status/

func (*SessionsService) UpdateKYBCompanyData

func (r *SessionsService) UpdateKYBCompanyData(ctx context.Context, sessionID string, companyUUID string, params SessionsUpdateKYBCompanyDataParams, opts ...option.RequestOption) (*SessionsUpdateKYBCompanyDataResponse, error)

UpdateKYBCompanyData: Update registry-extracted company data on a Business Verification (KYB) session.

Correct the registry-extracted company data on a Business Verification (KYB) session - company name, registration number, addresses, status, contact details - identified by `companyUuid`. Typical callers are a compliance analyst fixing a registry misread, or your back office syncing corrected company data. Every field in the body is optional (`PATCH` semantics); an empty JSON body (`{}`) is a no-op that simply echoes the current company record.

Edits are written in two places at once: fields with a canonical company column (name, registration number, country, incorporation date, tax number, type, statuses, capital fields (`registered_capital`, `registered_capital_amount`, `registered_capital_currency`), alternative names, nature of business, website, email, phone, LEI, location, and `legal_address` → `registered_address`) update that column, and **every** submitted key is also merged into the `registry_data` snapshot (dates as ISO strings) so the "extracted from registry" view reflects the correction. Fields without a column - `region`, `registration_date`, `dissolution_date`, `control_scheme` - land in `registry_data` only. `user_provided_data` (what the end user confirmed in the hosted flow) is never touched, and `last_console_edit_at` is stamped on every non-empty PATCH.

Unlike the KYC/POA update endpoints, there is **no session-status gate**: the company can be edited at any point in the business session's lifecycle. The company must belong to the session in the path (`404` with `"KYB company does not belong to the given session."` otherwise) and to your application. Every non-empty PATCH fires the `data.updated` [webhook](/integration/webhooks) on the business session (trigger `console_registry_edit`) - even when the submitted values equal the stored ones. The session's status and decision are **not** re-evaluated, and no review/audit entry is recorded.

Accepts an API key or a console user token; either way the credential needs the `write:businesses` permission. Authentication and permission failures both return `403` - this API never responds `401`. Note that the session lookup runs before credential checks, so an unknown `sessionId` returns `404` even with missing credentials. The shared write budget of 300 requests per minute per API key applies.

For User Verification sessions, the KYC counterpart is `PATCH /v3/session/{sessionId}/update-data/`; to change the session decision itself use `PATCH /v3/session/{sessionId}/update-status/`.

PATCH /v3/session/{sessionId}/kyb/{companyUuid}/update-data/

func (*SessionsService) UpdateKYBParty

func (r *SessionsService) UpdateKYBParty(ctx context.Context, sessionID string, partyUUID string, params SessionsUpdateKYBPartyParams, opts ...option.RequestOption) (*SessionsUpdateKYBPartyResponse, error)

UpdateKYBParty: Skip (or re-require) a Key People party on a Business Verification (KYB) session.

Exempt a Key People party from verification, or put it back in scope. This is the operator escape hatch for a party that can never finish its own check - most often because the individual KYC session handed to a UBO or director was deleted, which freezes that child's status and leaves the KYB parked in `Awaiting User` with nothing left that could move it.

Setting `is_skipped: true` drops the party out of the Key People aggregation and immediately recomputes the `KYBKeyPeopleCheck` and the parent session status, so the business session can settle and then be approved or declined. Sending `is_skipped: false` puts the party back in scope and the check goes back to waiting on it.

Unlike the applicant-facing skip in the hosted Key People screen, this endpoint is **not** gated by the role's `allow_skip` setting - that flag limits what the applicant may decide, not what your analyst may override. `requires_verification` is deliberately left untouched, so an overridden party reads as `requires_verification: true` **and** `is_skipped: true` and the record still shows what the rules asked for.

The party must belong to the session in the path (`404` with `"Party does not belong to the given session."` otherwise) and to your application. A PATCH that actually changes the flag fires the `data.updated` [webhook](/integration/webhooks) on the business session with trigger `console_key_people_skip`; a PATCH that sets the flag to its current value is a no-op that echoes the party back.

Accepts an API key or a console user token; either way the credential needs the `write:businesses` permission.

PATCH /v3/session/{sessionId}/kyb/parties/{partyUuid}/

func (*SessionsService) UpdatePOAData

UpdatePOAData: Update Proof of Address data extracted from the POA document on a verification session.

Correct the fields extracted from the user's Proof of Address document - utility bill, bank statement, or other address evidence - after the verification has finished: issuer, dates, the printed name, the address itself, and banking details. Every field in the body is optional: only the keys you send are written, everything else is left untouched (`PATCH` semantics).

The session must belong to your application and be in `Approved`, `Declined`, `In Review`, or `Kyc Expired` status. Sessions in any other state (e.g. still `In Progress`) return `404` with `"No Session matches the given query."` - distinct from the `"Not found."` returned for an unknown or deleted `sessionId`. The session must also carry a POA record: sessions whose workflow never ran a Proof of Address step return `404` (`"The session does not have a POA."`). For graph workflows with multiple POA steps, target a specific step with `node_id` (query parameter or body field); when omitted, the most recent POA record is patched.

`extra_fields` is merged key-by-key: nine known keys (`bank_iban`, `additional_names`, …) write through to dedicated POA columns, any other key is kept as a custom extra, and `null` / `""` deletes a key. `poa_parsed_address` accepts only the seven documented keys and recomputes `formatted_address` / `poa_formatted_address` after every edit. If the free-text `poa_address` changes, the server may also re-geocode it and refresh the structured address (skipped for sandbox sessions).

Unlike the KYC variant of this endpoint, the `data.updated` [webhook](/integration/webhooks) (trigger `manual_review`) fires only when at least one stored value **actually changed** - re-sending identical values is a silent no-op. When values change, a `POA_DATA_UPDATED` activity entry recording the changed fields with previous and new values is appended to the session's `reviews`, visible in [Get Decision](#get-/v3/session/-sessionId-/decision/) and the console activity timeline. The session's status and decision are **not** re-evaluated - use [Update Status](#patch-/v3/session/-sessionId-/update-status/) to change the outcome.

Accepts an API key or a console user token; either way the credential needs the `write:sessions` permission. Authentication and permission failures both return `403` - this API never responds `401`. Note that the session lookup runs before credential checks, so an unknown `sessionId` returns `404` even with missing credentials. This endpoint has a dedicated rate limit of 10 requests per minute per API key (invalid requests count too); the shared write budget of 300 requests per minute also applies.

An empty JSON body `{}` is a no-op: it returns `200` echoing the current POA record without firing the webhook (`has_changes` stays false).

PATCH /v3/session/{sessionId}/update-poa-data/

func (*SessionsService) UpdateStatus

UpdateStatus: Approve, decline, or request resubmission for a verification session.

Manually override the final decision of a KYC or KYB verification session. Set `new_status` to `Approved` or `Declined` to record a manual decision, or to `Resubmitted` to clear specific verification steps and let the user redo them through the same verification URL. The endpoint accepts both user (KYC) and business (KYB) session IDs.

Call it once a session has reached a reviewable state: the current status must be `Approved`, `Declined`, `In Review`, `Kyc Expired`, `Abandoned`, or `Resubmitted`. Sessions that are still `Not Started`, `In Progress`, or `Awaiting User`, or that ended as `Expired`, return `400`. Your API key needs the `write:sessions` permission (a scoped API key needs write access to decisions). The eligible-state check runs before body validation, so an ineligible session returns the `Wrong Current Status` error even when the payload is also invalid.

For `Resubmitted`, pass `nodes_to_resubmit` to choose which workflow steps the user must redo, or omit it to auto-select existing feature attempts in a resubmittable state (`Declined`, `In Review`, `Not Finished`, `Expired`). Never-attempted features are not auto-selected: list them explicitly in `nodes_to_resubmit`, or the request returns `400` when no recorded attempt needs resubmission. The selected steps' previous results move to the resubmission's history (returned by Get Decision with `include=resubmissions`), the steps are reordered to match the workflow graph, the session's expiration window restarts, and the original verification URL becomes usable again. Backend-only steps (`AML`, `DATABASE_VALIDATION`, `IP_ANALYSIS`) at the head of the list run immediately without user interaction; if every resubmitted step is backend-only, the session re-finalizes within the same request. `KYB_REGISTRY` and `KYB_KEY_PEOPLE` cannot be resubmitted directly: resubmit the relevant child KYC sessions instead and the parent business session recomputes automatically.

Every call that changes the status fires the `status.updated` [webhook](/integration/webhooks) once the change commits and appends an activity entry (with actor attribution and your `comment`) to the session's `reviews`, visible in [Get Decision](#get-/v3/session/-sessionId-/decision/) and in the console activity timeline. The user-profile aggregates linked to the session's `vendor_data` update as well. Declining disables ongoing AML monitoring for the session; re-approving re-enables it (from `Resubmitted`, `Declined`, or `Kyc Expired`) when the workflow has monitoring turned on. Approving or declining a child KYC that belongs to a KYB key-people check recomputes the parent business session's status. Set `send_email: true` (with `email_address`) to notify the user: a status notice for `Approved`/`Declined`, or a resubmission email containing the verification link and per-step reasons for `Resubmitted`. To check the email first, preview it with [Preview Decision Email](/sessions-api/preview-decision-email) (`Approved`, `Declined`) or [Preview Resubmission Email](/sessions-api/preview-resubmission) (`Resubmitted`) and pass its `preview_token` as `email_preview_token`: the update then sends exactly the previewed email, or returns `409` before changing anything when the email or the session changed since the preview or the receipt is older than 15 minutes.

Repeating `Approved` or `Declined` on a session that already has that status changes nothing and returns `200`: no webhook, no activity entry and no email. Repeating `Resubmitted` returns `400` (`The new status is the same as the current status.`). Missing or invalid credentials and missing permissions return `403`; an expired scoped API key returns `401`.

PATCH /v3/session/{sessionId}/update-status/

type SessionsShareParams

type SessionsShareParams struct {
	// UUID of the Didit application that will redeem the token. Must exist, must
	// not be deleted, and must differ from the calling application. Find it in the
	// Business Console under **Settings → Application**. Required.
	ForApplicationID string `json:"for_application_id"`

	// Token lifetime, in seconds. Minimum `60`, maximum `86400` (24 h). Defaults to
	// `3600` (1 h).
	TTLInSeconds Opt[int64] `json:"ttl_in_seconds"`
}

SessionsShareParams holds the parameters of Client.Sessions.Share.

func (SessionsShareParams) MarshalJSON

func (r SessionsShareParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsShareResponse

type SessionsShareResponse struct {
	// HS256-signed JWT. Pass this verbatim as `share_token` to [`POST
	// /v3/session/import-shared/`](/sessions-api/import-shared-session) on the
	// target application.
	ShareToken string `json:"share_token"`

	// Echoes the target application UUID that the token is bound to.
	ForApplicationID string `json:"for_application_id"`

	// Whether the source session is a User Verification (KYC) or Business
	// Verification (KYB) session.
	SessionKind SessionsShareResponseSessionKind `json:"session_kind"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsShareResponse is a response object.

func (*SessionsShareResponse) UnmarshalJSON

func (r *SessionsShareResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsShareResponse leniently.

type SessionsShareResponseSessionKind

type SessionsShareResponseSessionKind string

SessionsShareResponseSessionKind: Whether the source session is a User Verification (KYC) or Business Verification (KYB) session.

SessionsShareResponseSessionKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsShareResponseSessionKindUser     SessionsShareResponseSessionKind = "user"
	SessionsShareResponseSessionKindBusiness SessionsShareResponseSessionKind = "business"
)

Known values of SessionsShareResponseSessionKind.

type SessionsSignaturesDownloadEvidenceParams

type SessionsSignaturesDownloadEvidenceParams struct {
	// `id` of the signer's item in `signatures[]`.
	SignatureID Opt[string] `json:"-" query:"signature_id"`
}

SessionsSignaturesDownloadEvidenceParams holds the parameters of Client.Sessions.Signatures.DownloadEvidence.

func (SessionsSignaturesDownloadEvidenceParams) MarshalJSON

MarshalJSON encodes the fields that are set.

type SessionsSignaturesService

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

SessionsSignaturesService holds the sessions signatures operations. Use it through Client.Sessions.Signatures.

func (*SessionsSignaturesService) DownloadDocument

func (r *SessionsSignaturesService) DownloadDocument(ctx context.Context, sessionID string, nodeID string, documentID string, opts ...option.RequestOption) (*http.Response, error)

DownloadDocument: Download a signed document.

Download the signed PDF of one document of an Electronic Signature step. Use the `signed_file` path of `signatures[].documents[]` in the decision. The PDF holds the document the signer was shown with their field values stamped, the evidence page (unless `signature_evidence_page` is off) and the PAdES signature with its timestamp. Didit checks the file against `sha256_signed` before returning it.

Works for User Verification (KYC) and Business Verification (KYB) sessions. Needs `read:sessions`; your API key works. See the [Electronic Signature report](/core-technology/electronic-signature/report-electronic-signature#download-the-signed-documents).

The response is a file (application/pdf). Read it from the returned response's body and close it.

GET /v3/session/{sessionId}/signatures/{nodeId}/documents/{documentId}/file/

func (*SessionsSignaturesService) DownloadEvidence

DownloadEvidence: Download the signature evidence.

Download a signer's evidence PDF: the level and format, the signer and their verified identity session, the code confirmation, the IP address, each document with its original SHA-256 and field values, the certificate, the timestamp and the SHA-256 of every signed file. Use the `evidence_file` path of the signer's item in `signatures[]`.

Always pass `signature_id` when a Business Verification step has several signers: without it, the route picks one of the step's signers. Needs `read:sessions`; your API key works.

The response is a file (application/pdf). Read it from the returned response's body and close it.

GET /v3/session/{sessionId}/signatures/{nodeId}/evidence/

func (*SessionsSignaturesService) DownloadFieldImage

func (r *SessionsSignaturesService) DownloadFieldImage(ctx context.Context, sessionID string, nodeID string, fieldID string, opts ...option.RequestOption) (*http.Response, error)

DownloadFieldImage: Download a signature image.

Download the signature or initials a signer applied to a field, as PNG. Use the `image_url` of the field in `signatures[].documents[].fields[]`. Needs `read:sessions`; your API key works.

The response is a file (image/png). Read it from the returned response's body and close it.

GET /v3/session/{sessionId}/signatures/{nodeId}/fields/{fieldId}/image/

func (*SessionsSignaturesService) Validate

Validate: Validate signatures again.

Re-check the signed documents of an Electronic Signature step. Didit re-reads every signed PDF, checks its SHA-256 and validates the PAdES signature, the certificate, the revocation data and the timestamp, then saves the result in each signer's `validation` and returns the updated items. Nothing is signed again. Send `signature_id` to check one signer; without it, every signer of the step is checked, and the call fails if any of them hasn't signed.

Needs `write:sessions`; your API key works. In the console it's the **Validate again** button.

POST /v3/session/{sessionId}/signatures/{nodeId}/validate/

type SessionsSignaturesValidateParams

type SessionsSignaturesValidateParams struct {
	// `id` of one signer's item in `signatures[]`.
	SignatureID Opt[string] `json:"signature_id"`
}

SessionsSignaturesValidateParams holds the parameters of Client.Sessions.Signatures.Validate.

func (SessionsSignaturesValidateParams) MarshalJSON

func (r SessionsSignaturesValidateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsSignaturesValidateResponse

type SessionsSignaturesValidateResponse struct {
	Signatures []SignatureResult `json:"signatures"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsSignaturesValidateResponse is a response object.

func (*SessionsSignaturesValidateResponse) UnmarshalJSON

func (r *SessionsSignaturesValidateResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsSignaturesValidateResponse leniently.

type SessionsUpdateAMLHitStatusParams

type SessionsUpdateAMLHitStatusParams struct {
	// The `id` of the hit in the AML check's `hits` array. Required.
	HitID string `json:"hit_id"`

	// The new review status for the hit. Required.
	ReviewStatus SessionsUpdateAMLHitStatusParamsReviewStatus `json:"review_status"`

	// Optional graph node ID. Use it (here or as a query parameter) when the
	// session has multiple AML checks.
	NodeID Opt[string] `json:"node_id"`

	// Workflow graph node ID. Required only when the session has multiple AML
	// checks (one per node); omit it for single-AML sessions.
	NodeIDQuery Opt[string] `json:"-" query:"node_id"`
}

SessionsUpdateAMLHitStatusParams holds the parameters of Client.Sessions.UpdateAMLHitStatus.

func (SessionsUpdateAMLHitStatusParams) MarshalJSON

func (r SessionsUpdateAMLHitStatusParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsUpdateAMLHitStatusParamsReviewStatus

type SessionsUpdateAMLHitStatusParamsReviewStatus string

SessionsUpdateAMLHitStatusParamsReviewStatus: The new review status for the hit.

SessionsUpdateAMLHitStatusParamsReviewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateAMLHitStatusParamsReviewStatusUnreviewed     SessionsUpdateAMLHitStatusParamsReviewStatus = "Unreviewed"
	SessionsUpdateAMLHitStatusParamsReviewStatusConfirmedMatch SessionsUpdateAMLHitStatusParamsReviewStatus = "Confirmed Match"
	SessionsUpdateAMLHitStatusParamsReviewStatusFalsePositive  SessionsUpdateAMLHitStatusParamsReviewStatus = "False Positive"
	SessionsUpdateAMLHitStatusParamsReviewStatusInconclusive   SessionsUpdateAMLHitStatusParamsReviewStatus = "Inconclusive"
)

Known values of SessionsUpdateAMLHitStatusParamsReviewStatus.

type SessionsUpdateAMLHitStatusResponse

type SessionsUpdateAMLHitStatusResponse struct {
	// Always `Hit status updated successfully`.
	Message string `json:"message"`

	// The updated hit, with surrounding whitespace removed.
	HitID string `json:"hit_id"`

	// The review status now stored on the hit.
	ReviewStatus SessionsUpdateAMLHitStatusResponseReviewStatus `json:"review_status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsUpdateAMLHitStatusResponse is a response object.

func (*SessionsUpdateAMLHitStatusResponse) UnmarshalJSON

func (r *SessionsUpdateAMLHitStatusResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsUpdateAMLHitStatusResponse leniently.

type SessionsUpdateAMLHitStatusResponseReviewStatus

type SessionsUpdateAMLHitStatusResponseReviewStatus string

SessionsUpdateAMLHitStatusResponseReviewStatus: The review status now stored on the hit.

SessionsUpdateAMLHitStatusResponseReviewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateAMLHitStatusResponseReviewStatusUnreviewed     SessionsUpdateAMLHitStatusResponseReviewStatus = "Unreviewed"
	SessionsUpdateAMLHitStatusResponseReviewStatusConfirmedMatch SessionsUpdateAMLHitStatusResponseReviewStatus = "Confirmed Match"
	SessionsUpdateAMLHitStatusResponseReviewStatusFalsePositive  SessionsUpdateAMLHitStatusResponseReviewStatus = "False Positive"
	SessionsUpdateAMLHitStatusResponseReviewStatusInconclusive   SessionsUpdateAMLHitStatusResponseReviewStatus = "Inconclusive"
)

Known values of SessionsUpdateAMLHitStatusResponseReviewStatus.

type SessionsUpdateAMLStatusParams

type SessionsUpdateAMLStatusParams struct {
	// New status of the AML check. Required.
	Status SessionsUpdateAMLStatusParamsStatus `json:"status"`

	// Workflow graph node ID of the AML check, as an alternative to the query
	// parameter.
	NodeID Opt[string] `json:"node_id"`

	// Workflow graph node ID of the AML check to update. Needed only when the
	// session ran more than one AML step. Takes precedence over `node_id` in the
	// body.
	NodeIDQuery Opt[string] `json:"-" query:"node_id"`
}

SessionsUpdateAMLStatusParams holds the parameters of Client.Sessions.UpdateAMLStatus.

func (SessionsUpdateAMLStatusParams) MarshalJSON

func (r SessionsUpdateAMLStatusParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsUpdateAMLStatusParamsStatus

type SessionsUpdateAMLStatusParamsStatus string

SessionsUpdateAMLStatusParamsStatus: New status of the AML check.

SessionsUpdateAMLStatusParamsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateAMLStatusParamsStatusNotFinished    SessionsUpdateAMLStatusParamsStatus = "Not Finished"
	SessionsUpdateAMLStatusParamsStatusApproved       SessionsUpdateAMLStatusParamsStatus = "Approved"
	SessionsUpdateAMLStatusParamsStatusDeclined       SessionsUpdateAMLStatusParamsStatus = "Declined"
	SessionsUpdateAMLStatusParamsStatusInReview       SessionsUpdateAMLStatusParamsStatus = "In Review"
	SessionsUpdateAMLStatusParamsStatusResubRequested SessionsUpdateAMLStatusParamsStatus = "Resub Requested"
)

Known values of SessionsUpdateAMLStatusParamsStatus.

type SessionsUpdateAMLStatusResponse

type SessionsUpdateAMLStatusResponse struct {
	// Always `AML status updated successfully`.
	Message string `json:"message"`

	// Status of the AML check now.
	Status SessionsUpdateAMLStatusResponseStatus `json:"status"`

	// Status before the call. Equal to `status` when nothing changed.
	PreviousStatus SessionsUpdateAMLStatusResponsePreviousStatus `json:"previous_status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsUpdateAMLStatusResponse is a response object.

func (*SessionsUpdateAMLStatusResponse) UnmarshalJSON

func (r *SessionsUpdateAMLStatusResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsUpdateAMLStatusResponse leniently.

type SessionsUpdateAMLStatusResponsePreviousStatus

type SessionsUpdateAMLStatusResponsePreviousStatus string

SessionsUpdateAMLStatusResponsePreviousStatus: Status before the call. Equal to `status` when nothing changed.

SessionsUpdateAMLStatusResponsePreviousStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateAMLStatusResponsePreviousStatusNotFinished    SessionsUpdateAMLStatusResponsePreviousStatus = "Not Finished"
	SessionsUpdateAMLStatusResponsePreviousStatusApproved       SessionsUpdateAMLStatusResponsePreviousStatus = "Approved"
	SessionsUpdateAMLStatusResponsePreviousStatusDeclined       SessionsUpdateAMLStatusResponsePreviousStatus = "Declined"
	SessionsUpdateAMLStatusResponsePreviousStatusInReview       SessionsUpdateAMLStatusResponsePreviousStatus = "In Review"
	SessionsUpdateAMLStatusResponsePreviousStatusResubRequested SessionsUpdateAMLStatusResponsePreviousStatus = "Resub Requested"
)

Known values of SessionsUpdateAMLStatusResponsePreviousStatus.

type SessionsUpdateAMLStatusResponseStatus

type SessionsUpdateAMLStatusResponseStatus string

SessionsUpdateAMLStatusResponseStatus: Status of the AML check now.

SessionsUpdateAMLStatusResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateAMLStatusResponseStatusNotFinished    SessionsUpdateAMLStatusResponseStatus = "Not Finished"
	SessionsUpdateAMLStatusResponseStatusApproved       SessionsUpdateAMLStatusResponseStatus = "Approved"
	SessionsUpdateAMLStatusResponseStatusDeclined       SessionsUpdateAMLStatusResponseStatus = "Declined"
	SessionsUpdateAMLStatusResponseStatusInReview       SessionsUpdateAMLStatusResponseStatus = "In Review"
	SessionsUpdateAMLStatusResponseStatusResubRequested SessionsUpdateAMLStatusResponseStatus = "Resub Requested"
)

Known values of SessionsUpdateAMLStatusResponseStatus.

type SessionsUpdateDataParams

type SessionsUpdateDataParams struct {
	// Document type code. Accepts the short codes listed in the enum, plus six
	// long-form aliases normalized server-side before validation: `Passport` → `P`,
	// `Identity Card` → `ID`, `Driver's License` → `DL`, `Residence Permit` → `RP`,
	// `Health Insurance Card` → `HIC`, `Tax Card` → `TC`. Any other value
	// (including `PASSPORT` in caps) returns `400`.
	DocumentType Opt[SessionsUpdateDataParamsDocumentType] `json:"document_type"`

	// Document subtype from the document registry, including the region prefix when
	// the registry distinguishes regional variants.
	DocumentSubtype Opt[string] `json:"document_subtype"`

	// Document number as printed on the ID.
	DocumentNumber Opt[string] `json:"document_number"`

	// Personal / national identification number where the document carries one
	// (e.g. Spanish DNI on a passport).
	PersonalNumber Opt[string] `json:"personal_number"`

	// Date of birth in `YYYY-MM-DD`. Any other format returns `400`.
	DateOfBirth Opt[string] `json:"date_of_birth"`

	// Issue date of the document in `YYYY-MM-DD`.
	DateOfIssue Opt[string] `json:"date_of_issue"`

	// Expiration date of the document in `YYYY-MM-DD`.
	ExpirationDate Opt[string] `json:"expiration_date"`

	// Issuing country as an ISO 3166-1 alpha-3 code. Case-insensitive (`esp` is
	// stored as `ESP`); the human-readable `issuing_state_name` shown in [Get
	// Decision](#get-/v3/session/-sessionId-/decision/) is recomputed from this
	// value. Invalid codes return `400`.
	IssuingState Opt[string] `json:"issuing_state"`

	// Given name(s). The stored `full_name` is recomputed as `first_name + ' ' +
	// last_name` on every call to this endpoint.
	FirstName Opt[string] `json:"first_name"`

	// Family name(s). Also feeds the recomputed `full_name`.
	LastName Opt[string] `json:"last_name"`

	// Sex as printed on the document: `M` (male), `F` (female), or `U` (unknown).
	// Any other value - including `X` - returns `400`.
	Gender Opt[SessionsUpdateDataParamsGender] `json:"gender"`

	// Free-text address as printed on the document. When this value changes
	// (non-sandbox sessions only) and the structured address is still missing or
	// incomplete, the server re-geocodes it synchronously before responding - the
	// 200 body already reflects the refreshed `parsed_address`. The re-geocode also
	// requires `issuing_state` to be present on the KYC record.
	Address Opt[string] `json:"address"`

	// Place of birth as printed on the document.
	PlaceOfBirth Opt[string] `json:"place_of_birth"`

	// Nationality as printed on the document. Free text up to 32 characters -
	// typically an ISO 3166-1 alpha-3 code (e.g. `ESP`), but not validated as one.
	Nationality Opt[string] `json:"nationality"`

	// Marital status where the document carries it. Any other value returns `400`.
	MaritalStatus Opt[SessionsUpdateDataParamsMaritalStatus] `json:"marital_status"`

	// Per-key overrides for document-specific extra fields (e.g. `blood_group`,
	// `dl_categories`, `mrz_string`). Keys are merged into the existing override
	// map: send a key with a value to set it, or with `null` / `""` to remove that
	// key from the merged view. Send the whole field as `null` to clear all
	// previously applied overrides. Must be a JSON object, otherwise `400`. The
	// response always returns the merged view (OCR-extracted values with your
	// overrides applied).
	ExtraFields Opt[map[string]any] `json:"extra_fields"`

	// Structured address. Only these nested keys are accepted: `address_type`,
	// `city`, `region`, `street_1`, `street_2`, `postal_code`, `country` - any
	// other key returns `400`. Per-key semantics: a value sets the key, `null`
	// removes it. `formatted_address` is recomputed server-side by joining
	// `street_1`, `street_2`, `city`, `region`, `postal_code`, and `country` and is
	// returned in the response - you cannot set it directly.
	ParsedAddress Opt[SessionsUpdateDataParamsParsedAddress] `json:"parsed_address"`

	// Workflow graph node whose KYC record to patch, for graph workflows with
	// multiple ID-verification steps (also accepted as a `node_id` body field).
	// When omitted, the most recent KYC record on the session is patched. If no KYC
	// exists for the given node, the call returns `404` (`"The session does not
	// have a KYC for node '<node_id>'."`).
	NodeID Opt[string] `json:"-" query:"node_id"`
}

SessionsUpdateDataParams holds the parameters of Client.Sessions.UpdateData.

func (SessionsUpdateDataParams) MarshalJSON

func (r SessionsUpdateDataParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsUpdateDataParamsDocumentType

type SessionsUpdateDataParamsDocumentType string

SessionsUpdateDataParamsDocumentType: Document type code. Accepts the short codes listed in the enum, plus six long-form aliases normalized server-side before validation: `Passport` → `P`, `Identity Card` → `ID`, `Driver's License` → `DL`, `Residence Permit` → `RP`, `Health Insurance Card` → `HIC`, `Tax Card` → `TC`. Any other value (including `PASSPORT` in caps) returns `400`.

SessionsUpdateDataParamsDocumentType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateDataParamsDocumentTypeP     SessionsUpdateDataParamsDocumentType = "P"
	SessionsUpdateDataParamsDocumentTypeDl    SessionsUpdateDataParamsDocumentType = "DL"
	SessionsUpdateDataParamsDocumentTypeID    SessionsUpdateDataParamsDocumentType = "ID"
	SessionsUpdateDataParamsDocumentTypeRp    SessionsUpdateDataParamsDocumentType = "RP"
	SessionsUpdateDataParamsDocumentTypeSsc   SessionsUpdateDataParamsDocumentType = "SSC"
	SessionsUpdateDataParamsDocumentTypeHic   SessionsUpdateDataParamsDocumentType = "HIC"
	SessionsUpdateDataParamsDocumentTypeWp    SessionsUpdateDataParamsDocumentType = "WP"
	SessionsUpdateDataParamsDocumentTypeTc    SessionsUpdateDataParamsDocumentType = "TC"
	SessionsUpdateDataParamsDocumentTypeVisa  SessionsUpdateDataParamsDocumentType = "VISA"
	SessionsUpdateDataParamsDocumentTypePsc   SessionsUpdateDataParamsDocumentType = "PSC"
	SessionsUpdateDataParamsDocumentTypeBc    SessionsUpdateDataParamsDocumentType = "BC"
	SessionsUpdateDataParamsDocumentTypeOther SessionsUpdateDataParamsDocumentType = "OTHER"
)

Known values of SessionsUpdateDataParamsDocumentType.

type SessionsUpdateDataParamsGender

type SessionsUpdateDataParamsGender string

SessionsUpdateDataParamsGender: Sex as printed on the document: `M` (male), `F` (female), or `U` (unknown). Any other value - including `X` - returns `400`.

SessionsUpdateDataParamsGender is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateDataParamsGenderM SessionsUpdateDataParamsGender = "M"
	SessionsUpdateDataParamsGenderF SessionsUpdateDataParamsGender = "F"
	SessionsUpdateDataParamsGenderU SessionsUpdateDataParamsGender = "U"
)

Known values of SessionsUpdateDataParamsGender.

type SessionsUpdateDataParamsMaritalStatus

type SessionsUpdateDataParamsMaritalStatus string

SessionsUpdateDataParamsMaritalStatus: Marital status where the document carries it. Any other value returns `400`.

SessionsUpdateDataParamsMaritalStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateDataParamsMaritalStatusSingle   SessionsUpdateDataParamsMaritalStatus = "SINGLE"
	SessionsUpdateDataParamsMaritalStatusMarried  SessionsUpdateDataParamsMaritalStatus = "MARRIED"
	SessionsUpdateDataParamsMaritalStatusDivorced SessionsUpdateDataParamsMaritalStatus = "DIVORCED"
	SessionsUpdateDataParamsMaritalStatusWidowed  SessionsUpdateDataParamsMaritalStatus = "WIDOWED"
	SessionsUpdateDataParamsMaritalStatusUnknown  SessionsUpdateDataParamsMaritalStatus = "UNKNOWN"
)

Known values of SessionsUpdateDataParamsMaritalStatus.

type SessionsUpdateDataParamsParsedAddress

type SessionsUpdateDataParamsParsedAddress struct {
	// Free-form address classification (e.g. `home`).
	AddressType Opt[string] `json:"address_type"`
	City        Opt[string] `json:"city"`

	// State / province / autonomous community.
	Region     Opt[string] `json:"region"`
	Street1    Opt[string] `json:"street_1"`
	Street2    Opt[string] `json:"street_2"`
	PostalCode Opt[string] `json:"postal_code"`

	// ISO 3166-1 alpha-2 country code. Lowercase input is normalized to uppercase;
	// alpha-3 codes are rejected with `400`.
	Country Opt[string] `json:"country"`
}

SessionsUpdateDataParamsParsedAddress: Structured address. Only these nested keys are accepted: `address_type`, `city`, `region`, `street_1`, `street_2`, `postal_code`, `country` - any other key returns `400`. Per-key semantics: a value sets the key, `null` removes it. `formatted_address` is recomputed server-side by joining `street_1`, `street_2`, `city`, `region`, `postal_code`, and `country` and is returned in the response - you cannot set it directly.

func (SessionsUpdateDataParamsParsedAddress) MarshalJSON

func (r SessionsUpdateDataParamsParsedAddress) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsUpdateDataResponse

type SessionsUpdateDataResponse struct {
	// Document type code. Accepts the short codes listed in the enum, plus six
	// long-form aliases normalized server-side before validation: `Passport` → `P`,
	// `Identity Card` → `ID`, `Driver's License` → `DL`, `Residence Permit` → `RP`,
	// `Health Insurance Card` → `HIC`, `Tax Card` → `TC`. Any other value
	// (including `PASSPORT` in caps) returns `400`.
	DocumentType SessionsUpdateDataResponseDocumentType `json:"document_type"`

	// Document subtype from the document registry, including the region prefix when
	// the registry distinguishes regional variants.
	DocumentSubtype string `json:"document_subtype"`

	// Document number as printed on the ID.
	DocumentNumber string `json:"document_number"`

	// Personal / national identification number where the document carries one
	// (e.g. Spanish DNI on a passport).
	PersonalNumber string `json:"personal_number"`

	// Date of birth in `YYYY-MM-DD`. Any other format returns `400`.
	DateOfBirth string `json:"date_of_birth"`

	// Issue date of the document in `YYYY-MM-DD`.
	DateOfIssue string `json:"date_of_issue"`

	// Expiration date of the document in `YYYY-MM-DD`.
	ExpirationDate string `json:"expiration_date"`

	// Issuing country as an ISO 3166-1 alpha-3 code. Case-insensitive (`esp` is
	// stored as `ESP`); the human-readable `issuing_state_name` shown in [Get
	// Decision](#get-/v3/session/-sessionId-/decision/) is recomputed from this
	// value. Invalid codes return `400`.
	IssuingState string `json:"issuing_state"`

	// Given name(s). The stored `full_name` is recomputed as `first_name + ' ' +
	// last_name` on every call to this endpoint.
	FirstName string `json:"first_name"`

	// Family name(s). Also feeds the recomputed `full_name`.
	LastName string `json:"last_name"`

	// Sex as printed on the document: `M` (male), `F` (female), or `U` (unknown).
	// Any other value - including `X` - returns `400`.
	Gender SessionsUpdateDataResponseGender `json:"gender"`

	// Free-text address as printed on the document. When this value changes
	// (non-sandbox sessions only) and the structured address is still missing or
	// incomplete, the server re-geocodes it in the background of the same request
	// and may overwrite `parsed_address` with the geocoder result.
	Address string `json:"address"`

	// Place of birth as printed on the document.
	PlaceOfBirth string `json:"place_of_birth"`

	// Nationality as printed on the document. Free text up to 32 characters -
	// typically an ISO 3166-1 alpha-3 code (e.g. `ESP`), but not validated as one.
	Nationality string `json:"nationality"`

	// Marital status where the document carries it. Any other value returns `400`.
	MaritalStatus SessionsUpdateDataResponseMaritalStatus `json:"marital_status"`

	// Merged view of the document's extra fields: the OCR-extracted values with all
	// operator overrides applied. Keys removed via a `null` override are absent
	// from this map.
	ExtraFields map[string]any `json:"extra_fields"`

	// Current structured address (with internal bookkeeping keys stripped), or
	// `null` when none exists. Includes the recomputed `formatted_address`
	// alongside the seven editable keys.
	ParsedAddress SessionsUpdateDataResponseParsedAddress `json:"parsed_address"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsUpdateDataResponse is a response object.

func (*SessionsUpdateDataResponse) UnmarshalJSON

func (r *SessionsUpdateDataResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsUpdateDataResponse leniently.

type SessionsUpdateDataResponseDocumentType

type SessionsUpdateDataResponseDocumentType string

SessionsUpdateDataResponseDocumentType: Document type code. Accepts the short codes listed in the enum, plus six long-form aliases normalized server-side before validation: `Passport` → `P`, `Identity Card` → `ID`, `Driver's License` → `DL`, `Residence Permit` → `RP`, `Health Insurance Card` → `HIC`, `Tax Card` → `TC`. Any other value (including `PASSPORT` in caps) returns `400`.

SessionsUpdateDataResponseDocumentType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateDataResponseDocumentTypeP     SessionsUpdateDataResponseDocumentType = "P"
	SessionsUpdateDataResponseDocumentTypeDl    SessionsUpdateDataResponseDocumentType = "DL"
	SessionsUpdateDataResponseDocumentTypeID    SessionsUpdateDataResponseDocumentType = "ID"
	SessionsUpdateDataResponseDocumentTypeRp    SessionsUpdateDataResponseDocumentType = "RP"
	SessionsUpdateDataResponseDocumentTypeSsc   SessionsUpdateDataResponseDocumentType = "SSC"
	SessionsUpdateDataResponseDocumentTypeHic   SessionsUpdateDataResponseDocumentType = "HIC"
	SessionsUpdateDataResponseDocumentTypeWp    SessionsUpdateDataResponseDocumentType = "WP"
	SessionsUpdateDataResponseDocumentTypeTc    SessionsUpdateDataResponseDocumentType = "TC"
	SessionsUpdateDataResponseDocumentTypeVisa  SessionsUpdateDataResponseDocumentType = "VISA"
	SessionsUpdateDataResponseDocumentTypePsc   SessionsUpdateDataResponseDocumentType = "PSC"
	SessionsUpdateDataResponseDocumentTypeBc    SessionsUpdateDataResponseDocumentType = "BC"
	SessionsUpdateDataResponseDocumentTypeOther SessionsUpdateDataResponseDocumentType = "OTHER"
)

Known values of SessionsUpdateDataResponseDocumentType.

type SessionsUpdateDataResponseGender

type SessionsUpdateDataResponseGender string

SessionsUpdateDataResponseGender: Sex as printed on the document: `M` (male), `F` (female), or `U` (unknown). Any other value - including `X` - returns `400`.

SessionsUpdateDataResponseGender is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateDataResponseGenderM SessionsUpdateDataResponseGender = "M"
	SessionsUpdateDataResponseGenderF SessionsUpdateDataResponseGender = "F"
	SessionsUpdateDataResponseGenderU SessionsUpdateDataResponseGender = "U"
)

Known values of SessionsUpdateDataResponseGender.

type SessionsUpdateDataResponseMaritalStatus

type SessionsUpdateDataResponseMaritalStatus string

SessionsUpdateDataResponseMaritalStatus: Marital status where the document carries it. Any other value returns `400`.

SessionsUpdateDataResponseMaritalStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateDataResponseMaritalStatusSingle   SessionsUpdateDataResponseMaritalStatus = "SINGLE"
	SessionsUpdateDataResponseMaritalStatusMarried  SessionsUpdateDataResponseMaritalStatus = "MARRIED"
	SessionsUpdateDataResponseMaritalStatusDivorced SessionsUpdateDataResponseMaritalStatus = "DIVORCED"
	SessionsUpdateDataResponseMaritalStatusWidowed  SessionsUpdateDataResponseMaritalStatus = "WIDOWED"
	SessionsUpdateDataResponseMaritalStatusUnknown  SessionsUpdateDataResponseMaritalStatus = "UNKNOWN"
)

Known values of SessionsUpdateDataResponseMaritalStatus.

type SessionsUpdateDataResponseParsedAddress

type SessionsUpdateDataResponseParsedAddress struct {
	// Free-form address classification (e.g. `home`).
	AddressType string `json:"address_type"`
	City        string `json:"city"`

	// State / province / autonomous community.
	Region     string `json:"region"`
	Street1    string `json:"street_1"`
	Street2    string `json:"street_2"`
	PostalCode string `json:"postal_code"`

	// ISO 3166-1 alpha-2 country code. Lowercase input is normalized to uppercase;
	// alpha-3 codes are rejected with `400`.
	Country string `json:"country"`

	// Joined, human-readable form of the structured address. Recomputed server-side
	// after every `parsed_address` edit.
	FormattedAddress string `json:"formatted_address"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsUpdateDataResponseParsedAddress: Current structured address (with internal bookkeeping keys stripped), or `null` when none exists. Includes the recomputed `formatted_address` alongside the seven editable keys.

func (*SessionsUpdateDataResponseParsedAddress) UnmarshalJSON

func (r *SessionsUpdateDataResponseParsedAddress) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsUpdateDataResponseParsedAddress leniently.

type SessionsUpdateDocumentAiDataParams

type SessionsUpdateDocumentAiDataParams struct {
	// Field keys (the keys you configured for the document) and their corrected
	// values. Must be a JSON object; merged key by key into the stored data. Leave
	// it out rather than sending `null`, which returns `400`.
	ExtractedData Opt[map[string]any] `json:"extracted_data"`

	// New review status of the document.
	Status Opt[SessionsUpdateDocumentAiDataParamsStatus] `json:"status"`
}

SessionsUpdateDocumentAiDataParams holds the parameters of Client.Sessions.UpdateDocumentAiData.

func (SessionsUpdateDocumentAiDataParams) MarshalJSON

func (r SessionsUpdateDocumentAiDataParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsUpdateDocumentAiDataParamsStatus

type SessionsUpdateDocumentAiDataParamsStatus string

SessionsUpdateDocumentAiDataParamsStatus: New review status of the document.

SessionsUpdateDocumentAiDataParamsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateDocumentAiDataParamsStatusApproved    SessionsUpdateDocumentAiDataParamsStatus = "Approved"
	SessionsUpdateDocumentAiDataParamsStatusDeclined    SessionsUpdateDocumentAiDataParamsStatus = "Declined"
	SessionsUpdateDocumentAiDataParamsStatusInReview    SessionsUpdateDocumentAiDataParamsStatus = "In Review"
	SessionsUpdateDocumentAiDataParamsStatusNotFinished SessionsUpdateDocumentAiDataParamsStatus = "Not Finished"
)

Known values of SessionsUpdateDocumentAiDataParamsStatus.

type SessionsUpdateDocumentAiDataResponse

type SessionsUpdateDocumentAiDataResponse struct {
	// Document identifier.
	UUID string `json:"uuid"`

	// The configured document this upload corresponds to.
	DocumentKey string `json:"document_key"`

	// File name the document was uploaded with.
	OriginalFilename string `json:"original_filename"`

	// Storage path of the uploaded file. It is not a download link: read the
	// presigned `file_url` from the session decision to download the file.
	FileURL string `json:"file_url"`

	// Review status of the document.
	Status SessionsUpdateDocumentAiDataResponseStatus `json:"status"`

	// All extracted fields after the merge, keyed by field key.
	ExtractedData map[string]any `json:"extracted_data"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsUpdateDocumentAiDataResponse is a response object.

func (*SessionsUpdateDocumentAiDataResponse) UnmarshalJSON

func (r *SessionsUpdateDocumentAiDataResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsUpdateDocumentAiDataResponse leniently.

type SessionsUpdateDocumentAiDataResponseStatus

type SessionsUpdateDocumentAiDataResponseStatus string

SessionsUpdateDocumentAiDataResponseStatus: Review status of the document.

SessionsUpdateDocumentAiDataResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateDocumentAiDataResponseStatusNotFinished    SessionsUpdateDocumentAiDataResponseStatus = "Not Finished"
	SessionsUpdateDocumentAiDataResponseStatusApproved       SessionsUpdateDocumentAiDataResponseStatus = "Approved"
	SessionsUpdateDocumentAiDataResponseStatusDeclined       SessionsUpdateDocumentAiDataResponseStatus = "Declined"
	SessionsUpdateDocumentAiDataResponseStatusInReview       SessionsUpdateDocumentAiDataResponseStatus = "In Review"
	SessionsUpdateDocumentAiDataResponseStatusResubRequested SessionsUpdateDocumentAiDataResponseStatus = "Resub Requested"
)

Known values of SessionsUpdateDocumentAiDataResponseStatus.

type SessionsUpdateFeatureStatusParams

type SessionsUpdateFeatureStatusParams struct {
	// Target status for this feature. Must differ from the current value. Required.
	NewStatus SessionsUpdateFeatureStatusParamsNewStatus `json:"new_status"`

	// Optional free-text note recorded on the session's review trail for this
	// feature change.
	Comment Opt[string] `json:"comment"`

	// Which kind of step to target. Needed on non-graph workflows (`nodeId` =
	// `default`), where every step shares no node; optional otherwise. An unknown
	// value returns `400`.
	FeatureType Opt[SessionsUpdateFeatureStatusParamsFeatureType] `json:"feature_type"`

	// While the person is still in the flow, store the override as
	// `pending_until_flow_finishes` and apply it when the flow finishes, instead of
	// at once. Omitted or `false`, the override applies at once. On a session whose
	// flow already ended it applies at once either way.
	DeferUntilFlowFinishes Opt[bool] `json:"defer_until_flow_finishes"`
}

SessionsUpdateFeatureStatusParams holds the parameters of Client.Sessions.UpdateFeatureStatus.

func (SessionsUpdateFeatureStatusParams) MarshalJSON

func (r SessionsUpdateFeatureStatusParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsUpdateFeatureStatusParamsFeatureType

type SessionsUpdateFeatureStatusParamsFeatureType string

SessionsUpdateFeatureStatusParamsFeatureType: Which kind of step to target. Needed on non-graph workflows (`nodeId` = `default`), where every step shares no node; optional otherwise. An unknown value returns `400`.

SessionsUpdateFeatureStatusParamsFeatureType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateFeatureStatusParamsFeatureTypeIDVerification     SessionsUpdateFeatureStatusParamsFeatureType = "ID_VERIFICATION"
	SessionsUpdateFeatureStatusParamsFeatureTypeOCR                SessionsUpdateFeatureStatusParamsFeatureType = "OCR"
	SessionsUpdateFeatureStatusParamsFeatureTypeOCRBack            SessionsUpdateFeatureStatusParamsFeatureType = "OCR_BACK"
	SessionsUpdateFeatureStatusParamsFeatureTypeNFC                SessionsUpdateFeatureStatusParamsFeatureType = "NFC"
	SessionsUpdateFeatureStatusParamsFeatureTypeLiveness           SessionsUpdateFeatureStatusParamsFeatureType = "LIVENESS"
	SessionsUpdateFeatureStatusParamsFeatureTypeFace               SessionsUpdateFeatureStatusParamsFeatureType = "FACE"
	SessionsUpdateFeatureStatusParamsFeatureTypeAgeEstimation      SessionsUpdateFeatureStatusParamsFeatureType = "AGE_ESTIMATION"
	SessionsUpdateFeatureStatusParamsFeatureTypeAgeVerification    SessionsUpdateFeatureStatusParamsFeatureType = "AGE_VERIFICATION"
	SessionsUpdateFeatureStatusParamsFeatureTypeFaceSearch         SessionsUpdateFeatureStatusParamsFeatureType = "FACE_SEARCH"
	SessionsUpdateFeatureStatusParamsFeatureTypeFaceMatch          SessionsUpdateFeatureStatusParamsFeatureType = "FACE_MATCH"
	SessionsUpdateFeatureStatusParamsFeatureTypeIPAnalysis         SessionsUpdateFeatureStatusParamsFeatureType = "IP_ANALYSIS"
	SessionsUpdateFeatureStatusParamsFeatureTypeAML                SessionsUpdateFeatureStatusParamsFeatureType = "AML"
	SessionsUpdateFeatureStatusParamsFeatureTypePhone              SessionsUpdateFeatureStatusParamsFeatureType = "PHONE"
	SessionsUpdateFeatureStatusParamsFeatureTypePhoneVerification  SessionsUpdateFeatureStatusParamsFeatureType = "PHONE_VERIFICATION"
	SessionsUpdateFeatureStatusParamsFeatureTypeEmail              SessionsUpdateFeatureStatusParamsFeatureType = "EMAIL"
	SessionsUpdateFeatureStatusParamsFeatureTypeEmailVerification  SessionsUpdateFeatureStatusParamsFeatureType = "EMAIL_VERIFICATION"
	SessionsUpdateFeatureStatusParamsFeatureTypePOA                SessionsUpdateFeatureStatusParamsFeatureType = "POA"
	SessionsUpdateFeatureStatusParamsFeatureTypeProofOfAddress     SessionsUpdateFeatureStatusParamsFeatureType = "PROOF_OF_ADDRESS"
	SessionsUpdateFeatureStatusParamsFeatureTypeDatabaseValidation SessionsUpdateFeatureStatusParamsFeatureType = "DATABASE_VALIDATION"
	SessionsUpdateFeatureStatusParamsFeatureTypeDataValidation     SessionsUpdateFeatureStatusParamsFeatureType = "DATA_VALIDATION"
	SessionsUpdateFeatureStatusParamsFeatureTypeQuestionnaire      SessionsUpdateFeatureStatusParamsFeatureType = "QUESTIONNAIRE"
	SessionsUpdateFeatureStatusParamsFeatureTypeDocumentAi         SessionsUpdateFeatureStatusParamsFeatureType = "DOCUMENT_AI"
	SessionsUpdateFeatureStatusParamsFeatureTypeKYBRegistry        SessionsUpdateFeatureStatusParamsFeatureType = "KYB_REGISTRY"
	SessionsUpdateFeatureStatusParamsFeatureTypeKYBDocuments       SessionsUpdateFeatureStatusParamsFeatureType = "KYB_DOCUMENTS"
	SessionsUpdateFeatureStatusParamsFeatureTypeKYBKeyPeople       SessionsUpdateFeatureStatusParamsFeatureType = "KYB_KEY_PEOPLE"
	SessionsUpdateFeatureStatusParamsFeatureTypeBankVerification   SessionsUpdateFeatureStatusParamsFeatureType = "BANK_VERIFICATION"
	SessionsUpdateFeatureStatusParamsFeatureTypeGeolocation        SessionsUpdateFeatureStatusParamsFeatureType = "GEOLOCATION"
)

Known values of SessionsUpdateFeatureStatusParamsFeatureType.

type SessionsUpdateFeatureStatusParamsNewStatus

type SessionsUpdateFeatureStatusParamsNewStatus string

SessionsUpdateFeatureStatusParamsNewStatus: Target status for this feature. Must differ from the current value.

SessionsUpdateFeatureStatusParamsNewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateFeatureStatusParamsNewStatusApproved SessionsUpdateFeatureStatusParamsNewStatus = "Approved"
	SessionsUpdateFeatureStatusParamsNewStatusDeclined SessionsUpdateFeatureStatusParamsNewStatus = "Declined"
	SessionsUpdateFeatureStatusParamsNewStatusInReview SessionsUpdateFeatureStatusParamsNewStatus = "In Review"
)

Known values of SessionsUpdateFeatureStatusParamsNewStatus.

type SessionsUpdateFeatureStatusResponse

type SessionsUpdateFeatureStatusResponse struct {
	SessionID string `json:"session_id"`

	// The updated step's workflow node, or `null` for a step without a node (the
	// `default` path in a non-graph workflow).
	NodeID string `json:"node_id"`

	// Model name of the updated feature (e.g. `KYC`, `Face`, `FaceMatch`, `AML`,
	// `POA`).
	FeatureType string `json:"feature_type"`

	// The check's stored status: the requested one once the override applied, the
	// unchanged one while the override waits for the flow to finish.
	NewStatus string                `json:"new_status"`
	Override  FeatureStatusOverride `json:"override"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsUpdateFeatureStatusResponse is a response object.

func (*SessionsUpdateFeatureStatusResponse) UnmarshalJSON

func (r *SessionsUpdateFeatureStatusResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsUpdateFeatureStatusResponse leniently.

type SessionsUpdateKYBCompanyDataParams

type SessionsUpdateKYBCompanyDataParams struct {
	// Legal name of the company. Written to the canonical column and the registry
	// snapshot.
	CompanyName Opt[string] `json:"company_name"`

	// Official registration number with the company registry.
	RegistrationNumber Opt[string] `json:"registration_number"`

	// Country of incorporation, ISO 3166-1 alpha-2. Case-insensitive (`us` is
	// stored as `US`). Alpha-3 codes fail the 2-character limit with `400`.
	CountryCode Opt[string] `json:"country_code"`

	// Subdivision / region tag where the registry has one (e.g. US state). Stored
	// in the registry snapshot only - it has no canonical column.
	Region Opt[string] `json:"region"`

	// Incorporation date in `YYYY-MM-DD`. Optional like every other field - the
	// `PATCH` is partial. Any other date format returns `400`.
	IncorporationDate Opt[string] `json:"incorporation_date"`

	// Registration date where the registry distinguishes it from incorporation.
	// Stored in the registry snapshot only.
	RegistrationDate Opt[string] `json:"registration_date"`

	// Dissolution date for companies that are no longer active. Stored in the
	// registry snapshot only.
	DissolutionDate Opt[string] `json:"dissolution_date"`

	// Tax identification number.
	TaxNumber Opt[string] `json:"tax_number"`

	// Legal / registered address. Aliased server-side to the canonical
	// `registered_address` column - the response returns it under
	// `registered_address`, while the registry snapshot keeps the `legal_address`
	// key you sent.
	LegalAddress Opt[string] `json:"legal_address"`

	// Legal entity type (e.g. `Limited Liability Company`, `PLC`, `GmbH`).
	CompanyType Opt[string] `json:"company_type"`

	// Registry-reported company status. Lowercase, some values contain spaces (e.g.
	// `struck off`, `no longer authorised`). Any other value returns `400`.
	RegistryStatus Opt[SessionsUpdateKYBCompanyDataParamsRegistryStatus] `json:"registry_status"`

	// Outcome of the registry verification. Any other value returns `400`.
	VerificationStatus Opt[SessionsUpdateKYBCompanyDataParamsVerificationStatus] `json:"verification_status"`

	// Trade names, former legal names, DBA names (free text).
	AlternativeNames Opt[string] `json:"alternative_names"`

	// Short description of the company's activity.
	NatureOfBusiness Opt[string] `json:"nature_of_business"`

	// Human-readable registered capital (e.g. `USD 50000`). Use
	// `registered_capital_amount` + `registered_capital_currency` for structured
	// values, or this field for free-form text.
	RegisteredCapital Opt[string] `json:"registered_capital"`

	// Numeric registered-capital amount (up to 20 digits, 2 decimal places). Sets
	// the `registered_capital_amount` column and is mirrored into `registry_data`
	// as a decimal string; the response echoes it as a decimal string (e.g.
	// `"1500000.50"`).
	RegisteredCapitalAmount Opt[float64] `json:"registered_capital_amount"`

	// ISO 4217 currency code for `registered_capital_amount`. Case-insensitive
	// (`usd` is stored as `USD`); values that are not exactly 3 letters return
	// `400` with the ISO 4217 message. Sets the canonical
	// `registered_capital_currency` column and is mirrored into `registry_data`.
	RegisteredCapitalCurrency Opt[string] `json:"registered_capital_currency"`

	// Company website. Bare domains are accepted and normalized with an `https://`
	// prefix (`docsprobe.example.com` is stored as
	// `https://docsprobe.example.com`); values that still fail URL validation
	// return `400`.
	Website Opt[string] `json:"website"`

	// Contact email on file with the registry.
	Email Opt[string] `json:"email"`

	// Contact phone. Must match `+`, digits, spaces, dashes, dots, or parentheses,
	// with 7-15 digits total - otherwise `400`.
	Phone Opt[string] `json:"phone"`

	// LEI, where the company has one.
	LegalEntityIdentifier Opt[string] `json:"legal_entity_identifier"`

	// City / subdivision of the registry of record.
	LocationOfRegistration Opt[string] `json:"location_of_registration"`

	// EU VAT number. Merged into the `registry_data` snapshot only - editing it
	// here does not re-run VAT and tax ID validation, so `vat_validation_status`
	// and the other `vat_*` result fields are unchanged.
	VATNumber Opt[string] `json:"vat_number"`

	// Control / governance scheme when the registry exposes it. Stored in the
	// registry snapshot only.
	ControlScheme Opt[string] `json:"control_scheme"`
}

SessionsUpdateKYBCompanyDataParams holds the parameters of Client.Sessions.UpdateKYBCompanyData.

func (SessionsUpdateKYBCompanyDataParams) MarshalJSON

func (r SessionsUpdateKYBCompanyDataParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsUpdateKYBCompanyDataParamsRegistryStatus

type SessionsUpdateKYBCompanyDataParamsRegistryStatus string

SessionsUpdateKYBCompanyDataParamsRegistryStatus: Registry-reported company status. Lowercase, some values contain spaces (e.g. `struck off`, `no longer authorised`). Any other value returns `400`.

SessionsUpdateKYBCompanyDataParamsRegistryStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateKYBCompanyDataParamsRegistryStatusActive                  SessionsUpdateKYBCompanyDataParamsRegistryStatus = "active"
	SessionsUpdateKYBCompanyDataParamsRegistryStatusDissolved               SessionsUpdateKYBCompanyDataParamsRegistryStatus = "dissolved"
	SessionsUpdateKYBCompanyDataParamsRegistryStatusDeregistered            SessionsUpdateKYBCompanyDataParamsRegistryStatus = "deregistered"
	SessionsUpdateKYBCompanyDataParamsRegistryStatusSeeFullDetails          SessionsUpdateKYBCompanyDataParamsRegistryStatus = "see full details"
	SessionsUpdateKYBCompanyDataParamsRegistryStatusAuthorised              SessionsUpdateKYBCompanyDataParamsRegistryStatus = "authorised"
	SessionsUpdateKYBCompanyDataParamsRegistryStatusAppointedRepresentative SessionsUpdateKYBCompanyDataParamsRegistryStatus = "appointed representative"
	SessionsUpdateKYBCompanyDataParamsRegistryStatusUnauthorised            SessionsUpdateKYBCompanyDataParamsRegistryStatus = "unauthorised"
	SessionsUpdateKYBCompanyDataParamsRegistryStatusInactive                SessionsUpdateKYBCompanyDataParamsRegistryStatus = "inactive"
	SessionsUpdateKYBCompanyDataParamsRegistryStatusNoLongerAuthorised      SessionsUpdateKYBCompanyDataParamsRegistryStatus = "no longer authorised"
	SessionsUpdateKYBCompanyDataParamsRegistryStatusClosed                  SessionsUpdateKYBCompanyDataParamsRegistryStatus = "closed"
	SessionsUpdateKYBCompanyDataParamsRegistryStatusStruckOff               SessionsUpdateKYBCompanyDataParamsRegistryStatus = "struck off"
)

Known values of SessionsUpdateKYBCompanyDataParamsRegistryStatus.

type SessionsUpdateKYBCompanyDataParamsVerificationStatus

type SessionsUpdateKYBCompanyDataParamsVerificationStatus string

SessionsUpdateKYBCompanyDataParamsVerificationStatus: Outcome of the registry verification. Any other value returns `400`.

SessionsUpdateKYBCompanyDataParamsVerificationStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateKYBCompanyDataParamsVerificationStatusVerified SessionsUpdateKYBCompanyDataParamsVerificationStatus = "verified"
	SessionsUpdateKYBCompanyDataParamsVerificationStatusFailed   SessionsUpdateKYBCompanyDataParamsVerificationStatus = "failed"
	SessionsUpdateKYBCompanyDataParamsVerificationStatusUnknown  SessionsUpdateKYBCompanyDataParamsVerificationStatus = "unknown"
)

Known values of SessionsUpdateKYBCompanyDataParamsVerificationStatus.

type SessionsUpdateKYBCompanyDataResponse

type SessionsUpdateKYBCompanyDataResponse struct {
	// Company record identifier (the `companyUuid` path parameter).
	UUID string `json:"uuid"`

	// Workflow graph node this company record belongs to, when the workflow is
	// graph-based.
	NodeID string `json:"node_id"`

	// Feature lifecycle status of the registry check (e.g. `Not Finished`,
	// `Approved`, `Declined`, `In Review`).
	Status string `json:"status"`

	// Registry-reported company status (e.g. `active`, `dissolved`, `struck off`).
	RegistryStatus string `json:"registry_status"`

	// `true` when the company data is complete - always `true` for manual-entry
	// companies; for registry-sourced companies, `true` once the registry fetch
	// resolved.
	DataResolved       bool   `json:"data_resolved"`
	CompanyName        string `json:"company_name"`
	RegistrationNumber string `json:"registration_number"`

	// ISO 3166-1 alpha-2 country of incorporation.
	CountryCode       string `json:"country_code"`
	Region            string `json:"region"`
	CompanyType       string `json:"company_type"`
	IncorporationDate string `json:"incorporation_date"`

	// Canonical registered address - updated when you send `legal_address`.
	RegisteredAddress string `json:"registered_address"`
	TaxNumber         string `json:"tax_number"`
	RiskLevel         string `json:"risk_level"`

	// `verified`, `failed`, or `unknown`.
	VerificationStatus string `json:"verification_status"`

	// `true` when the company was pre-filled from a registry search rather than
	// entered manually.
	IsFromRegistry bool `json:"is_from_registry"`

	// Registry fetch lifecycle for registry-sourced companies (`pending` /
	// `resolved`); `null` for manual entries.
	FetchStatus string `json:"fetch_status"`

	// Alternative, trading, former or original-language company names as text, when
	// reported.
	AlternativeNames  string `json:"alternative_names"`
	NatureOfBusiness  string `json:"nature_of_business"`
	RegisteredCapital string `json:"registered_capital"`

	// Canonical column. Returned as a decimal string (e.g. `"2750000.00"`).
	RegisteredCapitalAmount string `json:"registered_capital_amount"`

	// Canonical column. Set by the registry flow or by console/API edits via this
	// endpoint.
	RegisteredCapitalCurrency string `json:"registered_capital_currency"`
	Website                   string `json:"website"`
	Email                     string `json:"email"`
	Phone                     string `json:"phone"`
	LegalEntityIdentifier     string `json:"legal_entity_identifier"`
	LocationOfRegistration    string `json:"location_of_registration"`

	// EU VAT number, when collected during the hosted registry step or edited
	// afterwards.
	VATNumber string `json:"vat_number"`

	// Result of validating the VAT number or, when there is none, the `tax_number`,
	// at registry submit. `valid` / `invalid`: decided by the official registry of
	// the country (EU VIES, Norway, Switzerland, Brazil, Colombia, Costa Rica,
	// Ecuador, Paraguay; Poland also by its domestic VAT register). `format_valid`
	// / `invalid_format`: decided by the country's format and check-digit rules
	// where no registry can be queried. `could_not_validate`: the registry was
	// unavailable. `not_applicable`: no number, a country without registry or
	// rules, or a sandbox session.
	VATValidationStatus SessionsUpdateKYBCompanyDataResponseVATValidationStatus `json:"vat_validation_status"`

	// The number that was checked, as the source knows it (for example the VAT
	// number derived from a French SIREN or a Dutch RSIN). `null` when no check
	// ran.
	VATValidatedNumber string `json:"vat_validated_number"`

	// The source that decided `vat_validation_status`: an official registry, or
	// `format_rules`. `null` when no check ran.
	VATValidationSource SessionsUpdateKYBCompanyDataResponseVATValidationSource `json:"vat_validation_source"`

	// Name registered with the source that validated the number, when it discloses
	// one. Only set when the status is `valid`.
	VATValidatedName string `json:"vat_validated_name"`

	// Address registered with the source that validated the number, when it
	// discloses one. Only set when the status is `valid`.
	VATValidatedAddress string `json:"vat_validated_address"`

	// Timestamp of the check. `null` when no check ran.
	VATCheckedAt     time.Time      `json:"vat_checked_at"`
	FinancialSummary map[string]any `json:"financial_summary"`

	// Directors / officers attached to the company, including per-person KYC
	// progress.
	Officers []map[string]any `json:"officers"`

	// Beneficial owners attached to the company, including per-person KYC progress.
	BeneficialOwners []map[string]any `json:"beneficial_owners"`

	// Registry address detail, when the registry returned any.
	Addresses []map[string]any `json:"addresses"`

	// Registry industry classification, when available.
	Industries []map[string]any `json:"industries"`

	// Registry filing dates, when available. Annual returns and general meetings
	// use last_annual_return_date and last_agm_date; they are distinct from
	// financial accounts.
	Accounts map[string]any `json:"accounts"`

	// Raw registry payload snapshot. Every key you PATCH is merged into this map
	// (dates serialized as ISO strings), so the "extracted from registry" view
	// reflects operator corrections.
	RegistryData map[string]any `json:"registry_data"`

	// What the end user typed during the hosted registry-confirmation step. Never
	// modified by this endpoint.
	UserProvidedData map[string]any `json:"user_provided_data"`

	// When the end user confirmed the company data in the hosted flow.
	ConfirmedByUserAt time.Time `json:"confirmed_by_user_at"`

	// Stamped on every successful non-empty PATCH, so UIs can surface "edited by
	// operator" context.
	LastConsoleEditAt time.Time `json:"last_console_edit_at"`

	// `true` while the end user can still edit the registry-sourced data in the
	// hosted flow (registry-sourced and not yet confirmed).
	IsEditable bool `json:"is_editable"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsUpdateKYBCompanyDataResponse: Full KYB company record - the same shape as the `company` object inside `registry_checks[]` on the business session decision.

func (*SessionsUpdateKYBCompanyDataResponse) UnmarshalJSON

func (r *SessionsUpdateKYBCompanyDataResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsUpdateKYBCompanyDataResponse leniently.

type SessionsUpdateKYBCompanyDataResponseVATValidationSource

type SessionsUpdateKYBCompanyDataResponseVATValidationSource string

SessionsUpdateKYBCompanyDataResponseVATValidationSource: The source that decided `vat_validation_status`: an official registry, or `format_rules`. `null` when no check ran.

SessionsUpdateKYBCompanyDataResponseVATValidationSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateKYBCompanyDataResponseVATValidationSourceEuVies           SessionsUpdateKYBCompanyDataResponseVATValidationSource = "eu_vies"
	SessionsUpdateKYBCompanyDataResponseVATValidationSourcePlVATWhiteList   SessionsUpdateKYBCompanyDataResponseVATValidationSource = "pl_vat_white_list"
	SessionsUpdateKYBCompanyDataResponseVATValidationSourceNoBrreg          SessionsUpdateKYBCompanyDataResponseVATValidationSource = "no_brreg"
	SessionsUpdateKYBCompanyDataResponseVATValidationSourceChUIDRegister    SessionsUpdateKYBCompanyDataResponseVATValidationSource = "ch_uid_register"
	SessionsUpdateKYBCompanyDataResponseVATValidationSourceBrReceitaFederal SessionsUpdateKYBCompanyDataResponseVATValidationSource = "br_receita_federal"
	SessionsUpdateKYBCompanyDataResponseVATValidationSourceCoRues           SessionsUpdateKYBCompanyDataResponseVATValidationSource = "co_rues"
	SessionsUpdateKYBCompanyDataResponseVATValidationSourceCrHacienda       SessionsUpdateKYBCompanyDataResponseVATValidationSource = "cr_hacienda"
	SessionsUpdateKYBCompanyDataResponseVATValidationSourceEcSri            SessionsUpdateKYBCompanyDataResponseVATValidationSource = "ec_sri"
	SessionsUpdateKYBCompanyDataResponseVATValidationSourcePyDnit           SessionsUpdateKYBCompanyDataResponseVATValidationSource = "py_dnit"
	SessionsUpdateKYBCompanyDataResponseVATValidationSourceFormatRules      SessionsUpdateKYBCompanyDataResponseVATValidationSource = "format_rules"
)

Known values of SessionsUpdateKYBCompanyDataResponseVATValidationSource.

type SessionsUpdateKYBCompanyDataResponseVATValidationStatus

type SessionsUpdateKYBCompanyDataResponseVATValidationStatus string

SessionsUpdateKYBCompanyDataResponseVATValidationStatus: Result of validating the VAT number or, when there is none, the `tax_number`, at registry submit. `valid` / `invalid`: decided by the official registry of the country (EU VIES, Norway, Switzerland, Brazil, Colombia, Costa Rica, Ecuador, Paraguay; Poland also by its domestic VAT register). `format_valid` / `invalid_format`: decided by the country's format and check-digit rules where no registry can be queried. `could_not_validate`: the registry was unavailable. `not_applicable`: no number, a country without registry or rules, or a sandbox session.

SessionsUpdateKYBCompanyDataResponseVATValidationStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateKYBCompanyDataResponseVATValidationStatusValid            SessionsUpdateKYBCompanyDataResponseVATValidationStatus = "valid"
	SessionsUpdateKYBCompanyDataResponseVATValidationStatusInvalid          SessionsUpdateKYBCompanyDataResponseVATValidationStatus = "invalid"
	SessionsUpdateKYBCompanyDataResponseVATValidationStatusFormatValid      SessionsUpdateKYBCompanyDataResponseVATValidationStatus = "format_valid"
	SessionsUpdateKYBCompanyDataResponseVATValidationStatusInvalidFormat    SessionsUpdateKYBCompanyDataResponseVATValidationStatus = "invalid_format"
	SessionsUpdateKYBCompanyDataResponseVATValidationStatusCouldNotValidate SessionsUpdateKYBCompanyDataResponseVATValidationStatus = "could_not_validate"
	SessionsUpdateKYBCompanyDataResponseVATValidationStatusNotApplicable    SessionsUpdateKYBCompanyDataResponseVATValidationStatus = "not_applicable"
)

Known values of SessionsUpdateKYBCompanyDataResponseVATValidationStatus.

type SessionsUpdateKYBPartyParams

type SessionsUpdateKYBPartyParams struct {
	// `true` exempts the party from verification so the Key People check can settle
	// without it; `false` puts it back in scope. Required.
	IsSkipped bool `json:"is_skipped"`
}

SessionsUpdateKYBPartyParams holds the parameters of Client.Sessions.UpdateKYBParty.

func (SessionsUpdateKYBPartyParams) MarshalJSON

func (r SessionsUpdateKYBPartyParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsUpdateKYBPartyResponse

type SessionsUpdateKYBPartyResponse struct {
	// Party identifier.
	UUID string `json:"uuid"`

	// Whether the party is an individual or a company.
	EntityType SessionsUpdateKYBPartyResponseEntityType `json:"entity_type"`

	// Display name of the party.
	Name string `json:"name"`

	// Whether the party is exempt from verification.
	IsSkipped bool `json:"is_skipped"`

	// What the role and threshold rules asked for. Left untouched by this endpoint.
	RequiresVerification bool `json:"requires_verification"`

	// Status of the linked individual KYC session, frozen at deletion time when the
	// session was deleted.
	KYCSessionStatus string `json:"kyc_session_status"`

	// Link to the linked individual KYC session. `null` when there is none or when
	// it was deleted.
	KYCSessionURL string `json:"kyc_session_url"`

	// The linked individual KYC session was deleted, so it can never settle.
	KYCSessionDeleted bool `json:"kyc_session_deleted"`

	// Corporate-party counterpart of `kyc_session_deleted`.
	KYBSubSessionDeleted bool `json:"kyb_sub_session_deleted"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsUpdateKYBPartyResponse: Key People party record - the same shape as an entry of `key_people_checks[].submitted.parties[]` on the business session decision.

func (*SessionsUpdateKYBPartyResponse) UnmarshalJSON

func (r *SessionsUpdateKYBPartyResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsUpdateKYBPartyResponse leniently.

type SessionsUpdateKYBPartyResponseEntityType

type SessionsUpdateKYBPartyResponseEntityType string

SessionsUpdateKYBPartyResponseEntityType: Whether the party is an individual or a company.

SessionsUpdateKYBPartyResponseEntityType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateKYBPartyResponseEntityTypePerson  SessionsUpdateKYBPartyResponseEntityType = "person"
	SessionsUpdateKYBPartyResponseEntityTypeCompany SessionsUpdateKYBPartyResponseEntityType = "company"
)

Known values of SessionsUpdateKYBPartyResponseEntityType.

type SessionsUpdatePOADataParams

type SessionsUpdatePOADataParams struct {
	// Country that issued the POA document, ISO 3166-1 alpha-3. Case-insensitive
	// (normalized to uppercase); invalid codes return `400`.
	IssuingState Opt[string] `json:"issuing_state"`

	// POA document category. Values are uppercase - lowercase variants like
	// `utility_bill` return `400`.
	DocumentType Opt[SessionsUpdatePOADataParamsDocumentType] `json:"document_type"`

	// Language of the document, typically an ISO 639-1 code (e.g. `es`). Free text
	// - not validated as a language code.
	DocumentLanguage Opt[string] `json:"document_language"`

	// Organization that issued the document (utility company, bank, government
	// agency).
	Issuer Opt[string] `json:"issuer"`

	// Issue date of the POA document in `YYYY-MM-DD`. Any other format returns
	// `400`.
	IssueDate Opt[string] `json:"issue_date"`

	// Free-text address as printed on the document. When this value changes
	// (non-sandbox sessions only) and the structured address is still missing or
	// incomplete, the server re-geocodes it in the background of the same request
	// and may overwrite `poa_parsed_address` / `poa_formatted_address` with the
	// geocoder result. The re-geocode also requires `issuing_state` to be present
	// on the POA record.
	POAAddress Opt[string] `json:"poa_address"`

	// Recipient name as printed on the document.
	NameOnDocument Opt[string] `json:"name_on_document"`

	// Document-specific extras, merged key-by-key. Nine keys map to dedicated POA
	// columns: `bank_account_number`, `bank_iban`, `bank_sort_code`,
	// `bank_routing_number`, `bank_swift_bic`, `bank_branch_name`,
	// `bank_branch_address`, `document_phone_number`, and `additional_names` (must
	// be a list of strings or `null`, otherwise `400`). Any other key is stored as
	// a custom extra field. Per-key semantics: a value sets the key; `null` or `""`
	// deletes it. Must be a JSON object, otherwise `400`.
	ExtraFields Opt[map[string]any] `json:"extra_fields"`

	// Structured address. Only these nested keys are accepted: `address_type`,
	// `city`, `region`, `street_1`, `street_2`, `postal_code`, `country` - any
	// other key returns `400`. Per-key semantics: a value sets the key, `null`
	// removes it. `formatted_address` (and the top-level `poa_formatted_address`)
	// is recomputed server-side by joining `street_1`, `street_2`, `city`,
	// `region`, `postal_code`, and `country` - you cannot set it directly.
	POAParsedAddress Opt[SessionsUpdatePOADataParamsPOAParsedAddress] `json:"poa_parsed_address"`

	// Workflow graph node whose POA record to patch, for graph workflows with
	// multiple Proof of Address steps (also accepted as a `node_id` body field).
	// When omitted, the most recent POA record on the session is patched. If no POA
	// exists for the given node, the call returns `404` (`"The session does not
	// have a POA for node '<node_id>'."`).
	NodeID Opt[string] `json:"-" query:"node_id"`
}

SessionsUpdatePOADataParams holds the parameters of Client.Sessions.UpdatePOAData.

func (SessionsUpdatePOADataParams) MarshalJSON

func (r SessionsUpdatePOADataParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsUpdatePOADataParamsDocumentType

type SessionsUpdatePOADataParamsDocumentType string

SessionsUpdatePOADataParamsDocumentType: POA document category. Values are uppercase - lowercase variants like `utility_bill` return `400`.

SessionsUpdatePOADataParamsDocumentType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdatePOADataParamsDocumentTypeUtilityBill              SessionsUpdatePOADataParamsDocumentType = "UTILITY_BILL"
	SessionsUpdatePOADataParamsDocumentTypeBankStatement            SessionsUpdatePOADataParamsDocumentType = "BANK_STATEMENT"
	SessionsUpdatePOADataParamsDocumentTypeGovernmentIssuedDocument SessionsUpdatePOADataParamsDocumentType = "GOVERNMENT_ISSUED_DOCUMENT"
	SessionsUpdatePOADataParamsDocumentTypeOtherPOADocument         SessionsUpdatePOADataParamsDocumentType = "OTHER_POA_DOCUMENT"
	SessionsUpdatePOADataParamsDocumentTypeUnknown                  SessionsUpdatePOADataParamsDocumentType = "UNKNOWN"
)

Known values of SessionsUpdatePOADataParamsDocumentType.

type SessionsUpdatePOADataParamsPOAParsedAddress

type SessionsUpdatePOADataParamsPOAParsedAddress struct {
	// Free-form address classification (e.g. `home`).
	AddressType Opt[string] `json:"address_type"`
	City        Opt[string] `json:"city"`

	// State / province / autonomous community.
	Region     Opt[string] `json:"region"`
	Street1    Opt[string] `json:"street_1"`
	Street2    Opt[string] `json:"street_2"`
	PostalCode Opt[string] `json:"postal_code"`

	// ISO 3166-1 alpha-2 country code. Lowercase input is normalized to uppercase;
	// alpha-3 codes are rejected with `400`.
	Country Opt[string] `json:"country"`
}

SessionsUpdatePOADataParamsPOAParsedAddress: Structured address. Only these nested keys are accepted: `address_type`, `city`, `region`, `street_1`, `street_2`, `postal_code`, `country` - any other key returns `400`. Per-key semantics: a value sets the key, `null` removes it. `formatted_address` (and the top-level `poa_formatted_address`) is recomputed server-side by joining `street_1`, `street_2`, `city`, `region`, `postal_code`, and `country` - you cannot set it directly.

func (SessionsUpdatePOADataParamsPOAParsedAddress) MarshalJSON

MarshalJSON encodes the fields that are set.

type SessionsUpdatePOADataResponse

type SessionsUpdatePOADataResponse struct {
	// Country that issued the POA document, ISO 3166-1 alpha-3. Case-insensitive
	// (normalized to uppercase); invalid codes return `400`.
	IssuingState string `json:"issuing_state"`

	// POA document category. Values are uppercase - lowercase variants like
	// `utility_bill` return `400`.
	DocumentType SessionsUpdatePOADataResponseDocumentType `json:"document_type"`

	// Language of the document, typically an ISO 639-1 code (e.g. `es`). Free text
	// - not validated as a language code.
	DocumentLanguage string `json:"document_language"`

	// Organization that issued the document (utility company, bank, government
	// agency).
	Issuer string `json:"issuer"`

	// Issue date of the POA document in `YYYY-MM-DD`. Any other format returns
	// `400`.
	IssueDate string `json:"issue_date"`

	// Free-text address as printed on the document. When this value changes
	// (non-sandbox sessions only) and the structured address is still missing or
	// incomplete, the server re-geocodes it in the background of the same request
	// and may overwrite `poa_parsed_address` / `poa_formatted_address` with the
	// geocoder result.
	POAAddress string `json:"poa_address"`

	// Recipient name as printed on the document.
	NameOnDocument string `json:"name_on_document"`

	// Always present in the response: the nine known keys (with `null` for unset
	// ones, `additional_names` defaulting to `[]`) plus any custom keys previously
	// stored.
	ExtraFields map[string]any `json:"extra_fields"`

	// Current structured address, or `null` when none exists. Includes the
	// recomputed `formatted_address` alongside the seven editable keys. Returned as
	// stored - after a server-side geocode it can contain bookkeeping keys (e.g.
	// `raw_results`) alongside the editable keys.
	POAParsedAddress SessionsUpdatePOADataResponsePOAParsedAddress `json:"poa_parsed_address"`

	// Top-level copy of the recomputed `formatted_address`, kept in sync when the
	// structured address changes.
	POAFormattedAddress string `json:"poa_formatted_address"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsUpdatePOADataResponse is a response object.

func (*SessionsUpdatePOADataResponse) UnmarshalJSON

func (r *SessionsUpdatePOADataResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsUpdatePOADataResponse leniently.

type SessionsUpdatePOADataResponseDocumentType

type SessionsUpdatePOADataResponseDocumentType string

SessionsUpdatePOADataResponseDocumentType: POA document category. Values are uppercase - lowercase variants like `utility_bill` return `400`.

SessionsUpdatePOADataResponseDocumentType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdatePOADataResponseDocumentTypeUtilityBill              SessionsUpdatePOADataResponseDocumentType = "UTILITY_BILL"
	SessionsUpdatePOADataResponseDocumentTypeBankStatement            SessionsUpdatePOADataResponseDocumentType = "BANK_STATEMENT"
	SessionsUpdatePOADataResponseDocumentTypeGovernmentIssuedDocument SessionsUpdatePOADataResponseDocumentType = "GOVERNMENT_ISSUED_DOCUMENT"
	SessionsUpdatePOADataResponseDocumentTypeOtherPOADocument         SessionsUpdatePOADataResponseDocumentType = "OTHER_POA_DOCUMENT"
	SessionsUpdatePOADataResponseDocumentTypeUnknown                  SessionsUpdatePOADataResponseDocumentType = "UNKNOWN"
)

Known values of SessionsUpdatePOADataResponseDocumentType.

type SessionsUpdatePOADataResponsePOAParsedAddress

type SessionsUpdatePOADataResponsePOAParsedAddress struct {
	// Free-form address classification (e.g. `home`).
	AddressType string `json:"address_type"`
	City        string `json:"city"`

	// State / province / autonomous community.
	Region     string `json:"region"`
	Street1    string `json:"street_1"`
	Street2    string `json:"street_2"`
	PostalCode string `json:"postal_code"`

	// ISO 3166-1 alpha-2 country code. Lowercase input is normalized to uppercase;
	// alpha-3 codes are rejected with `400`.
	Country string `json:"country"`

	// Joined, human-readable form of the structured address. Recomputed server-side
	// after every `poa_parsed_address` edit.
	FormattedAddress string `json:"formatted_address"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsUpdatePOADataResponsePOAParsedAddress: Current structured address, or `null` when none exists. Includes the recomputed `formatted_address` alongside the seven editable keys. Returned as stored - after a server-side geocode it can contain bookkeeping keys (e.g. `raw_results`) alongside the editable keys.

func (*SessionsUpdatePOADataResponsePOAParsedAddress) UnmarshalJSON

func (r *SessionsUpdatePOADataResponsePOAParsedAddress) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsUpdatePOADataResponsePOAParsedAddress leniently.

type SessionsUpdateStatusParams

type SessionsUpdateStatusParams struct {
	// Target status. `Approved` and `Declined` record a final manual decision (each
	// can also overturn the other). `Resubmitted` clears the selected steps and
	// sends the session back to the user. Any other value returns `400`. Required.
	NewStatus SessionsUpdateStatusParamsNewStatus `json:"new_status"`

	// Free-text reason for the change, stored on the session's review trail and
	// returned in the `reviews` array of [Get
	// Decision](#get-/v3/session/-sessionId-/decision/). For example `Duplicated
	// user`.
	Comment Opt[string] `json:"comment"`

	// Workflow steps the user must redo. Only acted on when `new_status` is
	// `Resubmitted`. For `Approved`/`Declined` the entries are still
	// schema-validated (an invalid `feature` value returns `400`) but schema-valid
	// entries are semantically ignored. If omitted, the server auto-selects
	// existing OCR, Liveness, Face Match, POA, Phone, Email, AML, Database
	// Validation, and Questionnaire attempts whose status is `Declined`, `In
	// Review`, `Not Finished`, or `Expired` (NFC, IP analysis, age estimation, face
	// search, and KYB document attempts are never auto-selected; non-face-match
	// face attempts are selected as `LIVENESS`) - features the user never attempted
	// (no recorded attempt) are NOT selected, so a session with zero attempts
	// returns `400` ("No features found that need resubmission") even though
	// nothing was approved; pass `nodes_to_resubmit` explicitly in that case. Steps
	// are executed in workflow-graph order regardless of the order you send them.
	// `KYB_REGISTRY`, `KYB_KEY_PEOPLE`, and the `KYB` alias are rejected with `400`
	// - those parent checks recompute from their child KYC sessions.
	NodesToResubmit Opt[[]SessionsUpdateStatusParamsNodesToResubmit] `json:"nodes_to_resubmit"`

	// Whether to email the user about the change. Requires `email_address`. For
	// `Approved`/`Declined` the user receives a status notice; for `Resubmitted`
	// the email includes the verification link and the per-step resubmission
	// reasons.
	SendEmail Opt[bool] `json:"send_email"`

	// Recipient for the notification email. **Required when `send_email` is
	// `true`** - omitting it returns `400`.
	EmailAddress Opt[string] `json:"email_address"`

	// Language for the notification email. Accepts any string at schema level;
	// unsupported codes silently fall back to English (`en`).
	EmailLanguage Opt[string] `json:"email_language"`

	// Optional receipt from [Preview Decision
	// Email](/sessions-api/preview-decision-email) (for `Approved` and `Declined`)
	// or [Preview Resubmission Email](/sessions-api/preview-resubmission) (for
	// `Resubmitted`): its `preview_token`. Valid only with `send_email: true`;
	// without it the request returns `400`. The recipient, language, session
	// status, sender and email (and, for a resubmission, the selected steps) must
	// still match the preview, and the receipt expires after 15 minutes. Otherwise
	// the request returns `409` before the session changes or an email is sent.
	// Existing integrations may omit this field.
	EmailPreviewToken Opt[string] `json:"email_preview_token"`
}

SessionsUpdateStatusParams holds the parameters of Client.Sessions.UpdateStatus.

func (SessionsUpdateStatusParams) MarshalJSON

func (r SessionsUpdateStatusParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SessionsUpdateStatusParamsNewStatus

type SessionsUpdateStatusParamsNewStatus string

SessionsUpdateStatusParamsNewStatus: Target status. `Approved` and `Declined` record a final manual decision (each can also overturn the other). `Resubmitted` clears the selected steps and sends the session back to the user. Any other value returns `400`.

SessionsUpdateStatusParamsNewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateStatusParamsNewStatusApproved    SessionsUpdateStatusParamsNewStatus = "Approved"
	SessionsUpdateStatusParamsNewStatusDeclined    SessionsUpdateStatusParamsNewStatus = "Declined"
	SessionsUpdateStatusParamsNewStatusResubmitted SessionsUpdateStatusParamsNewStatus = "Resubmitted"
)

Known values of SessionsUpdateStatusParamsNewStatus.

type SessionsUpdateStatusParamsNodesToResubmit

type SessionsUpdateStatusParamsNodesToResubmit struct {
	// Node identifier as it appears in the session's workflow definition (for
	// example `feature_ocr`, `feature_liveness`). Required.
	NodeID string `json:"node_id"`

	// Feature type of the node. The aliases `ID_VERIFICATION`, `POA`, `PHONE`, and
	// `EMAIL` are normalized server-side to `OCR`, `PROOF_OF_ADDRESS`,
	// `PHONE_VERIFICATION`, and `EMAIL_VERIFICATION`. `KYB_REGISTRY`,
	// `KYB_KEY_PEOPLE`, and `KYB` pass schema validation but are always rejected
	// with the business-rule `400` shown in the examples. Required.
	Feature SessionsUpdateStatusParamsNodesToResubmitFeature `json:"feature"`
}

SessionsUpdateStatusParamsNodesToResubmit is a request object.

func (SessionsUpdateStatusParamsNodesToResubmit) MarshalJSON

MarshalJSON encodes the fields that are set.

type SessionsUpdateStatusParamsNodesToResubmitFeature

type SessionsUpdateStatusParamsNodesToResubmitFeature string

SessionsUpdateStatusParamsNodesToResubmitFeature: Feature type of the node. The aliases `ID_VERIFICATION`, `POA`, `PHONE`, and `EMAIL` are normalized server-side to `OCR`, `PROOF_OF_ADDRESS`, `PHONE_VERIFICATION`, and `EMAIL_VERIFICATION`. `KYB_REGISTRY`, `KYB_KEY_PEOPLE`, and `KYB` pass schema validation but are always rejected with the business-rule `400` shown in the examples.

SessionsUpdateStatusParamsNodesToResubmitFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SessionsUpdateStatusParamsNodesToResubmitFeatureOCR                SessionsUpdateStatusParamsNodesToResubmitFeature = "OCR"
	SessionsUpdateStatusParamsNodesToResubmitFeatureOCRBack            SessionsUpdateStatusParamsNodesToResubmitFeature = "OCR_BACK"
	SessionsUpdateStatusParamsNodesToResubmitFeatureNFC                SessionsUpdateStatusParamsNodesToResubmitFeature = "NFC"
	SessionsUpdateStatusParamsNodesToResubmitFeatureAML                SessionsUpdateStatusParamsNodesToResubmitFeature = "AML"
	SessionsUpdateStatusParamsNodesToResubmitFeatureFace               SessionsUpdateStatusParamsNodesToResubmitFeature = "FACE"
	SessionsUpdateStatusParamsNodesToResubmitFeatureLiveness           SessionsUpdateStatusParamsNodesToResubmitFeature = "LIVENESS"
	SessionsUpdateStatusParamsNodesToResubmitFeatureFaceMatch          SessionsUpdateStatusParamsNodesToResubmitFeature = "FACE_MATCH"
	SessionsUpdateStatusParamsNodesToResubmitFeatureIPAnalysis         SessionsUpdateStatusParamsNodesToResubmitFeature = "IP_ANALYSIS"
	SessionsUpdateStatusParamsNodesToResubmitFeatureAgeEstimation      SessionsUpdateStatusParamsNodesToResubmitFeature = "AGE_ESTIMATION"
	SessionsUpdateStatusParamsNodesToResubmitFeatureProofOfAddress     SessionsUpdateStatusParamsNodesToResubmitFeature = "PROOF_OF_ADDRESS"
	SessionsUpdateStatusParamsNodesToResubmitFeaturePhoneVerification  SessionsUpdateStatusParamsNodesToResubmitFeature = "PHONE_VERIFICATION"
	SessionsUpdateStatusParamsNodesToResubmitFeatureEmailVerification  SessionsUpdateStatusParamsNodesToResubmitFeature = "EMAIL_VERIFICATION"
	SessionsUpdateStatusParamsNodesToResubmitFeatureFaceSearch         SessionsUpdateStatusParamsNodesToResubmitFeature = "FACE_SEARCH"
	SessionsUpdateStatusParamsNodesToResubmitFeatureDatabaseValidation SessionsUpdateStatusParamsNodesToResubmitFeature = "DATABASE_VALIDATION"
	SessionsUpdateStatusParamsNodesToResubmitFeatureQuestionnaire      SessionsUpdateStatusParamsNodesToResubmitFeature = "QUESTIONNAIRE"
	SessionsUpdateStatusParamsNodesToResubmitFeatureDocumentAi         SessionsUpdateStatusParamsNodesToResubmitFeature = "DOCUMENT_AI"
	SessionsUpdateStatusParamsNodesToResubmitFeatureKYBDocuments       SessionsUpdateStatusParamsNodesToResubmitFeature = "KYB_DOCUMENTS"
	SessionsUpdateStatusParamsNodesToResubmitFeatureIDVerification     SessionsUpdateStatusParamsNodesToResubmitFeature = "ID_VERIFICATION"
	SessionsUpdateStatusParamsNodesToResubmitFeaturePOA                SessionsUpdateStatusParamsNodesToResubmitFeature = "POA"
	SessionsUpdateStatusParamsNodesToResubmitFeaturePhone              SessionsUpdateStatusParamsNodesToResubmitFeature = "PHONE"
	SessionsUpdateStatusParamsNodesToResubmitFeatureEmail              SessionsUpdateStatusParamsNodesToResubmitFeature = "EMAIL"
	SessionsUpdateStatusParamsNodesToResubmitFeatureKYBRegistry        SessionsUpdateStatusParamsNodesToResubmitFeature = "KYB_REGISTRY"
	SessionsUpdateStatusParamsNodesToResubmitFeatureKYBKeyPeople       SessionsUpdateStatusParamsNodesToResubmitFeature = "KYB_KEY_PEOPLE"
	SessionsUpdateStatusParamsNodesToResubmitFeatureKYB                SessionsUpdateStatusParamsNodesToResubmitFeature = "KYB"
)

Known values of SessionsUpdateStatusParamsNodesToResubmitFeature.

type SessionsUpdateStatusResponse

type SessionsUpdateStatusResponse struct {
	// UUID of the updated session.
	SessionID string `json:"session_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SessionsUpdateStatusResponse is a response object.

func (*SessionsUpdateStatusResponse) UnmarshalJSON

func (r *SessionsUpdateStatusResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SessionsUpdateStatusResponse leniently.

type SessionsWebhooksService

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

SessionsWebhooksService holds the sessions webhooks operations. Use it through Client.Sessions.Webhooks.

func (*SessionsWebhooksService) List

List: List session webhook deliveries.

List every webhook delivery Didit recorded for one verification session, user (KYC) or business (KYB), newest first, as a plain JSON array (not paginated). Each entry is one attempt to one destination: the first send, each automatic [retry](https://docs.didit.me/integration/webhooks#retry-policy) and each resend are separate entries with their own `uuid`, and retries and resends keep the payload's `event_id`. `request_header` and `request_body` are JSON text; parse them to read the signatures and the payload. Delivery records are available for about 30 days, so an empty array means no webhook has been sent for the session yet or every delivery is older than that. A scoped API key needs `sessions: read` and `decisions: read`.

GET /v3/session/{sessionId}/webhooks/

func (*SessionsWebhooksService) Resend

func (r *SessionsWebhooksService) Resend(ctx context.Context, sessionID string, webhookUUID string, opts ...option.RequestOption) (*SessionWebhookDelivery, error)

Resend: Resend session webhook delivery.

Send a recorded session webhook again to the URL it first went to, with the same payload and `event_id` and a fresh `timestamp`, `X-Timestamp` header and signatures. Didit signs it with the current secret of the destination the delivery belongs to (or the application-level secret for a delivery to the legacy webhook URL), waits up to 5 seconds for your endpoint, records the attempt as a new delivery and returns it with `200` whatever your endpoint answered: read `response_status`. A resend is not retried automatically, and every call sends again, so make your endpoint idempotent on `event_id`. The path has no trailing slash and the request has no body. A scoped API key needs `webhooks: write` and `decisions: read`.

POST /v3/session/{sessionId}/webhook/{webhook_uuid}/resend

func (*SessionsWebhooksService) Retrieve

func (r *SessionsWebhooksService) Retrieve(ctx context.Context, sessionID string, webhookUUID string, opts ...option.RequestOption) (*SessionWebhookDelivery, error)

Retrieve: Get session webhook delivery.

Retrieve one webhook delivery of a verification session: the URL it went to, the HTTP status your endpoint returned, and the exact headers and JSON body Didit sent. `request_header` and `request_body` are JSON text; to check your [signature verification](https://docs.didit.me/integration/webhooks#signature-verification), recompute `X-Signature-V2` from the parsed body with the secret of the destination it was sent to (or the application-level secret for a delivery to the legacy webhook URL). The path has no trailing slash: with one it returns `404`. A scoped API key needs `sessions: read` and `decisions: read`.

GET /v3/session/{sessionId}/webhook/{webhook_uuid}

type SignatureField

type SignatureField struct {
	// Names the field in the results and in `sign.field_values`. Unique within the
	// document. Required.
	Key string `json:"key"`

	// What the field holds. The signer applies their adopted `signature` and
	// `initials`, types `text`, ticks a `checkbox`, and types an `email` when the
	// session has no verified email. Didit fills `full_name` (the verified name),
	// `date_signed` (the date of signing, in the signer's time zone), `data` (from
	// `prefill`) and a verified `email`, and shows them read-only. There is no date
	// picker type: use `text`. Required.
	Type SignatureFieldType `json:"type"`

	// Who fills the field, with the `signature_signer` values. A step fills and
	// stamps only the fields of its own signer. Defaults to the step's signer.
	Role Opt[SignatureFieldRole] `json:"role"`

	// Page number, from 1 to the document's page count. For a Word document, a page
	// of the converted PDF.
	Page Opt[int64] `json:"page"`

	// Left edge, as a fraction of the page width.
	X Opt[float64] `json:"x"`

	// Top edge, as a fraction of the page height.
	Y Opt[float64] `json:"y"`

	// Width, as a fraction of the page width. A signature is at least `0.12` wide.
	Width Opt[float64] `json:"width"`

	// Height, as a fraction of the page height. A signature is at least `0.035`
	// high.
	Height Opt[float64]              `json:"height"`
	Anchor Opt[SignatureFieldAnchor] `json:"anchor"`

	// `signature` and `initials` are required unless you set `false`. `full_name`,
	// `date_signed` and `data` are always required. The signer can't finish a
	// document until its required fields have a value, and a required checkbox must
	// be ticked.
	Required Opt[bool] `json:"required"`

	// Shown to the signer and in the results. Defaults from the type.
	Label Opt[string] `json:"label"`

	// `text` and `email` only.
	Placeholder Opt[string]                   `json:"placeholder"`
	Validation  Opt[SignatureFieldValidation] `json:"validation"`

	// Where the value comes from: `identity.full_name`, `identity.first_name`,
	// `identity.last_name`, `identity.date_of_birth` (`DD/MM/YYYY`),
	// `identity.nationality`, `identity.document_number`, `identity.document_type`,
	// `identity.issuing_country`, `identity.address`, `contact.email`,
	// `contact.phone`, `company.name`, `company.registration_number`,
	// `company.address`, `company.country` (KYB), `session.vendor_data`,
	// `metadata.<key>` (a key of the session's `metadata`) or `api.<key>` (a key of
	// `sign.field_values`). Required for `data`. `full_name` always uses
	// `identity.full_name` and `email` uses `contact.email`. The values of `data`,
	// `full_name` and verified `email` fields are fixed when the signer starts
	// signing.
	Prefill Opt[string] `json:"prefill"`

	// `text` and `email` only: the signer can change a pre-filled value.
	EditableWhenPrefilled Opt[bool] `json:"editable_when_prefilled"`

	// `checkbox` only: the box starts ticked.
	CheckedByDefault Opt[bool] `json:"checked_by_default"`

	// `date_signed` only.
	DateFormat Opt[SignatureFieldDateFormat] `json:"date_format"`
}

SignatureField: A field to place on a session document: which signer fills it, how, and where. Give either a position (`page`, `x`, `y`, `width` and `height`) or an `anchor`. Positions are fractions of the page as it's displayed, from its top-left corner, rounded to 4 decimals, and the field must fit inside the page. A document takes up to 200 fields and one signer up to 500, and every role with fields on a document needs a `signature` or `initials` field there. See [Fields on the document](/core-technology/electronic-signature/overview#fields-on-the-document).

func (SignatureField) MarshalJSON

func (r SignatureField) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SignatureFieldAnchor

type SignatureFieldAnchor struct {
	// Text searched in the document. For a Word file, in the converted PDF.
	// Required.
	Text string `json:"text"`

	// `all` places one field per match; the keys after the first get `_2`, `_3` and
	// so on.
	Occurrence Opt[SignatureFieldAnchorOccurrence] `json:"occurrence"`

	// Added to the left edge of the text, as a fraction of the page width.
	OffsetX Opt[float64] `json:"offset_x"`

	// Added to the top edge of the text, as a fraction of the page height.
	OffsetY Opt[float64] `json:"offset_y"`

	// Width of the field, as a fraction of the page width.
	Width Opt[float64] `json:"width"`

	// Height of the field, as a fraction of the page height.
	Height Opt[float64] `json:"height"`
}

SignatureFieldAnchor: Places a field by a piece of text in the document instead of a position. Didit doesn't remove the text from the PDF, so write it in the same color as the page background. When the text isn't found, the call returns `400` with `field_anchor_not_found`. See [Place fields by anchor text](/sessions-api/create-session#place-fields-by-anchor-text).

func (SignatureFieldAnchor) MarshalJSON

func (r SignatureFieldAnchor) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SignatureFieldAnchorOccurrence

type SignatureFieldAnchorOccurrence string

SignatureFieldAnchorOccurrence: `all` places one field per match; the keys after the first get `_2`, `_3` and so on.

SignatureFieldAnchorOccurrence is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureFieldAnchorOccurrenceFirst SignatureFieldAnchorOccurrence = "first"
	SignatureFieldAnchorOccurrenceAll   SignatureFieldAnchorOccurrence = "all"
)

Known values of SignatureFieldAnchorOccurrence.

type SignatureFieldDateFormat

type SignatureFieldDateFormat string

SignatureFieldDateFormat: `date_signed` only.

SignatureFieldDateFormat is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureFieldDateFormatDdMmYyyy  SignatureFieldDateFormat = "DD/MM/YYYY"
	SignatureFieldDateFormatMmDdYyyy  SignatureFieldDateFormat = "MM/DD/YYYY"
	SignatureFieldDateFormatYyyyMmDd  SignatureFieldDateFormat = "YYYY-MM-DD"
	SignatureFieldDateFormatDMmmmYyyy SignatureFieldDateFormat = "D MMMM YYYY"
)

Known values of SignatureFieldDateFormat.

type SignatureFieldResult

type SignatureFieldResult struct {
	// The field's key, as used in `sign.field_values`.
	Key   string                   `json:"key"`
	Type  SignatureFieldResultType `json:"type"`
	Role  SignatureFieldResultRole `json:"role"`
	Label string                   `json:"label"`

	// Page number, from 1. For a Word document, a page of the converted PDF.
	Page int64 `json:"page"`

	// Left edge, as a fraction of the page width.
	X float64 `json:"x"`

	// Top edge, as a fraction of the page height.
	Y float64 `json:"y"`

	// Width, as a fraction of the page width.
	Width float64 `json:"width"`

	// Height, as a fraction of the page height.
	Height   float64 `json:"height"`
	Required bool    `json:"required"`

	// A string for `text`, `email`, `full_name`, `date_signed` and `data`, a
	// boolean for a `checkbox`, and `true` for an applied signature or initials.
	// `null` when empty.
	Value any `json:"value"`

	// The value as stamped on the page: dates in the field's `date_format`, `Yes`
	// or `No` for a checkbox, `Signed` for a signature or initials.
	DisplayValue string `json:"display_value"`

	// Where the value came from: `signer` (typed, ticked or applied by the signer),
	// `identity` (the verified ID), `contact` (the verified email or phone),
	// `company` (the verified company), `session` (`vendor_data`), `metadata`,
	// `api` (`sign.field_values`) or `signing_time` (the date signed).
	ValueSource SignatureFieldResultValueSource `json:"value_source"`
	FilledAt    time.Time                       `json:"filled_at"`

	// Signature and initials only: the path of the applied image. See [Download a
	// signature image](/sessions-api/electronic-signature/download-field-image).
	ImageURL string `json:"image_url"`

	// `source_empty` when a pre-filled field had no value in the session and
	// `signature_field_data_missing_action` let the signer sign anyway.
	ValueUnavailableReason SignatureFieldResultValueUnavailableReason `json:"value_unavailable_reason"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SignatureFieldResult: A field of a signed document, with its value on this signer's copy. See [Fields](/core-technology/electronic-signature/report-electronic-signature#fields).

func (*SignatureFieldResult) UnmarshalJSON

func (r *SignatureFieldResult) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SignatureFieldResult leniently.

type SignatureFieldResultRole

type SignatureFieldResultRole string

SignatureFieldResultRole is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureFieldResultRoleVerifiedPerson      SignatureFieldResultRole = "verified_person"
	SignatureFieldResultRoleLegalRepresentative SignatureFieldResultRole = "legal_representative"
	SignatureFieldResultRoleKeyPeople           SignatureFieldResultRole = "key_people"
)

Known values of SignatureFieldResultRole.

type SignatureFieldResultType

type SignatureFieldResultType string

SignatureFieldResultType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureFieldResultTypeSignature  SignatureFieldResultType = "signature"
	SignatureFieldResultTypeInitials   SignatureFieldResultType = "initials"
	SignatureFieldResultTypeFullName   SignatureFieldResultType = "full_name"
	SignatureFieldResultTypeDateSigned SignatureFieldResultType = "date_signed"
	SignatureFieldResultTypeText       SignatureFieldResultType = "text"
	SignatureFieldResultTypeCheckbox   SignatureFieldResultType = "checkbox"
	SignatureFieldResultTypeEmail      SignatureFieldResultType = "email"
	SignatureFieldResultTypeData       SignatureFieldResultType = "data"
)

Known values of SignatureFieldResultType.

type SignatureFieldResultValueSource

type SignatureFieldResultValueSource string

SignatureFieldResultValueSource: Where the value came from: `signer` (typed, ticked or applied by the signer), `identity` (the verified ID), `contact` (the verified email or phone), `company` (the verified company), `session` (`vendor_data`), `metadata`, `api` (`sign.field_values`) or `signing_time` (the date signed).

SignatureFieldResultValueSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureFieldResultValueSourceSigner      SignatureFieldResultValueSource = "signer"
	SignatureFieldResultValueSourceIdentity    SignatureFieldResultValueSource = "identity"
	SignatureFieldResultValueSourceContact     SignatureFieldResultValueSource = "contact"
	SignatureFieldResultValueSourceCompany     SignatureFieldResultValueSource = "company"
	SignatureFieldResultValueSourceSession     SignatureFieldResultValueSource = "session"
	SignatureFieldResultValueSourceMetadata    SignatureFieldResultValueSource = "metadata"
	SignatureFieldResultValueSourceAPI         SignatureFieldResultValueSource = "api"
	SignatureFieldResultValueSourceSigningTime SignatureFieldResultValueSource = "signing_time"
)

Known values of SignatureFieldResultValueSource.

type SignatureFieldResultValueUnavailableReason

type SignatureFieldResultValueUnavailableReason string

SignatureFieldResultValueUnavailableReason: `source_empty` when a pre-filled field had no value in the session and `signature_field_data_missing_action` let the signer sign anyway.

SignatureFieldResultValueUnavailableReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureFieldResultValueUnavailableReasonSourceEmpty SignatureFieldResultValueUnavailableReason = "source_empty"
)

Known values of SignatureFieldResultValueUnavailableReason.

type SignatureFieldRole

type SignatureFieldRole string

SignatureFieldRole: Who fills the field, with the `signature_signer` values. A step fills and stamps only the fields of its own signer. Defaults to the step's signer.

SignatureFieldRole is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureFieldRoleVerifiedPerson      SignatureFieldRole = "verified_person"
	SignatureFieldRoleLegalRepresentative SignatureFieldRole = "legal_representative"
	SignatureFieldRoleKeyPeople           SignatureFieldRole = "key_people"
)

Known values of SignatureFieldRole.

type SignatureFieldType

type SignatureFieldType string

SignatureFieldType: What the field holds. The signer applies their adopted `signature` and `initials`, types `text`, ticks a `checkbox`, and types an `email` when the session has no verified email. Didit fills `full_name` (the verified name), `date_signed` (the date of signing, in the signer's time zone), `data` (from `prefill`) and a verified `email`, and shows them read-only. There is no date picker type: use `text`.

SignatureFieldType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureFieldTypeSignature  SignatureFieldType = "signature"
	SignatureFieldTypeInitials   SignatureFieldType = "initials"
	SignatureFieldTypeFullName   SignatureFieldType = "full_name"
	SignatureFieldTypeDateSigned SignatureFieldType = "date_signed"
	SignatureFieldTypeText       SignatureFieldType = "text"
	SignatureFieldTypeCheckbox   SignatureFieldType = "checkbox"
	SignatureFieldTypeEmail      SignatureFieldType = "email"
	SignatureFieldTypeData       SignatureFieldType = "data"
)

Known values of SignatureFieldType.

type SignatureFieldValidation

type SignatureFieldValidation struct {
	// `letters`: letters in any script, spaces, hyphens and apostrophes. `number`:
	// digits with an optional decimal separator. `pattern`: the value must match
	// `pattern`.
	Kind Opt[SignatureFieldValidationKind] `json:"kind"`

	// From `0` up to `max_length`.
	MinLength Opt[int64] `json:"min_length"`
	MaxLength Opt[int64] `json:"max_length"`

	// Required with `kind: "pattern"`. A regular expression the whole value must
	// match. Lookarounds and backreferences aren't supported.
	Pattern Opt[string] `json:"pattern"`

	// Shown to the signer instead of the default error.
	Message Opt[string] `json:"message"`
}

SignatureFieldValidation: Rules for a `text` field's value. The console preview, the signing flow and the API apply the same rules.

func (SignatureFieldValidation) MarshalJSON

func (r SignatureFieldValidation) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SignatureFieldValidationKind

type SignatureFieldValidationKind string

SignatureFieldValidationKind: `letters`: letters in any script, spaces, hyphens and apostrophes. `number`: digits with an optional decimal separator. `pattern`: the value must match `pattern`.

SignatureFieldValidationKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureFieldValidationKindAny     SignatureFieldValidationKind = "any"
	SignatureFieldValidationKindLetters SignatureFieldValidationKind = "letters"
	SignatureFieldValidationKindNumber  SignatureFieldValidationKind = "number"
	SignatureFieldValidationKindEmail   SignatureFieldValidationKind = "email"
	SignatureFieldValidationKindPattern SignatureFieldValidationKind = "pattern"
)

Known values of SignatureFieldValidationKind.

type SignatureResult

type SignatureResult struct {
	// Pass it as `signature_id` to download this signer's evidence or validate
	// their signature.
	ID string `json:"id"`

	// The workflow step that produced it.
	NodeID string `json:"node_id"`

	// Where the signer is in the step. Only `signed` means the documents are
	// signed.
	Status SignatureResultStatus `json:"status"`

	// The step's outcome. A warning sets it through its rule; custom status rules
	// apply after.
	Verdict SignatureResultVerdict `json:"verdict"`

	// `aes`. `qes` (Qualified Electronic Signature, QES) is coming soon.
	Level  SignatureResultLevel  `json:"level"`
	Format SignatureResultFormat `json:"format"`

	// `PAdES-B-LT` once signed.
	Profile      string                      `json:"profile"`
	Signer       SignatureResultSigner       `json:"signer"`
	IdentityUsed SignatureResultIdentityUsed `json:"identity_used"`

	// The certificate the documents were signed with. `null` until signed.
	Certificate  SignatureResultCertificate  `json:"certificate"`
	Confirmation SignatureResultConfirmation `json:"confirmation"`

	// The trusted timestamp in the signature. `null` until signed.
	Timestamp SignatureResultTimestamp   `json:"timestamp"`
	Documents []SignatureResultDocuments `json:"documents"`

	// The signature and initials the signer adopted for signature and initials
	// fields. `null` until the signer adopts one.
	AdoptedSignature SignatureResultAdoptedSignature `json:"adopted_signature"`

	// When the signer agreed, on the review screen, to sign the documents
	// electronically. Set when any document has fields.
	ElectronicSignatureConsentAt time.Time `json:"electronic_signature_consent_at"`

	// Path of the evidence PDF, once signed. See [Download the signature
	// evidence](/sessions-api/electronic-signature/download-evidence).
	EvidenceFile string `json:"evidence_file"`

	// Warnings raised for this signer. See [Electronic Signature
	// warnings](/core-technology/electronic-signature/warnings-electronic-signature).
	Warnings []SignatureResultWarnings `json:"warnings"`

	// The last cryptographic check of the signed documents. `null` until the
	// documents are signed. If Didit can't confirm the outcome of signing, it's
	// `{"valid": null, "reason": "signature_provider_outcome_unknown",
	// "checked_at": ...}` and `status` stays `signing`: treat it as not signed.
	Validation     SignatureResultValidation     `json:"validation"`
	DeclinedAt     time.Time                     `json:"declined_at"`
	DeclinedAction SignatureResultDeclinedAction `json:"declined_action"`
	SignedAt       time.Time                     `json:"signed_at"`

	// When the signing link stops working.
	ExpiresAt              time.Time `json:"expires_at"`
	EmailSentAt            time.Time `json:"email_sent_at"`
	EmailUnavailableReason string    `json:"email_unavailable_reason"`

	// The signer's IP address when they asked for their code.
	IPAddress string `json:"ip_address"`

	// Not collected: always `null`.
	Place                  string                                `json:"place"`
	PlaceUnavailableReason SignatureResultPlaceUnavailableReason `json:"place_unavailable_reason"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SignatureResult: One signer's result for one Electronic Signature step. See the [Electronic Signature report](/core-technology/electronic-signature/report-electronic-signature).

func (*SignatureResult) UnmarshalJSON

func (r *SignatureResult) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SignatureResult leniently.

type SignatureResultAdoptedSignature

type SignatureResultAdoptedSignature struct {
	// `typed`: the verified name in a handwriting style. `drawn`: drawn with a
	// finger or a mouse.
	Method SignatureResultAdoptedSignatureMethod `json:"method"`

	// The handwriting style of a typed signature. `null` when drawn.
	Font      string    `json:"font"`
	AdoptedAt time.Time `json:"adopted_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SignatureResultAdoptedSignature: The signature and initials the signer adopted for signature and initials fields. `null` until the signer adopts one.

func (*SignatureResultAdoptedSignature) UnmarshalJSON

func (r *SignatureResultAdoptedSignature) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SignatureResultAdoptedSignature leniently.

type SignatureResultAdoptedSignatureMethod

type SignatureResultAdoptedSignatureMethod string

SignatureResultAdoptedSignatureMethod: `typed`: the verified name in a handwriting style. `drawn`: drawn with a finger or a mouse.

SignatureResultAdoptedSignatureMethod is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureResultAdoptedSignatureMethodTyped SignatureResultAdoptedSignatureMethod = "typed"
	SignatureResultAdoptedSignatureMethodDrawn SignatureResultAdoptedSignatureMethod = "drawn"
)

Known values of SignatureResultAdoptedSignatureMethod.

type SignatureResultCertificate

type SignatureResultCertificate struct {
	Issuer   string `json:"issuer"`
	IssuedTo string `json:"issued_to"`

	// Serial number, hexadecimal.
	Serial     string    `json:"serial"`
	ValidFrom  time.Time `json:"valid_from"`
	ValidUntil time.Time `json:"valid_until"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SignatureResultCertificate: The certificate the documents were signed with. `null` until signed.

func (*SignatureResultCertificate) UnmarshalJSON

func (r *SignatureResultCertificate) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SignatureResultCertificate leniently.

type SignatureResultConfirmation

type SignatureResultConfirmation struct {
	Channel SignatureResultConfirmationChannel `json:"channel"`

	// The masked contact the code went to.
	Destination string    `json:"destination"`
	ConfirmedAt time.Time `json:"confirmed_at"`

	// Codes entered, the right one included.
	Attempts int64 `json:"attempts"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SignatureResultConfirmation is a response object.

func (*SignatureResultConfirmation) UnmarshalJSON

func (r *SignatureResultConfirmation) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SignatureResultConfirmation leniently.

type SignatureResultConfirmationChannel

type SignatureResultConfirmationChannel string

SignatureResultConfirmationChannel is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureResultConfirmationChannelEmail SignatureResultConfirmationChannel = "email"
	SignatureResultConfirmationChannelSMS   SignatureResultConfirmationChannel = "sms"
)

Known values of SignatureResultConfirmationChannel.

type SignatureResultDeclinedAction

type SignatureResultDeclinedAction string

SignatureResultDeclinedAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureResultDeclinedActionDecline  SignatureResultDeclinedAction = "DECLINE"
	SignatureResultDeclinedActionReview   SignatureResultDeclinedAction = "REVIEW"
	SignatureResultDeclinedActionNoAction SignatureResultDeclinedAction = "NO_ACTION"
)

Known values of SignatureResultDeclinedAction.

type SignatureResultDocuments

type SignatureResultDocuments struct {
	// The document on this signer's copy. Use it to download the signed file.
	ID string `json:"id"`

	// Same as `id`.
	UUID     string `json:"uuid"`
	Title    string `json:"title"`
	FileName string `json:"file_name"`

	// Pages of the document signed. For Word, of the converted PDF.
	Pages     int64 `json:"pages"`
	SizeBytes int64 `json:"size_bytes"`

	// SHA-256 of the document as the signer was shown it.
	Sha256Original string `json:"sha256_original"`

	// SHA-256 of the signed PDF, once signed.
	Sha256Signed string `json:"sha256_signed"`

	// `not_signed`: opened but not signed. `not_reached`: never opened.
	Status   SignatureResultDocumentsStatus `json:"status"`
	OpenedAt time.Time                      `json:"opened_at"`

	// When the signer reached the end of a document without fields, when the step
	// requires it.
	ReadAt    time.Time `json:"read_at"`
	ReadToEnd bool      `json:"read_to_end"`

	// When the signer agreed to a document without fields, or finished the fields
	// of a document with fields.
	ConsentedAt time.Time `json:"consented_at"`
	Consent     bool      `json:"consent"`

	// Path of the signed PDF, once signed. See [Download a signed
	// document](/sessions-api/electronic-signature/download-signed-document).
	SignedFile string `json:"signed_file"`

	// `fields` for a document with fields, `read_and_agree` for a document without.
	Mode SignatureResultDocumentsMode `json:"mode"`

	// `pdf`, or `docx` for a Word document Didit converted to PDF.
	SourceFormat SignatureResultDocumentsSourceFormat `json:"source_format"`

	// `null` for a PDF. For a Word document, the original file and the conversion.
	Conversion SignatureResultDocumentsConversion `json:"conversion"`

	// Fields on the document, with their values. Empty for a document without
	// fields.
	Fields []SignatureFieldResult `json:"fields"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SignatureResultDocuments is a response object.

func (*SignatureResultDocuments) UnmarshalJSON

func (r *SignatureResultDocuments) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SignatureResultDocuments leniently.

type SignatureResultDocumentsConversion

type SignatureResultDocumentsConversion struct {
	From SignatureResultDocumentsConversionFrom `json:"from"`

	// Your original Word file name.
	FileName string `json:"file_name"`

	// SHA-256 of your original Word file.
	Sha256 string `json:"sha256"`

	// Size of your original Word file.
	SizeBytes int64 `json:"size_bytes"`

	// Version of the converter that produced the PDF.
	Converter string `json:"converter"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SignatureResultDocumentsConversion: `null` for a PDF. For a Word document, the original file and the conversion.

func (*SignatureResultDocumentsConversion) UnmarshalJSON

func (r *SignatureResultDocumentsConversion) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SignatureResultDocumentsConversion leniently.

type SignatureResultDocumentsConversionFrom

type SignatureResultDocumentsConversionFrom string

SignatureResultDocumentsConversionFrom is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureResultDocumentsConversionFromDocx SignatureResultDocumentsConversionFrom = "docx"
)

Known values of SignatureResultDocumentsConversionFrom.

type SignatureResultDocumentsMode

type SignatureResultDocumentsMode string

SignatureResultDocumentsMode: `fields` for a document with fields, `read_and_agree` for a document without.

SignatureResultDocumentsMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureResultDocumentsModeFields       SignatureResultDocumentsMode = "fields"
	SignatureResultDocumentsModeReadAndAgree SignatureResultDocumentsMode = "read_and_agree"
)

Known values of SignatureResultDocumentsMode.

type SignatureResultDocumentsSourceFormat

type SignatureResultDocumentsSourceFormat string

SignatureResultDocumentsSourceFormat: `pdf`, or `docx` for a Word document Didit converted to PDF.

SignatureResultDocumentsSourceFormat is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureResultDocumentsSourceFormatPDF  SignatureResultDocumentsSourceFormat = "pdf"
	SignatureResultDocumentsSourceFormatDocx SignatureResultDocumentsSourceFormat = "docx"
)

Known values of SignatureResultDocumentsSourceFormat.

type SignatureResultDocumentsStatus

type SignatureResultDocumentsStatus string

SignatureResultDocumentsStatus: `not_signed`: opened but not signed. `not_reached`: never opened.

SignatureResultDocumentsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureResultDocumentsStatusSigned     SignatureResultDocumentsStatus = "signed"
	SignatureResultDocumentsStatusDeclined   SignatureResultDocumentsStatus = "declined"
	SignatureResultDocumentsStatusNotSigned  SignatureResultDocumentsStatus = "not_signed"
	SignatureResultDocumentsStatusNotReached SignatureResultDocumentsStatus = "not_reached"
)

Known values of SignatureResultDocumentsStatus.

type SignatureResultFormat

type SignatureResultFormat string

SignatureResultFormat is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureResultFormatPades SignatureResultFormat = "pades"
)

Known values of SignatureResultFormat.

type SignatureResultIdentityUsed

type SignatureResultIdentityUsed struct {
	SessionID string `json:"session_id"`
	KYCID     string `json:"kyc_id"`
	Verified  bool   `json:"verified"`

	// The name the signer had to match.
	ExpectedName string `json:"expected_name"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SignatureResultIdentityUsed is a response object.

func (*SignatureResultIdentityUsed) UnmarshalJSON

func (r *SignatureResultIdentityUsed) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SignatureResultIdentityUsed leniently.

type SignatureResultLevel

type SignatureResultLevel string

SignatureResultLevel: `aes`. `qes` (Qualified Electronic Signature, QES) is coming soon.

SignatureResultLevel is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureResultLevelAes SignatureResultLevel = "aes"
	SignatureResultLevelQes SignatureResultLevel = "qes"
)

Known values of SignatureResultLevel.

type SignatureResultPlaceUnavailableReason

type SignatureResultPlaceUnavailableReason string

SignatureResultPlaceUnavailableReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureResultPlaceUnavailableReasonNotCollected SignatureResultPlaceUnavailableReason = "not_collected"
)

Known values of SignatureResultPlaceUnavailableReason.

type SignatureResultSigner

type SignatureResultSigner struct {
	// Verified name.
	Name     string                        `json:"name"`
	Capacity SignatureResultSignerCapacity `json:"capacity"`
	Company  string                        `json:"company"`

	// The key person's designation, as declared.
	Role string `json:"role"`

	// The key person's structured roles, as declared for the company.
	Roles []string `json:"roles"`

	// The KYC session that verified the signer.
	IdentitySessionID string `json:"identity_session_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SignatureResultSigner is a response object.

func (*SignatureResultSigner) UnmarshalJSON

func (r *SignatureResultSigner) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SignatureResultSigner leniently.

type SignatureResultSignerCapacity

type SignatureResultSignerCapacity string

SignatureResultSignerCapacity is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureResultSignerCapacitySelf    SignatureResultSignerCapacity = "self"
	SignatureResultSignerCapacityCompany SignatureResultSignerCapacity = "company"
)

Known values of SignatureResultSignerCapacity.

type SignatureResultStatus

type SignatureResultStatus string

SignatureResultStatus: Where the signer is in the step. Only `signed` means the documents are signed.

SignatureResultStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureResultStatusIntro    SignatureResultStatus = "intro"
	SignatureResultStatusReview   SignatureResultStatus = "review"
	SignatureResultStatusCode     SignatureResultStatus = "code"
	SignatureResultStatusSigning  SignatureResultStatus = "signing"
	SignatureResultStatusSigned   SignatureResultStatus = "signed"
	SignatureResultStatusDeclined SignatureResultStatus = "declined"
)

Known values of SignatureResultStatus.

type SignatureResultTimestamp

type SignatureResultTimestamp struct {
	Time time.Time `json:"time"`

	// Always `false` for AES.
	Qualified bool `json:"qualified"`
	Valid     bool `json:"valid"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SignatureResultTimestamp: The trusted timestamp in the signature. `null` until signed.

func (*SignatureResultTimestamp) UnmarshalJSON

func (r *SignatureResultTimestamp) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SignatureResultTimestamp leniently.

type SignatureResultValidation

type SignatureResultValidation struct {
	// `true` when every document is valid. `null` when the outcome of signing
	// couldn't be confirmed.
	Valid bool `json:"valid"`

	// Set when `valid` is `null`: `signature_provider_outcome_unknown`.
	Reason    string                               `json:"reason"`
	CheckedAt time.Time                            `json:"checked_at"`
	Documents []SignatureResultValidationDocuments `json:"documents"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SignatureResultValidation: The last cryptographic check of the signed documents. `null` until the documents are signed. If Didit can't confirm the outcome of signing, it's `{"valid": null, "reason": "signature_provider_outcome_unknown", "checked_at": ...}` and `status` stays `signing`: treat it as not signed.

func (*SignatureResultValidation) UnmarshalJSON

func (r *SignatureResultValidation) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SignatureResultValidation leniently.

type SignatureResultValidationDocuments

type SignatureResultValidationDocuments struct {
	ID        string    `json:"id"`
	CheckedAt time.Time `json:"checked_at"`

	// `true` when the signature and the timestamp are both valid and trusted.
	Valid bool `json:"valid"`

	// `true` when the document is unchanged since signing.
	Integrity bool `json:"integrity"`

	// `true` when the signing certificate chains to a trusted root.
	Trusted bool `json:"trusted"`
	Revoked bool `json:"revoked"`

	// EU Trusted List check. For AES: `{"status": "not_applicable", "reason":
	// "aes_not_qualified"}`.
	TrustedList SignatureResultValidationDocumentsTrustedList `json:"trusted_list"`

	// The certificate the documents were signed with. `null` until signed.
	Certificate SignatureResultValidationDocumentsCertificate `json:"certificate"`

	// The trusted timestamp in the signature. `null` until signed.
	Timestamp SignatureResultValidationDocumentsTimestamp `json:"timestamp"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SignatureResultValidationDocuments is a response object.

func (*SignatureResultValidationDocuments) UnmarshalJSON

func (r *SignatureResultValidationDocuments) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SignatureResultValidationDocuments leniently.

type SignatureResultValidationDocumentsCertificate

type SignatureResultValidationDocumentsCertificate struct {
	Issuer   string `json:"issuer"`
	IssuedTo string `json:"issued_to"`

	// Serial number, hexadecimal.
	Serial     string    `json:"serial"`
	ValidFrom  time.Time `json:"valid_from"`
	ValidUntil time.Time `json:"valid_until"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SignatureResultValidationDocumentsCertificate: The certificate the documents were signed with. `null` until signed.

func (*SignatureResultValidationDocumentsCertificate) UnmarshalJSON

func (r *SignatureResultValidationDocumentsCertificate) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SignatureResultValidationDocumentsCertificate leniently.

type SignatureResultValidationDocumentsTimestamp

type SignatureResultValidationDocumentsTimestamp struct {
	Time time.Time `json:"time"`

	// Always `false` for AES.
	Qualified bool `json:"qualified"`
	Valid     bool `json:"valid"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SignatureResultValidationDocumentsTimestamp: The trusted timestamp in the signature. `null` until signed.

func (*SignatureResultValidationDocumentsTimestamp) UnmarshalJSON

func (r *SignatureResultValidationDocumentsTimestamp) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SignatureResultValidationDocumentsTimestamp leniently.

type SignatureResultValidationDocumentsTrustedList

type SignatureResultValidationDocumentsTrustedList struct {
	Status string `json:"status"`
	Reason string `json:"reason"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SignatureResultValidationDocumentsTrustedList: EU Trusted List check. For AES: `{"status": "not_applicable", "reason": "aes_not_qualified"}`.

func (*SignatureResultValidationDocumentsTrustedList) UnmarshalJSON

func (r *SignatureResultValidationDocumentsTrustedList) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SignatureResultValidationDocumentsTrustedList leniently.

type SignatureResultVerdict

type SignatureResultVerdict string

SignatureResultVerdict: The step's outcome. A warning sets it through its rule; custom status rules apply after.

SignatureResultVerdict is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureResultVerdictNotFinished SignatureResultVerdict = "Not Finished"
	SignatureResultVerdictApproved    SignatureResultVerdict = "Approved"
	SignatureResultVerdictInReview    SignatureResultVerdict = "In Review"
	SignatureResultVerdictDeclined    SignatureResultVerdict = "Declined"
)

Known values of SignatureResultVerdict.

type SignatureResultWarnings

type SignatureResultWarnings struct {
	Code   SignatureResultWarningsCode `json:"code"`
	NodeID string                      `json:"node_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SignatureResultWarnings is a response object.

func (*SignatureResultWarnings) UnmarshalJSON

func (r *SignatureResultWarnings) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SignatureResultWarnings leniently.

type SignatureResultWarningsCode

type SignatureResultWarningsCode string

SignatureResultWarningsCode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SignatureResultWarningsCodeSignatureDeclined            SignatureResultWarningsCode = "SIGNATURE_DECLINED"
	SignatureResultWarningsCodeSignatureOTPFailed           SignatureResultWarningsCode = "SIGNATURE_OTP_FAILED"
	SignatureResultWarningsCodeSignatureNameMismatch        SignatureResultWarningsCode = "SIGNATURE_NAME_MISMATCH"
	SignatureResultWarningsCodeSignatureIdentityNotVerified SignatureResultWarningsCode = "SIGNATURE_IDENTITY_NOT_VERIFIED"
	SignatureResultWarningsCodeSignatureDocumentChanged     SignatureResultWarningsCode = "SIGNATURE_DOCUMENT_CHANGED"
	SignatureResultWarningsCodeSignatureFieldDataMissing    SignatureResultWarningsCode = "SIGNATURE_FIELD_DATA_MISSING"
)

Known values of SignatureResultWarningsCode.

type SimpleQuestionnaireElement

type SimpleQuestionnaireElement struct {
	// Optional stable question id. If omitted, the API generates `q1`, `q2`, etc.
	// Use lowercase letters, numbers, and underscores for readability.
	ID Opt[string] `json:"id"`

	// Question type. The API accepts these lowercase values and their uppercase
	// equivalents. Required.
	ElementType SimpleQuestionnaireElementElementType `json:"element_type"`

	// Question label by language code, for example `{ "en": "Source of funds" }`.
	// Required.
	Label       map[string]string      `json:"label"`
	Description Opt[map[string]string] `json:"description"`
	Placeholder Opt[map[string]string] `json:"placeholder"`
	IsRequired  Opt[bool]              `json:"is_required"`

	// Use for `dropdown`, `single_choice`, and `multiple_choice`. If `value` is
	// omitted, the API generates one from the option label.
	Options Opt[[]SimpleQuestionnaireElementOptions] `json:"options"`

	// Use with `file_upload` or `image`.
	MaxFiles Opt[int64] `json:"max_files"`

	// Optional format validation for `short_text`, `long_text`, or `number`.
	// Enforced while the user fills the field (they cannot proceed until it passes)
	// and re-checked by the API on submission.
	Validation Opt[SimpleQuestionnaireElementValidation] `json:"validation"`
}

SimpleQuestionnaireElement is a request object.

func (SimpleQuestionnaireElement) MarshalJSON

func (r SimpleQuestionnaireElement) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SimpleQuestionnaireElementElementType

type SimpleQuestionnaireElementElementType string

SimpleQuestionnaireElementElementType: Question type. The API accepts these lowercase values and their uppercase equivalents.

SimpleQuestionnaireElementElementType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SimpleQuestionnaireElementElementTypeShortText      SimpleQuestionnaireElementElementType = "short_text"
	SimpleQuestionnaireElementElementTypeLongText       SimpleQuestionnaireElementElementType = "long_text"
	SimpleQuestionnaireElementElementTypeDropdown       SimpleQuestionnaireElementElementType = "dropdown"
	SimpleQuestionnaireElementElementTypeSingleChoice   SimpleQuestionnaireElementElementType = "single_choice"
	SimpleQuestionnaireElementElementTypeMultipleChoice SimpleQuestionnaireElementElementType = "multiple_choice"
	SimpleQuestionnaireElementElementTypeNumber         SimpleQuestionnaireElementElementType = "number"
	SimpleQuestionnaireElementElementTypeImage          SimpleQuestionnaireElementElementType = "image"
	SimpleQuestionnaireElementElementTypeFileUpload     SimpleQuestionnaireElementElementType = "file_upload"
	SimpleQuestionnaireElementElementTypeTime           SimpleQuestionnaireElementElementType = "time"
	SimpleQuestionnaireElementElementTypeEmail          SimpleQuestionnaireElementElementType = "email"
	SimpleQuestionnaireElementElementTypeAddress        SimpleQuestionnaireElementElementType = "address"
	SimpleQuestionnaireElementElementTypePhone          SimpleQuestionnaireElementElementType = "phone"
	SimpleQuestionnaireElementElementTypeCountry        SimpleQuestionnaireElementElementType = "country"
	SimpleQuestionnaireElementElementTypeDatePicker     SimpleQuestionnaireElementElementType = "date_picker"
	SimpleQuestionnaireElementElementTypeConsent        SimpleQuestionnaireElementElementType = "consent"
	SimpleQuestionnaireElementElementTypeSectionHeader  SimpleQuestionnaireElementElementType = "section_header"
	SimpleQuestionnaireElementElementTypeSeparator      SimpleQuestionnaireElementElementType = "separator"
	SimpleQuestionnaireElementElementTypeHeading        SimpleQuestionnaireElementElementType = "heading"
	SimpleQuestionnaireElementElementTypeParagraph      SimpleQuestionnaireElementElementType = "paragraph"
)

Known values of SimpleQuestionnaireElementElementType.

type SimpleQuestionnaireElementOptions

type SimpleQuestionnaireElementOptions struct {
	Value Opt[string] `json:"value"`

	// Required.
	Label map[string]string `json:"label"`
}

SimpleQuestionnaireElementOptions is a request object.

func (SimpleQuestionnaireElementOptions) MarshalJSON

func (r SimpleQuestionnaireElementOptions) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SimpleQuestionnaireElementValidation

type SimpleQuestionnaireElementValidation struct {
	// Regular expression (ECMA-262 subset) the value must fully match. For
	// `short_text` and `long_text`. Do not add ^/$ anchors; the whole value is
	// matched.
	Pattern Opt[string] `json:"pattern"`

	// Minimum number of characters. For `short_text` and `long_text`.
	MinLength Opt[int64] `json:"min_length"`

	// Maximum number of characters. For `short_text` and `long_text`.
	MaxLength Opt[int64] `json:"max_length"`

	// Minimum numeric value. For `number`.
	Min Opt[float64] `json:"min"`

	// Maximum numeric value. For `number`.
	Max Opt[float64] `json:"max"`

	// Translated message shown when validation fails, keyed by language code.
	ErrorMessage Opt[map[string]string] `json:"error_message"`
}

SimpleQuestionnaireElementValidation: Optional format validation for `short_text`, `long_text`, or `number`. Enforced while the user fills the field (they cannot proceed until it passes) and re-checked by the API on submission.

func (SimpleQuestionnaireElementValidation) MarshalJSON

func (r SimpleQuestionnaireElementValidation) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SimpleQuestionnaireRequest

type SimpleQuestionnaireRequest struct {
	// Internal name for the questionnaire. Required.
	Title       string      `json:"title"`
	Description Opt[string] `json:"description"`

	// Languages included in every label. Must include `en`. Required.
	Languages []string `json:"languages"`

	// Default language. Must be included in `languages`.
	DefaultLanguage Opt[string] `json:"default_language"`
	IsActive        Opt[bool]   `json:"is_active"`

	// Omit this field to create a published questionnaire ready for workflows.
	Status Opt[SimpleQuestionnaireRequestStatus] `json:"status"`

	// Questions in the exact order users should see them. Branching and conditional
	// fields are not supported. Required.
	FormElements []SimpleQuestionnaireElement `json:"form_elements"`
}

SimpleQuestionnaireRequest: Create a simple linear questionnaire. The API converts `form_elements` into the internal questionnaire graph.

func (SimpleQuestionnaireRequest) MarshalJSON

func (r SimpleQuestionnaireRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SimpleQuestionnaireRequestStatus

type SimpleQuestionnaireRequestStatus string

SimpleQuestionnaireRequestStatus: Omit this field to create a published questionnaire ready for workflows.

SimpleQuestionnaireRequestStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SimpleQuestionnaireRequestStatusDraft     SimpleQuestionnaireRequestStatus = "draft"
	SimpleQuestionnaireRequestStatusPublished SimpleQuestionnaireRequestStatus = "published"
)

Known values of SimpleQuestionnaireRequestStatus.

type SimpleQuestionnaireUpdateRequest

type SimpleQuestionnaireUpdateRequest struct {
	Title           Opt[string]                                 `json:"title"`
	Description     Opt[string]                                 `json:"description"`
	Languages       Opt[[]string]                               `json:"languages"`
	DefaultLanguage Opt[string]                                 `json:"default_language"`
	IsActive        Opt[bool]                                   `json:"is_active"`
	Status          Opt[SimpleQuestionnaireUpdateRequestStatus] `json:"status"`

	// If provided, this replaces the full linear question list.
	FormElements Opt[[]SimpleQuestionnaireElement] `json:"form_elements"`
}

SimpleQuestionnaireUpdateRequest: Update questionnaire metadata or replace the full linear `form_elements` list.

func (SimpleQuestionnaireUpdateRequest) MarshalJSON

func (r SimpleQuestionnaireUpdateRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SimpleQuestionnaireUpdateRequestStatus

type SimpleQuestionnaireUpdateRequestStatus string

SimpleQuestionnaireUpdateRequestStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SimpleQuestionnaireUpdateRequestStatusDraft     SimpleQuestionnaireUpdateRequestStatus = "draft"
	SimpleQuestionnaireUpdateRequestStatusPublished SimpleQuestionnaireUpdateRequestStatus = "published"
)

Known values of SimpleQuestionnaireUpdateRequestStatus.

type SimpleWorkflowFeature

type SimpleWorkflowFeature struct {
	// Feature to run. Use the uppercase values shown here. Required.
	Feature SimpleWorkflowFeatureFeature `json:"feature"`

	// Feature-specific settings. For `QUESTIONNAIRE`, include `questionnaire_uuid`
	// with the `questionnaire_id` returned by the questionnaire create endpoint.
	// For `OCR`, `methods` selects which ID Verification methods each country may
	// use (document capture, non-doc lookup against a government or other
	// authoritative source, and digital identity wallets); omit it and every
	// country is document capture only. For `SIGNATURE`, see [Electronic Signature
	// settings](/management-api/workflows/feature-configs#electronic-signature):
	// `signature_level` accepts `aes` only for now, and workflow documents and
	// their fields are managed in the console, so through the API send documents
	// and fields per session with `signature_documents_source: "session"`.
	Config Opt[map[string]any] `json:"config"`

	// Optional internal label for this workflow node.
	Label Opt[string] `json:"label"`
}

SimpleWorkflowFeature is a request object.

func (SimpleWorkflowFeature) MarshalJSON

func (r SimpleWorkflowFeature) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SimpleWorkflowFeatureFeature

type SimpleWorkflowFeatureFeature string

SimpleWorkflowFeatureFeature: Feature to run. Use the uppercase values shown here.

SimpleWorkflowFeatureFeature is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SimpleWorkflowFeatureFeatureOCR                SimpleWorkflowFeatureFeature = "OCR"
	SimpleWorkflowFeatureFeatureNFC                SimpleWorkflowFeatureFeature = "NFC"
	SimpleWorkflowFeatureFeatureLiveness           SimpleWorkflowFeatureFeature = "LIVENESS"
	SimpleWorkflowFeatureFeatureFaceMatch          SimpleWorkflowFeatureFeature = "FACE_MATCH"
	SimpleWorkflowFeatureFeatureProofOfAddress     SimpleWorkflowFeatureFeature = "PROOF_OF_ADDRESS"
	SimpleWorkflowFeatureFeatureQuestionnaire      SimpleWorkflowFeatureFeature = "QUESTIONNAIRE"
	SimpleWorkflowFeatureFeatureDocumentAi         SimpleWorkflowFeatureFeature = "DOCUMENT_AI"
	SimpleWorkflowFeatureFeaturePhoneVerification  SimpleWorkflowFeatureFeature = "PHONE_VERIFICATION"
	SimpleWorkflowFeatureFeatureEmailVerification  SimpleWorkflowFeatureFeature = "EMAIL_VERIFICATION"
	SimpleWorkflowFeatureFeatureDatabaseValidation SimpleWorkflowFeatureFeature = "DATABASE_VALIDATION"
	SimpleWorkflowFeatureFeatureAML                SimpleWorkflowFeatureFeature = "AML"
	SimpleWorkflowFeatureFeatureIPAnalysis         SimpleWorkflowFeatureFeature = "IP_ANALYSIS"
	SimpleWorkflowFeatureFeatureAgeEstimation      SimpleWorkflowFeatureFeature = "AGE_ESTIMATION"
	SimpleWorkflowFeatureFeatureKYBRegistry        SimpleWorkflowFeatureFeature = "KYB_REGISTRY"
	SimpleWorkflowFeatureFeatureKYBDocuments       SimpleWorkflowFeatureFeature = "KYB_DOCUMENTS"
	SimpleWorkflowFeatureFeatureKYBKeyPeople       SimpleWorkflowFeatureFeature = "KYB_KEY_PEOPLE"
	SimpleWorkflowFeatureFeatureSignature          SimpleWorkflowFeatureFeature = "SIGNATURE"
)

Known values of SimpleWorkflowFeatureFeature.

type SimpleWorkflowRequest

type SimpleWorkflowRequest struct {
	// Display name for the workflow (max 50 characters). Defaults to `"ID
	// Verification"` when omitted - always set it so workflows stay
	// distinguishable.
	WorkflowLabel Opt[string] `json:"workflow_label"`

	// Set this workflow as the default for new sessions.
	IsDefault Opt[bool] `json:"is_default"`

	// Omit this field to create a published workflow ready for sessions. Use
	// `draft` only when you want to save without publishing.
	Status Opt[SimpleWorkflowRequestStatus] `json:"status"`

	// Verification features in execution order. The API links each item to the next
	// one and adds one final status node automatically. Required.
	Features []SimpleWorkflowFeature `json:"features"`

	// Enable white-label customization for sessions created with this workflow.
	IsWhiteLabelEnabled Opt[bool] `json:"is_white_label_enabled"`

	// Allow the verification flow to run on desktop browsers.
	IsDesktopAllowed Opt[bool] `json:"is_desktop_allowed"`

	// Maximum retry attempts allowed after a declined verification. `0` blocks the
	// user after the first decline.
	MaxRetryAttempts Opt[int64] `json:"max_retry_attempts"`

	// Rolling window in days used to count retries. `null` enforces an all-time
	// limit.
	RetryWindowDays Opt[int64] `json:"retry_window_days"`

	// Maximum liveness submissions per session. Default 3: one initial attempt plus
	// two retries. This value is also copied into generated liveness and
	// age-estimation workflow nodes unless the feature-level config overrides it.
	FaceLivenessMaxAttempts Opt[int64] `json:"face_liveness_max_attempts"`

	// Maximum face-match submissions per session. Default 3: one initial attempt
	// plus two retries. This value is also copied into generated face-match
	// workflow nodes unless the feature-level config overrides it.
	FaceMatchMaxAttempts Opt[int64] `json:"face_match_max_attempts"`

	// Seconds before an unfinished session expires. Minimum 1 hour (3600), maximum
	// 4 weeks (2419200).
	SessionExpirationTime Opt[int64] `json:"session_expiration_time"`
}

SimpleWorkflowRequest: Create a simple linear workflow. The API converts this feature list into a node-based workflow graph internally. STRICT field whitelist: any key not listed here (including `workflow_type`) is rejected with a 400.

func (SimpleWorkflowRequest) MarshalJSON

func (r SimpleWorkflowRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SimpleWorkflowRequestStatus

type SimpleWorkflowRequestStatus string

SimpleWorkflowRequestStatus: Omit this field to create a published workflow ready for sessions. Use `draft` only when you want to save without publishing.

SimpleWorkflowRequestStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SimpleWorkflowRequestStatusDraft     SimpleWorkflowRequestStatus = "draft"
	SimpleWorkflowRequestStatusPublished SimpleWorkflowRequestStatus = "published"
)

Known values of SimpleWorkflowRequestStatus.

type SimpleWorkflowUpdateRequest

type SimpleWorkflowUpdateRequest struct {
	// Display name for the workflow (max 50 characters).
	WorkflowLabel Opt[string] `json:"workflow_label"`

	// Set this workflow as the default for new sessions.
	IsDefault Opt[bool] `json:"is_default"`

	// Controls versioning. Omit to update the current version in place (drafts
	// auto-publish). `published` on an already-published version creates and
	// returns a NEW version. `draft` is only valid while the version is still a
	// draft.
	Status Opt[SimpleWorkflowUpdateRequestStatus] `json:"status"`

	// If provided, this replaces the full feature order and configuration.
	Features Opt[[]SimpleWorkflowFeature] `json:"features"`

	// Enable white-label customization for sessions created with this workflow.
	IsWhiteLabelEnabled Opt[bool] `json:"is_white_label_enabled"`

	// Allow the verification flow to run on desktop browsers.
	IsDesktopAllowed Opt[bool] `json:"is_desktop_allowed"`

	// Maximum retry attempts allowed after a declined verification. `0` blocks the
	// user after the first decline.
	MaxRetryAttempts Opt[int64] `json:"max_retry_attempts"`

	// Rolling window in days used to count retries. `null` enforces an all-time
	// limit.
	RetryWindowDays Opt[int64] `json:"retry_window_days"`

	// Maximum liveness submissions per session. This value is also copied into
	// generated liveness and age-estimation workflow nodes unless the feature-level
	// config overrides it.
	FaceLivenessMaxAttempts Opt[int64] `json:"face_liveness_max_attempts"`

	// Maximum face-match submissions per session. This value is also copied into
	// generated face-match workflow nodes unless the feature-level config overrides
	// it.
	FaceMatchMaxAttempts Opt[int64] `json:"face_match_max_attempts"`

	// Seconds before an unfinished session expires. Minimum 1 hour (3600), maximum
	// 4 weeks (2419200).
	SessionExpirationTime Opt[int64] `json:"session_expiration_time"`
}

SimpleWorkflowUpdateRequest: Update workflow metadata or replace the full linear feature list. STRICT field whitelist: any key not listed here is rejected with a 400.

func (SimpleWorkflowUpdateRequest) MarshalJSON

func (r SimpleWorkflowUpdateRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type SimpleWorkflowUpdateRequestStatus

type SimpleWorkflowUpdateRequestStatus string

SimpleWorkflowUpdateRequestStatus: Controls versioning. Omit to update the current version in place (drafts auto-publish). `published` on an already-published version creates and returns a NEW version. `draft` is only valid while the version is still a draft.

SimpleWorkflowUpdateRequestStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SimpleWorkflowUpdateRequestStatusDraft     SimpleWorkflowUpdateRequestStatus = "draft"
	SimpleWorkflowUpdateRequestStatusPublished SimpleWorkflowUpdateRequestStatus = "published"
)

Known values of SimpleWorkflowUpdateRequestStatus.

type SocialFootprintCategorySummary

type SocialFootprintCategorySummary struct {
	// Platforms in this category where registration is confirmed.
	Registered int64 `json:"registered"`

	// Share of the category's checked platforms with a registration, 0.0-1.0.
	Ratio float64 `json:"ratio"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SocialFootprintCategorySummary is a response object.

func (*SocialFootprintCategorySummary) UnmarshalJSON

func (r *SocialFootprintCategorySummary) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SocialFootprintCategorySummary leniently.

type SocialFootprintPlatform

type SocialFootprintPlatform struct {
	// Platform identifier.
	Platform string `json:"platform"`

	// Platform category, e.g. MESSAGING, SOCIAL_MEDIA, ECOMMERCE, PROFESSIONAL,
	// EMAIL_PROVIDER.
	Category string `json:"category"`

	// `global` for worldwide platforms, `local` for region-specific ones.
	Scope SocialFootprintPlatformScope `json:"scope"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SocialFootprintPlatform is a response object.

func (*SocialFootprintPlatform) UnmarshalJSON

func (r *SocialFootprintPlatform) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SocialFootprintPlatform leniently.

type SocialFootprintPlatformScope

type SocialFootprintPlatformScope string

SocialFootprintPlatformScope: `global` for worldwide platforms, `local` for region-specific ones.

SocialFootprintPlatformScope is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SocialFootprintPlatformScopeGlobal SocialFootprintPlatformScope = "global"
	SocialFootprintPlatformScopeLocal  SocialFootprintPlatformScope = "local"
)

Known values of SocialFootprintPlatformScope.

type SocialFootprintProfile

type SocialFootprintProfile struct {
	// Profile name, when the platform exposes one.
	Name string `json:"name"`

	// Profile photo URL, when the platform exposes one.
	Photo string `json:"photo"`

	// Profile about/bio text, when the platform exposes one.
	About string `json:"about"`

	// Profile visibility, when the platform exposes it.
	PrivacyStatus SocialFootprintProfilePrivacyStatus `json:"privacy_status"`

	// Whether the profile is a business account, when the platform exposes it.
	BusinessAccount bool `json:"business_account"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

SocialFootprintProfile is a response object.

func (*SocialFootprintProfile) UnmarshalJSON

func (r *SocialFootprintProfile) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes SocialFootprintProfile leniently.

type SocialFootprintProfilePrivacyStatus

type SocialFootprintProfilePrivacyStatus string

SocialFootprintProfilePrivacyStatus: Profile visibility, when the platform exposes it.

SocialFootprintProfilePrivacyStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	SocialFootprintProfilePrivacyStatusPublic  SocialFootprintProfilePrivacyStatus = "PUBLIC"
	SocialFootprintProfilePrivacyStatusPrivate SocialFootprintProfilePrivacyStatus = "PRIVATE"
)

Known values of SocialFootprintProfilePrivacyStatus.

type TokenVerificationError

type TokenVerificationError struct {
	Reason  TokenVerificationReason
	Message string
}

TokenVerificationError reports an Authentication access or ID token that failed verification. Reason is machine-readable.

func (*TokenVerificationError) Error

func (e *TokenVerificationError) Error() string

type TokenVerificationReason

type TokenVerificationReason string

TokenVerificationReason is the machine-readable reason of a *TokenVerificationError.

const (
	// TokenReasonMalformed: not a compact JWS with a JSON header and claims.
	TokenReasonMalformed TokenVerificationReason = "malformed"
	// TokenReasonUnsupportedAlgorithm: alg is not ES256.
	TokenReasonUnsupportedAlgorithm TokenVerificationReason = "unsupported_algorithm"
	// TokenReasonInvalidType: the typ header is not the expected one.
	TokenReasonInvalidType TokenVerificationReason = "invalid_type"
	// TokenReasonUnknownKey: no JSON Web Key matches the kid, even after a
	// refetch.
	TokenReasonUnknownKey TokenVerificationReason = "unknown_key"
	// TokenReasonInvalidSignature: the signature does not verify.
	TokenReasonInvalidSignature TokenVerificationReason = "invalid_signature"
	// TokenReasonInvalidIssuer: iss differs from the issuer.
	TokenReasonInvalidIssuer TokenVerificationReason = "invalid_issuer"
	// TokenReasonInvalidAudience: aud does not contain the expected audience.
	TokenReasonInvalidAudience TokenVerificationReason = "invalid_audience"
	// TokenReasonExpired: exp is in the past (beyond the leeway).
	TokenReasonExpired TokenVerificationReason = "expired"
	// TokenReasonNotYetValid: nbf or iat is in the future (beyond the leeway).
	TokenReasonNotYetValid TokenVerificationReason = "not_yet_valid"
	// TokenReasonInvalidNonce: the ID token nonce differs from the expected one.
	TokenReasonInvalidNonce TokenVerificationReason = "invalid_nonce"
	// TokenReasonMissingClaim: a required claim is missing or has the wrong type.
	TokenReasonMissingClaim TokenVerificationReason = "missing_claim"
)

Authentication token verification failure reasons.

type TransactionDetail

type TransactionDetail struct {
	// Didit-stable transaction identifier. Use as `{transaction_id}` for follow-up
	// calls.
	UUID string `json:"uuid"`

	// Environment of the application that owns the transaction. A `sandbox`
	// transaction is stored but never evaluated, screened, notified or billed, so
	// its empty `rule_runs` means "not evaluated".
	Environment TransactionDetailEnvironment `json:"environment"`

	// Application-scoped sequential transaction number shown in Console (e.g.
	// `4123`).
	TransactionNumber int64 `json:"transaction_number"`

	// The `transaction_id` you supplied at create time (max 128 chars). Unique per
	// application.
	TxnID string `json:"txn_id"`

	// When the transaction occurred (from `transaction_at`; defaults to submission
	// time).
	TxnDate time.Time `json:"txn_date"`

	// IANA time zone identifier provided at create time.
	ZoneID string `json:"zone_id"`

	// Top-level category as stored: `finance`, `kyc`, `travelRule`,
	// `userPlatformEvent`, `gamblingBet`, `gamblingLimitChange`,
	// `gamblingBonusChange`, `auditTrailEvent`. Note multi-word values are echoed
	// back in camelCase even when submitted in snake_case.
	TransactionType string `json:"transaction_type"`

	// Sub-type within the category (e.g. `deposit`, `withdrawal`, `transfer`).
	// Defaults to the category when not supplied.
	ActionType string `json:"action_type"`

	// Direction relative to the subject. Stored uppercase regardless of the casing
	// submitted (`in`/`out`/`inbound`/`outbound` are accepted on input).
	Direction TransactionDetailDirection `json:"direction"`

	// Current monitoring verdict. Transactions are created `APPROVED`; rules may
	// flip them to `IN_REVIEW`/`DECLINED` synchronously.
	Status TransactionDetailStatus `json:"status"`

	// How the record originated: `LIVE` for transactions submitted through the API
	// or SDK, `IMPORTED` for transactions loaded through the console import.
	Source TransactionDetailSource `json:"source"`

	// Transaction amount as a decimal string with trailing zeros stripped (e.g.
	// `"1500"`, `"0.5"`, `"0.123456789012345678"`). Up to 18 decimal places.
	Amount string `json:"amount"`

	// Currency code of `amount`. Any ISO 4217 alphabetic code is accepted (e.g.
	// `EUR`, `USD`, `NGN`), as is a crypto asset symbol (e.g. `BTC`). Prefer a
	// currently-circulating code. Not every accepted code has an exchange rate:
	// when none is available for the code (for example the ISO accounting unit
	// `XSU`, or a crypto symbol Didit does not price), automatic conversion fails
	// and `preferred_currency_amount` is returned null unless the request supplied
	// a pre-converted `amount_in_default_currency`.
	Currency string `json:"currency"`

	// `fiat` or `crypto`, as submitted in `currency_kind`.
	CurrencyType string `json:"currency_type"`

	// Pre-converted amount you supplied, as a decimal string with trailing zeros
	// stripped.
	AmountInDefaultCurrency string `json:"amount_in_default_currency"`
	DefaultCurrencyCode     string `json:"default_currency_code"`

	// `amount` converted to the application's preferred currency, when available.
	PreferredCurrencyAmount string `json:"preferred_currency_amount"`
	PreferredCurrencyCode   string `json:"preferred_currency_code"`

	// Free-text payment reference or memo from the submission.
	PaymentDetails string `json:"payment_details"`

	// External payment system reference (e.g. blockchain transaction hash) from
	// `payment_reference_id`.
	PaymentTxnID string `json:"payment_txn_id"`

	// Risk score accumulated by rules (typically 0-100). Higher = riskier.
	Score int64 `json:"score"`

	// Categorical risk severity set by rules/providers (`UNKNOWN`, `LOW`, `MEDIUM`,
	// `HIGH`, `CRITICAL`). `null` until something sets it.
	Severity TransactionDetailSeverity `json:"severity"`

	// Machine-readable reason for the current `status`.
	DecisionReasonCode string `json:"decision_reason_code"`

	// Human-readable label for `decision_reason_code`.
	DecisionReasonLabel string `json:"decision_reason_label"`

	// Convenience copy of the applicant's `vendor_data`.
	VendorData string `json:"vendor_data"`

	// Snapshot of the `subject` and `counterparty` payloads as submitted at create
	// time.
	Metadata map[string]any `json:"metadata"`

	// The `custom_properties` you supplied at create time. Each key is addressable
	// in rule conditions as `custom_values.<key>`.
	Props map[string]any `json:"props"`

	// Tags attached to the transaction (manually or by rules).
	Tags []TransactionDetailTags `json:"tags"`

	// Transaction parties (applicant, counterparty).
	Parties []TransactionDetailParties `json:"parties"`

	// Payment methods linked to the transaction.
	PaymentMethods []TransactionDetailPaymentMethods `json:"payment_methods"`

	// Files attached to the transaction from the console. `[]` when none.
	Documents []TransactionDetailDocuments `json:"documents"`

	// Activity log entries (creation, notes, manual reviews, status changes).
	Activities []TransactionDetailActivities `json:"activities"`

	// Alerts raised by rules and providers.
	Alerts []TransactionDetailAlerts `json:"alerts"`

	// Per-rule execution results - which rule fired, with what score impact.
	RuleRuns []TransactionDetailRuleRuns `json:"rule_runs"`

	// Raw provider payloads (AML screening, blockchain analytics, etc.).
	ProviderResults []TransactionDetailProviderResults `json:"provider_results"`

	// Travel Rule transfer or check. Populated when `travel_rule_details` was
	// submitted, and also when Travel Rule is enabled and the transaction was
	// created with `transaction_category: travelRule` (Didit initiates the exchange
	// itself, even without `travel_rule_details`). `null` when no transfer or check
	// exists. On an inbound transfer, the counterparty's `originator_data` and
	// `beneficiary_data` stay masked (`data_masked: true`) until wallet ownership
	// is confirmed.
	TravelRule TransactionTravelRule `json:"travel_rule"`

	// Graph snapshot of related transactions/parties used by the rules engine.
	// Either the `network_snapshot` submitted with the transaction or the graph
	// Didit builds from a successful AML wallet screening (which replaces a
	// submitted one). `null` when neither exists.
	NetworkSnapshot TransactionDetailNetworkSnapshot `json:"network_snapshot"`

	// Remediation session offered to the user when re-verification is required.
	// Superseded by `action_required`, which is the canonical block; kept for
	// backward compatibility.
	Remediation TransactionDetailRemediation `json:"remediation"`

	// Pending end-user action required to complete this transaction, or null when
	// there is none. The Didit SDKs auto-launch the action by default and refresh
	// the transaction when it finishes. Two variants, discriminated by `type`:
	// `verification_session` (a hosted verification session created by a rule
	// action) and `wallet_ownership` (a wallet-ownership widget session auto-minted
	// for a Travel Rule transfer that needs proof of wallet control, gated by the
	// `auto_wallet_verification` Travel Rule setting). When both could apply,
	// `wallet_ownership` takes precedence because it blocks the Travel Rule
	// exchange.
	ActionRequired TransactionDetailActionRequired `json:"action_required"`

	// Cost of this transaction: `total_price` and `items`, one per charge, each
	// with `usage_type`, `price`, `details` and `created_at`. A re-screen of the
	// same transaction is a new item.
	CostBreakdown map[string]any `json:"cost_breakdown"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionDetail: Full monitoring record for one transaction, as returned by `GET /v3/transactions/{transaction_id}/` and `POST /v3/transactions/`.

func (*TransactionDetail) UnmarshalJSON

func (r *TransactionDetail) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionDetail leniently.

type TransactionDetailActionRequired

type TransactionDetailActionRequired struct {
	Type TransactionDetailActionRequiredType `json:"type"`

	// Hosted verification URL to open for the end user.
	URL string `json:"url"`

	// Verification session id.
	SessionID string `json:"session_id"`

	// Session token, used by the mobile SDKs to launch the flow natively.
	SessionToken string `json:"session_token"`

	// Verification session status.
	Status string `json:"status"`

	// Wallet-ownership widget session id.
	WidgetSessionID string `json:"widget_session_id"`

	// When the widget session expires.
	ExpiresAt time.Time `json:"expires_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionDetailActionRequired: Pending end-user action required to complete this transaction, or null when there is none. The Didit SDKs auto-launch the action by default and refresh the transaction when it finishes. Two variants, discriminated by `type`: `verification_session` (a hosted verification session created by a rule action) and `wallet_ownership` (a wallet-ownership widget session auto-minted for a Travel Rule transfer that needs proof of wallet control, gated by the `auto_wallet_verification` Travel Rule setting). When both could apply, `wallet_ownership` takes precedence because it blocks the Travel Rule exchange.

func (*TransactionDetailActionRequired) UnmarshalJSON

func (r *TransactionDetailActionRequired) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionDetailActionRequired leniently.

type TransactionDetailActionRequiredType

type TransactionDetailActionRequiredType string

TransactionDetailActionRequiredType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailActionRequiredTypeVerificationSession TransactionDetailActionRequiredType = "verification_session"
	TransactionDetailActionRequiredTypeWalletOwnership     TransactionDetailActionRequiredType = "wallet_ownership"
)

Known values of TransactionDetailActionRequiredType.

type TransactionDetailActivities

type TransactionDetailActivities struct {
	UUID string `json:"uuid"`

	// E.g. `TRANSACTION_CREATED`, `TRANSACTION_NOTE_ADDED`,
	// `TRANSACTION_STATUS_CHANGED`.
	ActivityType string         `json:"activity_type"`
	Source       string         `json:"source"`
	Status       string         `json:"status"`
	Title        string         `json:"title"`
	Description  string         `json:"description"`
	Metadata     map[string]any `json:"metadata"`
	OccurredAt   time.Time      `json:"occurred_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionDetailActivities is a response object.

func (*TransactionDetailActivities) UnmarshalJSON

func (r *TransactionDetailActivities) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionDetailActivities leniently.

type TransactionDetailAlerts

type TransactionDetailAlerts struct {
	UUID        string                          `json:"uuid"`
	Title       string                          `json:"title"`
	Description string                          `json:"description"`
	Severity    TransactionDetailAlertsSeverity `json:"severity"`
	Status      TransactionDetailAlertsStatus   `json:"status"`
	Source      TransactionDetailAlertsSource   `json:"source"`
	Metadata    map[string]any                  `json:"metadata"`
	CreatedAt   time.Time                       `json:"created_at"`
	DueAt       time.Time                       `json:"due_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionDetailAlerts is a response object.

func (*TransactionDetailAlerts) UnmarshalJSON

func (r *TransactionDetailAlerts) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionDetailAlerts leniently.

type TransactionDetailAlertsSeverity

type TransactionDetailAlertsSeverity string

TransactionDetailAlertsSeverity is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailAlertsSeverityUnknown  TransactionDetailAlertsSeverity = "UNKNOWN"
	TransactionDetailAlertsSeverityLow      TransactionDetailAlertsSeverity = "LOW"
	TransactionDetailAlertsSeverityMedium   TransactionDetailAlertsSeverity = "MEDIUM"
	TransactionDetailAlertsSeverityHigh     TransactionDetailAlertsSeverity = "HIGH"
	TransactionDetailAlertsSeverityCritical TransactionDetailAlertsSeverity = "CRITICAL"
)

Known values of TransactionDetailAlertsSeverity.

type TransactionDetailAlertsSource

type TransactionDetailAlertsSource string

TransactionDetailAlertsSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailAlertsSourceRule     TransactionDetailAlertsSource = "RULE"
	TransactionDetailAlertsSourceProvider TransactionDetailAlertsSource = "PROVIDER"
	TransactionDetailAlertsSourceManual   TransactionDetailAlertsSource = "MANUAL"
)

Known values of TransactionDetailAlertsSource.

type TransactionDetailAlertsStatus

type TransactionDetailAlertsStatus string

TransactionDetailAlertsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailAlertsStatusOpen          TransactionDetailAlertsStatus = "OPEN"
	TransactionDetailAlertsStatusInvestigating TransactionDetailAlertsStatus = "INVESTIGATING"
	TransactionDetailAlertsStatusAwaitingUser  TransactionDetailAlertsStatus = "AWAITING_USER"
	TransactionDetailAlertsStatusPendingSar    TransactionDetailAlertsStatus = "PENDING_SAR"
	TransactionDetailAlertsStatusSarFiled      TransactionDetailAlertsStatus = "SAR_FILED"
	TransactionDetailAlertsStatusResolved      TransactionDetailAlertsStatus = "RESOLVED"
	TransactionDetailAlertsStatusDismissed     TransactionDetailAlertsStatus = "DISMISSED"
)

Known values of TransactionDetailAlertsStatus.

type TransactionDetailDirection

type TransactionDetailDirection string

TransactionDetailDirection: Direction relative to the subject. Stored uppercase regardless of the casing submitted (`in`/`out`/`inbound`/`outbound` are accepted on input).

TransactionDetailDirection is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailDirectionInbound  TransactionDetailDirection = "INBOUND"
	TransactionDetailDirectionOutbound TransactionDetailDirection = "OUTBOUND"
)

Known values of TransactionDetailDirection.

type TransactionDetailDocuments

type TransactionDetailDocuments struct {
	UUID       string                            `json:"uuid"`
	Label      string                            `json:"label"`
	Note       string                            `json:"note"`
	UploadedBy string                            `json:"uploaded_by"`
	CreatedAt  time.Time                         `json:"created_at"`
	Files      []TransactionDetailDocumentsFiles `json:"files"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionDetailDocuments is a response object.

func (*TransactionDetailDocuments) UnmarshalJSON

func (r *TransactionDetailDocuments) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionDetailDocuments leniently.

type TransactionDetailDocumentsFiles

type TransactionDetailDocumentsFiles struct {
	UUID string `json:"uuid"`

	// Short-lived signed download URL; fetch it when needed rather than storing it.
	FileURL          string `json:"file_url"`
	OriginalFilename string `json:"original_filename"`
	FileSize         int64  `json:"file_size"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionDetailDocumentsFiles is a response object.

func (*TransactionDetailDocumentsFiles) UnmarshalJSON

func (r *TransactionDetailDocumentsFiles) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionDetailDocumentsFiles leniently.

type TransactionDetailEnvironment

type TransactionDetailEnvironment string

TransactionDetailEnvironment: Environment of the application that owns the transaction. A `sandbox` transaction is stored but never evaluated, screened, notified or billed, so its empty `rule_runs` means "not evaluated".

TransactionDetailEnvironment is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailEnvironmentLive    TransactionDetailEnvironment = "live"
	TransactionDetailEnvironmentSandbox TransactionDetailEnvironment = "sandbox"
)

Known values of TransactionDetailEnvironment.

type TransactionDetailNetworkSnapshot

type TransactionDetailNetworkSnapshot struct {
	UUID    string           `json:"uuid"`
	Nodes   []map[string]any `json:"nodes"`
	Edges   []map[string]any `json:"edges"`
	Metrics map[string]any   `json:"metrics"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionDetailNetworkSnapshot: Graph snapshot of related transactions/parties used by the rules engine. Either the `network_snapshot` submitted with the transaction or the graph Didit builds from a successful AML wallet screening (which replaces a submitted one). `null` when neither exists.

func (*TransactionDetailNetworkSnapshot) UnmarshalJSON

func (r *TransactionDetailNetworkSnapshot) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionDetailNetworkSnapshot leniently.

type TransactionDetailParties

type TransactionDetailParties struct {
	UUID string `json:"uuid"`

	// Party role. The create endpoint assigns `APPLICANT` (the subject) and
	// `COUNTERPARTY`.
	Role       TransactionDetailPartiesRole       `json:"role"`
	EntityType TransactionDetailPartiesEntityType `json:"entity_type"`

	// `USER`/`BUSINESS` parties link back to a Didit-owned entity via
	// `vendor_data`. `EXTERNAL` parties have no Didit entity behind them.
	Kind TransactionDetailPartiesKind `json:"kind"`

	// Your internal user/business identifier.
	VendorData string `json:"vendor_data"`
	FullName   string `json:"full_name"`
	FirstName  string `json:"first_name"`
	LastName   string `json:"last_name"`

	// Country code from the submitted `address.country` (typically ISO 3166-1
	// alpha-3).
	CountryCode string `json:"country_code"`

	// Date of birth from the submitted `date_of_birth`.
	DOB string `json:"dob"`

	// Address object as submitted. `{}` when omitted.
	Address map[string]any `json:"address"`

	// Institution details as submitted. `{}` when omitted.
	InstitutionInfo map[string]any `json:"institution_info"`

	// Normalized device context, including server-side IP enrichment under
	// network_context (geolocation, VPN/data-center flags) when an IP was provided.
	Device TransactionDetailPartiesDevice `json:"device"`

	// Frozen copy of the party data for `EXTERNAL` parties. `null` while the party
	// is linked to a Didit user or business.
	ExternalPartySnapshot map[string]any `json:"external_party_snapshot"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionDetailParties is a response object.

func (*TransactionDetailParties) UnmarshalJSON

func (r *TransactionDetailParties) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionDetailParties leniently.

type TransactionDetailPartiesDevice

type TransactionDetailPartiesDevice struct {
	// Unique device fingerprint.
	Fingerprint string `json:"fingerprint"`

	// Stable cross-session device identifier (v2 fingerprint schema).
	PersistentDeviceID string `json:"persistent_device_id"`

	// Browser or app user agent string.
	UserAgent string `json:"user_agent"`

	// Browser family (e.g. Chrome, Firefox, Safari).
	BrowserFamily string `json:"browser_family"`

	// Browser version string.
	BrowserVersion string `json:"browser_version"`

	// Platform identifier (web, ios, android, macos, windows, linux).
	Platform string `json:"platform"`

	// Operating system family (e.g. iOS, Android, Windows).
	OsFamily string `json:"os_family"`

	// Operating system version string.
	OsVersion string `json:"os_version"`

	// Accept-Language header value.
	AcceptLanguage string `json:"accept_language"`

	// Session identifier (stored in metadata).
	SessionID string `json:"session_id"`

	// Session age in milliseconds.
	SessionAgeMs float64 `json:"session_age_ms"`

	// Network context with IP address and geo-location.
	NetworkContext TransactionDetailPartiesDeviceNetworkContext `json:"network_context"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionDetailPartiesDevice: Normalized device context, including server-side IP enrichment under network_context (geolocation, VPN/data-center flags) when an IP was provided.

func (*TransactionDetailPartiesDevice) UnmarshalJSON

func (r *TransactionDetailPartiesDevice) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionDetailPartiesDevice leniently.

type TransactionDetailPartiesDeviceNetworkContext

type TransactionDetailPartiesDeviceNetworkContext struct {
	// Client IP address.
	IPAddress string `json:"ip_address"`

	// Geo-resolved country of the IP (ISO 3166-1 alpha-3).
	IPCountryCode string `json:"ip_country_code"`

	// Geographic latitude of the IP.
	Latitude float64 `json:"latitude"`

	// Geographic longitude of the IP.
	Longitude float64 `json:"longitude"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionDetailPartiesDeviceNetworkContext: Network context with IP address and geo-location.

func (*TransactionDetailPartiesDeviceNetworkContext) UnmarshalJSON

func (r *TransactionDetailPartiesDeviceNetworkContext) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionDetailPartiesDeviceNetworkContext leniently.

type TransactionDetailPartiesEntityType

type TransactionDetailPartiesEntityType string

TransactionDetailPartiesEntityType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailPartiesEntityTypeIndividual     TransactionDetailPartiesEntityType = "individual"
	TransactionDetailPartiesEntityTypeCompany        TransactionDetailPartiesEntityType = "company"
	TransactionDetailPartiesEntityTypeExternal       TransactionDetailPartiesEntityType = "external"
	TransactionDetailPartiesEntityTypeUnhostedWallet TransactionDetailPartiesEntityType = "unhostedWallet"
)

Known values of TransactionDetailPartiesEntityType.

type TransactionDetailPartiesKind

type TransactionDetailPartiesKind string

TransactionDetailPartiesKind: `USER`/`BUSINESS` parties link back to a Didit-owned entity via `vendor_data`. `EXTERNAL` parties have no Didit entity behind them.

TransactionDetailPartiesKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailPartiesKindUser     TransactionDetailPartiesKind = "USER"
	TransactionDetailPartiesKindBusiness TransactionDetailPartiesKind = "BUSINESS"
	TransactionDetailPartiesKindExternal TransactionDetailPartiesKind = "EXTERNAL"
)

Known values of TransactionDetailPartiesKind.

type TransactionDetailPartiesRole

type TransactionDetailPartiesRole string

TransactionDetailPartiesRole: Party role. The create endpoint assigns `APPLICANT` (the subject) and `COUNTERPARTY`.

TransactionDetailPartiesRole is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailPartiesRoleApplicant    TransactionDetailPartiesRole = "APPLICANT"
	TransactionDetailPartiesRoleRemitter     TransactionDetailPartiesRole = "REMITTER"
	TransactionDetailPartiesRoleBeneficiary  TransactionDetailPartiesRole = "BENEFICIARY"
	TransactionDetailPartiesRoleCounterparty TransactionDetailPartiesRole = "COUNTERPARTY"
)

Known values of TransactionDetailPartiesRole.

type TransactionDetailPaymentMethods

type TransactionDetailPaymentMethods struct {
	UUID              string                                           `json:"uuid"`
	PaymentMethodType TransactionDetailPaymentMethodsPaymentMethodType `json:"payment_method_type"`
	Label             string                                           `json:"label"`

	// SHA-256 over `type:account_id:issuing_country` - stable identifier to
	// correlate reuse of the same instrument.
	Fingerprint string `json:"fingerprint"`

	// Account identifier (IBAN, wallet address, card token, …).
	AccountID      string                                   `json:"account_id"`
	IssuingCountry string                                   `json:"issuing_country"`
	OwnerKind      TransactionDetailPaymentMethodsOwnerKind `json:"owner_kind"`

	// Your identifier for the owning user/business.
	VendorData      string         `json:"vendor_data"`
	OwnerName       string         `json:"owner_name"`
	InstitutionInfo map[string]any `json:"institution_info"`

	// Raw `payment_method` object as submitted.
	Details               map[string]any `json:"details"`
	ExternalOwnerSnapshot map[string]any `json:"external_owner_snapshot"`

	// How this method was used in the transaction. The create endpoint assigns
	// `SOURCE`/`DESTINATION` from the direction (outbound: subject = SOURCE;
	// inbound: subject = DESTINATION).
	Role TransactionDetailPaymentMethodsRole `json:"role"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionDetailPaymentMethods is a response object.

func (*TransactionDetailPaymentMethods) UnmarshalJSON

func (r *TransactionDetailPaymentMethods) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionDetailPaymentMethods leniently.

type TransactionDetailPaymentMethodsOwnerKind

type TransactionDetailPaymentMethodsOwnerKind string

TransactionDetailPaymentMethodsOwnerKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailPaymentMethodsOwnerKindUser     TransactionDetailPaymentMethodsOwnerKind = "USER"
	TransactionDetailPaymentMethodsOwnerKindBusiness TransactionDetailPaymentMethodsOwnerKind = "BUSINESS"
	TransactionDetailPaymentMethodsOwnerKindExternal TransactionDetailPaymentMethodsOwnerKind = "EXTERNAL"
)

Known values of TransactionDetailPaymentMethodsOwnerKind.

type TransactionDetailPaymentMethodsPaymentMethodType

type TransactionDetailPaymentMethodsPaymentMethodType string

TransactionDetailPaymentMethodsPaymentMethodType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailPaymentMethodsPaymentMethodTypeBankCard       TransactionDetailPaymentMethodsPaymentMethodType = "bank_card"
	TransactionDetailPaymentMethodsPaymentMethodTypeBankAccount    TransactionDetailPaymentMethodsPaymentMethodType = "bank_account"
	TransactionDetailPaymentMethodsPaymentMethodTypeEWallet        TransactionDetailPaymentMethodsPaymentMethodType = "e_wallet"
	TransactionDetailPaymentMethodsPaymentMethodTypeCryptoWallet   TransactionDetailPaymentMethodsPaymentMethodType = "crypto_wallet"
	TransactionDetailPaymentMethodsPaymentMethodTypeUnhostedWallet TransactionDetailPaymentMethodsPaymentMethodType = "unhosted_wallet"
	TransactionDetailPaymentMethodsPaymentMethodTypeOther          TransactionDetailPaymentMethodsPaymentMethodType = "other"
)

Known values of TransactionDetailPaymentMethodsPaymentMethodType.

type TransactionDetailPaymentMethodsRole

type TransactionDetailPaymentMethodsRole string

TransactionDetailPaymentMethodsRole: How this method was used in the transaction. The create endpoint assigns `SOURCE`/`DESTINATION` from the direction (outbound: subject = SOURCE; inbound: subject = DESTINATION).

TransactionDetailPaymentMethodsRole is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailPaymentMethodsRoleSource      TransactionDetailPaymentMethodsRole = "SOURCE"
	TransactionDetailPaymentMethodsRoleDestination TransactionDetailPaymentMethodsRole = "DESTINATION"
	TransactionDetailPaymentMethodsRoleFunding     TransactionDetailPaymentMethodsRole = "FUNDING"
	TransactionDetailPaymentMethodsRoleBeneficiary TransactionDetailPaymentMethodsRole = "BENEFICIARY"
)

Known values of TransactionDetailPaymentMethodsRole.

type TransactionDetailProviderResults

type TransactionDetailProviderResults struct {
	UUID       string                                     `json:"uuid"`
	Provider   string                                     `json:"provider"`
	ResultType TransactionDetailProviderResultsResultType `json:"result_type"`
	Status     string                                     `json:"status"`
	Severity   string                                     `json:"severity"`
	Score      int64                                      `json:"score"`
	Summary    string                                     `json:"summary"`

	// Raw provider response payload.
	Payload   map[string]any `json:"payload"`
	CreatedAt time.Time      `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionDetailProviderResults is a response object.

func (*TransactionDetailProviderResults) UnmarshalJSON

func (r *TransactionDetailProviderResults) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionDetailProviderResults leniently.

type TransactionDetailProviderResultsResultType

type TransactionDetailProviderResultsResultType string

TransactionDetailProviderResultsResultType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailProviderResultsResultTypeFiatMonitoring       TransactionDetailProviderResultsResultType = "FIAT_MONITORING"
	TransactionDetailProviderResultsResultTypeWalletScreening      TransactionDetailProviderResultsResultType = "WALLET_SCREENING"
	TransactionDetailProviderResultsResultTypeTransactionScreening TransactionDetailProviderResultsResultType = "TRANSACTION_SCREENING"
	TransactionDetailProviderResultsResultTypeTravelRule           TransactionDetailProviderResultsResultType = "TRAVEL_RULE"
	TransactionDetailProviderResultsResultTypeNetworkGraph         TransactionDetailProviderResultsResultType = "NETWORK_GRAPH"
	TransactionDetailProviderResultsResultTypeCustom               TransactionDetailProviderResultsResultType = "CUSTOM"
)

Known values of TransactionDetailProviderResultsResultType.

type TransactionDetailRemediation

type TransactionDetailRemediation struct {
	SessionID    string `json:"session_id"`
	SessionToken string `json:"session_token"`
	URL          string `json:"url"`
	Status       string `json:"status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionDetailRemediation: Remediation session offered to the user when re-verification is required. Superseded by `action_required`, which is the canonical block; kept for backward compatibility.

func (*TransactionDetailRemediation) UnmarshalJSON

func (r *TransactionDetailRemediation) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionDetailRemediation leniently.

type TransactionDetailRuleRuns

type TransactionDetailRuleRuns struct {
	UUID string `json:"uuid"`

	// UUID of the rule that ran.
	Rule            string `json:"rule"`
	RuleTitle       string `json:"rule_title"`
	RuleDescription string `json:"rule_description"`
	RuleCategory    string `json:"rule_category"`

	// Whether the rule's conditions matched this transaction. A run is recorded
	// only for matched rules, so live evaluations always carry `true`.
	Matched bool `json:"matched"`

	// True when the rule ran in TEST mode (no effect on status/score).
	IsTest   bool                          `json:"is_test"`
	Mode     TransactionDetailRuleRunsMode `json:"mode"`
	Severity string                        `json:"severity"`

	// Score added by this rule's `add_score` actions.
	ScoreDelta int64 `json:"score_delta"`

	// Status set by a `change_status` action, if any.
	StatusTarget string `json:"status_target"`

	// Summary of the actions the rule executed, joined with `; ` (e.g. `score +30;
	// change_status:IN_REVIEW; add_tag:high_risk_country`). Parts: `score +N`,
	// `change_status:<STATUS>`, `add_tag:<name>`, `add_note`, `add_to_list`,
	// `open_case`. `null` when the rule executed no action.
	ActionSummary string `json:"action_summary"`

	// Evaluation detail: `scope_match`, `conditions[]` and `aggregations[]`. Each
	// condition entry carries `field`, `operator`, `expected_value`, the
	// `current_value` read from the transaction, `matched`, `group_index` and
	// `group_logic`. Each aggregation entry (velocity / count / sum) carries
	// `metric`, `field`, `operator`, `expected_value`, the `computed_value` the
	// aggregate evaluated to, `window`, `filters`, `matched` and
	// `sample_references`; deferred async aggregations have `computed_value: null`
	// and `deferred: true`. A nested condition group is one `conditions[]` entry
	// with `operator` `any_of` or `all_of`, `field` null, and its members' results
	// under its own `conditions`.
	Metadata  map[string]any `json:"metadata"`
	CreatedAt time.Time      `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionDetailRuleRuns is a response object.

func (*TransactionDetailRuleRuns) UnmarshalJSON

func (r *TransactionDetailRuleRuns) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionDetailRuleRuns leniently.

type TransactionDetailRuleRunsMode

type TransactionDetailRuleRunsMode string

TransactionDetailRuleRunsMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailRuleRunsModeActive   TransactionDetailRuleRunsMode = "ACTIVE"
	TransactionDetailRuleRunsModeDisabled TransactionDetailRuleRunsMode = "DISABLED"
	TransactionDetailRuleRunsModeTest     TransactionDetailRuleRunsMode = "TEST"
)

Known values of TransactionDetailRuleRunsMode.

type TransactionDetailSeverity

type TransactionDetailSeverity string

TransactionDetailSeverity: Categorical risk severity set by rules/providers (`UNKNOWN`, `LOW`, `MEDIUM`, `HIGH`, `CRITICAL`). `null` until something sets it.

TransactionDetailSeverity is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailSeverityUnknown  TransactionDetailSeverity = "UNKNOWN"
	TransactionDetailSeverityLow      TransactionDetailSeverity = "LOW"
	TransactionDetailSeverityMedium   TransactionDetailSeverity = "MEDIUM"
	TransactionDetailSeverityHigh     TransactionDetailSeverity = "HIGH"
	TransactionDetailSeverityCritical TransactionDetailSeverity = "CRITICAL"
)

Known values of TransactionDetailSeverity.

type TransactionDetailSource

type TransactionDetailSource string

TransactionDetailSource: How the record originated: `LIVE` for transactions submitted through the API or SDK, `IMPORTED` for transactions loaded through the console import.

TransactionDetailSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailSourceLive     TransactionDetailSource = "LIVE"
	TransactionDetailSourceImported TransactionDetailSource = "IMPORTED"
)

Known values of TransactionDetailSource.

type TransactionDetailStatus

type TransactionDetailStatus string

TransactionDetailStatus: Current monitoring verdict. Transactions are created `APPROVED`; rules may flip them to `IN_REVIEW`/`DECLINED` synchronously.

TransactionDetailStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailStatusApproved     TransactionDetailStatus = "APPROVED"
	TransactionDetailStatusInReview     TransactionDetailStatus = "IN_REVIEW"
	TransactionDetailStatusDeclined     TransactionDetailStatus = "DECLINED"
	TransactionDetailStatusAwaitingUser TransactionDetailStatus = "AWAITING_USER"
)

Known values of TransactionDetailStatus.

type TransactionDetailTags

type TransactionDetailTags struct {
	UUID        string `json:"uuid"`
	Name        string `json:"name"`
	Color       string `json:"color"`
	Description string `json:"description"`

	// Whether the tag is a Didit preset or a custom tag.
	Source TransactionDetailTagsSource `json:"source"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionDetailTags is a response object.

func (*TransactionDetailTags) UnmarshalJSON

func (r *TransactionDetailTags) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionDetailTags leniently.

type TransactionDetailTagsSource

type TransactionDetailTagsSource string

TransactionDetailTagsSource: Whether the tag is a Didit preset or a custom tag.

TransactionDetailTagsSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionDetailTagsSourceDidit  TransactionDetailTagsSource = "didit"
	TransactionDetailTagsSourceCustom TransactionDetailTagsSource = "custom"
)

Known values of TransactionDetailTagsSource.

type TransactionNote

type TransactionNote struct {
	// Note identifier.
	UUID string `json:"uuid"`

	// Plain-text note body.
	Note string `json:"note"`

	// Email of the Console user who wrote the note or changed the status. `null`
	// for notes created with an API key and for notes Didit adds automatically.
	ActorEmail string `json:"actor_email"`

	// Display name of the Console user (their email when they have no name). `Rule
	// Engine` on notes Didit adds automatically. `null` for notes created with an
	// API key.
	ActorName string `json:"actor_name"`

	// Tells the note types apart. Notes written through the API or the Console
	// carry `mentioned_emails`. A status change made in the Console carries `type:
	// status_change` with `previous_status`, `new_status`, `reason_code` and
	// `reason_label`. Notes Didit adds carry `source`: `rule_action` (with
	// `rule_uuid`) for a rule's `add_note` action, or `remediation_session` for a
	// problem creating the user-action verification session.
	Metadata TransactionNoteMetadata `json:"metadata"`

	// When the note was stored.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionNote: One note on a monitored transaction's review timeline.

func (*TransactionNote) UnmarshalJSON

func (r *TransactionNote) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionNote leniently.

type TransactionNoteMetadata

type TransactionNoteMetadata struct {
	// Mentioned organization members, lower-cased and de-duplicated. Empty when
	// nobody was mentioned.
	MentionedEmails []string `json:"mentioned_emails"`

	// Present on notes recording a status change made in the Console.
	Type TransactionNoteMetadataType `json:"type"`

	// Status before the change.
	PreviousStatus TransactionNoteMetadataPreviousStatus `json:"previous_status"`

	// Status after the change.
	NewStatus TransactionNoteMetadataNewStatus `json:"new_status"`

	// Reason code given with the change.
	ReasonCode string `json:"reason_code"`

	// Reason label given with the change.
	ReasonLabel string `json:"reason_label"`

	// Present on notes Didit adds automatically.
	Source TransactionNoteMetadataSource `json:"source"`

	// Rule whose `add_note` action wrote the note (with `source: rule_action`).
	RuleUUID string `json:"rule_uuid"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionNoteMetadata: Tells the note types apart. Notes written through the API or the Console carry `mentioned_emails`. A status change made in the Console carries `type: status_change` with `previous_status`, `new_status`, `reason_code` and `reason_label`. Notes Didit adds carry `source`: `rule_action` (with `rule_uuid`) for a rule's `add_note` action, or `remediation_session` for a problem creating the user-action verification session.

func (*TransactionNoteMetadata) UnmarshalJSON

func (r *TransactionNoteMetadata) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionNoteMetadata leniently.

type TransactionNoteMetadataNewStatus

type TransactionNoteMetadataNewStatus string

TransactionNoteMetadataNewStatus: Status after the change.

TransactionNoteMetadataNewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionNoteMetadataNewStatusApproved     TransactionNoteMetadataNewStatus = "APPROVED"
	TransactionNoteMetadataNewStatusInReview     TransactionNoteMetadataNewStatus = "IN_REVIEW"
	TransactionNoteMetadataNewStatusDeclined     TransactionNoteMetadataNewStatus = "DECLINED"
	TransactionNoteMetadataNewStatusAwaitingUser TransactionNoteMetadataNewStatus = "AWAITING_USER"
)

Known values of TransactionNoteMetadataNewStatus.

type TransactionNoteMetadataPreviousStatus

type TransactionNoteMetadataPreviousStatus string

TransactionNoteMetadataPreviousStatus: Status before the change.

TransactionNoteMetadataPreviousStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionNoteMetadataPreviousStatusApproved     TransactionNoteMetadataPreviousStatus = "APPROVED"
	TransactionNoteMetadataPreviousStatusInReview     TransactionNoteMetadataPreviousStatus = "IN_REVIEW"
	TransactionNoteMetadataPreviousStatusDeclined     TransactionNoteMetadataPreviousStatus = "DECLINED"
	TransactionNoteMetadataPreviousStatusAwaitingUser TransactionNoteMetadataPreviousStatus = "AWAITING_USER"
)

Known values of TransactionNoteMetadataPreviousStatus.

type TransactionNoteMetadataSource

type TransactionNoteMetadataSource string

TransactionNoteMetadataSource: Present on notes Didit adds automatically.

TransactionNoteMetadataSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionNoteMetadataSourceRuleAction         TransactionNoteMetadataSource = "rule_action"
	TransactionNoteMetadataSourceRemediationSession TransactionNoteMetadataSource = "remediation_session"
)

Known values of TransactionNoteMetadataSource.

type TransactionNoteMetadataType

type TransactionNoteMetadataType string

TransactionNoteMetadataType: Present on notes recording a status change made in the Console.

TransactionNoteMetadataType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionNoteMetadataTypeStatusChange TransactionNoteMetadataType = "status_change"
)

Known values of TransactionNoteMetadataType.

type TransactionRuleAction

type TransactionRuleAction struct {
	Type TransactionRuleActionType `json:"type"`

	// Points added to the transaction's risk score. May be negative.
	Value any `json:"value"`

	// REQUIRED when value is AWAITING_USER: the verification workflow the subject
	// is asked to complete. Alias key: remediation_workflow_id. Didit creates a
	// hosted remediation session for the subject when the rule fires.
	WorkflowID string `json:"workflow_id"`

	// Existing application tag to attach.
	TagUUID string `json:"tag_uuid"`

	// Tag name to attach; created on first use (stored uppercased). Provide
	// tag_uuid or tag_name.
	TagName string `json:"tag_name"`

	// Hex color used when tag_name creates a new tag, e.g. #007AFE.
	TagColor string `json:"tag_color"`

	// Note text attached to the transaction (author: Rule Engine). Alias key:
	// value.
	Note string `json:"note"`

	// List to add the subject's vendor_data to.
	ListID string `json:"list_id"`

	// Case blueprint UUID; defaults to the application's default blueprint.
	Blueprint string `json:"blueprint"`

	// Whether repeat matches join one case per applicant or one per rule+applicant.
	Grouping TransactionRuleActionGrouping `json:"grouping"`

	// Attach the matched transaction to the case.
	AttachMatchedTransaction bool `json:"attach_matched_transaction"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionRuleAction: One rule action. A rule can carry several; all are applied together when it matches. Rules in TEST mode record what they would have done without applying any action.

func (*TransactionRuleAction) UnmarshalJSON

func (r *TransactionRuleAction) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionRuleAction leniently.

type TransactionRuleActionGrouping

type TransactionRuleActionGrouping string

TransactionRuleActionGrouping: Whether repeat matches join one case per applicant or one per rule+applicant.

TransactionRuleActionGrouping is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleActionGroupingByApplicant        TransactionRuleActionGrouping = "by_applicant"
	TransactionRuleActionGroupingByRuleAndApplicant TransactionRuleActionGrouping = "by_rule_and_applicant"
)

Known values of TransactionRuleActionGrouping.

type TransactionRuleActionParam

type TransactionRuleActionParam struct {
	// Required.
	Type TransactionRuleActionType `json:"type"`

	// Points added to the transaction's risk score. May be negative.
	Value Opt[any] `json:"value"`

	// REQUIRED when value is AWAITING_USER: the verification workflow the subject
	// is asked to complete. Alias key: remediation_workflow_id. Didit creates a
	// hosted remediation session for the subject when the rule fires.
	WorkflowID Opt[string] `json:"workflow_id"`

	// Existing application tag to attach.
	TagUUID Opt[string] `json:"tag_uuid"`

	// Tag name to attach; created on first use (stored uppercased). Provide
	// tag_uuid or tag_name.
	TagName Opt[string] `json:"tag_name"`

	// Hex color used when tag_name creates a new tag, e.g. #007AFE.
	TagColor Opt[string] `json:"tag_color"`

	// Note text attached to the transaction (author: Rule Engine). Alias key:
	// value.
	Note Opt[string] `json:"note"`

	// List to add the subject's vendor_data to.
	ListID Opt[string] `json:"list_id"`

	// Case blueprint UUID; defaults to the application's default blueprint.
	Blueprint Opt[string] `json:"blueprint"`

	// Whether repeat matches join one case per applicant or one per rule+applicant.
	Grouping Opt[TransactionRuleActionGrouping] `json:"grouping"`

	// Attach the matched transaction to the case.
	AttachMatchedTransaction Opt[bool] `json:"attach_matched_transaction"`
}

TransactionRuleActionParam: One rule action. A rule can carry several; all are applied together when it matches. Rules in TEST mode record what they would have done without applying any action.

func (TransactionRuleActionParam) MarshalJSON

func (r TransactionRuleActionParam) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionRuleActionType

type TransactionRuleActionType string

TransactionRuleActionType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleActionTypeAddScore     TransactionRuleActionType = "add_score"
	TransactionRuleActionTypeChangeStatus TransactionRuleActionType = "change_status"
	TransactionRuleActionTypeAddTags      TransactionRuleActionType = "add_tags"
	TransactionRuleActionTypeAddNote      TransactionRuleActionType = "add_note"
	TransactionRuleActionTypeAddToList    TransactionRuleActionType = "add_to_list"
	TransactionRuleActionTypeOpenCase     TransactionRuleActionType = "open_case"
)

Known values of TransactionRuleActionType.

type TransactionRuleAggregation

type TransactionRuleAggregation struct {
	// How the matching historical transactions are aggregated. unique_count is
	// accepted as an alias of distinct_count.
	Metric TransactionRuleAggregationMetric `json:"metric"`

	// Field aggregated by sum/max/min/avg/distinct_count. Ignored for count.
	Field string `json:"field"`

	// Comparison applied to the computed metric.
	Operator TransactionRuleAggregationOperator `json:"operator"`

	// Threshold the computed metric is compared against.
	Value float64 `json:"value"`

	// Look-back window ending at the transaction's txn_date: <N>m (MINUTES, not
	// months), <N>h (hours) or <N>d (days), e.g. 30m, 24h, 7d, 30d.
	Window string `json:"window"`

	// Narrows which historical transactions are aggregated. Keys are field paths
	// from the condition field catalog; a value of "__current__" resolves to the
	// same field's value on the transaction being evaluated (e.g.
	// {"subject_vendor_data": "__current__"} scopes the window to the same
	// subject), and a list value means membership. Filters compare by equality or
	// membership ONLY - there is no lt/gte filter, so a range such as "historical
	// transactions under 10,000" cannot be expressed here. Put the range on the
	// metric instead (metric max with operator lt keeps every transaction in the
	// window below the threshold).
	Filters map[string]any `json:"filters"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionRuleAggregation: Velocity check over the application's historical transactions inside the window. Every aggregation entry must match for the rule to match, regardless of evaluation_mode. An aggregation constrains only the window; the transaction being evaluated is constrained by scope and conditions, so repeat direction, currency or transaction_type on both halves when the rule promises them.

func (*TransactionRuleAggregation) UnmarshalJSON

func (r *TransactionRuleAggregation) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionRuleAggregation leniently.

type TransactionRuleAggregationMetric

type TransactionRuleAggregationMetric string

TransactionRuleAggregationMetric: How the matching historical transactions are aggregated. unique_count is accepted as an alias of distinct_count.

TransactionRuleAggregationMetric is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleAggregationMetricCount         TransactionRuleAggregationMetric = "count"
	TransactionRuleAggregationMetricSum           TransactionRuleAggregationMetric = "sum"
	TransactionRuleAggregationMetricMax           TransactionRuleAggregationMetric = "max"
	TransactionRuleAggregationMetricMin           TransactionRuleAggregationMetric = "min"
	TransactionRuleAggregationMetricAvg           TransactionRuleAggregationMetric = "avg"
	TransactionRuleAggregationMetricDistinctCount TransactionRuleAggregationMetric = "distinct_count"
)

Known values of TransactionRuleAggregationMetric.

type TransactionRuleAggregationOperator

type TransactionRuleAggregationOperator string

TransactionRuleAggregationOperator: Comparison applied to the computed metric.

TransactionRuleAggregationOperator is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleAggregationOperatorEq  TransactionRuleAggregationOperator = "eq"
	TransactionRuleAggregationOperatorNe  TransactionRuleAggregationOperator = "ne"
	TransactionRuleAggregationOperatorGt  TransactionRuleAggregationOperator = "gt"
	TransactionRuleAggregationOperatorGte TransactionRuleAggregationOperator = "gte"
	TransactionRuleAggregationOperatorLt  TransactionRuleAggregationOperator = "lt"
	TransactionRuleAggregationOperatorLte TransactionRuleAggregationOperator = "lte"
)

Known values of TransactionRuleAggregationOperator.

type TransactionRuleAggregationParam

type TransactionRuleAggregationParam struct {
	// How the matching historical transactions are aggregated. unique_count is
	// accepted as an alias of distinct_count.
	Metric Opt[TransactionRuleAggregationMetric] `json:"metric"`

	// Field aggregated by sum/max/min/avg/distinct_count. Ignored for count.
	Field Opt[string] `json:"field"`

	// Comparison applied to the computed metric.
	Operator Opt[TransactionRuleAggregationOperator] `json:"operator"`

	// Threshold the computed metric is compared against. Required.
	Value float64 `json:"value"`

	// Look-back window ending at the transaction's txn_date: <N>m (MINUTES, not
	// months), <N>h (hours) or <N>d (days), e.g. 30m, 24h, 7d, 30d.
	Window Opt[string] `json:"window"`

	// Narrows which historical transactions are aggregated. Keys are field paths
	// from the condition field catalog; a value of "__current__" resolves to the
	// same field's value on the transaction being evaluated (e.g.
	// {"subject_vendor_data": "__current__"} scopes the window to the same
	// subject), and a list value means membership. Filters compare by equality or
	// membership ONLY - there is no lt/gte filter, so a range such as "historical
	// transactions under 10,000" cannot be expressed here. Put the range on the
	// metric instead (metric max with operator lt keeps every transaction in the
	// window below the threshold).
	Filters Opt[map[string]any] `json:"filters"`
}

TransactionRuleAggregationParam: Velocity check over the application's historical transactions inside the window. Every aggregation entry must match for the rule to match, regardless of evaluation_mode. An aggregation constrains only the window; the transaction being evaluated is constrained by scope and conditions, so repeat direction, currency or transaction_type on both halves when the rule promises them.

func (TransactionRuleAggregationParam) MarshalJSON

func (r TransactionRuleAggregationParam) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionRuleBacktestRequest

type TransactionRuleBacktestRequest struct {
	Conditions     Opt[[]TransactionRuleConditionParam]              `json:"conditions"`
	Aggregation    Opt[[]TransactionRuleAggregationParam]            `json:"aggregation"`
	EvaluationMode Opt[TransactionRuleBacktestRequestEvaluationMode] `json:"evaluation_mode"`
	Scope          Opt[TransactionRuleScopeParam]                    `json:"scope"`
	PeriodDays     Opt[int64]                                        `json:"period_days"`
}

TransactionRuleBacktestRequest: Hypothetical rule configuration to evaluate against recent transactions. Read-only and free: nothing is created or modified. Send the same conditions, aggregation, evaluation_mode AND scope as the rule you intend to activate. Omitted conditions, aggregation and scope add no constraints of their own; dropping scope can include directions or transaction types the saved rule skips. Omitted evaluation_mode defaults to ALL (which can reduce matches for an ANY rule), and omitted period_days defaults to 90 days, not unlimited history.

func (TransactionRuleBacktestRequest) MarshalJSON

func (r TransactionRuleBacktestRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionRuleBacktestRequestEvaluationMode

type TransactionRuleBacktestRequestEvaluationMode string

TransactionRuleBacktestRequestEvaluationMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleBacktestRequestEvaluationModeAll TransactionRuleBacktestRequestEvaluationMode = "ALL"
	TransactionRuleBacktestRequestEvaluationModeAny TransactionRuleBacktestRequestEvaluationMode = "ANY"
)

Known values of TransactionRuleBacktestRequestEvaluationMode.

type TransactionRuleBacktestResult

type TransactionRuleBacktestResult struct {
	// Transactions evaluated (most recent first, capped).
	Evaluated int64 `json:"evaluated"`

	// Transactions the configuration would have matched.
	Matched int64 `json:"matched"`

	// Distinct subjects (by vendor_data) among the matches.
	AffectedEntities int64 `json:"affected_entities"`
	PeriodDays       int64 `json:"period_days"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionRuleBacktestResult is a response object.

func (*TransactionRuleBacktestResult) UnmarshalJSON

func (r *TransactionRuleBacktestResult) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionRuleBacktestResult leniently.

type TransactionRuleCondition

type TransactionRuleCondition struct {
	// Transaction field path to evaluate. Core fields: amount, currency, direction,
	// action_type, score, severity, transaction_type, payment_details,
	// preferred_currency_amount (falls back to amount_in_default_currency),
	// default_currency_code, subject_country, counterparty_country,
	// subject_vendor_data, counterparty_vendor_data, subject_device_fingerprint,
	// counterparty_device_fingerprint, subject_browser_family,
	// subject_browser_version, subject_platform, subject_accept_language,
	// subject_session_age_ms, subject_ip_country, counterparty_ip_country,
	// subject_ip_address, counterparty_ip_address, subject_payment_method_type,
	// subject_payment_method_country, subject_payment_method_fingerprint,
	// subject_payment_method_account_id (and the counterparty_payment_method_*
	// equivalents), travel_rule_status, travel_rule_required,
	// travel_rule_obligations_count, counterparty_dd_status (your decision on the
	// Travel Rule counterparty: APPROVED, RESTRICTED or BLOCKED, an entity
	// following its brand's), counterparty_risk_level (LOW, MEDIUM or HIGH; HIGH
	// while your own counterparty screening is flagged), counterparty_jurisdiction
	// (the counterparty VASP's country), counterparty_responsiveness (RESPONSIVE,
	// UNRESPONSIVE or UNKNOWN), subject_days_since_previous_transaction, tags, and
	// custom_values.<key> for any key submitted in custom_properties on transaction
	// create. Country-code fields accept ISO-2 or ISO-3; both sides are normalized
	// to ISO-3 before comparison.
	Field string `json:"field"`

	// Comparison operator. in/not_in test membership (value may be a list or a
	// single scalar). contains/not_contains are case-insensitive substring checks
	// against a string value. contains_any takes a list of strings and matches when
	// any is a case-insensitive substring of the field value. regex matches the
	// value pattern against the field. fuzzy_match compares against the value
	// string with the required `score` threshold (0-100). gt/gte/lt/lte never match
	// when either side is missing. exists/is_not_empty/is_not_null (aliases) and
	// not_exists/is_empty/is_null (aliases) are presence checks that ignore
	// `value`.
	Operator TransactionRuleConditionOperator `json:"operator"`

	// Comparison value. Its shape depends on the operator and value_type; omit for
	// the presence-check operators.
	Value any `json:"value"`

	// Optional value interpretation. `list`: value is a List UUID and the list's
	// entries become the comparison value. `field`: value is another field path,
	// compared field-to-field. `relative_date`: value is a relative-date object,
	// e.g. {"direction": "past", "unit": "days", "amount": 30}.
	ValueType TransactionRuleConditionValueType `json:"value_type"`

	// Required when operator is fuzzy_match: the 0-100 similarity threshold.
	Score float64 `json:"score"`

	// Optional grouped logic. When any condition carries group_index, conditions
	// sharing an index form a group and grouped evaluation replaces
	// evaluation_mode.
	GroupIndex int64 `json:"group_index"`

	// How conditions combine WITHIN a group.
	GroupLogic TransactionRuleConditionGroupLogic `json:"group_logic"`

	// How group outcomes combine ACROSS groups. Read from the first condition.
	GroupsLogic TransactionRuleConditionGroupsLogic `json:"groups_logic"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionRuleCondition: A condition reads only the transaction being evaluated - it never filters the aggregation window.

func (*TransactionRuleCondition) UnmarshalJSON

func (r *TransactionRuleCondition) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionRuleCondition leniently.

type TransactionRuleConditionGroupLogic

type TransactionRuleConditionGroupLogic string

TransactionRuleConditionGroupLogic: How conditions combine WITHIN a group.

TransactionRuleConditionGroupLogic is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleConditionGroupLogicAnd TransactionRuleConditionGroupLogic = "AND"
	TransactionRuleConditionGroupLogicOr  TransactionRuleConditionGroupLogic = "OR"
)

Known values of TransactionRuleConditionGroupLogic.

type TransactionRuleConditionGroupsLogic

type TransactionRuleConditionGroupsLogic string

TransactionRuleConditionGroupsLogic: How group outcomes combine ACROSS groups. Read from the first condition.

TransactionRuleConditionGroupsLogic is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleConditionGroupsLogicAnd TransactionRuleConditionGroupsLogic = "AND"
	TransactionRuleConditionGroupsLogicOr  TransactionRuleConditionGroupsLogic = "OR"
)

Known values of TransactionRuleConditionGroupsLogic.

type TransactionRuleConditionOperator

type TransactionRuleConditionOperator string

TransactionRuleConditionOperator: Comparison operator. in/not_in test membership (value may be a list or a single scalar). contains/not_contains are case-insensitive substring checks against a string value. contains_any takes a list of strings and matches when any is a case-insensitive substring of the field value. regex matches the value pattern against the field. fuzzy_match compares against the value string with the required `score` threshold (0-100). gt/gte/lt/lte never match when either side is missing. exists/is_not_empty/is_not_null (aliases) and not_exists/is_empty/is_null (aliases) are presence checks that ignore `value`.

TransactionRuleConditionOperator is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleConditionOperatorEq          TransactionRuleConditionOperator = "eq"
	TransactionRuleConditionOperatorNe          TransactionRuleConditionOperator = "ne"
	TransactionRuleConditionOperatorGt          TransactionRuleConditionOperator = "gt"
	TransactionRuleConditionOperatorGte         TransactionRuleConditionOperator = "gte"
	TransactionRuleConditionOperatorLt          TransactionRuleConditionOperator = "lt"
	TransactionRuleConditionOperatorLte         TransactionRuleConditionOperator = "lte"
	TransactionRuleConditionOperatorIn          TransactionRuleConditionOperator = "in"
	TransactionRuleConditionOperatorNotIn       TransactionRuleConditionOperator = "not_in"
	TransactionRuleConditionOperatorContains    TransactionRuleConditionOperator = "contains"
	TransactionRuleConditionOperatorNotContains TransactionRuleConditionOperator = "not_contains"
	TransactionRuleConditionOperatorContainsAny TransactionRuleConditionOperator = "contains_any"
	TransactionRuleConditionOperatorRegex       TransactionRuleConditionOperator = "regex"
	TransactionRuleConditionOperatorFuzzyMatch  TransactionRuleConditionOperator = "fuzzy_match"
	TransactionRuleConditionOperatorExists      TransactionRuleConditionOperator = "exists"
	TransactionRuleConditionOperatorIsNotEmpty  TransactionRuleConditionOperator = "is_not_empty"
	TransactionRuleConditionOperatorIsNotNull   TransactionRuleConditionOperator = "is_not_null"
	TransactionRuleConditionOperatorNotExists   TransactionRuleConditionOperator = "not_exists"
	TransactionRuleConditionOperatorIsEmpty     TransactionRuleConditionOperator = "is_empty"
	TransactionRuleConditionOperatorIsNull      TransactionRuleConditionOperator = "is_null"
)

Known values of TransactionRuleConditionOperator.

type TransactionRuleConditionParam

type TransactionRuleConditionParam struct {
	// Transaction field path to evaluate. Core fields: amount, currency, direction,
	// action_type, score, severity, transaction_type, payment_details,
	// preferred_currency_amount (falls back to amount_in_default_currency),
	// default_currency_code, subject_country, counterparty_country,
	// subject_vendor_data, counterparty_vendor_data, subject_device_fingerprint,
	// counterparty_device_fingerprint, subject_browser_family,
	// subject_browser_version, subject_platform, subject_accept_language,
	// subject_session_age_ms, subject_ip_country, counterparty_ip_country,
	// subject_ip_address, counterparty_ip_address, subject_payment_method_type,
	// subject_payment_method_country, subject_payment_method_fingerprint,
	// subject_payment_method_account_id (and the counterparty_payment_method_*
	// equivalents), travel_rule_status, travel_rule_required,
	// travel_rule_obligations_count, counterparty_dd_status (your decision on the
	// Travel Rule counterparty: APPROVED, RESTRICTED or BLOCKED, an entity
	// following its brand's), counterparty_risk_level (LOW, MEDIUM or HIGH; HIGH
	// while your own counterparty screening is flagged), counterparty_jurisdiction
	// (the counterparty VASP's country), counterparty_responsiveness (RESPONSIVE,
	// UNRESPONSIVE or UNKNOWN), subject_days_since_previous_transaction, tags, and
	// custom_values.<key> for any key submitted in custom_properties on transaction
	// create. Country-code fields accept ISO-2 or ISO-3; both sides are normalized
	// to ISO-3 before comparison. Required.
	Field string `json:"field"`

	// Comparison operator. in/not_in test membership (value may be a list or a
	// single scalar). contains/not_contains are case-insensitive substring checks
	// against a string value. contains_any takes a list of strings and matches when
	// any is a case-insensitive substring of the field value. regex matches the
	// value pattern against the field. fuzzy_match compares against the value
	// string with the required `score` threshold (0-100). gt/gte/lt/lte never match
	// when either side is missing. exists/is_not_empty/is_not_null (aliases) and
	// not_exists/is_empty/is_null (aliases) are presence checks that ignore
	// `value`. Required.
	Operator TransactionRuleConditionOperator `json:"operator"`

	// Comparison value. Its shape depends on the operator and value_type; omit for
	// the presence-check operators.
	Value Opt[any] `json:"value"`

	// Optional value interpretation. `list`: value is a List UUID and the list's
	// entries become the comparison value. `field`: value is another field path,
	// compared field-to-field. `relative_date`: value is a relative-date object,
	// e.g. {"direction": "past", "unit": "days", "amount": 30}.
	ValueType Opt[TransactionRuleConditionValueType] `json:"value_type"`

	// Required when operator is fuzzy_match: the 0-100 similarity threshold.
	Score Opt[float64] `json:"score"`

	// Optional grouped logic. When any condition carries group_index, conditions
	// sharing an index form a group and grouped evaluation replaces
	// evaluation_mode.
	GroupIndex Opt[int64] `json:"group_index"`

	// How conditions combine WITHIN a group.
	GroupLogic Opt[TransactionRuleConditionGroupLogic] `json:"group_logic"`

	// How group outcomes combine ACROSS groups. Read from the first condition.
	GroupsLogic Opt[TransactionRuleConditionGroupsLogic] `json:"groups_logic"`
}

TransactionRuleConditionParam: A condition reads only the transaction being evaluated - it never filters the aggregation window.

func (TransactionRuleConditionParam) MarshalJSON

func (r TransactionRuleConditionParam) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionRuleConditionValueType

type TransactionRuleConditionValueType string

TransactionRuleConditionValueType: Optional value interpretation. `list`: value is a List UUID and the list's entries become the comparison value. `field`: value is another field path, compared field-to-field. `relative_date`: value is a relative-date object, e.g. {"direction": "past", "unit": "days", "amount": 30}.

TransactionRuleConditionValueType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleConditionValueTypeList         TransactionRuleConditionValueType = "list"
	TransactionRuleConditionValueTypeField        TransactionRuleConditionValueType = "field"
	TransactionRuleConditionValueTypeRelativeDate TransactionRuleConditionValueType = "relative_date"
)

Known values of TransactionRuleConditionValueType.

type TransactionRuleCreateRequest

type TransactionRuleCreateRequest struct {
	// Rule name. Unique per application among non-deleted rules; duplicates return
	// 400. Required.
	Title       string      `json:"title"`
	Description Opt[string] `json:"description"`

	// Risk theme used for grouping and reporting, e.g. finance, aml_ctf,
	// anomaly_detection, fatf, device_intelligence, crypto_monitoring, travel_rule,
	// responsible_gaming, e_commerce. Required.
	Category string `json:"category"`

	// ACTIVE evaluates live. TEST evaluates and records rule runs but never touches
	// score or status - the recommended starting mode. DISABLED is skipped.
	// Required.
	Mode TransactionRuleCreateRequestMode `json:"mode"`

	// Whether every condition must match (ALL) or at least one (ANY). Ignored when
	// conditions use group_index.
	EvaluationMode Opt[TransactionRuleCreateRequestEvaluationMode] `json:"evaluation_mode"`
	Scope          Opt[TransactionRuleScopeParam]                  `json:"scope"`
	Conditions     Opt[[]TransactionRuleConditionParam]            `json:"conditions"`
	Aggregation    Opt[[]TransactionRuleAggregationParam]          `json:"aggregation"`
	Actions        Opt[[]TransactionRuleActionParam]               `json:"actions"`

	// Free-form metadata stored on the rule.
	Metadata Opt[map[string]any] `json:"metadata"`
}

TransactionRuleCreateRequest: Creates a CUSTOM rule. Rules in ACTIVE mode take effect immediately for new transactions - create in TEST mode and backtest first.

func (TransactionRuleCreateRequest) MarshalJSON

func (r TransactionRuleCreateRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionRuleCreateRequestEvaluationMode

type TransactionRuleCreateRequestEvaluationMode string

TransactionRuleCreateRequestEvaluationMode: Whether every condition must match (ALL) or at least one (ANY). Ignored when conditions use group_index.

TransactionRuleCreateRequestEvaluationMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleCreateRequestEvaluationModeAll TransactionRuleCreateRequestEvaluationMode = "ALL"
	TransactionRuleCreateRequestEvaluationModeAny TransactionRuleCreateRequestEvaluationMode = "ANY"
)

Known values of TransactionRuleCreateRequestEvaluationMode.

type TransactionRuleCreateRequestMode

type TransactionRuleCreateRequestMode string

TransactionRuleCreateRequestMode: ACTIVE evaluates live. TEST evaluates and records rule runs but never touches score or status - the recommended starting mode. DISABLED is skipped.

TransactionRuleCreateRequestMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleCreateRequestModeActive   TransactionRuleCreateRequestMode = "ACTIVE"
	TransactionRuleCreateRequestModeDisabled TransactionRuleCreateRequestMode = "DISABLED"
	TransactionRuleCreateRequestModeTest     TransactionRuleCreateRequestMode = "TEST"
)

Known values of TransactionRuleCreateRequestMode.

type TransactionRuleDetail

type TransactionRuleDetail struct {
	UUID string `json:"uuid"`

	// Rule name. Unique per application among non-deleted rules; duplicates return
	// 400.
	Title       string `json:"title"`
	Description string `json:"description"`

	// Risk theme used for grouping and reporting, e.g. finance, aml_ctf,
	// anomaly_detection, fatf, device_intelligence, crypto_monitoring, travel_rule,
	// responsible_gaming, e_commerce.
	Category string `json:"category"`

	// ACTIVE evaluates live. TEST evaluates and records rule runs but never touches
	// score or status - the recommended starting mode. DISABLED is skipped.
	Mode TransactionRuleDetailMode `json:"mode"`

	// Whether every condition must match (ALL) or at least one (ANY). Ignored when
	// conditions use group_index.
	EvaluationMode TransactionRuleDetailEvaluationMode `json:"evaluation_mode"`
	Scope          TransactionRuleScope                `json:"scope"`
	Conditions     []TransactionRuleCondition          `json:"conditions"`
	Aggregation    []TransactionRuleAggregation        `json:"aggregation"`
	Actions        []TransactionRuleAction             `json:"actions"`

	// Free-form metadata stored on the rule.
	Metadata map[string]any `json:"metadata"`

	// Informational severity carried by library rules; not settable on custom
	// rules.
	Severity TransactionRuleDetailSeverity `json:"severity"`

	// PRESET rules come from the library (install/uninstall, mode-only edits);
	// CUSTOM rules are fully yours.
	Source TransactionRuleDetailSource `json:"source"`

	// Stable library identifier; null for custom rules.
	LibraryKey        string    `json:"library_key"`
	LatestTriggeredAt time.Time `json:"latest_triggered_at"`

	// How many transactions matched this rule.
	RunCount          int64     `json:"run_count"`
	ApprovedCount     int64     `json:"approved_count"`
	ReviewedCount     int64     `json:"reviewed_count"`
	DeclinedCount     int64     `json:"declined_count"`
	AwaitingUserCount int64     `json:"awaiting_user_count"`
	ApprovedPct       float64   `json:"approved_pct"`
	ReviewedPct       float64   `json:"reviewed_pct"`
	DeclinedPct       float64   `json:"declined_pct"`
	CreatedAt         time.Time `json:"created_at"`
	UpdatedAt         time.Time `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionRuleDetail is a response object.

func (*TransactionRuleDetail) UnmarshalJSON

func (r *TransactionRuleDetail) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionRuleDetail leniently.

type TransactionRuleDetailEvaluationMode

type TransactionRuleDetailEvaluationMode string

TransactionRuleDetailEvaluationMode: Whether every condition must match (ALL) or at least one (ANY). Ignored when conditions use group_index.

TransactionRuleDetailEvaluationMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleDetailEvaluationModeAll TransactionRuleDetailEvaluationMode = "ALL"
	TransactionRuleDetailEvaluationModeAny TransactionRuleDetailEvaluationMode = "ANY"
)

Known values of TransactionRuleDetailEvaluationMode.

type TransactionRuleDetailMode

type TransactionRuleDetailMode string

TransactionRuleDetailMode: ACTIVE evaluates live. TEST evaluates and records rule runs but never touches score or status - the recommended starting mode. DISABLED is skipped.

TransactionRuleDetailMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleDetailModeActive   TransactionRuleDetailMode = "ACTIVE"
	TransactionRuleDetailModeDisabled TransactionRuleDetailMode = "DISABLED"
	TransactionRuleDetailModeTest     TransactionRuleDetailMode = "TEST"
)

Known values of TransactionRuleDetailMode.

type TransactionRuleDetailSeverity

type TransactionRuleDetailSeverity string

TransactionRuleDetailSeverity: Informational severity carried by library rules; not settable on custom rules.

TransactionRuleDetailSeverity is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleDetailSeverityUnknown  TransactionRuleDetailSeverity = "UNKNOWN"
	TransactionRuleDetailSeverityLow      TransactionRuleDetailSeverity = "LOW"
	TransactionRuleDetailSeverityMedium   TransactionRuleDetailSeverity = "MEDIUM"
	TransactionRuleDetailSeverityHigh     TransactionRuleDetailSeverity = "HIGH"
	TransactionRuleDetailSeverityCritical TransactionRuleDetailSeverity = "CRITICAL"
)

Known values of TransactionRuleDetailSeverity.

type TransactionRuleDetailSource

type TransactionRuleDetailSource string

TransactionRuleDetailSource: PRESET rules come from the library (install/uninstall, mode-only edits); CUSTOM rules are fully yours.

TransactionRuleDetailSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleDetailSourcePreset TransactionRuleDetailSource = "PRESET"
	TransactionRuleDetailSourceCustom TransactionRuleDetailSource = "CUSTOM"
)

Known values of TransactionRuleDetailSource.

type TransactionRuleInstallRequest

type TransactionRuleInstallRequest struct {
	// Specific presets to install or uninstall.
	LibraryKeys Opt[[]string] `json:"library_keys"`

	// Install or uninstall every preset in this bundle instead.
	Bundle Opt[string] `json:"bundle"`
}

TransactionRuleInstallRequest: Provide library_keys OR bundle.

func (TransactionRuleInstallRequest) MarshalJSON

func (r TransactionRuleInstallRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionRuleInstallResult

type TransactionRuleInstallResult struct {
	// POST (install) only: presets installed by this call.
	InstalledLibraryKeys []string `json:"installed_library_keys"`

	// POST (install) only.
	InstalledCount int64 `json:"installed_count"`

	// DELETE (uninstall) only: presets removed by this call.
	UninstalledCount int64 `json:"uninstalled_count"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionRuleInstallResult is a response object.

func (*TransactionRuleInstallResult) UnmarshalJSON

func (r *TransactionRuleInstallResult) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionRuleInstallResult leniently.

type TransactionRuleLibraryEntry

type TransactionRuleLibraryEntry struct {
	LibraryKey     string                                    `json:"library_key"`
	Title          string                                    `json:"title"`
	Description    string                                    `json:"description"`
	Category       string                                    `json:"category"`
	EvaluationMode TransactionRuleLibraryEntryEvaluationMode `json:"evaluation_mode"`
	Scope          TransactionRuleScope                      `json:"scope"`
	Conditions     []TransactionRuleCondition                `json:"conditions"`
	Aggregation    []TransactionRuleAggregation              `json:"aggregation"`
	Actions        []TransactionRuleAction                   `json:"actions"`
	Metadata       map[string]any                            `json:"metadata"`

	// Functional family, e.g. finance, aml_ctf, crypto_monitoring, travel_rule,
	// responsible_gaming.
	Bundle     string   `json:"bundle"`
	Tags       []string `json:"tags"`
	Industries []string `json:"industries"`
	Source     string   `json:"source"`

	// Whether this preset is currently installed on the application.
	IsInstalled bool `json:"is_installed"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionRuleLibraryEntry is a response object.

func (*TransactionRuleLibraryEntry) UnmarshalJSON

func (r *TransactionRuleLibraryEntry) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionRuleLibraryEntry leniently.

type TransactionRuleLibraryEntryEvaluationMode

type TransactionRuleLibraryEntryEvaluationMode string

TransactionRuleLibraryEntryEvaluationMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleLibraryEntryEvaluationModeAll TransactionRuleLibraryEntryEvaluationMode = "ALL"
	TransactionRuleLibraryEntryEvaluationModeAny TransactionRuleLibraryEntryEvaluationMode = "ANY"
)

Known values of TransactionRuleLibraryEntryEvaluationMode.

type TransactionRuleScope

type TransactionRuleScope struct {
	// Restrict to transaction types, e.g. finance, kyc, travel_rule, user_event.
	// Empty or missing = no restriction.
	TransactionTypes []string `json:"transaction_types"`

	// Restrict to transaction directions (case-insensitive on write).
	Directions []TransactionRuleScopeDirections `json:"directions"`

	// Restrict to your action_type values, e.g. withdrawal, deposit.
	ActionTypes []string `json:"action_types"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionRuleScope: Which transactions the rule applies to. Only these three keys are accepted.

func (*TransactionRuleScope) UnmarshalJSON

func (r *TransactionRuleScope) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionRuleScope leniently.

type TransactionRuleScopeDirections

type TransactionRuleScopeDirections string

TransactionRuleScopeDirections is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleScopeDirectionsInbound  TransactionRuleScopeDirections = "INBOUND"
	TransactionRuleScopeDirectionsOutbound TransactionRuleScopeDirections = "OUTBOUND"
)

Known values of TransactionRuleScopeDirections.

type TransactionRuleScopeParam

type TransactionRuleScopeParam struct {
	// Restrict to transaction types, e.g. finance, kyc, travel_rule, user_event.
	// Empty or missing = no restriction.
	TransactionTypes Opt[[]string] `json:"transaction_types"`

	// Restrict to transaction directions (case-insensitive on write).
	Directions Opt[[]TransactionRuleScopeDirections] `json:"directions"`

	// Restrict to your action_type values, e.g. withdrawal, deposit.
	ActionTypes Opt[[]string] `json:"action_types"`
}

TransactionRuleScopeParam: Which transactions the rule applies to. Only these three keys are accepted.

func (TransactionRuleScopeParam) MarshalJSON

func (r TransactionRuleScopeParam) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionRuleUpdateRequest

type TransactionRuleUpdateRequest struct {
	// Rule name. Unique per application among non-deleted rules; duplicates return
	// 400.
	Title       Opt[string] `json:"title"`
	Description Opt[string] `json:"description"`

	// Risk theme used for grouping and reporting, e.g. finance, aml_ctf,
	// anomaly_detection, fatf, device_intelligence, crypto_monitoring, travel_rule,
	// responsible_gaming, e_commerce.
	Category Opt[string] `json:"category"`

	// ACTIVE evaluates live. TEST evaluates and records rule runs but never touches
	// score or status - the recommended starting mode. DISABLED is skipped.
	Mode Opt[TransactionRuleUpdateRequestMode] `json:"mode"`

	// Whether every condition must match (ALL) or at least one (ANY). Ignored when
	// conditions use group_index.
	EvaluationMode Opt[TransactionRuleUpdateRequestEvaluationMode] `json:"evaluation_mode"`
	Scope          Opt[TransactionRuleScopeParam]                  `json:"scope"`
	Conditions     Opt[[]TransactionRuleConditionParam]            `json:"conditions"`
	Aggregation    Opt[[]TransactionRuleAggregationParam]          `json:"aggregation"`
	Actions        Opt[[]TransactionRuleActionParam]               `json:"actions"`

	// Free-form metadata stored on the rule.
	Metadata Opt[map[string]any] `json:"metadata"`
}

TransactionRuleUpdateRequest: Partial update. Custom rules accept every field; library (PRESET) rules accept only mode - anything else returns 400.

func (TransactionRuleUpdateRequest) MarshalJSON

func (r TransactionRuleUpdateRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionRuleUpdateRequestEvaluationMode

type TransactionRuleUpdateRequestEvaluationMode string

TransactionRuleUpdateRequestEvaluationMode: Whether every condition must match (ALL) or at least one (ANY). Ignored when conditions use group_index.

TransactionRuleUpdateRequestEvaluationMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleUpdateRequestEvaluationModeAll TransactionRuleUpdateRequestEvaluationMode = "ALL"
	TransactionRuleUpdateRequestEvaluationModeAny TransactionRuleUpdateRequestEvaluationMode = "ANY"
)

Known values of TransactionRuleUpdateRequestEvaluationMode.

type TransactionRuleUpdateRequestMode

type TransactionRuleUpdateRequestMode string

TransactionRuleUpdateRequestMode: ACTIVE evaluates live. TEST evaluates and records rule runs but never touches score or status - the recommended starting mode. DISABLED is skipped.

TransactionRuleUpdateRequestMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionRuleUpdateRequestModeActive   TransactionRuleUpdateRequestMode = "ACTIVE"
	TransactionRuleUpdateRequestModeDisabled TransactionRuleUpdateRequestMode = "DISABLED"
	TransactionRuleUpdateRequestModeTest     TransactionRuleUpdateRequestMode = "TEST"
)

Known values of TransactionRuleUpdateRequestMode.

type TransactionSummary

type TransactionSummary struct {
	// Didit transaction UUID. Use it as `{transaction_id}` on the transaction
	// endpoints.
	UUID string `json:"uuid"`

	// Application-scoped sequential number shown in the Console.
	TransactionNumber int64 `json:"transaction_number"`

	// Your own identifier from the create call. Unique per application.
	TxnID string `json:"txn_id"`

	// Category as stored: `finance`, `kyc`, `travelRule`, `userPlatformEvent`,
	// `gamblingBet`, `gamblingLimitChange`, `gamblingBonusChange` or
	// `auditTrailEvent`.
	TransactionType string `json:"transaction_type"`

	// Sub-type within the category, for example `withdrawal`.
	ActionType string `json:"action_type"`

	// Current monitoring verdict.
	Status TransactionSummaryStatus `json:"status"`

	// `LIVE` for transactions submitted for monitoring, `IMPORTED` for historical
	// imports.
	Source TransactionSummarySource `json:"source"`

	// Direction relative to the subject.
	Direction TransactionSummaryDirection `json:"direction"`

	// Amount as a decimal string with trailing zeros removed (up to 18 decimal
	// places).
	Amount string `json:"amount"`

	// Currency code or crypto asset symbol of `amount`.
	Currency string `json:"currency"`

	// `fiat` or `crypto` when known.
	CurrencyType string `json:"currency_type"`

	// `amount` converted to the application's preferred currency, when a rate was
	// available.
	PreferredCurrencyAmount string `json:"preferred_currency_amount"`

	// Currency of `preferred_currency_amount`.
	PreferredCurrencyCode string `json:"preferred_currency_code"`

	// Free-text payment reference.
	PaymentDetails string `json:"payment_details"`

	// When the transaction occurred.
	TxnDate time.Time `json:"txn_date"`

	// When Didit recorded it.
	CreatedAt time.Time `json:"created_at"`

	// Risk score. Higher is riskier.
	Score int64 `json:"score"`

	// Risk severity, `null` until something sets it.
	Severity TransactionSummarySeverity `json:"severity"`

	// Machine-readable reason for the current `status`.
	DecisionReasonCode string `json:"decision_reason_code"`

	// Human-readable label for `decision_reason_code`.
	DecisionReasonLabel string `json:"decision_reason_label"`

	// Tags on the transaction.
	Tags []TransactionSummaryTags `json:"tags"`

	// Full name of the `APPLICANT` party.
	SubjectName string `json:"subject_name"`

	// Your `vendor_data` for the applicant.
	SubjectVendorData string `json:"subject_vendor_data"`

	// Whether the applicant is linked to a Didit user or business; `null` when it
	// is linked to neither.
	SubjectType TransactionSummarySubjectType `json:"subject_type"`

	// UUID of the Didit user or business the applicant is linked to.
	SubjectUUID string `json:"subject_uuid"`

	// Country code of the applicant.
	SubjectCountry string `json:"subject_country"`

	// Full name of the `COUNTERPARTY` party, if any.
	CounterpartyName string `json:"counterparty_name"`

	// Your `vendor_data` for the counterparty.
	CounterpartyVendorData string `json:"counterparty_vendor_data"`

	// Country code of the counterparty.
	CounterpartyCountry string `json:"counterparty_country"`

	// Name of the Console reviewer assigned to the transaction.
	AssignedToName string `json:"assigned_to_name"`

	// Status of the transaction's Travel Rule transfer, or `null` when it has none.
	TravelRuleStatus string `json:"travel_rule_status"`

	// Application that owns the transaction.
	ApplicationID string `json:"application_id"`

	// Name of that application.
	ApplicationName string `json:"application_name"`

	// Organization that owns the application.
	OrganizationID string `json:"organization_id"`

	// Name of that organization.
	OrganizationName string `json:"organization_name"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionSummary: Summary of a monitored transaction, the shape `GET /v3/transactions/` lists. Call `GET /v3/transactions/{transaction_id}/` with `uuid` for parties, alerts and rule runs.

func (*TransactionSummary) UnmarshalJSON

func (r *TransactionSummary) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionSummary leniently.

type TransactionSummaryDirection

type TransactionSummaryDirection string

TransactionSummaryDirection: Direction relative to the subject.

TransactionSummaryDirection is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionSummaryDirectionInbound  TransactionSummaryDirection = "INBOUND"
	TransactionSummaryDirectionOutbound TransactionSummaryDirection = "OUTBOUND"
)

Known values of TransactionSummaryDirection.

type TransactionSummarySeverity

type TransactionSummarySeverity string

TransactionSummarySeverity: Risk severity, `null` until something sets it.

TransactionSummarySeverity is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionSummarySeverityUnknown  TransactionSummarySeverity = "UNKNOWN"
	TransactionSummarySeverityLow      TransactionSummarySeverity = "LOW"
	TransactionSummarySeverityMedium   TransactionSummarySeverity = "MEDIUM"
	TransactionSummarySeverityHigh     TransactionSummarySeverity = "HIGH"
	TransactionSummarySeverityCritical TransactionSummarySeverity = "CRITICAL"
)

Known values of TransactionSummarySeverity.

type TransactionSummarySource

type TransactionSummarySource string

TransactionSummarySource: `LIVE` for transactions submitted for monitoring, `IMPORTED` for historical imports.

TransactionSummarySource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionSummarySourceLive     TransactionSummarySource = "LIVE"
	TransactionSummarySourceImported TransactionSummarySource = "IMPORTED"
)

Known values of TransactionSummarySource.

type TransactionSummaryStatus

type TransactionSummaryStatus string

TransactionSummaryStatus: Current monitoring verdict.

TransactionSummaryStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionSummaryStatusApproved     TransactionSummaryStatus = "APPROVED"
	TransactionSummaryStatusInReview     TransactionSummaryStatus = "IN_REVIEW"
	TransactionSummaryStatusDeclined     TransactionSummaryStatus = "DECLINED"
	TransactionSummaryStatusAwaitingUser TransactionSummaryStatus = "AWAITING_USER"
)

Known values of TransactionSummaryStatus.

type TransactionSummarySubjectType

type TransactionSummarySubjectType string

TransactionSummarySubjectType: Whether the applicant is linked to a Didit user or business; `null` when it is linked to neither.

TransactionSummarySubjectType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionSummarySubjectTypeUser     TransactionSummarySubjectType = "user"
	TransactionSummarySubjectTypeBusiness TransactionSummarySubjectType = "business"
)

Known values of TransactionSummarySubjectType.

type TransactionSummaryTags

type TransactionSummaryTags struct {
	UUID string `json:"uuid"`
	Name string `json:"name"`

	// Hex color, for example `#F59E0B`.
	Color       string `json:"color"`
	Description string `json:"description"`

	// Didit preset or custom tag.
	Source TransactionSummaryTagsSource `json:"source"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionSummaryTags is a response object.

func (*TransactionSummaryTags) UnmarshalJSON

func (r *TransactionSummaryTags) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionSummaryTags leniently.

type TransactionSummaryTagsSource

type TransactionSummaryTagsSource string

TransactionSummaryTagsSource: Didit preset or custom tag.

TransactionSummaryTagsSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionSummaryTagsSourceDidit  TransactionSummaryTagsSource = "didit"
	TransactionSummaryTagsSourceCustom TransactionSummaryTagsSource = "custom"
)

Known values of TransactionSummaryTagsSource.

type TransactionTravelRule

type TransactionTravelRule struct {
	UUID             string `json:"uuid"`
	Status           string `json:"status"`
	Protocol         string `json:"protocol"`
	Required         bool   `json:"required"`
	ObligationsCount int64  `json:"obligations_count"`

	// Originator party. For an inbound transfer the counterparty's values are
	// masked until ownership is confirmed.
	OriginatorData map[string]any `json:"originator_data"`

	// Beneficiary party. For an inbound transfer the counterparty's values are
	// masked until ownership is confirmed.
	BeneficiaryData map[string]any `json:"beneficiary_data"`

	// The name comparison that decided the transfer (score and strictness). Null
	// until one ran. The compared names are masked together with the parties.
	NameMatch map[string]any      `json:"name_match"`
	DataMatch TravelRuleDataMatch `json:"data_match"`

	// Shortcut for `data_match.mismatched_fields`. Empty when nothing differs.
	MismatchedFields []string               `json:"mismatched_fields"`
	DataUnmasked     TravelRuleDataUnmasked `json:"data_unmasked"`

	// True while the counterparty's personal data is masked in this response.
	DataMasked bool           `json:"data_masked"`
	Metadata   map[string]any `json:"metadata"`

	// Which side of the exchange this transfer is.
	Direction TransactionTravelRuleDirection `json:"direction"`

	// The rail the transfer went over: `INTERNAL`, `TRP`, `GTR`, `TRUST`,
	// `VERIFYVASP`, `SYGNA` or `EMAIL` (`TEST_VASP` on a sandbox application, when
	// the Didit Test VASP answered), or `null` until a rail is chosen.
	Rail string `json:"rail"`

	// The counterparty's directory entry, or `null` when the transfer links none.
	CounterpartyVASP TransactionTravelRuleCounterpartyVASP `json:"counterparty_vasp"`

	// The newest message the transfer owes another party. `null` when it has owed
	// none, for example below `threshold_amount` or for a declared self-hosted
	// wallet.
	Delivery TravelRuleDelivery `json:"delivery"`

	// How Didit looked for the counterparty, one entry per step that ran. Empty
	// when no discovery ran, for example on an inbound transfer.
	Discovery []TravelRuleDiscoveryStep `json:"discovery"`

	// Why a `COUNTERPARTY_VASP_NOT_FOUND` or `COUNTERPARTY_VASP_NOT_REACHABLE`
	// transfer is stuck; `""` for any other status. A failed delivery decides it
	// first, on `COUNTERPARTY_VASP_NOT_REACHABLE` only: `email_undeliverable` (the
	// mail provider refused the compliance email and no address is left to try:
	// when it was sent, on a reminder, or as a permanent bounce reported later) or
	// `delivery_failed` (the rail that was delivering failed for good: a network
	// rail refused the message or ran out of retries, a `TRP` identity host did not
	// answer, or the counterparty's `TRP` host did not accept the inquiry).
	// Otherwise the `discovery` trace decides it: `awaiting_end_user` (no step
	// named a counterparty Didit can reach), `directory_match_no_route` (a step
	// named a directory VASP that has no route),
	// `picked_member_without_proven_wallet` (the end user picked a Didit customer
	// that has not proven control of the wallet), or `no_directory_match` when the
	// trace gives no other reason. A resend moves the transfer on, so the reason
	// clears. See [Why a transfer is
	// stuck](/transaction-monitoring/travel-rule#why-a-transfer-is-stuck).
	Reason string `json:"reason"`

	// What moves the transfer on; `[]` for any status but
	// `COUNTERPARTY_VASP_NOT_FOUND` or `COUNTERPARTY_VASP_NOT_REACHABLE`.
	// `email_undeliverable` offers `update_compliance_email`, then `resend`.
	// `delivery_failed` offers `resend`. A discovery reason offers
	// `select_counterparty_vasp`, `declare_self_hosted`, `add_vasp_hint` and
	// `resend`.
	NextActions  []TravelRuleNextAction `json:"next_actions"`
	ChainDetails TravelRuleChainDetails `json:"chain_details"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionTravelRule: A transaction's Travel Rule transfer, as `GET /v3/transactions/{transaction_id}/`, the `201` of `POST /v3/transactions/` and each row of `GET /v3/transactions/` return it. `direction`, `rail`, `counterparty_vasp`, `delivery`, `discovery`, `reason` and `next_actions` have the same shape as on `PATCH /v3/transactions/{transaction_id}/travel-rule/`, so one read of a transaction says why its transfer is stuck and what moves it on.

func (*TransactionTravelRule) UnmarshalJSON

func (r *TransactionTravelRule) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionTravelRule leniently.

type TransactionTravelRuleCounterpartyVASP

type TransactionTravelRuleCounterpartyVASP struct {
	Name string `json:"name"`
	Lei  string `json:"lei"`

	// Due-diligence score from 0 to 100, where higher is better. Same scale as in
	// the VASP directory.
	DdScore int64 `json:"dd_score"`

	// Per-component contributions to dd_score, one object per component as in the
	// VASP directory (jurisdiction, verification, protocol, lei, history,
	// essentials, responsiveness), each {points, max, reason, detail}. {} until the
	// counterparty has been assessed.
	DdScoreBreakdown map[string]TransactionTravelRuleCounterpartyVASPDdScoreBreakdown `json:"dd_score_breakdown"`

	// When the due-diligence assessment last ran. Null until the counterparty has
	// been assessed.
	DdAssessedAt time.Time `json:"dd_assessed_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionTravelRuleCounterpartyVASP: The counterparty's directory entry, or `null` when the transfer links none.

func (*TransactionTravelRuleCounterpartyVASP) UnmarshalJSON

func (r *TransactionTravelRuleCounterpartyVASP) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionTravelRuleCounterpartyVASP leniently.

type TransactionTravelRuleCounterpartyVASPDdScoreBreakdown

type TransactionTravelRuleCounterpartyVASPDdScoreBreakdown struct {
	// Points awarded for this component.
	Points float64 `json:"points"`

	// Maximum points this component can award.
	Max int64 `json:"max"`

	// Machine-readable code of the component's verdict.
	Reason string `json:"reason"`

	// Human-readable reason for the awarded points.
	Detail string `json:"detail"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionTravelRuleCounterpartyVASPDdScoreBreakdown is a response object.

func (*TransactionTravelRuleCounterpartyVASPDdScoreBreakdown) UnmarshalJSON

UnmarshalJSON decodes TransactionTravelRuleCounterpartyVASPDdScoreBreakdown leniently.

type TransactionTravelRuleDirection

type TransactionTravelRuleDirection string

TransactionTravelRuleDirection: Which side of the exchange this transfer is.

TransactionTravelRuleDirection is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionTravelRuleDirectionInbound  TransactionTravelRuleDirection = "INBOUND"
	TransactionTravelRuleDirectionOutbound TransactionTravelRuleDirection = "OUTBOUND"
)

Known values of TransactionTravelRuleDirection.

type TransactionsCreateParams

type TransactionsCreateParams struct {
	// Your unique identifier for this transaction (max 128 characters). Required.
	TransactionID string `json:"transaction_id"`

	// When the transaction occurred. Defaults to now if omitted.
	TransactionAt Opt[time.Time] `json:"transaction_at"`

	// IANA time zone identifier, e.g. `Europe/Madrid`.
	TimeZone Opt[string] `json:"time_zone"`

	// Category of the transaction. CamelCase aliases (`travelRule`,
	// `userPlatformEvent`, `gamblingBet`, …) are also accepted; the stored/echoed
	// value is camelCase for multi-word categories. Required.
	TransactionCategory TransactionsCreateParamsTransactionCategory `json:"transaction_category"`

	// Core financial details of the transaction. Required.
	TransactionDetails TransactionsCreateParamsTransactionDetails `json:"transaction_details"`

	// The subject (applicant) of the transaction. Required.
	Subject TransactionsCreateParamsSubject `json:"subject"`

	// The counterparty of the transaction (optional).
	Counterparty Opt[TransactionsCreateParamsCounterparty] `json:"counterparty"`

	// Arbitrary key-value pairs attached to the transaction. Each key can be
	// referenced in rule conditions with the field path `custom_values.<key>`.
	CustomProperties Opt[map[string]any] `json:"custom_properties"`

	// Travel Rule data. When Travel Rule is enabled and transaction_category is
	// travel_rule, Didit runs the exchange itself: it ignores status, protocol,
	// required and obligations_count, and uses originator_data, beneficiary_data
	// and metadata. Otherwise Didit stores these values as a passive Travel Rule
	// record. While Travel Rule is on, an outbound transfer at or above your
	// threshold must carry what its regime requires (EU TFR or FATF Recommendation
	// 16), checked on the sides you send: a missing field answers 400 under
	// `travel_rule_details.originator_data` or
	// `travel_rule_details.beneficiary_data`, for example "EU TFR requires the
	// originator name."
	TravelRuleDetails Opt[TransactionsCreateParamsTravelRuleDetails] `json:"travel_rule_details"`

	// Pre-computed network graph snapshot.
	NetworkSnapshot Opt[TransactionsCreateParamsNetworkSnapshot] `json:"network_snapshot"`

	// Per-transaction override for crypto blockchain analytics screening. When
	// `true`, crypto screening is performed regardless of the application default.
	// When `false`, crypto screening is skipped even if enabled in the application
	// settings. When omitted or `null`, the application-level default configured in
	// the Console is used. Crypto screening requires
	// `transaction_details.direction`, `currency_kind: "crypto"`, a chain/currency,
	// and the wallet address selected by the direction: inbound pre-transfer
	// screening uses `counterparty.payment_method.account_id`, inbound
	// transaction-hash screening uses `subject.payment_method.account_id`, and
	// outbound screening uses `counterparty.payment_method.account_id`. When
	// `transaction_details.payment_reference_id` contains a blockchain transaction
	// hash, Didit performs transaction screening and returns transaction summary
	// enrichment when available.
	IncludeCryptoScreening Opt[bool] `json:"include_crypto_screening"`
}

TransactionsCreateParams holds the parameters of Client.Transactions.Create.

func (TransactionsCreateParams) MarshalJSON

func (r TransactionsCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionsCreateParamsCounterparty

type TransactionsCreateParamsCounterparty struct {
	// Entity type: `individual` or `company`.
	EntityType Opt[string] `json:"entity_type"`

	// Your internal identifier for the counterparty.
	VendorData Opt[string] `json:"vendor_data"`

	// Full name of the counterparty.
	FullName    Opt[string] `json:"full_name"`
	FirstName   Opt[string] `json:"first_name"`
	LastName    Opt[string] `json:"last_name"`
	DateOfBirth Opt[string] `json:"date_of_birth"`

	// Address object with `country` (ISO 3166-1 alpha-3).
	Address            Opt[map[string]any] `json:"address"`
	InstitutionDetails Opt[map[string]any] `json:"institution_details"`

	// Device context for the counterparty. browser_family and platform must be sent
	// as explicit top-level keys - they are not derived from user_agent.
	DeviceContext Opt[TransactionsCreateParamsCounterpartyDeviceContext] `json:"device_context"`

	// Payment method used by the counterparty. On travelRule transactions,
	// `method_type: "unhosted_wallet"` declares the counterparty wallet as
	// self-hosted: the transfer skips counterparty-VASP routing, is created
	// directly in `UNCONFIRMED_OWNERSHIP`, and (when `auto_wallet_verification` is
	// enabled) a wallet-ownership widget session is auto-minted and returned in the
	// transaction's `action_required` block.
	PaymentMethod Opt[TransactionsCreateParamsCounterpartyPaymentMethod] `json:"payment_method"`
}

TransactionsCreateParamsCounterparty: The counterparty of the transaction (optional).

func (TransactionsCreateParamsCounterparty) MarshalJSON

func (r TransactionsCreateParamsCounterparty) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionsCreateParamsCounterpartyDeviceContext

type TransactionsCreateParamsCounterpartyDeviceContext struct {
	// Unique device fingerprint.
	Fingerprint Opt[string] `json:"fingerprint"`

	// Stable cross-session device identifier (v2 fingerprint schema).
	PersistentDeviceID Opt[string] `json:"persistent_device_id"`

	// Browser or app user agent string. CamelCase alias: userAgent.
	UserAgent Opt[string] `json:"user_agent"`

	// Browser family (e.g. Chrome, Firefox, Safari). Must be sent explicitly - it
	// is not derived from user_agent. CamelCase alias: browserFamily.
	BrowserFamily Opt[string] `json:"browser_family"`

	// Browser version string. Must be sent explicitly. CamelCase alias:
	// browserVersion.
	BrowserVersion Opt[string] `json:"browser_version"`

	// Platform identifier (web, ios, android, macos, windows, linux). Must be sent
	// explicitly - it is not derived from user_agent.
	Platform Opt[string] `json:"platform"`

	// Operating system family (e.g. iOS, Android, Windows). CamelCase alias:
	// osFamily.
	OsFamily Opt[string] `json:"os_family"`

	// Operating system version string. CamelCase alias: osVersion.
	OsVersion Opt[string] `json:"os_version"`

	// Accept-Language header value. CamelCase alias: acceptLang.
	AcceptLanguage Opt[string] `json:"accept_language"`

	// Session identifier for the counterparty session. Stored in metadata.
	// CamelCase alias: sessionId.
	SessionID Opt[string] `json:"session_id"`

	// Age of the user session in milliseconds at transaction time. CamelCase alias:
	// sessionAgeMs.
	SessionAgeMs Opt[float64] `json:"session_age_ms"`

	// Network context with IP address and geo-location. A top-level ipInfo block is
	// also folded into this object.
	NetworkContext Opt[TransactionsCreateParamsCounterpartyDeviceContextNetworkContext] `json:"network_context"`
}

TransactionsCreateParamsCounterpartyDeviceContext: Device context for the counterparty. browser_family and platform must be sent as explicit top-level keys - they are not derived from user_agent.

func (TransactionsCreateParamsCounterpartyDeviceContext) MarshalJSON

MarshalJSON encodes the fields that are set.

type TransactionsCreateParamsCounterpartyDeviceContextNetworkContext

type TransactionsCreateParamsCounterpartyDeviceContextNetworkContext struct {
	// Client IP address. CamelCase alias: ip.
	IPAddress Opt[string] `json:"ip_address"`

	// Geo-resolved country of the IP (ISO 3166-1 alpha-3). CamelCase alias:
	// countryCode3.
	IPCountryCode Opt[string] `json:"ip_country_code"`

	// Geographic latitude of the IP. CamelCase alias: lat.
	Latitude Opt[float64] `json:"latitude"`

	// Geographic longitude of the IP. CamelCase alias: lon.
	Longitude Opt[float64] `json:"longitude"`
}

TransactionsCreateParamsCounterpartyDeviceContextNetworkContext: Network context with IP address and geo-location. A top-level ipInfo block is also folded into this object.

func (TransactionsCreateParamsCounterpartyDeviceContextNetworkContext) MarshalJSON

MarshalJSON encodes the fields that are set.

type TransactionsCreateParamsCounterpartyPaymentMethod

type TransactionsCreateParamsCounterpartyPaymentMethod struct {
	// Type of payment method: `bank_card`, `bank_account`, `crypto_wallet`,
	// `ewallet`, `unhosted_wallet`, `other`. Use `unhosted_wallet` to declare a
	// self-hosted wallet for the Travel Rule.
	MethodType Opt[string] `json:"method_type"`

	// Account identifier (e.g. IBAN or wallet address). On a crypto transfer on
	// bitcoin or Lightning it may be a Lightning payment request (BOLT11 invoice,
	// BOLT12 offer, LNURL) or a Lightning Address: Didit stores the payee it names
	// as the account ("" when it names none) and what the request says on the
	// Travel Rule transfer's `chain_details.lightning`. At most 255 characters once
	// stored. On a crypto transfer on bitcoin or Lightning it may be a Lightning
	// payment request (BOLT11 invoice, BOLT12 offer, LNURL) or a Lightning Address:
	// Didit stores the payee it names as the account ("" when it names none) and
	// what the request says on the Travel Rule transfer's
	// `chain_details.lightning`. At most 255 characters once stored.
	AccountID Opt[string] `json:"account_id"`

	// The destination tag or memo that is part of the wallet on a memo network
	// (XRP, XLM, EOS, ATOM, HBAR). On one shared exchange address each memo is its
	// own payment method. XRP: a destination tag, a whole number from 0 to
	// 4294967295 (a JSON number is accepted). XLM: a text memo of up to 28 bytes, a
	// 64-bit id or a 32-byte hash in hex. EOS: up to 256 bytes. ATOM: up to 256
	// characters. HBAR: up to 100 bytes. Bitcoin, EVM, Solana, Tron, Litecoin,
	// Bitcoin Cash, Dogecoin and Lightning wallets take no memo: one there is a
	// `400`. Alias: `destinationTag` or `destination_tag`.
	Memo           Opt[string] `json:"memo"`
	IssuingCountry Opt[string] `json:"issuing_country"`
}

TransactionsCreateParamsCounterpartyPaymentMethod: Payment method used by the counterparty. On travelRule transactions, `method_type: "unhosted_wallet"` declares the counterparty wallet as self-hosted: the transfer skips counterparty-VASP routing, is created directly in `UNCONFIRMED_OWNERSHIP`, and (when `auto_wallet_verification` is enabled) a wallet-ownership widget session is auto-minted and returned in the transaction's `action_required` block.

func (TransactionsCreateParamsCounterpartyPaymentMethod) MarshalJSON

MarshalJSON encodes the fields that are set.

type TransactionsCreateParamsNetworkSnapshot

type TransactionsCreateParamsNetworkSnapshot struct {
	Nodes   Opt[[]map[string]any] `json:"nodes"`
	Edges   Opt[[]map[string]any] `json:"edges"`
	Metrics Opt[map[string]any]   `json:"metrics"`
}

TransactionsCreateParamsNetworkSnapshot: Pre-computed network graph snapshot.

func (TransactionsCreateParamsNetworkSnapshot) MarshalJSON

func (r TransactionsCreateParamsNetworkSnapshot) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionsCreateParamsSubject

type TransactionsCreateParamsSubject struct {
	// Entity type: `individual` or `company`.
	EntityType Opt[string] `json:"entity_type"`

	// Your internal user/business identifier. Required.
	VendorData string `json:"vendor_data"`

	// Full name of the subject. Required.
	FullName string `json:"full_name"`

	// First name of the subject.
	FirstName Opt[string] `json:"first_name"`

	// Last name of the subject.
	LastName Opt[string] `json:"last_name"`

	// Date of birth (YYYY-MM-DD).
	DateOfBirth Opt[string] `json:"date_of_birth"`

	// Address object.
	Address Opt[TransactionsCreateParamsSubjectAddress] `json:"address"`

	// Institution details (for institutional subjects).
	InstitutionDetails Opt[TransactionsCreateParamsSubjectInstitutionDetails] `json:"institution_details"`

	// Device context captured at transaction time. browser_family and platform must
	// be sent as explicit top-level keys - they are not derived from user_agent.
	// The camelCase alias device is also accepted on the request.
	DeviceContext Opt[TransactionsCreateParamsSubjectDeviceContext] `json:"device_context"`

	// Payment method used by the subject.
	PaymentMethod Opt[TransactionsCreateParamsSubjectPaymentMethod] `json:"payment_method"`
}

TransactionsCreateParamsSubject: The subject (applicant) of the transaction.

func (TransactionsCreateParamsSubject) MarshalJSON

func (r TransactionsCreateParamsSubject) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionsCreateParamsSubjectAddress

type TransactionsCreateParamsSubjectAddress struct {
	// Country code (ISO 3166-1 alpha-3 recommended). Copied to the party's
	// `country_code`.
	Country  Opt[string] `json:"country"`
	Town     Opt[string] `json:"town"`
	State    Opt[string] `json:"state"`
	Street   Opt[string] `json:"street"`
	PostCode Opt[string] `json:"post_code"`
}

TransactionsCreateParamsSubjectAddress: Address object.

func (TransactionsCreateParamsSubjectAddress) MarshalJSON

func (r TransactionsCreateParamsSubjectAddress) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionsCreateParamsSubjectDeviceContext

type TransactionsCreateParamsSubjectDeviceContext struct {
	// Unique device fingerprint.
	Fingerprint Opt[string] `json:"fingerprint"`

	// Stable cross-session device identifier (v2 fingerprint schema).
	PersistentDeviceID Opt[string] `json:"persistent_device_id"`

	// Browser or app user agent string. CamelCase alias: userAgent.
	UserAgent Opt[string] `json:"user_agent"`

	// Browser family (e.g. Chrome, Firefox, Safari). Must be sent explicitly - it
	// is not derived from user_agent. CamelCase alias: browserFamily.
	BrowserFamily Opt[string] `json:"browser_family"`

	// Browser version string. Must be sent explicitly. CamelCase alias:
	// browserVersion.
	BrowserVersion Opt[string] `json:"browser_version"`

	// Platform identifier (web, ios, android, macos, windows, linux). Must be sent
	// explicitly - it is not derived from user_agent.
	Platform Opt[string] `json:"platform"`

	// Operating system family (e.g. iOS, Android, Windows). CamelCase alias:
	// osFamily.
	OsFamily Opt[string] `json:"os_family"`

	// Operating system version string. CamelCase alias: osVersion.
	OsVersion Opt[string] `json:"os_version"`

	// Accept-Language header value. CamelCase alias: acceptLang.
	AcceptLanguage Opt[string] `json:"accept_language"`

	// Session identifier of the user current session. Stored in metadata. CamelCase
	// alias: sessionId.
	SessionID Opt[string] `json:"session_id"`

	// Age of the user session in milliseconds at transaction time. CamelCase alias:
	// sessionAgeMs.
	SessionAgeMs Opt[float64] `json:"session_age_ms"`

	// Network context with IP address and geo-location. A top-level ipInfo block is
	// also folded into this object.
	NetworkContext Opt[TransactionsCreateParamsSubjectDeviceContextNetworkContext] `json:"network_context"`
}

TransactionsCreateParamsSubjectDeviceContext: Device context captured at transaction time. browser_family and platform must be sent as explicit top-level keys - they are not derived from user_agent. The camelCase alias device is also accepted on the request.

func (TransactionsCreateParamsSubjectDeviceContext) MarshalJSON

MarshalJSON encodes the fields that are set.

type TransactionsCreateParamsSubjectDeviceContextNetworkContext

type TransactionsCreateParamsSubjectDeviceContextNetworkContext struct {
	// Client IP address. CamelCase alias: ip.
	IPAddress Opt[string] `json:"ip_address"`

	// Geo-resolved country of the IP (ISO 3166-1 alpha-3). CamelCase alias:
	// countryCode3.
	IPCountryCode Opt[string] `json:"ip_country_code"`

	// Geographic latitude of the IP. CamelCase alias: lat.
	Latitude Opt[float64] `json:"latitude"`

	// Geographic longitude of the IP. CamelCase alias: lon.
	Longitude Opt[float64] `json:"longitude"`
}

TransactionsCreateParamsSubjectDeviceContextNetworkContext: Network context with IP address and geo-location. A top-level ipInfo block is also folded into this object.

func (TransactionsCreateParamsSubjectDeviceContextNetworkContext) MarshalJSON

MarshalJSON encodes the fields that are set.

type TransactionsCreateParamsSubjectInstitutionDetails

type TransactionsCreateParamsSubjectInstitutionDetails struct {
	Name    Opt[string]         `json:"name"`
	Code    Opt[string]         `json:"code"`
	Address Opt[map[string]any] `json:"address"`
}

TransactionsCreateParamsSubjectInstitutionDetails: Institution details (for institutional subjects).

func (TransactionsCreateParamsSubjectInstitutionDetails) MarshalJSON

MarshalJSON encodes the fields that are set.

type TransactionsCreateParamsSubjectPaymentMethod

type TransactionsCreateParamsSubjectPaymentMethod struct {
	// Type of payment method: `bank_card`, `bank_account`, `crypto_wallet`,
	// `ewallet`, `unhosted_wallet`, `other`.
	MethodType Opt[string] `json:"method_type"`

	// Account identifier (e.g. IBAN, wallet address). For crypto screening, this
	// should contain the wallet address for this participant. Inbound
	// transaction-hash screening requires the service/customer deposit address on
	// the subject. Outbound screening uses the destination wallet on the
	// counterparty. On a crypto transfer on bitcoin or Lightning it may be a
	// Lightning payment request (BOLT11 invoice, BOLT12 offer, LNURL) or a
	// Lightning Address: Didit stores the payee it names as the account ("" when it
	// names none) and what the request says on the Travel Rule transfer's
	// `chain_details.lightning`. At most 255 characters once stored. On a crypto
	// transfer on bitcoin or Lightning it may be a Lightning payment request
	// (BOLT11 invoice, BOLT12 offer, LNURL) or a Lightning Address: Didit stores
	// the payee it names as the account ("" when it names none) and what the
	// request says on the Travel Rule transfer's `chain_details.lightning`. At most
	// 255 characters once stored.
	AccountID Opt[string] `json:"account_id"`

	// The destination tag or memo that is part of the wallet on a memo network
	// (XRP, XLM, EOS, ATOM, HBAR). On one shared exchange address each memo is its
	// own payment method. XRP: a destination tag, a whole number from 0 to
	// 4294967295 (a JSON number is accepted). XLM: a text memo of up to 28 bytes, a
	// 64-bit id or a 32-byte hash in hex. EOS: up to 256 bytes. ATOM: up to 256
	// characters. HBAR: up to 100 bytes. Bitcoin, EVM, Solana, Tron, Litecoin,
	// Bitcoin Cash, Dogecoin and Lightning wallets take no memo: one there is a
	// `400`. Alias: `destinationTag` or `destination_tag`.
	Memo Opt[string] `json:"memo"`

	// ISO 3166-1 alpha-3 country code of the issuer.
	IssuingCountry Opt[string] `json:"issuing_country"`
}

TransactionsCreateParamsSubjectPaymentMethod: Payment method used by the subject.

func (TransactionsCreateParamsSubjectPaymentMethod) MarshalJSON

MarshalJSON encodes the fields that are set.

type TransactionsCreateParamsTransactionCategory

type TransactionsCreateParamsTransactionCategory string

TransactionsCreateParamsTransactionCategory: Category of the transaction. CamelCase aliases (`travelRule`, `userPlatformEvent`, `gamblingBet`, …) are also accepted; the stored/echoed value is camelCase for multi-word categories.

TransactionsCreateParamsTransactionCategory is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionsCreateParamsTransactionCategoryFinance             TransactionsCreateParamsTransactionCategory = "finance"
	TransactionsCreateParamsTransactionCategoryKYC                 TransactionsCreateParamsTransactionCategory = "kyc"
	TransactionsCreateParamsTransactionCategoryTravelRule          TransactionsCreateParamsTransactionCategory = "travel_rule"
	TransactionsCreateParamsTransactionCategoryUserEvent           TransactionsCreateParamsTransactionCategory = "user_event"
	TransactionsCreateParamsTransactionCategoryAuditTrailEvent     TransactionsCreateParamsTransactionCategory = "audit_trail_event"
	TransactionsCreateParamsTransactionCategoryGamblingBet         TransactionsCreateParamsTransactionCategory = "gambling_bet"
	TransactionsCreateParamsTransactionCategoryGamblingLimitChange TransactionsCreateParamsTransactionCategory = "gambling_limit_change"
	TransactionsCreateParamsTransactionCategoryGamblingBonusChange TransactionsCreateParamsTransactionCategory = "gambling_bonus_change"
	TransactionsCreateParamsTransactionCategoryTravelRule2         TransactionsCreateParamsTransactionCategory = "travelRule"
)

Known values of TransactionsCreateParamsTransactionCategory.

type TransactionsCreateParamsTransactionDetails

type TransactionsCreateParamsTransactionDetails struct {
	// Direction of the transaction relative to the subject. Case-insensitive;
	// `in`/`out` are accepted as aliases. Echoed back uppercase
	// (`INBOUND`/`OUTBOUND`). Required.
	Direction TransactionsCreateParamsTransactionDetailsDirection `json:"direction"`

	// Transaction amount (up to 18 decimal places). Send it as a decimal string
	// (e.g. `"0.123456789012345678"`) when exact precision matters: a JSON number
	// is parsed as a binary float first, so digits beyond about 15 significant
	// digits are rounded before the amount is stored. Required.
	Amount float64 `json:"amount"`

	// Currency code. Any ISO 4217 alphabetic code is accepted (e.g. `EUR`, `USD`,
	// `NGN`), as is a crypto asset symbol (e.g. `BTC`). Prefer a
	// currently-circulating code. Not every accepted code has an exchange rate:
	// when none is available for the code (for example the ISO accounting unit
	// `XSU`, or a crypto symbol Didit does not price), automatic conversion fails
	// and `preferred_currency_amount` is returned null unless the request supplied
	// a pre-converted `amount_in_default_currency`. Required.
	Currency string `json:"currency"`

	// Whether the currency is `fiat` or `crypto`.
	CurrencyKind Opt[string] `json:"currency_kind"`

	// Pre-converted amount in the default currency. If omitted, automatic FX
	// conversion is attempted.
	AmountInDefaultCurrency Opt[float64] `json:"amount_in_default_currency"`

	// The default currency code for the converted amount. Any currently-circulating
	// ISO 4217 code.
	DefaultCurrency Opt[string] `json:"default_currency"`

	// Free-text payment reference or memo.
	PaymentDetails Opt[string] `json:"payment_details"`

	// External payment system reference. For crypto AML transaction-hash screening,
	// send the blockchain transaction hash and also provide
	// `subject.payment_method.account_id` with the related address.
	PaymentReferenceID Opt[string] `json:"payment_reference_id"`

	// Sub-type of the transaction, e.g. `deposit`, `withdrawal`, `transfer`.
	ActionType Opt[string] `json:"action_type"`

	// Crypto network selection, separate from currency (the asset symbol).
	// Recording a custom token symbol does not guarantee transaction-hash coverage
	// for its contract.
	CryptoParams Opt[TransactionsCreateParamsTransactionDetailsCryptoParams] `json:"crypto_params"`
}

TransactionsCreateParamsTransactionDetails: Core financial details of the transaction.

func (TransactionsCreateParamsTransactionDetails) MarshalJSON

MarshalJSON encodes the fields that are set.

type TransactionsCreateParamsTransactionDetailsCryptoParams

type TransactionsCreateParamsTransactionDetailsCryptoParams struct {
	// Actual network used for screening. Managed screening supports BTC, ETH, LTC,
	// XRP, BCH, DOGE, TRX, SOL, MATIC, BNB, BASE (Base), OP (Optimism) and ARB
	// (Arbitrum One). Always specify this for multi-network tokens. When it is
	// missing for USDT, USDC or ETH sent with a 0x transaction hash, Didit looks
	// the hash up on Ethereum, BNB Chain, Polygon, Base, Arbitrum and Optimism and
	// screens it on the network where it is found; if no network has it, the
	// transaction is not screened and custom_values.aml_screening_status is FAILED
	// with the reason in custom_values.aml_screening_error. When it is missing for
	// USDT or USDC screened by wallet (no transaction hash), a Tron address is
	// screened on Tron, a Solana address on Solana, and a 0x address on the first
	// of those six networks where it has sent a transaction or holds the token, or
	// on Ethereum when it is active on none of them. Connected-provider coverage
	// varies; LIGHTNING requires a supported connected provider.
	CryptoChain Opt[string] `json:"crypto_chain"`
}

TransactionsCreateParamsTransactionDetailsCryptoParams: Crypto network selection, separate from currency (the asset symbol). Recording a custom token symbol does not guarantee transaction-hash coverage for its contract.

func (TransactionsCreateParamsTransactionDetailsCryptoParams) MarshalJSON

MarshalJSON encodes the fields that are set.

type TransactionsCreateParamsTransactionDetailsDirection

type TransactionsCreateParamsTransactionDetailsDirection string

TransactionsCreateParamsTransactionDetailsDirection: Direction of the transaction relative to the subject. Case-insensitive; `in`/`out` are accepted as aliases. Echoed back uppercase (`INBOUND`/`OUTBOUND`).

TransactionsCreateParamsTransactionDetailsDirection is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionsCreateParamsTransactionDetailsDirectionInbound  TransactionsCreateParamsTransactionDetailsDirection = "inbound"
	TransactionsCreateParamsTransactionDetailsDirectionOutbound TransactionsCreateParamsTransactionDetailsDirection = "outbound"
	TransactionsCreateParamsTransactionDetailsDirectionIn       TransactionsCreateParamsTransactionDetailsDirection = "in"
	TransactionsCreateParamsTransactionDetailsDirectionOut      TransactionsCreateParamsTransactionDetailsDirection = "out"
)

Known values of TransactionsCreateParamsTransactionDetailsDirection.

type TransactionsCreateParamsTravelRuleDetails

type TransactionsCreateParamsTravelRuleDetails struct {
	// Required whenever you send travel_rule_details. One of the Travel Rule
	// transfer statuses (for example AWAITING_COUNTERPARTY, COMPLETED,
	// NOT_APPLICABLE); lowercase and camelCase spellings and the legacy values
	// UNKNOWN, COMPLIANT, PENDING_ACTION, PENDING_COUNTERPARTY, FAILED and EXEMPT
	// are also accepted and mapped. Any other value returns 400. Required.
	Status           string      `json:"status"`
	Protocol         Opt[string] `json:"protocol"`
	Required         Opt[bool]   `json:"required"`
	ObligationsCount Opt[int64]  `json:"obligations_count"`

	// Originator party, as flat fields or one IVMS 101 person. For your user with
	// an approved KYC verification, Didit replaces the fields the verification
	// holds with the verified values (see `metadata.originator_provenance`). It
	// must be an object: anything else is a `400`. On a memo network a `memo` key
	// names the originator wallet's memo or tag.
	OriginatorData Opt[map[string]any] `json:"originator_data"`

	// Beneficiary party, as flat fields or one IVMS 101 person. It must be an
	// object: anything else is a `400`. To route the transfer, Didit reads
	// `wallet_address` (an empty one is filled from
	// `counterparty.payment_method.account_id`), `chain` (filled from
	// `transaction_details.crypto_params.crypto_chain` or the `currency` when that
	// names a supported chain), `name` (falling back to `counterparty.full_name`),
	// `travel_address`, `counterparty_vasp_name`, `counterparty_vasp_lei` and
	// `counterparty_vasp_email`. On a memo network `memo` names the beneficiary
	// wallet's memo or tag; `wallet_address` and `memo` win over the counterparty's
	// payment method.
	BeneficiaryData Opt[map[string]any] `json:"beneficiary_data"`
	Metadata        Opt[map[string]any] `json:"metadata"`

	// Optional, UTXO chains only (BTC, LTC, BCH, DOGE). The transaction's inputs
	// and outputs, from which Didit infers the originator wallet and the
	// beneficiary output when you do not declare them.
	Utxo Opt[TravelRuleUtxo] `json:"utxo"`

	// An IVMS 101 originator block: `originatorPersons` (one `naturalPerson` or
	// `legalPerson`; a legal person makes the party a company) and `accountNumber`
	// (wallet addresses). Used for `originator_data` when that object is empty. A
	// malformed block answers 400 keyed by its path, for example
	// `originator.originatorPersons`.
	Originator Opt[map[string]any] `json:"originator"`

	// An IVMS 101 beneficiary block: `beneficiaryPersons` (one `naturalPerson` or
	// `legalPerson`; a legal person makes the party a company) and `accountNumber`
	// (wallet addresses). Used for `beneficiary_data` when that object is empty. A
	// malformed block answers 400 keyed by its path, for example
	// `beneficiary.beneficiaryPersons`.
	Beneficiary Opt[map[string]any] `json:"beneficiary"`

	// The `originator` and `beneficiary` blocks wrapped in one IVMS 101 object
	// (`IVMS101` is accepted too). Top-level blocks win over the wrapper's.
	Ivms101 Opt[map[string]any] `json:"ivms101"`
}

TransactionsCreateParamsTravelRuleDetails: Travel Rule data. When Travel Rule is enabled and transaction_category is travel_rule, Didit runs the exchange itself: it ignores status, protocol, required and obligations_count, and uses originator_data, beneficiary_data and metadata. Otherwise Didit stores these values as a passive Travel Rule record. While Travel Rule is on, an outbound transfer at or above your threshold must carry what its regime requires (EU TFR or FATF Recommendation 16), checked on the sides you send: a missing field answers 400 under `travel_rule_details.originator_data` or `travel_rule_details.beneficiary_data`, for example "EU TFR requires the originator name."

func (TransactionsCreateParamsTravelRuleDetails) MarshalJSON

MarshalJSON encodes the fields that are set.

type TransactionsCreateSDKTokenParams

type TransactionsCreateSDKTokenParams struct {
	// Your internal identifier for the end user this token is scoped to. Enforced
	// as the subject identity of every transaction submitted with the token.
	// Required.
	VendorData string `json:"vendor_data"`

	// Token lifetime in seconds. Defaults to 900 (15 minutes); maximum 86400 (24
	// hours).
	TTLSeconds Opt[int64] `json:"ttl_seconds"`

	// Maximum number of successful submissions allowed with this token. Omit or
	// null for unlimited uses within the TTL.
	MaxUses Opt[int64] `json:"max_uses"`
}

TransactionsCreateSDKTokenParams holds the parameters of Client.Transactions.CreateSDKToken.

func (TransactionsCreateSDKTokenParams) MarshalJSON

func (r TransactionsCreateSDKTokenParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionsCreateSDKTokenResponse

type TransactionsCreateSDKTokenResponse struct {
	// The scoped transaction token to pass to the SDK.
	SDKToken string `json:"sdk_token"`

	// When the token stops being accepted.
	ExpiresAt time.Time `json:"expires_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionsCreateSDKTokenResponse is a response object.

func (*TransactionsCreateSDKTokenResponse) UnmarshalJSON

func (r *TransactionsCreateSDKTokenResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionsCreateSDKTokenResponse leniently.

type TransactionsListParams

type TransactionsListParams struct {
	// Page size. Defaults to 50 when omitted. There is no enforced maximum, but
	// keep pages small for latency.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based offset of the first record to return. Prefer following the `next`
	// URL from the previous page.
	Offset Opt[int64] `json:"-" query:"offset"`

	// Return only transactions whose Travel Rule transfer is in this exact status
	// (for example `ON_HOLD` or `AWAITING_COUNTERPARTY`). `count` follows this
	// filter; `total_transactions` still counts every transaction in the
	// application.
	TravelRuleStatus Opt[string] `json:"-" query:"travel_rule_status"`
}

TransactionsListParams holds the parameters of Client.Transactions.List.

func (TransactionsListParams) MarshalJSON

func (r TransactionsListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionsListRelatedParams

type TransactionsListRelatedParams struct {
	// Number of transactions per page. Defaults to 50. A value that is not a
	// positive integer falls back to 50; a value above 1000000 returns `400`.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based position of the first transaction to return. Prefer following
	// `next`. A value that is not a whole number falls back to 0; a value above
	// 1000000 returns `400`.
	Offset Opt[int64] `json:"-" query:"offset"`
}

TransactionsListRelatedParams holds the parameters of Client.Transactions.ListRelated.

func (TransactionsListRelatedParams) MarshalJSON

func (r TransactionsListRelatedParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionsListResponseResults

type TransactionsListResponseResults struct {
	// Stable Didit transaction identifier. Use as `{transaction_id}` in
	// detail/notes/related calls.
	UUID string `json:"uuid"`

	// Application-scoped sequential transaction number shown in Console (e.g.
	// `4123`).
	TransactionNumber int64 `json:"transaction_number"`

	// Customer-provided identifier from the create call (max 128 chars). Unique per
	// application.
	TxnID string `json:"txn_id"`

	// Top-level category as stored: `finance`, `kyc`, `travelRule`,
	// `userPlatformEvent`, `gamblingBet`, `gamblingLimitChange`,
	// `gamblingBonusChange`, `auditTrailEvent`. Note multi-word values are echoed
	// back in camelCase even when submitted in snake_case.
	TransactionType string `json:"transaction_type"`

	// Sub-type within the category (e.g. `deposit`, `withdrawal`, `transfer`).
	ActionType string `json:"action_type"`

	// Current monitoring verdict.
	Status TransactionsListResponseResultsStatus `json:"status"`

	// Direction relative to the subject. Stored uppercase regardless of the casing
	// submitted.
	Direction TransactionsListResponseResultsDirection `json:"direction"`

	// Transaction amount as a decimal string with trailing zeros stripped (e.g.
	// `"1500"`, `"0.5"`, `"0.123456789012345678"`). Up to 18 decimal places.
	Amount string `json:"amount"`

	// Currency code of `amount`. Any ISO 4217 alphabetic code is accepted (e.g.
	// `EUR`, `USD`, `NGN`), as is a crypto asset symbol (e.g. `BTC`). Prefer a
	// currently-circulating code. Not every accepted code has an exchange rate:
	// when none is available for the code (for example the ISO accounting unit
	// `XSU`, or a crypto symbol Didit does not price), automatic conversion fails
	// and `preferred_currency_amount` is returned null unless the request supplied
	// a pre-converted `amount_in_default_currency`.
	Currency string `json:"currency"`

	// `amount` converted to the application's preferred currency, when available.
	PreferredCurrencyAmount string `json:"preferred_currency_amount"`

	// Preferred currency code used for `preferred_currency_amount` - the
	// application's base currency, any currently-circulating ISO 4217 code. A code
	// with no available exchange rate leaves `preferred_currency_amount` null
	// unless the request supplied a pre-converted `amount_in_default_currency`.
	PreferredCurrencyCode string `json:"preferred_currency_code"`

	// Free-text payment reference or memo from the submission.
	PaymentDetails string `json:"payment_details"`

	// Risk score (typically 0-100). Higher = riskier.
	Score int64 `json:"score"`

	// Categorical risk severity set by rules/providers (`UNKNOWN`, `LOW`, `MEDIUM`,
	// `HIGH`, `CRITICAL`). `null` until something sets it.
	Severity TransactionsListResponseResultsSeverity `json:"severity"`

	// Full name of the `APPLICANT` party.
	SubjectName string `json:"subject_name"`

	// Your internal user/business identifier for the applicant.
	SubjectVendorData string `json:"subject_vendor_data"`

	// Country code of the applicant, from the submitted `address.country`
	// (typically ISO 3166-1 alpha-3).
	SubjectCountry string `json:"subject_country"`

	// Full name of the `COUNTERPARTY` party, if any.
	CounterpartyName string `json:"counterparty_name"`

	// Your internal identifier for the counterparty.
	CounterpartyVendorData string `json:"counterparty_vendor_data"`

	// Country code of the counterparty, from the submitted `address.country`.
	CounterpartyCountry string `json:"counterparty_country"`

	// Tags attached to the transaction (manually or by rules).
	Tags []TransactionsListResponseResultsTags `json:"tags"`

	// When the transaction occurred (from `transaction_at` at create time).
	TxnDate time.Time `json:"txn_date"`

	// When Didit recorded the submission.
	CreatedAt time.Time `json:"created_at"`

	// Machine-readable reason for the current `status` (e.g. `WALLET_HIGH_RISK`).
	DecisionReasonCode string `json:"decision_reason_code"`

	// Human-readable label for `decision_reason_code`.
	DecisionReasonLabel string `json:"decision_reason_label"`

	// Display name of the Console reviewer assigned to this transaction.
	AssignedToName string `json:"assigned_to_name"`

	// Status of the transaction's Travel Rule transfer (for example `COMPLETED`),
	// or `null` when it has none.
	TravelRuleStatus string `json:"travel_rule_status"`

	// The transaction's Travel Rule transfer, the same block as `travel_rule` on
	// `GET /v3/transactions/{transaction_id}/`, or `null` when the transaction has
	// none.
	TravelRule TransactionTravelRule `json:"travel_rule"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionsListResponseResults is a response object.

func (*TransactionsListResponseResults) UnmarshalJSON

func (r *TransactionsListResponseResults) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionsListResponseResults leniently.

type TransactionsListResponseResultsDirection

type TransactionsListResponseResultsDirection string

TransactionsListResponseResultsDirection: Direction relative to the subject. Stored uppercase regardless of the casing submitted.

TransactionsListResponseResultsDirection is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionsListResponseResultsDirectionInbound  TransactionsListResponseResultsDirection = "INBOUND"
	TransactionsListResponseResultsDirectionOutbound TransactionsListResponseResultsDirection = "OUTBOUND"
)

Known values of TransactionsListResponseResultsDirection.

type TransactionsListResponseResultsSeverity

type TransactionsListResponseResultsSeverity string

TransactionsListResponseResultsSeverity: Categorical risk severity set by rules/providers (`UNKNOWN`, `LOW`, `MEDIUM`, `HIGH`, `CRITICAL`). `null` until something sets it.

TransactionsListResponseResultsSeverity is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionsListResponseResultsSeverityUnknown  TransactionsListResponseResultsSeverity = "UNKNOWN"
	TransactionsListResponseResultsSeverityLow      TransactionsListResponseResultsSeverity = "LOW"
	TransactionsListResponseResultsSeverityMedium   TransactionsListResponseResultsSeverity = "MEDIUM"
	TransactionsListResponseResultsSeverityHigh     TransactionsListResponseResultsSeverity = "HIGH"
	TransactionsListResponseResultsSeverityCritical TransactionsListResponseResultsSeverity = "CRITICAL"
)

Known values of TransactionsListResponseResultsSeverity.

type TransactionsListResponseResultsStatus

type TransactionsListResponseResultsStatus string

TransactionsListResponseResultsStatus: Current monitoring verdict.

TransactionsListResponseResultsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionsListResponseResultsStatusApproved     TransactionsListResponseResultsStatus = "APPROVED"
	TransactionsListResponseResultsStatusInReview     TransactionsListResponseResultsStatus = "IN_REVIEW"
	TransactionsListResponseResultsStatusDeclined     TransactionsListResponseResultsStatus = "DECLINED"
	TransactionsListResponseResultsStatusAwaitingUser TransactionsListResponseResultsStatus = "AWAITING_USER"
)

Known values of TransactionsListResponseResultsStatus.

type TransactionsListResponseResultsTags

type TransactionsListResponseResultsTags struct {
	UUID        string `json:"uuid"`
	Name        string `json:"name"`
	Color       string `json:"color"`
	Description string `json:"description"`

	// Whether the tag is a Didit preset or a custom tag.
	Source TransactionsListResponseResultsTagsSource `json:"source"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TransactionsListResponseResultsTags is a response object.

func (*TransactionsListResponseResultsTags) UnmarshalJSON

func (r *TransactionsListResponseResultsTags) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TransactionsListResponseResultsTags leniently.

type TransactionsListResponseResultsTagsSource

type TransactionsListResponseResultsTagsSource string

TransactionsListResponseResultsTagsSource: Whether the tag is a Didit preset or a custom tag.

TransactionsListResponseResultsTagsSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionsListResponseResultsTagsSourceDidit  TransactionsListResponseResultsTagsSource = "didit"
	TransactionsListResponseResultsTagsSourceCustom TransactionsListResponseResultsTagsSource = "custom"
)

Known values of TransactionsListResponseResultsTagsSource.

type TransactionsNotesCreateParams

type TransactionsNotesCreateParams struct {
	// Plain-text note. Leading and trailing whitespace is trimmed and a blank note
	// is rejected. No length limit. Required.
	Note string `json:"note"`

	// Emails of members of your organization to mention. Each must be a valid email
	// of an organization member.
	MentionedEmails Opt[[]string] `json:"mentioned_emails"`
}

TransactionsNotesCreateParams holds the parameters of Client.Transactions.Notes.Create.

func (TransactionsNotesCreateParams) MarshalJSON

func (r TransactionsNotesCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionsNotesListParams

type TransactionsNotesListParams struct {
	// Number of notes per page. Defaults to 50. A value that is not a positive
	// integer falls back to 50; a value above 1000000 returns `400`.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based position of the first note to return. Prefer following `next`. A
	// value that is not a whole number falls back to 0; a value above 1000000
	// returns `400`.
	Offset Opt[int64] `json:"-" query:"offset"`
}

TransactionsNotesListParams holds the parameters of Client.Transactions.Notes.List.

func (TransactionsNotesListParams) MarshalJSON

func (r TransactionsNotesListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionsNotesService

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

TransactionsNotesService holds the transactions notes operations. Use it through Client.Transactions.Notes.

func (*TransactionsNotesService) Create

Create: Create transaction note.

Add a plain-text note to a monitored transaction's review timeline, where Console reviewers see it. A note is context, not a decision: the transaction's `status`, `score` and alerts do not change, no webhook is sent, and nothing is billed. The transaction's `activities` gain a `TRANSACTION_NOTE_ADDED` entry.

Notes created with an API key have no author: `actor_email` and `actor_name` are `null`, so put the author in the text if you need it. Every address in `mentioned_emails` must belong to a member of your organization, otherwise the whole request fails with `400`; mentions are stored lower-cased and de-duplicated, and this endpoint does not notify the mentioned members.

Each call creates a new note, so retrying a timed-out request can add it twice: list the notes before retrying. There is no API endpoint to edit or remove a note. A scoped API key needs `transactions: write`; a key limited to some workflows or to approved sessions cannot call this endpoint.

POST /v3/transactions/{transaction_id}/notes/

func (*TransactionsNotesService) List

List: List transaction notes.

List the notes on one monitored transaction, newest first (`created_at` descending): notes you add through the API, notes and status changes reviewers make in the Console, and notes Didit adds automatically (a rule's `add_note` action, or a problem creating the user-action verification session), which carry `actor_name` `Rule Engine`. `metadata` tells the note types apart.

Paginated with `limit` and `offset`. `count` is exact up to 100 and capped at 100 above that, so follow `next` until it is `null` instead of computing pages from `count`. This is a read with no side effects.

A scoped API key needs `transactions: read`; a key limited to some workflows or to approved sessions cannot call this endpoint. Reviewers see the same list under **Notes** on the [transaction detail](https://docs.didit.me/transaction-monitoring/console#transaction-detail).

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/transactions/{transaction_id}/notes/

func (*TransactionsNotesService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

type TransactionsRulesListLibraryParams

type TransactionsRulesListLibraryParams struct {
	// Filter by bundle, e.g. finance, aml_ctf, crypto_monitoring, travel_rule
	Bundle Opt[string] `json:"-" query:"bundle"`

	// Filter by category
	Category Opt[string] `json:"-" query:"category"`

	// Case-insensitive match against title and description
	Search Opt[string] `json:"-" query:"search"`

	// Page size
	Limit Opt[int64] `json:"-" query:"limit"`

	// Page offset
	Offset Opt[int64] `json:"-" query:"offset"`
}

TransactionsRulesListLibraryParams holds the parameters of Client.Transactions.Rules.ListLibrary.

func (TransactionsRulesListLibraryParams) MarshalJSON

func (r TransactionsRulesListLibraryParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionsRulesListParams

type TransactionsRulesListParams struct {
	// PRESET or CUSTOM
	Source Opt[TransactionsRulesListParamsSource] `json:"-" query:"source"`

	// Filter by rule category
	Category Opt[string] `json:"-" query:"category"`

	// ACTIVE, DISABLED or TEST
	Mode Opt[TransactionsRulesListParamsMode] `json:"-" query:"mode"`

	// Filter presets by bundle
	Bundle Opt[string] `json:"-" query:"bundle"`

	// Case-insensitive match against title and description
	Search Opt[string] `json:"-" query:"search"`

	// Comma-separated ordering fields, default source,-run_count
	Ordering Opt[string] `json:"-" query:"ordering"`

	// Page size
	Limit Opt[int64] `json:"-" query:"limit"`

	// Page offset
	Offset Opt[int64] `json:"-" query:"offset"`
}

TransactionsRulesListParams holds the parameters of Client.Transactions.Rules.List.

func (TransactionsRulesListParams) MarshalJSON

func (r TransactionsRulesListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TransactionsRulesListParamsMode

type TransactionsRulesListParamsMode string

TransactionsRulesListParamsMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionsRulesListParamsModeActive   TransactionsRulesListParamsMode = "ACTIVE"
	TransactionsRulesListParamsModeDisabled TransactionsRulesListParamsMode = "DISABLED"
	TransactionsRulesListParamsModeTest     TransactionsRulesListParamsMode = "TEST"
)

Known values of TransactionsRulesListParamsMode.

type TransactionsRulesListParamsSource

type TransactionsRulesListParamsSource string

TransactionsRulesListParamsSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TransactionsRulesListParamsSourcePreset TransactionsRulesListParamsSource = "PRESET"
	TransactionsRulesListParamsSourceCustom TransactionsRulesListParamsSource = "CUSTOM"
)

Known values of TransactionsRulesListParamsSource.

type TransactionsRulesService

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

TransactionsRulesService holds the transactions rules operations. Use it through Client.Transactions.Rules.

func (*TransactionsRulesService) Backtest

Backtest: Backtest rule configuration.

Evaluate a hypothetical rule configuration against your recent transactions (most recent first, up to the backtest cap) without creating a rule or touching any transaction. Use it before activating a rule to see how often it would have matched and how many subjects it would have affected.

POST /v3/transactions/rules/backtest/

func (*TransactionsRulesService) Create

Create: Create rule.

Create a CUSTOM transaction-monitoring rule. Titles are unique per application (duplicate -> 400). A `change_status` action targeting `AWAITING_USER` must carry `workflow_id`. Rules created in ACTIVE mode apply to new transactions immediately - the recommended workflow is create in TEST mode, backtest, then switch mode to ACTIVE.

POST /v3/transactions/rules/

func (*TransactionsRulesService) Delete

func (r *TransactionsRulesService) Delete(ctx context.Context, ruleUUID string, opts ...option.RequestOption) error

Delete: Delete rule.

Delete a CUSTOM rule. Deletion is immediate and permanent: the rule stops evaluating for new transactions and disappears from listings, while past rule runs on already-evaluated transactions keep their recorded results. Library rules cannot be deleted - uninstall them via the install endpoint instead (they can always be reinstalled from the library).

DELETE /v3/transactions/rules/{rule_uuid}/

func (*TransactionsRulesService) InstallLibrary

InstallLibrary: Install library rules.

Install one or more presets onto the application, by `library_keys` or a whole `bundle`. An installed preset is active at once while transaction monitoring is on, and disabled otherwise; already-installed keys are skipped. A library rule whose conditions read data the rules engine cannot evaluate yet is withheld until it can run. A request that names one in `library_keys` answers 400 and installs nothing ("These library rules cannot run yet: their conditions read data the rules engine cannot evaluate." followed by the keys), and a `bundle` install skips it. A withheld rule comes back on its own once its conditions can be evaluated. A `library_keys` entry that is not in the library is skipped, not refused.

POST /v3/transactions/rules/install/

func (*TransactionsRulesService) List

List: List rules.

List the application's transaction-monitoring rules: your custom rules plus any library presets you have installed. Filter by source, category, mode, bundle or free-text search; order with `ordering` (run_count, approved_pct, reviewed_pct, declined_pct, latest_triggered_at, title, created_at, source, each with an optional `-` prefix).

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/transactions/rules/

func (*TransactionsRulesService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*TransactionsRulesService) ListLibrary

ListLibrary: List rule library.

Browse the full preset rule library (150+ rules) with each entry's complete configuration and an `is_installed` flag for this application. Filter by bundle, category, or free-text search. A library rule whose conditions read data the rules engine cannot evaluate yet is withheld until it can run. Withheld rules are not listed.

It returns one page; ListLibraryAutoPaging iterates over every item of every page.

GET /v3/transactions/rules/library/

func (*TransactionsRulesService) ListLibraryAutoPaging

ListLibraryAutoPaging iterates over every item of every page of ListLibrary, fetching pages as needed.

func (*TransactionsRulesService) Retrieve

Retrieve: Get rule.

Retrieve one rule with its full configuration and execution counters.

GET /v3/transactions/rules/{rule_uuid}/

func (*TransactionsRulesService) UninstallLibrary

UninstallLibrary: Uninstall library rules.

Remove installed presets from the application, by `library_keys` or a whole `bundle`. Uninstalled presets stop evaluating immediately and can be reinstalled from the library at any time.

DELETE /v3/transactions/rules/install/

func (*TransactionsRulesService) Update

Update: Update rule.

Partially update a rule. Custom rules accept every configuration field. Library (PRESET) rules accept only `mode` - use it to activate, disable, or switch a preset to TEST; any other field returns 400. An installed copy of a withheld library rule is switched off: setting its `mode` to anything but `DISABLED` answers 400 ("This library rule cannot run yet: its conditions read data the rules engine cannot evaluate.").

PATCH /v3/transactions/rules/{rule_uuid}/

type TransactionsService

type TransactionsService struct {
	Notes      *TransactionsNotesService
	Rules      *TransactionsRulesService
	TravelRule *TransactionsTravelRuleService
	// contains filtered or unexported fields
}

TransactionsService holds the transactions operations. Use it through Client.Transactions.

func (*TransactionsService) Create

Create: Create transaction.

Submit a transaction for synchronous AML/risk monitoring. The transaction is created `APPROVED`, then your rules (and crypto screening, when applicable) run inline and may flip the returned `status` to `IN_REVIEW` or `DECLINED`. **`transaction_id` is your idempotency key** (max 128 chars, unique per app); reusing it returns 400. A `transaction.created` webhook is dispatched on success for live applications. Sandbox applications are not billed and do not emit `transaction.created` or `transaction.status.updated` webhooks. Sandbox Travel Rule exchanges do emit `travel_rule.status.updated` webhooks with `environment: sandbox`. A Travel Rule transfer is stored and returned before any counterparty is contacted: `travel_rule.status` comes back `AWAITING_COUNTERPARTY` (or `NOT_APPLICABLE` below your threshold, `UNCONFIRMED_OWNERSHIP` for a declared self-hosted wallet, `COMPLETED` when the other wallet is your own verified wallet) and `travel_rule.protocol` is null. Didit then chooses the rail and sends the exchange, and every later status change of the transfer, including `COUNTERPARTY_VASP_NOT_FOUND` when no rail reaches the counterparty, arrives as a `travel_rule.status.updated` webhook. Your rules run again when the rail or the status changes.

POST /v3/transactions/

func (*TransactionsService) CreateSDKToken

CreateSDKToken: Mint an SDK transaction token.

Mint a short-lived scoped token your app passes to the Didit SDKs so they can submit transactions directly from the end-user's device via `POST /v1/transactions/`. The token is bound to one `vendor_data` (your user id): every transaction submitted with it has its subject identity enforced server-side from that binding, so a tampered client cannot submit on behalf of another user. Mint tokens from your backend - never ship the API key itself in an app. camelCase aliases (`vendorData`, `ttlSeconds`, `maxUses`) are also accepted.

POST /v3/transactions/sdk-token/

func (*TransactionsService) GeneratePDF

func (r *TransactionsService) GeneratePDF(ctx context.Context, transactionUUID string, opts ...option.RequestOption) (*http.Response, error)

GeneratePDF: Download a transaction PDF report.

Render one monitored transaction as a PDF report: overview and verdict, parties and payment methods, custom properties, alerts and rule runs, screening and Travel Rule results, the network summary, the cost breakdown, up to 50 related transactions and the 20 most recent activity entries. The body is the PDF itself (`application/pdf`), not JSON.

The report is rendered from the transaction's current data on every call, so request it again after a status change. Nothing is stored and nothing is billed. Rendering can take a few seconds, so use a generous client timeout.

This endpoint lives on an application-scoped path: put your organization ID and the ID of the application your API key belongs to in the URL ([find your organization ID](https://docs.didit.me/getting-started/api-authentication#find-your-organization-id)). A PDF report counts as media: a scoped API key needs `media: read` and `transactions: read`, and a key limited to some workflows or to approved sessions cannot call it.

The response is a file (application/pdf). Read it from the returned response's body and close it.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/transactions/{transaction_uuid}/pdf/

func (*TransactionsService) List

List: List transactions.

Paginated list of monitored transactions, newest first (`txn_date` desc). `count` is capped at 100; use `total_transactions` for the true row count. This endpoint does not support filtering or search parameters.

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/transactions/

func (*TransactionsService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*TransactionsService) ListNetworks

func (r *TransactionsService) ListNetworks(ctx context.Context, transactionUUID string, opts ...option.RequestOption) (*EntityNetworkMembershipList, error)

ListNetworks: List networks for a transaction.

List the networks the transaction's backing KYC/KYB subject belongs to (resolved through the transaction's session or business session).

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/transactions/{transaction_uuid}/networks/

func (*TransactionsService) ListPartyNetworks

func (r *TransactionsService) ListPartyNetworks(ctx context.Context, transactionUUID string, transactionPartyUUID string, opts ...option.RequestOption) (*EntityNetworkMembershipList, error)

ListPartyNetworks: List networks for a transaction party.

List the networks a transaction party (remitter, beneficiary, or counterparty) belongs to, resolved through the party itself rather than through the transaction's backing session.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/transactions/{transaction_uuid}/parties/{transaction_party_uuid}/networks/

func (*TransactionsService) ListRelated

ListRelated: List related transactions.

List the other transactions in your application that involve the same people or companies as this one. A transaction is related when any of its parties, in any role, has the same `vendor_data` as one of this transaction's parties. The transaction itself is never returned, and parties without `vendor_data` are ignored: when none of this transaction's parties has one, the result is always empty.

Results use the summary shape of `GET /v3/transactions/`, newest first (`txn_date`, then `created_at`). Paginated with `limit` and `offset`; `count` is exact up to 100 and capped at 100 above that, so follow `next` until it is `null`.

A scoped API key needs `transactions: read`; a key limited to some workflows or to approved sessions cannot call this endpoint. Send the same `vendor_data` for the same person or company on every [transaction](https://docs.didit.me/transaction-monitoring/transactions#subject-and-counterparty) to make this list complete.

It returns one page; ListRelatedAutoPaging iterates over every item of every page.

GET /v3/transactions/{transaction_id}/related/

func (*TransactionsService) ListRelatedAutoPaging

func (r *TransactionsService) ListRelatedAutoPaging(ctx context.Context, transactionID string, params TransactionsListRelatedParams, opts ...option.RequestOption) *PageIterator[TransactionSummary]

ListRelatedAutoPaging iterates over every item of every page of ListRelated, fetching pages as needed.

func (*TransactionsService) Retrieve

func (r *TransactionsService) Retrieve(ctx context.Context, transactionID string, opts ...option.RequestOption) (*TransactionDetail, error)

Retrieve: Get transaction.

Retrieve the full monitoring record for one transaction: parties, score/severity, rule runs, alerts, Travel Rule outcome, remediation session.

GET /v3/transactions/{transaction_id}/

type TransactionsTravelRuleService

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

TransactionsTravelRuleService holds the transactions travel_rule operations. Use it through Client.Transactions.TravelRule.

func (*TransactionsTravelRuleService) ConfirmOwnership

ConfirmOwnership: Confirm or deny wallet ownership.

Resolve a transfer that waits on wallet ownership: call it on your own side of the transfer when it is UNCONFIRMED_OWNERSHIP, or when it is an inbound transfer in ON_HOLD. Confirming marks the matching wallet address book entry as ownership-verified (for an inbound ON_HOLD transfer with no entry, Didit creates one from beneficiary_data.wallet_address) and runs the beneficiary name match on both sides of the transfer; denying declines both sides. An inbound transfer whose deposit already settled moves on to FINISHED when the match succeeds. When the counterparty wallet was declared self-hosted (counterparty.payment_method.method_type: unhosted_wallet), confirming records that the customer verified who controls that wallet and completes the transfer (COMPLETED) in both directions, or FINISHED for an inbound deposit whose on-chain hash is already known. The wallet verified is the counterparty's: the destination of an outbound withdrawal, or the source (originator's wallet) of an inbound deposit. If it is not in your wallet address book yet, Didit adds it as ownership-verified under the counterparty's name; if the book already holds it under a different holder name, the transfer moves to COUNTERPARTY_MISMATCHED_DATA. For an inbound TRP transfer in UNCONFIRMED_OWNERSHIP, ON_HOLD or COUNTERPARTY_MISMATCHED_DATA, Didit sends your decision to the originating VASP instead: approving returns the payment address (wallet_address, or the matched entry's address) and moves the transfer to COMPLETED, and denying declines it. The same call also decides an inbound transfer that a GTR or Sygna Bridge counterparty sent and that waits for your review (`UNCONFIRMED_OWNERSHIP`, `ON_HOLD` or `COUNTERPARTY_MISMATCHED_DATA`): `confirmed: true` approves it (pass `wallet_address` when the transfer names none) and `confirmed: false` declines it, and the network is answered after the response, with retries. VerifyVASP takes its answer when it asks, so a VerifyVASP transfer that would need your review is declined at once and cannot be decided later.

POST /v3/transactions/{transaction_id}/travel-rule/ownership/

func (*TransactionsTravelRuleService) CreateMessage

CreateMessage: Send a Travel Rule message or document request.

Sends a message or a document request to the counterparty VASP. Works on INTERNAL transfers (the other Didit customer sees it on its side of the pair) and EMAIL transfers (the counterparty is emailed and answers in the pickup portal). A transfer over TRP, GTR, TRUST, VerifyVASP or Sygna carries no messages, because those protocols have none. Limits: 100 messages per transfer, 5000 characters per body, 10 requested documents, 5 files of 10 MB each.

POST /v3/transactions/{transaction_id}/travel-rule/messages/

func (*TransactionsTravelRuleService) ListMessages

func (r *TransactionsTravelRuleService) ListMessages(ctx context.Context, transactionID string, opts ...option.RequestOption) ([]TravelRuleMessage, error)

ListMessages: List Travel Rule messages.

Messages and document requests exchanged with the counterparty VASP about this transfer.

GET /v3/transactions/{transaction_id}/travel-rule/messages/

func (*TransactionsTravelRuleService) TriggerTestVASPInbound

TriggerTestVASPInbound: Trigger an inbound transfer from the Didit Test VASP (sandbox).

Sandbox applications only. The Didit Test VASP sends your application an inbound Travel Rule transfer, so you can exercise the receiving side of an exchange end to end before going live. The transfer is booked and decided by the same logic a real inbound transfer from a network runs against your wallet address book, so the inbox, the decision and the wallet ownership flow behave as they do live. Nothing leaves Didit. A live application receives 400. Send the same `reference` again to get the transfer the first call booked instead of a second one.

POST /v3/travel-rule/test-vasp/inbound/

func (*TransactionsTravelRuleService) UpdateTransfer

UpdateTransfer: Finish, cancel, resend, or update the originator wallet of a Travel Rule transfer.

Provide `payment_txn_id` to report the on-chain hash and move an outbound COMPLETED transfer to FINISHED (its INTERNAL-rail counterpart also moves to FINISHED), `{"action": "cancel"}` to cancel a non-terminal transfer, or `{"action": "resend"}` to route an outbound transfer stuck in COUNTERPARTY_VASP_NOT_FOUND, COUNTERPARTY_VASP_NOT_REACHABLE, or NOT_ENOUGH_COUNTERPARTY_DATA again (improve the counterparty data first, e.g. add a travel_address to the destination wallet entry). resend applies to outbound transfers only. `{"action": "update_compliance_email", "compliance_email": "desk@example.com"}` replaces the compliance email of an outbound transfer in one of those three statuses, the fix for `reason: email_undeliverable`: the status does not change, and the next `resend` sends the request to that address. A resend is queued, not run inside the request: the response shows the transfer back in AWAITING_COUNTERPARTY with a `resend queued` timeline entry and a queued `delivery`, and where it went arrives as a `travel_rule.status.updated` webhook. When the transfer went over GTR, VerifyVASP or Sygna Bridge, the network learns the on-chain hash or the cancellation after the response, with retries; `delivery` shows how that message stands. `{"action": "update_originator_wallet", "wallet_address": "..."}` records the wallet the funds actually left from on an outbound transfer, for example the address a UTXO withdrawal was broadcast from rather than the main wallet you declared. It changes the record only: nothing is sent to the counterparty again and the status stays. The originator becomes `chain_details.originator` with `source: updated`, the change is added to the `timeline` with the previous and the new wallet, and the INTERNAL-rail counterpart of the transfer is updated the same way.

PATCH /v3/transactions/{transaction_id}/travel-rule/

type TravelRuleChainDetails

type TravelRuleChainDetails struct {
	// Canonical chain, e.g. `BTC`, `XRP`, or `LIGHTNING` for a Lightning transfer.
	Chain       string                      `json:"chain"`
	Shape       TravelRuleChainDetailsShape `json:"shape"`
	Originator  TravelRuleChainSide         `json:"originator"`
	Beneficiary TravelRuleChainSide         `json:"beneficiary"`

	// On a UTXO transfer: the inputs and outputs as stored (amounts as decimal
	// strings) and which outputs Didit read as what.
	Utxo TravelRuleChainDetailsUtxo `json:"utxo"`

	// On a Lightning transfer: what the payment request says. Always `kind`
	// (`bolt11`, `bolt12_offer`, `bolt12_invoice`, `bolt12_invoice_request`,
	// `lnurl`, `lightning_address`, `node_id` or `unknown`); a BOLT11 invoice adds
	// `network`, `payee_node_id`, `payment_hash`, `amount_msat`, `created_at` and
	// `expires_at`; a BOLT12 string `blinded_paths` and `payee_node_id`; an LNURL
	// or a Lightning Address its `domain`. Nothing is resolved over the network:
	// the request is decoded only.
	Lightning map[string]any `json:"lightning"`

	// UTXO inconsistencies worth a look: the declared originator is not an input,
	// the declared beneficiary is not an output, no single beneficiary output could
	// be told apart, or the beneficiary output pays a different amount than the
	// transaction states.
	Warnings []TravelRuleChainDetailsWarnings `json:"warnings"`

	// On an outbound Lightning transfer whose payment request names no payee: why
	// the transfer is `NOT_APPLICABLE`. `LIGHTNING_NO_PAYEE_IDENTIFIER` (the
	// request names no payee node, or could not be decoded),
	// `LIGHTNING_BOLT12_BLINDED_PAYEE` (the offer hides its payee behind blinded
	// paths), `LIGHTNING_LNURL_NAMES_NO_PAYEE` (an LNURL names a service, not a
	// payee). The same code opens the transfer's last `timeline` entry.
	NotApplicableReason TravelRuleChainDetailsNotApplicableReason `json:"not_applicable_reason"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleChainDetails: How the transfer's chain names its two wallets, when that is more than one address paying another. Empty (`{}`) for an account-chain transfer (EVM, Solana, Tron), where the two addresses are the wallets. Matching, routing and the address book read the wallets from here first.

func (*TravelRuleChainDetails) UnmarshalJSON

func (r *TravelRuleChainDetails) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleChainDetails leniently.

type TravelRuleChainDetailsNotApplicableReason

type TravelRuleChainDetailsNotApplicableReason string

TravelRuleChainDetailsNotApplicableReason: On an outbound Lightning transfer whose payment request names no payee: why the transfer is `NOT_APPLICABLE`. `LIGHTNING_NO_PAYEE_IDENTIFIER` (the request names no payee node, or could not be decoded), `LIGHTNING_BOLT12_BLINDED_PAYEE` (the offer hides its payee behind blinded paths), `LIGHTNING_LNURL_NAMES_NO_PAYEE` (an LNURL names a service, not a payee). The same code opens the transfer's last `timeline` entry.

TravelRuleChainDetailsNotApplicableReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleChainDetailsNotApplicableReasonLightningNoPayeeIdentifier  TravelRuleChainDetailsNotApplicableReason = "LIGHTNING_NO_PAYEE_IDENTIFIER"
	TravelRuleChainDetailsNotApplicableReasonLightningBolt12BlindedPayee TravelRuleChainDetailsNotApplicableReason = "LIGHTNING_BOLT12_BLINDED_PAYEE"
	TravelRuleChainDetailsNotApplicableReasonLightningLnurlNamesNoPayee  TravelRuleChainDetailsNotApplicableReason = "LIGHTNING_LNURL_NAMES_NO_PAYEE"
)

Known values of TravelRuleChainDetailsNotApplicableReason.

type TravelRuleChainDetailsShape

type TravelRuleChainDetailsShape string

TravelRuleChainDetailsShape is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleChainDetailsShapeUtxo      TravelRuleChainDetailsShape = "utxo"
	TravelRuleChainDetailsShapeMemo      TravelRuleChainDetailsShape = "memo"
	TravelRuleChainDetailsShapeLightning TravelRuleChainDetailsShape = "lightning"
)

Known values of TravelRuleChainDetailsShape.

type TravelRuleChainDetailsUtxo

type TravelRuleChainDetailsUtxo struct {
	Inputs  []TravelRuleUtxoEntry `json:"inputs"`
	Outputs []TravelRuleUtxoEntry `json:"outputs"`

	// Outputs that pay an input address back.
	ChangeOutputIndexes []int64 `json:"change_output_indexes"`

	// The output that pays the beneficiary; null when none could be told apart.
	BeneficiaryOutputIndex int64 `json:"beneficiary_output_index"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleChainDetailsUtxo: On a UTXO transfer: the inputs and outputs as stored (amounts as decimal strings) and which outputs Didit read as what.

func (*TravelRuleChainDetailsUtxo) UnmarshalJSON

func (r *TravelRuleChainDetailsUtxo) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleChainDetailsUtxo leniently.

type TravelRuleChainDetailsWarnings

type TravelRuleChainDetailsWarnings string

TravelRuleChainDetailsWarnings is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleChainDetailsWarningsDeclaredOriginatorNotAnInput   TravelRuleChainDetailsWarnings = "declared_originator_not_an_input"
	TravelRuleChainDetailsWarningsDeclaredBeneficiaryNotAnOutput TravelRuleChainDetailsWarnings = "declared_beneficiary_not_an_output"
	TravelRuleChainDetailsWarningsBeneficiaryOutputAmbiguous     TravelRuleChainDetailsWarnings = "beneficiary_output_ambiguous"
	TravelRuleChainDetailsWarningsBeneficiaryOutputAmountDiffers TravelRuleChainDetailsWarnings = "beneficiary_output_amount_differs"
)

Known values of TravelRuleChainDetailsWarnings.

type TravelRuleChainSide

type TravelRuleChainSide struct {
	// The wallet. On a memo network the classic address (an XRP X-address is split
	// into its classic address and its tag); on Lightning the payee node id or
	// Lightning Address.
	Address string `json:"address"`

	// The destination tag or memo that is part of the wallet; `""` for none.
	Memo string `json:"memo"`

	// Where the wallet came from: `declared` (your request), `x_address` (split
	// from an XRP X-address), `largest_input` (the UTXO input address that
	// contributed the most), `only_non_change_output` (the only UTXO output that is
	// not change), `amount_match` (the one UTXO output paying the transfer amount),
	// `invoice_payee` (the payee a Lightning payment request names), `updated` (set
	// later with `action: update_originator_wallet`).
	Source TravelRuleChainSideSource `json:"source"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleChainSide: One side's wallet as Didit resolved it from the chain data.

func (*TravelRuleChainSide) UnmarshalJSON

func (r *TravelRuleChainSide) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleChainSide leniently.

type TravelRuleChainSideSource

type TravelRuleChainSideSource string

TravelRuleChainSideSource: Where the wallet came from: `declared` (your request), `x_address` (split from an XRP X-address), `largest_input` (the UTXO input address that contributed the most), `only_non_change_output` (the only UTXO output that is not change), `amount_match` (the one UTXO output paying the transfer amount), `invoice_payee` (the payee a Lightning payment request names), `updated` (set later with `action: update_originator_wallet`).

TravelRuleChainSideSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleChainSideSourceDeclared            TravelRuleChainSideSource = "declared"
	TravelRuleChainSideSourceXAddress            TravelRuleChainSideSource = "x_address"
	TravelRuleChainSideSourceLargestInput        TravelRuleChainSideSource = "largest_input"
	TravelRuleChainSideSourceOnlyNonChangeOutput TravelRuleChainSideSource = "only_non_change_output"
	TravelRuleChainSideSourceAmountMatch         TravelRuleChainSideSource = "amount_match"
	TravelRuleChainSideSourceInvoicePayee        TravelRuleChainSideSource = "invoice_payee"
	TravelRuleChainSideSourceUpdated             TravelRuleChainSideSource = "updated"
)

Known values of TravelRuleChainSideSource.

type TravelRuleCounterpartyContact

type TravelRuleCounterpartyContact struct {
	UUID string `json:"uuid"`

	// The directory entry's `id`, as GET /v3/travel-rule/vasps/ shows it.
	Counterparty     string `json:"counterparty"`
	CounterpartyName string `json:"counterparty_name"`
	Email            string `json:"email"`

	// Optional label, for example the team name.
	Name string `json:"name"`

	// staff: curated by Didit. learned: an address at one of the VASP's own domains
	// that answered a request through its response link. application: added by your
	// application.
	Source TravelRuleCounterpartyContactSource `json:"source"`

	// platform: curated by Didit or learned from a verified answer, used for every
	// Didit customer, read-only for you. application: private to your application.
	Scope TravelRuleCounterpartyContactScope `json:"scope"`

	// Empty for platform contacts and for contacts an API key added.
	CreatedBy string `json:"created_by"`

	// When this address last answered a request through its response link.
	VerifiedAt time.Time `json:"verified_at"`

	// true once the address bounced or complained; the EMAIL rail skips it.
	IsInvalid     bool                                       `json:"is_invalid"`
	InvalidReason TravelRuleCounterpartyContactInvalidReason `json:"invalid_reason"`

	// The receiving mail server's reason, when it gave one.
	InvalidDetail string    `json:"invalid_detail"`
	InvalidAt     time.Time `json:"invalid_at"`
	CreatedAt     time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleCounterpartyContact: A compliance address the EMAIL rail writes to for one directory entry.

func (*TravelRuleCounterpartyContact) UnmarshalJSON

func (r *TravelRuleCounterpartyContact) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleCounterpartyContact leniently.

type TravelRuleCounterpartyContactCreate

type TravelRuleCounterpartyContactCreate struct {
	// The directory entry's `id`. Required.
	Counterparty string `json:"counterparty"`

	// Required.
	Email string `json:"email"`

	// Optional label.
	Name Opt[string] `json:"name"`
}

TravelRuleCounterpartyContactCreate is a request object.

func (TravelRuleCounterpartyContactCreate) MarshalJSON

func (r TravelRuleCounterpartyContactCreate) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleCounterpartyContactInvalidReason

type TravelRuleCounterpartyContactInvalidReason string

TravelRuleCounterpartyContactInvalidReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleCounterpartyContactInvalidReasonEmpty         TravelRuleCounterpartyContactInvalidReason = ""
	TravelRuleCounterpartyContactInvalidReasonHardBounce    TravelRuleCounterpartyContactInvalidReason = "hard_bounce"
	TravelRuleCounterpartyContactInvalidReasonSoftBounce    TravelRuleCounterpartyContactInvalidReason = "soft_bounce"
	TravelRuleCounterpartyContactInvalidReasonSpamComplaint TravelRuleCounterpartyContactInvalidReason = "spam_complaint"
	TravelRuleCounterpartyContactInvalidReasonSuppressed    TravelRuleCounterpartyContactInvalidReason = "suppressed"
)

Known values of TravelRuleCounterpartyContactInvalidReason.

type TravelRuleCounterpartyContactScope

type TravelRuleCounterpartyContactScope string

TravelRuleCounterpartyContactScope: platform: curated by Didit or learned from a verified answer, used for every Didit customer, read-only for you. application: private to your application.

TravelRuleCounterpartyContactScope is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleCounterpartyContactScopePlatform    TravelRuleCounterpartyContactScope = "platform"
	TravelRuleCounterpartyContactScopeApplication TravelRuleCounterpartyContactScope = "application"
)

Known values of TravelRuleCounterpartyContactScope.

type TravelRuleCounterpartyContactSource

type TravelRuleCounterpartyContactSource string

TravelRuleCounterpartyContactSource: staff: curated by Didit. learned: an address at one of the VASP's own domains that answered a request through its response link. application: added by your application.

TravelRuleCounterpartyContactSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleCounterpartyContactSourceStaff       TravelRuleCounterpartyContactSource = "staff"
	TravelRuleCounterpartyContactSourceApplication TravelRuleCounterpartyContactSource = "application"
	TravelRuleCounterpartyContactSourceLearned     TravelRuleCounterpartyContactSource = "learned"
)

Known values of TravelRuleCounterpartyContactSource.

type TravelRuleCounterpartyContactsListParams

type TravelRuleCounterpartyContactsListParams struct {
	// Only the contacts of this directory entry. Must be a UUID; an empty value
	// means no filter.
	Counterparty Opt[string] `json:"-" query:"counterparty"`

	// Page size, default 50.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Rows to skip.
	Offset Opt[int64] `json:"-" query:"offset"`
}

TravelRuleCounterpartyContactsListParams holds the parameters of Client.TravelRule.CounterpartyContacts.List.

func (TravelRuleCounterpartyContactsListParams) MarshalJSON

MarshalJSON encodes the fields that are set.

type TravelRuleCounterpartyContactsService

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

TravelRuleCounterpartyContactsService holds the travel_rule counterparty_contacts operations. Use it through Client.TravelRule.CounterpartyContacts.

func (*TravelRuleCounterpartyContactsService) Create

Create: Add a counterparty contact.

Adds a private compliance address for one directory entry. Only your application sees and uses it, and the EMAIL rail writes to it before any platform contact. Adding an address the entry already has among your own contacts returns that contact.

POST /v3/travel-rule/counterparty-contacts/

func (*TravelRuleCounterpartyContactsService) Delete

Delete: Delete a counterparty contact.

Deletes one of your application's own contacts. The EMAIL rail stops writing to it at once. Platform contacts cannot be deleted.

DELETE /v3/travel-rule/counterparty-contacts/{contact_uuid}/

func (*TravelRuleCounterpartyContactsService) List

List: List counterparty contacts.

The compliance addresses the EMAIL rail may write to for your application: Didit's platform contacts plus your application's own private ones, bounced ones included, newest first. Paginated with `limit` (default 50) and `offset`; `count` stops at 100, so 100 means 100 or more.

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/travel-rule/counterparty-contacts/

func (*TravelRuleCounterpartyContactsService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

type TravelRuleCounterpartyDecision

type TravelRuleCounterpartyDecision struct {
	// APPROVED: your team cleared the counterparty. RESTRICTED: transfers to it may
	// go ahead after review. BLOCKED: your team refused it.
	Decision TravelRuleCounterpartyDecisionDecision `json:"decision"`

	// Free-text reason you gave, empty when none.
	Reason string `json:"reason"`

	// The console user who made or last changed the decision. Empty when an API key
	// made it.
	DecidedBy string    `json:"decided_by"`
	UpdatedAt time.Time `json:"updated_at"`

	// The brand whose decision this entity follows because you made none on the
	// entity itself. Null when the decision is the counterparty's own.
	InheritedFrom TravelRuleCounterpartyDecisionInheritedFrom `json:"inherited_from"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleCounterpartyDecision: Your application's decision on a counterparty VASP. Private to your application: it never changes the shared directory entry and another customer never sees it. It acts only through your transaction rules (the counterparty_dd_status rule field and the travel-rule-counterparty-blocked and travel-rule-counterparty-restricted presets); it never changes how a transfer is routed.

func (*TravelRuleCounterpartyDecision) UnmarshalJSON

func (r *TravelRuleCounterpartyDecision) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleCounterpartyDecision leniently.

type TravelRuleCounterpartyDecisionDecision

type TravelRuleCounterpartyDecisionDecision string

TravelRuleCounterpartyDecisionDecision: APPROVED: your team cleared the counterparty. RESTRICTED: transfers to it may go ahead after review. BLOCKED: your team refused it.

TravelRuleCounterpartyDecisionDecision is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleCounterpartyDecisionDecisionApproved   TravelRuleCounterpartyDecisionDecision = "APPROVED"
	TravelRuleCounterpartyDecisionDecisionRestricted TravelRuleCounterpartyDecisionDecision = "RESTRICTED"
	TravelRuleCounterpartyDecisionDecisionBlocked    TravelRuleCounterpartyDecisionDecision = "BLOCKED"
)

Known values of TravelRuleCounterpartyDecisionDecision.

type TravelRuleCounterpartyDecisionInheritedFrom

type TravelRuleCounterpartyDecisionInheritedFrom struct {
	ID   string `json:"id"`
	Name string `json:"name"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleCounterpartyDecisionInheritedFrom: The brand whose decision this entity follows because you made none on the entity itself. Null when the decision is the counterparty's own.

func (*TravelRuleCounterpartyDecisionInheritedFrom) UnmarshalJSON

func (r *TravelRuleCounterpartyDecisionInheritedFrom) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleCounterpartyDecisionInheritedFrom leniently.

type TravelRuleCounterpartyDecisionRequest

type TravelRuleCounterpartyDecisionRequest struct {
	// Required.
	Decision TravelRuleCounterpartyDecisionRequestDecision `json:"decision"`

	// Optional. Replaces the previous reason; omit it to clear it.
	Reason Opt[string] `json:"reason"`
}

TravelRuleCounterpartyDecisionRequest is a request object.

func (TravelRuleCounterpartyDecisionRequest) MarshalJSON

func (r TravelRuleCounterpartyDecisionRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleCounterpartyDecisionRequestDecision

type TravelRuleCounterpartyDecisionRequestDecision string

TravelRuleCounterpartyDecisionRequestDecision is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleCounterpartyDecisionRequestDecisionApproved   TravelRuleCounterpartyDecisionRequestDecision = "APPROVED"
	TravelRuleCounterpartyDecisionRequestDecisionRestricted TravelRuleCounterpartyDecisionRequestDecision = "RESTRICTED"
	TravelRuleCounterpartyDecisionRequestDecisionBlocked    TravelRuleCounterpartyDecisionRequestDecision = "BLOCKED"
)

Known values of TravelRuleCounterpartyDecisionRequestDecision.

type TravelRuleCounterpartyDecisionResponse

type TravelRuleCounterpartyDecisionResponse struct {
	// The decision that applies to the counterparty for your application: its own,
	// else (for an entity of a brand) the brand's. Null when there is none.
	Decision TravelRuleCounterpartyDecision `json:"decision"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleCounterpartyDecisionResponse is a response object.

func (*TravelRuleCounterpartyDecisionResponse) UnmarshalJSON

func (r *TravelRuleCounterpartyDecisionResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleCounterpartyDecisionResponse leniently.

type TravelRuleCounterpartyQuestionnaire

type TravelRuleCounterpartyQuestionnaire struct {
	ID string `json:"id"`

	// SENT: waiting for answers. ANSWERED: the counterparty answered every
	// question. EXPIRED: the answer link closed unanswered (its deadline passed, or
	// a newer questionnaire replaced it), or answers passed valid_until.
	Status TravelRuleCounterpartyQuestionnaireStatus `json:"status"`

	// Version of Didit's standard questionnaire the answers belong to. Currently 1.
	FormVersion string    `json:"form_version"`
	SentTo      string    `json:"sent_to"`
	SentAt      time.Time `json:"sent_at"`

	// The answer-by deadline, 30 days after sending. The link stops working after
	// it.
	ExpiresAt  time.Time `json:"expires_at"`
	AnsweredAt time.Time `json:"answered_at"`

	// How long the answers stay current: 365 days after answering. Null until
	// answered.
	ValidUntil time.Time `json:"valid_until"`

	// true while the questionnaire is ANSWERED and valid_until has not passed.
	Current bool `json:"current"`

	// The answers keyed by question id: legal_name, licensing, jurisdictions,
	// aml_program, compliance_officer, sanctions_screening, transaction_monitoring,
	// travel_rule, custody, ownership, record_keeping, data_protection. Each answer
	// is up to 2,000 characters. Empty until answered.
	Answers map[string]string `json:"answers"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleCounterpartyQuestionnaire: One due-diligence questionnaire your application sent the counterparty: Didit's standard questionnaire, emailed to a compliance address on record with a single-use answer link. Private to your application.

func (*TravelRuleCounterpartyQuestionnaire) UnmarshalJSON

func (r *TravelRuleCounterpartyQuestionnaire) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleCounterpartyQuestionnaire leniently.

type TravelRuleCounterpartyQuestionnaireList

type TravelRuleCounterpartyQuestionnaireList struct {
	// Newest first.
	Questionnaires []TravelRuleCounterpartyQuestionnaire `json:"questionnaires"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleCounterpartyQuestionnaireList is a response object.

func (*TravelRuleCounterpartyQuestionnaireList) UnmarshalJSON

func (r *TravelRuleCounterpartyQuestionnaireList) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleCounterpartyQuestionnaireList leniently.

type TravelRuleCounterpartyQuestionnaireRequest

type TravelRuleCounterpartyQuestionnaireRequest struct {
	// Optional. A compliance address on record for the counterparty: for a
	// directory entry its compliance address or a contact your application sees,
	// for a Didit network member its confirmed compliance email. Default: the
	// address a Travel Rule email to the counterparty goes to (your own contact
	// first, then a platform contact, then the entry's compliance address).
	SentTo Opt[string] `json:"sent_to"`
}

TravelRuleCounterpartyQuestionnaireRequest is a request object.

func (TravelRuleCounterpartyQuestionnaireRequest) MarshalJSON

MarshalJSON encodes the fields that are set.

type TravelRuleCounterpartyQuestionnaireStatus

type TravelRuleCounterpartyQuestionnaireStatus string

TravelRuleCounterpartyQuestionnaireStatus: SENT: waiting for answers. ANSWERED: the counterparty answered every question. EXPIRED: the answer link closed unanswered (its deadline passed, or a newer questionnaire replaced it), or answers passed valid_until.

TravelRuleCounterpartyQuestionnaireStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleCounterpartyQuestionnaireStatusSent     TravelRuleCounterpartyQuestionnaireStatus = "SENT"
	TravelRuleCounterpartyQuestionnaireStatusAnswered TravelRuleCounterpartyQuestionnaireStatus = "ANSWERED"
	TravelRuleCounterpartyQuestionnaireStatusExpired  TravelRuleCounterpartyQuestionnaireStatus = "EXPIRED"
)

Known values of TravelRuleCounterpartyQuestionnaireStatus.

type TravelRuleCounterpartyScreening

type TravelRuleCounterpartyScreening struct {
	ID string `json:"id"`

	// Approved: no possible match needs attention. In Review or Declined: a
	// possible sanctions or adverse-media match.
	Status TravelRuleCounterpartyScreeningStatusValue `json:"status"`

	// How many possible matches the screening returned.
	TotalHits int64 `json:"total_hits"`

	// The highest risk score among the possible matches. Null when nothing matched.
	Score      float64   `json:"score"`
	ScreenedAt time.Time `json:"screened_at"`

	// Whether the screening is younger than fresh_days (30 days). A fresh screening
	// is reused instead of billed again.
	Fresh bool `json:"fresh"`

	// true while the screening is fresh and its status is In Review or Declined.
	// While your latest screening is flagged and counterparty screening stays on,
	// counterparty_risk_level is HIGH in your rules.
	Flagged bool `json:"flagged"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleCounterpartyScreening: One sanctions and adverse-media screening of the counterparty entity, run for and billed to your application. Private to your application: another customer never sees it.

func (*TravelRuleCounterpartyScreening) UnmarshalJSON

func (r *TravelRuleCounterpartyScreening) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleCounterpartyScreening leniently.

type TravelRuleCounterpartyScreeningRequest

type TravelRuleCounterpartyScreeningRequest struct {
	// true screens again (and bills again) even when a fresh screening exists.
	Refresh Opt[bool] `json:"refresh"`
}

TravelRuleCounterpartyScreeningRequest is a request object.

func (TravelRuleCounterpartyScreeningRequest) MarshalJSON

func (r TravelRuleCounterpartyScreeningRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleCounterpartyScreeningResult

type TravelRuleCounterpartyScreeningResult struct {
	// screened: a new screening ran and was billed (201). reused: a fresh screening
	// was returned and nothing was billed (200).
	Outcome   TravelRuleCounterpartyScreeningResultOutcome `json:"outcome"`
	Screening TravelRuleCounterpartyScreening              `json:"screening"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleCounterpartyScreeningResult is a response object.

func (*TravelRuleCounterpartyScreeningResult) UnmarshalJSON

func (r *TravelRuleCounterpartyScreeningResult) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleCounterpartyScreeningResult leniently.

type TravelRuleCounterpartyScreeningResultOutcome

type TravelRuleCounterpartyScreeningResultOutcome string

TravelRuleCounterpartyScreeningResultOutcome: screened: a new screening ran and was billed (201). reused: a fresh screening was returned and nothing was billed (200).

TravelRuleCounterpartyScreeningResultOutcome is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleCounterpartyScreeningResultOutcomeScreened TravelRuleCounterpartyScreeningResultOutcome = "screened"
	TravelRuleCounterpartyScreeningResultOutcomeReused   TravelRuleCounterpartyScreeningResultOutcome = "reused"
)

Known values of TravelRuleCounterpartyScreeningResultOutcome.

type TravelRuleCounterpartyScreeningStatus

type TravelRuleCounterpartyScreeningStatus struct {
	// Your counterparty_screening_enabled Travel Rule setting. Off by default;
	// nothing is screened or billed while it is off.
	Enabled bool `json:"enabled"`

	// Decimal string, in USD: what one screening costs your organization, the
	// Company AML Screening price.
	Price string `json:"price"`

	// How many days a screening stays fresh and is reused.
	FreshDays int64 `json:"fresh_days"`

	// Your latest screening of the counterparty. Null when you never screened it.
	Screening TravelRuleCounterpartyScreening `json:"screening"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleCounterpartyScreeningStatus is a response object.

func (*TravelRuleCounterpartyScreeningStatus) UnmarshalJSON

func (r *TravelRuleCounterpartyScreeningStatus) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleCounterpartyScreeningStatus leniently.

type TravelRuleCounterpartyScreeningStatusValue

type TravelRuleCounterpartyScreeningStatusValue string

TravelRuleCounterpartyScreeningStatusValue: Approved: no possible match needs attention. In Review or Declined: a possible sanctions or adverse-media match.

TravelRuleCounterpartyScreeningStatusValue is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleCounterpartyScreeningStatusValueApproved TravelRuleCounterpartyScreeningStatusValue = "Approved"
	TravelRuleCounterpartyScreeningStatusValueInReview TravelRuleCounterpartyScreeningStatusValue = "In Review"
	TravelRuleCounterpartyScreeningStatusValueDeclined TravelRuleCounterpartyScreeningStatusValue = "Declined"
)

Known values of TravelRuleCounterpartyScreeningStatusValue.

type TravelRuleDataMatch

type TravelRuleDataMatch struct {
	// True when no compared field differs.
	Matched bool `json:"matched"`

	// The fields that differ.
	MismatchedFields []TravelRuleDataMatchMismatchedFields `json:"mismatched_fields"`

	// One entry per field compared for the party's entity type (`name`,
	// `date_of_birth`, `address`, `account`; a company has no `date_of_birth`).
	Fields map[string]TravelRuleDataMatchFields `json:"fields"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleDataMatch: Field-by-field comparison of the transfer's party data with what the other side knows about the wallet holder. It names fields and results, never values, so it stays readable while the counterparty's data is masked. Null until a comparison ran.

func (*TravelRuleDataMatch) UnmarshalJSON

func (r *TravelRuleDataMatch) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleDataMatch leniently.

type TravelRuleDataMatchFields

type TravelRuleDataMatchFields struct {
	// `not_compared` when the rule is `NONE` or either side has no value for the
	// field.
	Result     TravelRuleDataMatchFieldsResult     `json:"result"`
	Strictness TravelRuleDataMatchFieldsStrictness `json:"strictness"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleDataMatchFields is a response object.

func (*TravelRuleDataMatchFields) UnmarshalJSON

func (r *TravelRuleDataMatchFields) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleDataMatchFields leniently.

type TravelRuleDataMatchFieldsResult

type TravelRuleDataMatchFieldsResult string

TravelRuleDataMatchFieldsResult: `not_compared` when the rule is `NONE` or either side has no value for the field.

TravelRuleDataMatchFieldsResult is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleDataMatchFieldsResultMatched     TravelRuleDataMatchFieldsResult = "matched"
	TravelRuleDataMatchFieldsResultMismatched  TravelRuleDataMatchFieldsResult = "mismatched"
	TravelRuleDataMatchFieldsResultNotCompared TravelRuleDataMatchFieldsResult = "not_compared"
)

Known values of TravelRuleDataMatchFieldsResult.

type TravelRuleDataMatchFieldsStrictness

type TravelRuleDataMatchFieldsStrictness string

TravelRuleDataMatchFieldsStrictness is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleDataMatchFieldsStrictnessNone     TravelRuleDataMatchFieldsStrictness = "NONE"
	TravelRuleDataMatchFieldsStrictnessStrict   TravelRuleDataMatchFieldsStrictness = "STRICT"
	TravelRuleDataMatchFieldsStrictnessContains TravelRuleDataMatchFieldsStrictness = "CONTAINS"
	TravelRuleDataMatchFieldsStrictnessDefault  TravelRuleDataMatchFieldsStrictness = "DEFAULT"
	TravelRuleDataMatchFieldsStrictnessFuzzy    TravelRuleDataMatchFieldsStrictness = "FUZZY"
)

Known values of TravelRuleDataMatchFieldsStrictness.

type TravelRuleDataMatchMismatchedFields

type TravelRuleDataMatchMismatchedFields string

TravelRuleDataMatchMismatchedFields is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleDataMatchMismatchedFieldsName        TravelRuleDataMatchMismatchedFields = "name"
	TravelRuleDataMatchMismatchedFieldsDateOfBirth TravelRuleDataMatchMismatchedFields = "date_of_birth"
	TravelRuleDataMatchMismatchedFieldsAddress     TravelRuleDataMatchMismatchedFields = "address"
	TravelRuleDataMatchMismatchedFieldsAccount     TravelRuleDataMatchMismatchedFields = "account"
)

Known values of TravelRuleDataMatchMismatchedFields.

type TravelRuleDataSharingFields

type TravelRuleDataSharingFields struct {
	// Fields shared about a natural person.
	Individual []TravelRuleDataSharingFieldsIndividual `json:"individual"`

	// Fields shared about a legal person.
	Company []TravelRuleDataSharingFieldsCompany `json:"company"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleDataSharingFields: The fields Didit sends to the counterparty VASP about your own users, per entity type. The `name` and the `wallet_address` are always sent, whatever the list says. An entity type you never chose shares every field. An empty list is a choice too: it shares the name and the wallet only.

func (*TravelRuleDataSharingFields) UnmarshalJSON

func (r *TravelRuleDataSharingFields) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleDataSharingFields leniently.

type TravelRuleDataSharingFieldsCompany

type TravelRuleDataSharingFieldsCompany string

TravelRuleDataSharingFieldsCompany is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleDataSharingFieldsCompanyName                   TravelRuleDataSharingFieldsCompany = "name"
	TravelRuleDataSharingFieldsCompanyWalletAddress          TravelRuleDataSharingFieldsCompany = "wallet_address"
	TravelRuleDataSharingFieldsCompanyAddress                TravelRuleDataSharingFieldsCompany = "address"
	TravelRuleDataSharingFieldsCompanyNationalID             TravelRuleDataSharingFieldsCompany = "national_id"
	TravelRuleDataSharingFieldsCompanyCustomerIdentification TravelRuleDataSharingFieldsCompany = "customer_identification"
)

Known values of TravelRuleDataSharingFieldsCompany.

type TravelRuleDataSharingFieldsIndividual

type TravelRuleDataSharingFieldsIndividual string

TravelRuleDataSharingFieldsIndividual is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleDataSharingFieldsIndividualName                   TravelRuleDataSharingFieldsIndividual = "name"
	TravelRuleDataSharingFieldsIndividualWalletAddress          TravelRuleDataSharingFieldsIndividual = "wallet_address"
	TravelRuleDataSharingFieldsIndividualAddress                TravelRuleDataSharingFieldsIndividual = "address"
	TravelRuleDataSharingFieldsIndividualNationalID             TravelRuleDataSharingFieldsIndividual = "national_id"
	TravelRuleDataSharingFieldsIndividualCustomerIdentification TravelRuleDataSharingFieldsIndividual = "customer_identification"
	TravelRuleDataSharingFieldsIndividualDateOfBirth            TravelRuleDataSharingFieldsIndividual = "date_of_birth"
	TravelRuleDataSharingFieldsIndividualPlaceOfBirth           TravelRuleDataSharingFieldsIndividual = "place_of_birth"
)

Known values of TravelRuleDataSharingFieldsIndividual.

type TravelRuleDataSharingFieldsParam

type TravelRuleDataSharingFieldsParam struct {
	// Fields shared about a natural person.
	Individual Opt[[]TravelRuleDataSharingFieldsIndividual] `json:"individual"`

	// Fields shared about a legal person.
	Company Opt[[]TravelRuleDataSharingFieldsCompany] `json:"company"`
}

TravelRuleDataSharingFieldsParam: The fields Didit sends to the counterparty VASP about your own users, per entity type. The `name` and the `wallet_address` are always sent, whatever the list says. An entity type you never chose shares every field. An empty list is a choice too: it shares the name and the wallet only.

func (TravelRuleDataSharingFieldsParam) MarshalJSON

func (r TravelRuleDataSharingFieldsParam) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleDataUnmasked

type TravelRuleDataUnmasked struct {
	At time.Time `json:"at"`

	// What confirmed ownership: ownership_confirmed (your confirmation through the
	// console or the API), wallet_proof (a wallet proof in the widget, or an
	// INTERNAL inbound transfer, set when it is created), address_book_match (a
	// verified address-book wallet), own_verified_wallet (your user's own verified
	// wallet), inquiry_approved (your approval of an inbound TRP inquiry or a GTR
	// or Sygna message), known_payment_method (a wallet your user already paid
	// with) or travel_address (the per-wallet travel address named the wallet).
	Reason TravelRuleDataUnmaskedReason `json:"reason"`

	// Who confirmed it: the console user's email or the API key's label. Blank for
	// an automatic decision.
	Actor string `json:"actor"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleDataUnmasked: Audit record of the moment the counterparty's data was unmasked. Null while the data is still masked, and for outbound transfers.

func (*TravelRuleDataUnmasked) UnmarshalJSON

func (r *TravelRuleDataUnmasked) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleDataUnmasked leniently.

type TravelRuleDataUnmaskedReason

type TravelRuleDataUnmaskedReason string

TravelRuleDataUnmaskedReason: What confirmed ownership: ownership_confirmed (your confirmation through the console or the API), wallet_proof (a wallet proof in the widget, or an INTERNAL inbound transfer, set when it is created), address_book_match (a verified address-book wallet), own_verified_wallet (your user's own verified wallet), inquiry_approved (your approval of an inbound TRP inquiry or a GTR or Sygna message), known_payment_method (a wallet your user already paid with) or travel_address (the per-wallet travel address named the wallet).

TravelRuleDataUnmaskedReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleDataUnmaskedReasonOwnershipConfirmed TravelRuleDataUnmaskedReason = "ownership_confirmed"
	TravelRuleDataUnmaskedReasonWalletProof        TravelRuleDataUnmaskedReason = "wallet_proof"
	TravelRuleDataUnmaskedReasonAddressBookMatch   TravelRuleDataUnmaskedReason = "address_book_match"
	TravelRuleDataUnmaskedReasonOwnVerifiedWallet  TravelRuleDataUnmaskedReason = "own_verified_wallet"
	TravelRuleDataUnmaskedReasonInquiryApproved    TravelRuleDataUnmaskedReason = "inquiry_approved"
	TravelRuleDataUnmaskedReasonKnownPaymentMethod TravelRuleDataUnmaskedReason = "known_payment_method"
	TravelRuleDataUnmaskedReasonTravelAddress      TravelRuleDataUnmaskedReason = "travel_address"
)

Known values of TravelRuleDataUnmaskedReason.

type TravelRuleDelivery

type TravelRuleDelivery struct {
	// What the message carries. `SEND`: the transfer's first message to the
	// counterparty (outbound; the rail is chosen when it is sent). `ANSWER`: your
	// accept or decline, owed to the network that asked (inbound). `TXID`: the
	// on-chain transaction hash, after you finish the transfer. `CANCEL`: the
	// cancellation, after you cancel it. `POLL`: a status query to a network that
	// offers one, repeated every 5 minutes while the transfer waits on the
	// counterparty.
	Kind TravelRuleDeliveryKind `json:"kind"`

	// `QUEUED`: waiting to be sent. `SENDING`: an attempt is running. `RETRYING`:
	// an attempt failed and the next one runs at `next_attempt_at`. `DELIVERED`:
	// the other side took the message. `FAILED`: the other side refused it, or the
	// last attempt failed.
	Status TravelRuleDeliveryStatus `json:"status"`

	// The rail that carries the message. Empty until Didit has chosen one for a
	// first message.
	Rail TravelRuleDeliveryRail `json:"rail"`

	// Attempts made so far for this message. A message that is not a status poll is
	// attempted at most 6 times.
	Attempts int64 `json:"attempts"`

	// The kind of failure the last attempt hit, `""` when none did: for example
	// `email undeliverable`, `trp identity endpoint unreachable` or `trp transfer
	// inquiry delivery failed`. It never carries the counterparty's own answer,
	// which stays on the transfer's `timeline`. When GTR answers with an error, its
	// own status code and message are included. Response bodies are never included.
	LastError string `json:"last_error"`

	// When the next attempt runs while the message is `QUEUED` or `RETRYING`.
	NextAttemptAt time.Time `json:"next_attempt_at"`

	// When the other side took the message.
	DeliveredAt time.Time `json:"delivered_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleDelivery: Where the latest message the transfer owes the other side stands. Didit contacts the counterparty after the request that created or changed the transfer has returned, so this object says whether that message got through: queued, being sent, waiting to be retried after an error, delivered, or failed. A failure the network may still recover from (no answer in time, a failed connection, HTTP `408`, `429` or `5xx`) is tried again after 30 seconds, 2 minutes, 10 minutes, 30 minutes and 1 hour. When a first message (`kind: SEND`) fails for good, because the network refused it or the sixth attempt failed too, the transfer moves to `COUNTERPARTY_VASP_NOT_REACHABLE` with `last_error` in its `timeline`; any other message that fails for good is noted in the `timeline`. The transfer's `status` stays the source of truth for the exchange itself.

func (*TravelRuleDelivery) UnmarshalJSON

func (r *TravelRuleDelivery) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleDelivery leniently.

type TravelRuleDeliveryKind

type TravelRuleDeliveryKind string

TravelRuleDeliveryKind: What the message carries. `SEND`: the transfer's first message to the counterparty (outbound; the rail is chosen when it is sent). `ANSWER`: your accept or decline, owed to the network that asked (inbound). `TXID`: the on-chain transaction hash, after you finish the transfer. `CANCEL`: the cancellation, after you cancel it. `POLL`: a status query to a network that offers one, repeated every 5 minutes while the transfer waits on the counterparty.

TravelRuleDeliveryKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleDeliveryKindSend   TravelRuleDeliveryKind = "SEND"
	TravelRuleDeliveryKindAnswer TravelRuleDeliveryKind = "ANSWER"
	TravelRuleDeliveryKindTxid   TravelRuleDeliveryKind = "TXID"
	TravelRuleDeliveryKindCancel TravelRuleDeliveryKind = "CANCEL"
	TravelRuleDeliveryKindPoll   TravelRuleDeliveryKind = "POLL"
)

Known values of TravelRuleDeliveryKind.

type TravelRuleDeliveryRail

type TravelRuleDeliveryRail string

TravelRuleDeliveryRail: The rail that carries the message. Empty until Didit has chosen one for a first message.

TravelRuleDeliveryRail is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleDeliveryRailInternal   TravelRuleDeliveryRail = "INTERNAL"
	TravelRuleDeliveryRailTrp        TravelRuleDeliveryRail = "TRP"
	TravelRuleDeliveryRailGtr        TravelRuleDeliveryRail = "GTR"
	TravelRuleDeliveryRailTrust      TravelRuleDeliveryRail = "TRUST"
	TravelRuleDeliveryRailVerifyvasp TravelRuleDeliveryRail = "VERIFYVASP"
	TravelRuleDeliveryRailSygna      TravelRuleDeliveryRail = "SYGNA"
	TravelRuleDeliveryRailEmail      TravelRuleDeliveryRail = "EMAIL"
	TravelRuleDeliveryRailEmpty      TravelRuleDeliveryRail = ""
)

Known values of TravelRuleDeliveryRail.

type TravelRuleDeliveryStatus

type TravelRuleDeliveryStatus string

TravelRuleDeliveryStatus: `QUEUED`: waiting to be sent. `SENDING`: an attempt is running. `RETRYING`: an attempt failed and the next one runs at `next_attempt_at`. `DELIVERED`: the other side took the message. `FAILED`: the other side refused it, or the last attempt failed.

TravelRuleDeliveryStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleDeliveryStatusQueued    TravelRuleDeliveryStatus = "QUEUED"
	TravelRuleDeliveryStatusSending   TravelRuleDeliveryStatus = "SENDING"
	TravelRuleDeliveryStatusRetrying  TravelRuleDeliveryStatus = "RETRYING"
	TravelRuleDeliveryStatusDelivered TravelRuleDeliveryStatus = "DELIVERED"
	TravelRuleDeliveryStatusFailed    TravelRuleDeliveryStatus = "FAILED"
)

Known values of TravelRuleDeliveryStatus.

type TravelRuleDiscoveryStep

type TravelRuleDiscoveryStep struct {
	// `internal_address_book`: another Didit customer that proved control of the
	// destination wallet. `wallet_attribution`: the wallet's blockchain analytics
	// attribution. `network_lookup`: a network that can say which VASP holds the
	// address. `customer_hint`: the VASP name, LEI or jurisdiction you sent in
	// `beneficiary_data`. `end_user`: the counterparty the end user (or you)
	// picked, or the request to pick one.
	Step TravelRuleDiscoveryStepStep `json:"step"`

	// `match`: the step named a counterparty. `miss`: it ran and found none.
	// `skipped`: it could not run, and `reason` says why.
	Outcome TravelRuleDiscoveryStepOutcome `json:"outcome"`

	// Machine-readable reason, `""` on a match: `no_proven_internal_wallet`,
	// `attribution_disabled`, `already_attributed`, `no_attributed_entity`,
	// `directory_match_no_route`, `gtr_address_lookup_runs_on_dispatch`,
	// `no_membership`, `network_switched_off`, `no_network_address_lookup`,
	// `no_directory_match`, `awaiting_end_user` or
	// `picked_member_without_proven_wallet`.
	Reason string `json:"reason"`

	// The directory VASP the step named, when it named one.
	VASP string `json:"vasp"`

	// The rail that reaches that counterparty, when the step found one.
	Rail string    `json:"rail"`
	At   time.Time `json:"at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleDiscoveryStep: One step of the counterparty discovery Didit ran for an outbound transfer, in the order it ran them. The first step that names a VASP with a route ends the chain.

func (*TravelRuleDiscoveryStep) UnmarshalJSON

func (r *TravelRuleDiscoveryStep) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleDiscoveryStep leniently.

type TravelRuleDiscoveryStepOutcome

type TravelRuleDiscoveryStepOutcome string

TravelRuleDiscoveryStepOutcome: `match`: the step named a counterparty. `miss`: it ran and found none. `skipped`: it could not run, and `reason` says why.

TravelRuleDiscoveryStepOutcome is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleDiscoveryStepOutcomeMatch   TravelRuleDiscoveryStepOutcome = "match"
	TravelRuleDiscoveryStepOutcomeMiss    TravelRuleDiscoveryStepOutcome = "miss"
	TravelRuleDiscoveryStepOutcomeSkipped TravelRuleDiscoveryStepOutcome = "skipped"
)

Known values of TravelRuleDiscoveryStepOutcome.

type TravelRuleDiscoveryStepStep

type TravelRuleDiscoveryStepStep string

TravelRuleDiscoveryStepStep: `internal_address_book`: another Didit customer that proved control of the destination wallet. `wallet_attribution`: the wallet's blockchain analytics attribution. `network_lookup`: a network that can say which VASP holds the address. `customer_hint`: the VASP name, LEI or jurisdiction you sent in `beneficiary_data`. `end_user`: the counterparty the end user (or you) picked, or the request to pick one.

TravelRuleDiscoveryStepStep is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleDiscoveryStepStepInternalAddressBook TravelRuleDiscoveryStepStep = "internal_address_book"
	TravelRuleDiscoveryStepStepWalletAttribution   TravelRuleDiscoveryStepStep = "wallet_attribution"
	TravelRuleDiscoveryStepStepNetworkLookup       TravelRuleDiscoveryStepStep = "network_lookup"
	TravelRuleDiscoveryStepStepCustomerHint        TravelRuleDiscoveryStepStep = "customer_hint"
	TravelRuleDiscoveryStepStepEndUser             TravelRuleDiscoveryStepStep = "end_user"
)

Known values of TravelRuleDiscoveryStepStep.

type TravelRuleInboundRequest

type TravelRuleInboundRequest struct {
	// Chain the deposit settled on, for example `ETH`. Stored lowercase and
	// compared case-insensitively with your wallet address book entries, so use the
	// same chain token there. Required.
	Chain string `json:"chain"`

	// On-chain transaction hash. Deduped together with wallet_address. Required.
	Txid string `json:"txid"`

	// The destination wallet you received the deposit on. An XRP X-address is split
	// into its classic address and tag. Required.
	WalletAddress string `json:"wallet_address"`

	// Deposit amount as a decimal string, zero or greater, with up to 18 decimal
	// places. Required.
	Amount string `json:"amount"`

	// Deposit asset, e.g. "USDC". Required.
	Currency string `json:"currency"`

	// Originator details from the sending VASP, if known, as a flat object such as
	// `{"name": "..."}`. Didit reads name (or full_name), first_name, last_name and
	// vendor_data from it.
	OriginatorData Opt[map[string]any] `json:"originator_data"`

	// Beneficiary details (your customer), as a flat object such as `{"name":
	// "..."}`. Didit matches name against the holder_name of the matched address
	// book entry, and sets wallet_address and chain from the request.
	BeneficiaryData Opt[map[string]any] `json:"beneficiary_data"`

	// Optional description of the sending VASP. It stays on this transfer only
	// (`metadata.originating_vasp`, and the transfer's originator VASP in GET
	// /v3/travel-rule/transfers/); it never creates, edits or links a shared VASP
	// directory entry.
	OriginatingVASP Opt[TravelRuleInboundRequestOriginatingVASP] `json:"originating_vasp"`

	// Optional. The deposit's destination tag or memo on a memo network: on a
	// shared deposit address it is what tells your customers apart, and the
	// address-book entry for that memo is matched. XRP: a destination tag, a whole
	// number from 0 to 4294967295 (a JSON number is accepted). XLM: a text memo of
	// up to 28 bytes, a 64-bit id or a 32-byte hash in hex. EOS: up to 256 bytes.
	// ATOM: up to 256 characters. HBAR: up to 100 bytes. Bitcoin, EVM, Solana,
	// Tron, Litecoin, Bitcoin Cash, Dogecoin and Lightning wallets take no memo:
	// one there is a `400`. Alias: `destinationTag` or `destination_tag`.
	Memo Opt[string] `json:"memo"`

	// Optional, UTXO chains only. The deposit transaction's inputs and outputs: the
	// sender's wallet is the declared `originator_data.wallet_address`, else the
	// largest input.
	Utxo Opt[TravelRuleUtxo] `json:"utxo"`
}

TravelRuleInboundRequest is a request object.

func (TravelRuleInboundRequest) MarshalJSON

func (r TravelRuleInboundRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleInboundRequestOriginatingVASP

type TravelRuleInboundRequestOriginatingVASP struct {
	Name Opt[string] `json:"name"`

	// Optional. A valid 20-character ISO 17442 LEI, or empty.
	Lei Opt[string] `json:"lei"`

	// The sender's travel address, recorded on this transfer.
	TravelAddress Opt[string] `json:"travel_address"`
}

TravelRuleInboundRequestOriginatingVASP: Optional description of the sending VASP. It stays on this transfer only (`metadata.originating_vasp`, and the transfer's originator VASP in GET /v3/travel-rule/transfers/); it never creates, edits or links a shared VASP directory entry.

func (TravelRuleInboundRequestOriginatingVASP) MarshalJSON

func (r TravelRuleInboundRequestOriginatingVASP) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleInboundResponse

type TravelRuleInboundResponse struct {
	// Didit transaction UUID for the inbound deposit.
	TransactionID string `json:"transaction_id"`

	// txn_id of the inbound transaction: Didit-generated when Didit created the
	// transaction, or your own when an unclaimed deposit was reused.
	TxnID string `json:"txn_id"`

	// true when this call registered the transfer (HTTP 201); false when a transfer
	// for the same txid and wallet_address already existed (HTTP 200).
	Created    bool                     `json:"created"`
	TravelRule TravelRuleTransferDetail `json:"travel_rule"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleInboundResponse is a response object.

func (*TravelRuleInboundResponse) UnmarshalJSON

func (r *TravelRuleInboundResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleInboundResponse leniently.

type TravelRuleListVASPsParams

type TravelRuleListVASPsParams struct {
	// A name or alias fragment (case-insensitive), an exact LEI, or a domain
	// (example.com or a URL on it). Didit network members match on their legal
	// name, LEI or the domain of their compliance email.
	Search Opt[string] `json:"-" query:"search"`

	// Only directory entries a network's member directory currently lists.
	Network Opt[TravelRuleListVASPsParamsNetwork] `json:"-" query:"network"`

	// ISO 3166 alpha-2 or alpha-3 country code. 400 for anything else.
	Jurisdiction Opt[string] `json:"-" query:"jurisdiction"`

	// true: only VASPs your application has an available route to (Didit network
	// members included). false: only directory entries it cannot reach today.
	Reachable Opt[bool] `json:"-" query:"reachable"`

	// Only directory entries, or only Didit network members.
	Kind Opt[TravelRuleListVASPsParamsKind] `json:"-" query:"kind"`

	// Only directory entries whose risk_level is this band. Didit network members,
	// which are not scored, never match.
	Risk Opt[TravelRuleListVASPsParamsRisk] `json:"-" query:"risk"`

	// Only directory entries whose responsiveness.status is this value. Didit
	// network members never match.
	Responsiveness Opt[TravelRuleListVASPsParamsResponsiveness] `json:"-" query:"responsiveness"`
	Limit          Opt[int64]                                   `json:"-" query:"limit"`
	Offset         Opt[int64]                                   `json:"-" query:"offset"`
}

TravelRuleListVASPsParams holds the parameters of Client.TravelRule.ListVASPs.

func (TravelRuleListVASPsParams) MarshalJSON

func (r TravelRuleListVASPsParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleListVASPsParamsKind

type TravelRuleListVASPsParamsKind string

TravelRuleListVASPsParamsKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleListVASPsParamsKindDirectory TravelRuleListVASPsParamsKind = "directory"
	TravelRuleListVASPsParamsKindDidit     TravelRuleListVASPsParamsKind = "didit"
)

Known values of TravelRuleListVASPsParamsKind.

type TravelRuleListVASPsParamsNetwork

type TravelRuleListVASPsParamsNetwork string

TravelRuleListVASPsParamsNetwork is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleListVASPsParamsNetworkGtr        TravelRuleListVASPsParamsNetwork = "GTR"
	TravelRuleListVASPsParamsNetworkTrust      TravelRuleListVASPsParamsNetwork = "TRUST"
	TravelRuleListVASPsParamsNetworkVerifyvasp TravelRuleListVASPsParamsNetwork = "VERIFYVASP"
	TravelRuleListVASPsParamsNetworkSygna      TravelRuleListVASPsParamsNetwork = "SYGNA"
	TravelRuleListVASPsParamsNetworkTrisa      TravelRuleListVASPsParamsNetwork = "TRISA"
)

Known values of TravelRuleListVASPsParamsNetwork.

type TravelRuleListVASPsParamsResponsiveness

type TravelRuleListVASPsParamsResponsiveness string

TravelRuleListVASPsParamsResponsiveness is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleListVASPsParamsResponsivenessResponsive   TravelRuleListVASPsParamsResponsiveness = "RESPONSIVE"
	TravelRuleListVASPsParamsResponsivenessUnresponsive TravelRuleListVASPsParamsResponsiveness = "UNRESPONSIVE"
	TravelRuleListVASPsParamsResponsivenessUnknown      TravelRuleListVASPsParamsResponsiveness = "UNKNOWN"
)

Known values of TravelRuleListVASPsParamsResponsiveness.

type TravelRuleListVASPsParamsRisk

type TravelRuleListVASPsParamsRisk string

TravelRuleListVASPsParamsRisk is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleListVASPsParamsRiskLow    TravelRuleListVASPsParamsRisk = "LOW"
	TravelRuleListVASPsParamsRiskMedium TravelRuleListVASPsParamsRisk = "MEDIUM"
	TravelRuleListVASPsParamsRiskHigh   TravelRuleListVASPsParamsRisk = "HIGH"
)

Known values of TravelRuleListVASPsParamsRisk.

type TravelRuleMatchingRules

type TravelRuleMatchingRules struct {
	// Rules for a natural person.
	Individual TravelRuleMatchingRulesIndividual `json:"individual"`

	// Rules for a legal person.
	Company TravelRuleMatchingRulesCompany `json:"company"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleMatchingRules: How strictly each field of the counterparty's data is compared with what you hold, per entity type. A field you leave out keeps its default. `NONE` skips the comparison, `STRICT` needs exactly the same words, `CONTAINS` accepts one value whose words all appear in the other, `DEFAULT` is the standard subset match, and `FUZZY` accepts close spellings (and, for dates of birth, a swapped day and month).

func (*TravelRuleMatchingRules) UnmarshalJSON

func (r *TravelRuleMatchingRules) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleMatchingRules leniently.

type TravelRuleMatchingRulesCompany

type TravelRuleMatchingRulesCompany struct {
	// Default: follows `name_matching_strictness`.
	Name TravelRuleMatchingRulesCompanyName `json:"name"`

	// Default `NONE`.
	Address TravelRuleMatchingRulesCompanyAddress `json:"address"`

	// The wallet the exchange was routed by. Default `STRICT`.
	Account TravelRuleMatchingRulesCompanyAccount `json:"account"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleMatchingRulesCompany: Rules for a legal person.

func (*TravelRuleMatchingRulesCompany) UnmarshalJSON

func (r *TravelRuleMatchingRulesCompany) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleMatchingRulesCompany leniently.

type TravelRuleMatchingRulesCompanyAccount

type TravelRuleMatchingRulesCompanyAccount string

TravelRuleMatchingRulesCompanyAccount: The wallet the exchange was routed by. Default `STRICT`.

TravelRuleMatchingRulesCompanyAccount is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleMatchingRulesCompanyAccountNone     TravelRuleMatchingRulesCompanyAccount = "NONE"
	TravelRuleMatchingRulesCompanyAccountStrict   TravelRuleMatchingRulesCompanyAccount = "STRICT"
	TravelRuleMatchingRulesCompanyAccountContains TravelRuleMatchingRulesCompanyAccount = "CONTAINS"
	TravelRuleMatchingRulesCompanyAccountDefault  TravelRuleMatchingRulesCompanyAccount = "DEFAULT"
	TravelRuleMatchingRulesCompanyAccountFuzzy    TravelRuleMatchingRulesCompanyAccount = "FUZZY"
)

Known values of TravelRuleMatchingRulesCompanyAccount.

type TravelRuleMatchingRulesCompanyAddress

type TravelRuleMatchingRulesCompanyAddress string

TravelRuleMatchingRulesCompanyAddress: Default `NONE`.

TravelRuleMatchingRulesCompanyAddress is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleMatchingRulesCompanyAddressNone     TravelRuleMatchingRulesCompanyAddress = "NONE"
	TravelRuleMatchingRulesCompanyAddressStrict   TravelRuleMatchingRulesCompanyAddress = "STRICT"
	TravelRuleMatchingRulesCompanyAddressContains TravelRuleMatchingRulesCompanyAddress = "CONTAINS"
	TravelRuleMatchingRulesCompanyAddressDefault  TravelRuleMatchingRulesCompanyAddress = "DEFAULT"
	TravelRuleMatchingRulesCompanyAddressFuzzy    TravelRuleMatchingRulesCompanyAddress = "FUZZY"
)

Known values of TravelRuleMatchingRulesCompanyAddress.

type TravelRuleMatchingRulesCompanyName

type TravelRuleMatchingRulesCompanyName string

TravelRuleMatchingRulesCompanyName: Default: follows `name_matching_strictness`.

TravelRuleMatchingRulesCompanyName is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleMatchingRulesCompanyNameNone     TravelRuleMatchingRulesCompanyName = "NONE"
	TravelRuleMatchingRulesCompanyNameStrict   TravelRuleMatchingRulesCompanyName = "STRICT"
	TravelRuleMatchingRulesCompanyNameContains TravelRuleMatchingRulesCompanyName = "CONTAINS"
	TravelRuleMatchingRulesCompanyNameDefault  TravelRuleMatchingRulesCompanyName = "DEFAULT"
	TravelRuleMatchingRulesCompanyNameFuzzy    TravelRuleMatchingRulesCompanyName = "FUZZY"
)

Known values of TravelRuleMatchingRulesCompanyName.

type TravelRuleMatchingRulesIndividual

type TravelRuleMatchingRulesIndividual struct {
	// Default: follows `name_matching_strictness`.
	Name TravelRuleMatchingRulesIndividualName `json:"name"`

	// Default `NONE`.
	DateOfBirth TravelRuleMatchingRulesIndividualDateOfBirth `json:"date_of_birth"`

	// Default `NONE`.
	Address TravelRuleMatchingRulesIndividualAddress `json:"address"`

	// The wallet the exchange was routed by. Default `STRICT`.
	Account TravelRuleMatchingRulesIndividualAccount `json:"account"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleMatchingRulesIndividual: Rules for a natural person.

func (*TravelRuleMatchingRulesIndividual) UnmarshalJSON

func (r *TravelRuleMatchingRulesIndividual) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleMatchingRulesIndividual leniently.

type TravelRuleMatchingRulesIndividualAccount

type TravelRuleMatchingRulesIndividualAccount string

TravelRuleMatchingRulesIndividualAccount: The wallet the exchange was routed by. Default `STRICT`.

TravelRuleMatchingRulesIndividualAccount is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleMatchingRulesIndividualAccountNone     TravelRuleMatchingRulesIndividualAccount = "NONE"
	TravelRuleMatchingRulesIndividualAccountStrict   TravelRuleMatchingRulesIndividualAccount = "STRICT"
	TravelRuleMatchingRulesIndividualAccountContains TravelRuleMatchingRulesIndividualAccount = "CONTAINS"
	TravelRuleMatchingRulesIndividualAccountDefault  TravelRuleMatchingRulesIndividualAccount = "DEFAULT"
	TravelRuleMatchingRulesIndividualAccountFuzzy    TravelRuleMatchingRulesIndividualAccount = "FUZZY"
)

Known values of TravelRuleMatchingRulesIndividualAccount.

type TravelRuleMatchingRulesIndividualAddress

type TravelRuleMatchingRulesIndividualAddress string

TravelRuleMatchingRulesIndividualAddress: Default `NONE`.

TravelRuleMatchingRulesIndividualAddress is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleMatchingRulesIndividualAddressNone     TravelRuleMatchingRulesIndividualAddress = "NONE"
	TravelRuleMatchingRulesIndividualAddressStrict   TravelRuleMatchingRulesIndividualAddress = "STRICT"
	TravelRuleMatchingRulesIndividualAddressContains TravelRuleMatchingRulesIndividualAddress = "CONTAINS"
	TravelRuleMatchingRulesIndividualAddressDefault  TravelRuleMatchingRulesIndividualAddress = "DEFAULT"
	TravelRuleMatchingRulesIndividualAddressFuzzy    TravelRuleMatchingRulesIndividualAddress = "FUZZY"
)

Known values of TravelRuleMatchingRulesIndividualAddress.

type TravelRuleMatchingRulesIndividualDateOfBirth

type TravelRuleMatchingRulesIndividualDateOfBirth string

TravelRuleMatchingRulesIndividualDateOfBirth: Default `NONE`.

TravelRuleMatchingRulesIndividualDateOfBirth is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleMatchingRulesIndividualDateOfBirthNone     TravelRuleMatchingRulesIndividualDateOfBirth = "NONE"
	TravelRuleMatchingRulesIndividualDateOfBirthStrict   TravelRuleMatchingRulesIndividualDateOfBirth = "STRICT"
	TravelRuleMatchingRulesIndividualDateOfBirthContains TravelRuleMatchingRulesIndividualDateOfBirth = "CONTAINS"
	TravelRuleMatchingRulesIndividualDateOfBirthDefault  TravelRuleMatchingRulesIndividualDateOfBirth = "DEFAULT"
	TravelRuleMatchingRulesIndividualDateOfBirthFuzzy    TravelRuleMatchingRulesIndividualDateOfBirth = "FUZZY"
)

Known values of TravelRuleMatchingRulesIndividualDateOfBirth.

type TravelRuleMatchingRulesIndividualName

type TravelRuleMatchingRulesIndividualName string

TravelRuleMatchingRulesIndividualName: Default: follows `name_matching_strictness`.

TravelRuleMatchingRulesIndividualName is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleMatchingRulesIndividualNameNone     TravelRuleMatchingRulesIndividualName = "NONE"
	TravelRuleMatchingRulesIndividualNameStrict   TravelRuleMatchingRulesIndividualName = "STRICT"
	TravelRuleMatchingRulesIndividualNameContains TravelRuleMatchingRulesIndividualName = "CONTAINS"
	TravelRuleMatchingRulesIndividualNameDefault  TravelRuleMatchingRulesIndividualName = "DEFAULT"
	TravelRuleMatchingRulesIndividualNameFuzzy    TravelRuleMatchingRulesIndividualName = "FUZZY"
)

Known values of TravelRuleMatchingRulesIndividualName.

type TravelRuleMatchingRulesParam

type TravelRuleMatchingRulesParam struct {
	// Rules for a natural person.
	Individual Opt[TravelRuleMatchingRulesParamIndividual] `json:"individual"`

	// Rules for a legal person.
	Company Opt[TravelRuleMatchingRulesParamCompany] `json:"company"`
}

TravelRuleMatchingRulesParam: How strictly each field of the counterparty's data is compared with what you hold, per entity type. A field you leave out keeps its default. `NONE` skips the comparison, `STRICT` needs exactly the same words, `CONTAINS` accepts one value whose words all appear in the other, `DEFAULT` is the standard subset match, and `FUZZY` accepts close spellings (and, for dates of birth, a swapped day and month).

func (TravelRuleMatchingRulesParam) MarshalJSON

func (r TravelRuleMatchingRulesParam) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleMatchingRulesParamCompany

type TravelRuleMatchingRulesParamCompany struct {
	// Default: follows `name_matching_strictness`.
	Name Opt[TravelRuleMatchingRulesCompanyName] `json:"name"`

	// Default `NONE`.
	Address Opt[TravelRuleMatchingRulesCompanyAddress] `json:"address"`

	// The wallet the exchange was routed by. Default `STRICT`.
	Account Opt[TravelRuleMatchingRulesCompanyAccount] `json:"account"`
}

TravelRuleMatchingRulesParamCompany: Rules for a legal person.

func (TravelRuleMatchingRulesParamCompany) MarshalJSON

func (r TravelRuleMatchingRulesParamCompany) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleMatchingRulesParamIndividual

type TravelRuleMatchingRulesParamIndividual struct {
	// Default: follows `name_matching_strictness`.
	Name Opt[TravelRuleMatchingRulesIndividualName] `json:"name"`

	// Default `NONE`.
	DateOfBirth Opt[TravelRuleMatchingRulesIndividualDateOfBirth] `json:"date_of_birth"`

	// Default `NONE`.
	Address Opt[TravelRuleMatchingRulesIndividualAddress] `json:"address"`

	// The wallet the exchange was routed by. Default `STRICT`.
	Account Opt[TravelRuleMatchingRulesIndividualAccount] `json:"account"`
}

TravelRuleMatchingRulesParamIndividual: Rules for a natural person.

func (TravelRuleMatchingRulesParamIndividual) MarshalJSON

func (r TravelRuleMatchingRulesParamIndividual) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleMessage

type TravelRuleMessage struct {
	ID   string                `json:"id"`
	Kind TravelRuleMessageKind `json:"kind"`

	// `OUTBOUND` is what the reader's own side sent. In the pickup portal the
	// direction is from the counterparty's side.
	Direction TravelRuleMessageDirection `json:"direction"`

	// Who wrote it on its own side: a console user's email or an API key label, or
	// the other VASP's name.
	Author string `json:"author"`
	Body   string `json:"body"`

	// What a DOCUMENT_REQUEST asks for, in the requester's words.
	RequestedDocuments []string `json:"requested_documents"`
	ReplyTo            string   `json:"reply_to"`

	// Set on a DOCUMENT_REQUEST once a reply to it carries a document.
	FulfilledAt time.Time                   `json:"fulfilled_at"`
	Attachment  TravelRuleMessageAttachment `json:"attachment"`
	CreatedAt   time.Time                   `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleMessage is a response object.

func (*TravelRuleMessage) UnmarshalJSON

func (r *TravelRuleMessage) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleMessage leniently.

type TravelRuleMessageAttachment

type TravelRuleMessageAttachment struct {
	UUID  string `json:"uuid"`
	Label string `json:"label"`
	Note  string `json:"note"`

	// Who attached it. In the pickup portal, a file you sent shows your VASP name,
	// never the person or API key behind it.
	UploadedBy string                             `json:"uploaded_by"`
	CreatedAt  time.Time                          `json:"created_at"`
	Files      []TravelRuleMessageAttachmentFiles `json:"files"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleMessageAttachment: The document attached to a message, stored like any other transaction document.

func (*TravelRuleMessageAttachment) UnmarshalJSON

func (r *TravelRuleMessageAttachment) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleMessageAttachment leniently.

type TravelRuleMessageAttachmentFiles

type TravelRuleMessageAttachmentFiles struct {
	UUID string `json:"uuid"`

	// Time-limited download URL.
	FileURL          string `json:"file_url"`
	OriginalFilename string `json:"original_filename"`
	FileSize         int64  `json:"file_size"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleMessageAttachmentFiles is a response object.

func (*TravelRuleMessageAttachmentFiles) UnmarshalJSON

func (r *TravelRuleMessageAttachmentFiles) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleMessageAttachmentFiles leniently.

type TravelRuleMessageCreateRequest

type TravelRuleMessageCreateRequest struct {
	Kind Opt[TravelRuleMessageCreateRequestKind] `json:"kind"`

	// Required for a MESSAGE unless a file is attached.
	Body Opt[string] `json:"body"`

	// Required (at least one) for a DOCUMENT_REQUEST, and only allowed there.
	RequestedDocuments Opt[[]string] `json:"requested_documents"`

	// A message of the same transfer. A reply that carries a document fulfils the
	// document request it answers.
	ReplyTo Opt[string] `json:"reply_to"`

	// Multipart only. Up to 5 files of 10 MB each.
	Files Opt[[]File] `json:"files"`
}

TravelRuleMessageCreateRequest: Send as JSON, or as multipart/form-data with the attachments in `files`.

func (TravelRuleMessageCreateRequest) MarshalJSON

func (r TravelRuleMessageCreateRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleMessageCreateRequestKind

type TravelRuleMessageCreateRequestKind string

TravelRuleMessageCreateRequestKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleMessageCreateRequestKindMessage         TravelRuleMessageCreateRequestKind = "MESSAGE"
	TravelRuleMessageCreateRequestKindDocumentRequest TravelRuleMessageCreateRequestKind = "DOCUMENT_REQUEST"
)

Known values of TravelRuleMessageCreateRequestKind.

type TravelRuleMessageDirection

type TravelRuleMessageDirection string

TravelRuleMessageDirection: `OUTBOUND` is what the reader's own side sent. In the pickup portal the direction is from the counterparty's side.

TravelRuleMessageDirection is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleMessageDirectionInbound  TravelRuleMessageDirection = "INBOUND"
	TravelRuleMessageDirectionOutbound TravelRuleMessageDirection = "OUTBOUND"
)

Known values of TravelRuleMessageDirection.

type TravelRuleMessageKind

type TravelRuleMessageKind string

TravelRuleMessageKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleMessageKindMessage         TravelRuleMessageKind = "MESSAGE"
	TravelRuleMessageKindDocumentRequest TravelRuleMessageKind = "DOCUMENT_REQUEST"
)

Known values of TravelRuleMessageKind.

type TravelRuleNameMatch

type TravelRuleNameMatch struct {
	// Similarity of the two full names, 0 to 100. 0 when either name is blank.
	Score int64 `json:"score"`

	// Whether the names satisfy `strictness`. The transfer's outcome follows
	// `data_match`, which compares every field, so a transfer can be
	// COUNTERPARTY_MISMATCHED_DATA while this is true.
	Matched bool `json:"matched"`

	// How `matched` was decided: none (`NONE`), exact_token (`STRICT`),
	// token_subset (`DEFAULT`), token_containment (`CONTAINS`) or sequence_ratio
	// (`FUZZY`).
	Method     TravelRuleNameMatchMethod     `json:"method"`
	Strictness TravelRuleNameMatchStrictness `json:"strictness"`

	// wallet_holder: the holder recorded for the wallet. counterparty_vasp: the
	// name the counterparty answered on the email response page, or the Didit Test
	// VASP's answer in sandbox.
	ComparedWith TravelRuleNameMatchComparedWith `json:"compared_with"`

	// The name on the transfer.
	TransferName string `json:"transfer_name"`

	// The name it was compared with.
	ComparedName string `json:"compared_name"`

	// Words of `transfer_name` found in `compared_name`.
	MatchedNames []string `json:"matched_names"`

	// Words of `transfer_name` missing from `compared_name`, then words of
	// `compared_name` missing from `transfer_name`.
	MismatchedNames []string `json:"mismatched_names"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleNameMatch: The name comparison that decided the transfer, or null until one ran. While the parties are masked, and on the other customer's copy of an INTERNAL exchange, `transfer_name`, `compared_name`, `matched_names` and `mismatched_names` are hidden. `score` and `matched` can disagree: `matched` follows the strictness, `score` is the similarity of the two full names.

func (*TravelRuleNameMatch) UnmarshalJSON

func (r *TravelRuleNameMatch) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleNameMatch leniently.

type TravelRuleNameMatchComparedWith

type TravelRuleNameMatchComparedWith string

TravelRuleNameMatchComparedWith: wallet_holder: the holder recorded for the wallet. counterparty_vasp: the name the counterparty answered on the email response page, or the Didit Test VASP's answer in sandbox.

TravelRuleNameMatchComparedWith is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleNameMatchComparedWithWalletHolder     TravelRuleNameMatchComparedWith = "wallet_holder"
	TravelRuleNameMatchComparedWithCounterpartyVASP TravelRuleNameMatchComparedWith = "counterparty_vasp"
)

Known values of TravelRuleNameMatchComparedWith.

type TravelRuleNameMatchMethod

type TravelRuleNameMatchMethod string

TravelRuleNameMatchMethod: How `matched` was decided: none (`NONE`), exact_token (`STRICT`), token_subset (`DEFAULT`), token_containment (`CONTAINS`) or sequence_ratio (`FUZZY`).

TravelRuleNameMatchMethod is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleNameMatchMethodNone             TravelRuleNameMatchMethod = "none"
	TravelRuleNameMatchMethodExactToken       TravelRuleNameMatchMethod = "exact_token"
	TravelRuleNameMatchMethodTokenSubset      TravelRuleNameMatchMethod = "token_subset"
	TravelRuleNameMatchMethodTokenContainment TravelRuleNameMatchMethod = "token_containment"
	TravelRuleNameMatchMethodSequenceRatio    TravelRuleNameMatchMethod = "sequence_ratio"
)

Known values of TravelRuleNameMatchMethod.

type TravelRuleNameMatchStrictness

type TravelRuleNameMatchStrictness string

TravelRuleNameMatchStrictness is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleNameMatchStrictnessNone     TravelRuleNameMatchStrictness = "NONE"
	TravelRuleNameMatchStrictnessStrict   TravelRuleNameMatchStrictness = "STRICT"
	TravelRuleNameMatchStrictnessContains TravelRuleNameMatchStrictness = "CONTAINS"
	TravelRuleNameMatchStrictnessDefault  TravelRuleNameMatchStrictness = "DEFAULT"
	TravelRuleNameMatchStrictnessFuzzy    TravelRuleNameMatchStrictness = "FUZZY"
)

Known values of TravelRuleNameMatchStrictness.

type TravelRuleNextAction

type TravelRuleNextAction struct {
	// `select_counterparty_vasp`: the end user picks the destination VASP in the
	// wallet-ownership widget. `declare_self_hosted`: the end user declares the
	// wallet self-hosted in the widget. `add_vasp_hint`: tell Didit who the
	// counterparty is, with a VASP name, LEI or travel address (for example a
	// `travel_address` on the destination wallet's address-book entry), then
	// resend. `update_compliance_email` and `resend` are `action` values of `PATCH
	// /v3/transactions/{transaction_id}/travel-rule/`: give the counterparty's
	// compliance email again, and re-run routing.
	Action TravelRuleNextActionAction `json:"action"`

	// The wallet-ownership widget link, on `select_counterparty_vasp` and
	// `declare_self_hosted` while the transfer has an open widget session.
	URL string `json:"url"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleNextAction: One thing that moves a `COUNTERPARTY_VASP_NOT_FOUND` or `COUNTERPARTY_VASP_NOT_REACHABLE` transfer on. See [Why a transfer is stuck](/transaction-monitoring/travel-rule#why-a-transfer-is-stuck).

func (*TravelRuleNextAction) UnmarshalJSON

func (r *TravelRuleNextAction) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleNextAction leniently.

type TravelRuleNextActionAction

type TravelRuleNextActionAction string

TravelRuleNextActionAction: `select_counterparty_vasp`: the end user picks the destination VASP in the wallet-ownership widget. `declare_self_hosted`: the end user declares the wallet self-hosted in the widget. `add_vasp_hint`: tell Didit who the counterparty is, with a VASP name, LEI or travel address (for example a `travel_address` on the destination wallet's address-book entry), then resend. `update_compliance_email` and `resend` are `action` values of `PATCH /v3/transactions/{transaction_id}/travel-rule/`: give the counterparty's compliance email again, and re-run routing.

TravelRuleNextActionAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleNextActionActionSelectCounterpartyVASP TravelRuleNextActionAction = "select_counterparty_vasp"
	TravelRuleNextActionActionDeclareSelfHosted      TravelRuleNextActionAction = "declare_self_hosted"
	TravelRuleNextActionActionAddVASPHint            TravelRuleNextActionAction = "add_vasp_hint"
	TravelRuleNextActionActionUpdateComplianceEmail  TravelRuleNextActionAction = "update_compliance_email"
	TravelRuleNextActionActionResend                 TravelRuleNextActionAction = "resend"
)

Known values of TravelRuleNextActionAction.

type TravelRuleOwnershipConfirmRequest

type TravelRuleOwnershipConfirmRequest struct {
	// true to confirm ownership, false to deny it. Required.
	Confirmed bool `json:"confirmed"`

	// Inbound TRP transfers: the payment address Didit returns to the originating
	// VASP when you approve. Defaults to the matched address book entry's address,
	// then beneficiary_data.wallet_address. On a declared self-hosted wallet
	// transfer that names no counterparty wallet, the wallet whose ownership you
	// verified; without it the request is rejected with 400. Ignored for other
	// transfers.
	WalletAddress Opt[string] `json:"wallet_address"`
}

TravelRuleOwnershipConfirmRequest is a request object.

func (TravelRuleOwnershipConfirmRequest) MarshalJSON

func (r TravelRuleOwnershipConfirmRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleSendComplianceEmailConfirmationResponse

type TravelRuleSendComplianceEmailConfirmationResponse struct {
	SentTo string `json:"sent_to"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleSendComplianceEmailConfirmationResponse is a response object.

func (*TravelRuleSendComplianceEmailConfirmationResponse) UnmarshalJSON

UnmarshalJSON decodes TravelRuleSendComplianceEmailConfirmationResponse leniently.

type TravelRuleService

type TravelRuleService struct {
	CounterpartyContacts *TravelRuleCounterpartyContactsService
	Transfers            *TravelRuleTransfersService
	WalletAddresses      *TravelRuleWalletAddressesService
	Workspace            *TravelRuleWorkspaceService
	// contains filtered or unexported fields
}

TravelRuleService holds the travel_rule operations. Use it through Client.TravelRule.

func (*TravelRuleService) ClearVASPDecision

ClearVASPDecision: Clear your decision on a VASP.

Clear your application's own decision on a counterparty. The response shows the decision that applies afterwards: null, or for an entity of a brand the brand's decision, which the entity follows again.

DELETE /v3/travel-rule/vasps/{vasp_id}/decision/

func (*TravelRuleService) CreateWidgetSession

CreateWidgetSession: Mint a wallet-ownership widget session.

Mint a hosted wallet-ownership widget URL/token. Send the customer to the returned url to prove control of a wallet (message signing, Satoshi test, screenshot, or self-declaration). The widget is web-only in this release - open the url in the system browser or a custom tab, never inside a mobile SDK webview.

POST /v3/travel-rule/widget-session/

func (*TravelRuleService) ListVASPQuestionnaires

func (r *TravelRuleService) ListVASPQuestionnaires(ctx context.Context, vaspID string, opts ...option.RequestOption) (*TravelRuleCounterpartyQuestionnaireList, error)

ListVASPQuestionnaires: List due-diligence questionnaires with a VASP.

Every due-diligence questionnaire your application sent the counterparty, newest first, with its status and, once answered, the answers. Private to your application.

GET /v3/travel-rule/vasps/{vasp_id}/questionnaires/

func (*TravelRuleService) ListVASPs

ListVASPs: Search the VASP directory.

Paginated, name-sorted search of the VASP directory: the shared directory entries, which Didit builds from the ESMA interim MiCA register, the public TRISA directory, the global LEI register and its own curation, plus the members of the Didit network. Each row carries the routes your application has to it today. Your own application's profile is never listed. Rows also carry the shared due-diligence assessment and your application's own decision, entity screening and questionnaires.

It returns one page; ListVASPsAutoPaging iterates over every item of every page.

GET /v3/travel-rule/vasps/

func (*TravelRuleService) ListVASPsAutoPaging

ListVASPsAutoPaging iterates over every item of every page of ListVASPs, fetching pages as needed.

func (*TravelRuleService) RegisterInbound

RegisterInbound: Register an after-deposit (sunrise) inbound transfer.

Register Travel Rule data for a crypto deposit that already settled on-chain before any exchange took place. Creates an inbound travelRule transaction (or reuses an unclaimed deposit) and resolves the transfer against your wallet address book. For a newly created transaction, Didit sends transaction.created first and the travel_rule.status.updated webhooks after it.

POST /v3/travel-rule/inbound/

func (*TravelRuleService) RetrieveSettings

func (r *TravelRuleService) RetrieveSettings(ctx context.Context, opts ...option.RequestOption) (*TravelRuleSettingsDetail, error)

RetrieveSettings: Get Travel Rule settings.

Read the application's Travel Rule settings and VASP profile. Auto-creates a default (disabled) settings row and an empty profile on first read.

GET /v3/travel-rule/settings/

func (*TravelRuleService) RetrieveVASP

func (r *TravelRuleService) RetrieveVASP(ctx context.Context, vaspID string, opts ...option.RequestOption) (*VASPDirectoryEntry, error)

RetrieveVASP: Get a VASP directory entry.

One directory entry or Didit network member by the id the search returned, with the same fields and the routes your application has to it.

GET /v3/travel-rule/vasps/{vasp_id}/

func (*TravelRuleService) RetrieveVASPDecision

func (r *TravelRuleService) RetrieveVASPDecision(ctx context.Context, vaspID string, opts ...option.RequestOption) (*TravelRuleCounterpartyDecisionResponse, error)

RetrieveVASPDecision: Get your decision on a VASP.

Your application's decision on a counterparty (a directory entry or a Didit network member): approved, restricted or blocked. An entity of a brand with no decision of its own follows the brand's decision, named in inherited_from. Private to your application.

GET /v3/travel-rule/vasps/{vasp_id}/decision/

func (*TravelRuleService) RetrieveVASPScreening

func (r *TravelRuleService) RetrieveVASPScreening(ctx context.Context, vaspID string, opts ...option.RequestOption) (*TravelRuleCounterpartyScreeningStatus, error)

RetrieveVASPScreening: Get a VASP's entity screening.

Whether counterparty screening is on for your application, what one screening costs your organization, how long a result stays fresh, and your latest sanctions and adverse-media screening of the counterparty. Reading it is free.

GET /v3/travel-rule/vasps/{vasp_id}/screening/

func (*TravelRuleService) ScreenVASP

ScreenVASP: Screen a VASP.

Screen the counterparty entity against sanctions and adverse media for your application. Opt-in: counterparty_screening_enabled must be on in your Travel Rule settings. Each new screening is billed at your organization's Company AML Screening price; a screening younger than 30 days is returned instead (200, not billed) unless you send refresh: true. One screening of a counterparty runs at a time per application. The result is private to your application. Sandbox applications are never screened.

POST /v3/travel-rule/vasps/{vasp_id}/screening/

func (*TravelRuleService) SendComplianceEmailConfirmation

SendComplianceEmailConfirmation: Send the compliance email confirmation.

Emails a single-use confirmation link to your VASP profile's compliance_email. Opening the link and pressing its confirm button confirms the address, which the Didit network needs before it lists your profile. A new request replaces the previous link; the link stops working when the compliance email changes. One email per minute per address.

POST /v3/travel-rule/settings/compliance-email/confirmation/

func (*TravelRuleService) SendVASPQuestionnaire

SendVASPQuestionnaire: Send a due-diligence questionnaire to a VASP.

Email Didit's standard due-diligence questionnaire to a compliance address on record for the counterparty, with a single-use answer link. The counterparty has 30 days to answer every question; the answers stay current for 365 days. A new send replaces your earlier unanswered questionnaire to the same counterparty, whose link stops working. One email per minute per address.

POST /v3/travel-rule/vasps/{vasp_id}/questionnaires/

func (*TravelRuleService) UpdateSettings

UpdateSettings: Update Travel Rule settings.

Upsert the application's Travel Rule settings and VASP profile. Partial update - only send the fields you want to change. Setting `is_enabled: true` requires a non-blank `legal_name` (already stored or included in the same request), otherwise returns 400.

PUT /v3/travel-rule/settings/

func (*TravelRuleService) UpdateVASPDecision

UpdateVASPDecision: Set your decision on a VASP.

Make or change your application's decision on a counterparty: APPROVED, RESTRICTED or BLOCKED, with an optional reason. It never changes the shared directory entry and acts only through your transaction rules (counterparty_dd_status). A decision on a brand also covers each of its entities that has no decision of its own.

PUT /v3/travel-rule/vasps/{vasp_id}/decision/

type TravelRuleSettingsDetail

type TravelRuleSettingsDetail struct {
	// Whether the managed Travel Rule negotiation flow is active for outbound
	// `travelRule` transactions on this application.
	IsEnabled bool `json:"is_enabled"`

	// Your VASP's operating jurisdiction code. Default `"EU"`. Didit maps it to the
	// regime it stamps on your Travel Rule transactions as `travel_rule_regime`
	// (for example `EU` or an EU member code becomes `eu`), which transaction rules
	// can key on. Other Didit customers see it as your jurisdiction in the VASP
	// directory once the Didit network lists your profile.
	Jurisdiction string `json:"jurisdiction"`

	// How strictly beneficiary names must match before a transfer can reach
	// COMPLETED. `CONTAINS` accepts one name whose words all appear in the other.
	NameMatchingStrictness TravelRuleSettingsDetailNameMatchingStrictness `json:"name_matching_strictness"`

	// Hours an AWAITING_COUNTERPARTY transfer may remain unconfirmed before the
	// periodic sweeper expires it. Default 48.
	ConfirmationTimeoutHours int64 `json:"confirmation_timeout_hours"`

	// What happens to the underlying transaction when a transfer expires. Default
	// HOLD. sunrise_policy and non_responsive_policy take precedence when they
	// apply and are set.
	TimeoutOutcome TravelRuleSettingsDetailTimeoutOutcome `json:"timeout_outcome"`

	// Decimal string, in your application's default currency. Minimum transfer
	// amount that triggers a managed exchange; transfers below it resolve straight
	// to NOT_APPLICABLE. Didit compares the transaction amount converted to your
	// default currency, or the `amount_in_default_currency` you send; when no
	// converted amount is available, the threshold does not apply. Defaults to
	// "0.00" (EU TFR applies no minimum amount).
	ThresholdAmount string `json:"threshold_amount"`

	// How much proof a wallet's ownership takes. `FULL` always needs a proof
	// (signed message, test deposit or reviewed screenshot), never the end user's
	// word. `SIMPLIFIED` accepts a self-declaration below
	// `simplified_validation_threshold` and a proof above it. `AUTOMATED` lets the
	// address book and earlier proofs answer on their own, self-declarations
	// included while `allow_self_declaration` is true. Default `AUTOMATED`.
	OwnershipValidationMode TravelRuleSettingsDetailOwnershipValidationMode `json:"ownership_validation_mode"`

	// Decimal string, default "0.00". In `SIMPLIFIED` mode a transfer below this
	// amount (in the threshold currency) accepts a self-declaration. A transfer
	// with no amount in that currency counts as above it.
	SimplifiedValidationThreshold string                      `json:"simplified_validation_threshold"`
	DataSharingFields             TravelRuleDataSharingFields `json:"data_sharing_fields"`
	MatchingRules                 TravelRuleMatchingRules     `json:"matching_rules"`

	// Your VASP's legal name. Required (non-blank) to set is_enabled to true.
	LegalName string `json:"legal_name"`

	// Your Legal Entity Identifier, surfaced in the VASP directory.
	Lei string `json:"lei"`

	// Compliance contact email for your VASP profile. The Didit network lists your
	// profile only once this address is confirmed through an emailed link (POST
	// /v3/travel-rule/settings/compliance-email/confirmation/); changing it needs a
	// new confirmation.
	ComplianceEmail string `json:"compliance_email"`

	// Whether your VASP profile can be listed in the Didit network: found in GET
	// /v3/travel-rule/vasps/ by other Didit customers and reached on the INTERNAL
	// rail. Listing also needs a live application, Travel Rule on, a legal name and
	// a confirmed compliance email; didit_network says which are missing. Default
	// true.
	IsDiscoverable bool `json:"is_discoverable"`

	// When true, an inbound TRP inquiry whose beneficiary wallet is a verified
	// address-book entry with a matching name is approved automatically. When
	// false, that inquiry waits in ON_HOLD for you to approve or deny it with the
	// ownership endpoint. INTERNAL-rail and after-deposit transfers are not
	// affected. Default true.
	InboundAutoAccept bool `json:"inbound_auto_accept"`

	// When true, the wallet-ownership widget offers self-declaration as a fallback
	// proof method. Default true.
	AllowSelfDeclaration bool `json:"allow_self_declaration"`

	// When true, the wallet-ownership widget offers screenshot upload as an
	// ownership evidence method. Default true.
	AllowScreenshotProof bool `json:"allow_screenshot_proof"`

	// When true, submitting an outbound Travel Rule transfer that needs end-user
	// proof of wallet control auto-mints a wallet-ownership widget session bound to
	// the transaction and exposes it in the transaction's action_required block.
	// Default true.
	AutoWalletVerification bool `json:"auto_wallet_verification"`

	// When true, an outbound Travel Rule transfer that no rail can route is
	// attributed through blockchain analytics: the destination wallet is resolved
	// to its owning VASP, the entity is recorded on the transfer and in the VASP
	// directory, and the rails are re-run once with the attributed name. Default
	// true.
	VASPAttributionEnabled bool `json:"vasp_attribution_enabled"`

	// Opt-in sanctions and adverse-media screening of counterparty VASPs, billed
	// per screening at the Company AML Screening price. When on, Didit screens the
	// counterparty an outbound exchange reaches (reusing a screening younger than
	// 30 days) and you can screen one with POST
	// /v3/travel-rule/vasps/{vasp_id}/screening/. Default false: nothing is
	// screened or billed.
	CounterpartyScreeningEnabled bool `json:"counterparty_screening_enabled"`

	// What an expired transfer does to its transaction when the counterparty is a
	// directory entry in a jurisdiction on sunrise_jurisdictions, which does not
	// enforce the Travel Rule yet: HOLD moves it to review, REJECT declines it,
	// PROCEED leaves its status untouched. Empty (the default) follows
	// timeout_outcome. Applies before non_responsive_policy.
	SunrisePolicy TravelRuleSettingsDetailSunrisePolicy `json:"sunrise_policy"`

	// Read-only. The countries (ISO 3166 alpha-2) Didit treats as in a Travel Rule
	// sunrise period, where sunrise_policy applies. Currently CO, KH and VN. Any
	// other jurisdiction, and an empty or unknown one, follows timeout_outcome.
	SunriseJurisdictions []string `json:"sunrise_jurisdictions"`

	// What an expired transfer does to its transaction when the counterparty is a
	// directory entry whose responsiveness is UNRESPONSIVE: HOLD, REJECT or
	// PROCEED, as for timeout_outcome. Empty (the default) follows timeout_outcome.
	// sunrise_policy applies first when both fit.
	NonResponsivePolicy TravelRuleSettingsDetailNonResponsivePolicy `json:"non_responsive_policy"`

	// Read-only. Your VASP's own travel address - the encoded inbound TRP inquiry
	// endpoint other VASPs use to reach you. Empty while `is_enabled` is false.
	TravelAddress string `json:"travel_address"`

	// Networks opted out of platform membership. Does not disable your connected
	// own memberships or provision unavailable networks.
	DisabledNetworks []TravelRuleSettingsDetailDisabledNetworks `json:"disabled_networks"`

	// Effective membership configuration for each network. No network, including
	// GTR, is included by default. This is not a live health or delivery check.
	Networks TravelRuleSettingsDetailNetworks `json:"networks"`

	// Whether the Didit network lists your VASP profile, so other Didit customers
	// find it in the directory and reach it on the INTERNAL rail, and each
	// condition it still misses.
	DiditNetwork TravelRuleSettingsDetailDiditNetwork `json:"didit_network"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleSettingsDetail is a response object.

func (*TravelRuleSettingsDetail) UnmarshalJSON

func (r *TravelRuleSettingsDetail) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleSettingsDetail leniently.

type TravelRuleSettingsDetailDiditNetwork

type TravelRuleSettingsDetailDiditNetwork struct {
	Listed bool `json:"listed"`

	// Empty when listed. compliance_email_unconfirmed: send the confirmation with
	// POST /v3/travel-rule/settings/compliance-email/confirmation/ and open the
	// emailed link. excluded_by_staff: Didit marked the application as a test, demo
	// or internal one.
	Missing []TravelRuleSettingsDetailDiditNetworkMissing `json:"missing"`

	// Whether the current compliance_email was confirmed through the emailed link.
	ComplianceEmailConfirmed bool `json:"compliance_email_confirmed"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleSettingsDetailDiditNetwork: Whether the Didit network lists your VASP profile, so other Didit customers find it in the directory and reach it on the INTERNAL rail, and each condition it still misses.

func (*TravelRuleSettingsDetailDiditNetwork) UnmarshalJSON

func (r *TravelRuleSettingsDetailDiditNetwork) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleSettingsDetailDiditNetwork leniently.

type TravelRuleSettingsDetailDiditNetworkMissing

type TravelRuleSettingsDetailDiditNetworkMissing string

TravelRuleSettingsDetailDiditNetworkMissing is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsDetailDiditNetworkMissingTravelRuleOff              TravelRuleSettingsDetailDiditNetworkMissing = "travel_rule_off"
	TravelRuleSettingsDetailDiditNetworkMissingSandboxApplication         TravelRuleSettingsDetailDiditNetworkMissing = "sandbox_application"
	TravelRuleSettingsDetailDiditNetworkMissingNotDiscoverable            TravelRuleSettingsDetailDiditNetworkMissing = "not_discoverable"
	TravelRuleSettingsDetailDiditNetworkMissingLegalNameMissing           TravelRuleSettingsDetailDiditNetworkMissing = "legal_name_missing"
	TravelRuleSettingsDetailDiditNetworkMissingComplianceEmailMissing     TravelRuleSettingsDetailDiditNetworkMissing = "compliance_email_missing"
	TravelRuleSettingsDetailDiditNetworkMissingComplianceEmailUnconfirmed TravelRuleSettingsDetailDiditNetworkMissing = "compliance_email_unconfirmed"
	TravelRuleSettingsDetailDiditNetworkMissingExcludedByStaff            TravelRuleSettingsDetailDiditNetworkMissing = "excluded_by_staff"
	TravelRuleSettingsDetailDiditNetworkMissingInternalOrganization       TravelRuleSettingsDetailDiditNetworkMissing = "internal_organization"
)

Known values of TravelRuleSettingsDetailDiditNetworkMissing.

type TravelRuleSettingsDetailDisabledNetworks

type TravelRuleSettingsDetailDisabledNetworks string

TravelRuleSettingsDetailDisabledNetworks is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsDetailDisabledNetworksGtr        TravelRuleSettingsDetailDisabledNetworks = "GTR"
	TravelRuleSettingsDetailDisabledNetworksTrust      TravelRuleSettingsDetailDisabledNetworks = "TRUST"
	TravelRuleSettingsDetailDisabledNetworksVerifyvasp TravelRuleSettingsDetailDisabledNetworks = "VERIFYVASP"
	TravelRuleSettingsDetailDisabledNetworksSygna      TravelRuleSettingsDetailDisabledNetworks = "SYGNA"
)

Known values of TravelRuleSettingsDetailDisabledNetworks.

type TravelRuleSettingsDetailNameMatchingStrictness

type TravelRuleSettingsDetailNameMatchingStrictness string

TravelRuleSettingsDetailNameMatchingStrictness: How strictly beneficiary names must match before a transfer can reach COMPLETED. `CONTAINS` accepts one name whose words all appear in the other.

TravelRuleSettingsDetailNameMatchingStrictness is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsDetailNameMatchingStrictnessNone     TravelRuleSettingsDetailNameMatchingStrictness = "NONE"
	TravelRuleSettingsDetailNameMatchingStrictnessStrict   TravelRuleSettingsDetailNameMatchingStrictness = "STRICT"
	TravelRuleSettingsDetailNameMatchingStrictnessContains TravelRuleSettingsDetailNameMatchingStrictness = "CONTAINS"
	TravelRuleSettingsDetailNameMatchingStrictnessDefault  TravelRuleSettingsDetailNameMatchingStrictness = "DEFAULT"
	TravelRuleSettingsDetailNameMatchingStrictnessFuzzy    TravelRuleSettingsDetailNameMatchingStrictness = "FUZZY"
)

Known values of TravelRuleSettingsDetailNameMatchingStrictness.

type TravelRuleSettingsDetailNetworks

type TravelRuleSettingsDetailNetworks struct {
	Gtr        TravelRuleSettingsDetailNetworksGtr        `json:"gtr"`
	Trust      TravelRuleSettingsDetailNetworksTrust      `json:"trust"`
	Verifyvasp TravelRuleSettingsDetailNetworksVerifyvasp `json:"verifyvasp"`
	Sygna      TravelRuleSettingsDetailNetworksSygna      `json:"sygna"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleSettingsDetailNetworks: Effective membership configuration for each network. No network, including GTR, is included by default. This is not a live health or delivery check.

func (*TravelRuleSettingsDetailNetworks) UnmarshalJSON

func (r *TravelRuleSettingsDetailNetworks) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleSettingsDetailNetworks leniently.

type TravelRuleSettingsDetailNetworksGtr

type TravelRuleSettingsDetailNetworksGtr struct {
	Rail TravelRuleSettingsDetailNetworksGtrRail `json:"rail"`

	// own: connected customer membership takes precedence; didit: configured
	// platform membership allowed; off: platform routing disabled with no own
	// membership; unavailable: neither membership available.
	Mode TravelRuleSettingsDetailNetworksGtrMode `json:"mode"`

	// Whether platform membership is configured; not a live health check.
	PlatformAvailable bool `json:"platform_available"`

	// Whether a connected customer membership exists. Credentials are validated
	// locally; network validation occurs on a live exchange.
	Connected bool `json:"connected"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleSettingsDetailNetworksGtr is a response object.

func (*TravelRuleSettingsDetailNetworksGtr) UnmarshalJSON

func (r *TravelRuleSettingsDetailNetworksGtr) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleSettingsDetailNetworksGtr leniently.

type TravelRuleSettingsDetailNetworksGtrMode

type TravelRuleSettingsDetailNetworksGtrMode string

TravelRuleSettingsDetailNetworksGtrMode: own: connected customer membership takes precedence; didit: configured platform membership allowed; off: platform routing disabled with no own membership; unavailable: neither membership available.

TravelRuleSettingsDetailNetworksGtrMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsDetailNetworksGtrModeOwn         TravelRuleSettingsDetailNetworksGtrMode = "own"
	TravelRuleSettingsDetailNetworksGtrModeDidit       TravelRuleSettingsDetailNetworksGtrMode = "didit"
	TravelRuleSettingsDetailNetworksGtrModeOff         TravelRuleSettingsDetailNetworksGtrMode = "off"
	TravelRuleSettingsDetailNetworksGtrModeUnavailable TravelRuleSettingsDetailNetworksGtrMode = "unavailable"
)

Known values of TravelRuleSettingsDetailNetworksGtrMode.

type TravelRuleSettingsDetailNetworksGtrRail

type TravelRuleSettingsDetailNetworksGtrRail string

TravelRuleSettingsDetailNetworksGtrRail is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsDetailNetworksGtrRailGtr TravelRuleSettingsDetailNetworksGtrRail = "GTR"
)

Known values of TravelRuleSettingsDetailNetworksGtrRail.

type TravelRuleSettingsDetailNetworksSygna

type TravelRuleSettingsDetailNetworksSygna struct {
	Rail TravelRuleSettingsDetailNetworksSygnaRail `json:"rail"`

	// own: connected customer membership takes precedence; didit: configured
	// platform membership allowed; off: platform routing disabled with no own
	// membership; unavailable: neither membership available.
	Mode TravelRuleSettingsDetailNetworksSygnaMode `json:"mode"`

	// Whether platform membership is configured; not a live health check.
	PlatformAvailable bool `json:"platform_available"`

	// Whether a connected customer membership exists. Credentials are validated
	// locally; network validation occurs on a live exchange.
	Connected bool `json:"connected"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleSettingsDetailNetworksSygna is a response object.

func (*TravelRuleSettingsDetailNetworksSygna) UnmarshalJSON

func (r *TravelRuleSettingsDetailNetworksSygna) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleSettingsDetailNetworksSygna leniently.

type TravelRuleSettingsDetailNetworksSygnaMode

type TravelRuleSettingsDetailNetworksSygnaMode string

TravelRuleSettingsDetailNetworksSygnaMode: own: connected customer membership takes precedence; didit: configured platform membership allowed; off: platform routing disabled with no own membership; unavailable: neither membership available.

TravelRuleSettingsDetailNetworksSygnaMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsDetailNetworksSygnaModeOwn         TravelRuleSettingsDetailNetworksSygnaMode = "own"
	TravelRuleSettingsDetailNetworksSygnaModeDidit       TravelRuleSettingsDetailNetworksSygnaMode = "didit"
	TravelRuleSettingsDetailNetworksSygnaModeOff         TravelRuleSettingsDetailNetworksSygnaMode = "off"
	TravelRuleSettingsDetailNetworksSygnaModeUnavailable TravelRuleSettingsDetailNetworksSygnaMode = "unavailable"
)

Known values of TravelRuleSettingsDetailNetworksSygnaMode.

type TravelRuleSettingsDetailNetworksSygnaRail

type TravelRuleSettingsDetailNetworksSygnaRail string

TravelRuleSettingsDetailNetworksSygnaRail is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsDetailNetworksSygnaRailSygna TravelRuleSettingsDetailNetworksSygnaRail = "SYGNA"
)

Known values of TravelRuleSettingsDetailNetworksSygnaRail.

type TravelRuleSettingsDetailNetworksTrust

type TravelRuleSettingsDetailNetworksTrust struct {
	Rail TravelRuleSettingsDetailNetworksTrustRail `json:"rail"`

	// own: connected customer membership takes precedence; didit: configured
	// platform membership allowed; off: platform routing disabled with no own
	// membership; unavailable: neither membership available.
	Mode TravelRuleSettingsDetailNetworksTrustMode `json:"mode"`

	// Whether platform membership is configured; not a live health check.
	PlatformAvailable bool `json:"platform_available"`

	// Whether a connected customer membership exists. Credentials are validated
	// locally; network validation occurs on a live exchange.
	Connected bool `json:"connected"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleSettingsDetailNetworksTrust is a response object.

func (*TravelRuleSettingsDetailNetworksTrust) UnmarshalJSON

func (r *TravelRuleSettingsDetailNetworksTrust) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleSettingsDetailNetworksTrust leniently.

type TravelRuleSettingsDetailNetworksTrustMode

type TravelRuleSettingsDetailNetworksTrustMode string

TravelRuleSettingsDetailNetworksTrustMode: own: connected customer membership takes precedence; didit: configured platform membership allowed; off: platform routing disabled with no own membership; unavailable: neither membership available.

TravelRuleSettingsDetailNetworksTrustMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsDetailNetworksTrustModeOwn         TravelRuleSettingsDetailNetworksTrustMode = "own"
	TravelRuleSettingsDetailNetworksTrustModeDidit       TravelRuleSettingsDetailNetworksTrustMode = "didit"
	TravelRuleSettingsDetailNetworksTrustModeOff         TravelRuleSettingsDetailNetworksTrustMode = "off"
	TravelRuleSettingsDetailNetworksTrustModeUnavailable TravelRuleSettingsDetailNetworksTrustMode = "unavailable"
)

Known values of TravelRuleSettingsDetailNetworksTrustMode.

type TravelRuleSettingsDetailNetworksTrustRail

type TravelRuleSettingsDetailNetworksTrustRail string

TravelRuleSettingsDetailNetworksTrustRail is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsDetailNetworksTrustRailTrust TravelRuleSettingsDetailNetworksTrustRail = "TRUST"
)

Known values of TravelRuleSettingsDetailNetworksTrustRail.

type TravelRuleSettingsDetailNetworksVerifyvasp

type TravelRuleSettingsDetailNetworksVerifyvasp struct {
	Rail TravelRuleSettingsDetailNetworksVerifyvaspRail `json:"rail"`

	// own: connected customer membership takes precedence; didit: configured
	// platform membership allowed; off: platform routing disabled with no own
	// membership; unavailable: neither membership available.
	Mode TravelRuleSettingsDetailNetworksVerifyvaspMode `json:"mode"`

	// Whether platform membership is configured; not a live health check.
	PlatformAvailable bool `json:"platform_available"`

	// Whether a connected customer membership exists. Credentials are validated
	// locally; network validation occurs on a live exchange.
	Connected bool `json:"connected"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleSettingsDetailNetworksVerifyvasp is a response object.

func (*TravelRuleSettingsDetailNetworksVerifyvasp) UnmarshalJSON

func (r *TravelRuleSettingsDetailNetworksVerifyvasp) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleSettingsDetailNetworksVerifyvasp leniently.

type TravelRuleSettingsDetailNetworksVerifyvaspMode

type TravelRuleSettingsDetailNetworksVerifyvaspMode string

TravelRuleSettingsDetailNetworksVerifyvaspMode: own: connected customer membership takes precedence; didit: configured platform membership allowed; off: platform routing disabled with no own membership; unavailable: neither membership available.

TravelRuleSettingsDetailNetworksVerifyvaspMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsDetailNetworksVerifyvaspModeOwn         TravelRuleSettingsDetailNetworksVerifyvaspMode = "own"
	TravelRuleSettingsDetailNetworksVerifyvaspModeDidit       TravelRuleSettingsDetailNetworksVerifyvaspMode = "didit"
	TravelRuleSettingsDetailNetworksVerifyvaspModeOff         TravelRuleSettingsDetailNetworksVerifyvaspMode = "off"
	TravelRuleSettingsDetailNetworksVerifyvaspModeUnavailable TravelRuleSettingsDetailNetworksVerifyvaspMode = "unavailable"
)

Known values of TravelRuleSettingsDetailNetworksVerifyvaspMode.

type TravelRuleSettingsDetailNetworksVerifyvaspRail

type TravelRuleSettingsDetailNetworksVerifyvaspRail string

TravelRuleSettingsDetailNetworksVerifyvaspRail is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsDetailNetworksVerifyvaspRailVerifyvasp TravelRuleSettingsDetailNetworksVerifyvaspRail = "VERIFYVASP"
)

Known values of TravelRuleSettingsDetailNetworksVerifyvaspRail.

type TravelRuleSettingsDetailNonResponsivePolicy

type TravelRuleSettingsDetailNonResponsivePolicy string

TravelRuleSettingsDetailNonResponsivePolicy: What an expired transfer does to its transaction when the counterparty is a directory entry whose responsiveness is UNRESPONSIVE: HOLD, REJECT or PROCEED, as for timeout_outcome. Empty (the default) follows timeout_outcome. sunrise_policy applies first when both fit.

TravelRuleSettingsDetailNonResponsivePolicy is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsDetailNonResponsivePolicyEmpty   TravelRuleSettingsDetailNonResponsivePolicy = ""
	TravelRuleSettingsDetailNonResponsivePolicyHold    TravelRuleSettingsDetailNonResponsivePolicy = "HOLD"
	TravelRuleSettingsDetailNonResponsivePolicyReject  TravelRuleSettingsDetailNonResponsivePolicy = "REJECT"
	TravelRuleSettingsDetailNonResponsivePolicyProceed TravelRuleSettingsDetailNonResponsivePolicy = "PROCEED"
)

Known values of TravelRuleSettingsDetailNonResponsivePolicy.

type TravelRuleSettingsDetailOwnershipValidationMode

type TravelRuleSettingsDetailOwnershipValidationMode string

TravelRuleSettingsDetailOwnershipValidationMode: How much proof a wallet's ownership takes. `FULL` always needs a proof (signed message, test deposit or reviewed screenshot), never the end user's word. `SIMPLIFIED` accepts a self-declaration below `simplified_validation_threshold` and a proof above it. `AUTOMATED` lets the address book and earlier proofs answer on their own, self-declarations included while `allow_self_declaration` is true. Default `AUTOMATED`.

TravelRuleSettingsDetailOwnershipValidationMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsDetailOwnershipValidationModeFull       TravelRuleSettingsDetailOwnershipValidationMode = "FULL"
	TravelRuleSettingsDetailOwnershipValidationModeSimplified TravelRuleSettingsDetailOwnershipValidationMode = "SIMPLIFIED"
	TravelRuleSettingsDetailOwnershipValidationModeAutomated  TravelRuleSettingsDetailOwnershipValidationMode = "AUTOMATED"
)

Known values of TravelRuleSettingsDetailOwnershipValidationMode.

type TravelRuleSettingsDetailSunrisePolicy

type TravelRuleSettingsDetailSunrisePolicy string

TravelRuleSettingsDetailSunrisePolicy: What an expired transfer does to its transaction when the counterparty is a directory entry in a jurisdiction on sunrise_jurisdictions, which does not enforce the Travel Rule yet: HOLD moves it to review, REJECT declines it, PROCEED leaves its status untouched. Empty (the default) follows timeout_outcome. Applies before non_responsive_policy.

TravelRuleSettingsDetailSunrisePolicy is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsDetailSunrisePolicyEmpty   TravelRuleSettingsDetailSunrisePolicy = ""
	TravelRuleSettingsDetailSunrisePolicyHold    TravelRuleSettingsDetailSunrisePolicy = "HOLD"
	TravelRuleSettingsDetailSunrisePolicyReject  TravelRuleSettingsDetailSunrisePolicy = "REJECT"
	TravelRuleSettingsDetailSunrisePolicyProceed TravelRuleSettingsDetailSunrisePolicy = "PROCEED"
)

Known values of TravelRuleSettingsDetailSunrisePolicy.

type TravelRuleSettingsDetailTimeoutOutcome

type TravelRuleSettingsDetailTimeoutOutcome string

TravelRuleSettingsDetailTimeoutOutcome: What happens to the underlying transaction when a transfer expires. Default HOLD. sunrise_policy and non_responsive_policy take precedence when they apply and are set.

TravelRuleSettingsDetailTimeoutOutcome is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsDetailTimeoutOutcomeHold    TravelRuleSettingsDetailTimeoutOutcome = "HOLD"
	TravelRuleSettingsDetailTimeoutOutcomeReject  TravelRuleSettingsDetailTimeoutOutcome = "REJECT"
	TravelRuleSettingsDetailTimeoutOutcomeProceed TravelRuleSettingsDetailTimeoutOutcome = "PROCEED"
)

Known values of TravelRuleSettingsDetailTimeoutOutcome.

type TravelRuleSettingsUpdate

type TravelRuleSettingsUpdate struct {
	IsEnabled    Opt[bool]   `json:"is_enabled"`
	LegalName    Opt[string] `json:"legal_name"`
	Lei          Opt[string] `json:"lei"`
	Jurisdiction Opt[string] `json:"jurisdiction"`

	// `CONTAINS` accepts one name whose words all appear in the other.
	NameMatchingStrictness   Opt[TravelRuleSettingsUpdateNameMatchingStrictness] `json:"name_matching_strictness"`
	ConfirmationTimeoutHours Opt[int64]                                          `json:"confirmation_timeout_hours"`
	TimeoutOutcome           Opt[TravelRuleSettingsUpdateTimeoutOutcome]         `json:"timeout_outcome"`

	// Compliance contact email for your VASP profile. The Didit network lists your
	// profile only once this address is confirmed through an emailed link (POST
	// /v3/travel-rule/settings/compliance-email/confirmation/); changing it needs a
	// new confirmation.
	ComplianceEmail Opt[string] `json:"compliance_email"`

	// Whether your VASP profile can be listed in the Didit network: found in GET
	// /v3/travel-rule/vasps/ by other Didit customers and reached on the INTERNAL
	// rail. Listing also needs a live application, Travel Rule on, a legal name and
	// a confirmed compliance email; didit_network says which are missing. Default
	// true.
	IsDiscoverable Opt[bool] `json:"is_discoverable"`

	// Decimal string, zero or greater, in your application's default currency.
	// Minimum transfer amount that triggers a managed exchange.
	ThresholdAmount Opt[string] `json:"threshold_amount"`

	// See the response field of the same name.
	OwnershipValidationMode Opt[TravelRuleSettingsUpdateOwnershipValidationMode] `json:"ownership_validation_mode"`

	// Decimal string, 0 or more.
	SimplifiedValidationThreshold Opt[string] `json:"simplified_validation_threshold"`

	// Merged per entity type: an entity type you leave out keeps its current
	// choice. A choice that cannot meet the originator obligations of your
	// `jurisdiction` regime (EU TFR or FATF Recommendation 16), an empty list
	// included, is refused with `400`.
	DataSharingFields Opt[TravelRuleDataSharingFieldsParam] `json:"data_sharing_fields"`

	// Merged per entity type, and per field inside it. A field that entity type
	// does not compare (for example `date_of_birth` for `company`) is refused with
	// `400`.
	MatchingRules        Opt[TravelRuleMatchingRulesParam] `json:"matching_rules"`
	InboundAutoAccept    Opt[bool]                         `json:"inbound_auto_accept"`
	AllowSelfDeclaration Opt[bool]                         `json:"allow_self_declaration"`

	// When true, the wallet-ownership widget offers screenshot upload as an
	// ownership evidence method. Default true.
	AllowScreenshotProof   Opt[bool] `json:"allow_screenshot_proof"`
	AutoWalletVerification Opt[bool] `json:"auto_wallet_verification"`
	VASPAttributionEnabled Opt[bool] `json:"vasp_attribution_enabled"`

	// Opt-in sanctions and adverse-media screening of counterparty VASPs, billed
	// per screening at the Company AML Screening price. When on, Didit screens the
	// counterparty an outbound exchange reaches (reusing a screening younger than
	// 30 days) and you can screen one with POST
	// /v3/travel-rule/vasps/{vasp_id}/screening/. Default false: nothing is
	// screened or billed.
	CounterpartyScreeningEnabled Opt[bool] `json:"counterparty_screening_enabled"`

	// HOLD, REJECT, PROCEED, or empty to follow timeout_outcome. See the response
	// field of the same name.
	SunrisePolicy Opt[TravelRuleSettingsUpdateSunrisePolicy] `json:"sunrise_policy"`

	// HOLD, REJECT, PROCEED, or empty to follow timeout_outcome. See the response
	// field of the same name.
	NonResponsivePolicy Opt[TravelRuleSettingsUpdateNonResponsivePolicy] `json:"non_responsive_policy"`

	// Networks opted out of platform membership. Does not disable your connected
	// own memberships or provision unavailable networks.
	DisabledNetworks Opt[[]TravelRuleSettingsUpdateDisabledNetworks] `json:"disabled_networks"`
}

TravelRuleSettingsUpdate: All fields optional; PUT applies a partial update.

func (TravelRuleSettingsUpdate) MarshalJSON

func (r TravelRuleSettingsUpdate) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleSettingsUpdateDisabledNetworks

type TravelRuleSettingsUpdateDisabledNetworks string

TravelRuleSettingsUpdateDisabledNetworks is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsUpdateDisabledNetworksGtr        TravelRuleSettingsUpdateDisabledNetworks = "GTR"
	TravelRuleSettingsUpdateDisabledNetworksTrust      TravelRuleSettingsUpdateDisabledNetworks = "TRUST"
	TravelRuleSettingsUpdateDisabledNetworksVerifyvasp TravelRuleSettingsUpdateDisabledNetworks = "VERIFYVASP"
	TravelRuleSettingsUpdateDisabledNetworksSygna      TravelRuleSettingsUpdateDisabledNetworks = "SYGNA"
)

Known values of TravelRuleSettingsUpdateDisabledNetworks.

type TravelRuleSettingsUpdateNameMatchingStrictness

type TravelRuleSettingsUpdateNameMatchingStrictness string

TravelRuleSettingsUpdateNameMatchingStrictness: `CONTAINS` accepts one name whose words all appear in the other.

TravelRuleSettingsUpdateNameMatchingStrictness is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsUpdateNameMatchingStrictnessNone     TravelRuleSettingsUpdateNameMatchingStrictness = "NONE"
	TravelRuleSettingsUpdateNameMatchingStrictnessStrict   TravelRuleSettingsUpdateNameMatchingStrictness = "STRICT"
	TravelRuleSettingsUpdateNameMatchingStrictnessContains TravelRuleSettingsUpdateNameMatchingStrictness = "CONTAINS"
	TravelRuleSettingsUpdateNameMatchingStrictnessDefault  TravelRuleSettingsUpdateNameMatchingStrictness = "DEFAULT"
	TravelRuleSettingsUpdateNameMatchingStrictnessFuzzy    TravelRuleSettingsUpdateNameMatchingStrictness = "FUZZY"
)

Known values of TravelRuleSettingsUpdateNameMatchingStrictness.

type TravelRuleSettingsUpdateNonResponsivePolicy

type TravelRuleSettingsUpdateNonResponsivePolicy string

TravelRuleSettingsUpdateNonResponsivePolicy: HOLD, REJECT, PROCEED, or empty to follow timeout_outcome. See the response field of the same name.

TravelRuleSettingsUpdateNonResponsivePolicy is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsUpdateNonResponsivePolicyEmpty   TravelRuleSettingsUpdateNonResponsivePolicy = ""
	TravelRuleSettingsUpdateNonResponsivePolicyHold    TravelRuleSettingsUpdateNonResponsivePolicy = "HOLD"
	TravelRuleSettingsUpdateNonResponsivePolicyReject  TravelRuleSettingsUpdateNonResponsivePolicy = "REJECT"
	TravelRuleSettingsUpdateNonResponsivePolicyProceed TravelRuleSettingsUpdateNonResponsivePolicy = "PROCEED"
)

Known values of TravelRuleSettingsUpdateNonResponsivePolicy.

type TravelRuleSettingsUpdateOwnershipValidationMode

type TravelRuleSettingsUpdateOwnershipValidationMode string

TravelRuleSettingsUpdateOwnershipValidationMode: See the response field of the same name.

TravelRuleSettingsUpdateOwnershipValidationMode is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsUpdateOwnershipValidationModeFull       TravelRuleSettingsUpdateOwnershipValidationMode = "FULL"
	TravelRuleSettingsUpdateOwnershipValidationModeSimplified TravelRuleSettingsUpdateOwnershipValidationMode = "SIMPLIFIED"
	TravelRuleSettingsUpdateOwnershipValidationModeAutomated  TravelRuleSettingsUpdateOwnershipValidationMode = "AUTOMATED"
)

Known values of TravelRuleSettingsUpdateOwnershipValidationMode.

type TravelRuleSettingsUpdateSunrisePolicy

type TravelRuleSettingsUpdateSunrisePolicy string

TravelRuleSettingsUpdateSunrisePolicy: HOLD, REJECT, PROCEED, or empty to follow timeout_outcome. See the response field of the same name.

TravelRuleSettingsUpdateSunrisePolicy is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsUpdateSunrisePolicyEmpty   TravelRuleSettingsUpdateSunrisePolicy = ""
	TravelRuleSettingsUpdateSunrisePolicyHold    TravelRuleSettingsUpdateSunrisePolicy = "HOLD"
	TravelRuleSettingsUpdateSunrisePolicyReject  TravelRuleSettingsUpdateSunrisePolicy = "REJECT"
	TravelRuleSettingsUpdateSunrisePolicyProceed TravelRuleSettingsUpdateSunrisePolicy = "PROCEED"
)

Known values of TravelRuleSettingsUpdateSunrisePolicy.

type TravelRuleSettingsUpdateTimeoutOutcome

type TravelRuleSettingsUpdateTimeoutOutcome string

TravelRuleSettingsUpdateTimeoutOutcome is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleSettingsUpdateTimeoutOutcomeHold    TravelRuleSettingsUpdateTimeoutOutcome = "HOLD"
	TravelRuleSettingsUpdateTimeoutOutcomeReject  TravelRuleSettingsUpdateTimeoutOutcome = "REJECT"
	TravelRuleSettingsUpdateTimeoutOutcomeProceed TravelRuleSettingsUpdateTimeoutOutcome = "PROCEED"
)

Known values of TravelRuleSettingsUpdateTimeoutOutcome.

type TravelRuleTestVASPInboundRequest

type TravelRuleTestVASPInboundRequest struct {
	// The destination wallet address. The Didit Test VASP sends to it, matched
	// against your wallet address book on the chain of the asset. A wallet with no
	// matching entry is accepted and the inbound transaction is booked ON_HOLD.
	// Required.
	BeneficiaryWalletAddress string `json:"beneficiary_wallet_address"`

	// What the Didit Test VASP declares the beneficiary to be. `accept` declares
	// the holder's own name; `name_mismatch` declares a name no holder agrees with.
	// The decision itself is always yours.
	Scenario Opt[TravelRuleTestVASPInboundRequestScenario] `json:"scenario"`

	// Chain of the asset.
	Chain Opt[string] `json:"chain"`

	// Amount as a decimal string.
	Amount Opt[string] `json:"amount"`

	// Asset code.
	Currency Opt[string] `json:"currency"`

	// Optional idempotency key. A repeat with the same value returns the transfer
	// the first call booked.
	Reference Opt[string] `json:"reference"`
}

TravelRuleTestVASPInboundRequest is a request object.

func (TravelRuleTestVASPInboundRequest) MarshalJSON

func (r TravelRuleTestVASPInboundRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleTestVASPInboundRequestScenario

type TravelRuleTestVASPInboundRequestScenario string

TravelRuleTestVASPInboundRequestScenario: What the Didit Test VASP declares the beneficiary to be. `accept` declares the holder's own name; `name_mismatch` declares a name no holder agrees with. The decision itself is always yours.

TravelRuleTestVASPInboundRequestScenario is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleTestVASPInboundRequestScenarioAccept       TravelRuleTestVASPInboundRequestScenario = "accept"
	TravelRuleTestVASPInboundRequestScenarioNameMismatch TravelRuleTestVASPInboundRequestScenario = "name_mismatch"
)

Known values of TravelRuleTestVASPInboundRequestScenario.

type TravelRuleTestVASPInboundResponse

type TravelRuleTestVASPInboundResponse struct {
	// Didit transaction UUID of the inbound transfer.
	TransactionID string `json:"transaction_id"`

	// Didit-generated txn_id.
	TxnID string `json:"txn_id"`

	// The scenario that ran.
	Scenario string `json:"scenario"`

	// The status your application's own decision resolved to.
	TravelRuleStatus string `json:"travel_rule_status"`

	// Why the transfer resolved to that status.
	Detail string `json:"detail"`

	// Always true: the sender was the Didit Test VASP.
	TestVASP   bool                     `json:"test_vasp"`
	TravelRule TravelRuleTransferDetail `json:"travel_rule"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleTestVASPInboundResponse is a response object.

func (*TravelRuleTestVASPInboundResponse) UnmarshalJSON

func (r *TravelRuleTestVASPInboundResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleTestVASPInboundResponse leniently.

type TravelRuleTransferDetail

type TravelRuleTransferDetail struct {
	UUID      string                            `json:"uuid"`
	Status    TravelRuleTransferDetailStatus    `json:"status"`
	Direction TravelRuleTransferDetailDirection `json:"direction"`

	// The rail the transfer was routed over, or null when no rail was selected (for
	// example below the threshold, a self-hosted counterparty wallet, an
	// after-deposit registration, or no reachable counterparty). INTERNAL means
	// both sides are Didit applications; EMAIL means the counterparty was reached
	// by an emailed pickup link. TEST_VASP means the Didit Test VASP answered the
	// sandbox transfer. Over GTR, VERIFYVASP and SYGNA, Didit reads the
	// counterparty's answer from the network's response or by polling it every 5
	// minutes. TRUST only sends, so a TRUST transfer stays AWAITING_COUNTERPARTY
	// until it expires. A network rail is used only when you have connected your
	// own membership for that network. It is chosen after the transaction create
	// returns, so it is null in that response.
	Rail               TravelRuleTransferDetailRail             `json:"rail"`
	Protocol           string                                   `json:"protocol"`
	IvmsVersion        string                                   `json:"ivms_version"`
	Required           bool                                     `json:"required"`
	OwnershipConfirmed bool                                     `json:"ownership_confirmed"`
	DeadlineAt         time.Time                                `json:"deadline_at"`
	Timeline           []TravelRuleTransferDetailTimeline       `json:"timeline"`
	CounterpartyVASP   TravelRuleTransferDetailCounterpartyVASP `json:"counterparty_vasp"`

	// Originator party. For an inbound transfer the counterparty's values are
	// masked until ownership is confirmed.
	OriginatorData map[string]any `json:"originator_data"`

	// Beneficiary party. For an inbound transfer the counterparty's values are
	// masked until ownership is confirmed.
	BeneficiaryData map[string]any `json:"beneficiary_data"`

	// The name comparison that decided the transfer, or null until one ran. While
	// the parties are masked, and on the other customer's copy of an INTERNAL
	// exchange, `transfer_name`, `compared_name`, `matched_names` and
	// `mismatched_names` are hidden. `score` and `matched` can disagree: `matched`
	// follows the strictness, `score` is the similarity of the two full names.
	NameMatch TravelRuleNameMatch `json:"name_match"`
	DataMatch TravelRuleDataMatch `json:"data_match"`

	// Shortcut for `data_match.mismatched_fields`. Empty when nothing differs.
	MismatchedFields []string               `json:"mismatched_fields"`
	DataUnmasked     TravelRuleDataUnmasked `json:"data_unmasked"`

	// True while the counterparty's personal data is masked in this response.
	DataMasked bool      `json:"data_masked"`
	CreatedAt  time.Time `json:"created_at"`

	// Where the latest message this transfer owes the other side stands. Null when
	// the transfer never owed one (for example below `threshold_amount`, a declared
	// self-hosted wallet, or a sunrise registration).
	Delivery TravelRuleDelivery `json:"delivery"`

	// How Didit looked for the counterparty, one entry per step that ran. Empty
	// when no discovery ran, for example on an inbound transfer.
	Discovery []TravelRuleDiscoveryStep `json:"discovery"`

	// Why a `COUNTERPARTY_VASP_NOT_FOUND` or `COUNTERPARTY_VASP_NOT_REACHABLE`
	// transfer is stuck; `""` for any other status. A failed delivery decides it
	// first, on `COUNTERPARTY_VASP_NOT_REACHABLE` only: `email_undeliverable` (the
	// mail provider refused the compliance email and no address is left to try:
	// when it was sent, on a reminder, or as a permanent bounce reported later) or
	// `delivery_failed` (the rail that was delivering failed for good: a network
	// rail refused the message or ran out of retries, a `TRP` identity host did not
	// answer, or the counterparty's `TRP` host did not accept the inquiry).
	// Otherwise the `discovery` trace decides it: `awaiting_end_user` (no step
	// named a counterparty Didit can reach), `directory_match_no_route` (a step
	// named a directory VASP that has no route),
	// `picked_member_without_proven_wallet` (the end user picked a Didit customer
	// that has not proven control of the wallet), or `no_directory_match` when the
	// trace gives no other reason. A resend moves the transfer on, so the reason
	// clears. See [Why a transfer is
	// stuck](/transaction-monitoring/travel-rule#why-a-transfer-is-stuck).
	Reason string `json:"reason"`

	// What moves the transfer on; `[]` for any status but
	// `COUNTERPARTY_VASP_NOT_FOUND` or `COUNTERPARTY_VASP_NOT_REACHABLE`.
	// `email_undeliverable` offers `update_compliance_email`, then `resend`.
	// `delivery_failed` offers `resend`. A discovery reason offers
	// `select_counterparty_vasp`, `declare_self_hosted`, `add_vasp_hint` and
	// `resend`.
	NextActions  []TravelRuleNextAction `json:"next_actions"`
	ChainDetails TravelRuleChainDetails `json:"chain_details"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleTransferDetail: Full transfer object returned by the ownership-confirmation and finish/cancel endpoints. While an inbound transfer's wallet ownership is unconfirmed, the counterparty's `originator_data` and `beneficiary_data` come back masked (the first letter of each word is kept; the wallet, chain and VASP routing stay readable) and `data_masked` is true.

func (*TravelRuleTransferDetail) UnmarshalJSON

func (r *TravelRuleTransferDetail) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleTransferDetail leniently.

type TravelRuleTransferDetailCounterpartyVASP

type TravelRuleTransferDetailCounterpartyVASP struct {
	Name string `json:"name"`
	Lei  string `json:"lei"`

	// Due-diligence score from 0 to 100, where higher is better. Same scale as in
	// the VASP directory.
	DdScore int64 `json:"dd_score"`

	// Per-component contributions to dd_score, one object per component as in the
	// VASP directory (jurisdiction, verification, protocol, lei, history,
	// essentials, responsiveness), each {points, max, reason, detail}. {} until the
	// counterparty has been assessed.
	DdScoreBreakdown map[string]TravelRuleTransferDetailCounterpartyVASPDdScoreBreakdown `json:"dd_score_breakdown"`

	// When the due-diligence assessment last ran. Null until the counterparty has
	// been assessed.
	DdAssessedAt time.Time `json:"dd_assessed_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleTransferDetailCounterpartyVASP is a response object.

func (*TravelRuleTransferDetailCounterpartyVASP) UnmarshalJSON

func (r *TravelRuleTransferDetailCounterpartyVASP) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleTransferDetailCounterpartyVASP leniently.

type TravelRuleTransferDetailCounterpartyVASPDdScoreBreakdown

type TravelRuleTransferDetailCounterpartyVASPDdScoreBreakdown struct {
	// Points awarded for this component.
	Points float64 `json:"points"`

	// Maximum points this component can award.
	Max int64 `json:"max"`

	// Machine-readable code of the component's verdict.
	Reason string `json:"reason"`

	// Human-readable reason for the awarded points.
	Detail string `json:"detail"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleTransferDetailCounterpartyVASPDdScoreBreakdown is a response object.

func (*TravelRuleTransferDetailCounterpartyVASPDdScoreBreakdown) UnmarshalJSON

UnmarshalJSON decodes TravelRuleTransferDetailCounterpartyVASPDdScoreBreakdown leniently.

type TravelRuleTransferDetailDirection

type TravelRuleTransferDetailDirection string

TravelRuleTransferDetailDirection is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleTransferDetailDirectionInbound  TravelRuleTransferDetailDirection = "INBOUND"
	TravelRuleTransferDetailDirectionOutbound TravelRuleTransferDetailDirection = "OUTBOUND"
)

Known values of TravelRuleTransferDetailDirection.

type TravelRuleTransferDetailRail

type TravelRuleTransferDetailRail string

TravelRuleTransferDetailRail: The rail the transfer was routed over, or null when no rail was selected (for example below the threshold, a self-hosted counterparty wallet, an after-deposit registration, or no reachable counterparty). INTERNAL means both sides are Didit applications; EMAIL means the counterparty was reached by an emailed pickup link. TEST_VASP means the Didit Test VASP answered the sandbox transfer. Over GTR, VERIFYVASP and SYGNA, Didit reads the counterparty's answer from the network's response or by polling it every 5 minutes. TRUST only sends, so a TRUST transfer stays AWAITING_COUNTERPARTY until it expires. A network rail is used only when you have connected your own membership for that network. It is chosen after the transaction create returns, so it is null in that response.

TravelRuleTransferDetailRail is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleTransferDetailRailInternal   TravelRuleTransferDetailRail = "INTERNAL"
	TravelRuleTransferDetailRailTrp        TravelRuleTransferDetailRail = "TRP"
	TravelRuleTransferDetailRailGtr        TravelRuleTransferDetailRail = "GTR"
	TravelRuleTransferDetailRailTrust      TravelRuleTransferDetailRail = "TRUST"
	TravelRuleTransferDetailRailVerifyvasp TravelRuleTransferDetailRail = "VERIFYVASP"
	TravelRuleTransferDetailRailSygna      TravelRuleTransferDetailRail = "SYGNA"
	TravelRuleTransferDetailRailEmail      TravelRuleTransferDetailRail = "EMAIL"
	TravelRuleTransferDetailRailTestVASP   TravelRuleTransferDetailRail = "TEST_VASP"
)

Known values of TravelRuleTransferDetailRail.

type TravelRuleTransferDetailStatus

type TravelRuleTransferDetailStatus string

TravelRuleTransferDetailStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleTransferDetailStatusAwaitingCounterparty           TravelRuleTransferDetailStatus = "AWAITING_COUNTERPARTY"
	TravelRuleTransferDetailStatusOnHold                         TravelRuleTransferDetailStatus = "ON_HOLD"
	TravelRuleTransferDetailStatusCompleted                      TravelRuleTransferDetailStatus = "COMPLETED"
	TravelRuleTransferDetailStatusFinished                       TravelRuleTransferDetailStatus = "FINISHED"
	TravelRuleTransferDetailStatusCancelled                      TravelRuleTransferDetailStatus = "CANCELLED"
	TravelRuleTransferDetailStatusExpired                        TravelRuleTransferDetailStatus = "EXPIRED"
	TravelRuleTransferDetailStatusCounterpartyMismatchedData     TravelRuleTransferDetailStatus = "COUNTERPARTY_MISMATCHED_DATA"
	TravelRuleTransferDetailStatusCounterpartyVASPNotFound       TravelRuleTransferDetailStatus = "COUNTERPARTY_VASP_NOT_FOUND"
	TravelRuleTransferDetailStatusCounterpartyVASPNotReachable   TravelRuleTransferDetailStatus = "COUNTERPARTY_VASP_NOT_REACHABLE"
	TravelRuleTransferDetailStatusUnconfirmedOwnership           TravelRuleTransferDetailStatus = "UNCONFIRMED_OWNERSHIP"
	TravelRuleTransferDetailStatusCounterpartyVASPGeneralDecline TravelRuleTransferDetailStatus = "COUNTERPARTY_VASP_GENERAL_DECLINE"
	TravelRuleTransferDetailStatusNotEnoughCounterpartyData      TravelRuleTransferDetailStatus = "NOT_ENOUGH_COUNTERPARTY_DATA"
	TravelRuleTransferDetailStatusNotApplicable                  TravelRuleTransferDetailStatus = "NOT_APPLICABLE"
)

Known values of TravelRuleTransferDetailStatus.

type TravelRuleTransferDetailTimeline

type TravelRuleTransferDetailTimeline struct {
	Status string    `json:"status"`
	At     time.Time `json:"at"`
	Detail string    `json:"detail"`

	// The name comparison this entry decided, next to `detail`. Absent on entries
	// that compared no name.
	NameMatch TravelRuleNameMatch `json:"name_match"`

	// Present only on the entry of a transition a failed delivery caused:
	// `email_undeliverable` or `delivery_failed`, the value the transfer's `reason`
	// reports.
	Reason string `json:"reason"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleTransferDetailTimeline is a response object.

func (*TravelRuleTransferDetailTimeline) UnmarshalJSON

func (r *TravelRuleTransferDetailTimeline) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleTransferDetailTimeline leniently.

type TravelRuleTransferPatchRequest

type TravelRuleTransferPatchRequest struct {
	// The on-chain transaction hash. Requires the transfer to be an outbound
	// transfer in COMPLETED status.
	PaymentTxnID Opt[string] `json:"payment_txn_id"`

	// "cancel" cancels a non-terminal transfer. "resend" re-runs routing for an
	// outbound transfer stuck in COUNTERPARTY_VASP_NOT_FOUND,
	// COUNTERPARTY_VASP_NOT_REACHABLE, or NOT_ENOUGH_COUNTERPARTY_DATA.
	// "update_compliance_email" replaces the compliance email the request goes to,
	// on an outbound transfer in one of those three statuses; send "resend"
	// afterwards. "update_originator_wallet" records the wallet the funds actually
	// left from (`wallet_address`, `memo`).
	Action Opt[TravelRuleTransferPatchRequestAction] `json:"action"`

	// Required with `action: update_compliance_email`. Kept as this transfer's
	// `beneficiary_data.counterparty_vasp_email`: it belongs to this transfer only
	// and joins no directory entry and no contact list.
	ComplianceEmail Opt[string] `json:"compliance_email"`

	// With `action: update_originator_wallet`: the wallet the funds left from. When
	// the transfer's UTXO inputs are known it must be one of them.
	WalletAddress Opt[string] `json:"wallet_address"`

	// With `action: update_originator_wallet`: the wallet's memo or tag on a memo
	// network. Optional.
	Memo Opt[string] `json:"memo"`
}

TravelRuleTransferPatchRequest: Provide exactly one of: payment_txn_id (finish), action=cancel, action=resend, action=update_compliance_email with compliance_email, or action=update_originator_wallet with wallet_address.

func (TravelRuleTransferPatchRequest) MarshalJSON

func (r TravelRuleTransferPatchRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleTransferPatchRequestAction

type TravelRuleTransferPatchRequestAction string

TravelRuleTransferPatchRequestAction: "cancel" cancels a non-terminal transfer. "resend" re-runs routing for an outbound transfer stuck in COUNTERPARTY_VASP_NOT_FOUND, COUNTERPARTY_VASP_NOT_REACHABLE, or NOT_ENOUGH_COUNTERPARTY_DATA. "update_compliance_email" replaces the compliance email the request goes to, on an outbound transfer in one of those three statuses; send "resend" afterwards. "update_originator_wallet" records the wallet the funds actually left from (`wallet_address`, `memo`).

TravelRuleTransferPatchRequestAction is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleTransferPatchRequestActionCancel                 TravelRuleTransferPatchRequestAction = "cancel"
	TravelRuleTransferPatchRequestActionResend                 TravelRuleTransferPatchRequestAction = "resend"
	TravelRuleTransferPatchRequestActionUpdateComplianceEmail  TravelRuleTransferPatchRequestAction = "update_compliance_email"
	TravelRuleTransferPatchRequestActionUpdateOriginatorWallet TravelRuleTransferPatchRequestAction = "update_originator_wallet"
)

Known values of TravelRuleTransferPatchRequestAction.

type TravelRuleTransferRow

type TravelRuleTransferRow struct {
	// The transfer's id.
	ID string `json:"id"`

	// The Didit transaction the transfer belongs to.
	TransactionID string `json:"transaction_id"`

	// Your own id for the transaction. Transfers Didit books for you, such as a
	// Didit Test VASP inbound transfer, carry a generated one.
	TxnID   string    `json:"txn_id"`
	TxnDate time.Time `json:"txn_date"`

	// withdrawal: outbound. message: an inbound transfer a rail created from a
	// counterparty's message (a TRP inquiry, the INTERNAL inbound leg, or a GTR,
	// VerifyVASP or Sygna Bridge message). deposit: any other inbound transfer.
	Kind      TravelRuleTransferRowKind      `json:"kind"`
	Direction TravelRuleTransferRowDirection `json:"direction"`
	Status    TravelRuleTransferRowStatus    `json:"status"`

	// Why a `COUNTERPARTY_VASP_NOT_FOUND` or `COUNTERPARTY_VASP_NOT_REACHABLE`
	// transfer is stuck, the same value as the transfer's own `reason`, so the list
	// tells a bounced compliance email from a counterparty with no route without
	// opening each transfer. `""` for any other status. See [Why a transfer is
	// stuck](/transaction-monitoring/travel-rule#why-a-transfer-is-stuck).
	Reason string                    `json:"reason"`
	Rail   TravelRuleTransferRowRail `json:"rail"`

	// The transaction's currency.
	Asset string `json:"asset"`

	// The amount as a plain decimal, for example "1.25".
	Amount string `json:"amount"`

	// Outbound: your VASP's legal name. Inbound: the counterparty's name, from its
	// directory entry, the Didit network member, the TRP sender, the Didit Test
	// VASP, or the name the transfer declared. Empty when none is known.
	OriginatorVASP string `json:"originator_vasp"`

	// Outbound: the counterparty's name, worked out the same way. Inbound: your
	// VASP's legal name.
	BeneficiaryVASP   string `json:"beneficiary_vasp"`
	OriginatorWallet  string `json:"originator_wallet"`
	BeneficiaryWallet string `json:"beneficiary_wallet"`

	// Memo or destination tag, empty on chains without one.
	OriginatorMemo  string `json:"originator_memo"`
	BeneficiaryMemo string `json:"beneficiary_memo"`

	// vasp, self_hosted (declared unhosted) or own (a wallet your address book
	// records as yours). Your own side is always vasp.
	OriginatorWalletType  TravelRuleTransferRowOriginatorWalletType  `json:"originator_wallet_type"`
	BeneficiaryWalletType TravelRuleTransferRowBeneficiaryWalletType `json:"beneficiary_wallet_type"`

	// The other side of a deposit you matched to an announced transfer by hand.
	MatchedTransactionID string `json:"matched_transaction_id"`

	// When the transfer expires if it is still waiting on its counterparty. Set on
	// every transfer you create with `POST /v3/transactions/` that needs an
	// exchange, outbound or inbound. Null below the threshold, on a Lightning
	// payment the Travel Rule does not apply to, and on inbound transfers Didit
	// creates when a counterparty reaches you (an inbound TRP inquiry, a network
	// message or the INTERNAL inbound leg).
	DeadlineAt time.Time `json:"deadline_at"`
	CreatedAt  time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleTransferRow: One Travel Rule transfer as the transfers list shows it: VASP names, wallets and memos only, never the originator or beneficiary person data.

func (*TravelRuleTransferRow) UnmarshalJSON

func (r *TravelRuleTransferRow) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleTransferRow leniently.

type TravelRuleTransferRowBeneficiaryWalletType

type TravelRuleTransferRowBeneficiaryWalletType string

TravelRuleTransferRowBeneficiaryWalletType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleTransferRowBeneficiaryWalletTypeVASP       TravelRuleTransferRowBeneficiaryWalletType = "vasp"
	TravelRuleTransferRowBeneficiaryWalletTypeSelfHosted TravelRuleTransferRowBeneficiaryWalletType = "self_hosted"
	TravelRuleTransferRowBeneficiaryWalletTypeOwn        TravelRuleTransferRowBeneficiaryWalletType = "own"
)

Known values of TravelRuleTransferRowBeneficiaryWalletType.

type TravelRuleTransferRowDirection

type TravelRuleTransferRowDirection string

TravelRuleTransferRowDirection is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleTransferRowDirectionInbound  TravelRuleTransferRowDirection = "INBOUND"
	TravelRuleTransferRowDirectionOutbound TravelRuleTransferRowDirection = "OUTBOUND"
)

Known values of TravelRuleTransferRowDirection.

type TravelRuleTransferRowKind

type TravelRuleTransferRowKind string

TravelRuleTransferRowKind: withdrawal: outbound. message: an inbound transfer a rail created from a counterparty's message (a TRP inquiry, the INTERNAL inbound leg, or a GTR, VerifyVASP or Sygna Bridge message). deposit: any other inbound transfer.

TravelRuleTransferRowKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleTransferRowKindWithdrawal TravelRuleTransferRowKind = "withdrawal"
	TravelRuleTransferRowKindDeposit    TravelRuleTransferRowKind = "deposit"
	TravelRuleTransferRowKindMessage    TravelRuleTransferRowKind = "message"
)

Known values of TravelRuleTransferRowKind.

type TravelRuleTransferRowOriginatorWalletType

type TravelRuleTransferRowOriginatorWalletType string

TravelRuleTransferRowOriginatorWalletType: vasp, self_hosted (declared unhosted) or own (a wallet your address book records as yours). Your own side is always vasp.

TravelRuleTransferRowOriginatorWalletType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleTransferRowOriginatorWalletTypeVASP       TravelRuleTransferRowOriginatorWalletType = "vasp"
	TravelRuleTransferRowOriginatorWalletTypeSelfHosted TravelRuleTransferRowOriginatorWalletType = "self_hosted"
	TravelRuleTransferRowOriginatorWalletTypeOwn        TravelRuleTransferRowOriginatorWalletType = "own"
)

Known values of TravelRuleTransferRowOriginatorWalletType.

type TravelRuleTransferRowRail

type TravelRuleTransferRowRail string

TravelRuleTransferRowRail is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleTransferRowRailInternal   TravelRuleTransferRowRail = "INTERNAL"
	TravelRuleTransferRowRailTrp        TravelRuleTransferRowRail = "TRP"
	TravelRuleTransferRowRailGtr        TravelRuleTransferRowRail = "GTR"
	TravelRuleTransferRowRailTrust      TravelRuleTransferRowRail = "TRUST"
	TravelRuleTransferRowRailVerifyvasp TravelRuleTransferRowRail = "VERIFYVASP"
	TravelRuleTransferRowRailSygna      TravelRuleTransferRowRail = "SYGNA"
	TravelRuleTransferRowRailEmail      TravelRuleTransferRowRail = "EMAIL"
	TravelRuleTransferRowRailTestVASP   TravelRuleTransferRowRail = "TEST_VASP"
)

Known values of TravelRuleTransferRowRail.

type TravelRuleTransferRowStatus

type TravelRuleTransferRowStatus string

TravelRuleTransferRowStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleTransferRowStatusAwaitingCounterparty           TravelRuleTransferRowStatus = "AWAITING_COUNTERPARTY"
	TravelRuleTransferRowStatusOnHold                         TravelRuleTransferRowStatus = "ON_HOLD"
	TravelRuleTransferRowStatusCompleted                      TravelRuleTransferRowStatus = "COMPLETED"
	TravelRuleTransferRowStatusFinished                       TravelRuleTransferRowStatus = "FINISHED"
	TravelRuleTransferRowStatusCancelled                      TravelRuleTransferRowStatus = "CANCELLED"
	TravelRuleTransferRowStatusExpired                        TravelRuleTransferRowStatus = "EXPIRED"
	TravelRuleTransferRowStatusCounterpartyMismatchedData     TravelRuleTransferRowStatus = "COUNTERPARTY_MISMATCHED_DATA"
	TravelRuleTransferRowStatusCounterpartyVASPNotFound       TravelRuleTransferRowStatus = "COUNTERPARTY_VASP_NOT_FOUND"
	TravelRuleTransferRowStatusCounterpartyVASPNotReachable   TravelRuleTransferRowStatus = "COUNTERPARTY_VASP_NOT_REACHABLE"
	TravelRuleTransferRowStatusUnconfirmedOwnership           TravelRuleTransferRowStatus = "UNCONFIRMED_OWNERSHIP"
	TravelRuleTransferRowStatusCounterpartyVASPGeneralDecline TravelRuleTransferRowStatus = "COUNTERPARTY_VASP_GENERAL_DECLINE"
	TravelRuleTransferRowStatusNotEnoughCounterpartyData      TravelRuleTransferRowStatus = "NOT_ENOUGH_COUNTERPARTY_DATA"
	TravelRuleTransferRowStatusNotApplicable                  TravelRuleTransferRowStatus = "NOT_APPLICABLE"
)

Known values of TravelRuleTransferRowStatus.

type TravelRuleTransfersListParams

type TravelRuleTransfersListParams struct {
	// INBOUND, OUTBOUND, or both comma-separated. Case-sensitive.
	Direction Opt[string] `json:"-" query:"direction"`

	// One or more transfer statuses, comma-separated.
	Status Opt[string] `json:"-" query:"status"`

	// One or more of INTERNAL, TRP, GTR, TRUST, VERIFYVASP, SYGNA, EMAIL,
	// TEST_VASP, comma-separated.
	Rail Opt[string] `json:"-" query:"rail"`

	// withdrawal, deposit or message, comma-separated.
	Kind Opt[string] `json:"-" query:"kind"`

	// The transaction's currency, case-insensitive.
	Currency Opt[string] `json:"-" query:"currency"`

	// Transfers created on or after this day (UTC), YYYY-MM-DD.
	StartDate Opt[string] `json:"-" query:"start_date"`

	// Transfers created on or before this day (UTC), YYYY-MM-DD.
	EndDate Opt[string] `json:"-" query:"end_date"`

	// The `id` of a directory entry or Didit network member from GET
	// /v3/travel-rule/vasps/: your transfers with that counterparty. A value that
	// is not a valid id answers 400.
	Counterparty Opt[string] `json:"-" query:"counterparty"`

	// Page size, default 50.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Rows to skip.
	Offset Opt[int64] `json:"-" query:"offset"`
}

TravelRuleTransfersListParams holds the parameters of Client.TravelRule.Transfers.List.

func (TravelRuleTransfersListParams) MarshalJSON

func (r TravelRuleTransfersListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleTransfersService

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

TravelRuleTransfersService holds the travel_rule transfers operations. Use it through Client.TravelRule.Transfers.

func (*TravelRuleTransfersService) List

List: List Travel Rule transfers.

Your application's Travel Rule transfers, newest first, paginated with `limit` (default 50) and `offset`. Rows carry VASP names, wallets and memos only, never person data. Comma-separated values select several. An unknown value answers 400 naming the parameter, for example `{"direction": ["Unknown value(s): inbound."]}`.

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/travel-rule/transfers/

func (*TravelRuleTransfersService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

type TravelRuleUtxo

type TravelRuleUtxo struct {
	// Optional. Without inputs no originator is inferred and no change output is
	// recognised.
	Inputs Opt[[]TravelRuleUtxoEntryParam] `json:"inputs"`

	// Required.
	Outputs []TravelRuleUtxoEntryParam `json:"outputs"`
}

TravelRuleUtxo: The inputs and outputs of a UTXO transfer (BTC, LTC, BCH, DOGE). Only accepted on those chains: on any other chain it is a `400`. From them Didit infers the originator wallet (the declared one, else the input address that contributed the most) and the beneficiary output (the declared one, else the only output that does not pay an input address back as change, else the one output paying the transfer amount). The result is on the transfer's `chain_details`.

func (TravelRuleUtxo) MarshalJSON

func (r TravelRuleUtxo) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleUtxoEntry

type TravelRuleUtxoEntry struct {
	Address string `json:"address"`

	// Decimal string in the coin's own unit (BTC, not satoshis). Optional.
	Amount string `json:"amount"`

	// Optional. The transaction an input spends.
	Txid string `json:"txid"`

	// Optional. The output index an input spends.
	Vout int64 `json:"vout"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleUtxoEntry: One input or output of a UTXO transaction, as the chain recorded it.

func (*TravelRuleUtxoEntry) UnmarshalJSON

func (r *TravelRuleUtxoEntry) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleUtxoEntry leniently.

type TravelRuleUtxoEntryParam

type TravelRuleUtxoEntryParam struct {
	// Required.
	Address string `json:"address"`

	// Decimal string in the coin's own unit (BTC, not satoshis). Optional.
	Amount Opt[string] `json:"amount"`

	// Optional. The transaction an input spends.
	Txid Opt[string] `json:"txid"`

	// Optional. The output index an input spends.
	Vout Opt[int64] `json:"vout"`
}

TravelRuleUtxoEntryParam: One input or output of a UTXO transaction, as the chain recorded it.

func (TravelRuleUtxoEntryParam) MarshalJSON

func (r TravelRuleUtxoEntryParam) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleWalletAddressesBulkImportParams

type TravelRuleWalletAddressesBulkImportParams struct {
	// Body is the JSON request body: an object or an array. Leave it nil to send
	// File instead.
	Body any `json:"-" body:"json"`

	// A UTF-8 CSV file of at most 5 MB with a header row naming its columns (the
	// row fields or their aliases). Empty cells count as not sent; columns the
	// import does not read are ignored.
	File Opt[File] `json:"-" form:"file"`
}

TravelRuleWalletAddressesBulkImportParams holds the parameters of Client.TravelRule.WalletAddresses.BulkImport.

func (TravelRuleWalletAddressesBulkImportParams) MarshalJSON

MarshalJSON encodes the fields that are set.

type TravelRuleWalletAddressesListParams

type TravelRuleWalletAddressesListParams struct {
	Limit  Opt[int64] `json:"-" query:"limit"`
	Offset Opt[int64] `json:"-" query:"offset"`
}

TravelRuleWalletAddressesListParams holds the parameters of Client.TravelRule.WalletAddresses.List.

func (TravelRuleWalletAddressesListParams) MarshalJSON

func (r TravelRuleWalletAddressesListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleWalletAddressesService

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

TravelRuleWalletAddressesService holds the travel_rule wallet_addresses operations. Use it through Client.TravelRule.WalletAddresses.

func (*TravelRuleWalletAddressesService) BulkImport

BulkImport: Import wallet addresses in bulk.

Add up to 10,000 wallets to your Travel Rule address book in one call, as JSON or as a CSV file. A wallet can be sent by its address, by the SHA-256 of its lowercased address (`address_hash`) to keep the address private, or both. The import is idempotent: a wallet already in the book is reported as `existing` and left untouched, so the same file can be sent again. Each row is validated on its own, so one bad row never fails the others. A wallet imported by its hash only matches transfers to that address and can be proven with the wallet-ownership widget like any other entry.

POST /v3/travel-rule/wallet-addresses/import/

func (*TravelRuleWalletAddressesService) Create

Create: Register a wallet address.

Add an entry to your Travel Rule wallet address book so inbound INTERNAL-rail transfers can resolve against it.

POST /v3/travel-rule/wallet-addresses/

func (*TravelRuleWalletAddressesService) Delete

Delete: Delete a wallet address.

Deletes the entry together with its ownership proofs and the screenshots they stored. It stops matching new transfers immediately and the address is freed up for re-registration. Transfers that already used the wallet keep their own record of it and read the same. Deletion is irreversible.

DELETE /v3/travel-rule/wallet-addresses/{entry_uuid}/

func (*TravelRuleWalletAddressesService) List

List: List wallet address book entries.

Paginated list of your application's Travel Rule wallet address book, newest first.

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/travel-rule/wallet-addresses/

func (*TravelRuleWalletAddressesService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*TravelRuleWalletAddressesService) Update

Update: Update wallet address holder metadata.

Partial update of holder_name, holder_vendor_data, entity_type, and travel_address. Setting travel_address attaches a TRP routing address to the entry; invalid values are rejected with 400. The response echoes only these four fields.

PATCH /v3/travel-rule/wallet-addresses/{entry_uuid}/

type TravelRuleWidgetSessionCreate

type TravelRuleWidgetSessionCreate struct {
	// The wallet address to verify. Optional; when empty, the address must be
	// supplied when a proof is started.
	WalletAddress Opt[string] `json:"wallet_address"`

	// Chain token for the address, for example `ETH`, `BTC` or `SOL`. Use the same
	// token as in your wallet address book. Message signing and the Satoshi test
	// are offered only for a supported chain.
	Chain Opt[string] `json:"chain"`

	// Name of the wallet holder, used for the beneficiary name match.
	HolderName Opt[string] `json:"holder_name"`

	// Your internal identifier for the holder, carried onto the created
	// address-book entry.
	VendorData Opt[string] `json:"vendor_data"`

	// Optional. Didit transaction UUID of a Travel Rule transfer to advance when
	// the proof verifies.
	TransactionID Opt[string] `json:"transaction_id"`

	// Optional. A deposit address you control; supplying it enables the
	// SATOSHI_TEST proof method.
	SatoshiDepositAddress Opt[string] `json:"satoshi_deposit_address"`

	// Optional. Absolute http(s) URL where the widget returns the customer after
	// completion.
	CallbackURL Opt[string] `json:"callback_url"`

	// Optional. Lifetime of the minted link, in minutes. Automatically extended to
	// cover the Satoshi test window when SATOSHI_TEST is offered.
	ExpiresInMinutes Opt[int64] `json:"expires_in_minutes"`
}

TravelRuleWidgetSessionCreate is a request object.

func (TravelRuleWidgetSessionCreate) MarshalJSON

func (r TravelRuleWidgetSessionCreate) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleWidgetSessionResponse

type TravelRuleWidgetSessionResponse struct {
	WidgetSessionID string `json:"widget_session_id"`

	// Opaque session token embedded in the widget URL.
	Token string `json:"token"`

	// The hosted wallet-ownership widget URL. Open it verbatim in the system
	// browser (never inside a mobile SDK webview).
	URL       string    `json:"url"`
	ExpiresAt time.Time `json:"expires_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleWidgetSessionResponse is a response object.

func (*TravelRuleWidgetSessionResponse) UnmarshalJSON

func (r *TravelRuleWidgetSessionResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleWidgetSessionResponse leniently.

type TravelRuleWorkspace

type TravelRuleWorkspace struct {
	JoinedFree bool                     `json:"joined_free"`
	WorkEmail  string                   `json:"work_email"`
	JoinedAt   time.Time                `json:"joined_at"`
	Claim      TravelRuleWorkspaceClaim `json:"claim"`

	// Profile values taken from the directory entry: `vasp_id`, `legal_name`,
	// `lei`, `jurisdiction`, `compliance_email`, `domains`. Nothing is written
	// until the claim is made.
	Prefill map[string]any            `json:"prefill"`
	Domain  TravelRuleWorkspaceDomain `json:"domain"`

	// Receiving Travel Rule data is free. Sending is billed only after billing is
	// enabled.
	BillingEnabled   bool      `json:"billing_enabled"`
	BillingEnabledAt time.Time `json:"billing_enabled_at"`

	// Whether the Didit network lists this VASP and, when not, each condition it
	// still misses.
	DiditNetwork map[string]any           `json:"didit_network"`
	Settings     TravelRuleSettingsDetail `json:"settings"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleWorkspace: The free Travel Rule workspace of an application that joined free.

func (*TravelRuleWorkspace) UnmarshalJSON

func (r *TravelRuleWorkspace) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleWorkspace leniently.

type TravelRuleWorkspaceBillingRequest

type TravelRuleWorkspaceBillingRequest struct {
	// Only `true` is accepted: outbound billing cannot be turned back off through
	// the API.
	Enabled Opt[bool] `json:"enabled"`
}

TravelRuleWorkspaceBillingRequest is a request object.

func (TravelRuleWorkspaceBillingRequest) MarshalJSON

func (r TravelRuleWorkspaceBillingRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleWorkspaceClaim

type TravelRuleWorkspaceClaim struct {
	Status         TravelRuleWorkspaceClaimStatus `json:"status"`
	ProvedByDomain bool                           `json:"proved_by_domain"`
	ClaimedAt      time.Time                      `json:"claimed_at"`
	ReviewedAt     time.Time                      `json:"reviewed_at"`
	ReviewNote     string                         `json:"review_note"`
	VASPID         string                         `json:"vasp_id"`
	VASPName       string                         `json:"vasp_name"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleWorkspaceClaim is a response object.

func (*TravelRuleWorkspaceClaim) UnmarshalJSON

func (r *TravelRuleWorkspaceClaim) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleWorkspaceClaim leniently.

type TravelRuleWorkspaceClaimRequest

type TravelRuleWorkspaceClaimRequest struct {
	// The directory entry this workspace is. Read ids from `GET
	// /v3/travel-rule/vasps/`. Required.
	VASPID string `json:"vasp_id"`
}

TravelRuleWorkspaceClaimRequest is a request object.

func (TravelRuleWorkspaceClaimRequest) MarshalJSON

func (r TravelRuleWorkspaceClaimRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleWorkspaceClaimStatus

type TravelRuleWorkspaceClaimStatus string

TravelRuleWorkspaceClaimStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleWorkspaceClaimStatusUnclaimed     TravelRuleWorkspaceClaimStatus = "unclaimed"
	TravelRuleWorkspaceClaimStatusPendingReview TravelRuleWorkspaceClaimStatus = "pending_review"
	TravelRuleWorkspaceClaimStatusClaimed       TravelRuleWorkspaceClaimStatus = "claimed"
	TravelRuleWorkspaceClaimStatusRejected      TravelRuleWorkspaceClaimStatus = "rejected"
)

Known values of TravelRuleWorkspaceClaimStatus.

type TravelRuleWorkspaceDomain

type TravelRuleWorkspaceDomain struct {
	Domain     string                          `json:"domain"`
	Status     TravelRuleWorkspaceDomainStatus `json:"status"`
	VerifiedAt time.Time                       `json:"verified_at"`
	Txt        TravelRuleWorkspaceTxtRecord    `json:"txt"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleWorkspaceDomain is a response object.

func (*TravelRuleWorkspaceDomain) UnmarshalJSON

func (r *TravelRuleWorkspaceDomain) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleWorkspaceDomain leniently.

type TravelRuleWorkspaceDomainCodeResponse

type TravelRuleWorkspaceDomainCodeResponse struct {
	Domain string                                      `json:"domain"`
	Status TravelRuleWorkspaceDomainCodeResponseStatus `json:"status"`
	Txt    TravelRuleWorkspaceTxtRecord                `json:"txt"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleWorkspaceDomainCodeResponse is a response object.

func (*TravelRuleWorkspaceDomainCodeResponse) UnmarshalJSON

func (r *TravelRuleWorkspaceDomainCodeResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleWorkspaceDomainCodeResponse leniently.

type TravelRuleWorkspaceDomainCodeResponseStatus

type TravelRuleWorkspaceDomainCodeResponseStatus string

TravelRuleWorkspaceDomainCodeResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleWorkspaceDomainCodeResponseStatusUnverified TravelRuleWorkspaceDomainCodeResponseStatus = "unverified"
	TravelRuleWorkspaceDomainCodeResponseStatusCodeSent   TravelRuleWorkspaceDomainCodeResponseStatus = "code_sent"
	TravelRuleWorkspaceDomainCodeResponseStatusVerified   TravelRuleWorkspaceDomainCodeResponseStatus = "verified"
)

Known values of TravelRuleWorkspaceDomainCodeResponseStatus.

type TravelRuleWorkspaceDomainConfirmRequest

type TravelRuleWorkspaceDomainConfirmRequest struct {
	// Required.
	Code string `json:"code"`
}

TravelRuleWorkspaceDomainConfirmRequest is a request object.

func (TravelRuleWorkspaceDomainConfirmRequest) MarshalJSON

func (r TravelRuleWorkspaceDomainConfirmRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type TravelRuleWorkspaceDomainStatus

type TravelRuleWorkspaceDomainStatus string

TravelRuleWorkspaceDomainStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	TravelRuleWorkspaceDomainStatusUnverified TravelRuleWorkspaceDomainStatus = "unverified"
	TravelRuleWorkspaceDomainStatusCodeSent   TravelRuleWorkspaceDomainStatus = "code_sent"
	TravelRuleWorkspaceDomainStatusVerified   TravelRuleWorkspaceDomainStatus = "verified"
)

Known values of TravelRuleWorkspaceDomainStatus.

type TravelRuleWorkspaceService

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

TravelRuleWorkspaceService holds the travel_rule workspace operations. Use it through Client.TravelRule.Workspace.

func (*TravelRuleWorkspaceService) Claim

Claim: Claim a directory entry.

Claims the directory entry this workspace is. When the work email is at a domain the entry lists, the claim is proved and applies at once: the VASP profile and Travel Rule settings are filled from the entry and Travel Rule is turned on, so the next transfer to it routes over the Didit network. Otherwise the claim waits for review (`pending_review`).

POST /v3/travel-rule/workspace/claim/

func (*TravelRuleWorkspaceService) ConfirmDomain

ConfirmDomain: Confirm the domain verification code.

Spends the emailed code and marks the email domain verified.

POST /v3/travel-rule/workspace/domain/confirm/

func (*TravelRuleWorkspaceService) EnableBilling

EnableBilling: Enable outbound billing.

Turns outbound Travel Rule billing on for the workspace. Receiving stays free. This cannot be turned back off through the API: contact Didit support.

POST /v3/travel-rule/workspace/billing/

func (*TravelRuleWorkspaceService) Get

Get: Get the free Travel Rule workspace.

Reads the free workspace of an application that joined free: directory claim, domain proof, billing and Didit network listing.

GET /v3/travel-rule/workspace/

func (*TravelRuleWorkspaceService) SendDomainCode

SendDomainCode: Email a domain verification code.

Emails a single-use code to the workspace's work address to prove it controls the email domain. Throttled, and a limited number of wrong attempts is accepted per code. Also returns the TXT record for the DNS alternative.

POST /v3/travel-rule/workspace/domain/code/

func (*TravelRuleWorkspaceService) VerifyDomainDNS

VerifyDomainDNS: Verify the domain from its TXT record.

Checks for the `didit-tr-verify.<domain>` TXT record returned by the code endpoint and marks the domain verified when it matches. One of the two proofs, the emailed code or the TXT record, is enough.

POST /v3/travel-rule/workspace/domain/dns/

type TravelRuleWorkspaceTxtRecord

type TravelRuleWorkspaceTxtRecord struct {
	Host  string `json:"host"`
	Value string `json:"value"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

TravelRuleWorkspaceTxtRecord: The TXT record to publish for the DNS proof. Empty until a proof has been started.

func (*TravelRuleWorkspaceTxtRecord) UnmarshalJSON

func (r *TravelRuleWorkspaceTxtRecord) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes TravelRuleWorkspaceTxtRecord leniently.

type UnexpectedResponseError

type UnexpectedResponseError struct {
	Message string
	Cause   error
	// Response is the HTTP response, when there is one. Its body reads the
	// body as received (with an echoed API key redacted), and its request's
	// X-Api-Key header is redacted.
	Response *http.Response
}

UnexpectedResponseError reports a response the SDK cannot use: a 2xx response that is not valid JSON, or a next page link to another origin or back to a page already fetched.

func (*UnexpectedResponseError) Error

func (e *UnexpectedResponseError) Error() string

func (*UnexpectedResponseError) Unwrap

func (e *UnexpectedResponseError) Unwrap() error

type UnprocessableEntityError

type UnprocessableEntityError struct{ *APIStatusError }

UnprocessableEntityError is an *APIStatusError with status 422.

func (*UnprocessableEntityError) Unwrap

func (e *UnprocessableEntityError) Unwrap() error

type UserDetailItem

type UserDetailItem struct {
	// Didit's stable internal UUID for this user.
	DiditInternalID string `json:"didit_internal_id"`

	// Your unique identifier for this user (passed when creating sessions). This
	// can be null when no vendor identifier was supplied.
	VendorData string `json:"vendor_data"`

	// Custom display name set by you
	DisplayName string `json:"display_name"`

	// Full name extracted from verified documents
	FullName    string `json:"full_name"`
	DateOfBirth string `json:"date_of_birth"`

	// Best available name: display_name if set, otherwise full_name
	EffectiveName string `json:"effective_name"`

	// Lifecycle status of the user record (NOT a session status). `ACTIVE` is the
	// default, `FLAGGED` marks the user for manual attention, `BLOCKED` prevents
	// new sessions for this `vendor_data`.
	Status UserDetailItemStatus `json:"status"`

	// Presigned URL of the user's portrait photo (expires after a few hours)
	PortraitImageURL string `json:"portrait_image_url"`

	// Total number of verification sessions for this user
	SessionCount int64 `json:"session_count"`

	// Number of approved sessions
	ApprovedCount int64 `json:"approved_count"`

	// Number of declined sessions
	DeclinedCount int64 `json:"declined_count"`

	// Number of sessions in review
	InReviewCount int64 `json:"in_review_count"`

	// ISO 3166-1 alpha-3 codes of issuing countries seen on this user's approved ID
	// documents, e.g. `["USA", "ESP"]`. Empty array when none.
	IssuingStates []string `json:"issuing_states"`

	// Verified email addresses collected from this user's approved sessions, e.g.
	// `["john@example.com"]`.
	ApprovedEmails []string `json:"approved_emails"`

	// Verified phone numbers collected from this user's approved sessions, e.g.
	// `["+14155551234"]`.
	ApprovedPhones []string `json:"approved_phones"`

	// Aggregated per-feature status across all of this user's sessions. Possible
	// keys: `ID_VERIFICATION`, `NFC`, `LIVENESS`, `FACE_MATCH`, `POA`,
	// `QUESTIONNAIRE`, `EMAIL_VERIFICATION`, `PHONE`, `AML`, `IP_ANALYSIS`,
	// `AGE_ESTIMATION`, `DATABASE_VALIDATION`. Possible values: `Approved`,
	// `Declined`, `In Review`, `Not Finished`, `Resub Requested`.
	Features map[string]any `json:"features"`

	// Same data as `features`, as an ordered array of `{feature, status}` objects.
	FeaturesList []UserDetailItemFeaturesList `json:"features_list"`

	// Timestamp of the most recent session
	LastSessionAt time.Time `json:"last_session_at"`

	// Timestamp of the first session
	FirstSessionAt time.Time `json:"first_session_at"`

	// Timestamp of the most recent activity on this user (session, transaction,
	// status change, data edit, etc.).
	LastActivityAt time.Time `json:"last_activity_at"`

	// Tags assigned to this user
	Tags      []UserDetailItemTags `json:"tags"`
	CreatedAt time.Time            `json:"created_at"`

	// Custom metadata JSON you attached to this user. Defaults to `{}`.
	Metadata map[string]any `json:"metadata"`

	// Activity log and comments for this user (status changes, profile edits,
	// manual notes).
	Comments  []UserDetailItemComments `json:"comments"`
	UpdatedAt time.Time                `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UserDetailItem: Full user detail. Extends UserListItem with metadata, comments, and updated_at.

func (*UserDetailItem) UnmarshalJSON

func (r *UserDetailItem) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UserDetailItem leniently.

type UserDetailItemComments

type UserDetailItemComments struct {
	UUID           string                               `json:"uuid"`
	CommentType    UserDetailItemCommentsCommentType    `json:"comment_type"`
	Comment        string                               `json:"comment"`
	ActorEmail     string                               `json:"actor_email"`
	ActorName      string                               `json:"actor_name"`
	PreviousStatus UserDetailItemCommentsPreviousStatus `json:"previous_status"`
	NewStatus      UserDetailItemCommentsNewStatus      `json:"new_status"`

	// Previous field values for PROFILE_UPDATED entries.
	PreviousValue map[string]any `json:"previous_value"`

	// New field values for PROFILE_UPDATED entries.
	NewValue map[string]any `json:"new_value"`

	// Names of the fields changed by a PROFILE_UPDATED entry.
	ChangedFields   []string       `json:"changed_fields"`
	Metadata        map[string]any `json:"metadata"`
	MentionedEmails []string       `json:"mentioned_emails"`
	CreatedAt       time.Time      `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UserDetailItemComments is a response object.

func (*UserDetailItemComments) UnmarshalJSON

func (r *UserDetailItemComments) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UserDetailItemComments leniently.

type UserDetailItemCommentsCommentType

type UserDetailItemCommentsCommentType string

UserDetailItemCommentsCommentType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UserDetailItemCommentsCommentTypeComment         UserDetailItemCommentsCommentType = "COMMENT"
	UserDetailItemCommentsCommentTypeStatusChanged   UserDetailItemCommentsCommentType = "STATUS_CHANGED"
	UserDetailItemCommentsCommentTypeMetadataUpdated UserDetailItemCommentsCommentType = "METADATA_UPDATED"
	UserDetailItemCommentsCommentTypeTagAdded        UserDetailItemCommentsCommentType = "TAG_ADDED"
	UserDetailItemCommentsCommentTypeTagRemoved      UserDetailItemCommentsCommentType = "TAG_REMOVED"
	UserDetailItemCommentsCommentTypeProfileUpdated  UserDetailItemCommentsCommentType = "PROFILE_UPDATED"
)

Known values of UserDetailItemCommentsCommentType.

type UserDetailItemCommentsNewStatus

type UserDetailItemCommentsNewStatus string

UserDetailItemCommentsNewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UserDetailItemCommentsNewStatusActive  UserDetailItemCommentsNewStatus = "ACTIVE"
	UserDetailItemCommentsNewStatusFlagged UserDetailItemCommentsNewStatus = "FLAGGED"
	UserDetailItemCommentsNewStatusBlocked UserDetailItemCommentsNewStatus = "BLOCKED"
)

Known values of UserDetailItemCommentsNewStatus.

type UserDetailItemCommentsPreviousStatus

type UserDetailItemCommentsPreviousStatus string

UserDetailItemCommentsPreviousStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UserDetailItemCommentsPreviousStatusActive  UserDetailItemCommentsPreviousStatus = "ACTIVE"
	UserDetailItemCommentsPreviousStatusFlagged UserDetailItemCommentsPreviousStatus = "FLAGGED"
	UserDetailItemCommentsPreviousStatusBlocked UserDetailItemCommentsPreviousStatus = "BLOCKED"
)

Known values of UserDetailItemCommentsPreviousStatus.

type UserDetailItemFeaturesList

type UserDetailItemFeaturesList struct {
	Feature string `json:"feature"`
	Status  string `json:"status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UserDetailItemFeaturesList is a response object.

func (*UserDetailItemFeaturesList) UnmarshalJSON

func (r *UserDetailItemFeaturesList) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UserDetailItemFeaturesList leniently.

type UserDetailItemStatus

type UserDetailItemStatus string

UserDetailItemStatus: Lifecycle status of the user record (NOT a session status). `ACTIVE` is the default, `FLAGGED` marks the user for manual attention, `BLOCKED` prevents new sessions for this `vendor_data`.

UserDetailItemStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UserDetailItemStatusActive  UserDetailItemStatus = "ACTIVE"
	UserDetailItemStatusFlagged UserDetailItemStatus = "FLAGGED"
	UserDetailItemStatusBlocked UserDetailItemStatus = "BLOCKED"
)

Known values of UserDetailItemStatus.

type UserDetailItemTags

type UserDetailItemTags struct {
	UUID         string                `json:"uuid"`
	Name         string                `json:"name"`
	Color        string                `json:"color"`
	Tag          UserDetailItemTagsTag `json:"tag"`
	AddedByEmail string                `json:"added_by_email"`
	AddedByName  string                `json:"added_by_name"`
	CreatedAt    time.Time             `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UserDetailItemTags is a response object.

func (*UserDetailItemTags) UnmarshalJSON

func (r *UserDetailItemTags) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UserDetailItemTags leniently.

type UserDetailItemTagsTag

type UserDetailItemTagsTag struct {
	UUID        string                      `json:"uuid"`
	Name        string                      `json:"name"`
	Color       string                      `json:"color"`
	Description string                      `json:"description"`
	Source      UserDetailItemTagsTagSource `json:"source"`
	CreatedAt   time.Time                   `json:"created_at"`
	UpdatedAt   time.Time                   `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UserDetailItemTagsTag is a response object.

func (*UserDetailItemTagsTag) UnmarshalJSON

func (r *UserDetailItemTagsTag) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UserDetailItemTagsTag leniently.

type UserDetailItemTagsTagSource

type UserDetailItemTagsTagSource string

UserDetailItemTagsTagSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UserDetailItemTagsTagSourceDidit  UserDetailItemTagsTagSource = "didit"
	UserDetailItemTagsTagSourceCustom UserDetailItemTagsTagSource = "custom"
)

Known values of UserDetailItemTagsTagSource.

type UserListItem

type UserListItem struct {
	// Didit's stable internal UUID for this user.
	DiditInternalID string `json:"didit_internal_id"`

	// Your unique identifier for this user (passed when creating sessions). This
	// can be null when no vendor identifier was supplied.
	VendorData string `json:"vendor_data"`

	// Custom display name set by you
	DisplayName string `json:"display_name"`

	// Full name extracted from verified documents
	FullName    string `json:"full_name"`
	DateOfBirth string `json:"date_of_birth"`

	// Best available name: display_name if set, otherwise full_name
	EffectiveName string `json:"effective_name"`

	// Lifecycle status of the user record (NOT a session status). `ACTIVE` is the
	// default, `FLAGGED` marks the user for manual attention, `BLOCKED` prevents
	// new sessions for this `vendor_data`.
	Status UserListItemStatus `json:"status"`

	// Presigned URL of the user's portrait photo (expires after a few hours)
	PortraitImageURL string `json:"portrait_image_url"`

	// Total number of verification sessions for this user
	SessionCount int64 `json:"session_count"`

	// Number of approved sessions
	ApprovedCount int64 `json:"approved_count"`

	// Number of declined sessions
	DeclinedCount int64 `json:"declined_count"`

	// Number of sessions in review
	InReviewCount int64 `json:"in_review_count"`

	// ISO 3166-1 alpha-3 codes of issuing countries seen on this user's approved ID
	// documents, e.g. `["USA", "ESP"]`. Empty array when none.
	IssuingStates []string `json:"issuing_states"`

	// Verified email addresses collected from this user's approved sessions, e.g.
	// `["john@example.com"]`.
	ApprovedEmails []string `json:"approved_emails"`

	// Verified phone numbers collected from this user's approved sessions, e.g.
	// `["+14155551234"]`.
	ApprovedPhones []string `json:"approved_phones"`

	// Aggregated per-feature status across all of this user's sessions. Possible
	// keys: `ID_VERIFICATION`, `NFC`, `LIVENESS`, `FACE_MATCH`, `POA`,
	// `QUESTIONNAIRE`, `EMAIL_VERIFICATION`, `PHONE`, `AML`, `IP_ANALYSIS`,
	// `AGE_ESTIMATION`, `DATABASE_VALIDATION`. Possible values: `Approved`,
	// `Declined`, `In Review`, `Not Finished`, `Resub Requested`.
	Features map[string]any `json:"features"`

	// Same data as `features`, as an ordered array of `{feature, status}` objects.
	FeaturesList []UserListItemFeaturesList `json:"features_list"`

	// Timestamp of the most recent session
	LastSessionAt time.Time `json:"last_session_at"`

	// Timestamp of the first session
	FirstSessionAt time.Time `json:"first_session_at"`

	// Timestamp of the most recent activity on this user (session, transaction,
	// status change, data edit, etc.).
	LastActivityAt time.Time `json:"last_activity_at"`

	// Tags assigned to this user
	Tags      []UserListItemTags `json:"tags"`
	CreatedAt time.Time          `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UserListItem: A verified user.

func (*UserListItem) UnmarshalJSON

func (r *UserListItem) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UserListItem leniently.

type UserListItemFeaturesList

type UserListItemFeaturesList struct {
	Feature string `json:"feature"`
	Status  string `json:"status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UserListItemFeaturesList is a response object.

func (*UserListItemFeaturesList) UnmarshalJSON

func (r *UserListItemFeaturesList) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UserListItemFeaturesList leniently.

type UserListItemStatus

type UserListItemStatus string

UserListItemStatus: Lifecycle status of the user record (NOT a session status). `ACTIVE` is the default, `FLAGGED` marks the user for manual attention, `BLOCKED` prevents new sessions for this `vendor_data`.

UserListItemStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UserListItemStatusActive  UserListItemStatus = "ACTIVE"
	UserListItemStatusFlagged UserListItemStatus = "FLAGGED"
	UserListItemStatusBlocked UserListItemStatus = "BLOCKED"
)

Known values of UserListItemStatus.

type UserListItemTags

type UserListItemTags struct {
	UUID  string `json:"uuid"`
	Name  string `json:"name"`
	Color string `json:"color"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UserListItemTags is a response object.

func (*UserListItemTags) UnmarshalJSON

func (r *UserListItemTags) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UserListItemTags leniently.

type UsersBatchDeleteParams

type UsersBatchDeleteParams struct {
	// Your own identifiers to delete, matched exactly as sent.
	VendorDataList Opt[[]string] `json:"vendor_data_list"`

	// Didit internal user IDs to delete - the `didit_internal_id` returned by the
	// create and get endpoints.
	DiditInternalIDList Opt[[]string] `json:"didit_internal_id_list"`

	// If `true`, deletes every user in the application.
	DeleteAll Opt[bool] `json:"delete_all"`
}

UsersBatchDeleteParams holds the parameters of Client.Users.BatchDelete.

func (UsersBatchDeleteParams) MarshalJSON

func (r UsersBatchDeleteParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type UsersBatchDeleteResponse

type UsersBatchDeleteResponse struct {
	// Number of users deleted (excludes vendor_data values that didn't match
	// anything).
	Deleted int64 `json:"deleted"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UsersBatchDeleteResponse is a response object.

func (*UsersBatchDeleteResponse) UnmarshalJSON

func (r *UsersBatchDeleteResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UsersBatchDeleteResponse leniently.

type UsersCreateParams

type UsersCreateParams struct {
	// Your unique identifier for this user (free-form string, NOT a UUID). Must be
	// unique among the application's users; matched exactly as sent. Required.
	VendorData string `json:"vendor_data"`

	// Full legal name of the user.
	FullName Opt[string] `json:"full_name"`

	// Friendly display name shown in the console (takes precedence over `full_name`
	// for UI display).
	DisplayName Opt[string] `json:"display_name"`

	// Date of birth in `YYYY-MM-DD` format.
	DateOfBirth Opt[string] `json:"date_of_birth"`

	// Initial lifecycle status. Defaults to `ACTIVE`.
	Status Opt[UsersCreateParamsStatus] `json:"status"`

	// Arbitrary JSON object you attach to the user. Defaults to `{}`.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Pre-trusted email addresses for this user, e.g. `["john@example.com"]`.
	ApprovedEmails Opt[[]string] `json:"approved_emails"`

	// Pre-trusted phone numbers for this user, e.g. `["+14155551234"]`.
	ApprovedPhones Opt[[]string] `json:"approved_phones"`

	// Pre-recorded issuing countries (ISO 3166-1 alpha-3), e.g. `["USA"]`.
	IssuingStates Opt[[]string] `json:"issuing_states"`

	// Given name. When `full_name` is not sent, Didit joins `first_name` and
	// `last_name` with a space into `full_name`. Not returned as a separate field.
	FirstName Opt[string] `json:"first_name"`

	// Family name. Joined with `first_name` into `full_name` when `full_name` is
	// not sent. Not returned as a separate field.
	LastName Opt[string] `json:"last_name"`

	// Contact email, stored in `metadata.contact.email` (it replaces an `email` you
	// send inside `metadata.contact`). Required when `send_verification_link` is
	// `true`: the link is sent to this address. If `metadata.contact` is not a JSON
	// object, the call answers `400` on this field.
	Email Opt[string] `json:"email"`

	// Contact phone number, stored in `metadata.contact.phone_number`. If
	// `metadata.contact` is not a JSON object, the call answers `400` on this
	// field.
	PhoneNumber Opt[string] `json:"phone_number"`

	// Country as an ISO 3166 code, alpha-2 or alpha-3 (`ES` or `ESP`). Stored
	// uppercased in `metadata.address.country`. If `metadata.address` is not a JSON
	// object, the call answers `400` on this field.
	Country Opt[string] `json:"country"`

	// When `true`, Didit creates a verification session for the person on
	// `workflow_id` and emails them the link at `email`. Requires `email` and
	// `workflow_id`. A scoped API key also needs `sessions` write.
	SendVerificationLink Opt[bool] `json:"send_verification_link"`

	// The workflow of the verification session. Required when
	// `send_verification_link` is `true`. It must verify a person: a Business
	// Verification (KYB) workflow is refused. Ignored otherwise.
	WorkflowID Opt[string] `json:"workflow_id"`

	// Language of the verification email, as a [supported
	// language](/integration/supported-languages) code. English when omitted.
	// Ignored when `send_verification_link` is not `true`.
	Language Opt[string] `json:"language"`
}

UsersCreateParams holds the parameters of Client.Users.Create.

func (UsersCreateParams) MarshalJSON

func (r UsersCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type UsersCreateParamsStatus

type UsersCreateParamsStatus string

UsersCreateParamsStatus: Initial lifecycle status. Defaults to `ACTIVE`.

UsersCreateParamsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UsersCreateParamsStatusActive  UsersCreateParamsStatus = "ACTIVE"
	UsersCreateParamsStatusFlagged UsersCreateParamsStatus = "FLAGGED"
	UsersCreateParamsStatusBlocked UsersCreateParamsStatus = "BLOCKED"
)

Known values of UsersCreateParamsStatus.

type UsersCreateResponse

type UsersCreateResponse struct {
	// Didit's stable internal UUID for this user.
	DiditInternalID string `json:"didit_internal_id"`

	// Your unique identifier for this user (passed when creating sessions). This
	// can be null when no vendor identifier was supplied.
	VendorData string `json:"vendor_data"`

	// Custom display name set by you
	DisplayName string `json:"display_name"`

	// Full name extracted from verified documents
	FullName    string `json:"full_name"`
	DateOfBirth string `json:"date_of_birth"`

	// Best available name: display_name if set, otherwise full_name
	EffectiveName string `json:"effective_name"`

	// Lifecycle status of the user record (NOT a session status). `ACTIVE` is the
	// default, `FLAGGED` marks the user for manual attention, `BLOCKED` prevents
	// new sessions for this `vendor_data`.
	Status UsersCreateResponseStatus `json:"status"`

	// Presigned URL of the user's portrait photo (expires after a few hours)
	PortraitImageURL string `json:"portrait_image_url"`

	// Total number of verification sessions for this user
	SessionCount int64 `json:"session_count"`

	// Number of approved sessions
	ApprovedCount int64 `json:"approved_count"`

	// Number of declined sessions
	DeclinedCount int64 `json:"declined_count"`

	// Number of sessions in review
	InReviewCount int64 `json:"in_review_count"`

	// ISO 3166-1 alpha-3 codes of issuing countries seen on this user's approved ID
	// documents, e.g. `["USA", "ESP"]`. Empty array when none.
	IssuingStates []string `json:"issuing_states"`

	// Verified email addresses collected from this user's approved sessions, e.g.
	// `["john@example.com"]`.
	ApprovedEmails []string `json:"approved_emails"`

	// Verified phone numbers collected from this user's approved sessions, e.g.
	// `["+14155551234"]`.
	ApprovedPhones []string `json:"approved_phones"`

	// Aggregated per-feature status across all of this user's sessions. Possible
	// keys: `ID_VERIFICATION`, `NFC`, `LIVENESS`, `FACE_MATCH`, `POA`,
	// `QUESTIONNAIRE`, `EMAIL_VERIFICATION`, `PHONE`, `AML`, `IP_ANALYSIS`,
	// `AGE_ESTIMATION`, `DATABASE_VALIDATION`. Possible values: `Approved`,
	// `Declined`, `In Review`, `Not Finished`, `Resub Requested`.
	Features map[string]any `json:"features"`

	// Same data as `features`, as an ordered array of `{feature, status}` objects.
	FeaturesList []UsersCreateResponseFeaturesList `json:"features_list"`

	// Timestamp of the most recent session
	LastSessionAt time.Time `json:"last_session_at"`

	// Timestamp of the first session
	FirstSessionAt time.Time `json:"first_session_at"`

	// Timestamp of the most recent activity on this user (session, transaction,
	// status change, data edit, etc.).
	LastActivityAt time.Time `json:"last_activity_at"`

	// Tags assigned to this user
	Tags      []UsersCreateResponseTags `json:"tags"`
	CreatedAt time.Time                 `json:"created_at"`

	// Custom metadata JSON you attached to this user. Defaults to `{}`.
	Metadata map[string]any `json:"metadata"`

	// Activity log and comments for this user (status changes, profile edits,
	// manual notes).
	Comments  []UsersCreateResponseComments `json:"comments"`
	UpdatedAt time.Time                     `json:"updated_at"`

	// The verification session Didit created and emailed to the person. Always
	// present: `null` when `send_verification_link` was not `true`.
	VerificationLink UsersCreateResponseVerificationLink `json:"verification_link"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UsersCreateResponse is a response object.

func (*UsersCreateResponse) UnmarshalJSON

func (r *UsersCreateResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UsersCreateResponse leniently.

type UsersCreateResponseComments

type UsersCreateResponseComments struct {
	UUID           string                                    `json:"uuid"`
	CommentType    UsersCreateResponseCommentsCommentType    `json:"comment_type"`
	Comment        string                                    `json:"comment"`
	ActorEmail     string                                    `json:"actor_email"`
	ActorName      string                                    `json:"actor_name"`
	PreviousStatus UsersCreateResponseCommentsPreviousStatus `json:"previous_status"`
	NewStatus      UsersCreateResponseCommentsNewStatus      `json:"new_status"`

	// Previous field values for PROFILE_UPDATED entries.
	PreviousValue map[string]any `json:"previous_value"`

	// New field values for PROFILE_UPDATED entries.
	NewValue map[string]any `json:"new_value"`

	// Names of the fields changed by a PROFILE_UPDATED entry.
	ChangedFields   []string       `json:"changed_fields"`
	Metadata        map[string]any `json:"metadata"`
	MentionedEmails []string       `json:"mentioned_emails"`
	CreatedAt       time.Time      `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UsersCreateResponseComments is a response object.

func (*UsersCreateResponseComments) UnmarshalJSON

func (r *UsersCreateResponseComments) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UsersCreateResponseComments leniently.

type UsersCreateResponseCommentsCommentType

type UsersCreateResponseCommentsCommentType string

UsersCreateResponseCommentsCommentType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UsersCreateResponseCommentsCommentTypeComment         UsersCreateResponseCommentsCommentType = "COMMENT"
	UsersCreateResponseCommentsCommentTypeStatusChanged   UsersCreateResponseCommentsCommentType = "STATUS_CHANGED"
	UsersCreateResponseCommentsCommentTypeMetadataUpdated UsersCreateResponseCommentsCommentType = "METADATA_UPDATED"
	UsersCreateResponseCommentsCommentTypeTagAdded        UsersCreateResponseCommentsCommentType = "TAG_ADDED"
	UsersCreateResponseCommentsCommentTypeTagRemoved      UsersCreateResponseCommentsCommentType = "TAG_REMOVED"
	UsersCreateResponseCommentsCommentTypeProfileUpdated  UsersCreateResponseCommentsCommentType = "PROFILE_UPDATED"
)

Known values of UsersCreateResponseCommentsCommentType.

type UsersCreateResponseCommentsNewStatus

type UsersCreateResponseCommentsNewStatus string

UsersCreateResponseCommentsNewStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UsersCreateResponseCommentsNewStatusActive  UsersCreateResponseCommentsNewStatus = "ACTIVE"
	UsersCreateResponseCommentsNewStatusFlagged UsersCreateResponseCommentsNewStatus = "FLAGGED"
	UsersCreateResponseCommentsNewStatusBlocked UsersCreateResponseCommentsNewStatus = "BLOCKED"
)

Known values of UsersCreateResponseCommentsNewStatus.

type UsersCreateResponseCommentsPreviousStatus

type UsersCreateResponseCommentsPreviousStatus string

UsersCreateResponseCommentsPreviousStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UsersCreateResponseCommentsPreviousStatusActive  UsersCreateResponseCommentsPreviousStatus = "ACTIVE"
	UsersCreateResponseCommentsPreviousStatusFlagged UsersCreateResponseCommentsPreviousStatus = "FLAGGED"
	UsersCreateResponseCommentsPreviousStatusBlocked UsersCreateResponseCommentsPreviousStatus = "BLOCKED"
)

Known values of UsersCreateResponseCommentsPreviousStatus.

type UsersCreateResponseFeaturesList

type UsersCreateResponseFeaturesList struct {
	Feature string `json:"feature"`
	Status  string `json:"status"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UsersCreateResponseFeaturesList is a response object.

func (*UsersCreateResponseFeaturesList) UnmarshalJSON

func (r *UsersCreateResponseFeaturesList) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UsersCreateResponseFeaturesList leniently.

type UsersCreateResponseStatus

type UsersCreateResponseStatus string

UsersCreateResponseStatus: Lifecycle status of the user record (NOT a session status). `ACTIVE` is the default, `FLAGGED` marks the user for manual attention, `BLOCKED` prevents new sessions for this `vendor_data`.

UsersCreateResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UsersCreateResponseStatusActive  UsersCreateResponseStatus = "ACTIVE"
	UsersCreateResponseStatusFlagged UsersCreateResponseStatus = "FLAGGED"
	UsersCreateResponseStatusBlocked UsersCreateResponseStatus = "BLOCKED"
)

Known values of UsersCreateResponseStatus.

type UsersCreateResponseTags

type UsersCreateResponseTags struct {
	UUID         string                     `json:"uuid"`
	Name         string                     `json:"name"`
	Color        string                     `json:"color"`
	Tag          UsersCreateResponseTagsTag `json:"tag"`
	AddedByEmail string                     `json:"added_by_email"`
	AddedByName  string                     `json:"added_by_name"`
	CreatedAt    time.Time                  `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UsersCreateResponseTags is a response object.

func (*UsersCreateResponseTags) UnmarshalJSON

func (r *UsersCreateResponseTags) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UsersCreateResponseTags leniently.

type UsersCreateResponseTagsTag

type UsersCreateResponseTagsTag struct {
	UUID        string                           `json:"uuid"`
	Name        string                           `json:"name"`
	Color       string                           `json:"color"`
	Description string                           `json:"description"`
	Source      UsersCreateResponseTagsTagSource `json:"source"`
	CreatedAt   time.Time                        `json:"created_at"`
	UpdatedAt   time.Time                        `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UsersCreateResponseTagsTag is a response object.

func (*UsersCreateResponseTagsTag) UnmarshalJSON

func (r *UsersCreateResponseTagsTag) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UsersCreateResponseTagsTag leniently.

type UsersCreateResponseTagsTagSource

type UsersCreateResponseTagsTagSource string

UsersCreateResponseTagsTagSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UsersCreateResponseTagsTagSourceDidit  UsersCreateResponseTagsTagSource = "didit"
	UsersCreateResponseTagsTagSourceCustom UsersCreateResponseTagsTagSource = "custom"
)

Known values of UsersCreateResponseTagsTagSource.

type UsersCreateResponseVerificationLink struct {
	// ID of the verification session.
	SessionID string `json:"session_id"`

	// Sequential number of the session inside your application.
	SessionNumber int64 `json:"session_number"`

	// Status of the session, `Not Started` for a session that was just created.
	Status string `json:"status"`

	// The verification link Didit emailed to the person.
	URL string `json:"url"`

	// The workflow the session runs.
	WorkflowID string `json:"workflow_id"`

	// The address the link was sent to.
	Email string `json:"email"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UsersCreateResponseVerificationLink: The verification session Didit created and emailed to the person. Always present: `null` when `send_verification_link` was not `true`.

func (*UsersCreateResponseVerificationLink) UnmarshalJSON

func (r *UsersCreateResponseVerificationLink) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UsersCreateResponseVerificationLink leniently.

type UsersListParams

type UsersListParams struct {
	// Page size. Defaults to 50 when omitted. There is no enforced maximum, but
	// keep pages small for latency.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Zero-based offset of the first record to return. Prefer following the `next`
	// URL from the previous page over computing this by hand.
	Offset Opt[int64] `json:"-" query:"offset"`
}

UsersListParams holds the parameters of Client.Users.List.

func (UsersListParams) MarshalJSON

func (r UsersListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type UsersService

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

UsersService holds the users operations. Use it through Client.Users.

func (*UsersService) BatchDelete

BatchDelete: Batch delete users.

**Permanently delete** users: the user records are removed permanently. For everyday blocking prefer [Update User Status](#patch-/v3/users/-vendor_data-/update-status/) with `BLOCKED`. Select users with `vendor_data_list`, with `didit_internal_id_list`, or with both at once; or pass `delete_all: true`. This endpoint never narrows `delete_all` with filters. The Console's People filters are refused with a `400` (see the `400` response), so a narrowed intent does not turn into a full wipe. Two exceptions: `filter_has_approved_sessions` and `filter_has_declined_sessions` are not refused and not applied, so with `delete_all: true` they still delete every user; do not send them.

**Biometric templates:** every image-free biometric template retained for these users after session deletion (see `/v3/biometric-templates/`) is purged before the user is deleted, so the person stops matching in duplicate detection and Face Search. If a template cannot be purged because a biometric store is unavailable, the call returns `503`, no user in the request is deleted, and repeating the request finishes the job.

POST /v3/users/delete/

func (*UsersService) Create

Create: Create user.

Create a [user](/entities/users) by `vendor_data`, before or without a verification session. `vendor_data` must be unique among the application's users (a duplicate returns `400`). Not idempotent.

**Contact details:** `email` and `phone_number` are stored in `metadata.contact`, and `country` in `metadata.address`. When you send `first_name` or `last_name` without `full_name`, Didit joins them into `full_name`.

**Verification link:** with `send_verification_link: true`, Didit also creates a verification session for the person on `workflow_id` and emails them the link at `email`. The session runs the same checks as [Create Session](/sessions-api/create-session), such as the blocklist and your credit balance. The person and the session are created together or not at all: if any check fails, nothing is written and no email is sent. The response's `verification_link` describes the session, and is `null` when you don't ask for a link.

**API key access:** a scoped API key needs `users` write. With `send_verification_link: true` it also needs `sessions` write, or the call answers `403` before anything is written. Full-access keys are unaffected. See [API keys](/console/api-keys).

POST /v3/users/create/

func (*UsersService) GeneratePDF

func (r *UsersService) GeneratePDF(ctx context.Context, vendorData string, opts ...option.RequestOption) (*http.Response, error)

GeneratePDF: Download the full user history PDF report.

Render and download one compliance-ready PDF containing the full verification history of the user identified by `vendor_data`. It is the same document the Console produces from **User detail → Actions → Download PDF**, so periodic compliance exports no longer need a person clicking in the Console.

**What the report contains.** A cover page with the profile summary (name, date of birth, issuing states, approved emails and phones), the latest status of every feature, the session counters and an index of the sessions included - followed by the standard report of every included session, in chronological order (oldest first). Each session report is the same document `GET /v3/session/{sessionId}/generate-pdf/` returns for that session.

**Eligible sessions.** Only User Verification (KYC) sessions in `Approved`, `Declined`, `In Review` or `Kyc Expired` are included; sessions in any other status are skipped. If the user has no session in one of those statuses the endpoint returns `403` - see below.

**Cap.** The report is capped at the **20 most recent** reportable sessions. When a user has more, the newest 20 are included and the cover page states how many older sessions were left out. Use `GET /v3/sessions/?vendor_data=…` for the complete list as JSON.

**Branding.** If your application has white-label customization, the cover and every session report are rendered with your logo and privacy-policy URL; otherwise they carry Didit branding. Reports are rendered in English - there is no language parameter.

**No caching.** Every call re-renders the PDF from the current data, so a report generated after a manual review reflects the reviewer's decision. Two calls for the same user can produce byte-different files - archive the downloaded file if you need an immutable copy.

**Latency.** Rendering is synchronous and downloads every stored image of every included session, so a user with many media-heavy sessions can take tens of seconds. Use a generous client read timeout (120 s recommended) and stream the body to disk. Generation stops at a server-side time budget instead of running until your client gives up: if that budget is reached, the response is still a valid PDF containing the most recent sessions, and the cover states how many were omitted.

**Scope.** The user is resolved inside the application that owns the API key. A key can never export a user of another application - such a user does not exist for it and the endpoint returns `404`.

**Trailing slash.** The canonical route ends with a trailing slash (`…/generate-pdf/`). A request without it is served directly with the same response - there is no `301` redirect, so no client has to follow redirects and `curl` does not need `-L`. Use the slashed URL as in the samples.

The response is a file (application/pdf). Read it from the returned response's body and close it.

GET /v3/users/{vendor_data}/generate-pdf/

func (*UsersService) List

List: List users.

List [users](/entities/users) Didit assembles from KYC sessions sharing the same `vendor_data` (free-form string, NOT a UUID), plus users created via the API. Paginated, ordered by `last_session_at` desc. This endpoint does not support filtering or search parameters - fetch pages and filter client-side.

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/users/

func (*UsersService) ListAutoPaging

func (r *UsersService) ListAutoPaging(ctx context.Context, params UsersListParams, opts ...option.RequestOption) *PageIterator[UserListItem]

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*UsersService) ListNetworks

func (r *UsersService) ListNetworks(ctx context.Context, vendorUserUUID string, opts ...option.RequestOption) (*EntityNetworkMembershipList, error)

ListNetworks: List networks for a user.

List the networks a vendor user belongs to.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/users/{vendor_user_uuid}/networks/

func (*UsersService) Retrieve

func (r *UsersService) Retrieve(ctx context.Context, vendorData string, opts ...option.RequestOption) (*UserDetailItem, error)

Retrieve: Get user.

Fetch one [user](/entities/users) by `vendor_data` (exact match). Adds `metadata`, `comments`, and `updated_at` to the list view, and switches `tags` to the detailed tag-link shape.

GET /v3/users/{vendor_data}/

func (*UsersService) RetrieveOngoingMonitoringJob

func (r *UsersService) RetrieveOngoingMonitoringJob(ctx context.Context, jobID string, opts ...option.RequestOption) (*OngoingMonitoringJob, error)

RetrieveOngoingMonitoringJob: Get AML ongoing monitoring job.

Progress and per-outcome counters of a monitoring toggle job. Poll every couple of seconds while status is PENDING or PROCESSING.

The organization and application ids come from the client options.

GET /v3/organization/{organization_id}/application/{application_id}/vendor-users/toggle-ongoing-monitoring/{job_id}/

func (*UsersService) SetAMLMonitoring

SetAMLMonitoring: Enable or disable AML ongoing monitoring for users.

Turns AML ongoing monitoring on or off for the selected users, with the same semantics as the Business Console. Exactly one monitored AML screening is kept per user, so a profile that verified several times is monitored and billed once; disabling turns monitoring off across all of the profile's screenings. Users without any AML screening are screened first (billed as a regular AML screening) when they have the full name, date of birth and country needed; otherwise they are reported as `skipped_no_identity_data`.

Set `estimate_only: true` to preview counts and costs without writing anything. Selections of 20 profiles or fewer resolve inline and return `200` with the completed job; larger selections return `202` and run in the background - poll [Get AML monitoring job](#get-/v3/aml-monitoring/jobs/-job_id-/) with the returned `job_id`. Enabling is refused with `403` when the organization balance does not cover the estimate. Identifiers that match nothing are listed in `unmatched` and never fail the request: a selection that matches nothing completes as an empty job (`total` 0), the same convention as the batch delete endpoints.

POST /v3/users/aml-monitoring/

func (*UsersService) SetOngoingMonitoring

SetOngoingMonitoring: Toggle AML ongoing monitoring for users.

Enables or disables AML ongoing monitoring at the user level. Exactly one monitored AML screening is kept per user; users without any AML screening (for example imported users) get one created and screened first, billed as a regular AML screening. Set estimate_only to preview counts and costs without writing. Batches of 20 or fewer resolve inline (200, COMPLETED); larger batches return 202 and run asynchronously.

The organization and application ids come from the client options.

PATCH /v3/organization/{organization_id}/application/{application_id}/vendor-users/toggle-ongoing-monitoring/

func (*UsersService) Update

func (r *UsersService) Update(ctx context.Context, vendorData string, params UsersUpdateParams, opts ...option.RequestOption) (*UserDetailItem, error)

Update: Update user.

Partial update of a user: `display_name`, `full_name`, `date_of_birth`, `status`, `metadata`, `approved_emails`/`approved_phones`/`issuing_states`. `metadata` fully replaces. Changing `status` here works like [Update User Status](#patch-/v3/users/-vendor_data-/update-status/): it records a `STATUS_CHANGED` activity with the optional `reason`, and `BLOCKED` adds the `vendor_data` to the system blocklist (moving away from `BLOCKED` removes that entry). Changes to `display_name`, `full_name`, `date_of_birth` or `metadata` are recorded as a `PROFILE_UPDATED` activity.

PATCH /v3/users/{vendor_data}/

func (*UsersService) UpdateStatus

func (r *UsersService) UpdateStatus(ctx context.Context, vendorData string, params UsersUpdateStatusParams, opts ...option.RequestOption) (*UserDetailItem, error)

UpdateStatus: Update user status.

Flip only the lifecycle `status` of a user: `ACTIVE`, `FLAGGED` or `BLOCKED` (not session statuses). `BLOCKED` adds the `vendor_data` to the system blocklist; moving away from `BLOCKED` removes that entry. Each change is recorded as a `STATUS_CHANGED` activity on the user, with the optional `reason` as its `comment`. Sending the current status changes nothing and records no `reason`. The `user.status.updated` webhook does not carry `reason`.

PATCH /v3/users/{vendor_data}/update-status/

func (*UsersService) UploadFace

func (r *UsersService) UploadFace(ctx context.Context, diditInternalID string, params UsersUploadFaceParams, opts ...option.RequestOption) (*UsersUploadFaceResponse, error)

UploadFace: Upload user face.

Attach a trusted imported face image to an existing User profile. Use this after creating or retrieving a User by `vendor_data` and reading its `didit_internal_id`. The uploaded face is stored on the User profile and indexed for duplicate detection and face search. It is not added to a face blocklist.

The organization and application ids come from the client options.

POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/

type UsersSetAMLMonitoringParams

type UsersSetAMLMonitoringParams struct {
	// true to enable monitoring, false to disable it. Required.
	IsEnabled bool `json:"is_enabled"`

	// When true, returns the cost estimate and performs no writes - no screening,
	// no billing, no job.
	EstimateOnly Opt[bool] `json:"estimate_only"`

	// Your own identifiers of the users to toggle, matched exactly as sent.
	VendorDataList Opt[[]string] `json:"vendor_data_list"`

	// Didit internal ids of the users to toggle - the `didit_internal_id` returned
	// by the create, get and list endpoints.
	DiditInternalIDList Opt[[]string] `json:"didit_internal_id_list"`
}

UsersSetAMLMonitoringParams holds the parameters of Client.Users.SetAMLMonitoring.

func (UsersSetAMLMonitoringParams) MarshalJSON

func (r UsersSetAMLMonitoringParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type UsersSetAMLMonitoringResponse

type UsersSetAMLMonitoringResponse struct {
	JobID  string                              `json:"job_id"`
	Status UsersSetAMLMonitoringResponseStatus `json:"status"`

	// true when the job enables monitoring, false when it disables it.
	IsEnabled bool `json:"is_enabled"`

	// Which profile family the job toggles.
	TargetType UsersSetAMLMonitoringResponseTargetType `json:"target_type"`

	// Profiles the job processes.
	Total int64 `json:"total"`

	// Profiles processed so far.
	Processed int64 `json:"processed"`

	// Per-record outcome counters. Every selected profile resolves to exactly one
	// counter; nothing is silently skipped.
	Outcomes UsersSetAMLMonitoringResponseOutcomes `json:"outcomes"`

	// One entry per processed profile, in processing order. Grows while the job
	// runs; complete once status is COMPLETED. Recorded for jobs started through
	// the API.
	Results []UsersSetAMLMonitoringResponseResults `json:"results"`

	// Generic failure message when status is FAILED; the detailed cause is kept on
	// the platform side.
	Error       string    `json:"error"`
	CreatedAt   time.Time `json:"created_at"`
	CompletedAt time.Time `json:"completed_at"`

	// Cost preview. Returned directly when estimate_only is true (nothing is
	// written).
	Estimate UsersSetAMLMonitoringResponseEstimate `json:"estimate"`

	// Identifiers of the request that matched no profile in this application,
	// exactly as sent. They are not part of the job.
	Unmatched []string `json:"unmatched"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UsersSetAMLMonitoringResponse is a response object.

func (*UsersSetAMLMonitoringResponse) UnmarshalJSON

func (r *UsersSetAMLMonitoringResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UsersSetAMLMonitoringResponse leniently.

type UsersSetAMLMonitoringResponseEstimate

type UsersSetAMLMonitoringResponseEstimate struct {
	// Profiles matched by the selection.
	UsersTotal int64 `json:"users_total"`

	// Profiles already monitored (nothing to do when enabling; these are what
	// disabling turns off).
	AlreadyEnabled int64 `json:"already_enabled"`

	// Profiles whose existing AML screening will be switched to monitored (no new
	// screening).
	WithExistingAML int64 `json:"with_existing_aml"`

	// Profiles without any AML screening that will be screened first (billed as a
	// regular AML screening).
	NeedingScreening int64 `json:"needing_screening"`

	// Profiles that cannot be screened because identity data is missing.
	SkippedNoIdentityData int64 `json:"skipped_no_identity_data"`

	// Blocked users that will be skipped (always 0 for businesses).
	SkippedBlocked int64 `json:"skipped_blocked"`

	// One-time cost of the new screenings.
	EstimatedScreeningCostUsd float64 `json:"estimated_screening_cost_usd"`

	// Yearly monitoring cost of the profiles that will become monitored.
	EstimatedAnnualMonitoringCostUsd float64 `json:"estimated_annual_monitoring_cost_usd"`

	// Whether the organization balance covers the screening plus the first year of
	// monitoring.
	BalanceSufficient bool `json:"balance_sufficient"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UsersSetAMLMonitoringResponseEstimate: Cost preview. Returned directly when estimate_only is true (nothing is written).

func (*UsersSetAMLMonitoringResponseEstimate) UnmarshalJSON

func (r *UsersSetAMLMonitoringResponseEstimate) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UsersSetAMLMonitoringResponseEstimate leniently.

type UsersSetAMLMonitoringResponseOutcomes

type UsersSetAMLMonitoringResponseOutcomes struct {
	// Monitoring enabled on an existing AML screening.
	Enabled int64 `json:"enabled"`

	// A new AML screening was created (billed) and monitoring enabled on it.
	ScreenedAndEnabled int64 `json:"screened_and_enabled"`

	// Monitoring was already active; nothing changed and nothing was billed.
	AlreadyEnabled int64 `json:"already_enabled"`

	// Monitoring turned off across every AML screening of the profile.
	Disabled int64 `json:"disabled"`

	// Skipped: the profile lacks the full name, date of birth and country (users)
	// or a name (businesses) needed to screen.
	SkippedNoIdentityData int64 `json:"skipped_no_identity_data"`

	// Skipped: the user is blocked.
	SkippedBlocked int64 `json:"skipped_blocked"`

	// Skipped: sandbox application, no screening is created.
	SkippedSandbox int64 `json:"skipped_sandbox"`

	// The screening could not be completed; retry later.
	FailedProvider int64 `json:"failed_provider"`

	// Balance ran out while the job was running.
	FailedInsufficientBalance int64 `json:"failed_insufficient_balance"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UsersSetAMLMonitoringResponseOutcomes: Per-record outcome counters. Every selected profile resolves to exactly one counter; nothing is silently skipped.

func (*UsersSetAMLMonitoringResponseOutcomes) UnmarshalJSON

func (r *UsersSetAMLMonitoringResponseOutcomes) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UsersSetAMLMonitoringResponseOutcomes leniently.

type UsersSetAMLMonitoringResponseResults

type UsersSetAMLMonitoringResponseResults struct {
	// Didit internal id of the profile.
	DiditInternalID string `json:"didit_internal_id"`

	// Your own identifier for the profile.
	VendorData string                                      `json:"vendor_data"`
	Outcome    UsersSetAMLMonitoringResponseResultsOutcome `json:"outcome"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UsersSetAMLMonitoringResponseResults is a response object.

func (*UsersSetAMLMonitoringResponseResults) UnmarshalJSON

func (r *UsersSetAMLMonitoringResponseResults) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UsersSetAMLMonitoringResponseResults leniently.

type UsersSetAMLMonitoringResponseResultsOutcome

type UsersSetAMLMonitoringResponseResultsOutcome string

UsersSetAMLMonitoringResponseResultsOutcome is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UsersSetAMLMonitoringResponseResultsOutcomeEnabled                   UsersSetAMLMonitoringResponseResultsOutcome = "enabled"
	UsersSetAMLMonitoringResponseResultsOutcomeScreenedAndEnabled        UsersSetAMLMonitoringResponseResultsOutcome = "screened_and_enabled"
	UsersSetAMLMonitoringResponseResultsOutcomeAlreadyEnabled            UsersSetAMLMonitoringResponseResultsOutcome = "already_enabled"
	UsersSetAMLMonitoringResponseResultsOutcomeDisabled                  UsersSetAMLMonitoringResponseResultsOutcome = "disabled"
	UsersSetAMLMonitoringResponseResultsOutcomeSkippedNoIdentityData     UsersSetAMLMonitoringResponseResultsOutcome = "skipped_no_identity_data"
	UsersSetAMLMonitoringResponseResultsOutcomeSkippedBlocked            UsersSetAMLMonitoringResponseResultsOutcome = "skipped_blocked"
	UsersSetAMLMonitoringResponseResultsOutcomeSkippedSandbox            UsersSetAMLMonitoringResponseResultsOutcome = "skipped_sandbox"
	UsersSetAMLMonitoringResponseResultsOutcomeFailedProvider            UsersSetAMLMonitoringResponseResultsOutcome = "failed_provider"
	UsersSetAMLMonitoringResponseResultsOutcomeFailedInsufficientBalance UsersSetAMLMonitoringResponseResultsOutcome = "failed_insufficient_balance"
)

Known values of UsersSetAMLMonitoringResponseResultsOutcome.

type UsersSetAMLMonitoringResponseStatus

type UsersSetAMLMonitoringResponseStatus string

UsersSetAMLMonitoringResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UsersSetAMLMonitoringResponseStatusPending    UsersSetAMLMonitoringResponseStatus = "PENDING"
	UsersSetAMLMonitoringResponseStatusProcessing UsersSetAMLMonitoringResponseStatus = "PROCESSING"
	UsersSetAMLMonitoringResponseStatusCompleted  UsersSetAMLMonitoringResponseStatus = "COMPLETED"
	UsersSetAMLMonitoringResponseStatusFailed     UsersSetAMLMonitoringResponseStatus = "FAILED"
)

Known values of UsersSetAMLMonitoringResponseStatus.

type UsersSetAMLMonitoringResponseTargetType

type UsersSetAMLMonitoringResponseTargetType string

UsersSetAMLMonitoringResponseTargetType: Which profile family the job toggles.

UsersSetAMLMonitoringResponseTargetType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UsersSetAMLMonitoringResponseTargetTypeUser     UsersSetAMLMonitoringResponseTargetType = "user"
	UsersSetAMLMonitoringResponseTargetTypeBusiness UsersSetAMLMonitoringResponseTargetType = "business"
)

Known values of UsersSetAMLMonitoringResponseTargetType.

type UsersSetOngoingMonitoringResponse

type UsersSetOngoingMonitoringResponse struct {
	JobID     string                                  `json:"job_id"`
	Status    UsersSetOngoingMonitoringResponseStatus `json:"status"`
	IsEnabled bool                                    `json:"is_enabled"`
	Total     int64                                   `json:"total"`
	Processed int64                                   `json:"processed"`

	// Per-entity outcome counters. Nothing is silently skipped: every requested
	// entity resolves to exactly one counter.
	Outcomes UsersSetOngoingMonitoringResponseOutcomes `json:"outcomes"`
	Error    string                                    `json:"error"`

	// Cost preview. Returned directly when estimate_only is true (no writes are
	// performed).
	Estimate UsersSetOngoingMonitoringResponseEstimate `json:"estimate"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UsersSetOngoingMonitoringResponse is a response object.

func (*UsersSetOngoingMonitoringResponse) UnmarshalJSON

func (r *UsersSetOngoingMonitoringResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UsersSetOngoingMonitoringResponse leniently.

type UsersSetOngoingMonitoringResponseEstimate

type UsersSetOngoingMonitoringResponseEstimate struct {
	// Entities in the selection.
	UsersTotal     int64 `json:"users_total"`
	AlreadyEnabled int64 `json:"already_enabled"`

	// Entities whose existing AML screening will be switched to monitored.
	WithExistingAML int64 `json:"with_existing_aml"`

	// Entities without any AML screening that will be screened first (billed).
	NeedingScreening                 int64   `json:"needing_screening"`
	SkippedNoIdentityData            int64   `json:"skipped_no_identity_data"`
	SkippedBlocked                   int64   `json:"skipped_blocked"`
	EstimatedScreeningCostUsd        float64 `json:"estimated_screening_cost_usd"`
	EstimatedAnnualMonitoringCostUsd float64 `json:"estimated_annual_monitoring_cost_usd"`
	BalanceSufficient                bool    `json:"balance_sufficient"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UsersSetOngoingMonitoringResponseEstimate: Cost preview. Returned directly when estimate_only is true (no writes are performed).

func (*UsersSetOngoingMonitoringResponseEstimate) UnmarshalJSON

func (r *UsersSetOngoingMonitoringResponseEstimate) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UsersSetOngoingMonitoringResponseEstimate leniently.

type UsersSetOngoingMonitoringResponseOutcomes

type UsersSetOngoingMonitoringResponseOutcomes struct {
	// Monitoring enabled on an existing AML screening.
	Enabled int64 `json:"enabled"`

	// A new AML screening was created (billed) and monitoring enabled.
	ScreenedAndEnabled int64 `json:"screened_and_enabled"`

	// Monitoring was already active (legacy duplicate rows are consolidated).
	AlreadyEnabled int64 `json:"already_enabled"`

	// Monitoring disabled on every AML row of the entity.
	Disabled int64 `json:"disabled"`

	// Skipped: no full name + date of birth + country available to screen.
	SkippedNoIdentityData int64 `json:"skipped_no_identity_data"`

	// Skipped: the user is blocked.
	SkippedBlocked int64 `json:"skipped_blocked"`

	// Skipped: sandbox application.
	SkippedSandbox int64 `json:"skipped_sandbox"`

	// The screening provider call failed.
	FailedProvider int64 `json:"failed_provider"`

	// Balance ran out mid-job.
	FailedInsufficientBalance int64 `json:"failed_insufficient_balance"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UsersSetOngoingMonitoringResponseOutcomes: Per-entity outcome counters. Nothing is silently skipped: every requested entity resolves to exactly one counter.

func (*UsersSetOngoingMonitoringResponseOutcomes) UnmarshalJSON

func (r *UsersSetOngoingMonitoringResponseOutcomes) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UsersSetOngoingMonitoringResponseOutcomes leniently.

type UsersSetOngoingMonitoringResponseStatus

type UsersSetOngoingMonitoringResponseStatus string

UsersSetOngoingMonitoringResponseStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UsersSetOngoingMonitoringResponseStatusPending    UsersSetOngoingMonitoringResponseStatus = "PENDING"
	UsersSetOngoingMonitoringResponseStatusProcessing UsersSetOngoingMonitoringResponseStatus = "PROCESSING"
	UsersSetOngoingMonitoringResponseStatusCompleted  UsersSetOngoingMonitoringResponseStatus = "COMPLETED"
	UsersSetOngoingMonitoringResponseStatusFailed     UsersSetOngoingMonitoringResponseStatus = "FAILED"
)

Known values of UsersSetOngoingMonitoringResponseStatus.

type UsersUpdateParams

type UsersUpdateParams struct {
	// Full name of the user
	FullName Opt[string] `json:"full_name"`

	// Custom display name for this user
	DisplayName Opt[string] `json:"display_name"`

	// Date of birth in YYYY-MM-DD format
	DateOfBirth Opt[string] `json:"date_of_birth"`

	// User lifecycle status. A change is recorded as a `STATUS_CHANGED` activity,
	// and `BLOCKED` adds the `vendor_data` to the system blocklist (moving away
	// from `BLOCKED` removes that entry).
	Status Opt[UsersUpdateParamsStatus] `json:"status"`

	// Arbitrary JSON object you attach to the user. **Fully replaces** the existing
	// metadata on update - merge client-side if you only want to add keys.
	Metadata Opt[map[string]any] `json:"metadata"`

	// Verified email addresses for this user, e.g. `["john@example.com"]`. Fully
	// replaces the stored list.
	ApprovedEmails Opt[[]string] `json:"approved_emails"`

	// Verified phone numbers for this user. Fully replaces the stored list.
	ApprovedPhones Opt[[]string] `json:"approved_phones"`

	// Issuing countries (ISO 3166-1 alpha-3), e.g. `["USA"]`. Fully replaces the
	// stored list.
	IssuingStates Opt[[]string] `json:"issuing_states"`

	// Why the status changed. Recorded on the status-change entry of the user's
	// activity (`comments[].comment`, and **Activity** in the Business Console),
	// only when the status actually changes. Webhooks do not carry it.
	Reason Opt[string] `json:"reason"`
}

UsersUpdateParams holds the parameters of Client.Users.Update.

func (UsersUpdateParams) MarshalJSON

func (r UsersUpdateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type UsersUpdateParamsStatus

type UsersUpdateParamsStatus string

UsersUpdateParamsStatus: User lifecycle status. A change is recorded as a `STATUS_CHANGED` activity, and `BLOCKED` adds the `vendor_data` to the system blocklist (moving away from `BLOCKED` removes that entry).

UsersUpdateParamsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UsersUpdateParamsStatusActive  UsersUpdateParamsStatus = "ACTIVE"
	UsersUpdateParamsStatusFlagged UsersUpdateParamsStatus = "FLAGGED"
	UsersUpdateParamsStatusBlocked UsersUpdateParamsStatus = "BLOCKED"
)

Known values of UsersUpdateParamsStatus.

type UsersUpdateStatusParams

type UsersUpdateStatusParams struct {
	// New lifecycle status. `BLOCKED` also adds the `vendor_data` to the system
	// blocklist. Required.
	Status UsersUpdateStatusParamsStatus `json:"status"`

	// Why the status changed. Recorded on the status-change entry of the user's
	// activity (`comments[].comment`, and **Activity** in the Business Console),
	// only when the status actually changes. Webhooks do not carry it.
	Reason Opt[string] `json:"reason"`
}

UsersUpdateStatusParams holds the parameters of Client.Users.UpdateStatus.

func (UsersUpdateStatusParams) MarshalJSON

func (r UsersUpdateStatusParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type UsersUpdateStatusParamsStatus

type UsersUpdateStatusParamsStatus string

UsersUpdateStatusParamsStatus: New lifecycle status. `BLOCKED` also adds the `vendor_data` to the system blocklist.

UsersUpdateStatusParamsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	UsersUpdateStatusParamsStatusActive  UsersUpdateStatusParamsStatus = "ACTIVE"
	UsersUpdateStatusParamsStatusFlagged UsersUpdateStatusParamsStatus = "FLAGGED"
	UsersUpdateStatusParamsStatusBlocked UsersUpdateStatusParamsStatus = "BLOCKED"
)

Known values of UsersUpdateStatusParamsStatus.

type UsersUploadFaceParams

type UsersUploadFaceParams struct {
	// Raw base64-encoded JPG or PNG face image. Do not include a
	// `data:image/...;base64,` prefix. Max decoded size: 2 MB. Required.
	Image string `json:"image"`

	// Optional operator-visible note for the uploaded face.
	Comment Opt[string] `json:"comment"`
}

UsersUploadFaceParams holds the parameters of Client.Users.UploadFace.

func (UsersUploadFaceParams) MarshalJSON

func (r UsersUploadFaceParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type UsersUploadFaceResponse

type UsersUploadFaceResponse struct {
	// UUID of the uploaded User face record.
	UUID string `json:"uuid"`

	// Signed URL for the uploaded face image.
	ImageURL string `json:"image_url"`

	// Comment supplied when the face was uploaded.
	Comment string `json:"comment"`

	// Email or actor identifier of the uploader when available.
	UploadedBy string `json:"uploaded_by"`

	// Upload timestamp.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

UsersUploadFaceResponse is a response object.

func (*UsersUploadFaceResponse) UnmarshalJSON

func (r *UsersUploadFaceResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes UsersUploadFaceResponse leniently.

type VASPDirectoryEntry

type VASPDirectoryEntry struct {
	// The entry's id, for GET /v3/travel-rule/vasps/{vasp_id}/.
	ID string `json:"id"`

	// directory for an entry of the shared directory; didit for a member of the
	// Didit network.
	Kind VASPDirectoryEntryKind `json:"kind"`
	Name string                 `json:"name"`
	Lei  string                 `json:"lei"`

	// ISO 3166 country code, as the source gives it.
	Jurisdiction string `json:"jurisdiction"`

	// The VASP's web domains. Always empty for Didit network members.
	Domains []string `json:"domains"`

	// Whether your application has an available route to this VASP, or to one of
	// its entities for a brand. Always true for a Didit network member, except on a
	// sandbox application, where every row is false.
	Reachable bool `json:"reachable"`

	// Other names the VASP is found by.
	Aliases  []VASPDirectoryEntryAliases  `json:"aliases"`
	Networks []VASPDirectoryEntryNetworks `json:"networks"`
	Routes   []VASPDirectoryEntryRoutes   `json:"routes"`

	// The brand this entry is a regulated entity of. Null when it is not part of
	// one.
	Umbrella VASPDirectoryEntryUmbrella `json:"umbrella"`

	// For a brand, the regulated entities that receive its transfers. A transfer
	// naming the brand goes to the reachable entity in the jurisdiction it states
	// (beneficiary_data.counterparty_vasp_jurisdiction), else to the entity
	// blockchain analytics attribution linked to the destination wallet, else to
	// the only reachable entity when no jurisdiction is stated. Two entities that
	// fit equally are never guessed between.
	Entities []VASPDirectoryEntryEntities `json:"entities"`

	// The platform's contacts for this VASP and your application's own.
	Contacts []VASPDirectoryEntryContacts `json:"contacts"`

	// Didit's verification status of the entry, scored by the verification
	// component of dd_score. Always COMPLETED for a Didit network member.
	DdStatus VASPDirectoryEntryDdStatus `json:"dd_status"`

	// The shared due-diligence score of a directory entry, 0 to 100, where higher
	// is safer (see dd_score_semantic): the sum of the points in
	// dd_score_breakdown. Null for a Didit network member, which is not scored. An
	// entry not assessed yet (dd_assessed_at null) shows 0 with an empty
	// risk_level, so read risk_level rather than the raw score.
	DdScore int64 `json:"dd_score"`

	// Rails recorded on the entry. Read routes for what your application can use
	// today.
	ReachableRails []VASPDirectoryEntryReachableRails `json:"reachable_rails"`

	// true for a member of the Didit network (dd_status is always COMPLETED,
	// dd_score null and risk_level empty for these) and for a directory entry
	// linked to a Didit customer.
	IsDiditCustomer bool `json:"is_didit_customer"`

	// One object per component of dd_score. Components, their weight (max) and
	// their reason codes: jurisdiction, 25 (jurisdiction_not_high_risk,
	// jurisdiction_high_risk, jurisdiction_unknown); verification, 15
	// (dd_status_completed, dd_status_in_progress, dd_status_not_started,
	// dd_status_rejected); protocol, 15 (native_rail, email_only, no_rail); lei, 10
	// (lei_valid, lei_missing); history, 10 (history, no_history); essentials, 15
	// (essential_checks, no_essential_checks); responsiveness, 10 (responsive,
	// unresponsive, responsiveness_unknown). Empty for a Didit network member.
	DdScoreBreakdown map[string]VASPDirectoryEntryDdScoreBreakdown `json:"dd_score_breakdown"`

	// When dd_score, risk_level and responsiveness were last computed: after an
	// exchange with the entry completes, finishes, expires, mismatches or is
	// declined, when Didit refreshes or curates the entry, and in the weekly
	// directory refresh. Null for a Didit network member.
	DdAssessedAt time.Time `json:"dd_assessed_at"`

	// Which way dd_score points: always higher_is_safer.
	DdScoreSemantic VASPDirectoryEntryDdScoreSemantic `json:"dd_score_semantic"`

	// The band dd_score falls in: LOW (70 or more), MEDIUM (40 to 69) or HIGH
	// (below 40). Empty for a Didit network member and for an entry not assessed
	// yet. Filter on it with risk. Your own flagged screening never changes this
	// shared value: it makes counterparty_risk_level HIGH in your rules instead.
	RiskLevel VASPDirectoryEntryRiskLevel `json:"risk_level"`

	// Whether the VASP answers Travel Rule requests: the share of the requests
	// Didit customers started towards it in the last 90 days that it answered. Only
	// requests sent over a network or protocol rail, or by email to a shared
	// address (the entry's compliance address or a platform contact), count; a
	// request sent to an address a customer typed, or to a customer's private
	// contact, never does. An expired request is unanswered; a completed exchange,
	// a decline or a data mismatch is an answer; a cancelled request or an
	// unreachable rail is neither. Always UNKNOWN with zero counts for a Didit
	// network member.
	Responsiveness VASPDirectoryEntryResponsiveness `json:"responsiveness"`

	// The essential-checks report of a directory entry, built only from the
	// platform's verified sources: registration (an official register lists the
	// VASP: the EU's interim MiCA register, the public TRISA directory or the
	// global LEI register), licence (a MiCA authorisation is on record and
	// current), domain (the entry's domain matches its TRP endpoint or the website
	// its register gives) and lei (its LEI record is active, issued and consistent
	// with the entry's names and country). The essentials component of dd_score is
	// the share of decided checks that pass. Empty until the weekly directory
	// refresh first checks the entry, and always empty for a Didit network member.
	EssentialChecks VASPDirectoryEntryEssentialChecks `json:"essential_checks"`

	// Your application's decision on this VASP, or for an entity with no decision
	// of its own its brand's (inherited_from names the brand). Null when there is
	// none. Private to your application.
	Decision TravelRuleCounterpartyDecision `json:"decision"`

	// Your application's latest sanctions and adverse-media screening of this VASP.
	// Null when you never screened it. Private to your application.
	EntityScreening TravelRuleCounterpartyScreening `json:"entity_screening"`

	// Your application's due-diligence questionnaires with this VASP, newest first.
	// Private to your application.
	Questionnaires []TravelRuleCounterpartyQuestionnaire `json:"questionnaires"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

VASPDirectoryEntry: A VASP of the directory or a member of the Didit network, with the routes your application has to it. A customer is a member of the Didit network only while its application is live, its Travel Rule is on, its profile is discoverable, has a legal name and a confirmed compliance email, and Didit has not marked the application as a test, demo or internal one. Each row also carries the shared due-diligence assessment (dd_score, risk_level, responsiveness, essential_checks) and your application's own decision, entity screening and questionnaires, which no other customer sees.

func (*VASPDirectoryEntry) UnmarshalJSON

func (r *VASPDirectoryEntry) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes VASPDirectoryEntry leniently.

type VASPDirectoryEntryAliases

type VASPDirectoryEntryAliases struct {
	Name string `json:"name"`

	// trading_name, other_legal_name (from the global LEI register), network_name
	// (the name on a Travel Rule network), attribution (the entity name blockchain
	// analytics gives the VASP's wallets), merged (the name of a duplicate entry
	// merged into this one) or staff.
	Kind VASPDirectoryEntryAliasesKind `json:"kind"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

VASPDirectoryEntryAliases is a response object.

func (*VASPDirectoryEntryAliases) UnmarshalJSON

func (r *VASPDirectoryEntryAliases) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes VASPDirectoryEntryAliases leniently.

type VASPDirectoryEntryAliasesKind

type VASPDirectoryEntryAliasesKind string

VASPDirectoryEntryAliasesKind: trading_name, other_legal_name (from the global LEI register), network_name (the name on a Travel Rule network), attribution (the entity name blockchain analytics gives the VASP's wallets), merged (the name of a duplicate entry merged into this one) or staff.

VASPDirectoryEntryAliasesKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryAliasesKindTradingName    VASPDirectoryEntryAliasesKind = "trading_name"
	VASPDirectoryEntryAliasesKindOtherLegalName VASPDirectoryEntryAliasesKind = "other_legal_name"
	VASPDirectoryEntryAliasesKindNetworkName    VASPDirectoryEntryAliasesKind = "network_name"
	VASPDirectoryEntryAliasesKindAttribution    VASPDirectoryEntryAliasesKind = "attribution"
	VASPDirectoryEntryAliasesKindMerged         VASPDirectoryEntryAliasesKind = "merged"
	VASPDirectoryEntryAliasesKindStaff          VASPDirectoryEntryAliasesKind = "staff"
)

Known values of VASPDirectoryEntryAliasesKind.

type VASPDirectoryEntryContacts

type VASPDirectoryEntryContacts struct {
	ID    string `json:"id"`
	Email string `json:"email"`
	Name  string `json:"name"`

	// staff: curated by Didit; application: added by your application; learned: an
	// address that answered a Travel Rule request through its response link.
	Source VASPDirectoryEntryContactsSource `json:"source"`

	// platform contacts are used for every Didit customer's transfers; application
	// contacts are private to your application, which sees only its own.
	Scope VASPDirectoryEntryContactsScope `json:"scope"`

	// When someone at this address answered a request. Null when it has not yet.
	VerifiedAt time.Time `json:"verified_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

VASPDirectoryEntryContacts: A compliance contact the EMAIL rail can write to.

func (*VASPDirectoryEntryContacts) UnmarshalJSON

func (r *VASPDirectoryEntryContacts) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes VASPDirectoryEntryContacts leniently.

type VASPDirectoryEntryContactsScope

type VASPDirectoryEntryContactsScope string

VASPDirectoryEntryContactsScope: platform contacts are used for every Didit customer's transfers; application contacts are private to your application, which sees only its own.

VASPDirectoryEntryContactsScope is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryContactsScopePlatform    VASPDirectoryEntryContactsScope = "platform"
	VASPDirectoryEntryContactsScopeApplication VASPDirectoryEntryContactsScope = "application"
)

Known values of VASPDirectoryEntryContactsScope.

type VASPDirectoryEntryContactsSource

type VASPDirectoryEntryContactsSource string

VASPDirectoryEntryContactsSource: staff: curated by Didit; application: added by your application; learned: an address that answered a Travel Rule request through its response link.

VASPDirectoryEntryContactsSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryContactsSourceStaff       VASPDirectoryEntryContactsSource = "staff"
	VASPDirectoryEntryContactsSourceApplication VASPDirectoryEntryContactsSource = "application"
	VASPDirectoryEntryContactsSourceLearned     VASPDirectoryEntryContactsSource = "learned"
)

Known values of VASPDirectoryEntryContactsSource.

type VASPDirectoryEntryDdScoreBreakdown

type VASPDirectoryEntryDdScoreBreakdown struct {
	// Points the component contributes, rounded to one decimal.
	Points float64 `json:"points"`

	// The component's weight: the points it contributes at best.
	Max int64 `json:"max"`

	// Machine-readable code of the component's verdict.
	Reason string `json:"reason"`

	// One-line English explanation.
	Detail string `json:"detail"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

VASPDirectoryEntryDdScoreBreakdown is a response object.

func (*VASPDirectoryEntryDdScoreBreakdown) UnmarshalJSON

func (r *VASPDirectoryEntryDdScoreBreakdown) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes VASPDirectoryEntryDdScoreBreakdown leniently.

type VASPDirectoryEntryDdScoreSemantic

type VASPDirectoryEntryDdScoreSemantic string

VASPDirectoryEntryDdScoreSemantic: Which way dd_score points: always higher_is_safer.

VASPDirectoryEntryDdScoreSemantic is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryDdScoreSemanticHigherIsSafer VASPDirectoryEntryDdScoreSemantic = "higher_is_safer"
)

Known values of VASPDirectoryEntryDdScoreSemantic.

type VASPDirectoryEntryDdStatus

type VASPDirectoryEntryDdStatus string

VASPDirectoryEntryDdStatus: Didit's verification status of the entry, scored by the verification component of dd_score. Always COMPLETED for a Didit network member.

VASPDirectoryEntryDdStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryDdStatusNotStarted VASPDirectoryEntryDdStatus = "NOT_STARTED"
	VASPDirectoryEntryDdStatusInProgress VASPDirectoryEntryDdStatus = "IN_PROGRESS"
	VASPDirectoryEntryDdStatusCompleted  VASPDirectoryEntryDdStatus = "COMPLETED"
	VASPDirectoryEntryDdStatusRejected   VASPDirectoryEntryDdStatus = "REJECTED"
)

Known values of VASPDirectoryEntryDdStatus.

type VASPDirectoryEntryEntities

type VASPDirectoryEntryEntities struct {
	ID           string `json:"id"`
	Name         string `json:"name"`
	Lei          string `json:"lei"`
	Jurisdiction string `json:"jurisdiction"`

	// Whether your application has an available route to it.
	Reachable bool `json:"reachable"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

VASPDirectoryEntryEntities: A regulated entity of a brand: the legal entity that receives a transfer.

func (*VASPDirectoryEntryEntities) UnmarshalJSON

func (r *VASPDirectoryEntryEntities) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes VASPDirectoryEntryEntities leniently.

type VASPDirectoryEntryEssentialChecks

type VASPDirectoryEntryEssentialChecks struct {
	Level     VASPDirectoryEntryEssentialChecksLevel    `json:"level"`
	CheckedAt time.Time                                 `json:"checked_at"`
	Checks    []VASPDirectoryEntryEssentialChecksChecks `json:"checks"`
	Passed    int64                                     `json:"passed"`
	Failed    int64                                     `json:"failed"`
	Unknown   int64                                     `json:"unknown"`
	Total     int64                                     `json:"total"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

VASPDirectoryEntryEssentialChecks: The essential-checks report of a directory entry, built only from the platform's verified sources: registration (an official register lists the VASP: the EU's interim MiCA register, the public TRISA directory or the global LEI register), licence (a MiCA authorisation is on record and current), domain (the entry's domain matches its TRP endpoint or the website its register gives) and lei (its LEI record is active, issued and consistent with the entry's names and country). The essentials component of dd_score is the share of decided checks that pass. Empty until the weekly directory refresh first checks the entry, and always empty for a Didit network member.

func (*VASPDirectoryEntryEssentialChecks) UnmarshalJSON

func (r *VASPDirectoryEntryEssentialChecks) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes VASPDirectoryEntryEssentialChecks leniently.

type VASPDirectoryEntryEssentialChecksChecks

type VASPDirectoryEntryEssentialChecksChecks struct {
	ID VASPDirectoryEntryEssentialChecksChecksID `json:"id"`

	// unknown when no source on record can decide the check.
	Status VASPDirectoryEntryEssentialChecksChecksStatus `json:"status"`

	// Machine-readable code of the verdict.
	Reason string `json:"reason"`

	// One-line English explanation.
	Detail string `json:"detail"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

VASPDirectoryEntryEssentialChecksChecks is a response object.

func (*VASPDirectoryEntryEssentialChecksChecks) UnmarshalJSON

func (r *VASPDirectoryEntryEssentialChecksChecks) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes VASPDirectoryEntryEssentialChecksChecks leniently.

type VASPDirectoryEntryEssentialChecksChecksID

type VASPDirectoryEntryEssentialChecksChecksID string

VASPDirectoryEntryEssentialChecksChecksID is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryEssentialChecksChecksIDRegistration VASPDirectoryEntryEssentialChecksChecksID = "registration"
	VASPDirectoryEntryEssentialChecksChecksIDLicence      VASPDirectoryEntryEssentialChecksChecksID = "licence"
	VASPDirectoryEntryEssentialChecksChecksIDDomain       VASPDirectoryEntryEssentialChecksChecksID = "domain"
	VASPDirectoryEntryEssentialChecksChecksIDLei          VASPDirectoryEntryEssentialChecksChecksID = "lei"
)

Known values of VASPDirectoryEntryEssentialChecksChecksID.

type VASPDirectoryEntryEssentialChecksChecksStatus

type VASPDirectoryEntryEssentialChecksChecksStatus string

VASPDirectoryEntryEssentialChecksChecksStatus: unknown when no source on record can decide the check.

VASPDirectoryEntryEssentialChecksChecksStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryEssentialChecksChecksStatusPass    VASPDirectoryEntryEssentialChecksChecksStatus = "pass"
	VASPDirectoryEntryEssentialChecksChecksStatusFail    VASPDirectoryEntryEssentialChecksChecksStatus = "fail"
	VASPDirectoryEntryEssentialChecksChecksStatusUnknown VASPDirectoryEntryEssentialChecksChecksStatus = "unknown"
)

Known values of VASPDirectoryEntryEssentialChecksChecksStatus.

type VASPDirectoryEntryEssentialChecksLevel

type VASPDirectoryEntryEssentialChecksLevel string

VASPDirectoryEntryEssentialChecksLevel is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryEssentialChecksLevelEssential VASPDirectoryEntryEssentialChecksLevel = "essential"
)

Known values of VASPDirectoryEntryEssentialChecksLevel.

type VASPDirectoryEntryKind

type VASPDirectoryEntryKind string

VASPDirectoryEntryKind: directory for an entry of the shared directory; didit for a member of the Didit network.

VASPDirectoryEntryKind is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryKindDirectory VASPDirectoryEntryKind = "directory"
	VASPDirectoryEntryKindDidit     VASPDirectoryEntryKind = "didit"
)

Known values of VASPDirectoryEntryKind.

type VASPDirectoryEntryNetworks

type VASPDirectoryEntryNetworks struct {
	Network VASPDirectoryEntryNetworksNetwork `json:"network"`

	// The VASP's identifier on that network.
	Code string `json:"code"`

	// The name the network lists the VASP under.
	ListedName string `json:"listed_name"`

	// The country the network lists, when it gives one.
	Country string `json:"country"`

	// When Didit staff verified the listing. Null for listings read from a public
	// directory.
	VerifiedAt time.Time `json:"verified_at"`

	// When the source last showed the listing. A listing the source has not shown
	// for three weeks is removed.
	LastSeenAt time.Time `json:"last_seen_at"`

	// Where the listing comes from: the public TRISA directory, or Didit staff.
	Source VASPDirectoryEntryNetworksSource `json:"source"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

VASPDirectoryEntryNetworks: A current listing of this VASP in a Travel Rule network's member directory. A TRISA listing says who the VASP is on TRISA; Didit has no TRISA rail, so it is never a route.

func (*VASPDirectoryEntryNetworks) UnmarshalJSON

func (r *VASPDirectoryEntryNetworks) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes VASPDirectoryEntryNetworks leniently.

type VASPDirectoryEntryNetworksNetwork

type VASPDirectoryEntryNetworksNetwork string

VASPDirectoryEntryNetworksNetwork is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryNetworksNetworkGtr        VASPDirectoryEntryNetworksNetwork = "GTR"
	VASPDirectoryEntryNetworksNetworkTrust      VASPDirectoryEntryNetworksNetwork = "TRUST"
	VASPDirectoryEntryNetworksNetworkVerifyvasp VASPDirectoryEntryNetworksNetwork = "VERIFYVASP"
	VASPDirectoryEntryNetworksNetworkSygna      VASPDirectoryEntryNetworksNetwork = "SYGNA"
	VASPDirectoryEntryNetworksNetworkTrisa      VASPDirectoryEntryNetworksNetwork = "TRISA"
)

Known values of VASPDirectoryEntryNetworksNetwork.

type VASPDirectoryEntryNetworksSource

type VASPDirectoryEntryNetworksSource string

VASPDirectoryEntryNetworksSource: Where the listing comes from: the public TRISA directory, or Didit staff.

VASPDirectoryEntryNetworksSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryNetworksSourceTrisaDirectory VASPDirectoryEntryNetworksSource = "trisa_directory"
	VASPDirectoryEntryNetworksSourceStaff          VASPDirectoryEntryNetworksSource = "staff"
)

Known values of VASPDirectoryEntryNetworksSource.

type VASPDirectoryEntryReachableRails

type VASPDirectoryEntryReachableRails string

VASPDirectoryEntryReachableRails is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryReachableRailsInternal   VASPDirectoryEntryReachableRails = "INTERNAL"
	VASPDirectoryEntryReachableRailsTrp        VASPDirectoryEntryReachableRails = "TRP"
	VASPDirectoryEntryReachableRailsGtr        VASPDirectoryEntryReachableRails = "GTR"
	VASPDirectoryEntryReachableRailsTrust      VASPDirectoryEntryReachableRails = "TRUST"
	VASPDirectoryEntryReachableRailsVerifyvasp VASPDirectoryEntryReachableRails = "VERIFYVASP"
	VASPDirectoryEntryReachableRailsSygna      VASPDirectoryEntryReachableRails = "SYGNA"
	VASPDirectoryEntryReachableRailsEmail      VASPDirectoryEntryReachableRails = "EMAIL"
)

Known values of VASPDirectoryEntryReachableRails.

type VASPDirectoryEntryResponsiveness

type VASPDirectoryEntryResponsiveness struct {
	// UNKNOWN with fewer than 5 decided requests in the window; UNRESPONSIVE when
	// less than 10 percent of them were answered; RESPONSIVE otherwise.
	Status VASPDirectoryEntryResponsivenessStatus `json:"status"`

	// Decided requests in the window that the VASP answered.
	Answered int64 `json:"answered"`

	// Decided requests in the window: answered plus expired.
	Total      int64     `json:"total"`
	ComputedAt time.Time `json:"computed_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

VASPDirectoryEntryResponsiveness: Whether the VASP answers Travel Rule requests: the share of the requests Didit customers started towards it in the last 90 days that it answered. Only requests sent over a network or protocol rail, or by email to a shared address (the entry's compliance address or a platform contact), count; a request sent to an address a customer typed, or to a customer's private contact, never does. An expired request is unanswered; a completed exchange, a decline or a data mismatch is an answer; a cancelled request or an unreachable rail is neither. Always UNKNOWN with zero counts for a Didit network member.

func (*VASPDirectoryEntryResponsiveness) UnmarshalJSON

func (r *VASPDirectoryEntryResponsiveness) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes VASPDirectoryEntryResponsiveness leniently.

type VASPDirectoryEntryResponsivenessStatus

type VASPDirectoryEntryResponsivenessStatus string

VASPDirectoryEntryResponsivenessStatus: UNKNOWN with fewer than 5 decided requests in the window; UNRESPONSIVE when less than 10 percent of them were answered; RESPONSIVE otherwise.

VASPDirectoryEntryResponsivenessStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryResponsivenessStatusResponsive   VASPDirectoryEntryResponsivenessStatus = "RESPONSIVE"
	VASPDirectoryEntryResponsivenessStatusUnresponsive VASPDirectoryEntryResponsivenessStatus = "UNRESPONSIVE"
	VASPDirectoryEntryResponsivenessStatusUnknown      VASPDirectoryEntryResponsivenessStatus = "UNKNOWN"
)

Known values of VASPDirectoryEntryResponsivenessStatus.

type VASPDirectoryEntryRiskLevel

type VASPDirectoryEntryRiskLevel string

VASPDirectoryEntryRiskLevel: The band dd_score falls in: LOW (70 or more), MEDIUM (40 to 69) or HIGH (below 40). Empty for a Didit network member and for an entry not assessed yet. Filter on it with risk. Your own flagged screening never changes this shared value: it makes counterparty_risk_level HIGH in your rules instead.

VASPDirectoryEntryRiskLevel is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryRiskLevelLow    VASPDirectoryEntryRiskLevel = "LOW"
	VASPDirectoryEntryRiskLevelMedium VASPDirectoryEntryRiskLevel = "MEDIUM"
	VASPDirectoryEntryRiskLevelHigh   VASPDirectoryEntryRiskLevel = "HIGH"
	VASPDirectoryEntryRiskLevelEmpty  VASPDirectoryEntryRiskLevel = ""
)

Known values of VASPDirectoryEntryRiskLevel.

type VASPDirectoryEntryRoutes

type VASPDirectoryEntryRoutes struct {
	Rail   VASPDirectoryEntryRoutesRail   `json:"rail"`
	Status VASPDirectoryEntryRoutesStatus `json:"status"`

	// Why an unavailable route cannot be used: no_membership (neither you nor Didit
	// holds a membership on that network), network_switched_off (you turned that
	// network off in your settings) or sandbox_application (a sandbox application
	// sends only to the Didit Test VASP, so no route is available to it). Empty
	// when the route is available.
	Reason VASPDirectoryEntryRoutesReason `json:"reason"`

	// How an available route is reached: own_membership or didit_membership for a
	// network rail, directory for a TRP endpoint the directory verified, contact
	// for the EMAIL rail, didit_network for a Didit network member. Empty when the
	// route is unavailable.
	Via VASPDirectoryEntryRoutesVia `json:"via"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

VASPDirectoryEntryRoutes: One way your application can deliver Travel Rule data to this VASP, in the order dispatch tries them. A network route needs a membership on that network: your own (connected in the Marketplace) or Didit's once Didit holds one. Without it the route is listed as unavailable with the reason, never as a way to reach the VASP.

func (*VASPDirectoryEntryRoutes) UnmarshalJSON

func (r *VASPDirectoryEntryRoutes) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes VASPDirectoryEntryRoutes leniently.

type VASPDirectoryEntryRoutesRail

type VASPDirectoryEntryRoutesRail string

VASPDirectoryEntryRoutesRail is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryRoutesRailInternal   VASPDirectoryEntryRoutesRail = "INTERNAL"
	VASPDirectoryEntryRoutesRailTrp        VASPDirectoryEntryRoutesRail = "TRP"
	VASPDirectoryEntryRoutesRailGtr        VASPDirectoryEntryRoutesRail = "GTR"
	VASPDirectoryEntryRoutesRailTrust      VASPDirectoryEntryRoutesRail = "TRUST"
	VASPDirectoryEntryRoutesRailVerifyvasp VASPDirectoryEntryRoutesRail = "VERIFYVASP"
	VASPDirectoryEntryRoutesRailSygna      VASPDirectoryEntryRoutesRail = "SYGNA"
	VASPDirectoryEntryRoutesRailEmail      VASPDirectoryEntryRoutesRail = "EMAIL"
)

Known values of VASPDirectoryEntryRoutesRail.

type VASPDirectoryEntryRoutesReason

type VASPDirectoryEntryRoutesReason string

VASPDirectoryEntryRoutesReason: Why an unavailable route cannot be used: no_membership (neither you nor Didit holds a membership on that network), network_switched_off (you turned that network off in your settings) or sandbox_application (a sandbox application sends only to the Didit Test VASP, so no route is available to it). Empty when the route is available.

VASPDirectoryEntryRoutesReason is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryRoutesReasonEmpty              VASPDirectoryEntryRoutesReason = ""
	VASPDirectoryEntryRoutesReasonNoMembership       VASPDirectoryEntryRoutesReason = "no_membership"
	VASPDirectoryEntryRoutesReasonNetworkSwitchedOff VASPDirectoryEntryRoutesReason = "network_switched_off"
	VASPDirectoryEntryRoutesReasonSandboxApplication VASPDirectoryEntryRoutesReason = "sandbox_application"
)

Known values of VASPDirectoryEntryRoutesReason.

type VASPDirectoryEntryRoutesStatus

type VASPDirectoryEntryRoutesStatus string

VASPDirectoryEntryRoutesStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryRoutesStatusAvailable   VASPDirectoryEntryRoutesStatus = "available"
	VASPDirectoryEntryRoutesStatusUnavailable VASPDirectoryEntryRoutesStatus = "unavailable"
)

Known values of VASPDirectoryEntryRoutesStatus.

type VASPDirectoryEntryRoutesVia

type VASPDirectoryEntryRoutesVia string

VASPDirectoryEntryRoutesVia: How an available route is reached: own_membership or didit_membership for a network rail, directory for a TRP endpoint the directory verified, contact for the EMAIL rail, didit_network for a Didit network member. Empty when the route is unavailable.

VASPDirectoryEntryRoutesVia is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	VASPDirectoryEntryRoutesViaEmpty           VASPDirectoryEntryRoutesVia = ""
	VASPDirectoryEntryRoutesViaOwnMembership   VASPDirectoryEntryRoutesVia = "own_membership"
	VASPDirectoryEntryRoutesViaDiditMembership VASPDirectoryEntryRoutesVia = "didit_membership"
	VASPDirectoryEntryRoutesViaDirectory       VASPDirectoryEntryRoutesVia = "directory"
	VASPDirectoryEntryRoutesViaContact         VASPDirectoryEntryRoutesVia = "contact"
	VASPDirectoryEntryRoutesViaDiditNetwork    VASPDirectoryEntryRoutesVia = "didit_network"
)

Known values of VASPDirectoryEntryRoutesVia.

type VASPDirectoryEntryUmbrella

type VASPDirectoryEntryUmbrella struct {
	ID   string `json:"id"`
	Name string `json:"name"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

VASPDirectoryEntryUmbrella: The brand this entry is a regulated entity of. Null when it is not part of one.

func (*VASPDirectoryEntryUmbrella) UnmarshalJSON

func (r *VASPDirectoryEntryUmbrella) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes VASPDirectoryEntryUmbrella leniently.

type VerifyEmailRequest

type VerifyEmailRequest struct {
	// Email used during `POST /programmatic/register/`. Required.
	Email string `json:"email"`

	// 6-character alphanumeric code from the verification email. Codes expire 10
	// minutes after the most recent code was sent. Required.
	Code string `json:"code"`
}

VerifyEmailRequest is a request object.

func (VerifyEmailRequest) MarshalJSON

func (r VerifyEmailRequest) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type VerifyEmailResponse

type VerifyEmailResponse struct {
	// RS256-signed JWT. Use as `Authorization: Bearer <token>` for Account
	// Management endpoints on `apx.didit.me/auth/v2`.
	AccessToken string `json:"access_token"`

	// Refresh token paired with the access token.
	RefreshToken string `json:"refresh_token"`

	// Lifetime of the access token in seconds (default 86400).
	ExpiresIn    int64                         `json:"expires_in"`
	Organization OrganizationSummary           `json:"organization"`
	Application  ApplicationCredentialsSummary `json:"application"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

VerifyEmailResponse is a response object.

func (*VerifyEmailResponse) UnmarshalJSON

func (r *VerifyEmailResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes VerifyEmailResponse leniently.

type WalletAddressEntry

type WalletAddressEntry struct {
	UUID string `json:"uuid"`

	// The wallet address; `""` for an entry imported by its hash only. Unique per
	// application, chain and memo, comparing the address without regard to case.
	// After you delete an entry, you can register the same address again.
	Address string `json:"address"`

	// Chain token for the address, for example `ETH` or `BTC`. When Didit routes or
	// registers a transfer, it matches address book entries on the wallet address
	// and, when the transfer carries a chain, on this value too, ignoring case. A
	// transfer's chain is `beneficiary_data.chain`, filled from the transaction's
	// crypto chain or currency symbol (for example `ETH`) when you do not send it,
	// or the `chain` of an after-deposit registration, so use the same token
	// everywhere. An entry with an empty chain matches any chain. A Lightning payee
	// (a node id or a Lightning Address) registered on bitcoin is stored lowercased
	// on `LIGHTNING`, where Lightning transfers are matched.
	Chain string `json:"chain"`

	// Your internal identifier for the holder.
	HolderVendorData string `json:"holder_vendor_data"`

	// Name of the wallet holder, used for the beneficiary name match.
	HolderName string `json:"holder_name"`

	// Free text, defaults to "individual".
	EntityType string `json:"entity_type"`

	// Read-only. Whether ownership of this address has been proven.
	IsOwnershipVerified bool      `json:"is_ownership_verified"`
	CreatedAt           time.Time `json:"created_at"`

	// The counterparty VASP's travel address for this wallet, if known. Lets Didit
	// route this beneficiary's transfers over the TRP rail, for the assets TRP
	// carries (BTC, ETH, and USDC on a named network).
	TravelAddress string `json:"travel_address"`

	// Read-only. SHA-256 of the lowercased address, in lowercase hex. An entry
	// imported by its hash only is matched on it.
	AddressHash string `json:"address_hash"`

	// The destination tag or memo that is part of the wallet on a memo network
	// (XRP, XLM, EOS, ATOM, HBAR); `""` for the whole address. An entry with a memo
	// matches only transfers naming that memo; one without matches the whole
	// address.
	Memo string `json:"memo"`

	// Your per-wallet travel address for this wallet: give it to the sending VASP
	// so its TRP inquiry names this wallet. Empty for a wallet recorded as another
	// VASP's, while Travel Rule is off, and before your VASP profile is saved.
	ReceivingTravelAddress string `json:"receiving_travel_address"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WalletAddressEntry is a response object.

func (*WalletAddressEntry) UnmarshalJSON

func (r *WalletAddressEntry) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WalletAddressEntry leniently.

type WalletAddressEntryCreate

type WalletAddressEntryCreate struct {
	// The wallet address. An XRP X-address is stored as its classic address and its
	// tag, so it matches transfers that name either form. Required.
	Address string `json:"address"`

	// Chain token for the address, for example `ETH` or `BTC`. When Didit routes or
	// registers a transfer, it matches address book entries on the wallet address
	// and, when the transfer carries a chain, on this value too, ignoring case. A
	// transfer's chain is `beneficiary_data.chain`, filled from the transaction's
	// crypto chain or currency symbol (for example `ETH`) when you do not send it,
	// or the `chain` of an after-deposit registration, so use the same token
	// everywhere. An entry with an empty chain matches any chain.
	Chain            Opt[string] `json:"chain"`
	HolderVendorData Opt[string] `json:"holder_vendor_data"`
	HolderName       Opt[string] `json:"holder_name"`
	EntityType       Opt[string] `json:"entity_type"`

	// Write-only. When true, the entry is created already ownership-verified via a
	// SELF_DECLARATION proof. Returns 400 when `allow_self_declaration` is off in
	// your Travel Rule settings.
	SelfDeclared Opt[bool] `json:"self_declared"`

	// Optional. The counterparty VASP's travel address for this wallet, enabling
	// TRP routing for the assets TRP carries (BTC, ETH, and USDC on a named
	// network). An invalid travel address returns 400.
	TravelAddress Opt[string] `json:"travel_address"`

	// Optional. The destination tag or memo that is part of the wallet. XRP: a
	// destination tag, a whole number from 0 to 4294967295 (a JSON number is
	// accepted). XLM: a text memo of up to 28 bytes, a 64-bit id or a 32-byte hash
	// in hex. EOS: up to 256 bytes. ATOM: up to 256 characters. HBAR: up to 100
	// bytes. Bitcoin, EVM, Solana, Tron, Litecoin, Bitcoin Cash, Dogecoin and
	// Lightning wallets take no memo: one there is a `400`. Alias: `destinationTag`
	// or `destination_tag`.
	Memo Opt[string] `json:"memo"`
}

WalletAddressEntryCreate is a request object.

func (WalletAddressEntryCreate) MarshalJSON

func (r WalletAddressEntryCreate) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type WalletAddressEntryUpdate

type WalletAddressEntryUpdate struct {
	HolderName       string `json:"holder_name"`
	HolderVendorData string `json:"holder_vendor_data"`
	EntityType       string `json:"entity_type"`
	TravelAddress    string `json:"travel_address"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WalletAddressEntryUpdate: PATCH is a partial update; the response echoes only holder_name, holder_vendor_data, entity_type, travel_address, receiving_travel_address, label, and owner_type.

func (*WalletAddressEntryUpdate) UnmarshalJSON

func (r *WalletAddressEntryUpdate) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WalletAddressEntryUpdate leniently.

type WalletAddressEntryUpdateParam

type WalletAddressEntryUpdateParam struct {
	HolderName       Opt[string] `json:"holder_name"`
	HolderVendorData Opt[string] `json:"holder_vendor_data"`
	EntityType       Opt[string] `json:"entity_type"`
	TravelAddress    Opt[string] `json:"travel_address"`
}

WalletAddressEntryUpdateParam: PATCH is a partial update; the response echoes only holder_name, holder_vendor_data, entity_type, travel_address, receiving_travel_address, label, and owner_type.

func (WalletAddressEntryUpdateParam) MarshalJSON

func (r WalletAddressEntryUpdateParam) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type WalletAddressImportReport

type WalletAddressImportReport struct {
	Total     int64                           `json:"total"`
	Created   int64                           `json:"created"`
	Existing  int64                           `json:"existing"`
	Duplicate int64                           `json:"duplicate"`
	Failed    int64                           `json:"failed"`
	Rows      []WalletAddressImportReportRows `json:"rows"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WalletAddressImportReport: What happened to each row of an import, in the order sent.

func (*WalletAddressImportReport) UnmarshalJSON

func (r *WalletAddressImportReport) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WalletAddressImportReport leniently.

type WalletAddressImportReportRows

type WalletAddressImportReportRows struct {
	// The row's number, from 1.
	Row int64 `json:"row"`

	// `created`: added to the book. `existing`: the wallet is already in the book
	// and was left untouched. `duplicate`: repeats an earlier row of this import.
	// `failed`: see `errors`.
	Status WalletAddressImportReportRowsStatus `json:"status"`

	// The address-book entry the row created or found.
	EntryID string `json:"entry_id"`

	// Field errors of a `failed` row; empty otherwise.
	Errors map[string]any `json:"errors"`

	// On a `duplicate` row, the row it repeats.
	DuplicateOfRow int64 `json:"duplicate_of_row"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WalletAddressImportReportRows is a response object.

func (*WalletAddressImportReportRows) UnmarshalJSON

func (r *WalletAddressImportReportRows) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WalletAddressImportReportRows leniently.

type WalletAddressImportReportRowsStatus

type WalletAddressImportReportRowsStatus string

WalletAddressImportReportRowsStatus: `created`: added to the book. `existing`: the wallet is already in the book and was left untouched. `duplicate`: repeats an earlier row of this import. `failed`: see `errors`.

WalletAddressImportReportRowsStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WalletAddressImportReportRowsStatusCreated   WalletAddressImportReportRowsStatus = "created"
	WalletAddressImportReportRowsStatusExisting  WalletAddressImportReportRowsStatus = "existing"
	WalletAddressImportReportRowsStatusDuplicate WalletAddressImportReportRowsStatus = "duplicate"
	WalletAddressImportReportRowsStatusFailed    WalletAddressImportReportRowsStatus = "failed"
)

Known values of WalletAddressImportReportRowsStatus.

type WalletScreeningResult

type WalletScreeningResult struct {
	// Provider that performed the screening (e.g. `merklescience`, `crystal`).
	Provider string `json:"provider"`

	// Always `WALLET_SCREENING` for this endpoint.
	ScreeningType WalletScreeningResultScreeningType `json:"screening_type"`

	// Normalised 0-100 risk score. Higher means greater exposure to risky entities.
	// Merkle Science grades an address 0-5, which maps to 0, 15, 35, 55, 75 or 95.
	RiskScore int64 `json:"risk_score"`

	// Risk bucket derived from `risk_score`: `0-9` UNKNOWN, `10-39` LOW, `40-69`
	// MEDIUM, `70-89` HIGH, `90-100` CRITICAL. `UNKNOWN` is the lowest band, not a
	// separate no-data state: `risk_score` 0 (the common clean-address case) means
	// no adverse assessment, while a non-zero score in the 1-9 range is a real but
	// sub-LOW signal - read the `risk_score`, not just the band. Never treat
	// `UNKNOWN` as an affirmative low-risk or clear rating; do not display it as a
	// pass.
	Severity WalletScreeningResultSeverity `json:"severity"`

	// Screening outcome status.
	Status WalletScreeningResultStatus `json:"status"`

	// Human-readable summary of the screening result.
	Summary string `json:"summary"`

	// The screened address, echoed back.
	WalletAddress string `json:"wallet_address"`

	// Transaction screening field, shared with the result shape. Always `null` on a
	// wallet screening result.
	TransactionHash string `json:"transaction_hash"`

	// The blockchain that was screened.
	Blockchain string `json:"blockchain"`

	// Transaction screening field, shared with the result shape. Always `null` on a
	// wallet screening result.
	BlockTimestamp string `json:"block_timestamp"`

	// Transaction screening field, shared with the result shape. Always `null` on a
	// wallet screening result.
	TotalValueUsd float64 `json:"total_value_usd"`

	// Transaction screening field, shared with the result shape. Always `null` on a
	// wallet screening result.
	FeeUsd float64 `json:"fee_usd"`

	// Transaction screening field, shared with the result shape. Always empty on a
	// wallet screening result.
	SenderRows []map[string]any `json:"sender_rows"`

	// Transaction screening field, shared with the result shape. Always empty on a
	// wallet screening result.
	ReceiverRows []map[string]any `json:"receiver_rows"`

	// Transaction screening field, shared with the result shape. Always empty on a
	// wallet screening result.
	TransactionFlows []map[string]any `json:"transaction_flows"`

	// Transaction screening field, shared with the result shape. Always `null` on a
	// wallet screening result.
	TransactionFlowsStatus string `json:"transaction_flows_status"`

	// Transaction screening field, shared with the result shape. Always `null` on a
	// wallet screening result.
	TransactionFlowsError string `json:"transaction_flows_error"`

	// Where the address received funds from, attributed by entity. Each entry is an
	// exposure breakdown.
	SourceOfFunds []WalletScreeningResultSourceOfFunds `json:"source_of_funds"`

	// Where the address sent funds to, attributed by entity. Same item shape as
	// `source_of_funds` with `exposure_direction` = `outgoing`.
	DestinationOfFunds []WalletScreeningResultDestinationOfFunds `json:"destination_of_funds"`

	// Entities the provider attributes the screened address to. For Merkle Science
	// these come from the address's own owner and user tags, so the same entity can
	// appear twice, and they carry no fund flows: `received_usd`, `sent_usd`,
	// `received_hops` and `sent_hops` are `null` and `percentage` is 0. Do not
	// route on `risk_level` or `is_direct` here: use `sanctions_hit`,
	// `dominant_risk_category` and `risk_factors[].is_high_risk` for the verdict,
	// and `exposure_type` in `source_of_funds`/`destination_of_funds` for
	// directness.
	CounterpartyConnections []WalletScreeningResultCounterpartyConnections `json:"counterparty_connections"`

	// Exposure graph nodes for transaction screening. Empty on a wallet screening
	// result.
	NetworkNodes []map[string]any `json:"network_nodes"`

	// Exposure graph edges for transaction screening. Empty on a wallet screening
	// result.
	NetworkEdges []map[string]any `json:"network_edges"`

	// True if the address has direct or indirect sanctions exposure.
	SanctionsHit bool `json:"sanctions_hit"`

	// Politically exposed person exposure. `null` when no PEP finding is available,
	// which is every result today because no provider reports one; `false` only for
	// an explicit negative screening result. Do not read `null` as a completed PEP
	// check.
	PEPCounterparty bool `json:"pep_counterparty"`

	// Highest-weighted high-risk category, or `null` when none is dominant (e.g.
	// `sanctioned`, `mixer`, `stolen_funds`).
	DominantRiskCategory string `json:"dominant_risk_category"`

	// Ranked explanation of `risk_score`: what produced this verdict. Providers
	// grade an address on their own model and return only a verdict (Merkle Science
	// returns an integer 0-5), so the score alone is not actionable. Ordered
	// high-risk first, then by the value that moved through each driver, capped at
	// the five strongest; `source_of_funds` and `destination_of_funds` always carry
	// the complete breakdown. A high `risk_score` with no `is_high_risk` entry
	// means the provider reported no sanctions or attributed-entity match and
	// graded the address purely on its own exposure model - `summary` states this
	// explicitly.
	RiskFactors []WalletScreeningResultRiskFactors `json:"risk_factors"`

	// The provider's own payload. Its shape is provider-specific and can change
	// without notice: read the normalised fields instead of parsing it.
	RawResponse map[string]any `json:"raw_response"`

	// Opaque HMAC-SHA256 signature over this exact result, scoped to your
	// application. Not meaningful on its own - repost the full response body,
	// unmodified and including this field, to `POST /v3/wallet-screening/pdf/` to
	// render it as a PDF. The PDF endpoint rejects the request with `400` if
	// `report_signature` is missing or if any signed field (e.g. `risk_score`,
	// `severity`, `sanctions_hit`) was edited before repost.
	ReportSignature string `json:"report_signature"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WalletScreeningResult is a response object.

func (*WalletScreeningResult) UnmarshalJSON

func (r *WalletScreeningResult) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WalletScreeningResult leniently.

type WalletScreeningResultCounterpartyConnections

type WalletScreeningResultCounterpartyConnections struct {
	// Attributed entity name.
	EntityName string `json:"entity_name"`

	// Provider entity type.
	EntityType string `json:"entity_type"`

	// Provider entity subtype.
	EntitySubtype string `json:"entity_subtype"`

	// Lowercase and provider-dependent. For Merkle Science it is the address's own
	// 0-5 risk grade (`no_risk`, `low`, `medium_low`, `medium`, `high`,
	// `critical`), raised to `high` when the entity's category is high risk; it is
	// not a separate grade of the entity.
	RiskLevel string `json:"risk_level"`

	// Normalised risk categories of the entity.
	Categories []string `json:"categories"`

	// USD received from the entity, when the provider reports it.
	ReceivedUsd float64 `json:"received_usd"`

	// USD sent to the entity, when the provider reports it.
	SentUsd float64 `json:"sent_usd"`

	// Hops to the entity on the receiving side, when the provider reports them.
	ReceivedHops int64 `json:"received_hops"`

	// Hops to the entity on the sending side, when the provider reports them.
	SentHops int64 `json:"sent_hops"`

	// Share of the address's exposure, when the provider reports it; otherwise 0.
	Percentage float64 `json:"percentage"`

	// Always `true` for Merkle Science, whose connections are attributions rather
	// than counterparties.
	IsDirect bool `json:"is_direct"`

	// Country of the entity, when known.
	Country string `json:"country"`

	// The provider's own identifier for the entity.
	ProviderEntityID string `json:"provider_entity_id"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WalletScreeningResultCounterpartyConnections is a response object.

func (*WalletScreeningResultCounterpartyConnections) UnmarshalJSON

func (r *WalletScreeningResultCounterpartyConnections) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WalletScreeningResultCounterpartyConnections leniently.

type WalletScreeningResultDestinationOfFunds

type WalletScreeningResultDestinationOfFunds struct {
	// Normalised risk category, e.g. `exchange_licensed`, `dex`, `defi`,
	// `payment_processor`, `mixer`, `darknet_market`, `sanctioned`, `stolen_funds`,
	// `high_risk_exchange`.
	Category string `json:"category"`

	// Share of the direction's total exposure, 0-100.
	Percentage float64 `json:"percentage"`

	// USD value attributed to this entity.
	AmountUsd float64 `json:"amount_usd"`

	// Name of the attributed entity, for example an exchange, a mixer or a
	// sanctioned group.
	EntityName string `json:"entity_name"`

	// Provider entity type (e.g. `Exchange`, `DeFi`, `Sanctions`, `Theft`).
	EntityType string `json:"entity_type"`

	// More granular subtype (e.g. `Mandatory KYC and AML`, `OFAC`, `Yield
	// Aggregator`).
	EntitySubtype string `json:"entity_subtype"`

	// Number of hops to the entity (1 for a direct counterparty), when the provider
	// reports one. Always `null` for Merkle Science, which reports only whether
	// exposure is direct or indirect: use `exposure_type`.
	Hops int64 `json:"hops"`

	// `entity_type / entity_subtype`, as the provider labels the entity.
	Description string `json:"description"`

	// True when `exposure_type` is `direct`.
	IsDirect bool `json:"is_direct"`

	// Whether the funds came from (`incoming`) or went to (`outgoing`) this entity.
	ExposureDirection WalletScreeningResultDestinationOfFundsExposureDirection `json:"exposure_direction"`

	// `direct` (1 hop) or `indirect` (multi-hop) exposure.
	ExposureType WalletScreeningResultDestinationOfFundsExposureType `json:"exposure_type"`

	// The provider's own identifier for the entity.
	ProviderEntityID string `json:"provider_entity_id"`

	// The provider's own identifier for `entity_type`.
	ProviderEntityTypeID string `json:"provider_entity_type_id"`

	// The provider's own identifier for `entity_subtype`.
	ProviderEntitySubtypeID string `json:"provider_entity_subtype_id"`

	// Primary ISO 3166-1 alpha-2 country of the entity. Empty or `null` when the
	// provider does not know it.
	Country string `json:"country"`

	// Amount in the asset's own unit, when the provider reports it.
	RawAmount float64 `json:"raw_amount"`

	// Unit of `raw_amount`, when the provider reports it.
	RawCurrency string `json:"raw_currency"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WalletScreeningResultDestinationOfFunds is a response object.

func (*WalletScreeningResultDestinationOfFunds) UnmarshalJSON

func (r *WalletScreeningResultDestinationOfFunds) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WalletScreeningResultDestinationOfFunds leniently.

type WalletScreeningResultDestinationOfFundsExposureDirection

type WalletScreeningResultDestinationOfFundsExposureDirection string

WalletScreeningResultDestinationOfFundsExposureDirection: Whether the funds came from (`incoming`) or went to (`outgoing`) this entity.

WalletScreeningResultDestinationOfFundsExposureDirection is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WalletScreeningResultDestinationOfFundsExposureDirectionIncoming  WalletScreeningResultDestinationOfFundsExposureDirection = "incoming"
	WalletScreeningResultDestinationOfFundsExposureDirectionOutgoing  WalletScreeningResultDestinationOfFundsExposureDirection = "outgoing"
	WalletScreeningResultDestinationOfFundsExposureDirectionConnected WalletScreeningResultDestinationOfFundsExposureDirection = "connected"
)

Known values of WalletScreeningResultDestinationOfFundsExposureDirection.

type WalletScreeningResultDestinationOfFundsExposureType

type WalletScreeningResultDestinationOfFundsExposureType string

WalletScreeningResultDestinationOfFundsExposureType: `direct` (1 hop) or `indirect` (multi-hop) exposure.

WalletScreeningResultDestinationOfFundsExposureType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WalletScreeningResultDestinationOfFundsExposureTypeDirect   WalletScreeningResultDestinationOfFundsExposureType = "direct"
	WalletScreeningResultDestinationOfFundsExposureTypeIndirect WalletScreeningResultDestinationOfFundsExposureType = "indirect"
)

Known values of WalletScreeningResultDestinationOfFundsExposureType.

type WalletScreeningResultParam

type WalletScreeningResultParam struct {
	// Provider that performed the screening (e.g. `merklescience`, `crystal`).
	// Required.
	Provider string `json:"provider"`

	// Always `WALLET_SCREENING` for this endpoint. Required.
	ScreeningType WalletScreeningResultScreeningType `json:"screening_type"`

	// Normalised 0-100 risk score. Higher means greater exposure to risky entities.
	// Merkle Science grades an address 0-5, which maps to 0, 15, 35, 55, 75 or 95.
	// Required.
	RiskScore int64 `json:"risk_score"`

	// Risk bucket derived from `risk_score`: `0-9` UNKNOWN, `10-39` LOW, `40-69`
	// MEDIUM, `70-89` HIGH, `90-100` CRITICAL. `UNKNOWN` is the lowest band, not a
	// separate no-data state: `risk_score` 0 (the common clean-address case) means
	// no adverse assessment, while a non-zero score in the 1-9 range is a real but
	// sub-LOW signal - read the `risk_score`, not just the band. Never treat
	// `UNKNOWN` as an affirmative low-risk or clear rating; do not display it as a
	// pass. Required.
	Severity WalletScreeningResultSeverity `json:"severity"`

	// Screening outcome status. Required.
	Status WalletScreeningResultStatus `json:"status"`

	// Human-readable summary of the screening result. Required.
	Summary string `json:"summary"`

	// The screened address, echoed back. Required.
	WalletAddress string `json:"wallet_address"`

	// Transaction screening field, shared with the result shape. Always `null` on a
	// wallet screening result.
	TransactionHash Opt[string] `json:"transaction_hash"`

	// The blockchain that was screened. Required.
	Blockchain string `json:"blockchain"`

	// Transaction screening field, shared with the result shape. Always `null` on a
	// wallet screening result.
	BlockTimestamp Opt[string] `json:"block_timestamp"`

	// Transaction screening field, shared with the result shape. Always `null` on a
	// wallet screening result.
	TotalValueUsd Opt[float64] `json:"total_value_usd"`

	// Transaction screening field, shared with the result shape. Always `null` on a
	// wallet screening result.
	FeeUsd Opt[float64] `json:"fee_usd"`

	// Transaction screening field, shared with the result shape. Always empty on a
	// wallet screening result.
	SenderRows Opt[[]map[string]any] `json:"sender_rows"`

	// Transaction screening field, shared with the result shape. Always empty on a
	// wallet screening result.
	ReceiverRows Opt[[]map[string]any] `json:"receiver_rows"`

	// Transaction screening field, shared with the result shape. Always empty on a
	// wallet screening result.
	TransactionFlows Opt[[]map[string]any] `json:"transaction_flows"`

	// Transaction screening field, shared with the result shape. Always `null` on a
	// wallet screening result.
	TransactionFlowsStatus Opt[string] `json:"transaction_flows_status"`

	// Transaction screening field, shared with the result shape. Always `null` on a
	// wallet screening result.
	TransactionFlowsError Opt[string] `json:"transaction_flows_error"`

	// Where the address received funds from, attributed by entity. Each entry is an
	// exposure breakdown. Required.
	SourceOfFunds []WalletScreeningResultParamSourceOfFunds `json:"source_of_funds"`

	// Where the address sent funds to, attributed by entity. Same item shape as
	// `source_of_funds` with `exposure_direction` = `outgoing`. Required.
	DestinationOfFunds []WalletScreeningResultParamDestinationOfFunds `json:"destination_of_funds"`

	// Entities the provider attributes the screened address to. For Merkle Science
	// these come from the address's own owner and user tags, so the same entity can
	// appear twice, and they carry no fund flows: `received_usd`, `sent_usd`,
	// `received_hops` and `sent_hops` are `null` and `percentage` is 0. Do not
	// route on `risk_level` or `is_direct` here: use `sanctions_hit`,
	// `dominant_risk_category` and `risk_factors[].is_high_risk` for the verdict,
	// and `exposure_type` in `source_of_funds`/`destination_of_funds` for
	// directness. Required.
	CounterpartyConnections []WalletScreeningResultParamCounterpartyConnections `json:"counterparty_connections"`

	// Exposure graph nodes for transaction screening. Empty on a wallet screening
	// result.
	NetworkNodes Opt[[]map[string]any] `json:"network_nodes"`

	// Exposure graph edges for transaction screening. Empty on a wallet screening
	// result.
	NetworkEdges Opt[[]map[string]any] `json:"network_edges"`

	// True if the address has direct or indirect sanctions exposure. Required.
	SanctionsHit bool `json:"sanctions_hit"`

	// Politically exposed person exposure. `null` when no PEP finding is available,
	// which is every result today because no provider reports one; `false` only for
	// an explicit negative screening result. Do not read `null` as a completed PEP
	// check.
	PEPCounterparty Opt[bool] `json:"pep_counterparty"`

	// Highest-weighted high-risk category, or `null` when none is dominant (e.g.
	// `sanctioned`, `mixer`, `stolen_funds`). Required.
	DominantRiskCategory Opt[string] `json:"dominant_risk_category"`

	// Ranked explanation of `risk_score`: what produced this verdict. Providers
	// grade an address on their own model and return only a verdict (Merkle Science
	// returns an integer 0-5), so the score alone is not actionable. Ordered
	// high-risk first, then by the value that moved through each driver, capped at
	// the five strongest; `source_of_funds` and `destination_of_funds` always carry
	// the complete breakdown. A high `risk_score` with no `is_high_risk` entry
	// means the provider reported no sanctions or attributed-entity match and
	// graded the address purely on its own exposure model - `summary` states this
	// explicitly.
	RiskFactors Opt[[]WalletScreeningResultParamRiskFactors] `json:"risk_factors"`

	// The provider's own payload. Its shape is provider-specific and can change
	// without notice: read the normalised fields instead of parsing it.
	RawResponse Opt[map[string]any] `json:"raw_response"`

	// Opaque HMAC-SHA256 signature over this exact result, scoped to your
	// application. Not meaningful on its own - repost the full response body,
	// unmodified and including this field, to `POST /v3/wallet-screening/pdf/` to
	// render it as a PDF. The PDF endpoint rejects the request with `400` if
	// `report_signature` is missing or if any signed field (e.g. `risk_score`,
	// `severity`, `sanctions_hit`) was edited before repost. Required.
	ReportSignature string `json:"report_signature"`
}

WalletScreeningResultParam is a request object.

func (WalletScreeningResultParam) MarshalJSON

func (r WalletScreeningResultParam) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type WalletScreeningResultParamCounterpartyConnections

type WalletScreeningResultParamCounterpartyConnections struct {
	// Attributed entity name.
	EntityName Opt[string] `json:"entity_name"`

	// Provider entity type.
	EntityType Opt[string] `json:"entity_type"`

	// Provider entity subtype.
	EntitySubtype Opt[string] `json:"entity_subtype"`

	// Lowercase and provider-dependent. For Merkle Science it is the address's own
	// 0-5 risk grade (`no_risk`, `low`, `medium_low`, `medium`, `high`,
	// `critical`), raised to `high` when the entity's category is high risk; it is
	// not a separate grade of the entity.
	RiskLevel Opt[string] `json:"risk_level"`

	// Normalised risk categories of the entity.
	Categories Opt[[]string] `json:"categories"`

	// USD received from the entity, when the provider reports it.
	ReceivedUsd Opt[float64] `json:"received_usd"`

	// USD sent to the entity, when the provider reports it.
	SentUsd Opt[float64] `json:"sent_usd"`

	// Hops to the entity on the receiving side, when the provider reports them.
	ReceivedHops Opt[int64] `json:"received_hops"`

	// Hops to the entity on the sending side, when the provider reports them.
	SentHops Opt[int64] `json:"sent_hops"`

	// Share of the address's exposure, when the provider reports it; otherwise 0.
	Percentage Opt[float64] `json:"percentage"`

	// Always `true` for Merkle Science, whose connections are attributions rather
	// than counterparties.
	IsDirect Opt[bool] `json:"is_direct"`

	// Country of the entity, when known.
	Country Opt[string] `json:"country"`

	// The provider's own identifier for the entity.
	ProviderEntityID Opt[string] `json:"provider_entity_id"`
}

WalletScreeningResultParamCounterpartyConnections is a request object.

func (WalletScreeningResultParamCounterpartyConnections) MarshalJSON

MarshalJSON encodes the fields that are set.

type WalletScreeningResultParamDestinationOfFunds

type WalletScreeningResultParamDestinationOfFunds struct {
	// Normalised risk category, e.g. `exchange_licensed`, `dex`, `defi`,
	// `payment_processor`, `mixer`, `darknet_market`, `sanctioned`, `stolen_funds`,
	// `high_risk_exchange`.
	Category Opt[string] `json:"category"`

	// Share of the direction's total exposure, 0-100.
	Percentage Opt[float64] `json:"percentage"`

	// USD value attributed to this entity.
	AmountUsd Opt[float64] `json:"amount_usd"`

	// Name of the attributed entity, for example an exchange, a mixer or a
	// sanctioned group.
	EntityName Opt[string] `json:"entity_name"`

	// Provider entity type (e.g. `Exchange`, `DeFi`, `Sanctions`, `Theft`).
	EntityType Opt[string] `json:"entity_type"`

	// More granular subtype (e.g. `Mandatory KYC and AML`, `OFAC`, `Yield
	// Aggregator`).
	EntitySubtype Opt[string] `json:"entity_subtype"`

	// Number of hops to the entity (1 for a direct counterparty), when the provider
	// reports one. Always `null` for Merkle Science, which reports only whether
	// exposure is direct or indirect: use `exposure_type`.
	Hops Opt[int64] `json:"hops"`

	// `entity_type / entity_subtype`, as the provider labels the entity.
	Description Opt[string] `json:"description"`

	// True when `exposure_type` is `direct`.
	IsDirect Opt[bool] `json:"is_direct"`

	// Whether the funds came from (`incoming`) or went to (`outgoing`) this entity.
	ExposureDirection Opt[WalletScreeningResultDestinationOfFundsExposureDirection] `json:"exposure_direction"`

	// `direct` (1 hop) or `indirect` (multi-hop) exposure.
	ExposureType Opt[WalletScreeningResultDestinationOfFundsExposureType] `json:"exposure_type"`

	// The provider's own identifier for the entity.
	ProviderEntityID Opt[string] `json:"provider_entity_id"`

	// The provider's own identifier for `entity_type`.
	ProviderEntityTypeID Opt[string] `json:"provider_entity_type_id"`

	// The provider's own identifier for `entity_subtype`.
	ProviderEntitySubtypeID Opt[string] `json:"provider_entity_subtype_id"`

	// Primary ISO 3166-1 alpha-2 country of the entity. Empty or `null` when the
	// provider does not know it.
	Country Opt[string] `json:"country"`

	// Amount in the asset's own unit, when the provider reports it.
	RawAmount Opt[float64] `json:"raw_amount"`

	// Unit of `raw_amount`, when the provider reports it.
	RawCurrency Opt[string] `json:"raw_currency"`
}

WalletScreeningResultParamDestinationOfFunds is a request object.

func (WalletScreeningResultParamDestinationOfFunds) MarshalJSON

MarshalJSON encodes the fields that are set.

type WalletScreeningResultParamRiskFactors

type WalletScreeningResultParamRiskFactors struct {
	// `attribution` is what the provider says the address itself is (its own tag or
	// cluster); `exposure` is where its funds actually moved.
	Source Opt[WalletScreeningResultRiskFactorsSource] `json:"source"`

	// Normalised risk category, same vocabulary as the exposure breakdown.
	Category Opt[string] `json:"category"`

	// The provider's own wording for the driver (e.g. `Gambling / Crypto only`),
	// which is what you would also see in the provider's console.
	Label Opt[string] `json:"label"`

	// Attributed entity behind the driver, for example a gambling site or an
	// exchange.
	EntityName Opt[string] `json:"entity_name"`

	// Direction of the fund flow, `attribution` when the driver is the address's
	// own tag, or `unknown` when the provider did not report a direction.
	Direction Opt[WalletScreeningResultRiskFactorsDirection] `json:"direction"`

	// `direct` (1 hop) or `indirect` (multi-hop), `attribution` for the address's
	// own tag, or `unknown` when the provider did not state how many hops away the
	// counterparty is. Treat `unknown` as unclassified, not as `direct`.
	ExposureType Opt[WalletScreeningResultRiskFactorsExposureType] `json:"exposure_type"`

	// USD value attributed to this driver.
	AmountUsd Opt[float64] `json:"amount_usd"`

	// Share of the address's TOTAL screened volume, both directions combined -
	// unlike `percentage` inside `source_of_funds`/`destination_of_funds`, which is
	// normalised per direction. Comparable and summable across the whole list.
	Percentage Opt[float64] `json:"percentage"`

	// Whether the category is one Didit treats as high risk (`sanctioned`, `mixer`,
	// `stolen_funds`, `ransomware`, `scam`, `darknet_market`,
	// `terrorist_financing`, `child_exploitation`, `hacked_exchange`,
	// `high_risk_exchange`, `seized_funds`).
	IsHighRisk Opt[bool] `json:"is_high_risk"`

	// One-line rendering of the driver, e.g. `9.01% indirect outgoing exposure to
	// Gambling / Crypto only (Example Gambling)`.
	Description Opt[string] `json:"description"`
}

WalletScreeningResultParamRiskFactors is a request object.

func (WalletScreeningResultParamRiskFactors) MarshalJSON

func (r WalletScreeningResultParamRiskFactors) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type WalletScreeningResultParamSourceOfFunds

type WalletScreeningResultParamSourceOfFunds struct {
	// Normalised risk category, e.g. `exchange_licensed`, `dex`, `defi`,
	// `payment_processor`, `mixer`, `darknet_market`, `sanctioned`, `stolen_funds`,
	// `high_risk_exchange`.
	Category Opt[string] `json:"category"`

	// Share of the direction's total exposure, 0-100.
	Percentage Opt[float64] `json:"percentage"`

	// USD value attributed to this entity.
	AmountUsd Opt[float64] `json:"amount_usd"`

	// Name of the attributed entity, for example an exchange, a mixer or a
	// sanctioned group.
	EntityName Opt[string] `json:"entity_name"`

	// Provider entity type (e.g. `Exchange`, `DeFi`, `Sanctions`, `Theft`).
	EntityType Opt[string] `json:"entity_type"`

	// More granular subtype (e.g. `Mandatory KYC and AML`, `OFAC`, `Yield
	// Aggregator`).
	EntitySubtype Opt[string] `json:"entity_subtype"`

	// Number of hops to the entity (1 for a direct counterparty), when the provider
	// reports one. Always `null` for Merkle Science, which reports only whether
	// exposure is direct or indirect: use `exposure_type`.
	Hops Opt[int64] `json:"hops"`

	// `entity_type / entity_subtype`, as the provider labels the entity.
	Description Opt[string] `json:"description"`

	// True when `exposure_type` is `direct`.
	IsDirect Opt[bool] `json:"is_direct"`

	// Whether the funds came from (`incoming`) or went to (`outgoing`) this entity.
	ExposureDirection Opt[WalletScreeningResultSourceOfFundsExposureDirection] `json:"exposure_direction"`

	// `direct` (1 hop) or `indirect` (multi-hop) exposure.
	ExposureType Opt[WalletScreeningResultSourceOfFundsExposureType] `json:"exposure_type"`

	// The provider's own identifier for the entity.
	ProviderEntityID Opt[string] `json:"provider_entity_id"`

	// The provider's own identifier for `entity_type`.
	ProviderEntityTypeID Opt[string] `json:"provider_entity_type_id"`

	// The provider's own identifier for `entity_subtype`.
	ProviderEntitySubtypeID Opt[string] `json:"provider_entity_subtype_id"`

	// Primary ISO 3166-1 alpha-2 country of the entity. Empty or `null` when the
	// provider does not know it.
	Country Opt[string] `json:"country"`

	// Amount in the asset's own unit, when the provider reports it.
	RawAmount Opt[float64] `json:"raw_amount"`

	// Unit of `raw_amount`, when the provider reports it.
	RawCurrency Opt[string] `json:"raw_currency"`
}

WalletScreeningResultParamSourceOfFunds is a request object.

func (WalletScreeningResultParamSourceOfFunds) MarshalJSON

func (r WalletScreeningResultParamSourceOfFunds) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type WalletScreeningResultRiskFactors

type WalletScreeningResultRiskFactors struct {
	// `attribution` is what the provider says the address itself is (its own tag or
	// cluster); `exposure` is where its funds actually moved.
	Source WalletScreeningResultRiskFactorsSource `json:"source"`

	// Normalised risk category, same vocabulary as the exposure breakdown.
	Category string `json:"category"`

	// The provider's own wording for the driver (e.g. `Gambling / Crypto only`),
	// which is what you would also see in the provider's console.
	Label string `json:"label"`

	// Attributed entity behind the driver, for example a gambling site or an
	// exchange.
	EntityName string `json:"entity_name"`

	// Direction of the fund flow, `attribution` when the driver is the address's
	// own tag, or `unknown` when the provider did not report a direction.
	Direction WalletScreeningResultRiskFactorsDirection `json:"direction"`

	// `direct` (1 hop) or `indirect` (multi-hop), `attribution` for the address's
	// own tag, or `unknown` when the provider did not state how many hops away the
	// counterparty is. Treat `unknown` as unclassified, not as `direct`.
	ExposureType WalletScreeningResultRiskFactorsExposureType `json:"exposure_type"`

	// USD value attributed to this driver.
	AmountUsd float64 `json:"amount_usd"`

	// Share of the address's TOTAL screened volume, both directions combined -
	// unlike `percentage` inside `source_of_funds`/`destination_of_funds`, which is
	// normalised per direction. Comparable and summable across the whole list.
	Percentage float64 `json:"percentage"`

	// Whether the category is one Didit treats as high risk (`sanctioned`, `mixer`,
	// `stolen_funds`, `ransomware`, `scam`, `darknet_market`,
	// `terrorist_financing`, `child_exploitation`, `hacked_exchange`,
	// `high_risk_exchange`, `seized_funds`).
	IsHighRisk bool `json:"is_high_risk"`

	// One-line rendering of the driver, e.g. `9.01% indirect outgoing exposure to
	// Gambling / Crypto only (Example Gambling)`.
	Description string `json:"description"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WalletScreeningResultRiskFactors is a response object.

func (*WalletScreeningResultRiskFactors) UnmarshalJSON

func (r *WalletScreeningResultRiskFactors) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WalletScreeningResultRiskFactors leniently.

type WalletScreeningResultRiskFactorsDirection

type WalletScreeningResultRiskFactorsDirection string

WalletScreeningResultRiskFactorsDirection: Direction of the fund flow, `attribution` when the driver is the address's own tag, or `unknown` when the provider did not report a direction.

WalletScreeningResultRiskFactorsDirection is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WalletScreeningResultRiskFactorsDirectionIncoming    WalletScreeningResultRiskFactorsDirection = "incoming"
	WalletScreeningResultRiskFactorsDirectionOutgoing    WalletScreeningResultRiskFactorsDirection = "outgoing"
	WalletScreeningResultRiskFactorsDirectionConnected   WalletScreeningResultRiskFactorsDirection = "connected"
	WalletScreeningResultRiskFactorsDirectionUnknown     WalletScreeningResultRiskFactorsDirection = "unknown"
	WalletScreeningResultRiskFactorsDirectionAttribution WalletScreeningResultRiskFactorsDirection = "attribution"
)

Known values of WalletScreeningResultRiskFactorsDirection.

type WalletScreeningResultRiskFactorsExposureType

type WalletScreeningResultRiskFactorsExposureType string

WalletScreeningResultRiskFactorsExposureType: `direct` (1 hop) or `indirect` (multi-hop), `attribution` for the address's own tag, or `unknown` when the provider did not state how many hops away the counterparty is. Treat `unknown` as unclassified, not as `direct`.

WalletScreeningResultRiskFactorsExposureType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WalletScreeningResultRiskFactorsExposureTypeDirect      WalletScreeningResultRiskFactorsExposureType = "direct"
	WalletScreeningResultRiskFactorsExposureTypeIndirect    WalletScreeningResultRiskFactorsExposureType = "indirect"
	WalletScreeningResultRiskFactorsExposureTypeUnknown     WalletScreeningResultRiskFactorsExposureType = "unknown"
	WalletScreeningResultRiskFactorsExposureTypeAttribution WalletScreeningResultRiskFactorsExposureType = "attribution"
)

Known values of WalletScreeningResultRiskFactorsExposureType.

type WalletScreeningResultRiskFactorsSource

type WalletScreeningResultRiskFactorsSource string

WalletScreeningResultRiskFactorsSource: `attribution` is what the provider says the address itself is (its own tag or cluster); `exposure` is where its funds actually moved.

WalletScreeningResultRiskFactorsSource is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WalletScreeningResultRiskFactorsSourceAttribution WalletScreeningResultRiskFactorsSource = "attribution"
	WalletScreeningResultRiskFactorsSourceExposure    WalletScreeningResultRiskFactorsSource = "exposure"
)

Known values of WalletScreeningResultRiskFactorsSource.

type WalletScreeningResultScreeningType

type WalletScreeningResultScreeningType string

WalletScreeningResultScreeningType: Always `WALLET_SCREENING` for this endpoint.

WalletScreeningResultScreeningType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WalletScreeningResultScreeningTypeWalletScreening WalletScreeningResultScreeningType = "WALLET_SCREENING"
)

Known values of WalletScreeningResultScreeningType.

type WalletScreeningResultSeverity

type WalletScreeningResultSeverity string

WalletScreeningResultSeverity: Risk bucket derived from `risk_score`: `0-9` UNKNOWN, `10-39` LOW, `40-69` MEDIUM, `70-89` HIGH, `90-100` CRITICAL. `UNKNOWN` is the lowest band, not a separate no-data state: `risk_score` 0 (the common clean-address case) means no adverse assessment, while a non-zero score in the 1-9 range is a real but sub-LOW signal - read the `risk_score`, not just the band. Never treat `UNKNOWN` as an affirmative low-risk or clear rating; do not display it as a pass.

WalletScreeningResultSeverity is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WalletScreeningResultSeverityUnknown  WalletScreeningResultSeverity = "UNKNOWN"
	WalletScreeningResultSeverityLow      WalletScreeningResultSeverity = "LOW"
	WalletScreeningResultSeverityMedium   WalletScreeningResultSeverity = "MEDIUM"
	WalletScreeningResultSeverityHigh     WalletScreeningResultSeverity = "HIGH"
	WalletScreeningResultSeverityCritical WalletScreeningResultSeverity = "CRITICAL"
)

Known values of WalletScreeningResultSeverity.

type WalletScreeningResultSourceOfFunds

type WalletScreeningResultSourceOfFunds struct {
	// Normalised risk category, e.g. `exchange_licensed`, `dex`, `defi`,
	// `payment_processor`, `mixer`, `darknet_market`, `sanctioned`, `stolen_funds`,
	// `high_risk_exchange`.
	Category string `json:"category"`

	// Share of the direction's total exposure, 0-100.
	Percentage float64 `json:"percentage"`

	// USD value attributed to this entity.
	AmountUsd float64 `json:"amount_usd"`

	// Name of the attributed entity, for example an exchange, a mixer or a
	// sanctioned group.
	EntityName string `json:"entity_name"`

	// Provider entity type (e.g. `Exchange`, `DeFi`, `Sanctions`, `Theft`).
	EntityType string `json:"entity_type"`

	// More granular subtype (e.g. `Mandatory KYC and AML`, `OFAC`, `Yield
	// Aggregator`).
	EntitySubtype string `json:"entity_subtype"`

	// Number of hops to the entity (1 for a direct counterparty), when the provider
	// reports one. Always `null` for Merkle Science, which reports only whether
	// exposure is direct or indirect: use `exposure_type`.
	Hops int64 `json:"hops"`

	// `entity_type / entity_subtype`, as the provider labels the entity.
	Description string `json:"description"`

	// True when `exposure_type` is `direct`.
	IsDirect bool `json:"is_direct"`

	// Whether the funds came from (`incoming`) or went to (`outgoing`) this entity.
	ExposureDirection WalletScreeningResultSourceOfFundsExposureDirection `json:"exposure_direction"`

	// `direct` (1 hop) or `indirect` (multi-hop) exposure.
	ExposureType WalletScreeningResultSourceOfFundsExposureType `json:"exposure_type"`

	// The provider's own identifier for the entity.
	ProviderEntityID string `json:"provider_entity_id"`

	// The provider's own identifier for `entity_type`.
	ProviderEntityTypeID string `json:"provider_entity_type_id"`

	// The provider's own identifier for `entity_subtype`.
	ProviderEntitySubtypeID string `json:"provider_entity_subtype_id"`

	// Primary ISO 3166-1 alpha-2 country of the entity. Empty or `null` when the
	// provider does not know it.
	Country string `json:"country"`

	// Amount in the asset's own unit, when the provider reports it.
	RawAmount float64 `json:"raw_amount"`

	// Unit of `raw_amount`, when the provider reports it.
	RawCurrency string `json:"raw_currency"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WalletScreeningResultSourceOfFunds is a response object.

func (*WalletScreeningResultSourceOfFunds) UnmarshalJSON

func (r *WalletScreeningResultSourceOfFunds) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WalletScreeningResultSourceOfFunds leniently.

type WalletScreeningResultSourceOfFundsExposureDirection

type WalletScreeningResultSourceOfFundsExposureDirection string

WalletScreeningResultSourceOfFundsExposureDirection: Whether the funds came from (`incoming`) or went to (`outgoing`) this entity.

WalletScreeningResultSourceOfFundsExposureDirection is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WalletScreeningResultSourceOfFundsExposureDirectionIncoming  WalletScreeningResultSourceOfFundsExposureDirection = "incoming"
	WalletScreeningResultSourceOfFundsExposureDirectionOutgoing  WalletScreeningResultSourceOfFundsExposureDirection = "outgoing"
	WalletScreeningResultSourceOfFundsExposureDirectionConnected WalletScreeningResultSourceOfFundsExposureDirection = "connected"
)

Known values of WalletScreeningResultSourceOfFundsExposureDirection.

type WalletScreeningResultSourceOfFundsExposureType

type WalletScreeningResultSourceOfFundsExposureType string

WalletScreeningResultSourceOfFundsExposureType: `direct` (1 hop) or `indirect` (multi-hop) exposure.

WalletScreeningResultSourceOfFundsExposureType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WalletScreeningResultSourceOfFundsExposureTypeDirect   WalletScreeningResultSourceOfFundsExposureType = "direct"
	WalletScreeningResultSourceOfFundsExposureTypeIndirect WalletScreeningResultSourceOfFundsExposureType = "indirect"
)

Known values of WalletScreeningResultSourceOfFundsExposureType.

type WalletScreeningResultStatus

type WalletScreeningResultStatus string

WalletScreeningResultStatus: Screening outcome status.

WalletScreeningResultStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WalletScreeningResultStatusScreened WalletScreeningResultStatus = "SCREENED"
	WalletScreeningResultStatusPending  WalletScreeningResultStatus = "PENDING"
	WalletScreeningResultStatusError    WalletScreeningResultStatus = "ERROR"
)

Known values of WalletScreeningResultStatus.

type WalletScreeningScreenParams

type WalletScreeningScreenParams struct {
	// The crypto address or network identifier to screen. Must match the selected
	// network (e.g. a `0x`-prefixed 40-hex-char address for EVM chains). Alias:
	// `address`. Required.
	WalletAddress string `json:"wallet_address"`

	// Network identifier. Managed screening supports BTC, ETH, LTC, XRP, BCH, DOGE,
	// TRX, SOL, MATIC, BNB, BASE (Base), OP (Optimism), and ARB (Arbitrum One).
	// USDT and USDC are legacy Ethereum aliases, not multi-network searches.
	// Connected-provider coverage varies. LIGHTNING requires a supported connected
	// provider. CELO (Celo), MODE (Mode) and PLUME (Plume) are screened through a
	// connected TRM Labs account; managed screening answers 400 for them. Alias:
	// `currency`. Required.
	Blockchain WalletScreeningScreenParamsBlockchain `json:"blockchain"`

	// Optional. Whether the address is being screened as an inbound (deposit) or
	// outbound (withdrawal) counterparty. Accepts `inbound`, `outbound`, `deposit`,
	// or `withdrawal`. Defaults to a neutral pre-transfer screen when omitted. This
	// is passed to the provider as context only; it does not change the returned
	// `risk_score`, `severity`, or the `source_of_funds`/`destination_of_funds`
	// breakdowns, which are always both returned regardless of `direction`.
	// Changing or omitting `direction` therefore does not require re-screening an
	// address.
	Direction Opt[WalletScreeningScreenParamsDirection] `json:"direction"`
}

WalletScreeningScreenParams holds the parameters of Client.WalletScreening.Screen.

func (WalletScreeningScreenParams) MarshalJSON

func (r WalletScreeningScreenParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type WalletScreeningScreenParamsBlockchain

type WalletScreeningScreenParamsBlockchain string

WalletScreeningScreenParamsBlockchain: Network identifier. Managed screening supports BTC, ETH, LTC, XRP, BCH, DOGE, TRX, SOL, MATIC, BNB, BASE (Base), OP (Optimism), and ARB (Arbitrum One). USDT and USDC are legacy Ethereum aliases, not multi-network searches. Connected-provider coverage varies. LIGHTNING requires a supported connected provider. CELO (Celo), MODE (Mode) and PLUME (Plume) are screened through a connected TRM Labs account; managed screening answers 400 for them. Alias: `currency`.

WalletScreeningScreenParamsBlockchain is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WalletScreeningScreenParamsBlockchainBtc       WalletScreeningScreenParamsBlockchain = "BTC"
	WalletScreeningScreenParamsBlockchainLightning WalletScreeningScreenParamsBlockchain = "LIGHTNING"
	WalletScreeningScreenParamsBlockchainEth       WalletScreeningScreenParamsBlockchain = "ETH"
	WalletScreeningScreenParamsBlockchainLtc       WalletScreeningScreenParamsBlockchain = "LTC"
	WalletScreeningScreenParamsBlockchainXrp       WalletScreeningScreenParamsBlockchain = "XRP"
	WalletScreeningScreenParamsBlockchainBch       WalletScreeningScreenParamsBlockchain = "BCH"
	WalletScreeningScreenParamsBlockchainDoge      WalletScreeningScreenParamsBlockchain = "DOGE"
	WalletScreeningScreenParamsBlockchainTrx       WalletScreeningScreenParamsBlockchain = "TRX"
	WalletScreeningScreenParamsBlockchainSol       WalletScreeningScreenParamsBlockchain = "SOL"
	WalletScreeningScreenParamsBlockchainMatic     WalletScreeningScreenParamsBlockchain = "MATIC"
	WalletScreeningScreenParamsBlockchainBnb       WalletScreeningScreenParamsBlockchain = "BNB"
	WalletScreeningScreenParamsBlockchainUsdt      WalletScreeningScreenParamsBlockchain = "USDT"
	WalletScreeningScreenParamsBlockchainUsdc      WalletScreeningScreenParamsBlockchain = "USDC"
	WalletScreeningScreenParamsBlockchainBase      WalletScreeningScreenParamsBlockchain = "BASE"
	WalletScreeningScreenParamsBlockchainOp        WalletScreeningScreenParamsBlockchain = "OP"
	WalletScreeningScreenParamsBlockchainArb       WalletScreeningScreenParamsBlockchain = "ARB"
	WalletScreeningScreenParamsBlockchainCelo      WalletScreeningScreenParamsBlockchain = "CELO"
	WalletScreeningScreenParamsBlockchainMode      WalletScreeningScreenParamsBlockchain = "MODE"
	WalletScreeningScreenParamsBlockchainPlume     WalletScreeningScreenParamsBlockchain = "PLUME"
)

Known values of WalletScreeningScreenParamsBlockchain.

type WalletScreeningScreenParamsDirection

type WalletScreeningScreenParamsDirection string

WalletScreeningScreenParamsDirection: Optional. Whether the address is being screened as an inbound (deposit) or outbound (withdrawal) counterparty. Accepts `inbound`, `outbound`, `deposit`, or `withdrawal`. Defaults to a neutral pre-transfer screen when omitted. This is passed to the provider as context only; it does not change the returned `risk_score`, `severity`, or the `source_of_funds`/`destination_of_funds` breakdowns, which are always both returned regardless of `direction`. Changing or omitting `direction` therefore does not require re-screening an address.

WalletScreeningScreenParamsDirection is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WalletScreeningScreenParamsDirectionInbound    WalletScreeningScreenParamsDirection = "inbound"
	WalletScreeningScreenParamsDirectionOutbound   WalletScreeningScreenParamsDirection = "outbound"
	WalletScreeningScreenParamsDirectionDeposit    WalletScreeningScreenParamsDirection = "deposit"
	WalletScreeningScreenParamsDirectionWithdrawal WalletScreeningScreenParamsDirection = "withdrawal"
)

Known values of WalletScreeningScreenParamsDirection.

type WalletScreeningService

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

WalletScreeningService holds the wallet_screening operations. Use it through Client.WalletScreening.

func (*WalletScreeningService) Screen

Screen: Screen a wallet address.

Run on-demand AML screening for a single crypto wallet/address without creating a transaction. Resolves your application's configured blockchain analytics provider, screens the address synchronously, and returns the normalised risk result. LIGHTNING is available only with an Elliptic or Chainalysis BYOK connection added through Marketplace. Nothing is written to the transactions table. One AML monitoring usage is billed per successful screening (sandbox applications are not billed).

POST /v3/wallet-screening/

func (*WalletScreeningService) ScreenPDF

ScreenPDF: Render a wallet-screening result as a PDF.

Stateless companion to `POST /v3/wallet-screening/`: repost the exact JSON body that endpoint returned - including the `report_signature` it added - and get back a Didit-branded PDF of the same result. No provider is called and nothing is billed or persisted; this only re-renders a result Didit already produced. The signature ties the PDF to an unmodified result: editing `risk_score`, `severity`, `sanctions_hit`, or any other signed field before reposting fails with `400`.

The response is a file (application/pdf). Read it from the returned response's body and close it.

POST /v3/wallet-screening/pdf/

type WebhookConfig

type WebhookConfig struct {
	// Application-level (legacy) webhook URL. Didit sends to it only while the
	// application has no enabled destination, and then only `status.updated` and
	// `data.updated`. Every create, update or delete of a destination sets it to
	// the URL of the oldest enabled destination, or `null` when none is enabled.
	WebhookURL string `json:"webhook_url"`

	// Payload version of the legacy `webhook_url`. Each destination has its own
	// `webhook_version`.
	WebhookVersion WebhookConfigWebhookVersion `json:"webhook_version"`

	// Application-level signing secret (43-character URL-safe token). It signs only
	// deliveries to the legacy `webhook_url`; each destination signs with its own
	// `secret_shared_key`. API-key callers always receive it in full; Console users
	// without `read:webhooks` receive an empty string.
	SecretSharedKey string `json:"secret_shared_key"`

	// Legacy application setting. The verification flow does not read it: capture
	// options are configured per workflow.
	CaptureMethod WebhookConfigCaptureMethod `json:"capture_method"`

	// Automatic deletion window. User verification sessions created more than this
	// many months ago (a month counts as 30 days) are deleted automatically, and
	// that deletion is irreversible. `null` means sessions are never deleted
	// automatically. See [Data
	// retention](https://docs.didit.me/console/data-retention).
	DataRetentionMonths int64 `json:"data_retention_months"`

	// What happens to a session's face embedding when the session is deleted.
	// `delete_with_session` (default) deletes it with the session.
	// `retain_until_user_deleted` is the opt-in [biometric template
	// retention](https://docs.didit.me/console/data-retention#biometric-template-retention):
	// an image-free biometric template linked to the User is managed separately
	// until its retention period ends, the User is deleted, or you purge it.
	FaceRetentionPolicy WebhookConfigFaceRetentionPolicy `json:"face_retention_policy"`

	// Retention period, in days, of biometric templates under
	// `retain_until_user_deleted`. Required when that policy is set.
	FaceRetentionDays int64 `json:"face_retention_days"`

	// Every event type a destination can subscribe to, with a display label.
	AvailableEvents []WebhookConfigAvailableEvents `json:"available_events"`

	// Hostnames (exact match, HTTPS only) a standalone Digital ID wallet
	// verification may send the user back to with its `return_url`. Your
	// white-label domain is always allowed as well. See [Register your return
	// destination](https://docs.didit.me/standalone-apis/digital-id-wallets#register-your-return-destination).
	AllowedReturnHosts []string `json:"allowed_return_hosts"`

	// Every webhook destination of the application, oldest first, each with its
	// signing secret. Read only here: manage destinations with the
	// `/v3/webhook/destinations/` endpoints.
	Endpoints []WebhookConfigDestination `json:"endpoints"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WebhookConfig: Application-level webhook configuration, retention policy and Digital ID wallet return hosts, with every webhook destination.

func (*WebhookConfig) UnmarshalJSON

func (r *WebhookConfig) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WebhookConfig leniently.

type WebhookConfigAvailableEvents

type WebhookConfigAvailableEvents struct {
	Value WebhookEvent `json:"value"`

	// Display label, for example `Session status updated`.
	Label string `json:"label"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WebhookConfigAvailableEvents is a response object.

func (*WebhookConfigAvailableEvents) UnmarshalJSON

func (r *WebhookConfigAvailableEvents) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WebhookConfigAvailableEvents leniently.

type WebhookConfigCaptureMethod

type WebhookConfigCaptureMethod string

WebhookConfigCaptureMethod: Legacy application setting. The verification flow does not read it: capture options are configured per workflow.

WebhookConfigCaptureMethod is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhookConfigCaptureMethodMobile           WebhookConfigCaptureMethod = "MOBILE"
	WebhookConfigCaptureMethodMobileAndDesktop WebhookConfigCaptureMethod = "MOBILE_AND_DESKTOP"
)

Known values of WebhookConfigCaptureMethod.

type WebhookConfigDestination

type WebhookConfigDestination struct {
	// Destination ID.
	UUID string `json:"uuid"`

	// Human-readable name.
	Label string `json:"label"`

	// HTTPS endpoint Didit posts events to.
	URL string `json:"url"`

	// `false` pauses deliveries to this destination.
	Enabled bool `json:"enabled"`

	// Payload version sent to this destination.
	WebhookVersion WebhookConfigDestinationWebhookVersion `json:"webhook_version"`

	// This destination's signing secret (43-character URL-safe token). Verify each
	// webhook with the secret of the destination it was sent to. API-key callers
	// always receive it in full; Console users without `read:webhooks` receive an
	// empty string.
	SecretSharedKey string `json:"secret_shared_key"`

	// Event types delivered to this destination. Empty when the destination was
	// created without events, in which case it receives nothing.
	SubscribedEvents []WebhookEvent `json:"subscribed_events"`
	CreatedAt        time.Time      `json:"created_at"`
	UpdatedAt        time.Time      `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WebhookConfigDestination: A webhook destination as listed in the webhook configuration, without delivery metrics. `GET /v3/webhook/destinations/{destination_uuid}/` adds its delivery summary.

func (*WebhookConfigDestination) UnmarshalJSON

func (r *WebhookConfigDestination) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WebhookConfigDestination leniently.

type WebhookConfigDestinationWebhookVersion

type WebhookConfigDestinationWebhookVersion string

WebhookConfigDestinationWebhookVersion: Payload version sent to this destination.

WebhookConfigDestinationWebhookVersion is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhookConfigDestinationWebhookVersionV1 WebhookConfigDestinationWebhookVersion = "v1"
	WebhookConfigDestinationWebhookVersionV2 WebhookConfigDestinationWebhookVersion = "v2"
	WebhookConfigDestinationWebhookVersionV3 WebhookConfigDestinationWebhookVersion = "v3"
)

Known values of WebhookConfigDestinationWebhookVersion.

type WebhookConfigFaceRetentionPolicy

type WebhookConfigFaceRetentionPolicy string

WebhookConfigFaceRetentionPolicy: What happens to a session's face embedding when the session is deleted. `delete_with_session` (default) deletes it with the session. `retain_until_user_deleted` is the opt-in [biometric template retention](https://docs.didit.me/console/data-retention#biometric-template-retention): an image-free biometric template linked to the User is managed separately until its retention period ends, the User is deleted, or you purge it.

WebhookConfigFaceRetentionPolicy is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhookConfigFaceRetentionPolicyDeleteWithSession      WebhookConfigFaceRetentionPolicy = "delete_with_session"
	WebhookConfigFaceRetentionPolicyRetainUntilUserDeleted WebhookConfigFaceRetentionPolicy = "retain_until_user_deleted"
)

Known values of WebhookConfigFaceRetentionPolicy.

type WebhookConfigWebhookVersion

type WebhookConfigWebhookVersion string

WebhookConfigWebhookVersion: Payload version of the legacy `webhook_url`. Each destination has its own `webhook_version`.

WebhookConfigWebhookVersion is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhookConfigWebhookVersionV1 WebhookConfigWebhookVersion = "v1"
	WebhookConfigWebhookVersionV2 WebhookConfigWebhookVersion = "v2"
	WebhookConfigWebhookVersionV3 WebhookConfigWebhookVersion = "v3"
)

Known values of WebhookConfigWebhookVersion.

type WebhookDestinationDelivery

type WebhookDestinationDelivery struct {
	// Delivery ID, for the detail and resend calls.
	UUID string `json:"uuid"`

	// User verification session the event is about. `null` for business session,
	// user, business, transaction, Travel Rule and workflow events.
	SessionID string `json:"session_id"`

	// URL the delivery was sent to: the destination's URL when the event was
	// generated.
	RequestURL string `json:"request_url"`

	// HTTP status your endpoint returned. `null` while the delivery is queued and
	// not yet attempted. When no HTTP answer was received Didit records a status of
	// its own: `504` when your endpoint did not answer within 5 seconds, `503` for
	// a connection failure, `400` when the URL was refused as unsafe (for example a
	// private or internal address), and `404` for any other request error. `400` or
	// above counts as a failed delivery.
	ResponseStatus int64 `json:"response_status"`

	// Time the attempt took, in milliseconds. `null` while the delivery is queued.
	ResponseTimeMs int64 `json:"response_time_ms"`

	// Status the event reported when it was generated: the session status for
	// session events (for example `Approved` or `In Review`), the person's or
	// company's status for user and business events, and the transaction status for
	// transaction events. `null` for events that carry no status.
	Status      string       `json:"status"`
	WebhookType WebhookEvent `json:"webhook_type"`

	// When the delivery was created.
	CreatedAt time.Time `json:"created_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WebhookDestinationDelivery: One delivery attempt to a webhook destination. The first send of an event, each automatic retry and each resend are separate deliveries.

func (*WebhookDestinationDelivery) UnmarshalJSON

func (r *WebhookDestinationDelivery) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WebhookDestinationDelivery leniently.

type WebhookDestinationDeliveryDetail

type WebhookDestinationDeliveryDetail struct {
	// Delivery ID, for the detail and resend calls.
	UUID string `json:"uuid"`

	// User verification session the event is about. `null` for business session,
	// user, business, transaction, Travel Rule and workflow events.
	SessionID string `json:"session_id"`

	// URL the delivery was sent to: the destination's URL when the event was
	// generated.
	RequestURL string `json:"request_url"`

	// HTTP status your endpoint returned. `null` while the delivery is queued and
	// not yet attempted. When no HTTP answer was received Didit records a status of
	// its own: `504` when your endpoint did not answer within 5 seconds, `503` for
	// a connection failure, `400` when the URL was refused as unsafe (for example a
	// private or internal address), and `404` for any other request error. `400` or
	// above counts as a failed delivery.
	ResponseStatus int64 `json:"response_status"`

	// Time the attempt took, in milliseconds. `null` while the delivery is queued.
	ResponseTimeMs int64 `json:"response_time_ms"`

	// Status the event reported when it was generated: the session status for
	// session events (for example `Approved` or `In Review`), the person's or
	// company's status for user and business events, and the transaction status for
	// transaction events. `null` for events that carry no status.
	Status      string       `json:"status"`
	WebhookType WebhookEvent `json:"webhook_type"`

	// When the delivery was created.
	CreatedAt time.Time `json:"created_at"`

	// JSON text (a string) of the request headers Didit sent: `Content-Type`,
	// `X-Signature`, `X-Signature-V2`, `X-Signature-Simple`, `X-Timestamp` and
	// `User-Agent`. Parse it with a JSON parser. It holds signatures, never the
	// signing secret.
	RequestHeader string `json:"request_header"`

	// JSON text (a string) of the exact payload Didit sent, keys sorted, including
	// `event_id` and `timestamp`. Parse it with a JSON parser; see [Payload
	// shape](https://docs.didit.me/integration/webhooks#payload-shape). For a
	// scoped key without `media: read`, media URLs inside it are `null`; without
	// `sessions: write`, session tokens and hosted verification links are `null`. A
	// body changed that way no longer matches its signatures. Didit does not record
	// the response body your endpoint returned.
	RequestBody string `json:"request_body"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WebhookDestinationDeliveryDetail: One delivery attempt to a webhook destination, with the exact request headers and body Didit sent.

func (*WebhookDestinationDeliveryDetail) UnmarshalJSON

func (r *WebhookDestinationDeliveryDetail) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WebhookDestinationDeliveryDetail leniently.

type WebhookEvent

type WebhookEvent string

WebhookEvent: Supported webhook event name. Use these exact strings in `subscribed_events`; unsupported values are rejected.

WebhookEvent is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhookEventStatusUpdated                   WebhookEvent = "status.updated"
	WebhookEventDataUpdated                     WebhookEvent = "data.updated"
	WebhookEventUserStatusUpdated               WebhookEvent = "user.status.updated"
	WebhookEventUserDataUpdated                 WebhookEvent = "user.data.updated"
	WebhookEventBusinessStatusUpdated           WebhookEvent = "business.status.updated"
	WebhookEventBusinessDataUpdated             WebhookEvent = "business.data.updated"
	WebhookEventActivityCreated                 WebhookEvent = "activity.created"
	WebhookEventTransactionCreated              WebhookEvent = "transaction.created"
	WebhookEventTransactionStatusUpdated        WebhookEvent = "transaction.status.updated"
	WebhookEventTravelRuleStatusUpdated         WebhookEvent = "travel_rule.status.updated"
	WebhookEventWorkflowComplianceChanged       WebhookEvent = "workflow.compliance_changed"
	WebhookEventAuthSignup                      WebhookEvent = "auth.signup"
	WebhookEventAuthLogin                       WebhookEvent = "auth.login"
	WebhookEventAuthLoginFailed                 WebhookEvent = "auth.login_failed"
	WebhookEventAuthPasswordResetRequested      WebhookEvent = "auth.password_reset_requested"
	WebhookEventAuthPasswordResetCompleted      WebhookEvent = "auth.password_reset_completed"
	WebhookEventAuthMFAChanged                  WebhookEvent = "auth.mfa_changed"
	WebhookEventAuthNewDevice                   WebhookEvent = "auth.new_device"
	WebhookEventAuthAccountLocked               WebhookEvent = "auth.account_locked"
	WebhookEventInvestigatorReportReady         WebhookEvent = "investigator.report.ready"
	WebhookEventInvestigatorDecisionAutomated   WebhookEvent = "investigator.decision.automated"
	WebhookEventInvestigatorDecisionOverridden  WebhookEvent = "investigator.decision.overridden"
	WebhookEventInvestigatorDecisionContested   WebhookEvent = "investigator.decision.contested"
	WebhookEventInvestigatorQuestionRaised      WebhookEvent = "investigator.question.raised"
	WebhookEventInvestigatorAutomationPaused    WebhookEvent = "investigator.automation.paused"
	WebhookEventInvestigatorRfiAnswered         WebhookEvent = "investigator.rfi.answered"
	WebhookEventInvestigatorRfiOverdue          WebhookEvent = "investigator.rfi.overdue"
	WebhookEventInvestigatorDriftDetected       WebhookEvent = "investigator.drift.detected"
	WebhookEventInvestigatorSLABreached         WebhookEvent = "investigator.sla.breached"
	WebhookEventInvestigatorQaFailed            WebhookEvent = "investigator.qa.failed"
	WebhookEventInvestigatorExternalReportReady WebhookEvent = "investigator.external.report.ready"
)

Known values of WebhookEvent.

type WebhookVerificationError

type WebhookVerificationError struct {
	Reason  WebhookVerificationReason
	Message string
}

WebhookVerificationError reports a webhook delivery that failed verification. Reason is machine-readable.

func (*WebhookVerificationError) Error

func (e *WebhookVerificationError) Error() string

type WebhookVerificationReason

type WebhookVerificationReason string

WebhookVerificationReason is the machine-readable reason of a *WebhookVerificationError.

const (
	// WebhookReasonMissingSignature: no signature header at all.
	WebhookReasonMissingSignature WebhookVerificationReason = "missing_signature"
	// WebhookReasonInvalidSignature: no signature matched any secret. Also
	// returned when only X-Signature-Simple is present and AllowSimple is off.
	WebhookReasonInvalidSignature WebhookVerificationReason = "invalid_signature"
	// WebhookReasonTimestampMismatch: X-Timestamp differs from the body's
	// timestamp.
	WebhookReasonTimestampMismatch WebhookVerificationReason = "timestamp_mismatch"
	// WebhookReasonTimestampOutOfTolerance: the timestamp is further from now
	// than the tolerance.
	WebhookReasonTimestampOutOfTolerance WebhookVerificationReason = "timestamp_out_of_tolerance"
	// WebhookReasonMissingTimestamp: the body has no integer timestamp.
	WebhookReasonMissingTimestamp WebhookVerificationReason = "missing_timestamp"
	// WebhookReasonInvalidPayload: the body is not a UTF-8 JSON object.
	WebhookReasonInvalidPayload WebhookVerificationReason = "invalid_payload"
)

Webhook verification failure reasons (docs/DESIGN.md section 9.3).

type WebhooksDestinationsCreateParams

type WebhooksDestinationsCreateParams struct {
	// Human-readable name displayed in Console → Webhooks. Helps distinguish
	// destinations when you have several (e.g. "Prod", "Staging mirror"). Required.
	Label string `json:"label"`

	// HTTPS URL that will receive `POST` requests. Must be unique among the
	// application's destinations. Use a stable, hardened endpoint: Didit retries
	// failed deliveries on a backoff schedule. Required.
	URL string `json:"url"`

	// When `false`, the destination is saved but Didit will not push any webhooks
	// to it. Useful for staging configs you want to keep parked.
	Enabled Opt[bool] `json:"enabled"`

	// Payload schema version Didit will send. `v3` is the current/recommended
	// format; older versions are kept for backward compatibility with legacy
	// integrations.
	WebhookVersion Opt[WebhooksDestinationsCreateParamsWebhookVersion] `json:"webhook_version"`

	// Events to deliver. Effectively required: an explicit `[]` is rejected with
	// 400, and omitting the field creates a destination with no subscriptions that
	// receives nothing.
	SubscribedEvents Opt[[]WebhookEvent] `json:"subscribed_events"`
}

WebhooksDestinationsCreateParams holds the parameters of Client.Webhooks.Destinations.Create.

func (WebhooksDestinationsCreateParams) MarshalJSON

func (r WebhooksDestinationsCreateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type WebhooksDestinationsCreateParamsWebhookVersion

type WebhooksDestinationsCreateParamsWebhookVersion string

WebhooksDestinationsCreateParamsWebhookVersion: Payload schema version Didit will send. `v3` is the current/recommended format; older versions are kept for backward compatibility with legacy integrations.

WebhooksDestinationsCreateParamsWebhookVersion is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksDestinationsCreateParamsWebhookVersionV1 WebhooksDestinationsCreateParamsWebhookVersion = "v1"
	WebhooksDestinationsCreateParamsWebhookVersionV2 WebhooksDestinationsCreateParamsWebhookVersion = "v2"
	WebhooksDestinationsCreateParamsWebhookVersionV3 WebhooksDestinationsCreateParamsWebhookVersion = "v3"
)

Known values of WebhooksDestinationsCreateParamsWebhookVersion.

type WebhooksDestinationsCreateResponse

type WebhooksDestinationsCreateResponse struct {
	// Stable destination identifier. Use as `{destination_uuid}` in subsequent
	// calls.
	UUID           string                                           `json:"uuid"`
	Label          string                                           `json:"label"`
	URL            string                                           `json:"url"`
	Enabled        bool                                             `json:"enabled"`
	WebhookVersion WebhooksDestinationsCreateResponseWebhookVersion `json:"webhook_version"`

	// Auto-generated HMAC signing secret bound to this destination (43-character
	// URL-safe token). Use it to verify the signature headers on incoming webhooks.
	// Always returned in full to API-key callers; Console users need the
	// `read:webhooks` permission, otherwise they see an empty string.
	SecretSharedKey string `json:"secret_shared_key"`

	// Last four characters of the destination's current signing secret, so you can
	// tell secrets apart. Not enough to verify a signature.
	SecretLast4 string `json:"secret_last4"`

	// Set for 24 hours after the destination's signing secret is rotated in the
	// Business Console. Until this time, every delivery to the destination also
	// carries `X-Signature-Previous`, `X-Signature-V2-Previous` and
	// `X-Signature-Simple-Previous`, made with the replaced secret (see [Signature
	// verification](/integration/webhooks#signature-verification)). `null` when no
	// rotation happened in the last 24 hours.
	PreviousSecretExpiresAt time.Time      `json:"previous_secret_expires_at"`
	SubscribedEvents        []WebhookEvent `json:"subscribed_events"`

	// Email of the Business Console member who created the destination. `null` for
	// a destination created with an API key.
	CreatedByEmail string `json:"created_by_email"`

	// Name of the Business Console member who created the destination. `null` for a
	// destination created with an API key.
	CreatedByName string    `json:"created_by_name"`
	CreatedAt     time.Time `json:"created_at"`
	UpdatedAt     time.Time `json:"updated_at"`

	// Delivery health. `failing`: 3 or more consecutive events failed their first
	// delivery attempt since the destination last answered successfully (see
	// `failing_streak`). `degraded`: not failing, but a delivery attempt failed in
	// the last 24 hours and no later attempt has delivered that event; a retry or
	// resend that delivers it clears this. `healthy`: neither. Independent of
	// `enabled`. A failed attempt is one answered with HTTP 400 or above, or not
	// answered at all.
	HealthStatus WebhooksDestinationsCreateResponseHealthStatus `json:"health_status"`

	// How many consecutive events failed their first delivery attempt since the
	// destination last answered successfully, within the last 30 days. Retries are
	// not counted, and any successful attempt, including a retry or a resend, ends
	// the streak. `0` when no event has failed since the last success.
	FailingStreak int64 `json:"failing_streak"`

	// When the first failed attempt of the current `failing_streak` was made.
	// `null` when `failing_streak` is `0`.
	FailingSince time.Time `json:"failing_since"`

	// When the destination last answered a delivery with an HTTP status under 400,
	// within the last 30 days. `null` if it has not in that window.
	LastSuccessAt time.Time `json:"last_success_at"`

	// Environment of the application that owns the destination.
	Environment WebhooksDestinationsCreateResponseEnvironment `json:"environment"`

	// Delivery metrics for the last `metrics_window_days` (30) days.
	// `last_delivery_at` is the most recent attempt, whenever it was made.
	Summary WebhooksDestinationsCreateResponseSummary `json:"summary"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WebhooksDestinationsCreateResponse is a response object.

func (*WebhooksDestinationsCreateResponse) UnmarshalJSON

func (r *WebhooksDestinationsCreateResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WebhooksDestinationsCreateResponse leniently.

type WebhooksDestinationsCreateResponseEnvironment

type WebhooksDestinationsCreateResponseEnvironment string

WebhooksDestinationsCreateResponseEnvironment: Environment of the application that owns the destination.

WebhooksDestinationsCreateResponseEnvironment is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksDestinationsCreateResponseEnvironmentLive    WebhooksDestinationsCreateResponseEnvironment = "live"
	WebhooksDestinationsCreateResponseEnvironmentSandbox WebhooksDestinationsCreateResponseEnvironment = "sandbox"
)

Known values of WebhooksDestinationsCreateResponseEnvironment.

type WebhooksDestinationsCreateResponseHealthStatus

type WebhooksDestinationsCreateResponseHealthStatus string

WebhooksDestinationsCreateResponseHealthStatus: Delivery health. `failing`: 3 or more consecutive events failed their first delivery attempt since the destination last answered successfully (see `failing_streak`). `degraded`: not failing, but a delivery attempt failed in the last 24 hours and no later attempt has delivered that event; a retry or resend that delivers it clears this. `healthy`: neither. Independent of `enabled`. A failed attempt is one answered with HTTP 400 or above, or not answered at all.

WebhooksDestinationsCreateResponseHealthStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksDestinationsCreateResponseHealthStatusHealthy  WebhooksDestinationsCreateResponseHealthStatus = "healthy"
	WebhooksDestinationsCreateResponseHealthStatusDegraded WebhooksDestinationsCreateResponseHealthStatus = "degraded"
	WebhooksDestinationsCreateResponseHealthStatusFailing  WebhooksDestinationsCreateResponseHealthStatus = "failing"
)

Known values of WebhooksDestinationsCreateResponseHealthStatus.

type WebhooksDestinationsCreateResponseSummary

type WebhooksDestinationsCreateResponseSummary struct {
	TotalDeliveries     int64     `json:"total_deliveries"`
	FailedDeliveries    int64     `json:"failed_deliveries"`
	ErrorRatePercentage int64     `json:"error_rate_percentage"`
	MinResponseTimeMs   int64     `json:"min_response_time_ms"`
	AvgResponseTimeMs   int64     `json:"avg_response_time_ms"`
	MaxResponseTimeMs   int64     `json:"max_response_time_ms"`
	LastDeliveryAt      time.Time `json:"last_delivery_at"`

	// Length in days of the window the other summary metrics cover. Always `30`.
	MetricsWindowDays int64 `json:"metrics_window_days"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WebhooksDestinationsCreateResponseSummary: Delivery metrics for the last `metrics_window_days` (30) days. `last_delivery_at` is the most recent attempt, whenever it was made.

func (*WebhooksDestinationsCreateResponseSummary) UnmarshalJSON

func (r *WebhooksDestinationsCreateResponseSummary) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WebhooksDestinationsCreateResponseSummary leniently.

type WebhooksDestinationsCreateResponseWebhookVersion

type WebhooksDestinationsCreateResponseWebhookVersion string

WebhooksDestinationsCreateResponseWebhookVersion is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksDestinationsCreateResponseWebhookVersionV1 WebhooksDestinationsCreateResponseWebhookVersion = "v1"
	WebhooksDestinationsCreateResponseWebhookVersionV2 WebhooksDestinationsCreateResponseWebhookVersion = "v2"
	WebhooksDestinationsCreateResponseWebhookVersionV3 WebhooksDestinationsCreateResponseWebhookVersion = "v3"
)

Known values of WebhooksDestinationsCreateResponseWebhookVersion.

type WebhooksDestinationsListDeliveriesParams

type WebhooksDestinationsListDeliveriesParams struct {
	// Maximum number of deliveries per page. Defaults to 50. A value that is not a
	// positive integer falls back to 50; a value above 1000000 returns `400`.
	Limit Opt[int64] `json:"-" query:"limit"`

	// Number of deliveries to skip. Defaults to 0. Prefer following the `next` and
	// `previous` URLs from the response.
	Offset Opt[int64] `json:"-" query:"offset"`

	// First UTC day to include, as `YYYY-MM-DD` (inclusive). Omit to start from the
	// oldest delivery available. `dateFrom` is accepted as an alias.
	DateFrom Opt[string] `json:"-" query:"date_from"`

	// Last UTC day to include, as `YYYY-MM-DD` (inclusive). Must not be earlier
	// than `date_from`. `dateTo` is accepted as an alias.
	DateTo Opt[string] `json:"-" query:"date_to"`
}

WebhooksDestinationsListDeliveriesParams holds the parameters of Client.Webhooks.Destinations.ListDeliveries.

func (WebhooksDestinationsListDeliveriesParams) MarshalJSON

MarshalJSON encodes the fields that are set.

type WebhooksDestinationsListResponse

type WebhooksDestinationsListResponse struct {
	// Stable destination identifier; use as `{destination_uuid}` for update/delete.
	UUID string `json:"uuid"`

	// Human-readable name shown in the Console.
	Label string `json:"label"`

	// Destination URL that receives `POST` requests with the webhook payload.
	URL string `json:"url"`

	// When `false`, Didit silently skips delivery to this destination.
	Enabled bool `json:"enabled"`

	// Payload schema version sent to this destination. `v3` is the
	// current/recommended format.
	WebhookVersion   WebhooksDestinationsListResponseWebhookVersion `json:"webhook_version"`
	SubscribedEvents []WebhookEvent                                 `json:"subscribed_events"`

	// Cached length of `subscribed_events`, useful for UI rendering.
	SubscribedEventsCount int64 `json:"subscribed_events_count"`

	// Delivery attempts (retries included) made to this destination in the last 30
	// days.
	DeliveriesCount int64 `json:"deliveries_count"`

	// Delivery attempts in the last 30 days that the destination answered with HTTP
	// 400 or above, or did not answer (timeout, refused connection or blocked
	// address).
	FailedDeliveriesCount int64 `json:"failed_deliveries_count"`

	// Average response time in milliseconds over the last 30 days, rounded to an
	// integer. `null` when there were no deliveries in that window.
	AverageResponseTimeMs int64 `json:"average_response_time_ms"`

	// `round(failed_deliveries_count / deliveries_count * 100)` over the last 30
	// days; `0` when there are no deliveries.
	ErrorRatePercentage int64 `json:"error_rate_percentage"`

	// Timestamp of the most recent delivery attempt (success or failure). `null` if
	// never delivered.
	LastDeliveryAt time.Time `json:"last_delivery_at"`

	// Length in days of the window that `deliveries_count`,
	// `failed_deliveries_count`, `average_response_time_ms`,
	// `error_rate_percentage` and `daily_points` cover. Always `30`.
	MetricsWindowDays int64 `json:"metrics_window_days"`

	// Delivery health. `failing`: 3 or more consecutive events failed their first
	// delivery attempt since the destination last answered successfully (see
	// `failing_streak`). `degraded`: not failing, but a delivery attempt failed in
	// the last 24 hours and no later attempt has delivered that event; a retry or
	// resend that delivers it clears this. `healthy`: neither. Independent of
	// `enabled`. A failed attempt is one answered with HTTP 400 or above, or not
	// answered at all.
	HealthStatus WebhooksDestinationsListResponseHealthStatus `json:"health_status"`

	// How many consecutive events failed their first delivery attempt since the
	// destination last answered successfully, within the last 30 days. Retries are
	// not counted, and any successful attempt, including a retry or a resend, ends
	// the streak. `0` when no event has failed since the last success.
	FailingStreak int64 `json:"failing_streak"`

	// When the first failed attempt of the current `failing_streak` was made.
	// `null` when `failing_streak` is `0`.
	FailingSince time.Time `json:"failing_since"`

	// When the destination last answered a delivery with an HTTP status under 400,
	// within the last 30 days. `null` if it has not in that window.
	LastSuccessAt time.Time `json:"last_success_at"`

	// Environment of the application that owns the destination.
	Environment WebhooksDestinationsListResponseEnvironment `json:"environment"`

	// One entry per UTC day of the last 30 days, oldest first, including days with
	// no deliveries. Counts every attempt, retries included.
	DailyPoints []WebhooksDestinationsListResponseDailyPoints `json:"daily_points"`

	// Last four characters of the destination's current signing secret, so you can
	// tell secrets apart. Not enough to verify a signature.
	SecretLast4 string `json:"secret_last4"`

	// Email of the Business Console member who created the destination. `null` for
	// a destination created with an API key.
	CreatedByEmail string `json:"created_by_email"`

	// Name of the Business Console member who created the destination. `null` for a
	// destination created with an API key.
	CreatedByName string    `json:"created_by_name"`
	CreatedAt     time.Time `json:"created_at"`
	UpdatedAt     time.Time `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WebhooksDestinationsListResponse is a response object.

func (*WebhooksDestinationsListResponse) UnmarshalJSON

func (r *WebhooksDestinationsListResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WebhooksDestinationsListResponse leniently.

type WebhooksDestinationsListResponseDailyPoints

type WebhooksDestinationsListResponseDailyPoints struct {
	// The UTC day.
	Date string `json:"date"`

	// Delivery attempts made that day.
	TotalDeliveries int64 `json:"total_deliveries"`

	// Attempts made that day that were answered with HTTP 400 or above, or not
	// answered at all.
	FailedDeliveries int64 `json:"failed_deliveries"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WebhooksDestinationsListResponseDailyPoints is a response object.

func (*WebhooksDestinationsListResponseDailyPoints) UnmarshalJSON

func (r *WebhooksDestinationsListResponseDailyPoints) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WebhooksDestinationsListResponseDailyPoints leniently.

type WebhooksDestinationsListResponseEnvironment

type WebhooksDestinationsListResponseEnvironment string

WebhooksDestinationsListResponseEnvironment: Environment of the application that owns the destination.

WebhooksDestinationsListResponseEnvironment is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksDestinationsListResponseEnvironmentLive    WebhooksDestinationsListResponseEnvironment = "live"
	WebhooksDestinationsListResponseEnvironmentSandbox WebhooksDestinationsListResponseEnvironment = "sandbox"
)

Known values of WebhooksDestinationsListResponseEnvironment.

type WebhooksDestinationsListResponseHealthStatus

type WebhooksDestinationsListResponseHealthStatus string

WebhooksDestinationsListResponseHealthStatus: Delivery health. `failing`: 3 or more consecutive events failed their first delivery attempt since the destination last answered successfully (see `failing_streak`). `degraded`: not failing, but a delivery attempt failed in the last 24 hours and no later attempt has delivered that event; a retry or resend that delivers it clears this. `healthy`: neither. Independent of `enabled`. A failed attempt is one answered with HTTP 400 or above, or not answered at all.

WebhooksDestinationsListResponseHealthStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksDestinationsListResponseHealthStatusHealthy  WebhooksDestinationsListResponseHealthStatus = "healthy"
	WebhooksDestinationsListResponseHealthStatusDegraded WebhooksDestinationsListResponseHealthStatus = "degraded"
	WebhooksDestinationsListResponseHealthStatusFailing  WebhooksDestinationsListResponseHealthStatus = "failing"
)

Known values of WebhooksDestinationsListResponseHealthStatus.

type WebhooksDestinationsListResponseWebhookVersion

type WebhooksDestinationsListResponseWebhookVersion string

WebhooksDestinationsListResponseWebhookVersion: Payload schema version sent to this destination. `v3` is the current/recommended format.

WebhooksDestinationsListResponseWebhookVersion is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksDestinationsListResponseWebhookVersionV1 WebhooksDestinationsListResponseWebhookVersion = "v1"
	WebhooksDestinationsListResponseWebhookVersionV2 WebhooksDestinationsListResponseWebhookVersion = "v2"
	WebhooksDestinationsListResponseWebhookVersionV3 WebhooksDestinationsListResponseWebhookVersion = "v3"
)

Known values of WebhooksDestinationsListResponseWebhookVersion.

type WebhooksDestinationsRetrieveAnalyticsParams

type WebhooksDestinationsRetrieveAnalyticsParams struct {
	// First UTC day to include, as `YYYY-MM-DD` (inclusive). Omit to start from the
	// oldest delivery available. `dateFrom` is accepted as an alias.
	DateFrom Opt[string] `json:"-" query:"date_from"`

	// Last UTC day to include, as `YYYY-MM-DD` (inclusive). Must not be earlier
	// than `date_from`. `dateTo` is accepted as an alias.
	DateTo Opt[string] `json:"-" query:"date_to"`
}

WebhooksDestinationsRetrieveAnalyticsParams holds the parameters of Client.Webhooks.Destinations.RetrieveAnalytics.

func (WebhooksDestinationsRetrieveAnalyticsParams) MarshalJSON

MarshalJSON encodes the fields that are set.

type WebhooksDestinationsRetrieveAnalyticsResponse

type WebhooksDestinationsRetrieveAnalyticsResponse struct {
	// Totals over the requested range.
	Summary WebhooksDestinationsRetrieveAnalyticsResponseSummary `json:"summary"`

	// One entry per UTC day that had deliveries, oldest first. Days without
	// deliveries are omitted, so fill the gaps with zeros when you chart them.
	Points []WebhooksDestinationsRetrieveAnalyticsResponsePoints `json:"points"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WebhooksDestinationsRetrieveAnalyticsResponse is a response object.

func (*WebhooksDestinationsRetrieveAnalyticsResponse) UnmarshalJSON

func (r *WebhooksDestinationsRetrieveAnalyticsResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WebhooksDestinationsRetrieveAnalyticsResponse leniently.

type WebhooksDestinationsRetrieveAnalyticsResponsePoints

type WebhooksDestinationsRetrieveAnalyticsResponsePoints struct {
	// UTC day, `YYYY-MM-DD`.
	Date string `json:"date"`

	// Delivery attempts, including queued ones.
	TotalDeliveries int64 `json:"total_deliveries"`

	// Attempts whose recorded HTTP status is 400 or above.
	FailedDeliveries int64 `json:"failed_deliveries"`

	// Fastest attempt in milliseconds, or `null` when no attempt has a recorded
	// time.
	MinResponseTimeMs int64 `json:"min_response_time_ms"`

	// Mean attempt time in milliseconds, rounded, or `null` when no attempt has a
	// recorded time.
	AvgResponseTimeMs int64 `json:"avg_response_time_ms"`

	// Slowest attempt in milliseconds, or `null` when no attempt has a recorded
	// time.
	MaxResponseTimeMs int64 `json:"max_response_time_ms"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WebhooksDestinationsRetrieveAnalyticsResponsePoints is a response object.

func (*WebhooksDestinationsRetrieveAnalyticsResponsePoints) UnmarshalJSON

UnmarshalJSON decodes WebhooksDestinationsRetrieveAnalyticsResponsePoints leniently.

type WebhooksDestinationsRetrieveAnalyticsResponseSummary

type WebhooksDestinationsRetrieveAnalyticsResponseSummary struct {
	// Delivery attempts, including queued ones.
	TotalDeliveries int64 `json:"total_deliveries"`

	// Attempts whose recorded HTTP status is 400 or above.
	FailedDeliveries int64 `json:"failed_deliveries"`

	// Fastest attempt in milliseconds, or `null` when no attempt has a recorded
	// time.
	MinResponseTimeMs int64 `json:"min_response_time_ms"`

	// Mean attempt time in milliseconds, rounded, or `null` when no attempt has a
	// recorded time.
	AvgResponseTimeMs int64 `json:"avg_response_time_ms"`

	// Slowest attempt in milliseconds, or `null` when no attempt has a recorded
	// time.
	MaxResponseTimeMs int64 `json:"max_response_time_ms"`

	// `failed_deliveries` / `total_deliveries` x 100, rounded to a whole number.
	// `0` when there are no deliveries.
	ErrorRatePercentage int64 `json:"error_rate_percentage"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WebhooksDestinationsRetrieveAnalyticsResponseSummary: Totals over the requested range.

func (*WebhooksDestinationsRetrieveAnalyticsResponseSummary) UnmarshalJSON

UnmarshalJSON decodes WebhooksDestinationsRetrieveAnalyticsResponseSummary leniently.

type WebhooksDestinationsRetrieveResponse

type WebhooksDestinationsRetrieveResponse struct {
	UUID           string                                             `json:"uuid"`
	Label          string                                             `json:"label"`
	URL            string                                             `json:"url"`
	Enabled        bool                                               `json:"enabled"`
	WebhookVersion WebhooksDestinationsRetrieveResponseWebhookVersion `json:"webhook_version"`

	// HMAC signing secret (43-character URL-safe token). Always returned in full to
	// API-key callers; Console users need `read:webhooks`, otherwise an empty
	// string.
	SecretSharedKey string `json:"secret_shared_key"`

	// Last four characters of the destination's current signing secret, so you can
	// tell secrets apart. Not enough to verify a signature.
	SecretLast4 string `json:"secret_last4"`

	// Set for 24 hours after the destination's signing secret is rotated in the
	// Business Console. Until this time, every delivery to the destination also
	// carries `X-Signature-Previous`, `X-Signature-V2-Previous` and
	// `X-Signature-Simple-Previous`, made with the replaced secret (see [Signature
	// verification](/integration/webhooks#signature-verification)). `null` when no
	// rotation happened in the last 24 hours.
	PreviousSecretExpiresAt time.Time      `json:"previous_secret_expires_at"`
	SubscribedEvents        []WebhookEvent `json:"subscribed_events"`

	// Email of the Business Console member who created the destination. `null` for
	// a destination created with an API key.
	CreatedByEmail string `json:"created_by_email"`

	// Name of the Business Console member who created the destination. `null` for a
	// destination created with an API key.
	CreatedByName string    `json:"created_by_name"`
	CreatedAt     time.Time `json:"created_at"`
	UpdatedAt     time.Time `json:"updated_at"`

	// Delivery health. `failing`: 3 or more consecutive events failed their first
	// delivery attempt since the destination last answered successfully (see
	// `failing_streak`). `degraded`: not failing, but a delivery attempt failed in
	// the last 24 hours and no later attempt has delivered that event; a retry or
	// resend that delivers it clears this. `healthy`: neither. Independent of
	// `enabled`. A failed attempt is one answered with HTTP 400 or above, or not
	// answered at all.
	HealthStatus WebhooksDestinationsRetrieveResponseHealthStatus `json:"health_status"`

	// How many consecutive events failed their first delivery attempt since the
	// destination last answered successfully, within the last 30 days. Retries are
	// not counted, and any successful attempt, including a retry or a resend, ends
	// the streak. `0` when no event has failed since the last success.
	FailingStreak int64 `json:"failing_streak"`

	// When the first failed attempt of the current `failing_streak` was made.
	// `null` when `failing_streak` is `0`.
	FailingSince time.Time `json:"failing_since"`

	// When the destination last answered a delivery with an HTTP status under 400,
	// within the last 30 days. `null` if it has not in that window.
	LastSuccessAt time.Time `json:"last_success_at"`

	// Environment of the application that owns the destination.
	Environment WebhooksDestinationsRetrieveResponseEnvironment `json:"environment"`

	// Delivery metrics for the last `metrics_window_days` (30) days.
	// `last_delivery_at` is the most recent attempt, whenever it was made.
	Summary WebhooksDestinationsRetrieveResponseSummary `json:"summary"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WebhooksDestinationsRetrieveResponse is a response object.

func (*WebhooksDestinationsRetrieveResponse) UnmarshalJSON

func (r *WebhooksDestinationsRetrieveResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WebhooksDestinationsRetrieveResponse leniently.

type WebhooksDestinationsRetrieveResponseEnvironment

type WebhooksDestinationsRetrieveResponseEnvironment string

WebhooksDestinationsRetrieveResponseEnvironment: Environment of the application that owns the destination.

WebhooksDestinationsRetrieveResponseEnvironment is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksDestinationsRetrieveResponseEnvironmentLive    WebhooksDestinationsRetrieveResponseEnvironment = "live"
	WebhooksDestinationsRetrieveResponseEnvironmentSandbox WebhooksDestinationsRetrieveResponseEnvironment = "sandbox"
)

Known values of WebhooksDestinationsRetrieveResponseEnvironment.

type WebhooksDestinationsRetrieveResponseHealthStatus

type WebhooksDestinationsRetrieveResponseHealthStatus string

WebhooksDestinationsRetrieveResponseHealthStatus: Delivery health. `failing`: 3 or more consecutive events failed their first delivery attempt since the destination last answered successfully (see `failing_streak`). `degraded`: not failing, but a delivery attempt failed in the last 24 hours and no later attempt has delivered that event; a retry or resend that delivers it clears this. `healthy`: neither. Independent of `enabled`. A failed attempt is one answered with HTTP 400 or above, or not answered at all.

WebhooksDestinationsRetrieveResponseHealthStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksDestinationsRetrieveResponseHealthStatusHealthy  WebhooksDestinationsRetrieveResponseHealthStatus = "healthy"
	WebhooksDestinationsRetrieveResponseHealthStatusDegraded WebhooksDestinationsRetrieveResponseHealthStatus = "degraded"
	WebhooksDestinationsRetrieveResponseHealthStatusFailing  WebhooksDestinationsRetrieveResponseHealthStatus = "failing"
)

Known values of WebhooksDestinationsRetrieveResponseHealthStatus.

type WebhooksDestinationsRetrieveResponseSummary

type WebhooksDestinationsRetrieveResponseSummary struct {
	TotalDeliveries     int64     `json:"total_deliveries"`
	FailedDeliveries    int64     `json:"failed_deliveries"`
	ErrorRatePercentage int64     `json:"error_rate_percentage"`
	MinResponseTimeMs   int64     `json:"min_response_time_ms"`
	AvgResponseTimeMs   int64     `json:"avg_response_time_ms"`
	MaxResponseTimeMs   int64     `json:"max_response_time_ms"`
	LastDeliveryAt      time.Time `json:"last_delivery_at"`

	// Length in days of the window the other summary metrics cover. Always `30`.
	MetricsWindowDays int64 `json:"metrics_window_days"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WebhooksDestinationsRetrieveResponseSummary: Delivery metrics for the last `metrics_window_days` (30) days. `last_delivery_at` is the most recent attempt, whenever it was made.

func (*WebhooksDestinationsRetrieveResponseSummary) UnmarshalJSON

func (r *WebhooksDestinationsRetrieveResponseSummary) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WebhooksDestinationsRetrieveResponseSummary leniently.

type WebhooksDestinationsRetrieveResponseWebhookVersion

type WebhooksDestinationsRetrieveResponseWebhookVersion string

WebhooksDestinationsRetrieveResponseWebhookVersion is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksDestinationsRetrieveResponseWebhookVersionV1 WebhooksDestinationsRetrieveResponseWebhookVersion = "v1"
	WebhooksDestinationsRetrieveResponseWebhookVersionV2 WebhooksDestinationsRetrieveResponseWebhookVersion = "v2"
	WebhooksDestinationsRetrieveResponseWebhookVersionV3 WebhooksDestinationsRetrieveResponseWebhookVersion = "v3"
)

Known values of WebhooksDestinationsRetrieveResponseWebhookVersion.

type WebhooksDestinationsService

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

WebhooksDestinationsService holds the webhooks destinations operations. Use it through Client.Webhooks.Destinations.

func (*WebhooksDestinationsService) Create

Create: Create webhook destination.

Create a webhook destination. The response includes the auto-generated `secret_shared_key` HMAC signing secret (also readable later via `GET /v3/webhook/destinations/{destination_uuid}/`). Always send `subscribed_events` with at least one event (no wildcards): an explicit empty list is rejected with 400, and omitting the field creates a destination subscribed to nothing, which never receives a webhook. The `(application, url)` pair must be unique among the application's destinations.

POST /v3/webhook/destinations/

func (*WebhooksDestinationsService) Delete

func (r *WebhooksDestinationsService) Delete(ctx context.Context, destinationUUID string, opts ...option.RequestOption) error

Delete: Delete webhook destination.

Permanently delete a webhook destination, its signing secret and its entire delivery log. This cannot be undone. No new webhook is sent to the destination's URL; other destinations subscribed to the same events keep receiving them. Afterwards the destination no longer appears in `GET /v3/webhook/destinations/`, and every route under `/v3/webhook/destinations/{destination_uuid}/`, including its deliveries, a delivery's detail and its resend, answers 404. The application's legacy `webhook_url` is set to the URL of the oldest remaining enabled destination, or cleared when no enabled destination is left. Calling DELETE again returns 404.

DELETE /v3/webhook/destinations/{destination_uuid}/

func (*WebhooksDestinationsService) List

List: List webhook destinations.

List all webhook destinations (unpaginated array, oldest first). Each item carries the destination's configuration, its delivery metrics for the last 30 days (`metrics_window_days`) with one `daily_points` entry per day, and its health (`health_status`, `failing_streak`, `failing_since`, `last_success_at`). The list has no `summary` object and never includes the signing secret: each item shows only `secret_last4`. Fetch a single destination (`GET /v3/webhook/destinations/{destination_uuid}/`) to read `secret_shared_key`.

GET /v3/webhook/destinations/

func (*WebhooksDestinationsService) ListDeliveries

ListDeliveries: List webhook destination deliveries.

Page through every delivery attempt to one webhook destination, newest first. The first send of each event, each automatic [retry](https://docs.didit.me/integration/webhooks#retry-policy) and each resend are separate entries. Entries carry the HTTP status and response time but not the payload: fetch one delivery to read its headers and body. `count` is exact up to 100 and reads 100 above that, so follow `next` until it is `null`. Delivery records are available for about 30 days. A scoped API key needs `webhooks: read` and `decisions: read`; a key limited to some workflows or to approved sessions cannot use this endpoint.

It returns one page; ListDeliveriesAutoPaging iterates over every item of every page.

GET /v3/webhook/destinations/{destination_uuid}/deliveries/

func (*WebhooksDestinationsService) ListDeliveriesAutoPaging

ListDeliveriesAutoPaging iterates over every item of every page of ListDeliveries, fetching pages as needed.

func (*WebhooksDestinationsService) ResendDelivery

func (r *WebhooksDestinationsService) ResendDelivery(ctx context.Context, destinationUUID string, deliveryUUID string, opts ...option.RequestOption) (*WebhookDestinationDeliveryDetail, error)

ResendDelivery: Resend webhook destination delivery.

Send a past delivery again, for example after your endpoint was down. Didit takes the stored payload, sets a fresh `timestamp`, signs it again with the destination's current `secret_shared_key` (`X-Signature`, `X-Signature-V2`, `X-Signature-Simple` and `X-Timestamp`) and posts it to the delivery's `request_url`, even if the destination's URL has changed since or the destination is disabled. `event_id` and the rest of the payload are unchanged, so deduplicate on `event_id`. The call waits up to 5 seconds for your endpoint and returns the new delivery with `200` whatever your endpoint answered: read `response_status`. A resend is not retried automatically, every call sends again and creates a new delivery, and the request has no body. A scoped API key needs `webhooks: write` and `decisions: read`; a key limited to some workflows or to approved sessions cannot use this endpoint.

POST /v3/webhook/destinations/{destination_uuid}/deliveries/{delivery_uuid}/resend/

func (*WebhooksDestinationsService) Retrieve

Retrieve: Get webhook destination.

Retrieve one webhook destination with its `secret_shared_key` signing secret, its health (`health_status`, `failing_streak`, `failing_since`, `last_success_at`) and a delivery `summary` for the last 30 days. API-key callers always receive the secret in full; Console users without `read:webhooks` see an empty string.

GET /v3/webhook/destinations/{destination_uuid}/

func (*WebhooksDestinationsService) RetrieveAnalytics

RetrieveAnalytics: Get webhook destination analytics.

Delivery totals, failure rate and response times for one webhook destination, over the whole range (`summary`) and per UTC day (`points`). Every attempt counts as a delivery: the first send of an event, each automatic [retry](https://docs.didit.me/integration/webhooks#retry-policy) and each resend. A delivery is failed when its recorded HTTP status is 400 or above, so timeouts (recorded as `504`) and connection failures (`503`) count as failed; a delivery still queued counts in `total_deliveries` only. Delivery records are available for about 30 days. A scoped API key needs `webhooks: read`.

GET /v3/webhook/destinations/{destination_uuid}/analytics/

func (*WebhooksDestinationsService) RetrieveDelivery

func (r *WebhooksDestinationsService) RetrieveDelivery(ctx context.Context, destinationUUID string, deliveryUUID string, opts ...option.RequestOption) (*WebhookDestinationDeliveryDetail, error)

RetrieveDelivery: Get webhook destination delivery.

Retrieve one delivery attempt to a webhook destination with the exact request headers and JSON body Didit sent, the HTTP status your endpoint returned and the response time. `request_header` and `request_body` are JSON text: parse them to read the signature headers and the payload, for example to check your [signature verification](https://docs.didit.me/integration/webhooks#signature-verification) against the destination's `secret_shared_key`. A delivery never contains the signing secret, and Didit does not record your endpoint's response body. A scoped API key needs `webhooks: read` and `decisions: read`; a key limited to some workflows or to approved sessions cannot use this endpoint.

GET /v3/webhook/destinations/{destination_uuid}/deliveries/{delivery_uuid}/

func (*WebhooksDestinationsService) Update

Update: Update webhook destination.

Update a webhook destination. **`subscribed_events` is REPLACED wholesale, not merged**: fetch first, append, resend. Secret is not rotated. A `uuid` in the body is ignored: the path names the destination.

PATCH /v3/webhook/destinations/{destination_uuid}/

type WebhooksDestinationsUpdateParams

type WebhooksDestinationsUpdateParams struct {
	// New human-readable name.
	Label Opt[string] `json:"label"`

	// New target URL. Must be unique within the application.
	URL Opt[string] `json:"url"`

	// Set to `false` to pause deliveries to this destination without deleting it.
	Enabled Opt[bool] `json:"enabled"`

	// New payload schema version for future deliveries.
	WebhookVersion   Opt[WebhooksDestinationsUpdateParamsWebhookVersion] `json:"webhook_version"`
	SubscribedEvents Opt[[]WebhookEvent]                                 `json:"subscribed_events"`
}

WebhooksDestinationsUpdateParams holds the parameters of Client.Webhooks.Destinations.Update.

func (WebhooksDestinationsUpdateParams) MarshalJSON

func (r WebhooksDestinationsUpdateParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type WebhooksDestinationsUpdateParamsWebhookVersion

type WebhooksDestinationsUpdateParamsWebhookVersion string

WebhooksDestinationsUpdateParamsWebhookVersion: New payload schema version for future deliveries.

WebhooksDestinationsUpdateParamsWebhookVersion is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksDestinationsUpdateParamsWebhookVersionV1 WebhooksDestinationsUpdateParamsWebhookVersion = "v1"
	WebhooksDestinationsUpdateParamsWebhookVersionV2 WebhooksDestinationsUpdateParamsWebhookVersion = "v2"
	WebhooksDestinationsUpdateParamsWebhookVersionV3 WebhooksDestinationsUpdateParamsWebhookVersion = "v3"
)

Known values of WebhooksDestinationsUpdateParamsWebhookVersion.

type WebhooksDestinationsUpdateResponse

type WebhooksDestinationsUpdateResponse struct {
	UUID            string                                           `json:"uuid"`
	Label           string                                           `json:"label"`
	URL             string                                           `json:"url"`
	Enabled         bool                                             `json:"enabled"`
	WebhookVersion  WebhooksDestinationsUpdateResponseWebhookVersion `json:"webhook_version"`
	SecretSharedKey string                                           `json:"secret_shared_key"`

	// Last four characters of the destination's current signing secret, so you can
	// tell secrets apart. Not enough to verify a signature.
	SecretLast4 string `json:"secret_last4"`

	// Set for 24 hours after the destination's signing secret is rotated in the
	// Business Console. Until this time, every delivery to the destination also
	// carries `X-Signature-Previous`, `X-Signature-V2-Previous` and
	// `X-Signature-Simple-Previous`, made with the replaced secret (see [Signature
	// verification](/integration/webhooks#signature-verification)). `null` when no
	// rotation happened in the last 24 hours.
	PreviousSecretExpiresAt time.Time      `json:"previous_secret_expires_at"`
	SubscribedEvents        []WebhookEvent `json:"subscribed_events"`

	// Email of the Business Console member who created the destination. `null` for
	// a destination created with an API key.
	CreatedByEmail string `json:"created_by_email"`

	// Name of the Business Console member who created the destination. `null` for a
	// destination created with an API key.
	CreatedByName string    `json:"created_by_name"`
	CreatedAt     time.Time `json:"created_at"`
	UpdatedAt     time.Time `json:"updated_at"`

	// Delivery health. `failing`: 3 or more consecutive events failed their first
	// delivery attempt since the destination last answered successfully (see
	// `failing_streak`). `degraded`: not failing, but a delivery attempt failed in
	// the last 24 hours and no later attempt has delivered that event; a retry or
	// resend that delivers it clears this. `healthy`: neither. Independent of
	// `enabled`. A failed attempt is one answered with HTTP 400 or above, or not
	// answered at all.
	HealthStatus WebhooksDestinationsUpdateResponseHealthStatus `json:"health_status"`

	// How many consecutive events failed their first delivery attempt since the
	// destination last answered successfully, within the last 30 days. Retries are
	// not counted, and any successful attempt, including a retry or a resend, ends
	// the streak. `0` when no event has failed since the last success.
	FailingStreak int64 `json:"failing_streak"`

	// When the first failed attempt of the current `failing_streak` was made.
	// `null` when `failing_streak` is `0`.
	FailingSince time.Time `json:"failing_since"`

	// When the destination last answered a delivery with an HTTP status under 400,
	// within the last 30 days. `null` if it has not in that window.
	LastSuccessAt time.Time `json:"last_success_at"`

	// Environment of the application that owns the destination.
	Environment WebhooksDestinationsUpdateResponseEnvironment `json:"environment"`

	// Delivery metrics for the last `metrics_window_days` (30) days.
	// `last_delivery_at` is the most recent attempt, whenever it was made.
	Summary WebhooksDestinationsUpdateResponseSummary `json:"summary"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WebhooksDestinationsUpdateResponse is a response object.

func (*WebhooksDestinationsUpdateResponse) UnmarshalJSON

func (r *WebhooksDestinationsUpdateResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WebhooksDestinationsUpdateResponse leniently.

type WebhooksDestinationsUpdateResponseEnvironment

type WebhooksDestinationsUpdateResponseEnvironment string

WebhooksDestinationsUpdateResponseEnvironment: Environment of the application that owns the destination.

WebhooksDestinationsUpdateResponseEnvironment is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksDestinationsUpdateResponseEnvironmentLive    WebhooksDestinationsUpdateResponseEnvironment = "live"
	WebhooksDestinationsUpdateResponseEnvironmentSandbox WebhooksDestinationsUpdateResponseEnvironment = "sandbox"
)

Known values of WebhooksDestinationsUpdateResponseEnvironment.

type WebhooksDestinationsUpdateResponseHealthStatus

type WebhooksDestinationsUpdateResponseHealthStatus string

WebhooksDestinationsUpdateResponseHealthStatus: Delivery health. `failing`: 3 or more consecutive events failed their first delivery attempt since the destination last answered successfully (see `failing_streak`). `degraded`: not failing, but a delivery attempt failed in the last 24 hours and no later attempt has delivered that event; a retry or resend that delivers it clears this. `healthy`: neither. Independent of `enabled`. A failed attempt is one answered with HTTP 400 or above, or not answered at all.

WebhooksDestinationsUpdateResponseHealthStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksDestinationsUpdateResponseHealthStatusHealthy  WebhooksDestinationsUpdateResponseHealthStatus = "healthy"
	WebhooksDestinationsUpdateResponseHealthStatusDegraded WebhooksDestinationsUpdateResponseHealthStatus = "degraded"
	WebhooksDestinationsUpdateResponseHealthStatusFailing  WebhooksDestinationsUpdateResponseHealthStatus = "failing"
)

Known values of WebhooksDestinationsUpdateResponseHealthStatus.

type WebhooksDestinationsUpdateResponseSummary

type WebhooksDestinationsUpdateResponseSummary struct {
	TotalDeliveries     int64     `json:"total_deliveries"`
	FailedDeliveries    int64     `json:"failed_deliveries"`
	ErrorRatePercentage int64     `json:"error_rate_percentage"`
	MinResponseTimeMs   int64     `json:"min_response_time_ms"`
	AvgResponseTimeMs   int64     `json:"avg_response_time_ms"`
	MaxResponseTimeMs   int64     `json:"max_response_time_ms"`
	LastDeliveryAt      time.Time `json:"last_delivery_at"`

	// Length in days of the window the other summary metrics cover. Always `30`.
	MetricsWindowDays int64 `json:"metrics_window_days"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WebhooksDestinationsUpdateResponseSummary: Delivery metrics for the last `metrics_window_days` (30) days. `last_delivery_at` is the most recent attempt, whenever it was made.

func (*WebhooksDestinationsUpdateResponseSummary) UnmarshalJSON

func (r *WebhooksDestinationsUpdateResponseSummary) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WebhooksDestinationsUpdateResponseSummary leniently.

type WebhooksDestinationsUpdateResponseWebhookVersion

type WebhooksDestinationsUpdateResponseWebhookVersion string

WebhooksDestinationsUpdateResponseWebhookVersion is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksDestinationsUpdateResponseWebhookVersionV1 WebhooksDestinationsUpdateResponseWebhookVersion = "v1"
	WebhooksDestinationsUpdateResponseWebhookVersionV2 WebhooksDestinationsUpdateResponseWebhookVersion = "v2"
	WebhooksDestinationsUpdateResponseWebhookVersionV3 WebhooksDestinationsUpdateResponseWebhookVersion = "v3"
)

Known values of WebhooksDestinationsUpdateResponseWebhookVersion.

type WebhooksService

type WebhooksService struct {
	Destinations *WebhooksDestinationsService
	// contains filtered or unexported fields
}

WebhooksService holds the webhooks operations. Use it through Client.Webhooks.

func (*WebhooksService) RetrieveConfig

func (r *WebhooksService) RetrieveConfig(ctx context.Context, opts ...option.RequestOption) (*WebhookConfig, error)

RetrieveConfig: Get webhook configuration.

Return the application's webhook settings in one call: every [webhook destination](https://docs.didit.me/management-api/webhook/list-destinations) with its signing secret, the event types a destination can subscribe to, the application-level (legacy) webhook URL, version and secret, the data and biometric-template retention policy, and the Digital ID wallet return hosts. Didit delivers webhooks to destinations, each signed with its own `secret_shared_key`; the top-level `webhook_url`, `webhook_version` and `secret_shared_key` are used only while no destination is enabled, and then only for `status.updated` and `data.updated`. The response contains signing secrets, so keep it out of logs and client-side code. A scoped API key needs `webhooks: read`.

GET /v3/webhook/

func (*WebhooksService) UpdateConfig

UpdateConfig: Update webhook configuration.

Partially update application-level settings: the legacy webhook URL, version and secret, the data and biometric-template retention policy, and the Digital ID wallet return hosts. Send only the fields to change; the response is the full configuration, the same shape as `GET /v3/webhook/`. Destinations are not managed here: create, update and delete them with the `/v3/webhook/destinations/` endpoints, and do not send an `endpoints` field to this endpoint. A `data_retention_months` change also applies to existing sessions, and sessions it deletes cannot be restored; read [Data retention](https://docs.didit.me/console/data-retention) first. A scoped API key needs `webhooks: write`.

PATCH /v3/webhook/

type WebhooksUpdateConfigParams

type WebhooksUpdateConfigParams struct {
	// Legacy application-level webhook URL. Didit uses it only while the
	// application has no enabled destination, and then only for `status.updated`
	// and `data.updated`. It does not create a destination, and the next create,
	// update or delete of a destination replaces it. To receive webhooks, create a
	// destination with `POST /v3/webhook/destinations/` instead.
	WebhookURL Opt[string] `json:"webhook_url"`

	// Payload version of the legacy `webhook_url`.
	WebhookVersion Opt[WebhooksUpdateConfigParamsWebhookVersion] `json:"webhook_version"`

	// `true` replaces the application-level `secret_shared_key` with a new random
	// value at once; the new value is in the response. Destination secrets are not
	// changed. Every call with `true` generates a new secret, so it is not
	// idempotent.
	RotateSecretKey Opt[bool] `json:"rotate_secret_key"`

	// Legacy application setting. The verification flow does not read it.
	CaptureMethod Opt[WebhooksUpdateConfigParamsCaptureMethod] `json:"capture_method"`

	// Automatic deletion window in months (a month counts as 30 days), or `null`
	// for no automatic deletion. A change applies to existing sessions too: every
	// user verification session older than the new window is deleted automatically,
	// and that deletion is irreversible.
	DataRetentionMonths Opt[int64] `json:"data_retention_months"`

	// What happens to a session's face embedding when the session is deleted.
	// `retain_until_user_deleted` needs `face_retention_days` in the same request
	// or already set. A change applies to session deletions from then on; it
	// creates or purges no existing biometric template.
	FaceRetentionPolicy Opt[WebhooksUpdateConfigParamsFaceRetentionPolicy] `json:"face_retention_policy"`

	// Retention period, in days, of biometric templates under
	// `retain_until_user_deleted`.
	FaceRetentionDays Opt[int64] `json:"face_retention_days"`

	// Replaces the whole list of Digital ID wallet return hosts. Bare hostnames
	// only, such as `shop.example.com`: no scheme, port, path or wildcard. Values
	// are lowercased and duplicates are dropped. Send `[]` to clear the list.
	AllowedReturnHosts Opt[[]string] `json:"allowed_return_hosts"`
}

WebhooksUpdateConfigParams holds the parameters of Client.Webhooks.UpdateConfig.

func (WebhooksUpdateConfigParams) MarshalJSON

func (r WebhooksUpdateConfigParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type WebhooksUpdateConfigParamsCaptureMethod

type WebhooksUpdateConfigParamsCaptureMethod string

WebhooksUpdateConfigParamsCaptureMethod: Legacy application setting. The verification flow does not read it.

WebhooksUpdateConfigParamsCaptureMethod is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksUpdateConfigParamsCaptureMethodMobile           WebhooksUpdateConfigParamsCaptureMethod = "MOBILE"
	WebhooksUpdateConfigParamsCaptureMethodMobileAndDesktop WebhooksUpdateConfigParamsCaptureMethod = "MOBILE_AND_DESKTOP"
)

Known values of WebhooksUpdateConfigParamsCaptureMethod.

type WebhooksUpdateConfigParamsFaceRetentionPolicy

type WebhooksUpdateConfigParamsFaceRetentionPolicy string

WebhooksUpdateConfigParamsFaceRetentionPolicy: What happens to a session's face embedding when the session is deleted. `retain_until_user_deleted` needs `face_retention_days` in the same request or already set. A change applies to session deletions from then on; it creates or purges no existing biometric template.

WebhooksUpdateConfigParamsFaceRetentionPolicy is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksUpdateConfigParamsFaceRetentionPolicyDeleteWithSession      WebhooksUpdateConfigParamsFaceRetentionPolicy = "delete_with_session"
	WebhooksUpdateConfigParamsFaceRetentionPolicyRetainUntilUserDeleted WebhooksUpdateConfigParamsFaceRetentionPolicy = "retain_until_user_deleted"
)

Known values of WebhooksUpdateConfigParamsFaceRetentionPolicy.

type WebhooksUpdateConfigParamsWebhookVersion

type WebhooksUpdateConfigParamsWebhookVersion string

WebhooksUpdateConfigParamsWebhookVersion: Payload version of the legacy `webhook_url`.

WebhooksUpdateConfigParamsWebhookVersion is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WebhooksUpdateConfigParamsWebhookVersionV1 WebhooksUpdateConfigParamsWebhookVersion = "v1"
	WebhooksUpdateConfigParamsWebhookVersionV2 WebhooksUpdateConfigParamsWebhookVersion = "v2"
	WebhooksUpdateConfigParamsWebhookVersionV3 WebhooksUpdateConfigParamsWebhookVersion = "v3"
)

Known values of WebhooksUpdateConfigParamsWebhookVersion.

type WorkflowDetail

type WorkflowDetail struct {
	// Per-version identifier (`settings_uuid`). Every version of a workflow has its
	// own.
	UUID string `json:"uuid"`

	// Stable identifier shared by every version of the workflow. Sessions created
	// with it use the latest published version.
	WorkflowID string `json:"workflow_id"`

	// Display name of the workflow.
	WorkflowLabel string `json:"workflow_label"`

	// Workflow template. `null` for graph workflows created without a template.
	WorkflowType WorkflowDetailWorkflowType `json:"workflow_type"`

	// Whether this is the application's default workflow.
	IsDefault bool `json:"is_default"`

	// Archived workflows cannot start new sessions.
	IsArchived bool `json:"is_archived"`

	// Version number within the workflow.
	Version int64 `json:"version"`

	// Draft versions are editable; published versions are immutable and used for
	// new sessions.
	Status WorkflowDetailStatus `json:"status"`

	// When this version was published. `null` for drafts.
	PublishedAt time.Time `json:"published_at"`

	// `true` when the workflow has no custom `workflow_graph`.
	IsSimpleWorkflow bool `json:"is_simple_workflow"`

	// `true` only for `draft` versions.
	IsEditable bool `json:"is_editable"`

	// Public URL that starts a session with this workflow.
	WorkflowURL string `json:"workflow_url"`

	// Graph structure of the workflow (nodes and edges). `null` for simple
	// workflows.
	WorkflowGraph map[string]any `json:"workflow_graph"`

	// Enabled features joined with `" + "`, for example `"OCR + LIVENESS"`.
	Features string `json:"features"`

	// Price per session; for graph workflows the most expensive path.
	TotalPrice float64 `json:"total_price"`

	// Price of the cheapest path through the workflow.
	MinPrice float64 `json:"min_price"`

	// Price of the most expensive path through the workflow.
	MaxPrice float64 `json:"max_price"`

	// Organization-specific add-on prices, or `null` when none are set.
	SpecialAddOnPrices map[string]any `json:"special_add_on_prices"`

	// Retries allowed after a declined verification.
	MaxRetryAttempts int64 `json:"max_retry_attempts"`

	// Days during which the retries are allowed.
	RetryWindowDays int64 `json:"retry_window_days"`

	// Seconds before an unfinished session expires.
	SessionExpirationTime int64 `json:"session_expiration_time"`

	// The questionnaire attached to the workflow, or `null`.
	Questionnaire map[string]any `json:"questionnaire"`

	// Per-role verification settings for KYB key people.
	KYBRoleSettings []map[string]any `json:"kyb_role_settings"`
	CreatedAt       time.Time        `json:"created_at"`
	UpdatedAt       time.Time        `json:"updated_at"`

	// Whether a simple KYC or KYB workflow runs Bank verification. It runs after
	// the contact steps and before database validation, AML and IP analysis. Set in
	// the console.
	IsBankVerificationEnabled bool `json:"is_bank_verification_enabled"`

	// Bank verification settings of a simple workflow, with the same keys a
	// `BANK_VERIFICATION` node takes (for example `bank_countries` and
	// `bank_method_order`). Every key is optional and an absent key keeps its
	// default, so `{}` means all defaults. See [Bank verification
	// settings](/management-api/workflows/feature-configs#bank-verification).
	BankVerificationConfig map[string]any `json:"bank_verification_config"`

	// Whether a simple KYC workflow runs Location verification. It runs after the
	// contact steps and before Bank verification. Never on KYB workflows. Set in
	// the console.
	IsGeolocationEnabled bool `json:"is_geolocation_enabled"`

	// Location verification settings of a simple workflow, with the same keys a
	// `GEOLOCATION` node takes (for example `is_geolocation_geofencing_enabled` and
	// `geolocation_max_attempts`). Every key is optional and an absent key keeps
	// its default, so `{}` means all defaults.
	GeolocationConfig map[string]any `json:"geolocation_config"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WorkflowDetail: The fields below are typed; the object also carries every other column of the workflow configuration (feature toggles, thresholds, warning actions, allowed documents, callbacks) as additional properties. Fields that do not apply to the `workflow_type` are `null`.

func (*WorkflowDetail) UnmarshalJSON

func (r *WorkflowDetail) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WorkflowDetail leniently.

type WorkflowDetailStatus

type WorkflowDetailStatus string

WorkflowDetailStatus: Draft versions are editable; published versions are immutable and used for new sessions.

WorkflowDetailStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WorkflowDetailStatusDraft     WorkflowDetailStatus = "draft"
	WorkflowDetailStatusPublished WorkflowDetailStatus = "published"
)

Known values of WorkflowDetailStatus.

type WorkflowDetailWorkflowType

type WorkflowDetailWorkflowType string

WorkflowDetailWorkflowType: Workflow template. `null` for graph workflows created without a template.

WorkflowDetailWorkflowType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WorkflowDetailWorkflowTypeKYC                       WorkflowDetailWorkflowType = "kyc"
	WorkflowDetailWorkflowTypeKYB                       WorkflowDetailWorkflowType = "kyb"
	WorkflowDetailWorkflowTypeAdaptiveAgeVerification   WorkflowDetailWorkflowType = "adaptive_age_verification"
	WorkflowDetailWorkflowTypeBiometricAuthentication   WorkflowDetailWorkflowType = "biometric_authentication"
	WorkflowDetailWorkflowTypeAddressVerification       WorkflowDetailWorkflowType = "address_verification"
	WorkflowDetailWorkflowTypeQuestionnaireVerification WorkflowDetailWorkflowType = "questionnaire_verification"
	WorkflowDetailWorkflowTypeEmailVerification         WorkflowDetailWorkflowType = "email_verification"
	WorkflowDetailWorkflowTypePhoneVerification         WorkflowDetailWorkflowType = "phone_verification"
)

Known values of WorkflowDetailWorkflowType.

type WorkflowListItem

type WorkflowListItem struct {
	// Per-version UUID. Use as `{settings_uuid}` for get/update/delete, and as
	// `workflow_id` when creating sessions.
	UUID string `json:"uuid"`

	// Stable group ID shared by every version of the same workflow. Equals `uuid`
	// for version 1.
	WorkflowID string `json:"workflow_id"`

	// Display name for the workflow.
	WorkflowLabel string `json:"workflow_label"`

	// Base type for simple workflows: `kyc`, `kyb`, `adaptive_age_verification`,
	// `biometric_authentication`, etc. `null` for graph-based workflows without a
	// KYB feature.
	WorkflowType string `json:"workflow_type"`

	// Whether this is the default workflow for new sessions.
	IsDefault  bool `json:"is_default"`
	IsArchived bool `json:"is_archived"`

	// Whether white-label customization applies to sessions created with this
	// workflow.
	IsWhiteLabelEnabled bool `json:"is_white_label_enabled"`

	// Fixed price per verification in USD (JSON number, excludes variable-priced
	// features such as DATABASE_VALIDATION and PHONE_VERIFICATION).
	TotalPrice float64 `json:"total_price"`

	// Cheapest fixed price across workflow-graph paths, in USD.
	MinPrice float64 `json:"min_price"`

	// Most expensive fixed price across workflow-graph paths, in USD.
	MaxPrice float64 `json:"max_price"`

	// Enabled features as a single `" + "`-joined string, e.g. `"OCR + LIVENESS +
	// FACE_MATCH"`. Split on `" + "` to get a list.
	Features string `json:"features"`

	// True when the workflow has no custom workflow graph.
	IsSimpleWorkflow bool `json:"is_simple_workflow"`

	// True when this version is a `draft` (drafts are editable in place; published
	// versions are immutable in the Console).
	IsEditable bool `json:"is_editable"`

	// Public shareable verification URL for this workflow
	// (`https://verify.didit.me/u/<token>`).
	WorkflowURL string `json:"workflow_url"`

	// Maximum retry attempts allowed after a declined verification (0-10).
	MaxRetryAttempts int64 `json:"max_retry_attempts"`

	// Rolling window in days used to count retries (1-365). `null` = all-time
	// limit.
	RetryWindowDays int64 `json:"retry_window_days"`

	// Seconds before an unfinished session expires (3600-2419200).
	SessionExpirationTime int64 `json:"session_expiration_time"`

	// Version number within the `workflow_id` group, starting at 1.
	Version int64 `json:"version"`

	// Version status. New sessions use the latest `published` version of a group.
	Status WorkflowListItemStatus `json:"status"`

	// True when any version in this `workflow_id` group is currently a draft.
	HasDraft bool `json:"has_draft"`

	// Who created this version: `{name, email, type}` where `type` is `user`
	// (Console user, `email` set) or `api_key` (`name` is the client id, `email` is
	// null). `null` when no creator was recorded.
	CreatedBy WorkflowListItemCreatedBy `json:"created_by"`
	UpdatedAt time.Time                 `json:"updated_at"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WorkflowListItem: One workflow version in the list view.

func (*WorkflowListItem) UnmarshalJSON

func (r *WorkflowListItem) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WorkflowListItem leniently.

type WorkflowListItemCreatedBy

type WorkflowListItemCreatedBy struct {
	Name  string                        `json:"name"`
	Email string                        `json:"email"`
	Type  WorkflowListItemCreatedByType `json:"type"`

	// JSON describes the decoded object: raw JSON, present, null and unknown
	// fields.
	JSON ResponseJSON `json:"-"`
}

WorkflowListItemCreatedBy: Who created this version: `{name, email, type}` where `type` is `user` (Console user, `email` set) or `api_key` (`name` is the client id, `email` is null). `null` when no creator was recorded.

func (*WorkflowListItemCreatedBy) UnmarshalJSON

func (r *WorkflowListItemCreatedBy) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes WorkflowListItemCreatedBy leniently.

type WorkflowListItemCreatedByType

type WorkflowListItemCreatedByType string

WorkflowListItemCreatedByType is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WorkflowListItemCreatedByTypeUser   WorkflowListItemCreatedByType = "user"
	WorkflowListItemCreatedByTypeAPIKey WorkflowListItemCreatedByType = "api_key"
)

Known values of WorkflowListItemCreatedByType.

type WorkflowListItemStatus

type WorkflowListItemStatus string

WorkflowListItemStatus: Version status. New sessions use the latest `published` version of a group.

WorkflowListItemStatus is a string with known values below. The set is open: other values may appear and never cause an error.

const (
	WorkflowListItemStatusDraft     WorkflowListItemStatus = "draft"
	WorkflowListItemStatusPublished WorkflowListItemStatus = "published"
)

Known values of WorkflowListItemStatus.

type WorkflowsListParams

type WorkflowsListParams struct {
	// Page size (number of workflows per page).
	Limit Opt[int64] `json:"-" query:"limit"`

	// Number of rows to skip before the first returned workflow.
	Offset Opt[int64] `json:"-" query:"offset"`
}

WorkflowsListParams holds the parameters of Client.Workflows.List.

func (WorkflowsListParams) MarshalJSON

func (r WorkflowsListParams) MarshalJSON() ([]byte, error)

MarshalJSON encodes the fields that are set.

type WorkflowsService

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

WorkflowsService holds the workflows operations. Use it through Client.Workflows.

func (*WorkflowsService) Create

Create: Create workflow.

Create a simple workflow. Send `features` in execution order (ordering rules apply); defaults to `published` v1. The body accepts ONLY the fields listed in `SimpleWorkflowRequest` - any other key (including `workflow_type`) is rejected with a 400. Not idempotent - each call creates a new workflow. Maximum 50 workflows per application.

POST /v3/workflows/

func (*WorkflowsService) Delete

func (r *WorkflowsService) Delete(ctx context.Context, settingsUUID string, opts ...option.RequestOption) error

Delete: Delete workflow.

Permanently delete one workflow version (no undo). Existing sessions keep their verification results but their workflow reference is cleared; other versions in the same `workflow_id` group are not deleted.

DELETE /v3/workflows/{settings_uuid}/

func (*WorkflowsService) List

List: List workflows.

List your workflows, newest first, in a limit/offset pagination envelope (`{count, next, previous, results}`, default page size 50). Each row is one version; `workflow_id` is the stable group ID and new sessions use the latest `published` version.

It returns one page; ListAutoPaging iterates over every item of every page.

GET /v3/workflows/

func (*WorkflowsService) ListAutoPaging

ListAutoPaging iterates over every item of every page of List, fetching pages as needed.

func (*WorkflowsService) Retrieve

func (r *WorkflowsService) Retrieve(ctx context.Context, settingsUUID string, opts ...option.RequestOption) (*WorkflowDetail, error)

Retrieve: Get workflow.

Fetch full configuration for one workflow version by `settings_uuid`: feature toggles, thresholds, allowed documents, graph, retry policy, callbacks, and pricing.

GET /v3/workflows/{settings_uuid}/

func (*WorkflowsService) Update

Update: Update workflow.

Update a workflow. Versioning depends on the `status` field you send and the current state of the version: (1) no `status` on a **published** version → the published version is updated in place (same `uuid`, same `version`); (2) no `status` on a **draft** → the draft is updated and immediately published; (3) `status: "published"` on a **published** version → a NEW published version is created under the same `workflow_id` (new `uuid`, `version` + 1) and returned, and any existing draft in the group is deleted; (4) `status: "draft"` keeps a draft as a draft (autosave) but is rejected with 400 on a published version (`"Cannot revert a published version to draft."`). The body accepts the same strict field whitelist as create - unknown keys are rejected with 400.

PATCH /v3/workflows/{settings_uuid}/

Directories

Path Synopsis
Package authentication is the server-side helper for Didit Authentication, the OpenID Connect issuer Didit runs for each application's end users (docs/DESIGN.md section 10).
Package authentication is the server-side helper for Didit Authentication, the OpenID Connect issuer Didit runs for each application's end users (docs/DESIGN.md section 10).
Command codegen generates the typed layer of the Didit Go SDK from openapi/ (docs/DESIGN.md section 5).
Command codegen generates the typed layer of the Didit Go SDK from openapi/ (docs/DESIGN.md section 5).
internal
apijson
Package apijson encodes request parameters and decodes responses.
Package apijson encodes request parameters and decodes responses.
naming
Package naming converts API names (snake_case, camelCase, enum values) to Go identifiers.
Package naming converts API names (snake_case, camelCase, enum values) to Go identifiers.
requestconfig
Package requestconfig holds the settings of a client or of a single request.
Package requestconfig holds the settings of a client or of a single request.
tools/corecover command
Command corecover reports the test coverage of the hand-written core: every package of the module except the generated *_gen.go files, codegen/ and internal/tools/.
Command corecover reports the test coverage of the hand-written core: every package of the module except the generated *_gen.go files, codegen/ and internal/tools/.
version
Package version holds the SDK version.
Package version holds the SDK version.
Package option holds the options of the Didit client.
Package option holds the options of the Didit client.
Package webhook verifies Didit webhook deliveries and parses them into typed events.
Package webhook verifies Didit webhook deliveries and parses them into typed events.

Jump to

Keyboard shortcuts

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