master-zapier-plan-draft/vendor/zapier-platform/changelog/v10-v13.md
George Lambert b4150c8250 Milestone 0: import zappier billing, Verae middleware, and Zapier research
Compose-ready workspace: packages/zappier (rate card, portal, Stripe),
packages/verae-zapier-middleware (timestamp + NATS), packages/verae-zapier
(CLI app), vendor/zapier-platform, and research/zapier vendor corpus.

Gate 0 structure checks pass. Product code and research are not yet wired.
2026-09-09 02:37:36 -04:00

33 KiB

13.0.0

released 2023-01-25

Version 13.0.0 is a breaking change release that contains several important upgrades and deprecations. Here is a brief breakdown of the most notable changes (see further below for a more detailed list of changes):

(a) Any integrations that depend on zapier-platform-core@13.0.0 will now run on Node.js 16.

(b) We are dropping support for Node.js 12, which has been designated end-of-life since early 2022 (see the Node.js release schedule).

(c) As part of internal Zapier changes to the way we process trigger data, stricter type coercion for trigger parameters is now enabled by default for integrations running on zapier-platform-core@13.0.0. This is a good time to double check if your defined trigger parameter types are coherent with what your app expects at runtime.

(d) Web Builder conversion functionality has been removed. This change is only relevant for Legacy Web Builder apps.

Those are the breaking changes for this major version 13.0.0 release. We are also including some package version bumps, with the changes consisting mostly of dropping older Node versions. As always with any major release, make sure to thoroughly test your integrations after updating!

Detailed changelog below ( denotes a breaking change):

cli

  • Remove Web Builder conversion functionality. (#546)
  • Make --version required on zapier convert. (#546)
  • 🔨 Improved error handling in the convert command. (#546)
  • 📜 Removed references to converting WB apps in the docs. (#546)

core

  • Apps can now use Node.js v16.x and Node.js v12.x is no longer supported. (#603)

  • Parameters for triggers now have strict type coercion. This means that if a parameter is defined as an integer and a string representation of an integer is provided, Zapier will now convert the value to an integer before it reaches the developer's code.

schema

None!

misc

  • 🔨 Dependency updates (#608)
    • Replaced eslint-plugin-node@11.1.0 with eslint-plugin-n@15.6.1
    • Bump @oclif/command from 1.8.0 to 1.8.21
    • Bump @oclif/config from 1.17.0 to 1.18.6
    • Bump @oclif/dev-cli from 13.0.11 to 13.3.0
    • Bump @types/node from 14.14.35 to 18.11.18
    • Bump adm-zip from 0.5.5 to 0.5.10
    • Bump archiver from 5.3.0 to 5.3.1
    • Bump aws-sdk from 2.905.0 to 2.1300.0
    • Bump cli-table3 from 0.6.0 to 0.6.3
    • Bump content-disposition from 0.5.3 to 0.5.4
    • Bump debug from 4.3.1 to 4.3.4
    • Bump dicer from 0.3.0 to 0.3.1
    • Bump dotenv from 9.0.2 to 12.0.4
    • Bump eslint from 7.26.0 to 8.32.0
    • Bump eslint-config-prettier from 8.3.0 to 8.6.0
    • Bump eslint-config-standard from 16.0.2 to 17.0.0
    • Bump eslint-plugin-import from 2.22.1 to 2.27.5
    • Bump eslint-plugin-mocha from 8.1.0 to 9.0.0
    • Bump eslint-plugin-promise from 5.1.0 to 6.1.1
    • Bump flat from 5.0.1 to 5.0.2
    • Bump gulp-prettier from 3.0.0 to 4.0.0
    • Bump husky from 6.0.0 to 7.0.4
    • Bump inquirer from 8.0.0 to 8.2.5
    • Bump nock from 13.0.11 to 13.3.0
    • Bump prettier from 2.3.0 to 2.8.3
    • Bump semver from 7.3.5 to 7.3.8
    • Bump lint-staged from 11.0.0 to 11.2.6
    • Bump ignore from 5.1.8 to 5.2.4
    • Bump jscodeshift from 0.12.0 to 0.14.0
    • Bump klaw from 3.0.0 to 4.1.0
    • Bump lerna from 4.0.0 to 6.4.1
    • Bump marked from 4.0.10 to 4.2.12
    • Bump marked-terminal from 4.1.1 to 5.1.1
    • Bump mime-types from 2.1.34 to 2.1.35
    • Bump mocha from 8.4.0 to 10.2.0
    • Bump read from 1.0.7 to 2.0.0
    • Bump yeoman-generator from 5.2.0 to 5.7.0

12.2.1

released 2023-01-18

cli

  • 📜 Improve docs about input field types (#585)
  • 📜 Improve docs about OAuth2 fields (#589)
  • 📜 More strongly recommend use of z.dehydrateFile for files (#590)
  • 📜 Update logging info (#591)
  • 📜 Fix zapier init command (#594)
  • 📜 Fix typo (#593)
  • 📜 Fix logo (#604)
  • 🔨 Dependency updates
    • Bump typescript from 3.8.3 to 4.9.4 to fix a test (#599)
    • Bump decode-uri-component from 0.2.0 to 0.2.2 (#596)
    • Bump json5 from 1.0.1 to 1.0.2 (#601)

core

  • None!

schema

  • 🧪 Relax schema on searchUniqueInputToOutput for upsert to support dynamic fields. EXPERIMENTAL: Currently an internal feature. Don't use it yet. (#602)

misc

  • 🔨 Dependency updates
    • Bump qs from 6.5.2 to 6.5.3 (#598)

12.2.0

release 2022-10-27

cli

core

  • 🔨 Dependency updates
    • Bump secret-scrubber from 1.0.3 to 1.0.7 (#583)

schema

  • 🧪 "Upsert" feature: Now a search-or-create can include an update action that Zapier should call to update an existing object. EXPERIMENTAL: This is currently an internal feature and subject to change. Don't use it yet. (#584)
  • 📜 Clarify how fields accept file types (#582)

12.1.0

released 2022-09-29

We rolled out a change to "migrate-by-email" on 2022-09-28. Now zapier migrate --user in CLI and "migrate-by-email" on UI only migrate Zaps that are private to the user. This change affects UI and all the CLI versions, not just 12.1.0. The old behavior was to migrate all the user's team members, which was inconsistent with the docs and often caused confusion. So we consider this change a bug fix instead of a breaking change. If you want the old behavior, use zapier migrate --account.

cli

  • 💅 Add --account flag to migrate command (#574)
  • 💅 Add --yes flag to promote command to suppress interactive prompts by assuming "yes" to all prompts (#576)
  • 💅 Print validation warnings at build time (#573)
  • 📜 Update Zapier logo in docs (#567)
  • 📜 Provide additional information about the connection label in docs (#564)
  • 🔨 Dependency updates
    • Bump shell-quote from 1.7.2 to 1.7.3 (#560)

core

  • 🐛 Fix another hanging issue by aborting logger connection early (#562)

schema

  • None!

12.0.3

released 2022-05-02

cli

  • None!

core

  • 🐛 greatly improve secret-scrubbing speed in logger (#542)
  • 🐛 ensure string content is parsed pre-logging in case it contains secrets (#525)
  • 🐛 censor novel secrets in querystring (#526)

schema

  • None!

12.0.2

released 2022-03-30

cli

  • None

core

  • 🐛 Fix regression where consecutive successful curly replacements wouldn't happen correctly (#522)

schema

  • None!

12.0.1

released 2022-03-24

cli

  • None

core

  • 🐛 Fix regression where the global skipThrowForStatus incorrectly applied to shorthand requests. It's only intended to modify the behavior of requests made with z.request(). The docs and changelog have been updated accordingly (#520)

schema

  • None!

12.0.0

released 2022-03-23

We're breaking slightly from our pattern of a single yearly major release. The 12.0.0 release contains some backwards-incompatible changes to how middleware and auth refreshes work. For the most part, you'll be able to upgrade to this version safely, but as always, it's worth re-running unit tests (especially those related to authentication).

In the coming months, we'll follow up with a 13.0.0 release that will bump the Node.js runtime and dependencies (ending support for Node.js 12 as it reaches End of Life). We're hoping that by separating these releases, the upgrade process will be easier for developers (only worrying about the public API or the runtime, but not both).

cli

  • None!

core

  • calling response.throwForStatus() now always throws an error if the response status code is >= 400. Previously it was a no-op when response.skipThrowForStatus was true. Now, that flag only controls whether Zapier's built-in middleware calls throwForStatus(). This only affects you if you set skipThrowForStatus and always call .throwForStatus(), expecting it not to error. (#511)
  • re-add the built-in auto-refresh middleware for oauth2 and session auths. This runs before your declared afterResponse, so you no longer have to account for stale credentials in your middleware (unless you want to). See the README for more info. (#512, #517)

schema

  • 💅 add app-wide skipThrowForStatus flag. This is helpful for backwards compatibility when migrating from 9.x to 12.x, but probably won't be relevant for most developers. Note that this flag only affects requests made with z.request() (#511)

11.3.3

released 2022-03-21

cli

core

  • 🐛 Fix another hanging issue where an action could be invoked multiple times (#513)

schema

  • None!

11.3.2

released 2022-03-01

cli

  • None!

core

  • 💅 z.request() now accepts skipEncodingChars option to skip percent-encoding specific characters (#497)

schema

  • 💅 Add skipEncodingChars to RequestSchema (#497)

misc

  • 🔨 Improve build script (#496)

11.3.1

released 2022-02-23

cli

  • 🔨 Bump node-fetch to 2.6.7 (#493)

core

  • 🐛 Fix hanging issue where an action could be invoked multiple times (#490)
  • 🔨 Bump node-fetch to 2.6.7 (#493)

schema

  • 🔨 Bump node-fetch to 2.6.7 (#493)

11.3.0

released 2022-02-14

cli

  • 🎉 New command: jobs. Now you can use zapier jobs to check promote and migrate progress! (#484)
  • 🎉 Add support for pnpm package manager in test command (#476)
  • 🐛 Fix byte missing issue with files example (#465)
  • 💅 Update promote and migrate to use new endpoint (#480)
  • 📜 Clarify on OAuth2 refresh details (#482)
  • 🔨 Dependency updates
    • Bump shelljs from 0.8.4 to 0.8.5 (#473)
    • Bump marked from 2.0.3 to 4.0.10 (#471)
    • Bump cached-path-relative from 1.0.2 to 1.1.0 (#477)

core

  • 🐛 Fix value.replace is not a function error when resolving missing curlies (#468)
  • 🐛 Handle case where legacy.scriptingSource is an empty string (#475)
  • 💅 Improve z.console.log and HTTP logging performance (#469)

schema

  • None!

misc

  • 🔨 Bump trim-off-newlines from 1.0.1 to 1.0.3 (#474)

11.2.0

released 2021-12-03

cli

  • 📜 Fix typos in docs (#431)

core

  • 🐛 Fix backpressure issue when piping request bodies (#461)
  • Rewrite z.stashFile() with various improvements and bugfixes (#454)
    • 💅 knownLength is no longer required for any kinds of streams, including z.request({ url, raw: true }) and fs.createReadStream()
    • 💅 Detect file types more smartly
    • 💅 Generate filenames more smartly
    • 💅 Improve performance by making concurrent requests
    • 🐛 Fix MalformedPOSTRequest error when the reponse is gzipped and has a smaller Content-Length
    • 🔨 Better test coverage
    • See #454 for more details
  • 💅 Allow apps to pass along throttled errors (#408)

schema

  • 🎉 Add support for hook-to-poll triggers (#432)
  • 💅 Allow spaces and square brackets in RefResourceSchema (#455)
  • 💅 Add code type for inputFields (#439)

misc

  • 🔨 Bump node-fetch to 2.6.6 (#459)
  • 🔨 Move CI from Travis to GitHub Actions (#454)

11.1.1

released 2021-09-24

cli

  • none!

core

  • 🐛 Improve performance of large requests (#428),
  • 🐛 Handle nullish values in auth data (#427),

schema

  • none!

11.1.0

released 2021-08-05

cli

  • 🐛 convert command should always generate async functions (#397)
  • 🐛 init command - fix typos in session-auth template (#388)
  • 📜 Add info about header format in bundle.rawRequest (#401)
  • 📜 An afterResponse middleware should return a response (#383)

core

  • 🎉 Allow using await in inline function source (#396)
  • 🐛 Make sure all requests are logged (#387)
  • 💅 Update app tester to support hook with canPaginate for performList (#402)
  • 💅 Add bundle.meta.isBulkRead TypeScript type (#400)
  • 💅 Allow app tester to run ad-hoc functions (#385)
  • 🔨 Incorporate secret-scrubber package (#393)

schema

  • 💅 Add canPaginate to BasicHookOperationSchema (#399)

misc

  • Dependency updates:
    • 🔨 Bump set-getter from 0.1.0 to 0.1.1 (#389)
    • 🔨 Bump glob-parent from 5.1.0 to 5.1.2 (#386)
    • 🔨 Bump tar from 4.4.13 to 4.4.15 (#406)

11.0.1

released 2021-05-28

cli

  • 🐛 Handle missing versions better in env command (#374)
  • 📜 Fix incorrect snippet (#378)
  • 📜 Update historical releases section to include v10 (#377)

core

  • None!

schema

11.0.0

released 2021-05-12

Another spring, another SEMVER-MAJOR release of the Zapier CLI tools. Now that Node.js 10 has reached its scheduled end of life, version 12 is the minimum supported version for each of these packages locally.

Additionally, any integrations that depend on zapier-platform-core@11.0.0 will run on Node.js 14. Node versions are typically fairly compatible, but it's worth double-checking your unit tests during this upgrade (as always).

Read on for a detailed set of release notes, paying special attention to any BREAKING CHANGEs.

cli

  • Remove the -g | --grep and -t | --timeout flags from zapier test (#348). You can now pass flags directly to your test script by adding -- before them. To migrate existing scripts:
    • Add -- before any existing grep and timeout flags
    • zapier test -g 'cool' --timeout 5000 ➡️ zapier test -- -g 'cool' --timeout 5000

core

  • Run apps using Node.js v14.x (#350)
  • 🐛 Checks should properly handle possibly null values (#371)
  • 🐛 StashFile no longer throws 'source.on' error when a request that uses await is passed in (#361)
  • 🐛 Handle stashing files in resource create methods (#349)
  • 🔨 Typescript target es2019 for node 12 (#358)
  • 🔨 Typescript type of inputData for hydration function should be of type T as well (#357)
  • 📜 Fix typo in authentication.js (#356)

schema

  • add validation to ensure globally unique input fields (#347).
    • Your integration's input fields wouldn't have worked correctly if they didn't comply with this check, but now we're more explicit about it
    • No action should be needed for migration

misc

  • Many under-the-hood dependency updates:
    • 🔨 update deps (#351, #372)
    • 🔨 Bump hosted-git-info from 2.8.5 to 2.8.9 (#370)
    • 🔨 bump handlebars from 4.7.6 to 4.7.7 (#369)
    • 🔨 Bump elliptic from 6.5.3 to 6.5.4 (PDE-2085) (#343)
    • 🔨 Update repo urls (#339)

10.2.0

released 2021-02-23

cli

  • 📜 add architecture files (#324)
  • 📜 fix typos in README (#328)
  • 📜 Make file stashing snippets copy-paste-able (#326)
  • 📜 Fix broken README schema package link (#325)
  • 🐛 ensure test files can be run out of the box with jest (#327)

core

None!

schema

  • 💅 Add ability to specify "code" param to OAuth2 schema (#333)

10.1.3

released 2021-02-09

cli

  • 🐛 Fix phrasing in link command (#316)
  • 💅 Add warning if user counts are still being calculated (#308)
  • 📜 Mention subscribeData is available in perform (#300)
  • 📜 Add debugging info (#318)
  • 📜 Update readiness of UI → CLI conversion tool (#307, #311)
  • 📜 Add details about when dynamic fields are loaded (#303)
  • 📜 Change 90-day limit for callbacks to 30-day (#293)
  • 📜 Fix typos in examples (#296, #297)

core

  • 🐛 ResponseError no longer fails when request is raw (#320)
  • 🐛 Redirecting from https to http breaks when disabling SSL certificate checks (#313)
  • 🔨 Log trigger_subscription_id field (#317)

schema

  • 📜 Add reasons to anti-examples, update README, rearrange schema layout (#287)

10.1.2

released 2020-10-30

This release mostly has internal features, but also ships a lot of documentation updates and a few bumped dependencies.

cli

  • 💅 Improve logging for diagnostic info (#282)
  • 📜 Document the $HOIST$ directive (#273)
  • 📜 Update outdated command references (#274)
  • 📜 Add docs for callback_url (#278)
  • 🔨 Add new example app, callbacks (#281)
  • 📜 Replace Slack link with one for Community (#286)

core

  • 🐛 Add callback_url during testing (#280)
  • 💅 Relax type info for response.json to better match the actual TS definition (#261)

schema

None!

10.1.1

released 2020-09-02

cli

  • 🐛 _zapier-build should be optional (#265)

core

  • 🐛 Don't censor safe URLs in logs (#266)

schema

None!

10.1.0

released 2020-08-30

cli

  • 💅 build command now accepts a custom build hook named _zapier-build. See Using Transpilers for details. (#262)

core

  • 📜 Remove legacy reference to bundle.meta.zap (#255)
  • 🔨 Increase max payload size for hydration (#257)

schema

  • None!

10.0.1

released 2020-07-20

cli

  • 🐛 convert command now doesn't crash over an auth field name with special chars (#241)
  • 🐛 Fix missing deasync Node.js 10 binding (#244)
  • 🐛 Fix broken oauth1-trello project template (#246)
  • 💅 Update oauth2 and session-auth project templates to reflect v10's recommended way to handle auth refresh (#246)
  • 📜 Fix missing init command in CLI reference (#243)
  • 🔨 Bump Lodash from 4.17.15 to 4.17.19 (#248)

core

  • 🐛 Allow resource list methods to use cursors (#247)
  • 💅 Improve types for z.dehydrateFile and z.stashFile (#240)
  • 📜 Clarify v10 breaking change on auth refresh (#246)
  • 🔨 Bump Lodash from 4.17.15 to 4.17.19 (#248)

schema

  • 🔨 Bump Lodash from 4.17.15 to 4.17.19 (#248)

10.0.0

released 2020-05-20

Another major release! We have some great improvements in this version but also have breaking changes. Please review the following to see if you need to change anything to upgrade zapier-platform-core to v10.

(a) Zapier integrations that depend on the new Core v10 will run using Node.js 12. To upgrade, first you need install Node 12 if you haven't. You can install Node 12 using nvm. Second, update your package.json to depend on zapier-platform-core@10.0.0. Third, run npm install. Finally, you may want to run unit tests on Node 12 before you push your code to production for further testing.

(b) z.request now always calls response.throwForStatus via a middleware by default. You no longer need to call response.throwForStatus after z.request, the built-in middleware will do that for you. See Error Response Handling for details.

(c) response.throwForStatus now only throws an error if the status code is between 400 and 600 (inclusive). Before v10, it threw for status >= 300. So if your code rely on that old behavior, you should change your code to check response.status explicitly instead of using response.throwForStatus.

(d) Session and OAuth2 refresh now happens AFTER your afterResponse. Before v10, the refresh happens before your afterResponse. This is a breaking change if your afterResponse captures 401 response status. See v10 Breaking Change: Auth Refresh for details.

(e) We now parse JSON and form-encoded response body by default. So no more z.JSON.parse(response.content)! The parsed object is available as response.data (response.json will be still available for JSON body but less preferable). Before v10, we only parsed JSON for manual requests; parsed JSON and form-encoded body for shorthand requests. This change could be breaking if you have an afterResponse that modifies response.content, with the expectation for shorthand requests to pick up on that. In which case, you'll have to replace response.content = JSON.stringify(parsedOrTransformed) with response.data = parsedOrTransformed.

(f) We rewrote the CLI zapier init command. Now the project templates are more up-to-date, with better coding practices. However, we've removed the following templates: babel, create, github, middleware, oauth1-tumblr, oauth1-twitter, onedrive, resource, rest-hooks, trigger. For trigger/create/search, use zapier scaffold command instead. For babel, look at typescript template and replace the build step with the similar code from https://babeljs.io/setup#installation. For oauth1, we now only keep oauth1-trello for simplicity. If you ever need to look at the old templates, they're always available in the example-apps directory in the repo.

(g) zapier init no longer uses the minimal template by default. If you don't specify --template, zapier init will prompt you interactively. So if you're using zapier init (without any arguments) in CI and expect it to use minimal by default, you should replace the command with zapier init -t minimal.

See below for a detailed changelog ( denotes a breaking change):

cli

  • We've improved and removed some templates from init command, see (e) above for a list of templates that were removed (#206)
  • 💅 build command no longer needs login (#216)
  • 💅 promote command becomes more receptive about the changelog format (#209)
  • 💅 Regenerate example apps using the new init command (#229)
  • 📜 Update and clean up docs (#222)
  • 📜 Add some clarity around what we're sending for analytics (#215)
  • 🔨 Mass dependency update and linting (#218, #220)

core

  • Integrations now run on Node.js 12!
  • z.request now always calls response.throwForStatus via a middleware by default (#210)
  • Session and OAuth2 refresh now happens AFTER your afterResponse (#210)
  • response.throwForStatus now only throws for 400 ≤ status ≤ 600 (#192)
  • Introduce response.data with support for form-urlencoded and custom parsing (#211)
  • 🐛 Don't log request body when it's streaming data (#214)
  • 🐛 z.request's allowGetBody option shouldn't send empty body (#227)
  • 🔨 Mass dependency update and linting (#218, #220)

schema

  • 🔨 Mass dependency update and linting (#218, #220)