{ "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, `