'use strict'; const makeSchema = require('../utils/makeSchema'); module.exports = makeSchema({ id: '/AppFlagsSchema', description: 'Codifies high-level options for your integration.', type: 'object', properties: { skipHttpPatch: { description: "By default, Zapier patches the core `http` module so that all requests (including those from 3rd-party SDKs) can be logged. Set this to true if you're seeing issues using an SDK (such as AWS).", type: 'boolean', }, skipThrowForStatus: { description: 'Starting in `core` version `10.0.0`, `response.throwForStatus()` was called by default. We introduced a per-request way to opt-out of this behavior. This flag takes that a step further and controls that behavior integration-wide **for requests made using `z.request()`**. Unless they specify otherwise (per-request, or via middleware), [Shorthand requests](https://github.com/zapier/zapier-platform/blob/main/packages/cli/README.md#shorthand-http-requests) _always_ call `throwForStatus()`. `z.request()` calls can also ignore this flag if they set `skipThrowForStatus` directly. It is important to note that for oauth2 or session auths with `authRefresh:true`, `401` status codes will throw a `RefreshAuthError` regardless of `skipThrowForStatus`, and will need to be handled manually if intervention is required.', type: 'boolean', }, throwForThrottlingEarly: { description: 'Starting in `core` version `18.0.0`, 429 (throttling) responses throw a `ThrottledError` before `afterResponse` middleware runs by default. Set this flag to `true` to preserve the old behavior where `afterResponse` middleware can see and handle 429 responses. This flag can be overridden per-request by setting `throwForThrottlingEarly` directly on the request options.', type: 'boolean', }, cleanInputData: { description: 'If true, Zapier removes empty strings, `null`, `undefined`, and empty Arrays or objects from `bundle.inputData` recursively before passing it to your `perform*` function. If you want to handle empty values yourself in your code, explicitly set this to false. This is a global flag that affects all the triggers and actions in your integration. The `cleanInputData` flag in `operation` takes precedence over this one.', type: 'boolean', }, }, additionalProperties: false, examples: [ { skipHttpPatch: true, skipThrowForStatus: false, throwForThrottlingEarly: true, }, { skipHttpPatch: false, skipThrowForStatus: true, throwForThrottlingEarly: false, }, { throwForThrottlingEarly: true }, {}, ], antiExamples: [ { example: { foo: true }, reason: 'Invalid key.' }, { example: { skipHttpPatch: 'yes' }, reason: 'Invalid value.' }, { example: { skipThrowForStatus: 'no' }, reason: 'Invalid value.' }, { example: { throwForThrottlingEarly: 'yes' }, reason: 'Invalid value.' }, ], });