Skip to main content

Configure It Yourself

Use this page to build the Wayfinder setup manually instead of importing the declarative bundle from Try It Out. Pick this path when you want to see exactly what gets created, adapt the setup to your own project, or learn the moving parts step by step.

The first section is the shared foundation — required regardless of which use cases you plan to exercise. The remaining three are independent and can be applied in any order.

Set Up the Foundation

These resources are shared by every B2C walkthrough.

  1. Create the Customer user type.

    Navigate to User TypesCreate User Type. Define the schema:

    AttributeTypeProperties
    usernamestringRequired, unique
    emailstringRequired, unique
    passwordstringCredential
    given_namestringOptional
    family_namestringOptional
    substringOptional

    See User Types.

  2. Create the booking-api resource server.

    Resource servers are managed through the Resource Management API. Create the resource server, the booking resource, and three actions in one call:

    curl -k -X POST https://localhost:8090/resource-servers \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
    "name": "Booking API",
    "identifier": "booking-api",
    "delimiter": ":",
    "resources": [
    {
    "name": "Booking",
    "handle": "booking",
    "actions": [
    { "name": "Read", "handle": "read" },
    { "name": "Create", "handle": "create" },
    { "name": "Cancel", "handle": "cancel" }
    ]
    }
    ]
    }'

    This generates three permissions: booking:read, booking:create, and booking:cancel.

    See Resource Servers.

  3. Create the Traveler role.

    Roles and their permissions are managed through the Role Management API. Create the role with the three booking:* permissions in one call. Replace <default-ou-id> with the ID of your default organization unit (look it up via GET /organization-units).

    curl -k -X POST https://localhost:8090/roles \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
    "name": "Traveler",
    "description": "Consumer role with full booking permissions",
    "ouId": "<default-ou-id>",
    "permissions": [
    {
    "resourceServerId": "booking-api",
    "permissions": ["booking:read", "booking:create", "booking:cancel"]
    }
    ]
    }'

    See Authorization.

  4. Register the WAYFINDER application.

    Navigate to ApplicationsAdd Application and choose Browser App as the type. Configure:

    SettingValue
    Redirect URIhttp://localhost:5173
    Allowed grantsauthorization_code
    PKCERequired
    Allowed user typesCustomer

    See Manage Applications.

  5. Create John Doe as a Customer.

    Navigate to UsersAdd User. Select Customer as the user type and click Create User. Fill in the schema attributes (username: john.doe, email: john.doe@example.com, password: john.doe) and complete the user creation.

    Navigate to Roles → open the Traveler role → Assignments tab. Click Add and select John to assign the role.

    See Manage Users.

Build the Registration Flow

The registration flow drives Self Sign-Up. It:

  • Resolves the user type (prompts the new user to pick one if the application allows multiple).
  • Prompts for username and password.
  • Runs basic-auth and provisioning, with properties.assignRole set to attach the Traveler role automatically.
  • Prompts for any remaining required schema attributes (rendered dynamically from the user type).
  • Returns an auth assertion so the new user lands signed in.
  1. Save the JSON below as wayfinder-registration-flow.json and POST it to the flows API:

    curl -k -X POST https://localhost:8090/flows \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @wayfinder-registration-flow.json
    wayfinder-registration-flow.json
    {
    "handle": "wayfinder-registration-flow",
    "name": "Wayfinder Registration Flow",
    "flowType": "REGISTRATION",
    "nodes": [
    { "id": "start", "type": "START", "onSuccess": "user_type_resolver" },
    {
    "id": "user_type_resolver",
    "type": "TASK_EXECUTION",
    "executor": { "name": "UserTypeResolver" },
    "onSuccess": "prompt_credentials",
    "onIncomplete": "prompt_usertype"
    },
    {
    "id": "prompt_usertype",
    "type": "PROMPT",
    "meta": {
    "components": [
    { "align": "center", "type": "TEXT", "id": "heading_usertype", "label": "Choose your account type", "variant": "HEADING_1" },
    {
    "type": "BLOCK",
    "id": "block_usertype",
    "components": [
    { "type": "SELECT", "id": "usertype_input", "ref": "userType", "label": "Account type", "placeholder": "Select an account type", "required": true, "options": [] },
    { "type": "ACTION", "id": "action_usertype", "label": "Continue", "variant": "PRIMARY", "eventType": "SUBMIT" }
    ]
    }
    ]
    },
    "prompts": [
    {
    "inputs": [ { "ref": "usertype_input", "identifier": "userType", "type": "SELECT", "required": true } ],
    "action": { "ref": "action_usertype", "nextNode": "user_type_resolver" }
    }
    ]
    },
    {
    "id": "prompt_credentials",
    "type": "PROMPT",
    "meta": {
    "components": [
    { "align": "center", "type": "TEXT", "id": "heading_credentials", "label": "Create your account", "variant": "HEADING_1" },
    {
    "type": "BLOCK",
    "id": "block_credentials",
    "components": [
    { "type": "TEXT_INPUT", "id": "input_username", "ref": "username", "label": "Username", "placeholder": "Pick a username", "required": true },
    { "type": "PASSWORD_INPUT", "id": "input_password", "ref": "password", "label": "Password", "placeholder": "Choose a password", "required": true },
    { "type": "ACTION", "id": "action_credentials", "label": "Continue", "variant": "PRIMARY", "eventType": "SUBMIT" }
    ]
    }
    ]
    },
    "prompts": [
    {
    "inputs": [
    { "ref": "input_username", "identifier": "username", "type": "TEXT_INPUT", "required": true },
    { "ref": "input_password", "identifier": "password", "type": "PASSWORD_INPUT", "required": true }
    ],
    "action": { "ref": "action_credentials", "nextNode": "basic_auth" }
    }
    ]
    },
    {
    "id": "basic_auth",
    "type": "TASK_EXECUTION",
    "executor": { "name": "BasicAuthExecutor" },
    "onSuccess": "provisioning"
    },
    {
    "id": "provisioning",
    "type": "TASK_EXECUTION",
    "properties": { "assignRole": "wayfinder-traveler-role" },
    "executor": {
    "name": "ProvisioningExecutor",
    "inputs": [
    { "ref": "input_username", "identifier": "username", "type": "TEXT_INPUT", "required": true },
    { "ref": "input_password", "identifier": "password", "type": "PASSWORD_INPUT", "required": true }
    ]
    },
    "onSuccess": "auth_assert",
    "onIncomplete": "prompt_schema_attrs"
    },
    {
    "id": "prompt_schema_attrs",
    "type": "PROMPT",
    "meta": {
    "components": [
    { "align": "center", "type": "TEXT", "id": "heading_schema_attrs", "label": "Tell us about you", "variant": "HEADING_1" },
    {
    "type": "BLOCK",
    "id": "block_dynamic_user_inputs",
    "components": [
    { "type": "DYNAMIC_INPUT_PLACEHOLDER", "id": "dynamic_inputs" },
    { "type": "ACTION", "id": "action_schema_attrs", "label": "Continue", "variant": "PRIMARY", "eventType": "SUBMIT" }
    ]
    }
    ]
    },
    "prompts": [
    { "inputs": [], "action": { "ref": "action_schema_attrs", "nextNode": "provisioning" } }
    ]
    },
    {
    "id": "auth_assert",
    "type": "TASK_EXECUTION",
    "executor": { "name": "AuthAssertExecutor" },
    "onSuccess": "end"
    },
    { "id": "end", "type": "END" }
    ]
    }

    Replace wayfinder-traveler-role with the ID of the Traveler role you created above if it differs.

    See Build a Flow.

  2. Go to ApplicationsWAYFINDERFlows and select the registration flow you just created from the Registration Flow dropdown. Save the application.

    See Manage Applications.

Build the Account Recovery Flow

The recovery flow drives Account Recovery. It:

  • Prompts the user for a username.
  • Identifies the user.
  • Generates a recovery token.
  • Sends the recovery email.
  • Verifies the token from the email link.
  • Lands the user on a Set new password screen and updates the credential.

SMTP must be configured for the recovery email to reach the user. The SMTP step is covered in the Set Up Account Recovery and is required regardless of which path you took.

  1. Save the JSON below as wayfinder-recovery-flow.json and POST it to the flows API:

    curl -k -X POST https://localhost:8090/flows \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @wayfinder-recovery-flow.json
    wayfinder-recovery-flow.json
    {
    "handle": "wayfinder-recovery-flow",
    "name": "Wayfinder Password Recovery Flow",
    "flowType": "RECOVERY",
    "nodes": [
    { "id": "start", "type": "START", "onSuccess": "prompt_username" },
    {
    "id": "prompt_username",
    "type": "PROMPT",
    "meta": {
    "components": [
    { "align": "center", "type": "TEXT", "id": "text_header_username", "label": "Reset your password", "variant": "HEADING_1" },
    { "type": "TEXT", "id": "text_subtitle_username", "label": "Enter your username and we'll email you a recovery link.", "variant": "HEADING_6" },
    {
    "type": "BLOCK",
    "id": "block_username",
    "components": [
    { "id": "input_username", "ref": "username", "type": "TEXT_INPUT", "label": "Username", "required": true, "placeholder": "Your username" },
    { "type": "ACTION", "id": "action_submit_username", "label": "Send recovery link", "variant": "PRIMARY", "eventType": "SUBMIT" }
    ]
    }
    ]
    },
    "prompts": [
    {
    "inputs": [ { "ref": "input_username", "identifier": "username", "type": "TEXT_INPUT", "required": true } ],
    "action": { "ref": "action_submit_username", "nextNode": "identify_user" }
    }
    ]
    },
    {
    "id": "identify_user",
    "type": "TASK_EXECUTION",
    "executor": {
    "name": "IdentifyingExecutor",
    "mode": "identify",
    "inputs": [ { "ref": "input_username", "identifier": "username", "type": "TEXT_INPUT", "required": true } ]
    },
    "onSuccess": "generate_recovery_token",
    "onFailure": "email_sent_status"
    },
    {
    "id": "generate_recovery_token",
    "type": "TASK_EXECUTION",
    "executor": { "name": "InviteExecutor", "mode": "generate" },
    "onSuccess": "send_recovery_email"
    },
    {
    "id": "send_recovery_email",
    "type": "TASK_EXECUTION",
    "properties": { "emailTemplate": "PASSWORD_RECOVERY" },
    "executor": { "name": "EmailExecutor", "mode": "send" },
    "onSuccess": "email_sent_status",
    "onFailure": "email_sent_status"
    },
    {
    "id": "email_sent_status",
    "type": "PROMPT",
    "meta": {
    "components": [
    { "align": "center", "type": "TEXT", "id": "email_sent_icon", "label": "✉️", "variant": "HEADING_1" },
    { "align": "center", "type": "TEXT", "id": "email_sent_heading", "label": "Check your email", "variant": "HEADING_1" },
    { "align": "center", "type": "TEXT", "id": "email_sent_message", "label": "If an account matches, we've sent a recovery link.", "variant": "HEADING_6" }
    ]
    },
    "message": "Check Your Email",
    "next": "verify_recovery_token"
    },
    {
    "id": "verify_recovery_token",
    "type": "TASK_EXECUTION",
    "executor": {
    "name": "InviteExecutor",
    "mode": "verify",
    "inputs": [ { "ref": "input_recovery_token", "identifier": "inviteToken", "type": "HIDDEN", "required": true } ]
    },
    "onSuccess": "prompt_new_password"
    },
    {
    "id": "prompt_new_password",
    "type": "PROMPT",
    "meta": {
    "components": [
    { "align": "center", "type": "TEXT", "id": "text_header_password", "label": "Set a new password", "variant": "HEADING_1" },
    {
    "type": "BLOCK",
    "id": "block_password",
    "components": [
    { "id": "input_new_password", "ref": "password", "type": "PASSWORD_INPUT", "label": "New password", "required": true, "placeholder": "New password" },
    { "type": "ACTION", "id": "action_submit_password", "label": "Update password", "variant": "PRIMARY", "eventType": "SUBMIT" }
    ]
    }
    ]
    },
    "prompts": [
    {
    "inputs": [ { "ref": "input_new_password", "identifier": "password", "type": "PASSWORD_INPUT", "required": true } ],
    "action": { "ref": "action_submit_password", "nextNode": "set_credential" }
    }
    ]
    },
    {
    "id": "set_credential",
    "type": "TASK_EXECUTION",
    "executor": { "name": "CredentialSetter" },
    "onSuccess": "recovery_complete"
    },
    {
    "id": "recovery_complete",
    "type": "PROMPT",
    "meta": {
    "components": [
    { "align": "center", "type": "TEXT", "id": "recovery_complete_icon", "label": "✅", "variant": "HEADING_1" },
    { "align": "center", "type": "TEXT", "id": "recovery_complete_heading", "label": "Password updated", "variant": "HEADING_1" },
    { "align": "center", "type": "TEXT", "id": "recovery_complete_message", "label": "Return to Wayfinder and sign in with your new password.", "variant": "HEADING_6" }
    ]
    },
    "message": "Password Reset Successful",
    "next": "end"
    },
    { "id": "end", "type": "END" }
    ]
    }

    See Build a Flow.

  2. Go to ApplicationsWAYFINDERFlows and select the recovery flow you just created from the Recovery Flow dropdown. Save the application.

    See Manage Applications.

Set up Internal User Onboarding

These resources drive Onboard Internal Users.

  1. Create the Staff user type. Navigate to User TypesCreate User Type. Define the schema:

    AttributeTypeNotes
    usernamestringRequired, unique
    emailstringRequired, unique
    passwordstringCredential
    displayNamestringCaptured on invitation accept

    See User Types.

  2. Create the staff roles. Navigate to RolesAdd Role. Add the three staff roles:

    RolePurpose
    SupportConsumer support workflows
    DestinationsAdminCurate featured destinations
    OpsAdminInvite and manage other staff

    See Authorization.

  3. Create the user onboarding flow. Save the JSON below as wayfinder-onboarding-flow.json and POST it to the flows API. The flow validates admin permission, resolves the user type, prompts for the staff role (Support or DestinationsAdmin), collects the invitee's email, sends the invitation, and on accept provisions the new user with the matching role attached via properties.assignRole.

    curl -k -X POST https://localhost:8090/flows \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @wayfinder-onboarding-flow.json
    wayfinder-onboarding-flow.json
    {
    "handle": "wayfinder-onboarding-flow",
    "name": "Wayfinder Staff Onboarding Flow",
    "flowType": "USER_ONBOARDING",
    "nodes": [
    { "id": "start", "type": "START", "onSuccess": "permission_validator" },
    {
    "id": "permission_validator",
    "type": "TASK_EXECUTION",
    "properties": { "requiredScopes": ["system"] },
    "executor": { "name": "PermissionValidator" },
    "onSuccess": "user_type_resolver"
    },
    {
    "id": "user_type_resolver",
    "type": "TASK_EXECUTION",
    "executor": { "name": "UserTypeResolver" },
    "onSuccess": "prompt_staff_role",
    "onIncomplete": "prompt_usertype"
    },
    {
    "id": "prompt_usertype",
    "type": "PROMPT",
    "meta": {
    "components": [
    { "align": "center", "type": "TEXT", "id": "heading_usertype", "label": "Who are you inviting?", "variant": "HEADING_1" },
    {
    "type": "BLOCK",
    "id": "block_usertype",
    "components": [
    { "type": "SELECT", "id": "usertype_input", "ref": "userType", "label": "User type", "placeholder": "Select a user type", "required": true, "options": [] },
    { "type": "ACTION", "id": "action_usertype", "label": "Continue", "variant": "PRIMARY", "eventType": "SUBMIT" }
    ]
    }
    ]
    },
    "prompts": [
    {
    "inputs": [ { "ref": "usertype_input", "identifier": "userType", "type": "SELECT", "required": true } ],
    "action": { "ref": "action_usertype", "nextNode": "user_type_resolver" }
    }
    ]
    },
    {
    "id": "prompt_staff_role",
    "type": "PROMPT",
    "meta": {
    "components": [
    { "align": "center", "type": "TEXT", "id": "heading_staff_role", "label": "Which staff role?", "variant": "HEADING_1" },
    { "align": "center", "type": "TEXT", "id": "subtitle_staff_role", "label": "Pick the role to attach when the invitee accepts.", "variant": "HEADING_6" },
    {
    "type": "BLOCK",
    "id": "block_staff_role_actions",
    "components": [
    {
    "type": "STACK",
    "id": "stack_staff_role_actions",
    "direction": "row",
    "justify": "center",
    "components": [
    { "type": "ACTION", "id": "action_role_support", "label": "Support", "variant": "PRIMARY", "eventType": "SUBMIT" },
    { "type": "ACTION", "id": "action_role_destinations", "label": "DestinationsAdmin", "variant": "OUTLINED", "eventType": "SUBMIT" }
    ]
    }
    ]
    }
    ]
    },
    "prompts": [
    { "action": { "ref": "action_role_support", "nextNode": "prompt_email_support" } },
    { "action": { "ref": "action_role_destinations", "nextNode": "prompt_email_destinations" } }
    ]
    },
    {
    "id": "prompt_email_support",
    "type": "PROMPT",
    "meta": {
    "components": [
    { "align": "center", "type": "TEXT", "id": "text_header_email_s", "label": "Invitee email", "variant": "HEADING_1" },
    {
    "type": "BLOCK",
    "id": "block_email_s",
    "components": [
    { "id": "input_prompt_email_s", "ref": "email", "type": "EMAIL_INPUT", "label": "Email", "required": true, "placeholder": "name@example.com" },
    { "type": "ACTION", "id": "action_submit_email_s", "label": "Send invitation", "variant": "PRIMARY", "eventType": "SUBMIT" }
    ]
    }
    ]
    },
    "prompts": [
    {
    "inputs": [ { "ref": "input_prompt_email_s", "identifier": "email", "type": "EMAIL_INPUT", "required": true } ],
    "action": { "ref": "action_submit_email_s", "nextNode": "check_email_uniqueness_support" }
    }
    ]
    },
    {
    "id": "check_email_uniqueness_support",
    "type": "TASK_EXECUTION",
    "executor": { "name": "AttributeUniquenessValidator" },
    "onSuccess": "invite_generate_support",
    "onIncomplete": "prompt_email_support"
    },
    {
    "id": "invite_generate_support",
    "type": "TASK_EXECUTION",
    "executor": { "name": "InviteExecutor", "mode": "generate" },
    "onSuccess": "send_invite_email_support"
    },
    {
    "id": "send_invite_email_support",
    "type": "TASK_EXECUTION",
    "properties": { "emailTemplate": "USER_INVITE" },
    "executor": { "name": "EmailExecutor", "mode": "send" },
    "onSuccess": "email_invite_status_support",
    "onFailure": "email_invite_status_support"
    },
    {
    "id": "email_invite_status_support",
    "type": "PROMPT",
    "meta": {
    "components": [
    { "align": "center", "type": "TEXT", "id": "email_status_icon_s", "label": "✅", "variant": "HEADING_1" },
    { "align": "center", "type": "TEXT", "id": "email_status_heading_s", "label": "Invitation sent", "variant": "HEADING_1" },
    { "align": "center", "type": "TEXT", "id": "email_status_message_s", "label": "The invitee can now accept from email and become a Support staff member.", "variant": "HEADING_6" }
    ]
    },
    "message": "Invitation sent",
    "next": "invite_verify_support"
    },
    {
    "id": "invite_verify_support",
    "type": "TASK_EXECUTION",
    "inputs": [ { "ref": "input_invite_token_s", "identifier": "inviteToken", "type": "HIDDEN", "required": true } ],
    "executor": { "name": "InviteExecutor", "mode": "verify" },
    "onSuccess": "provisioning_support"
    },
    {
    "id": "provisioning_support",
    "type": "TASK_EXECUTION",
    "properties": { "includeOptional": true, "includeOptionalCredentials": true, "assignRole": "wayfinder-support-role-id" },
    "executor": { "name": "ProvisioningExecutor" },
    "onSuccess": "registration_complete",
    "onIncomplete": "prompt_user_details_support"
    },
    {
    "id": "prompt_user_details_support",
    "type": "PROMPT",
    "meta": {
    "components": [
    { "align": "center", "type": "TEXT", "id": "text_header_user_details_s", "label": "Complete your profile", "variant": "HEADING_1" },
    {
    "type": "BLOCK",
    "id": "block_user_details_s",
    "components": [
    { "type": "DYNAMIC_INPUT_PLACEHOLDER", "id": "dynamic_inputs_user_details_s" },
    { "type": "ACTION", "id": "action_user_details_s", "label": "Finish", "variant": "PRIMARY", "eventType": "SUBMIT" }
    ]
    }
    ]
    },
    "prompts": [
    { "inputs": [], "action": { "ref": "action_user_details_s", "nextNode": "provisioning_support" } }
    ]
    },
    {
    "id": "prompt_email_destinations",
    "type": "PROMPT",
    "meta": {
    "components": [
    { "align": "center", "type": "TEXT", "id": "text_header_email_d", "label": "Invitee email", "variant": "HEADING_1" },
    {
    "type": "BLOCK",
    "id": "block_email_d",
    "components": [
    { "id": "input_prompt_email_d", "ref": "email", "type": "EMAIL_INPUT", "label": "Email", "required": true, "placeholder": "name@example.com" },
    { "type": "ACTION", "id": "action_submit_email_d", "label": "Send invitation", "variant": "PRIMARY", "eventType": "SUBMIT" }
    ]
    }
    ]
    },
    "prompts": [
    {
    "inputs": [ { "ref": "input_prompt_email_d", "identifier": "email", "type": "EMAIL_INPUT", "required": true } ],
    "action": { "ref": "action_submit_email_d", "nextNode": "check_email_uniqueness_destinations" }
    }
    ]
    },
    {
    "id": "check_email_uniqueness_destinations",
    "type": "TASK_EXECUTION",
    "executor": { "name": "AttributeUniquenessValidator" },
    "onSuccess": "invite_generate_destinations",
    "onIncomplete": "prompt_email_destinations"
    },
    {
    "id": "invite_generate_destinations",
    "type": "TASK_EXECUTION",
    "executor": { "name": "InviteExecutor", "mode": "generate" },
    "onSuccess": "send_invite_email_destinations"
    },
    {
    "id": "send_invite_email_destinations",
    "type": "TASK_EXECUTION",
    "properties": { "emailTemplate": "USER_INVITE" },
    "executor": { "name": "EmailExecutor", "mode": "send" },
    "onSuccess": "email_invite_status_destinations",
    "onFailure": "email_invite_status_destinations"
    },
    {
    "id": "email_invite_status_destinations",
    "type": "PROMPT",
    "meta": {
    "components": [
    { "align": "center", "type": "TEXT", "id": "email_status_icon_d", "label": "✅", "variant": "HEADING_1" },
    { "align": "center", "type": "TEXT", "id": "email_status_heading_d", "label": "Invitation sent", "variant": "HEADING_1" },
    { "align": "center", "type": "TEXT", "id": "email_status_message_d", "label": "The invitee can now accept from email and become a DestinationsAdmin staff member.", "variant": "HEADING_6" }
    ]
    },
    "message": "Invitation sent",
    "next": "invite_verify_destinations"
    },
    {
    "id": "invite_verify_destinations",
    "type": "TASK_EXECUTION",
    "inputs": [ { "ref": "input_invite_token_d", "identifier": "inviteToken", "type": "HIDDEN", "required": true } ],
    "executor": { "name": "InviteExecutor", "mode": "verify" },
    "onSuccess": "provisioning_destinations"
    },
    {
    "id": "provisioning_destinations",
    "type": "TASK_EXECUTION",
    "properties": { "includeOptional": true, "includeOptionalCredentials": true, "assignRole": "wayfinder-destinations-admin-role-id" },
    "executor": { "name": "ProvisioningExecutor" },
    "onSuccess": "registration_complete",
    "onIncomplete": "prompt_user_details_destinations"
    },
    {
    "id": "prompt_user_details_destinations",
    "type": "PROMPT",
    "meta": {
    "components": [
    { "align": "center", "type": "TEXT", "id": "text_header_user_details_d", "label": "Complete your profile", "variant": "HEADING_1" },
    {
    "type": "BLOCK",
    "id": "block_user_details_d",
    "components": [
    { "type": "DYNAMIC_INPUT_PLACEHOLDER", "id": "dynamic_inputs_user_details_d" },
    { "type": "ACTION", "id": "action_user_details_d", "label": "Finish", "variant": "PRIMARY", "eventType": "SUBMIT" }
    ]
    }
    ]
    },
    "prompts": [
    { "inputs": [], "action": { "ref": "action_user_details_d", "nextNode": "provisioning_destinations" } }
    ]
    },
    {
    "id": "registration_complete",
    "type": "PROMPT",
    "meta": {
    "components": [
    { "align": "center", "type": "TEXT", "id": "registration_complete_icon", "label": "✅", "variant": "HEADING_1" },
    { "align": "center", "type": "TEXT", "id": "registration_complete_heading", "label": "Welcome to Wayfinder", "variant": "HEADING_1" },
    { "align": "center", "type": "TEXT", "id": "registration_complete_message", "label": "Your staff account is ready.", "variant": "HEADING_6" }
    ]
    },
    "message": "Registration complete",
    "next": "end"
    },
    { "id": "end", "type": "END" }
    ]
    }

    Replace wayfinder-support-role-id and wayfinder-destinations-admin-role-id with the IDs of the Support and DestinationsAdmin roles you created in step 2.

    See Build a Flow.

  4. ThunderID permits one USER_ONBOARDING flow at a time, selected by handle in deployment.yaml. Point it at your flow and restart:

    flow:
    user_onboarding_flow_handle: "wayfinder-onboarding-flow"
  5. Create Alex Carter as a Staff user with the OpsAdmin role so he can issue invitations. Navigate to UsersAdd User.

    See Manage Users.

ThunderID LogoThunderID Logo

Product

DocsAPIsSDKs
© WSO2 LLC. All rights reserved.Privacy PolicyCookie Policy