Add search operation to Zendesk-Node (#900)

This commit is contained in:
Ricardo Espinoza 2020-08-31 06:26:11 -04:00 committed by GitHub
parent 785858ec6a
commit 0c2db741ef
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 96 additions and 1 deletions

View file

@ -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 */
/* -------------------------------------------------------------------------- */

View file

@ -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;