Skip to main content

Documentation: FlowContextSchema Interface

The FlowContextSchema interface defines the structure of the context of an interactive flow, including the current stage (step) and the general information of the flow (flow).


Definition​

export const FlowContextSchema = {
status: "ok" | "error",
flow: FlowSchema,
step: StepSchema,
};

Properties​

1. status​

  • Type: string
  • Description: Represents the status of the context. Possible values:
    • "ok": The context is valid and ready to be processed.
    • "error": The context is invalid or contains errors.

2. flow​

  • Type: FlowSchema
  • Description: Represents the general information of the flow.

Properties of FlowSchema:​

  • id (string): Unique identifier of the flow.
  • organizationId (string): Identifier of the organization that owns the flow.
  • updatedAt (string): Date and time when the flow was last updated.
  • stages (array): List of stages in the flow.
    • id (string): Unique identifier of the stage.
    • name (string): Descriptive name of the stage.

3. step​

  • Type: StepSchema
  • Description: Represents the current stage of the interactive flow.

Properties of StepSchema:​

  • id (string): Unique identifier of the stage.
  • title (string, optional): Descriptive title of the stage.
  • description (string, optional): Description of the stage.
  • stageId (string, optional): Identifier of the stage within the flow.
  • state (object, optional): Represents the state associated with the stage.
  • fields (array, optional): List of defined fields in the stage (detailed below).
  • actions (array, optional): List of available actions in the stage (detailed below).
  • error (object, optional): Represents an error associated with the stage.
  • result (object, optional): Represents the result of the stage.
  • isFinal (boolean, optional): Indicates if this stage is the last in the flow.

Details of fields​

  • Type: StepFieldSchema[]
  • Description: Defines the interactive fields that a user must complete or interact with in a stage.

Properties of StepFieldSchema:​

  • name (string): Name of the field.
  • label (string): Descriptive label of the field.
  • type (enum): Data type of the field. Possible values include:
    • "text", "boolean", "number", "email", "phone", "mobile_phone", "date", "time", "datetime", "password", "url", "void", "location", "availability".
  • component (enum, optional): UI component used to represent the field. Examples:
    • "input", "textarea", "select", "radio", "checkbox", "map", etc.
  • selectionMode (enum, optional): Selection mode for selection fields.
    • "single": A single option (default).
    • "multiple": Multiple options.
  • placeholder (string, optional): Suggested text to help the user.
  • options (array, optional): List of options for selection fields.
    • label (string): Text of the option.
    • value (any, optional): Value corresponding to the field type.
    • image (URL, optional): Associated image.
    • description (string, optional): Additional description of the option.
    • disabled (boolean, optional): Indicates if the option is disabled.
  • required (boolean, optional): Indicates if the field is mandatory.
  • configuration (object, optional): Specific configuration for advanced field types.
  • customError (object, optional): Customize validation error messages for the field:
    • required (string): Message shown when a required field is empty.
    • invalid (string): Message shown when the field value is invalid.
    • minLength (string): Message shown when text length is below minimum.
    • maxLength (string): Message shown when text length exceeds maximum.
    • minValue (string): Message shown when numeric value is below minimum.
    • maxValue (string): Message shown when numeric value exceeds maximum.
    • mismatch (string): Message shown when field value doesn't match related field.

Details of actions​

  • Type: StepActionSchema[]
  • Description: Defines the actions that a user can execute in the stage.

Properties of StepActionSchema:​

  • id (string): Unique identifier of the action.
  • type (enum): Type of action. Possible values:
    • "submit": Submit data.
    • "forward": Move to the next step.
    • "link": Redirect to an external URL.
    • "iCall": Open iCall service.
  • label (string): Descriptive label of the action.
  • variant (enum): Visual variant of the action. Values:
    • "primary", "secondary", "success", "danger", "warning", "info".
  • url (string, optional): URL associated with link type actions.

Details of state​

  • Type: object
  • Description: Represents the state associated with the stage.

Details of error​

  • Type: object
    • message (string): Error message.
    • code (string): Error code.
    • fields (FieldsError[]): List of fields with errors.
      • name (string): Name of the field.
      • type (string): Type of field.
      • value (any): Value of field.
      • error (string): Error message.
  • Description: Represents an error associated with the stage.

Error Codes​

  • "INVALID_DATA": Invalid form data.
  • "INVALID_ACTION": Invalid submitted action.
  • "STEP_NOT_FOUND": Next step not found.
  • "UNKNOWN_ERROR": Unknown error.
  • "APPOINTMENT_INVALID_DATA": Invalid appointment data.
  • "APPOINTMENT_BUSY_SLOT": Slot is already booked or blocked.
  • "APPOINTMENT_OUT_OF_DATE": Slot is out of date range.
  • "APPOINTMENT_FAILED": Appointment creation failed.
  • "APPOINTMENT_UNKNOWN_ERROR": Unknown appointment error.
  • "LEAD_INVALID_DATA": Invalid lead data.
  • "LEAD_UNKNOWN_ERROR": Unknown lead error.
  • "CONTENT_INVALID_DATA": Invalid content data.
  • "CONTENT_UNKNOWN_ERROR": Unknown content error.
  • "CONTACT_INVALID_DATA": Invalid contact data.
  • "CONTACT_UNKNOWN_ERROR": Unknown contact error.
  • "LOST_OPPORTUNITY_INVALID_DATA": Invalid opportunity data.
  • "LOST_OPPORTUNITY_UNKNOWN_ERROR": Unknown opportunity error.
  • "CALENDAR_INVALID_DATA": Invalid calendar data.
  • "CALENDAR_UNKNOWN_ERROR": Unknown calendar error.
  • "OTP_VALIDATION_INVALID_DATA": Invalid OTP validation data.
  • "OTP_VALIDATION_UNKNOWN_ERROR": Unknown OTP validation error.

Structure Example​

Success context response​

const flowContext = {
status: "ok",
step: {
id: "step123",
title: "Registration Form",
description: "Please complete the following fields.",
fields: [
{
name: "name",
label: "Name",
type: "text",
required: true,
},
{
name: "acceptTOS",
label: "I accept the terms and conditions",
type: "boolean",
component: "checkbox",
required: true,
},
],
actions: [
{
id: "submitForm",
type: "submit",
label: "Submit",
variant: "primary",
},
]
},
flow: {
id: "flow456",
organizationId: "123e4567-e89b-12d3-a456-426614174000",
updatedAt: "2025-01-17T10:00:00Z",
stages: [
{ id: "stage1", name: "Start" },
{ id: "stage2", name: "Confirmation" },
],
},
};

Error context response​

const flowContext = {
status: "error",
step: {
id: "step123",
title: "Registration Form",
description: "Please complete the following fields.",
fields: [
{
name: "name",
label: "Name",
type: "text",
required: true,
},
{
name: "acceptTOS",
label: "I accept the terms and conditions",
type: "boolean",
component: "checkbox",
required: true,
},
],
actions: [
{
id: "submitForm",
type: "submit",
label: "Submit",
variant: "primary",
},
],
error: {
code: "INVALID_DATA",
message: "Please fill in all required fields.",
fields: [
{
name: "name",
type: "text",
value: "",
error: "Name is required",
},
],
},
},
flow: {
id: "flow456",
organizationId: "123e4567-e89b-12d3-a456-426614174000",
updatedAt: "2025-01-17T10:00:00Z",
stages: [
{ id: "stage1", name: "Start" },
{ id: "stage2", name: "Confirmation" },
],
},
};

Notes​

  • The FlowContextSchema interface is used to represent the current state of the flow and its general context.
  • StepSchema and its subcomponents (fields and actions) are critical to defining user interaction at each stage of the flow.