> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didx.co.za/llms.txt
> Use this file to discover all available pages before exploring further.

# Resend the onboarding email for a user in the authenticated tenant

> Re-issues the Keycloak action-token onboarding email (single-use, time-boxed). Use after a failed send, an expired link, or a lost email. Only pending invitees can be resent — a user with stored credentials, a federated identity, or QiD enrolment (qid.enabled=true) is already active and receives 409.



## OpenAPI

````yaml products/didx-me/api-reference/v1/consumer-onboarding.json post /users/{username}/onboarding-email
openapi: 3.0.0
info:
  version: 1.0.0
  title: Consumer Onboarding API
  description: |2-

          
    OpenAPI documentation for Consumer Onboarding API

          
          
     - [JSON - OpenAPI Specification](/consumer-onboarding/api/openapi.json)
servers:
  - url: https://test.didxtech.com/consumer-onboarding/api
security:
  - bearerAuth: []
paths:
  /users/{username}/onboarding-email:
    post:
      tags:
        - users
      summary: Resend the onboarding email for a user in the authenticated tenant.
      description: >-
        Re-issues the Keycloak action-token onboarding email (single-use,
        time-boxed). Use after a failed send, an expired link, or a lost email.
        Only pending invitees can be resent — a user with stored credentials, a
        federated identity, or QiD enrolment (qid.enabled=true) is already
        active and receives 409.
      parameters:
        - schema:
            type: string
          required: true
          name: username
          in: path
      requestBody:
        content:
          application/json:
            examples:
              defaults:
                summary: Stored context + context default strong-auth
                value: {}
              contextOverride:
                summary: Re-point the user at a specific onboarding context
                value:
                  onboardingContext: me-wallet
              passkeyOverride:
                summary: Force passkey enrolment for this send
                value:
                  strongAuth: passkey
              otpOverride:
                summary: Force TOTP enrolment for this send
                value:
                  strongAuth: otp
            schema:
              $ref: '#/components/schemas/ResendOnboardingEmailRequest'
      responses:
        '200':
          description: Resend attempted; emailSent indicates the outcome.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResendOnboardingEmailApiResponse'
        '400':
          description: Unknown onboarding context.
        '401':
          description: Unauthorized. Invalid or missing token.
        '404':
          description: User not found in this organization.
        '409':
          description: User has no email address, or has already completed onboarding.
      security:
        - bearerAuth: []
components:
  schemas:
    ResendOnboardingEmailRequest:
      type: object
      properties:
        onboardingContext:
          type: string
          minLength: 1
        strongAuth:
          type: string
          enum:
            - passkey
            - otp
            - skip
      description: >-
        Optional overrides; defaults come from the user's stored
        onboardingContext attribute and the context's defaultStrongAuth. An
        explicit strongAuth changes the enrolment actions for this send only.
      example:
        onboardingContext: me-wallet
    ResendOnboardingEmailApiResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ResendOnboardingEmailResponse'
        links:
          $ref: '#/components/schemas/ApiLinks'
        meta:
          $ref: '#/components/schemas/ApiMeta'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ApiError'
      required:
        - data
    ResendOnboardingEmailResponse:
      type: object
      properties:
        emailSent:
          type: boolean
      required:
        - emailSent
      example:
        emailSent: true
    ApiLinks:
      type: object
      properties:
        self:
          type: string
          format: uri
        first:
          type: string
          format: uri
        last:
          type: string
          format: uri
        prev:
          type: string
          format: uri
        next:
          type: string
          format: uri
        related:
          type: string
          format: uri
    ApiMeta:
      type: object
      additionalProperties:
        nullable: true
    ApiError:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
        code:
          type: string
        title:
          type: string
        detail:
          type: string
        source:
          type: object
          properties:
            pointer:
              type: string
            parameter:
              type: string
        meta:
          type: object
          additionalProperties:
            nullable: true
      required:
        - detail
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````