arazzo: 1.0.1 info: title: Trulioo Configure And Verify A Person summary: Discover a country's accepted fields and consents, then run a KYC identity verification. description: >- The canonical Trulioo identity verification (KYC) flow. Before submitting a Verify request the workflow inspects the configured product package to learn which input fields are accepted for the target country and which datasources require explicit end-user consent, then submits a normalized Verify request carrying those consents and finally reads the RecordStatus from the result. Every step spells out its request inline so the flow can be read and executed without opening the underlying OpenAPI description. version: 1.0.0 sourceDescriptions: - name: configurationApi url: ../openapi/trulioo-configuration-api-openapi.yml type: openapi - name: verificationsApi url: ../openapi/trulioo-verifications-api-openapi.yml type: openapi workflows: - workflowId: configure-and-verify-person summary: Resolve fields and consents for a country, then verify a person. description: >- Reads the accepted field schema and the consent-requiring datasources for the configuration/country pair, submits a Verify request that includes those consents, and returns the normalized record status. inputs: type: object required: - configurationName - countryCode - personInfo - location properties: configurationName: type: string description: Configured product/package name (e.g. "Identity Verification"). countryCode: type: string description: Two-letter ISO 3166 country code (e.g. US). personInfo: type: object description: PersonInfo block (names and date-of-birth fields). location: type: object description: Location block (address fields). communication: type: object description: Optional Communication block (phone/email). steps: - stepId: getFields description: >- Retrieve the full set of accepted input fields for the target configuration and country to confirm the supplied data is shaped correctly. operationId: getFields parameters: - name: configurationName in: path value: $inputs.configurationName - name: countryCode in: path value: $inputs.countryCode successCriteria: - condition: $statusCode == 200 outputs: fieldSchema: $response.body - stepId: getConsents description: >- List the datasources that require end-user consent for this configuration/country so the Verify request can declare them. operationId: getConsents parameters: - name: configurationName in: path value: $inputs.configurationName - name: countryCode in: path value: $inputs.countryCode successCriteria: - condition: $statusCode == 200 outputs: consents: $response.body - stepId: verify description: >- Submit the Verify request with the supplied identity fields and the consent list discovered above, accepting the Trulioo terms and conditions. operationId: verifyPerson requestBody: contentType: application/json payload: AcceptTruliooTermsAndConditions: true ConfigurationName: $inputs.configurationName CountryCode: $inputs.countryCode ConsentForDataSources: $steps.getConsents.outputs.consents DataFields: PersonInfo: $inputs.personInfo Location: $inputs.location Communication: $inputs.communication successCriteria: - condition: $statusCode == 200 outputs: transactionId: $response.body#/TransactionID transactionRecordId: $response.body#/Record/TransactionRecordID recordStatus: $response.body#/Record/RecordStatus outputs: transactionId: $steps.verify.outputs.transactionId transactionRecordId: $steps.verify.outputs.transactionRecordId recordStatus: $steps.verify.outputs.recordStatus