This is a big one! There are a few areas with breaking changes. At a high level:
- Zapier integrations that depend on the new Core v9 will run using
Node.js v10
- CLI had a lot of refactoring under the hood. A number of commands changed their args and/or name. Check out the CLI docs for the full rundown.
- All packages drop support for Node 6 (which has been EOL for a while, so hopefully this isn't news)
To successfully migrate to this version, you'll probably need to:
- install Node 10 using
nvm
. Lambda uses10.16.13
(source), but any will do. - Check the CLI changelog below and adjust any scripts that call the CLI accordingly
- Update your integration's
zapier-platform-core
dependency to9.0.0
. - Run unit tests on Node 10 if you haven't before
- Assuming your code works on Node 10, go through the regular push, promote, migrate flow. There aren't any other breaking changes from and end-user perspective.
As always, feel free to reach out if you've got any questions.
See below for a detailed changelog:
- ❗ Remove
--include-js-map
flag from thebuild
andpush
commands (#99) - ❗ remove watch command (#100)
- ❗ Refactor
env
command. It's nowenv:get
,env:set
andenv:unset
(docs) (#104) - ❗ Remove
invite
andcollaborate
commands. This functionality is now underusers
(docs) andteam
(docs) commands, respectively (#106) - ❗ Refactor
delete
intodelete:integration
anddelete:version
(docs) (#109) - ❗ Refactor
logout
command to only clear the local session, not all of them (#60) - ❗
scaffold
command errors if a file name already exists (#88) - ❗
validate
depends on having a validdeployKey
available (either in the environment or in the auth file,~/.zapierrc
). This is a regression and will be fixed in a later version. In the meantime, see Using CI for more info. - 🎉 Add saml support during
login
(#61) - Refactor the following commands to use the new CLI setup:
- build
- delete
- deprecate
- env
- history
- login
- logout
- migrate
- promote
- push
- scaffold
- test
- upload
- validate
- versions
- Deprecate
apps
command in favor ofintegrations
(#105) - Run validation during build against
/check
endpoint (#111) - chore: rebuild yarn.lock (#96)
- 🎉 Apps now run on Node.js
v10
- (docs) update CHANGELOG.md links to point to zapier-platform repository (#107)
- (fix) Make label & description optional for hidden actions (#69)
- (fix) Be more permissive with mutually exclusive properties in input fields (#91)
The only change of this release is we bumped Lodash to 4.17.15 (#95).
No more security warnings from npm audit
!
- (chore) Don't send analytics when running tests (#84)
- No changes
- (fix) Strip URL query parameters from error messages for security (#85)
- (chore) Don't send analytics when running tests (#86)
- 🎉 Added analytics to the CLI. These are vital for helping us improve our product. Read more about what we collect here.
- No changes
- No changes
The big change of this release is we started to maintain all the packages in a monorepo. It's more like an internal refactoring, so it shouldn't affect developer experience. Major work includes:
- (chore) Switch to use yarn (#1)
- (chore) Restructure and rename directories (#2)
- (chore) Adjust
zapier init
to pull from monorepo (#4) - (chore) Set up tests on Travis CI (#5)
- (chore) Publish from Travis CI (#33)
- (chore) Centralize husky code (#34)
- (chore) Move tooling to root (#46)
- (chore) Adopt oclif CLI framework, started with
zapier init
command (#43) - (chore) Bump adm-zip (#6)
- (docs) Update computed fields docs (#7)
None!
- (fix) Drop help text length requirement (#70)
None!
- 🎉 (feature) Convert visual apps to CLI. (#427)
- (feature) Add per app version helpers (#406)
- (chore) bump travis node version (#435)
- (chore) remove babel (#430)
- (chore) Add eslint-plugin-mocha (#429)
- (fix) Reduce minLength for BasicDisplaySchema to 1 (#69)
- (fix) Be more defensive when creating a buffer (#155)
- (fix) fix regression where env is ignored (#154)
- (fix) Prevent raw curies from being sent in a request. Allow removing empty… (#153)
- (fix) Censor sensitive numbers (#152)
- (fix) Add a better error message when uploading with a zip (#408)
- (chore) port logout command to async func (#419)
- (docs) Add code examples and scenarios to the dynamic dropdowns section of the Readme (#415)
- (docs) Add example for input fields with 'children' parameter (#413)
- (docs) Update signup link (#412)
- (docs) Update readme details for version number (#411)
- (docs) Misc improvements (#423)
- (improvement) Allow Godzilla to require modules in code mode (#145)
- (improvement) Add the ability to skip http patching (#150)
- (fix) Censor auth headers in edge cases (#151)
- (fix) Add meta to the bundle bank for resolving curlies. (#149)
- (fix) Pass correct storekey (#148)
- (fix) Add optional parameter to createAppTester to customize storeKey (#147)
- (fix) Fix individual types for removeMissingValuesFrom object (#146)
- (fix) Make removeMissing correctly optional (#143)
A quick bugfix to resolve a regression
None!
- (fix) actually return validator class (#64)
None!
This is a larger-than-normal release that coincides with the release of our new Visual Builder. It also includes a few breaking changes that you'll need to resolve in your code manually as you upgrade. Luckily, they're mostly find-and-replace.
We've changed the type of (the option formally known as) omitEmptyParams
to accommodate clearing data from the query params and/or the request body
// before
z.request({
url: 'https://site.com',
omitEmptyParams: true
});
// after:
z.request({
url: 'https://site.com',
removeMissingValuesFrom: { params: true }
});
If you were using {{curlies}}
to render non-primatives (that is, arrays or objects) at runtime, they were getting coerced into strings. Now they correctly stay as their original data type, which is only an issue if you were working around it before.
We updated the key names in bundle.meta
to make them more clear. In most cases, they were simply renamed, but some unhelpful ones were removed. There's a conversion table that should make this an easy thing to change.
Below are all of the changes:
- (improvement) respect 2fa settings (#396)
- (doc) Add a Docker and Docker Compose section for native environments. (#397)
- (doc) update collaborator to admin (#403)
- (doc) update docs to use new meta (#393)
- (chore) refactor
zapier login
to async (#395) - (chore) make validate command async (#401)
- ❗ (improvement, breaking) Change omitEmptyParams to removeMissingValuesFrom (#63)
- 🎉 (improvement) attempt to hoist better errors (#62)
- (doc) Document that helpText supports markdown (#61)
- ❗ (improvement, breaking) Rename
omitEmptyParams
toremoveMissingValuesFrom
. In typescript, this is erroneously marked as required. In the next release, it will be optional. (#140) - ❗ (improvement, breaking) Resolve curlies to their original data type (#139)
- ❗ (improvement, breaking) Rename
bundle.meta
keys (server change, see CLI #393 for more info) - (improvement) preserve objects passed to inputData in the bundle bank (#141)
- (improvement) Resolve subscription related bundle fields (#138)
- (improvement) Prune unmatched tokens from request (#137)
- (chore) Resolving potential security vulnerability in lodash dependency (#136)
- (fix)
zapier push
doesn't stop on validation errors (#388) - (doc) Fix a typo in OAuth1 doc (#391, #392)
- (doc) Update the AWS Lambda supported Node.js links (#390)
- (doc) Update
outputFields
doc to reflect current reality (#386)
- (fix) Can't use unencrypted
https://
protocol when SSL checks are disabled (#135)
- (improvement)
zapier convert
command has been reworked and greatly improved. Now it generates code that is more likely to work out of the box! (#380) - (improvement) Refactor to use async/await in build command (#382)
- (fix) Don't add
searchOrCreates
if either is hidden (#134)
- (doc) Various doc improvements (#374)
- 🎉 (new) Add OAuth1 support. Read doc for detail. doc
- (doc) Be more clear about whether hook methods are required (#58)
- 🎉 (new) Add OAuth1 support. Read doc for detail. (#126)
- (fix) Make sure to censor URL-encoded values (#129)
- (fix) Cursor reading didn't work in tests (#125)
- (improvement) Shorthand HTTP requests now parse
x-www-form-urlencoded
response bodies as well. Your app could break if your application server returns a JSON response body but with aContent-Type: application/x-www-form-urlencoded
header. Switch toz.request
if that's the case. (#126)
- 🎉 (new) Add support for digest auth. Read doc for detail. (#123)
- (fix)
z.stashFile
doesn't pick up filename inContent-Disposition
(#124)
- (improvement) Add Dynamic Dropdown example app (#363)
- (improvement) Add smoke tests (#361, #362)
- (doc) Document
z.dehydrateFile
(#360) - (doc) Document
outputFields
(#365) - (doc) Update docs to reflect support for
async/await
(#359)
- 🎉 (new) Introduce
z.dehydrateFile
- a new recommended method to dehydrate a file. Read doc for detail. (#112, #120) - 🎉 (new) Add
omitEmptyParams
option to clean up empty request params automatically. Read doc for detail. (#121) - (fix) Fix null error handling (#117)
- (improvement) Add smoke tests (#116)
- (fix) Sign dehydrated payloads for better security (#111)
- (fix) Allow to disable SSL certificate check (#110)
- (fix) Include required binary in the build (#350)
- (fix) Add
copy
field type toFieldSchema
(#52) - (docs) Clarify
BasicDisplaySchema
directions description (#51)
- (improvement) Better
AppTester
typescript bindings (#103)
- (fix) Migrating by email shouldn't ask for promote (#341)
- (fix) Fix "epxeriencing" -> "experiencing" typo (#338)
- (fix) Fix failing Travis badge (#343)
- (improvement) Truncate
source_zip
in logs (#348) - (improvement) Migrate to cli-table3 (#327)
- (docs) Session auth should be using
authData
instead ofinputData
(#346)
- (improvement) Bump Node.js version to 8 (#328)
- (improvement) Ask for promote when fully migrating a public app (#326)
- (improvement) Add typescript example app (#329)
- (improvement) Reduce package size (#330)
- ❗ (improvement, breaking) Bump Node.js version to 8.10.0. Apps with dependency
zapier-platform-core >= 7.0.0
run only on Node.js 8.10.0 in AWS Lambda. If you need to continue running on Node.js 6.10.3, usezapier-platform-core <= 6.1.0
" (#94) - (fix) Add cursor to typings (#95)
- (improvement) Reduce package size (#97)
- (fix) Fix typo in
zapier register
text (#324) - (fix) Fix
npm audit
security warnings (#320) - (fix)
zapier convert
doesn't escape sample field labels (#313) - (docs) Remove Digest auth references (#323)
- (docs) Add cursor docs (#309)
- (fix) Fix
npm audit
security warnings (#46)
- 🎉 (new)
z.cursor
store (#76) - (fix) Fix missed logs (#91)
- (fix) Middleware isn't compiled (#90)
- (fix) Fix
npm audit
security warnings (#87) - (improvement) Add typings (#82)
- ❗ (improvement, breaking) JSON format only outputs valid JSON. This is only breaking if you were working around the formatting to process the JSON before (#260)
- (improvement) Better spinner (#260)
- ❗ (improvement, breaking) Fail validation if the top-level key doesn't match trigger/search/creates'
.key
. This fixes a bug where a trigger could be duplicated in the UI (#41) - (docs) Add doc annotation for hook type (#44)
- (docs) Make long examples more readable (#42)
- ❗ (improvement, breaking) Throw an error for key collisions between resources and standalone objects. This was previously a warning, so it shouldn't catch anyone by surprise (#73)
- ❗ (improvement, breaking) Remove
bundle.environment
. This has always been deprecated, but now it shouldn't show up in the bundle anymore. Given that it hasn't held data, this shouldn't cause a lot of friction (#72)
- 🎉 (new) Add option to
zapier logs
to show bundle logs (PR) - (fix) Fix
zapier build
from crashing on missing packages (PR) - (fix) Fix
zapier convert
from crashing on certain OAuth config (PR) - (fix) Fix
zapier convert
from crashing on a number in auth mapping (PR) - (improvement)
zapier build
prints any errors fromnpm install
(PR) - (docs) Add note about nested dynamic functions (PR)
- (docs) Add docs about
bundle.cleanedRequest
andbundle.rawRequest
(PR)
- (fix) Correctly invalidate field grandchildren (PR)
- (docs) More examples on functional constraints (PR)
- 🎉 (new) Add "did you mean" on unrecognized commands (PR)
- (fix) Fix hang issue when printing data on skinny terminal (PR)
- (fix) Server returns error when running
zapier logs --debug
(PR) - (fix) Exclude unwanted files when doing
zapier build --disable-dependency-detection
(PR) - (fix) Don't overwrite
.zapierapprc
completely (PR) - (fix) Fix "CUSTOM_FIELDS_URL is not defined" error for
zapier convert
(PR) - (improvement) Less nagging about updating packages (PR)
- (improvement) Add "github" and "search-or-create" example apps (PR, PR2)
- (improvement)
zapier promote
error messages now look better (PR) - (improvement) Remove unnecessary
.nvmrc
logic (PR) - (improvement)
zapier convert
supports static dropdown (PR) - (improvement)
zapier convert
supports auth mapping better (PR) - (improvement) Fix auth issue with full scripting methods for
zapier convert
(PR) - (improvement)
zapier convert
converts samples, too (PR) - (improvement)
zapier convert
respects auth field keys in test code (PR) - (improvement)
zapier convert
generates.env
instead of.environment
(PR) - (improvement)
zapier convert
includes input fields to test code (PR) - (improvement) Fix session auth environment variable name for
zapier convert
(PR) - (docs) FAQ about when to use placeholders or curlies (PR)
- (fix) Only require samples for non-hidden operations (PR)
- (fix) Correctly validate
children
as an array of fields (PR) - (fix) Doc rendering issue (PR)
- (docs) Add doc annotation (PR)
- (improvement) Bump Node version to 6.10.3 (PR)
- (improvement) Deprecate
.environment
in favor of.env
(PR) - (improvement) Support test framework other than Mocha (PR)
- (improvement)
z.console.log
also callsconsole.log
(PR) - (improvement) Check for object in create (PR)
- 🎉 (new) The CLI can now run, test, and build on any version of Node.js! (PR)
- 🎉 (new) Read deploy key from env if available (PR)
- (improvement) More specific error messages for invalid installs (PR)
- (fix)
zapier env
no longer throws an error on Node versions >=8.0 (PR) - (improvement)
zapier convert
creates a .gitignore for new apps (PR) - (improvement)
zapier convert
properly escapes labels and descriptions (PR, commit) - (improvement)
zapier convert
only sends a token when it exists, not before (PR) - (improvement)
zapier convert
generates .environment and gives hint about editting it (PR) - (improvement) Don't require an
id
field in tests generated byzapier convert
(PR) - (improvement)
zapier convert
adds track info to package.json (PR) - (docs) FAQ section in the README (PR)
- ❗ (improvement, breaking)
sample
is now a required field inBasicOperationSchema
and friends. See this doc for more info (PR) - ❗ (improvement, breaking)
order
has been removed fromBasicDisplaySchema
(PR)
- (improvement) Log when actions generated by a resource collide with manually defined ones (PR)
- (improvement) Properly log gzipped responses (PR)
- (Fix) Permission denied with
index.js
. - (Fix)
zapier convert
didn't escape line breaks in app description. - (Doc) Add FAQs section.
- Ensure users are authenticated before building or pushing.
- (New)
zapier convert
now supports custom auth mapping, searchOrCreates and "Send to Action Endpoint URL in JSON body" checkbox. - (New)
zapier scaffold
now also creates a test. - (New) Allow ordering static dropdowns.
- (Fix) Properly replace variables in URLs in
zapier convert
generated code. - (Fix) Fix TypeError in
http.request
patch. - (Doc) Clarify pushing doesn't reload browser automatically.
- Use working endpoints for scaffolds.
- Notify for update less often.
- Introduce Prettier into development process.
- Ensure all template code use z.JSON.parse.
- The first build made by Travis CI!
- (Fix) Repack zapier-platform-core to really fix bloated size
- (New)
zapier convert
now supports input and output custom fields. - (New) Prettify
zapier convert
generated code. - (Fix) Fix bloated size of zapier-platform-core 4.1.0 package.
- (Fix) Fix typos in docs.
- (Doc) Add 'Mocking Requests' section to docs.
- (Doc) Mark step 'order' as deprecated.
- (New)
zapier convert
now supports auth and search scripting methods. - (New) Allow to migrate users by email.
- (New) Accept changelog for app promotion.
- (Doc) Add explanation about uppercased env vars.
- Improve first promote message.
- (BREAKING) (Fix) Encode form requests with + instead of %20 by default
- (BREAKING) (Fix) Don't add content-type if there's one
- (Fix) Replace _.truncate, save memory.
- (Fix) fix: exit code 1 for only for errors
- (Fix)
zapier convert
: Escape special chars in field help text - (Fix)
zapier convert
: Normalize newlines in scripting - (New)
zapier convert
: Generate create code based on different scripting method combinations - (New)
zapier convert
: Ignore _pre_poll and _post_poll if _poll exists - (New) Customize update notification message
- (New) Allow to include a regexp of paths for the build file
- (New) Add example docs about computed fields.
- Log http(s) requests for non-client library
- Many improvements for
zapier convert
: Copy noun, Copy display label, Copy description, Copy important and hidden props, Add more tests, Converting more auths, Allowing deasync in build, Converting scripting for triggers, Support for dynamic dropdowns and search-powered fields, Adding a command for integrations test, Add basic tests for triggers, creates, and searches, Remove empty help text - Skip style check on invalid apps
- Add header to docs
- Add option to
--grep
onzapier test
- Allow invitations per version. Try
zapier help invite
for more details. - Added bundle.meta.zap.id for performSubscribe and performUnsubscribe.
- Allow modules to be objects in app definitions.
- Use "application" discrete-type instead of "binary" as default content type..
- Use un-obfuscated data when logging to stdout.
- Improved/fixed sample and scaffolding code in docs.
- Fixed typos in docs.
- Fixed node/npm dependency check for 3.x.
- Fixed URL base endpoint in docs.
- (BREAKING)
inputField
s will now start throwing errors in Schema validation if there are mutually-exclusive fields. - Added subdomain field support to CLI apps.
- Allowed file stashing within a create/action.
- Added style checks to
zapier build
. - Fixed
zapier build
on Windows.
- It's now possible to delete apps and app versions with
zapier delete
! - You'll now get a warning when doing
zapier push
orzapier upload
if your app'szapier-platform-core
version is not up-to-date. - It's now possible to skip validation when testing with
zapier test --skip-validate
! - Added docs around upgrading.
- Improved docs around authentication, migration, deprecation, and dehydration.
- Fixed
zapier logs --version=x.x.x
showingzapier --version
. - Improved error messages for some schema validation errors.
- Fixed Python error when a create, as part of a search or create, returned a list with one item (errors sooner, in core now, with a nicer message).
- Objects received via Hook triggers no longer require an
id
, and checks were improved. - Minor misc fixes.
- Connection Label is now available (
connectionLabel: '{{bundle.inputData.email}}'
insideauthentication
) - Locking is now available for
create
(shouldLock: true
inside.operation
) - Fix typos in docs
- Fix broken appTester on Windows OS.
- Require the exact version of zapier-platform-core in package.json.
- Document middleware's z object lacks z.request.
- Fix typo in session auth docs.
- (BREAKING) CLI 2.x apps run only on NodeJS
v6.10.2
in AWS Lambda. If you need to run on NodeJSv4.3.2
, use the CLI 1.x release. - (BREAKING) Delete property
searchOrCreate
from the properties of ResourceSchema. - Style checks run by default during
zapier validate
. - Validation is run during
zapier test
. - The CLI now uses update-notifier to let you know when there's a new version available.
- Rename
global
topublic
for consistency across Zapier platform.
zapier --validate
now includes the--include-style
flag to validate against style checks.- There are extra checks around return types from triggers, searches, and creates.
- Some doc typos were squashed.
- Added new Files example app with
zapier init . --template=files
. - Properly exit on node version mismatch while running
zapier test
. - Upgraded
node-fetch
incore
(fixes some edge-case issues formultipart/form-data
requests). zapier test
is now quiet by default.zapier test --debug
will output details.zapier logs --type=http --detailed
is more clearly exposed.- Fixes
searchOrCreate
schema validation error for resources withsearch
andcreate
.
- Functions in
app.afterResponse
will now get called. - Add check in middleware, to make sure creates return only 1 object.
- Fixes issue for deep object checking.
- Minor docs fixes.
z.stashFile
is no longer allowed outside ofhydrators
.- Adding analytics to the web-based documentation.
- Minor docs fixes.
- Improved
link
command UX on error/non-existing apps.
- Fixed
convert
command foroutputFields
. - Improvements on
validate-templates
andzapier test
(now supports--timeout=5000
). - Minor docs fixes.
- Use
ZAPIER_BASE_ENDPOINT
forpush
andconvert
. - Don't show command help on error.
- Minor docs fixes.
- Fix issues in Windows.
- Minor docs fixes.
- Fixes fatal error when
build
directory didn't exist. - Minor docs fixes.
- Support streamed non-ascii files in
z.stashFile
. - Minor docs fixes.
- Minor docs fixes.
- Removing beta "label".
- Minor docs fixes.
- Added
dict
property forinputFields
, to allow asking for a dictionary (key/value pair) input. - Added new REST Hooks example app with
zapier init . --template=rest-hooks
. - Fixed: Now correctly ask for line items when
children
is set.
- Added
search
property forinputFields
, to allow linking a search connector.
-
BREAKING CHANGE Removed
getResourceOperation
in creates/searches in favor ofperformGet
. -
Added support for
performList
in webhook triggers -
Fixed: Now correctly copy outputFields and samples to a trigger/search/create operation that links to a resource
- Added
performList
to hook operations.
- Documentation expanded:
- Updated
z.dehydrate()
/appTester()
/ examples to reflect the new arguments.z.dehydrate('someFunction')
must bez.dehydrate(App.hydrators.someFunction)
appTester('contact.list')
must beappTester(App.resources.contact.list.operation.perform)
- Documented fields, custom/dynamic fields, and dynamic dropdowns plus examples.
zapier env ... -remove
flag documented.
- Updated
zapier describe
now describes much more about the app - included auth info, redirect_uri, resources and all resource paths.- fixed
zapier scaffold
bug with undefinedINPUT_FIELDS
Initial release to public. Read docs here https://github.com/zapier/zapier-platform-cli.