Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.yoid.me/llms.txt

Use this file to discover all available pages before exploring further.

Overview

The first step in the issuance workflow is creating a youth account. This provisions an identity in the Consumers realm and initialises a wallet tenant — giving the youth a place to receive and store credentials.

Endpoint

POST https://test.didxtech.com/consumer-onboarding/api/users

Request

curl -X POST "https://test.didxtech.com/consumer-onboarding/api/users" \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "firstName": "Thandi",
    "lastName": "Molefe"
  }'

Request Body

FieldTypeRequiredDescription
emailstringNo*Youth’s email address
usernamestringNo*Username (alphanumeric, ., -, _)
firstNamestringNoYouth’s first name
lastNamestringNoYouth’s last name
externalIdentifierstringNoYour system’s identifier for this youth
*At least one of email or username must be provided. Behaviour varies depending on the combination — see the API Reference for full details.

Response

The response differs depending on whether the youth is new or already exists.

New User — HTTP 201 Created

{
  "data": {
    "email": "[email protected]",
    "username": "thandi.molefe",
    "tempPassword": "!w&3WgYeEGMv"
  }
}
FieldDescription
emailThe youth’s email address
usernameThe assigned username
tempPasswordA temporary password for the youth

Existing User — HTTP 201 Created

If the youth already has an account, the API still returns 201 but with an empty tempPassword. This is not an error — proceed directly to credential issuance.
{
  "data": {
    "email": "[email protected]",
    "username": "thandi.molefe",
    "tempPassword": ""
  }
}
The only way to detect an existing account is to check whether tempPassword is empty. If empty, skip sending onboarding emails.

Idempotency

This endpoint is idempotent for the same email — it won’t create duplicate accounts. It returns 201 in both new and existing cases. A 409 Conflict is returned if the username is already taken by a different email, or there’s a mismatch between the provided email and username.
Proceed to Step 2: Create Credential Template to define the structure of the credential you want to issue.