mirror of
https://github.com/n8n-io/n8n.git
synced 2024-11-10 06:34:05 -08:00
✨ Add organization search to Pipedrive node (#2023)
* Add search organizations to Pipedrive node
* ⚡ Convert fields param into multiOptions
Co-authored-by: Felipe Cecagno <fcecagno@gmail.com>
This commit is contained in:
parent
ffa7bba6cf
commit
65a9e8aada
|
@ -412,6 +412,11 @@ export class Pipedrive implements INodeType {
|
||||||
value: 'update',
|
value: 'update',
|
||||||
description: 'Update an organization',
|
description: 'Update an organization',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'Search',
|
||||||
|
value: 'search',
|
||||||
|
description: 'Search organizations',
|
||||||
|
},
|
||||||
],
|
],
|
||||||
default: 'create',
|
default: 'create',
|
||||||
description: 'The operation to perform.',
|
description: 'The operation to perform.',
|
||||||
|
@ -2444,6 +2449,85 @@ export class Pipedrive implements INodeType {
|
||||||
description: 'ID of the organization to get.',
|
description: 'ID of the organization to get.',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// ----------------------------------
|
||||||
|
// organization:search
|
||||||
|
// ----------------------------------
|
||||||
|
{
|
||||||
|
displayName: 'Term',
|
||||||
|
name: 'term',
|
||||||
|
type: 'string',
|
||||||
|
required: true,
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
operation: [
|
||||||
|
'search',
|
||||||
|
],
|
||||||
|
resource: [
|
||||||
|
'organization',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
default: '',
|
||||||
|
description: 'The search term to look for. Minimum 2 characters (or 1 if using exact_match).',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Additional Fields',
|
||||||
|
name: 'additionalFields',
|
||||||
|
type: 'collection',
|
||||||
|
placeholder: 'Add Field',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
operation: [
|
||||||
|
'search',
|
||||||
|
],
|
||||||
|
resource: [
|
||||||
|
'organization',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
default: {},
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
displayName: 'Exact Match',
|
||||||
|
name: 'exactMatch',
|
||||||
|
type: 'boolean',
|
||||||
|
default: false,
|
||||||
|
description: 'When enabled, only full exact matches against the given term are returned. It is not case sensitive.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Fields',
|
||||||
|
name: 'fields',
|
||||||
|
type: 'multiOptions',
|
||||||
|
default: [],
|
||||||
|
description: 'Fields to the search in. Defaults to all of them.',
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
name: 'Address',
|
||||||
|
value: 'address',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Custom Fields',
|
||||||
|
value: 'custom_fields',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Name',
|
||||||
|
value: 'name',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Notes',
|
||||||
|
value: 'notes',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'RAW Data',
|
||||||
|
name: 'rawData',
|
||||||
|
type: 'boolean',
|
||||||
|
default: false,
|
||||||
|
description: `Returns the data exactly in the way it got received from the API.`,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
// ----------------------------------
|
// ----------------------------------
|
||||||
// organization:update
|
// organization:update
|
||||||
// ----------------------------------
|
// ----------------------------------
|
||||||
|
@ -4110,8 +4194,7 @@ export class Pipedrive implements INodeType {
|
||||||
|
|
||||||
endpoint = `/organizations`;
|
endpoint = `/organizations`;
|
||||||
|
|
||||||
}
|
} else if (operation === 'update') {
|
||||||
if (operation === 'update') {
|
|
||||||
// ----------------------------------
|
// ----------------------------------
|
||||||
// organization:update
|
// organization:update
|
||||||
// ----------------------------------
|
// ----------------------------------
|
||||||
|
@ -4128,6 +4211,32 @@ export class Pipedrive implements INodeType {
|
||||||
body.label = null;
|
body.label = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else if (operation === 'search') {
|
||||||
|
// ----------------------------------
|
||||||
|
// organization:search
|
||||||
|
// ----------------------------------
|
||||||
|
|
||||||
|
requestMethod = 'GET';
|
||||||
|
|
||||||
|
qs.term = this.getNodeParameter('term', i) as string;
|
||||||
|
returnAll = this.getNodeParameter('returnAll', i) as boolean;
|
||||||
|
if (returnAll === false) {
|
||||||
|
qs.limit = this.getNodeParameter('limit', i) as number;
|
||||||
|
}
|
||||||
|
|
||||||
|
const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject & {
|
||||||
|
fields?: string[];
|
||||||
|
};
|
||||||
|
|
||||||
|
if (additionalFields?.fields?.length) {
|
||||||
|
qs.fields = additionalFields.fields.join(',');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (additionalFields.exactMatch) {
|
||||||
|
qs.exact_match = additionalFields.exactMatch as boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
endpoint = `/organizations/search`;
|
||||||
}
|
}
|
||||||
} else if (resource === 'person') {
|
} else if (resource === 'person') {
|
||||||
if (operation === 'create') {
|
if (operation === 'create') {
|
||||||
|
|
Loading…
Reference in a new issue