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:
@ -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,
|
||||
},
|
||||
};
|
||||
@ -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,
|
||||
},
|
||||
};
|
||||
52
packages/twenty-zapier/src/creates/create_record.ts
Normal file
52
packages/twenty-zapier/src/creates/create_record.ts
Normal 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
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user