# Step Inputs

[Actions](https://prismatic.io/docs/custom-connectors/actions.md), [Triggers](https://prismatic.io/docs/custom-connectors/triggers.md) and [Data Sources](https://prismatic.io/docs/custom-connectors/data-sources.md) are configured via `inputs`. Each `input` is comprised of a required `label` and `type`, and optional `placeholder`, `default`, `comments`, `required` and `model`.

Consider this example input:

```typescript
const middleName = input({
  label: "Middle Name",
  placeholder: "Middle name of a person",
  type: "string",
  required: false,
  default: "",
  comments: "Leave blank if the user has no middle name",
  clean: (value) => util.types.toString(value),
});

```

This contributes to an input prompt that looks like this:

![Step Config - Properly Format Name in Prismatic app](data:image/png;base64,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)

Note where the `label` and `placeholder` text appeared in the web application, and note that First Name and Last Name are required - indicated with a `*`, but Middle Name is not.

## Input types[​](#input-types "Direct link to Input types")

An input can take a number of types, which affects how the input renders in the Prismatic web application:

* **string** will allow users to input or reference a string of characters. ![String input in Prismatic app](data:image/png;base64,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)
* **password** will allow users to input or reference a string of characters, and the string will be obfuscated in the UI. ![Password input in Prismatic app](data:image/png;base64,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)
* **boolean** allows users to enter one of two values: true or false. ![Boolean input in Prismatic app](data:image/png;base64,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)
* **code** opens a code editor so users can enter XML, HTML, JSON, etc. Syntax highlighting can be added to a **code** input's definition and can reference any language supported by [PrismJS](https://prismjs.com/#supported-languages). (e.g. `input({ label: "My Code", type: "code", language: "json" })`) ![Code editor in Prismatic app](/docs/assets/images/code-48c2a44bd46c420ae4f7c50ebdbda038.png)
* **conditional** allows users to enter a series of logical conditionals. This is most notably used in the [branch](https://prismatic.io/docs/components/branch.md) component. ![Conditional input in Prismatic app](/docs/assets/images/conditional-e506c09b0bdf739f65ded9ba7246e84f.png)

You can also create **connection** inputs for actions. Read more about [connections](https://prismatic.io/docs/custom-connectors/connections.md).

## Dropdown menu inputs[​](#dropdown-menu-inputs "Direct link to Dropdown menu inputs")

Rather than allowing integration builders to enter values for an input, you might want to have users choose a value from a list of possible values. You can do that by making your input into a dropdown menu.

![Dropdown menu in Prismatic app](/docs/assets/images/dropdown-input-c0e2e392f8c46f919f81d1c09d98438e.png)

To create an input with a dropdown menu, add a `model` property to your input:

```ts
export const acmeEnvironment = input({
  label: "Acme Inc Environment to Use",
  placeholder: "ACME Environment",
  type: "string",
  required: true,
  model: [
    {
      label: "Production",
      value: "https://api.acme.com/",
    },
    {
      label: "Staging",
      value: "https://staging.acme.com/api",
    },
    {
      label: "Sandbox",
      value: "https://sandbox.acme.com/api",
    },
  ],
});

```

The `model` property should be an array of objects, with each object containing a `label` and a `value`. The `label` is shown in the dropdown menu. The `value` is passed in as the input's value to the custom component.

## Collection inputs[​](#collection-inputs "Direct link to Collection inputs")

Most inputs represent single strings. A **collection** input, on the other hand, represents an array of values or key-value pairs. Collections are handy when you don't know how many items a component user might need.

### Value list collection[​](#value-list-collection "Direct link to Value list collection")

For example, your component might require an array of record to query, but you might not know how many record IDs a component user will enter. You can create a `valuelist` collection in code like this:

Value List Collection Example

```typescript
const assetIdsInputField = input({
  label: "Asset ID(s)",
  type: "string",
  collection: "valuelist",
  required: true,
});

```

The corresponding UI in the integration designer would then prompt a user for any number of record IDs that they would like to enter:

![Value List collection in Prismatic app](/docs/assets/images/value-list-collection-fbd0abb1b26e205407cced17d6212571.png)

When the input is received by an action's [perform function](https://prismatic.io/docs/custom-connectors/actions.md#the-perform-function), the input is a `string[]`.

### Key value list collection[​](#key-value-list-collection "Direct link to Key value list collection")

If you would like users to enter a number of key-value pairs as an input, you can use a `keyvaluelist` collection. The *Header* input on the [HTTP component](https://prismatic.io/docs/components/http.md#httpget) actions is an example of a `keyvaluelist` collection, and is defined in code like this:

Key Value List Input

```typescript
export const headersInputField = input({
  label: "Header",
  type: "string",
  collection: "keyvaluelist",
  required: false,
  comments: "A list of headers to send with the request.",
  example: "User-Agent: curl/7.64.1",
});

```

The "Header" input, then, appears like this in the integration designer:

![Key Value List Collection in Prismatic app](/docs/assets/images/key-value-list-collection-93c770337fa131209be8f4003012a14f.png)

When the input is received by an action's [perform function](https://prismatic.io/docs/custom-connectors/actions.md#the-perform-function), the input is an array of objects of the form:

```typescript
[
  {
    key: "foo",
    value: "bar",
  },
  {
    key: "baz",
    value: 5,
  },
];

```

If you would like to convert the input to a key-value pair object, you can use the built-in Spectral function, `keyValPairListToObject`:

```typescript
import { util } from "@prismatic-io/spectral";
const myObject = util.types.keyValPairListToObject(myInput);
// { foo: "bar", baz: 5 }

```

## Structured object inputs[​](#structured-object-inputs "Direct link to Structured object inputs")

A structured object input groups related sub-inputs into a single named object. Use `structuredObjectInput` when an action needs to accept a complex type with named fields - such as a mailing address, a person's name, or any nested record. The integration designer presents each sub-field as its own input row under a collapsible group.

Import `structuredObjectInput` from `@prismatic-io/spectral` and pass it a map of `inputs`:

Structured object input

```typescript
import { action, input, structuredObjectInput } from "@prismatic-io/spectral";

const createContactAction = action({
  display: {
    label: "Create Contact",
    description: "Create a new CRM contact",
  },
  inputs: {
    connection: connectionInput,
    name: structuredObjectInput({
      label: "Name",
      inputs: {
        prefix: input({ label: "Prefix", type: "string" }),
        firstName: input({
          label: "First Name",
          type: "string",
          required: true,
        }),
        lastName: input({ label: "Last Name", type: "string", required: true }),
      },
    }),
    address: structuredObjectInput({
      label: "Mailing Address",
      inputs: {
        street: input({ label: "Street", type: "string" }),
        city: input({ label: "City", type: "string" }),
        state: input({ label: "State", type: "string" }),
        zip: input({ label: "Zip Code", type: "string" }),
      },
    }),
  },
  perform: async (context, inputs) => {
    // Structured inputs are plain objects - access sub-fields with dot notation
    const fullName =
      `${inputs.name.prefix ?? ""} ${inputs.name.firstName} ${inputs.name.lastName}`.trim();
    const { street, city, state, zip } = inputs.address;

    const client = createCrmClient(inputs.connection);
    return {
      data: await client.contacts.create({
        name: fullName,
        street,
        city,
        state,
        zip,
      }),
    };
  },
});

```

![Structured object input in Prismatic app](/docs/assets/images/structured-object-input-1429c427dc2e1b27a6db141f086ecdae.png)

## Dynamic object inputs[​](#dynamic-object-inputs "Direct link to Dynamic object inputs")

A dynamic object input shows a different set of sub-inputs depending on which **configuration** the integration builder selects. This is useful when a single action must handle multiple distinct record types - for example, creating an Account, a Lead, or a Contact in a CRM - where each type has its own fields.

Import `dynamicObjectInput` from `@prismatic-io/spectral` and define a `configurations` map where each key names a configuration:

Dynamic object input - CRM record types

```typescript
import { action, input, dynamicObjectInput } from "@prismatic-io/spectral";

const createRecordAction = action({
  display: {
    label: "Create Record",
    description: "Create an Account, Lead, or Contact in your CRM",
  },
  inputs: {
    connection: connectionInput,
    record: dynamicObjectInput({
      label: "Record",
      configurations: {
        account: {
          label: "Account",
          inputs: {
            companyName: input({
              label: "Company Name",
              type: "string",
              required: true,
            }),
            industry: input({
              label: "Industry",
              type: "string",
              model: [
                { label: "Technology", value: "tech" },
                { label: "Finance", value: "finance" },
                { label: "Healthcare", value: "healthcare" },
              ],
            }),
            annualRevenue: input({ label: "Annual Revenue", type: "string" }),
          },
        },
        lead: {
          label: "Lead",
          inputs: {
            firstName: input({
              label: "First Name",
              type: "string",
              required: true,
            }),
            lastName: input({
              label: "Last Name",
              type: "string",
              required: true,
            }),
            company: input({ label: "Company", type: "string" }),
            leadSource: input({
              label: "Lead Source",
              type: "string",
              model: [
                { label: "Web", value: "web" },
                { label: "Referral", value: "referral" },
                { label: "Event", value: "event" },
              ],
            }),
          },
        },
        contact: {
          label: "Contact",
          inputs: {
            firstName: input({
              label: "First Name",
              type: "string",
              required: true,
            }),
            lastName: input({
              label: "Last Name",
              type: "string",
              required: true,
            }),
            email: input({ label: "Email", type: "string", required: true }),
            phone: input({ label: "Phone", type: "string" }),
          },
        },
      },
    }),
  },
  perform: async (context, inputs) => {
    const client = createCrmClient(inputs.connection);

    // inputs.record.configuration holds the key the builder selected.
    // inputs.record.values holds the input values for that configuration.
    if (inputs.record.configuration === "account") {
      return {
        data: await client.accounts.create({
          companyName: inputs.record.values.companyName,
          industry: inputs.record.values.industry,
          annualRevenue: inputs.record.values.annualRevenue,
        }),
      };
    }

    if (inputs.record.configuration === "lead") {
      return {
        data: await client.leads.create({
          firstName: inputs.record.values.firstName,
          lastName: inputs.record.values.lastName,
          company: inputs.record.values.company,
          leadSource: inputs.record.values.leadSource,
        }),
      };
    }

    if (inputs.record.configuration === "contact") {
      return {
        data: await client.contacts.create({
          firstName: inputs.record.values.firstName,
          lastName: inputs.record.values.lastName,
          email: inputs.record.values.email,
          phone: inputs.record.values.phone,
        }),
      };
    }
  },
});

```

Note that [discriminated unions](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes-func.html#discriminated-unions) help in identifying the shape of `inputs.record.values` based on the value of `inputs.record.configuration`.

The integration designer shows a dropdown of configuration labels - **Account**, **Lead**, or **Contact** - and displays only the sub-inputs for the selected type. In the `perform` function, `inputs.record.configuration` holds the selected configuration key, and `inputs.record.values` holds the input values the builder filled in for that configuration.

![Dynamic object input in Prismatic app](/docs/assets/images/dynamic-object-input-f5d7c525e10c5d5710e367fc70ee71a0.png)

## Cleaning inputs[​](#cleaning-inputs "Direct link to Cleaning inputs")

An input of an action can be anything - a number, string, boolean, JavaScript Buffer, a complex object with lots of properties, etc. If you reuse an input for multiple actions, it's handy to do some preprocessing and type conversion on the input. That's where a `clean` function on an input comes in.

For example, suppose you expect an input to be a number. But, inputs by default are presented to `perform` functions as strings. You can leverage the `util.types.toNumber()` utility function and `clean` property to ensure that the input is presented to the `perform` function as a number:

Ensure input is a number

```typescript
const serverPortInput = input({
  label: "Server Port",
  placeholder: "The port of the API server",
  comments: "Look for the number after the colon (my-server.com:3000)"
  type: "string",
  default: "3000",
  required: true,
  clean: (value) => util.types.toNumber(value),
});

```

You can also add validation to the input. For example, if you want to validate that the input is an IPv4 IP address, you can build a more complex `clean` function:

Validate that an input is an IP address

```typescript
const validateIpAddress = (value: unknown) => {
  const ipAddressRegex =
    /^(?:(?:2(?:[0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9])\.){3}(?:(?:2([0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9]))$/;
  const inputValue = util.types.toString(value);
  if (!ipAddressRegex.test(inputValue)) {
    throw new Error(`The value "${inputValue}" is not a valid IP address`);
  }
  return inputValue;
};

const ipAddressInput = input({
  label: "IP Address",
  placeholder: "Server IP Address",
  type: "string",
  default: "192.168.1.1",
  required: true,
  clean: validateIpAddress,
});

```

## Handle complex inputs in a custom action[​](#handle-complex-inputs-in-a-custom-action "Direct link to Handle complex inputs in a custom action")

When an API endpoint that you're wrapping in a custom action expects a simple payload, like

```text
POST /widgets

{
  "name": "string",
  "color": "string",
  "quantity": "number"
}

```

it's easy to map each value in the POST request to an input. Here, we'd create a "name" input, a "color" input, and a "quantity" input. Then, we'd apply a `clean: util.types.toNumber` clean function to the "quantity" input to ensure it is cast to a number.

But, some endpoints expect complex payloads that may contain arrays of objects with optional properties, etc.

```text
POST /widgets
{
  "externalId": "abc-123",
  "variants": [
    {
      "name": "Variant 1",
      "color": "red",
      "price": {
        "usd": 5,
        "ca": 5.5
      }
    },
    {
      "name": "Variant 2",
      "color": "blue",
      "price": {
        "usd": 6
      }
    }
  ]
}

```

In this case, it's likely that an integration builder will want to construct a property like `variants` programmatically, and it's probably best to present two inputs, "External ID" which is `type: "string"` and "Variants" which is `type: "code"`. To accommodate both JSON and JavaScript object inputs, use the `util.types.toObject` function to ensure that what is entered becomes a JavaScript object. For example,

Convert a complex input to an object

```ts
const createWidgets = action({
  display: {
    label: "Create Widgets",
    description: "Create widgets and their variants",
  },
  inputs: {
    connection: connectionInput,
    externalId: input({
      label: "External ID",
      type: "string",
      comments: "The ID stored in Acme for this Widget type",
      clean: util.types.toString,
    }),
    variants: input({
      label: "Variants",
      comments:
        "Variant types of the widget. Ensure you provide an array of variant objects.",
      type: "code",
      language: "json",
      clean: util.types.toObject,
      example: JSON.stringify(
        [
          {
            name: "Variant 1",
            color: "red",
            price: {
              usd: 5,
              ca: 5.5,
            },
          },
          {
            name: "Variant 2",
            color: "blue",
            price: {
              usd: 6,
            },
          },
        ],
        null,
        2,
      ),
    }),
  },
  perform: async (context, inputs) => {
    const client = createAcmeClient(inputs.connection);
    const { data } = await client.post("/widgets", {
      externalId: inputs.externalId,
      variants: inputs.variants,
    });
    return { data };
  },
});

```
