Alex Wallen 43ce2a8e10
[zapier] add response middleware (#19760)
* feat: add zapier response middleware

* chore: add samples
2024-10-03 01:02:25 +08:00

167 lines
6.0 KiB
JavaScript

const samples = require('../samples/StoreApi');
const Order = require('../models/Order');
const utils = require('../utils/utils');
module.exports = {
deleteOrder: {
key: 'deleteOrder',
noun: 'store',
display: {
label: 'Delete purchase order by ID',
description: 'For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors',
hidden: false,
},
operation: {
inputFields: [
{
key: 'orderId',
label: 'ID of the order that needs to be deleted',
type: 'string',
required: true,
},
],
outputFields: [
],
perform: async (z, bundle) => {
const options = {
url: utils.replacePathParameters('http://petstore.swagger.io/v2/store/order/{orderId}'),
method: 'DELETE',
removeMissingValuesFrom: { params: true, body: true },
headers: {
'Content-Type': '',
'Accept': '',
},
params: {
},
body: {
},
}
return z.request(utils.requestOptionsMiddleware(z, bundle, options)).then((response) => {
response.throwForStatus();
const results = utils.responseOptionsMiddleware(z, bundle, 'deleteOrder', response.json);
return results;
})
},
sample: { data: {} }
}
},
getInventory: {
key: 'getInventory',
noun: 'store',
display: {
label: 'Returns pet inventories by status',
description: 'Returns a map of status codes to quantities',
hidden: false,
},
operation: {
inputFields: [
],
outputFields: [
],
perform: async (z, bundle) => {
const options = {
url: utils.replacePathParameters('http://petstore.swagger.io/v2/store/inventory'),
method: 'GET',
removeMissingValuesFrom: { params: true, body: true },
headers: {
'Content-Type': '',
'Accept': 'application/json',
},
params: {
},
body: {
},
}
return z.request(utils.requestOptionsMiddleware(z, bundle, options)).then((response) => {
response.throwForStatus();
const results = utils.responseOptionsMiddleware(z, bundle, 'getInventory', response.json);
return { data: results };
})
},
sample: { data: {} }
}
},
getOrderById: {
key: 'getOrderById',
noun: 'store',
display: {
label: 'Find purchase order by ID',
description: 'For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions',
hidden: false,
},
operation: {
inputFields: [
{
key: 'orderId',
label: 'ID of pet that needs to be fetched',
type: 'number',
required: true,
},
],
outputFields: [
...Order.fields('', false),
],
perform: async (z, bundle) => {
const options = {
url: utils.replacePathParameters('http://petstore.swagger.io/v2/store/order/{orderId}'),
method: 'GET',
removeMissingValuesFrom: { params: true, body: true },
headers: {
'Content-Type': '',
'Accept': 'application/xml, application/json',
},
params: {
},
body: {
},
}
return z.request(utils.requestOptionsMiddleware(z, bundle, options)).then((response) => {
response.throwForStatus();
const results = utils.responseOptionsMiddleware(z, bundle, 'getOrderById', response.json);
return results;
})
},
sample: samples['OrderSample']
}
},
placeOrder: {
key: 'placeOrder',
noun: 'store',
display: {
label: 'Place an order for a pet',
description: '',
hidden: false,
},
operation: {
inputFields: [
...Order.fields(),
],
outputFields: [
...Order.fields('', false),
],
perform: async (z, bundle) => {
const options = {
url: utils.replacePathParameters('http://petstore.swagger.io/v2/store/order'),
method: 'POST',
removeMissingValuesFrom: { params: true, body: true },
headers: {
'Content-Type': 'application/json',
'Accept': 'application/xml, application/json',
},
params: {
},
body: {
...Order.mapping(bundle),
},
}
return z.request(utils.requestOptionsMiddleware(z, bundle, options)).then((response) => {
response.throwForStatus();
const results = utils.responseOptionsMiddleware(z, bundle, 'placeOrder', response.json);
return results;
})
},
sample: samples['OrderSample']
}
},
}