Zapier · Schema

Zapier Platform

IntegrationsiPaaS
View JSON Schema on GitHub

JSON Schema

zapier-platform-schema.json Raw ↑
{
  "version": "18.5.1",
  "schemas": {
    "AppSchema": {
      "id": "/AppSchema",
      "description": "Represents a full app.",
      "type": "object",
      "required": ["version", "platformVersion"],
      "properties": {
        "version": {
          "description": "A version identifier for your code.",
          "$ref": "/VersionSchema"
        },
        "platformVersion": {
          "description": "A version identifier for the Zapier execution environment.",
          "$ref": "/VersionSchema"
        },
        "beforeApp": {
          "description": "EXPERIMENTAL: Before the perform method is called on your app, you can modify the execution context.",
          "$ref": "/MiddlewaresSchema"
        },
        "afterApp": {
          "description": "EXPERIMENTAL: After the perform method is called on your app, you can modify the response.",
          "$ref": "/MiddlewaresSchema"
        },
        "authentication": {
          "description": "Choose what scheme your API uses for authentication.",
          "$ref": "/AuthenticationSchema"
        },
        "requestTemplate": {
          "description": "Define a request mixin, great for setting custom headers, content-types, etc.",
          "$ref": "/RequestSchema"
        },
        "beforeRequest": {
          "description": "Before an HTTP request is sent via our `z.request()` client, you can modify it.",
          "$ref": "/MiddlewaresSchema"
        },
        "afterResponse": {
          "description": "After an HTTP response is recieved via our `z.request()` client, you can modify it.",
          "$ref": "/MiddlewaresSchema"
        },
        "hydrators": {
          "description": "An optional bank of named functions that you can use in `z.hydrate('someName')` to lazily load data.",
          "$ref": "/HydratorsSchema"
        },
        "resources": {
          "description": "All the resources for your app. Zapier will take these and generate the relevent triggers/searches/creates automatically.",
          "$ref": "/ResourcesSchema"
        },
        "triggers": {
          "description": "All the triggers for your app. You can add your own here, or Zapier will automatically register any from the list/hook methods on your resources.",
          "$ref": "/TriggersSchema"
        },
        "bulkReads": {
          "description": "All of the read bulks (GETs) your app exposes to retrieve resources in batches.",
          "$ref": "/BulkReadsSchema"
        },
        "searches": {
          "description": "All the searches for your app. You can add your own here, or Zapier will automatically register any from the search method on your resources.",
          "$ref": "/SearchesSchema"
        },
        "creates": {
          "description": "All the creates for your app. You can add your own here, or Zapier will automatically register any from the create method on your resources.",
          "$ref": "/CreatesSchema"
        },
        "searchOrCreates": {
          "description": "All the search-or-create combos for your app. You can create your own here, or Zapier will automatically register any from resources that define a search, a create, and a get (or define a searchOrCreate directly). Register non-resource search-or-creates here as well.",
          "$ref": "/SearchOrCreatesSchema"
        },
        "searchAndCreates": {
          "description": "An alias for \"searchOrCreates\".",
          "$ref": "/SearchAndCreatesSchema"
        },
        "flags": {
          "description": "Top-level app options",
          "$ref": "/AppFlagsSchema"
        },
        "throttle": {
          "description": "Zapier uses this configuration to apply throttling when the limit for the window is exceeded. When set here, it is the default throttle configuration used on each action of the integration. And when set in an action's operation object, it gets overwritten for that action only.",
          "$ref": "/ThrottleObjectSchema"
        },
        "legacy": {
          "description": "**INTERNAL USE ONLY**. Zapier uses this to hold properties from a legacy Web Builder app.",
          "type": "object",
          "docAnnotation": {
            "hide": true
          }
        },
        "firehoseWebhooks": {
          "description": "**INTERNAL USE ONLY**. Zapier uses this for internal webhook app configurations.",
          "type": "object",
          "docAnnotation": {
            "hide": true
          }
        }
      },
      "additionalProperties": false
    },
    "FunctionRequireSchema": {
      "id": "/FunctionRequireSchema",
      "description": "A path to a file that might have content like `module.exports = (z, bundle) => [{id: 123}];`.",
      "type": "object",
      "required": ["require"],
      "properties": {
        "require": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "FunctionSourceSchema": {
      "id": "/FunctionSourceSchema",
      "description": "Source code like `{source: \"return 1 + 2\"}` which the system will wrap in a function for you.",
      "type": "object",
      "required": ["source"],
      "properties": {
        "source": {
          "type": "string",
          "pattern": "return",
          "description": "JavaScript code for the function body. This must end with a `return` statement."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Function signature. Defaults to `['z', 'bundle']` if not specified."
        }
      },
      "additionalProperties": false
    },
    "FlatObjectSchema": {
      "id": "/FlatObjectSchema",
      "description": "An object whose values can only be primitives",
      "type": "object",
      "patternProperties": {
        "[^\\s]+": {
          "description": "Any key may exist in this flat object as long as its values are simple.",
          "anyOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "type": "integer"
            },
            {
              "type": "number"
            },
            {
              "type": "boolean"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "FunctionSchema": {
      "id": "/FunctionSchema",
      "description": "Internal pointer to a function from the original source or the source code itself. Encodes arity and if `arguments` is used in the body. Note - just write normal functions and the system will encode the pointers for you. Or, provide {source: \"return 1 + 2\"} and the system will wrap in a function for you.",
      "oneOf": [
        {
          "type": "string",
          "pattern": "^\\$func\\$\\d+\\$[tf]\\$$"
        },
        {
          "$ref": "/FunctionRequireSchema"
        },
        {
          "$ref": "/FunctionSourceSchema"
        }
      ]
    },
    "FieldChoiceWithLabelSchema": {
      "id": "/FieldChoiceWithLabelSchema",
      "description": "An object describing a labeled choice in a static dropdown. Useful if the value a user picks isn't exactly what the zap uses. For instance, when they click on a nickname, but the zap uses the user's full name ([image](https://cdn.zapier.com/storage/photos/8ed01ac5df3a511ce93ed2dc43c7fbbc.png)).",
      "type": "object",
      "required": ["value", "sample", "label"],
      "properties": {
        "value": {
          "description": "The actual value that is sent into the Zap. This is displayed as light grey text in the editor. Should match sample exactly.",
          "type": "string",
          "minLength": 1
        },
        "sample": {
          "description": "A legacy field that is no longer used by the editor, but it is still required for now and should match the value.",
          "type": "string",
          "minLength": 1
        },
        "label": {
          "description": "A human readable label for this value.",
          "type": "string",
          "minLength": 1
        }
      }
    },
    "FieldChoicesSchema": {
      "id": "/FieldChoicesSchema",
      "description": "A static dropdown of options. Which you use depends on your order and label requirements:\n\nNeed a Label? | Does Order Matter? | Type to Use\n---|---|---\nYes | No | Object of value -> label\nNo | Yes | Array of Strings\nYes | Yes | Array of [FieldChoiceWithLabel](#fieldchoicewithlabelschema)",
      "oneOf": [
        {
          "type": "object",
          "minProperties": 1,
          "not": {
            "required": ["perform"]
          }
        },
        {
          "type": "array",
          "minItems": 1,
          "items": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "$ref": "/FieldChoiceWithLabelSchema"
              }
            ]
          }
        }
      ]
    },
    "PlainFieldSchema": {
      "id": "/PlainFieldSchema",
      "description": "In addition to the requirements below, the following keys are mutually exclusive:\n\n* `children` & `list`\n* `children` & `dict`\n* `children` & `type`\n* `children` & `placeholder`\n* `children` & `helpText`\n* `children` & `default`\n* `dict` & `list`\n* `dynamic` & `dict`\n* `dynamic` & `choices`",
      "type": "object",
      "required": ["key"],
      "docAnnotation": {
        "hide": true
      },
      "properties": {
        "key": {
          "description": "A unique machine readable key for this value (IE: \"fname\").",
          "type": "string",
          "minLength": 1
        },
        "label": {
          "description": "A human readable label for this value (IE: \"First Name\").",
          "type": "string",
          "minLength": 1
        },
        "type": {
          "description": "The type of this value. Use `string` for basic text input, `text` for a large, `<textarea>` style box, and `code` for a `<textarea>` with a fixed-width font. Field type of `file` will accept either a file object or a string. If a URL is provided in the string, Zapier will automatically make a GET for that file. Otherwise, a .txt file will be generated.",
          "type": "string",
          "enum": [
            "string",
            "text",
            "integer",
            "number",
            "boolean",
            "datetime",
            "file",
            "password",
            "copy",
            "code",
            "json"
          ]
        },
        "required": {
          "description": "If this value is required or not.",
          "type": "boolean"
        },
        "default": {
          "description": "A default value that is saved the first time a Zap is created.",
          "type": "string",
          "minLength": 1
        },
        "list": {
          "description": "Acts differently when used in inputFields vs. when used in outputFields. In inputFields: Can a user provide multiples of this field? In outputFields: Does this field return an array of items of type `type`?",
          "type": "boolean"
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "/PlainFieldSchema"
          },
          "description": "An array of child fields that define the structure of a sub-object for this field. Usually used for line items.",
          "minItems": 1
        },
        "dict": {
          "description": "Is this field a key/value input?",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "AuthFieldSchema": {
      "id": "/AuthFieldSchema",
      "description": "Field schema specialized for authentication fields. In addition to the requirements below, the following keys are mutually exclusive:\n\n* `children` & `list`\n* `children` & `dict`\n* `children` & `type`\n* `children` & `placeholder`\n* `children` & `helpText`\n* `children` & `default`\n* `dict` & `list`\n* `dynamic` & `dict`\n* `dynamic` & `choices`",
      "required": ["key"],
      "type": "object",
      "properties": {
        "key": {
          "description": "A unique machine readable key for this value (IE: \"fname\").",
          "type": "string",
          "minLength": 1
        },
        "label": {
          "description": "A human readable label for this value (IE: \"First Name\").",
          "type": "string",
          "minLength": 1
        },
        "type": {
          "description": "The type of this value used to be.",
          "type": "string",
          "enum": [
            "string",
            "number",
            "boolean",
            "datetime",
            "copy",
            "password",
            "integer",
            "text"
          ]
        },
        "required": {
          "description": "If this value is required or not. This defaults to `true`.",
          "type": "boolean"
        },
        "default": {
          "description": "A default value that is saved the first time a Zap is created.",
          "type": "string",
          "minLength": 1
        },
        "list": {
          "description": "Acts differently when used in inputFields vs. when used in outputFields. In inputFields: Can a user provide multiples of this field? In outputFields: Does this field return an array of items of type `type`?",
          "type": "boolean"
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "/AuthFieldSchema"
          },
          "description": "An array of child fields that define the structure of a sub-object for this field. Usually used for line items.",
          "minItems": 1
        },
        "dict": {
          "description": "Is this field a key/value input?",
          "type": "boolean"
        },
        "helpText": {
          "description": "A human readable description of this value (IE: \"The first part of a full name.\"). You can use Markdown.",
          "type": "string",
          "minLength": 1,
          "maxLength": 1000
        },
        "placeholder": {
          "description": "An example value that is not saved.",
          "type": "string",
          "minLength": 1
        },
        "choices": {
          "description": "An object of machine keys and human values to populate a static dropdown.",
          "$ref": "/FieldChoicesSchema"
        },
        "computed": {
          "description": "Is this field automatically populated (and hidden from the user)? Note: Only OAuth and Session Auth support fields with this key.",
          "type": "boolean"
        },
        "inputFormat": {
          "description": "Useful when you expect the input to be part of a longer string. Put \"{{input}}\" in place of the user's input (IE: \"https://{{input}}.yourdomain.com\").",
          "type": "string",
          "pattern": "^.*{{input}}.*$"
        },
        "isNoSecret": {
          "description": "Indicates if this authentication field is safe to e.g. be stored without encryption or displayed (not a secret).",
          "type": "boolean"
        }
      }
    },
    "RequestSchema": {
      "id": "/RequestSchema",
      "description": "A representation of a HTTP request - you can use the `{{syntax}}` to inject authentication, field or global variables.",
      "type": "object",
      "properties": {
        "method": {
          "description": "The HTTP method for the request.",
          "type": "string",
          "default": "GET",
          "enum": ["GET", "PUT", "POST", "PATCH", "DELETE", "HEAD"]
        },
        "url": {
          "description": "A URL for the request (we will parse the querystring and merge with params). Keys and values will not be re-encoded.",
          "type": "string"
        },
        "body": {
          "description": "Can be nothing, a raw string or JSON (object or array).",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "params": {
          "description": "A mapping of the querystring - will get merged with any query params in the URL. Keys and values will be encoded.",
          "$ref": "/FlatObjectSchema"
        },
        "headers": {
          "description": "The HTTP headers for the request.",
          "$ref": "/FlatObjectSchema"
        },
        "auth": {
          "description": "An object holding the auth parameters for OAuth1 request signing, like `{oauth_token: 'abcd', oauth_token_secret: '1234'}`. Or an array reserved (i.e. not implemented yet) to hold the username and password for Basic Auth. Like `['AzureDiamond', 'hunter2']`.",
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string",
                "minProperties": 2,
                "maxProperties": 2
              }
            },
            {
              "$ref": "/FlatObjectSchema"
            }
          ]
        },
        "removeMissingValuesFrom": {
          "description": "Should missing values be sent? (empty strings, `null`, and `undefined` only — `[]`, `{}`, and `false` will still be sent). Allowed fields are `params` and `body`. The default is `false`, ex: ```removeMissingValuesFrom: { params: false, body: false }```",
          "type": "object",
          "properties": {
            "params": {
              "description": "Refers to data sent via a requests query params (`req.params`)",
              "type": "boolean",
              "default": false
            },
            "body": {
              "description": "Refers to tokens sent via a requsts body (`req.body`)",
              "type": "boolean",
              "default": false
            }
          },
          "additionalProperties": false
        },
        "serializeValueForCurlies": {
          "description": "A function to customize how to serialize a value for curlies `{{var}}` in the request object. By default, when this is unspecified, the request client only replaces curlies where variables are strings, and would throw an error for non-strings. The function should accepts a single argument as the value to be serialized and return the string representation of the argument.",
          "$ref": "/FunctionSchema"
        },
        "skipThrowForStatus": {
          "description": "If `true`, don't throw an exception for response 400 <= status < 600 automatically before resolving with the response. Defaults to `false`.",
          "type": "boolean",
          "default": false
        },
        "skipEncodingChars": {
          "description": "Contains the characters that you want left unencoded in the query params (`req.params`). If unspecified, `z.request()` will percent-encode non-ascii characters and these reserved characters: ``:$/?#[]@$&+,;=^@`\\``.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "RedirectRequestSchema": {
      "id": "/RedirectRequestSchema",
      "description": "A representation of a HTTP redirect - you can use the `{{syntax}}` to inject authentication, field or global variables.",
      "type": "object",
      "properties": {
        "method": {
          "description": "The HTTP method for the request.",
          "type": "string",
          "default": "GET",
          "enum": ["GET"]
        },
        "url": {
          "description": "A URL for the request (we will parse the querystring and merge with params). Keys and values will not be re-encoded.",
          "type": "string"
        },
        "params": {
          "description": "A mapping of the querystring - will get merged with any query params in the URL. Keys and values will be encoded.",
          "$ref": "/FlatObjectSchema"
        }
      },
      "additionalProperties": false
    },
    "AuthFieldsSchema": {
      "id": "/AuthFieldsSchema",
      "description": "An array or collection of authentication fields.",
      "type": "array",
      "items": {
        "oneOf": [
          {
            "$ref": "/AuthFieldSchema"
          }
        ]
      }
    },
    "AuthenticationBasicConfigSchema": {
      "id": "/AuthenticationBasicConfigSchema",
      "description": "Config for Basic Authentication. No extra properties are required to setup Basic Auth, so you can leave this empty if your app uses Basic Auth.",
      "type": "object",
      "properties": {},
      "additionalProperties": false
    },
    "AuthenticationCustomConfigSchema": {
      "id": "/AuthenticationCustomConfigSchema",
      "description": "Config for custom authentication (like API keys). No extra properties are required to setup this auth type, so you can leave this empty if your app uses a custom auth method.",
      "type": "object",
      "properties": {
        "sendCode": {
          "description": "EXPERIMENTAL: Define the call Zapier should make to send the OTP code.",
          "oneOf": [
            {
              "$ref": "/RequestSchema"
            },
            {
              "$ref": "/FunctionSchema"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "AuthenticationDigestConfigSchema": {
      "id": "/AuthenticationDigestConfigSchema",
      "description": "Config for Digest Authentication. No extra properties are required to setup Digest Auth, so you can leave this empty if your app uses Digets Auth.",
      "type": "object",
      "properties": {},
      "additionalProperties": false
    },
    "AuthenticationOAuth1ConfigSchema": {
      "id": "/AuthenticationOAuth1ConfigSchema",
      "description": "Config for OAuth1 authentication.",
      "type": "object",
      "required": ["getRequestToken", "authorizeUrl", "getAccessToken"],
      "properties": {
        "getRequestToken": {
          "description": "Define where Zapier will acquire a request token which is used for the rest of the three legged authentication process.",
          "oneOf": [
            {
              "$ref": "/RequestSchema"
            },
            {
              "$ref": "/FunctionSchema"
            }
          ]
        },
        "authorizeUrl": {
          "description": "Define where Zapier will redirect the user to authorize our app. Typically, you should append an `oauth_token` querystring parameter to the request.",
          "oneOf": [
            {
              "$ref": "/RedirectRequestSchema"
            },
            {
              "$ref": "/FunctionSchema"
            }
          ]
        },
        "getAccessToken": {
          "description": "Define how Zapier fetches an access token from the API",
          "oneOf": [
            {
              "$ref": "/RequestSchema"
            },
            {
              "$ref": "/FunctionSchema"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "AuthenticationOAuth2ConfigSchema": {
      "id": "/AuthenticationOAuth2ConfigSchema",
      "description": "Config for OAuth2 authentication.",
      "type": "object",
      "required": ["authorizeUrl", "getAccessToken"],
      "properties": {
        "authorizeUrl": {
          "description": "Define where Zapier will redirect the user to authorize our app. Note: we append the redirect URL and state parameters to return value of this function.",
          "oneOf": [
            {
              "$ref": "/RedirectRequestSchema"
            },
            {
              "$ref": "/FunctionSchema"
            }
          ]
        },
        "getAccessToken": {
          "description": "Define how Zapier fetches an access token from the API",
          "oneOf": [
            {
              "$ref": "/RequestSchema"
            },
            {
              "$ref": "/FunctionSchema"
            }
          ]
        },
        "refreshAccessToken": {
          "description": "Define how Zapier will refresh the access token from the API",
          "oneOf": [
            {
              "$ref": "/RequestSchema"
            },
            {
              "$ref": "/FunctionSchema"
            }
          ]
        },
        "codeParam": {
          "description": "Define a non-standard code param Zapier should scrape instead.",
          "type": "string"
        },
        "scope": {
          "description": "What scope should Zapier request?",
          "type": "string"
        },
        "autoRefresh": {
          "description": "Should Zapier invoke `refreshAccessToken` when we receive an error for a 401 response?",
          "type": "boolean"
        },
        "enablePkce": {
          "description": "Should Zapier use PKCE for OAuth2?",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "AuthenticationSessionConfigSchema": {
      "id": "/AuthenticationSessionConfigSchema",
      "description": "Config for session authentication.",
      "type": "object",
      "required": ["perform"],
      "properties": {
        "perform": {
          "description": "Define how Zapier fetches the additional authData needed to make API calls.",
          "oneOf": [
            {
              "$ref": "/RequestSchema"
            },
            {
              "$ref": "/FunctionSchema"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "RefResourceSchema": {
      "id": "/RefResourceSchema",
      "description": "Reference a resource by key and the data it returns. In the format of: `{resource_key}.{foreign_key}(.{human_label_key})`.",
      "type": "string",
      "pattern": "^[a-zA-Z0-9_]+\\.[a-zA-Z0-9_\\s\\[\\]]+(\\.[a-zA-Z0-9_\\s\\[\\]]+(,[a-zA-Z0-9_\\s\\[\\]]+)*)?$"
    },
    "FieldDynamicChoicesSchema": {
      "id": "/FieldDynamicChoicesSchema",
      "description": "Describes dynamic dropdowns powered by a perform function or request.",
      "type": "object",
      "required": ["perform"],
      "properties": {
        "perform": {
          "description": "A function or request that returns choices for this dynamic dropdown.",
          "oneOf": [
            {
              "$ref": "/FunctionSchema"
            },
            {
              "$ref": "/RequestSchema"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "FieldMetaSchema": {
      "id": "/FieldMetaSchema",
      "type": "object",
      "description": "Allows for additional metadata to be stored on the field.",
      "patternProperties": {
        "[^\\s]+": {
          "description": "Only string, integer or boolean values are allowed.",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "integer"
            },
            {
              "type": "boolean"
            }
          ]
        }
      }
    },
    "KeySchema": {
      "id": "/KeySchema",
      "description": "A unique identifier for this item.",
      "type": "string",
      "minLength": 2,
      "pattern": "^[a-zA-Z]+[a-zA-Z0-9_]*$"
    },
    "JsonSchemaSchema": {
      "id": "/JsonSchemaSchema",
      "description": "A JSON Schema object that describes the expected structure of a JSON value. Validated against JSON Schema Draft 4, 6, or 7 meta-schema (based on the `$schema` field, defaulting to Draft 7) via the validateJsonFieldSchema functional constraint.",
      "type": "object",
      "additionalProperties": true
    },
    "PlainInputFieldSchema": {
      "description": "Field schema specialized for input fields. In addition to the requirements below, the following keys are mutually exclusive:\n\n* `children` & `list`\n* `children` & `dict`\n* `children` & `type`\n* `children` & `placeholder`\n* `children` & `helpText`\n* `children` & `default`\n* `dict` & `list`\n* `dynamic` & `dict`\n* `dynamic` & `choices`",
      "id": "/PlainInputFieldSchema",
      "type": "object",
      "required": ["key"],
      "properties": {
        "key": {
          "description": "A unique machine readable key for this value (IE: \"fname\").",
          "type": "string",
          "minLength": 1
        },
        "label": {
          "description": "A human readable label for this value (IE: \"First Name\").",
          "type": "string",
          "minLength": 1
        },
        "type": {
          "description": "The type of this value. Use `string` for basic text input, `text` for a large, `<textarea>` style box, and `code` for a `<textarea>` with a fixed-width font. Field type of `file` will accept either a file object or a string. If a URL is provided in the string, Zapier will automatically make a GET for that file. Otherwise, a .txt file will be generated.",
          "type": "string",
          "enum": [
            "string",
            "text",
            "integer",
            "number",
            "boolean",
            "datetime",
            "file",
            "password",
            "copy",
            "code",
            "json"
          ]
        },
        "required": {
          "description": "If this value is required or not.",
          "type": "boolean"
        },
        "default": {
          "description": "A default value that is saved the first time a Zap is created.",
          "type": "string",
          "minLength": 1
        },
        "list": {
          "description": "Acts differently when used in inputFields vs. when used in outputFields. In inputFields: Can a user provide multiples of this field? In outputFields: Does this field return an array of items of type `type`?",
          "type": "boolean"
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "/PlainInputFieldSchema"
          },
          "description": "An array of child fields that define the structure of a sub-object for this field. Usually used for line items.",
          "minItems": 1
        },
        "dict": {
          "description": "Is this field a key/value input?",
          "type": "boolean"
        },
        "helpText": {
          "description": "A human readable description of this value (IE: \"The first part of a full name.\"). You can use Markdown.",
          "type": "string",
          "minLength": 1,
          "maxLength": 1000
        },
        "search": {
          "description": "A reference to a search that will guide the user to add a search step to populate this field when creating a Zap.",
          "$ref": "/RefResourceSchema"
        },
        "dynamic": {
          "description": "A reference to a trigger that will power a dynamic dropdown.",
          "$ref": "/RefResourceSchema"
        },
        "dependsOn": {
          "description": "Specifies which other input fields this field depends on. These must be filled before this one becomes enabled, and when their values change, this field's value should be cleared.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "resource": {
          "description": "Explicitly links this input field to a resource. Use the resource key (e.g., \"spreadsheet\") or dot notation for resource fields (e.g., \"spreadsheet.url\"). If not set for dynamic dropdowns, the resource is derived implicitly from the `dynamic` property.",
          "type": "string",
          "minLength": 1,
          "pattern": "^[a-zA-Z0-9_]+(\\.[a-zA-Z0-9_]+)?$"
        },
        "choices": {
          "description": "Describes how to populate this dropdown. Can be a static list or a dynamic object with pagination and search support.",
          "oneOf": [
            {
              "$ref": "/FieldChoicesSchema"
            },
            {
              "$ref": "/FieldDynamicChoicesSchema"
            }
          ]
        },
        "placeholder": {
          "description": "An example value that is not saved.",
          "type": "string",
          "minLength": 1
        },
        "altersDynamicFields": {
          "description": "Does the value of this field affect the definitions of other fields in the set?",
          "type": "boolean"
        },
        "computed": {
          "description": "Is this field automatically populated (and hidden from the user)? Note: Only OAuth, Session Auth, and certain internal use cases support fields with this key.",
          "type": "boolean"
        },
        "inputFormat": {
          "description": "Useful when you expect the input to be part of a longer string. Put \"{{input}}\" in place of the user's input (IE: \"https://{{input}}.yourdomain.com\").",
          "type": "string",
          "pattern": "^.*{{input}}.*$"
        },
        "meta": {
          "description": "Allows for additional metadata to be stored on the field. Supports simple key-values only

# --- truncated at 32 KB (92 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/zapier/refs/heads/main/json-schema/zapier-platform-schema.json