UNPKG

zapier-platform-cli

Version:

The CLI for managing integrations in Zapier Developer Platform.

122 lines (112 loc) 3.6 kB
// get a list of <%= LOWER_NOUN %>s const performList = async (z, bundle) => { const response = await z.request({ url: 'https://jsonplaceholder.typicode.com/posts', params: { order_by: 'id desc' } }); return response.data }; // find a particular <%= LOWER_NOUN %> by name (or other search criteria) const performSearch = async (z, bundle) => { const response = await z.request({ url: 'https://jsonplaceholder.typicode.com/posts', params: { name: bundle.inputData.name } }); return response.data }; // creates a new <%= LOWER_NOUN %> const performCreate = async (z, bundle) => { const response = await z.request({ method: 'POST', url: 'https://jsonplaceholder.typicode.com/posts', body: { name: bundle.inputData.name // json by default } }); return response.data }; module.exports = { // see here for a full list of available properties: // https://github.com/zapier/zapier-platform/blob/main/packages/schema/docs/build/schema.md#resourceschema key: '<%= KEY %>', noun: '<%= NOUN %>', <%= INCLUDE_INTRO_COMMENTS ? [ '// If `get` is defined, it will be called after a `search` or `create`' ].join('\n ') : '' %> // useful if your `searches` and `creates` return sparse objects // get: { // display: { // label: 'Get <%= NOUN %>', // description: 'Gets a <%= LOWER_NOUN %>.' // }, // operation: { // inputFields: [ // {key: 'id', required: true} // ], // perform: defineMe // } // }, list: { display: { label: 'New <%= NOUN %>', description: 'Lists the <%= LOWER_NOUN %>s.' }, operation: { perform: performList, <%= INCLUDE_INTRO_COMMENTS ? [ '// `inputFields` defines the fields a user could provide', '// Zapier will pass them in as `bundle.inputData` later. They\'re optional on triggers, but required on searches and creates.' ].join('\n ') : '' %> inputFields: [] } }, search: { display: { label: 'Find <%= NOUN %>', description: 'Finds a <%= LOWER_NOUN %> give.' }, operation: { inputFields: [ {key: 'name', required: true} ], perform: performSearch }, }, create: { display: { label: 'Create <%= NOUN %>', description: 'Creates a new <%= LOWER_NOUN %>.' }, operation: { inputFields: [ {key: 'name', required: true} ], perform: performCreate }, }, <%= INCLUDE_INTRO_COMMENTS ? [ '// In cases where Zapier needs to show an example record to the user, but we are unable to get a live example', '// from the API, Zapier will fallback to this hard-coded sample. It should reflect the data structure of', '// returned records, and have obvious placeholder values that we can show to any user.', '// In this resource, the sample is reused across all methods' ].join('\n ') : '' %> sample: { id: 1, name: 'Test' }, <%= INCLUDE_INTRO_COMMENTS ? [ '// If fields are custom to each user (like spreadsheet columns), `outputFields` can create human labels', '// For a more complete example of using dynamic fields see', '// https://github.com/zapier/zapier-platform/tree/main/packages/cli#customdynamic-fields', '// Alternatively, a static field definition can be provided, to specify labels for the fields', '// In this resource, these output fields are reused across all resources' ].join('\n ') : '' %> outputFields: [ {key: 'id', label: 'ID'}, {key: 'name', label: 'Name'} ] };