n8n-nodes-outseta
Version:
n8n community node for Outseta CRM integration - manage people, accounts, and deals
866 lines • 35.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Outseta = void 0;
class Outseta {
constructor() {
this.description = {
displayName: 'Outseta',
name: 'outseta',
icon: { light: 'file:outseta.svg', dark: 'file:outseta.svg' },
group: ['transform'],
version: 1,
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
description: 'Interact with Outseta CRM API to manage people, accounts, and deals',
defaults: {
name: 'Outseta',
},
inputs: ["main"],
outputs: ["main"],
credentials: [
{
name: 'outsetaApi',
required: true,
},
],
requestDefaults: {
baseURL: '=https://{{$credentials.domain}}/api/v1',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
},
properties: [
{
displayName: 'Resource',
name: 'resource',
type: 'options',
noDataExpression: true,
options: [
{
name: 'Person',
value: 'people',
},
{
name: 'Account',
value: 'accounts',
},
{
name: 'Deal',
value: 'deals',
},
],
default: 'people',
},
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['people'],
},
},
options: [
{
name: 'Create',
value: 'create',
action: 'Create a person',
description: 'Add a new person to your CRM',
routing: {
request: {
method: 'POST',
url: '/crm/people',
},
},
},
{
name: 'Delete',
value: 'delete',
action: 'Delete a person',
description: 'Remove a person from your CRM',
routing: {
request: {
method: 'DELETE',
url: '=/crm/people/{{$parameter["personUid"]}}',
},
},
},
{
name: 'Get',
value: 'get',
action: 'Get a person',
description: 'Retrieve a specific person by UID',
routing: {
request: {
method: 'GET',
url: '=/crm/people/{{$parameter["personUid"]}}',
},
},
},
{
name: 'Get Many',
value: 'getAll',
action: 'Get many people',
description: 'Retrieve many people from your CRM',
routing: {
request: {
method: 'GET',
url: '/crm/people',
},
},
},
{
name: 'Update',
value: 'update',
action: 'Update a person',
description: 'Update an existing person',
routing: {
request: {
method: 'PUT',
url: '=/crm/people/{{$parameter["personUid"]}}',
},
},
},
],
default: 'getAll',
},
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['accounts'],
},
},
options: [
{
name: 'Create',
value: 'create',
action: 'Create an account',
description: 'Add a new account to your CRM',
routing: {
request: {
method: 'POST',
url: '/crm/accounts',
},
},
},
{
name: 'Delete',
value: 'delete',
action: 'Delete an account',
description: 'Remove an account from your CRM',
routing: {
request: {
method: 'DELETE',
url: '=/crm/accounts/{{$parameter["accountUid"]}}',
},
},
},
{
name: 'Get',
value: 'get',
action: 'Get an account',
description: 'Retrieve a specific account by UID',
routing: {
request: {
method: 'GET',
url: '=/crm/accounts/{{$parameter["accountUid"]}}',
},
},
},
{
name: 'Get Many',
value: 'getAll',
action: 'Get many accounts',
description: 'Retrieve many accounts from your CRM',
routing: {
request: {
method: 'GET',
url: '/crm/accounts',
},
},
},
{
name: 'Send Confirmation',
value: 'sendConfirmation',
action: 'Send confirmation email',
description: 'Send confirmation emails to account members',
routing: {
request: {
method: 'PUT',
url: '=/crm/accounts/{{$parameter["accountUid"]}}/send-confirmation-email',
},
},
},
{
name: 'Update',
value: 'update',
action: 'Update an account',
description: 'Update an existing account',
routing: {
request: {
method: 'PUT',
url: '=/crm/accounts/{{$parameter["accountUid"]}}',
},
},
},
],
default: 'getAll',
},
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['deals'],
},
},
options: [
{
name: 'Create',
value: 'create',
action: 'Create a deal',
description: 'Add a new deal to your CRM',
routing: {
request: {
method: 'POST',
url: '/crm/deals',
},
},
},
{
name: 'Delete',
value: 'delete',
action: 'Delete a deal',
description: 'Remove a deal from your CRM',
routing: {
request: {
method: 'DELETE',
url: '=/crm/deals/{{$parameter["dealUid"]}}',
},
},
},
{
name: 'Get',
value: 'get',
action: 'Get a deal',
description: 'Retrieve a specific deal by UID',
routing: {
request: {
method: 'GET',
url: '=/crm/deals/{{$parameter["dealUid"]}}',
},
},
},
{
name: 'Get Many',
value: 'getAll',
action: 'Get many deals',
description: 'Retrieve many deals from your CRM',
routing: {
request: {
method: 'GET',
url: '/crm/deals',
},
},
},
{
name: 'Update',
value: 'update',
action: 'Update a deal',
description: 'Update an existing deal',
routing: {
request: {
method: 'PUT',
url: '=/crm/deals/{{$parameter["dealUid"]}}',
},
},
},
],
default: 'getAll',
},
{
displayName: 'Person UID',
name: 'personUid',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['people'],
operation: ['get', 'update', 'delete'],
},
},
default: '',
description: 'The unique identifier of the person',
},
{
displayName: 'Account UID',
name: 'accountUid',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['accounts'],
operation: ['get', 'update', 'delete', 'sendConfirmation'],
},
},
default: '',
description: 'The unique identifier of the account',
},
{
displayName: 'Deal UID',
name: 'dealUid',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['deals'],
operation: ['get', 'update', 'delete'],
},
},
default: '',
description: 'The unique identifier of the deal',
},
{
displayName: 'Additional Options',
name: 'additionalOptions',
type: 'collection',
placeholder: 'Add Option',
default: {},
displayOptions: {
show: {
operation: ['getAll'],
},
},
options: [
{
displayName: 'Fields',
name: 'fields',
type: 'string',
default: '',
placeholder: 'Uid,Email,FirstName,LastName',
description: 'Comma-separated list of fields to return',
routing: {
request: {
qs: {
fields: '={{$value}}',
},
},
},
},
{
displayName: 'Filter by Account Name',
name: 'filterByAccountName',
type: 'string',
default: '',
placeholder: 'Acme Corp',
description: 'Filter accounts by name',
displayOptions: {
show: {
'/resource': ['accounts'],
},
},
routing: {
request: {
qs: {
Name: '={{$value}}',
},
},
},
},
{
displayName: 'Filter by Account Stage',
name: 'filterByAccountStage',
type: 'options',
options: [
{ name: 'Demo', value: 1 },
{ name: 'Trialing', value: 2 },
{ name: 'Subscribing', value: 3 },
{ name: 'Cancelling', value: 4 },
{ name: 'Expired', value: 5 },
{ name: 'Trial Expired', value: 6 },
{ name: 'Past Due', value: 7 },
],
default: 1,
description: 'Filter accounts by their stage',
displayOptions: {
show: {
'/resource': ['accounts'],
},
},
routing: {
request: {
qs: {
AccountStage: '={{$value}}',
},
},
},
},
{
displayName: 'Filter by Deal Name',
name: 'filterByDealName',
type: 'string',
default: '',
placeholder: 'Enterprise Contract',
description: 'Filter deals by name',
displayOptions: {
show: {
'/resource': ['deals'],
},
},
routing: {
request: {
qs: {
Name: '={{$value}}',
},
},
},
},
{
displayName: 'Filter by Email',
name: 'filterByEmail',
type: 'string',
default: '',
placeholder: 'john@example.com',
description: 'Filter people by email address',
displayOptions: {
show: {
'/resource': ['people'],
},
},
routing: {
request: {
qs: {
Email: '={{$value}}',
},
},
},
},
{
displayName: 'Filter by First Name',
name: 'filterByFirstName',
type: 'string',
default: '',
placeholder: 'John',
description: 'Filter people by first name',
displayOptions: {
show: {
'/resource': ['people'],
},
},
routing: {
request: {
qs: {
FirstName: '={{$value}}',
},
},
},
},
{
displayName: 'Filter by Last Name',
name: 'filterByLastName',
type: 'string',
default: '',
placeholder: 'Doe',
description: 'Filter people by last name',
displayOptions: {
show: {
'/resource': ['people'],
},
},
routing: {
request: {
qs: {
LastName: '={{$value}}',
},
},
},
},
{
displayName: 'Filter by Person Email',
name: 'filterByPersonEmail',
type: 'string',
default: '',
placeholder: 'john@example.com',
description: 'Filter accounts by associated person email',
displayOptions: {
show: {
'/resource': ['accounts'],
},
},
routing: {
request: {
qs: {
'PersonAccount.Person.Email': '={{$value}}',
},
},
},
},
{
displayName: 'Filter by Person UID',
name: 'filterByPersonUid',
type: 'string',
default: '',
placeholder: 'abc123',
description: 'Filter accounts by associated person UID',
displayOptions: {
show: {
'/resource': ['accounts'],
},
},
routing: {
request: {
qs: {
'PersonAccount.Person.Uid': '={{$value}}',
},
},
},
},
{
displayName: 'Limit',
name: 'limit',
type: 'number',
default: 50,
description: 'Max number of results to return',
typeOptions: {
minValue: 1,
},
routing: {
request: {
qs: {
limit: '={{$value}}',
},
},
},
},
{
displayName: 'Offset',
name: 'offset',
type: 'number',
default: 0,
description: 'Number of results to skip',
typeOptions: {
minValue: 0,
},
routing: {
request: {
qs: {
offset: '={{$value}}',
},
},
},
},
],
},
{
displayName: 'Email',
name: 'email',
type: 'string',
placeholder: 'name@email.com',
required: true,
displayOptions: {
show: {
resource: ['people'],
operation: ['create'],
},
},
default: '',
description: 'Email address of the person',
routing: {
send: {
type: 'body',
property: 'Email',
},
},
},
{
displayName: 'Email',
name: 'email',
type: 'string',
placeholder: 'name@email.com',
displayOptions: {
show: {
resource: ['people'],
operation: ['update'],
},
},
default: '',
description: 'Email address of the person',
routing: {
send: {
type: 'body',
property: 'Email',
},
},
},
{
displayName: 'First Name',
name: 'firstName',
type: 'string',
displayOptions: {
show: {
resource: ['people'],
operation: ['create', 'update'],
},
},
default: '',
description: 'First name of the person',
routing: {
send: {
type: 'body',
property: 'FirstName',
},
},
},
{
displayName: 'Last Name',
name: 'lastName',
type: 'string',
displayOptions: {
show: {
resource: ['people'],
operation: ['create', 'update'],
},
},
default: '',
description: 'Last name of the person',
routing: {
send: {
type: 'body',
property: 'LastName',
},
},
},
{
displayName: 'Additional Fields',
name: 'additionalFields',
type: 'collection',
placeholder: 'Add Field',
default: {},
displayOptions: {
show: {
resource: ['people'],
operation: ['create', 'update'],
},
},
options: [
{
displayName: 'Mobile Phone',
name: 'phoneMobile',
type: 'string',
default: '',
routing: {
send: {
type: 'body',
property: 'PhoneMobile',
},
},
},
{
displayName: 'Work Phone',
name: 'phoneWork',
type: 'string',
default: '',
routing: {
send: {
type: 'body',
property: 'PhoneWork',
},
},
},
{
displayName: 'Timezone',
name: 'timezone',
type: 'string',
default: '',
routing: {
send: {
type: 'body',
property: 'Timezone',
},
},
},
],
},
{
displayName: 'Account Name',
name: 'accountName',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['accounts'],
operation: ['create'],
},
},
default: '',
description: 'Name of the account',
routing: {
send: {
type: 'body',
property: 'Name',
},
},
},
{
displayName: 'Account Name',
name: 'accountName',
type: 'string',
displayOptions: {
show: {
resource: ['accounts'],
operation: ['update'],
},
},
default: '',
description: 'Name of the account',
routing: {
send: {
type: 'body',
property: 'Name',
},
},
},
{
displayName: 'Additional Fields',
name: 'additionalFields',
type: 'collection',
placeholder: 'Add Field',
default: {},
displayOptions: {
show: {
resource: ['accounts'],
operation: ['create', 'update'],
},
},
options: [
{
displayName: 'Account Stage',
name: 'accountStage',
type: 'options',
options: [
{ name: 'Demo', value: 1 },
{ name: 'Trialing', value: 2 },
{ name: 'Subscribing', value: 3 },
{ name: 'Cancelling', value: 4 },
{ name: 'Expired', value: 5 },
{ name: 'Trial Expired', value: 6 },
{ name: 'Past Due', value: 7 },
],
default: 1,
routing: {
send: {
type: 'body',
property: 'AccountStage',
},
},
},
],
},
{
displayName: 'Deal Name',
name: 'dealName',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['deals'],
operation: ['create'],
},
},
default: '',
description: 'Name of the deal',
routing: {
send: {
type: 'body',
property: 'Name',
},
},
},
{
displayName: 'Deal Name',
name: 'dealName',
type: 'string',
displayOptions: {
show: {
resource: ['deals'],
operation: ['update'],
},
},
default: '',
description: 'Name of the deal',
routing: {
send: {
type: 'body',
property: 'Name',
},
},
},
{
displayName: 'Additional Fields',
name: 'additionalFields',
type: 'collection',
placeholder: 'Add Field',
default: {},
displayOptions: {
show: {
resource: ['deals'],
operation: ['create', 'update'],
},
},
options: [
{
displayName: 'Amount',
name: 'amount',
type: 'number',
default: 0,
description: 'Deal amount in dollars',
routing: {
send: {
type: 'body',
property: 'Amount',
},
},
},
{
displayName: 'Deal Pipeline Stage UID',
name: 'dealPipelineStageUid',
type: 'string',
default: '',
description: 'UID of the deal pipeline stage',
routing: {
send: {
type: 'body',
property: 'DealPipelineStage',
value: '={{ { Uid: $value } }}',
},
},
},
{
displayName: 'Account UID',
name: 'accountUid',
type: 'string',
default: '',
description: 'UID of the associated account',
routing: {
send: {
type: 'body',
property: 'Account',
value: '={{ { Uid: $value } }}',
},
},
},
],
},
],
};
}
}
exports.Outseta = Outseta;
//# sourceMappingURL=Outseta.node.js.map