Overview

This is a draft of the APIs for requesting a Proof of Passport from a mobile app. The system contains the following components:

image.png

Back End

Docs

https://rarimo.github.io/verificator-svc/

Interface

Example

const backendUrl = '<https://api.example.com>'
const body = {
  data: {
	  type: "user",
    // External system user ID (public key)
    id: "some-user-id",
    attributes: {
      // Denotes the application and activity that is requesting the verification
      event_id: "my_app_verify_voter",
      // Minimum required age (including)
      age_lower_bound: 18,
      // Should check for uniqueness
      uniqueness: true,
      // ISO 3166 alpha-3 country code: <https://www.iban.com/country-codes>
      // Note: Germany passports may have single-letter "D" code
      nationality: "UKR"
    }
  }
}

const response = await fetch(
  `${backendUrl}/integrations/verificator-svc/private/verification-link`,
  {
    headers: {
      'Accept': 'application/vnd.api+json',
      'Content-Type': 'application/vnd.api+json',
    },
    method: "POST",
    body: JSON.stringify(body),
  }
)
const { data } = await response.json()
// Proof Params URL for RariMe app
const proofParamsUrl = data.attributes.get_proof_params
const backendUrl = '<https://api.example.com>'
const userId = 'some-user-id'

const response = await fetch(`${backendUrl}/integrations/verification-svc/private/verification-status/${userId}`)
const { data } = await response.json()

// responseUserId === userId
const responseUserId = data.id

// Verification status enum:
// - "not_verified" - user is not verified
// - "verified" - user is verified
// - "failed_verification" - user verification failed
// - "uniqueness_check_failed" - user uniqueness check failed
const verificationStatus = data.attributes.status

iOS