diff --git a/packages/nodes-base/nodes/Zendesk/UserDescription.ts b/packages/nodes-base/nodes/Zendesk/UserDescription.ts index bc43738ae0096..6e606a5c22f57 100644 --- a/packages/nodes-base/nodes/Zendesk/UserDescription.ts +++ b/packages/nodes-base/nodes/Zendesk/UserDescription.ts @@ -35,6 +35,11 @@ export const userOperations = [ value: 'getAll', description: 'Get all users', }, + { + name: 'Search', + value: 'search', + description: 'Search users', + }, { name: 'Update', value: 'update', @@ -667,7 +672,81 @@ export const userFields = [ }, ], }, - +/* -------------------------------------------------------------------------- */ +/* user:search */ +/* -------------------------------------------------------------------------- */ + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + resource: [ + 'user', + ], + operation: [ + 'search', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + resource: [ + 'user', + ], + operation: [ + 'search', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 100, + }, + default: 100, + description: 'How many results to return.', + }, + { + displayName: 'Filters', + name: 'filters', + type: 'collection', + placeholder: 'Add Filter', + default: {}, + displayOptions: { + show: { + resource: [ + 'user', + ], + operation: [ + 'search', + ], + }, + }, + options: [ + { + displayName: 'Query', + name: 'query', + type: 'string', + default: '', + }, + { + displayName: 'External ID', + name: 'external_id', + type: 'string', + default: '', + }, + ], + }, /* -------------------------------------------------------------------------- */ /* user:delete */ /* -------------------------------------------------------------------------- */ diff --git a/packages/nodes-base/nodes/Zendesk/Zendesk.node.ts b/packages/nodes-base/nodes/Zendesk/Zendesk.node.ts index e349d58cbed39..632660a343897 100644 --- a/packages/nodes-base/nodes/Zendesk/Zendesk.node.ts +++ b/packages/nodes-base/nodes/Zendesk/Zendesk.node.ts @@ -477,6 +477,22 @@ export class Zendesk implements INodeType { responseData = responseData.users; } } + //https://developer.zendesk.com/rest_api/docs/support/users#search-users + if (operation === 'search') { + const returnAll = this.getNodeParameter('returnAll', i) as boolean; + const options = this.getNodeParameter('filters', i) as IDataObject; + + Object.assign(qs, options); + + if (returnAll) { + responseData = await zendeskApiRequestAllItems.call(this, 'users', 'GET', `/users/search`, {}, qs); + } else { + const limit = this.getNodeParameter('limit', i) as number; + qs.per_page = limit; + responseData = await zendeskApiRequest.call(this, 'GET', `/users/search`, {}, qs); + responseData = responseData.users; + } + } //https://developer.zendesk.com/rest_api/docs/support/users#delete-user if (operation === 'delete') { const userId = this.getNodeParameter('id', i) as string;