/** * Linkbreakers API * This is a documentation of all the APIs of Linkbreakers * * The version of the OpenAPI document: 1.118.3 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ import type { WorkflowStepPayload } from './WorkflowStepPayload'; import type { WorkflowStepBranch } from './WorkflowStepBranch'; import type { CanvasPosition } from './CanvasPosition'; /** * Models a node in the Linkbreakers workflow canvas, defining what should occur after a scan (redirects, gates, * forms) and how it connects to other steps in the visitor journey. * @export * @interface WorkflowStep */ export interface WorkflowStep { /** * Every exit of this step, with its current destination. * * This is the vocabulary for connecting the step: pass one of these * branch_ids to workflow_steps_connect. An atomic step has exactly one * branch, "next". A composite step has one per button, option or range, * plus "else" for a condition's fallback. An exit step has none. * @type {Array} * @memberof WorkflowStep */ branches?: Array; /** * * @type {CanvasPosition} * @memberof WorkflowStep */ canvasPosition?: CanvasPosition; /** * * @type {Array} * @memberof WorkflowStep */ childStepIds?: Array; /** * * @type {Date} * @memberof WorkflowStep */ readonly createdAt?: Date; /** * - EVENT_ACTION_UNSPECIFIED: Event action not specified * - EVENT_ACTION_CLIENT_REDIRECT: Redirect visitors to a destination URL * - EVENT_ACTION_LINK_VISIT: Entry step triggered when the link is visited. * - EVENT_ACTION_PASSWORD_VERIFY: Require visitors to enter a password before proceeding * - EVENT_ACTION_FORM_SUBMIT: Present a data collection form to visitors * - EVENT_ACTION_CONTACT_CARD: Generate a vCard (VCF) response with contact information * - EVENT_ACTION_MULTI_LINK: A page of buttons where each one continues into more workflow: the button * leads to a next step, not straight out. Records which button the visitor * pressed, so use it over SOCIAL_LINKS_PAGE when that choice is worth * measuring or when a branch needs to do more than redirect. * - EVENT_ACTION_VISIT_TYPE_CONDITION: Route visitors based on whether it's a first or returning visit * - EVENT_ACTION_COUNTRY_CONDITION: Route visitors based on their country location * - EVENT_ACTION_DAY_OF_WEEK_CONDITION: Route visitors based on day of week * - EVENT_ACTION_TIME_OF_DAY_CONDITION: Route visitors based on time of day * - EVENT_ACTION_DAY_OF_MONTH_CONDITION: Route visitors based on day of month * - EVENT_ACTION_SPECIFIC_DATE_CONDITION: Route visitors based on specific calendar dates * - EVENT_ACTION_SOCIAL_LINKS_PAGE: A page of buttons that each leave for an external URL. Social profiles are * the common case, not the only one: app stores, docs, booking pages and * storefronts all work, and the name is the only thing about it that is * social. It is an exit step, so the visitor leaves from here. * - EVENT_ACTION_DEVICE_TYPE_CONDITION: Route visitors based on device type (e.g. MOBILE, DESKTOP, TABLET) * - EVENT_ACTION_DEVICE_PLATFORM_CONDITION: Route visitors based on device platform / operating system (e.g. iOS, Android, macOS) * - EVENT_ACTION_DEVICE_BROWSER_CONDITION: Route visitors based on browser family (e.g. Chrome, Safari, Firefox) * - EVENT_ACTION_DEVICE_BRAND_CONDITION: Route visitors based on hardware brand (e.g. Apple, Samsung, Google) * - EVENT_ACTION_DEVICE_ACTOR_CONDITION: Route visitors based on actor classification (e.g. HUMAN, BOT, AGENT) * - EVENT_ACTION_VISITOR_DATA_CONDITION: Route visitors based on their profile data or custom attributes * - EVENT_ACTION_THANK_YOU_PAGE: Display a final thank you / completion message (exit step) * - EVENT_ACTION_MESSAGE_PAGE: Text with ONE way onward: a single button, or a timer that moves the * visitor automatically. It carries no list of destinations, so a page that * should offer a choice between two or more places is not this step. Use * SOCIAL_LINKS_PAGE when the choices leave for external URLs, or MULTI_LINK * when each choice continues into more workflow. * @type {WorkflowStepEventActionEnum} * @memberof WorkflowStep */ eventAction?: WorkflowStepEventActionEnum; /** * * @type {string} * @memberof WorkflowStep */ id?: string; /** * - KIND_UNSPECIFIED: Workflow step kind not specified * - KIND_ENTRY: Entry steps are automatically triggered when a visitor reaches the workflow * - KIND_EXIT: Exit steps finalize the workflow (commonly a redirect) * - KIND_INTERACTION: Interaction steps require visitor input (forms, passwords, etc.) * - KIND_CONDITION: Condition steps evaluate logic and route to different next steps * @type {WorkflowStepKindEnum} * @memberof WorkflowStep */ readonly kind?: WorkflowStepKindEnum; /** * * @type {string} * @memberof WorkflowStep */ linkId?: string; /** * The node type says how many exits a step has. Whatever the answer, you * connect every one of them the same way, with workflow_steps_connect: name * the branch, name the step it leads to. Read a step's branches field for its * branch ids. * * Example: a multi-link with 3 buttons has 3 branches, with the buttons' ids. * A redirect has one branch, "next". A country condition has one branch per * country plus "else". * * - NODE_TYPE_UNSPECIFIED: Workflow step node type not specified * - NODE_TYPE_COMPOSITE: Composite steps have one exit per button, option or range, plus "else" * for a condition's fallback. * Examples: MULTI_LINK, VISIT_TYPE_CONDITION, COUNTRY_CONDITION, * DAY_OF_WEEK_CONDITION, TIME_OF_DAY_CONDITION, DAY_OF_MONTH_CONDITION, * SPECIFIC_DATE_CONDITION, DEVICE_*_CONDITION, VISITOR_DATA_CONDITION * - NODE_TYPE_ATOMIC: Atomic steps have exactly one exit, branch id "next". Exit steps * (THANK_YOU_PAGE, CONTACT_CARD, SOCIAL_LINKS_PAGE, CLIENT_REDIRECT) are * atomic but end the journey, so they have no branches at all. * Examples: LINK_VISIT, PASSWORD_VERIFY, FORM_SUBMIT, MESSAGE_PAGE * @type {WorkflowStepNodeTypeEnum} * @memberof WorkflowStep */ readonly nodeType?: WorkflowStepNodeTypeEnum; /** * * @type {Array} * @memberof WorkflowStep */ parentStepIds?: Array; /** * * @type {WorkflowStepPayload} * @memberof WorkflowStep */ payload?: WorkflowStepPayload; /** * * @type {Date} * @memberof WorkflowStep */ readonly updatedAt?: Date; } /** * @export */ export declare const WorkflowStepEventActionEnum: { readonly EventActionUnspecified: "EVENT_ACTION_UNSPECIFIED"; readonly EventActionClientRedirect: "EVENT_ACTION_CLIENT_REDIRECT"; readonly EventActionLinkVisit: "EVENT_ACTION_LINK_VISIT"; readonly EventActionPasswordVerify: "EVENT_ACTION_PASSWORD_VERIFY"; readonly EventActionFormSubmit: "EVENT_ACTION_FORM_SUBMIT"; readonly EventActionContactCard: "EVENT_ACTION_CONTACT_CARD"; readonly EventActionMultiLink: "EVENT_ACTION_MULTI_LINK"; readonly EventActionVisitTypeCondition: "EVENT_ACTION_VISIT_TYPE_CONDITION"; readonly EventActionCountryCondition: "EVENT_ACTION_COUNTRY_CONDITION"; readonly EventActionDayOfWeekCondition: "EVENT_ACTION_DAY_OF_WEEK_CONDITION"; readonly EventActionTimeOfDayCondition: "EVENT_ACTION_TIME_OF_DAY_CONDITION"; readonly EventActionDayOfMonthCondition: "EVENT_ACTION_DAY_OF_MONTH_CONDITION"; readonly EventActionSpecificDateCondition: "EVENT_ACTION_SPECIFIC_DATE_CONDITION"; readonly EventActionSocialLinksPage: "EVENT_ACTION_SOCIAL_LINKS_PAGE"; readonly EventActionDeviceTypeCondition: "EVENT_ACTION_DEVICE_TYPE_CONDITION"; readonly EventActionDevicePlatformCondition: "EVENT_ACTION_DEVICE_PLATFORM_CONDITION"; readonly EventActionDeviceBrowserCondition: "EVENT_ACTION_DEVICE_BROWSER_CONDITION"; readonly EventActionDeviceBrandCondition: "EVENT_ACTION_DEVICE_BRAND_CONDITION"; readonly EventActionDeviceActorCondition: "EVENT_ACTION_DEVICE_ACTOR_CONDITION"; readonly EventActionVisitorDataCondition: "EVENT_ACTION_VISITOR_DATA_CONDITION"; readonly EventActionThankYouPage: "EVENT_ACTION_THANK_YOU_PAGE"; readonly EventActionMessagePage: "EVENT_ACTION_MESSAGE_PAGE"; }; export type WorkflowStepEventActionEnum = typeof WorkflowStepEventActionEnum[keyof typeof WorkflowStepEventActionEnum]; /** * @export */ export declare const WorkflowStepKindEnum: { readonly KindUnspecified: "KIND_UNSPECIFIED"; readonly KindEntry: "KIND_ENTRY"; readonly KindExit: "KIND_EXIT"; readonly KindInteraction: "KIND_INTERACTION"; readonly KindCondition: "KIND_CONDITION"; }; export type WorkflowStepKindEnum = typeof WorkflowStepKindEnum[keyof typeof WorkflowStepKindEnum]; /** * @export */ export declare const WorkflowStepNodeTypeEnum: { readonly NodeTypeUnspecified: "NODE_TYPE_UNSPECIFIED"; readonly NodeTypeComposite: "NODE_TYPE_COMPOSITE"; readonly NodeTypeAtomic: "NODE_TYPE_ATOMIC"; }; export type WorkflowStepNodeTypeEnum = typeof WorkflowStepNodeTypeEnum[keyof typeof WorkflowStepNodeTypeEnum]; /** * Check if a given object implements the WorkflowStep interface. */ export declare function instanceOfWorkflowStep(value: object): value is WorkflowStep; export declare function WorkflowStepFromJSON(json: any): WorkflowStep; export declare function WorkflowStepFromJSONTyped(json: any, ignoreDiscriminator: boolean): WorkflowStep; export declare function WorkflowStepToJSON(json: any): WorkflowStep; export declare function WorkflowStepToJSONTyped(value?: Omit | null, ignoreDiscriminator?: boolean): any;