javascriptjsonzapierzapier-cli

Zapier custom response object


Working on creating a custom zapier integration using zapier CLI. My API endpoint is not technically a create, but it uses the POST method so I made it under the create definition in zapier. I set my output fields to empty, but it breaks on my empty response object.

outputFields: []

The error message:

We had trouble sending your test through.
Unexpected end of JSON input
Hide details
Troubleshooting Errors | Contact Support
What happened (You are seeing this because you are an admin):
  Starting POST request to https://api.fake.com/v2/demo-finance/live/csh-search
  Received 202 code from https://api.fake.com/v2/demo-finance/live/csh-search after 596ms
  Received content ""
  Unexpected end of JSON input

Everything is working as expected the request went through it is just not happy with the empty string response not being valid JSON. Is there some way to tell zapier this is an acceptable response object?


Solution

  • David here, from the Zapier Platform team.

    It's fine if your API works that way, but you still need to return something json serializable from your function. Try something like this:

    const performCreate = async (z, bundle) => {
      const response = await z.request('https://api.fake.com/v2/demo-finance/live/csh-search')
      if (response.statusCode === 202) {
        return {}
      }
      // handle errors, other cases, whatever
      // just make sure to return an object
    }
    

    As a side note, just because the request uses a POST request doesn't mean it needs to be a Create; it should be whatever type makes the most sense for the operation. If it's a search (like the fake url suggests) a search is probably the way to go.