2114 timebox make sure the zapier integrations supports custom objects (#3091)

* Fix build command

* Add hidden trigger to fetch object names

* Remove useless actions

* Rename createObject to createRecord
This commit is contained in:
martmull
2023-12-20 18:41:30 +01:00
committed by GitHub
parent 984fc76b94
commit b1841d0e2f
18 changed files with 273 additions and 292 deletions

View File

@ -1,129 +0,0 @@
import { Bundle, ZObject } from 'zapier-platform-core';
import handleQueryParams from '../utils/handleQueryParams';
import requestDb from '../utils/requestDb';
const perform = async (z: ZObject, bundle: Bundle) => {
const query = `
mutation createCompany {
createCompany(
data:{${handleQueryParams(bundle.inputData)}}
)
{id}
}`;
return await requestDb(z, bundle, query);
};
export default {
display: {
description: 'Creates a new Company in Twenty',
hidden: false,
label: 'Create New Company',
},
key: 'create_company',
noun: 'Company',
operation: {
inputFields: [
{
key: 'name',
label: 'Company Name',
type: 'string',
required: false,
list: false,
altersDynamicFields: false,
},
{
key: 'address',
label: 'Address',
type: 'string',
required: false,
list: false,
altersDynamicFields: false,
},
{
key: 'domainName',
label: 'Url',
type: 'string',
required: false,
list: false,
altersDynamicFields: false,
},
{
key: 'linkedinLink__url',
label: 'Linkedin Link Url',
type: 'string',
required: false,
list: false,
altersDynamicFields: false,
},
{
key: 'linkedinLink__label',
label: 'Linkedin Link Label',
type: 'string',
required: false,
list: false,
altersDynamicFields: false,
},
{
key: 'xLink__url',
label: 'Twitter Link Url',
type: 'string',
required: false,
list: false,
altersDynamicFields: false,
},
{
key: 'xLink__label',
label: 'Twitter Link Label',
type: 'string',
required: false,
list: false,
altersDynamicFields: false,
},
{
key: 'annualRecurringRevenue__amountMicros',
label: 'ARR (Annual Recurring Revenue) amount micros',
type: 'number',
required: false,
list: false,
altersDynamicFields: false,
},
{
key: 'annualRecurringRevenue__currencyCode',
label: 'ARR (Annual Recurring Revenue) currency Code',
type: 'string',
required: false,
list: false,
altersDynamicFields: false,
},
{
key: 'idealCustomerProfile',
label: 'ICP (Ideal Customer Profile)',
type: 'boolean',
required: false,
list: false,
altersDynamicFields: false,
},
{
key: 'employees',
label: 'Number of Employees',
type: 'number',
required: false,
list: false,
altersDynamicFields: false,
},
],
sample: {
name: 'Apple',
address: 'apple.com',
domainName: 'Cupertino',
linkedinUrl__url: '/apple',
linkedinUrl__label: 'Apple',
xUrl__url: '/apple',
xUrl__label: 'Apple',
annualRecurringRevenue__amountMicros: 1000000000,
annualRecurringRevenue__currencyCode: 'USD',
idealCustomerProfile: true,
employees: 10000,
},
perform,
},
};

View File

@ -1,75 +0,0 @@
import { Bundle, ZObject } from 'zapier-platform-core';
import handleQueryParams from '../utils/handleQueryParams';
import requestDb from '../utils/requestDb';
const perform = async (z: ZObject, bundle: Bundle) => {
const query = `
mutation createPerson {
createPerson(
data:{${handleQueryParams(bundle.inputData)}}
)
{id}
}`;
return await requestDb(z, bundle, query);
};
export default {
display: {
description: 'Creates a new Person in Twenty',
hidden: false,
label: 'Create New Person',
},
key: 'create_person',
noun: 'Person',
operation: {
inputFields: [
{
key: 'name__firstName',
label: 'First Name',
type: 'string',
required: false,
list: false,
altersDynamicFields: false,
},
{
key: 'name__lastName',
label: 'Last Name',
type: 'string',
required: false,
list: false,
altersDynamicFields: false,
},
{
key: 'email',
label: 'Email',
type: 'string',
required: false,
list: false,
altersDynamicFields: false,
},
{
key: 'phone',
label: 'Phone',
type: 'string',
required: false,
list: false,
altersDynamicFields: false,
},
{
key: 'city',
label: 'City',
type: 'string',
required: false,
list: false,
altersDynamicFields: false,
},
],
sample: {
name__firstName: 'John',
name__lastName: 'Doe',
email: 'johndoe@gmail.com',
phone: '0390900909',
city: 'Paris',
},
perform,
},
};

View File

@ -0,0 +1,52 @@
import { Bundle, ZObject } from "zapier-platform-core";
import requestDb, { requestSchema } from "../utils/requestDb";
import handleQueryParams from "../utils/handleQueryParams";
import { capitalize } from "../utils/capitalize";
import { computeInputFields } from "../utils/computeInputFields";
const recordInputFields = async (z: ZObject, bundle: Bundle) => {
const schema = await requestSchema(z, bundle)
const infos = schema.components.schemas[bundle.inputData.nameSingular]
return computeInputFields(infos);
}
const perform = async (z: ZObject, bundle: Bundle) => {
const data = bundle.inputData
const nameSingular = data.nameSingular
delete data.nameSingular
const query = `
mutation create${capitalize(nameSingular)} {
create${capitalize(nameSingular)}(
data:{${handleQueryParams(data)}}
)
{id}
}`;
return await requestDb(z, bundle, query);
};
export default {
display: {
description: 'Creates a new Record in Twenty',
hidden: false,
label: 'Create New Record',
},
key: 'create_record',
noun: 'Record',
operation: {
inputFields: [
{
key: 'nameSingular',
required: true,
label: 'Name of the Record to create',
dynamic: 'find_objects.nameSingular',
altersDynamicFields: true,
},
recordInputFields
],
sample: {
id: '179ed459-79cf-41d9-ab85-96397fa8e936',
},
perform
},
}