n8n-nodes-clientify 0.2.6 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/nodes/ClientifyApi/ClientifyApi.node.js +10 -9
- package/dist/nodes/ClientifyApi/ClientifyApiCatalog.d.ts +2 -14
- package/dist/nodes/ClientifyApi/ClientifyApiCatalog.js +8 -153
- package/dist/nodes/ClientifyApi/operations.generated.d.ts +21 -0
- package/dist/nodes/ClientifyApi/operations.generated.js +7 -0
- package/dist/package.json +2 -5
- package/package.json +2 -5
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ClientifyApi = void 0;
|
|
4
4
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
-
const api_client_1 = require("@clientify/api-client");
|
|
6
5
|
const ClientifyApiCatalog_1 = require("./ClientifyApiCatalog");
|
|
7
6
|
class ClientifyApi {
|
|
8
7
|
constructor() {
|
|
@@ -49,8 +48,6 @@ class ClientifyApi {
|
|
|
49
48
|
const credentials = await this.getCredentials('clientifyApi');
|
|
50
49
|
const apiKey = credentials.apiKey;
|
|
51
50
|
const baseUrl = credentials.baseUrl || 'https://api-plus.clientify.com/v2';
|
|
52
|
-
const client = new api_client_1.ClientifyClient({ apiKey, baseUrl });
|
|
53
|
-
const http = client.getHttpClient();
|
|
54
51
|
for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
|
|
55
52
|
const operation = this.getNodeParameter('operation', itemIndex);
|
|
56
53
|
const def = ClientifyApiCatalog_1.operationDefinitions[operation];
|
|
@@ -96,13 +93,17 @@ class ClientifyApi {
|
|
|
96
93
|
const url = (0, ClientifyApiCatalog_1.renderPathTemplate)(def.pathTemplate, input);
|
|
97
94
|
const rest = (0, ClientifyApiCatalog_1.omitKeys)(input, def.pathParamNames);
|
|
98
95
|
const isQueryMethod = def.method === 'GET' || def.method === 'DELETE';
|
|
99
|
-
const
|
|
100
|
-
const
|
|
101
|
-
const result = await
|
|
96
|
+
const qs = isQueryMethod ? Object.assign(Object.assign({}, (def.fixedQuery || {})), rest) : undefined;
|
|
97
|
+
const body = !isQueryMethod && Object.keys(rest).length > 0 ? rest : undefined;
|
|
98
|
+
const result = await this.helpers.httpRequest({
|
|
102
99
|
method: def.method,
|
|
103
|
-
url
|
|
104
|
-
|
|
105
|
-
|
|
100
|
+
url: `${baseUrl}${url}`,
|
|
101
|
+
qs,
|
|
102
|
+
body,
|
|
103
|
+
json: true,
|
|
104
|
+
headers: {
|
|
105
|
+
Authorization: `Token ${apiKey}`,
|
|
106
|
+
},
|
|
106
107
|
});
|
|
107
108
|
const normalized = result === undefined || result === null || result === ''
|
|
108
109
|
? { ok: true }
|
|
@@ -1,18 +1,5 @@
|
|
|
1
1
|
import { INodeProperties } from 'n8n-workflow';
|
|
2
|
-
|
|
3
|
-
export interface ClientifyOperationDefinition {
|
|
4
|
-
operation: string;
|
|
5
|
-
label: string;
|
|
6
|
-
description: string;
|
|
7
|
-
method: ClientifyHttpMethod;
|
|
8
|
-
pathTemplate: string;
|
|
9
|
-
pathParamNames: string[];
|
|
10
|
-
fixedQuery: Record<string, unknown>;
|
|
11
|
-
fieldNames: string[];
|
|
12
|
-
requiredFieldNames: string[];
|
|
13
|
-
fieldDefaults: Record<string, unknown>;
|
|
14
|
-
}
|
|
15
|
-
export declare const operationDefinitions: Record<string, ClientifyOperationDefinition>;
|
|
2
|
+
import { operationDefinitions } from './operations.generated';
|
|
16
3
|
export declare const operationOptions: {
|
|
17
4
|
name: string;
|
|
18
5
|
value: string;
|
|
@@ -21,3 +8,4 @@ export declare const operationOptions: {
|
|
|
21
8
|
export declare const operationFields: INodeProperties[];
|
|
22
9
|
export declare function renderPathTemplate(pathTemplate: string, input: Record<string, unknown>): string;
|
|
23
10
|
export declare function omitKeys<T extends Record<string, unknown>>(obj: T, keys: string[]): Record<string, unknown>;
|
|
11
|
+
export { operationDefinitions };
|
|
@@ -1,58 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
3
|
+
exports.operationDefinitions = exports.operationFields = exports.operationOptions = void 0;
|
|
7
4
|
exports.renderPathTemplate = renderPathTemplate;
|
|
8
5
|
exports.omitKeys = omitKeys;
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
function safeReadJson(filePath) {
|
|
12
|
-
try {
|
|
13
|
-
return JSON.parse(fs_1.default.readFileSync(filePath, 'utf8'));
|
|
14
|
-
}
|
|
15
|
-
catch (_a) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function extractMethodAndPath(jsSource) {
|
|
20
|
-
var _a;
|
|
21
|
-
const methodMatch = jsSource.match(/\bmethod:\s*'([A-Z]+)'\s*,/);
|
|
22
|
-
const pathMatch = jsSource.match(/\bpath:\s*(?:'([^']+)'|\"([^\"]+)\"|`([^`]+)`)\s*,?/);
|
|
23
|
-
const rawMethod = methodMatch === null || methodMatch === void 0 ? void 0 : methodMatch[1];
|
|
24
|
-
const pathTemplate = (_a = ((pathMatch === null || pathMatch === void 0 ? void 0 : pathMatch[1]) || (pathMatch === null || pathMatch === void 0 ? void 0 : pathMatch[2]) || (pathMatch === null || pathMatch === void 0 ? void 0 : pathMatch[3]))) === null || _a === void 0 ? void 0 : _a.trim();
|
|
25
|
-
if (!rawMethod || !pathTemplate)
|
|
26
|
-
return null;
|
|
27
|
-
if (!['GET', 'POST', 'PUT', 'PATCH', 'DELETE'].includes(rawMethod))
|
|
28
|
-
return null;
|
|
29
|
-
return { method: rawMethod, pathTemplate };
|
|
30
|
-
}
|
|
31
|
-
function extractFixedQuery(jsSource) {
|
|
32
|
-
// We only extract simple, literal query values (e.g. GetCurrentUser sets `fields: 'id,email'`).
|
|
33
|
-
const queryBlock = jsSource.match(/\bquery:\s*\{([\s\S]*?)\}\s*,/);
|
|
34
|
-
if (!queryBlock)
|
|
35
|
-
return {};
|
|
36
|
-
const content = queryBlock[1];
|
|
37
|
-
const out = {};
|
|
38
|
-
const fieldsMatch = content.match(/\bfields:\s*'([^']+)'/) || content.match(/\bfields:\s*\"([^\"]+)\"/);
|
|
39
|
-
if (fieldsMatch)
|
|
40
|
-
out.fields = fieldsMatch[1];
|
|
41
|
-
return out;
|
|
42
|
-
}
|
|
43
|
-
function getPathParamNames(pathTemplate) {
|
|
44
|
-
var _a;
|
|
45
|
-
const names = new Set();
|
|
46
|
-
const re = /\$\{([^}]+)\}/g;
|
|
47
|
-
let match;
|
|
48
|
-
while ((match = re.exec(pathTemplate))) {
|
|
49
|
-
const expr = (_a = match[1]) === null || _a === void 0 ? void 0 : _a.trim();
|
|
50
|
-
if (expr && /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(expr)) {
|
|
51
|
-
names.add(expr);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return Array.from(names);
|
|
55
|
-
}
|
|
6
|
+
const operations_generated_1 = require("./operations.generated");
|
|
7
|
+
Object.defineProperty(exports, "operationDefinitions", { enumerable: true, get: function () { return operations_generated_1.operationDefinitions; } });
|
|
56
8
|
function mapInspectorTypeToN8nType(type) {
|
|
57
9
|
if (type === 'number')
|
|
58
10
|
return 'number';
|
|
@@ -60,100 +12,7 @@ function mapInspectorTypeToN8nType(type) {
|
|
|
60
12
|
return 'boolean';
|
|
61
13
|
return 'string';
|
|
62
14
|
}
|
|
63
|
-
|
|
64
|
-
try {
|
|
65
|
-
// In dist, we copy `appmixer/clientify/crm` to `dist/appmixer/clientify/crm`.
|
|
66
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
67
|
-
return require(path_1.default.resolve(__dirname, '../../appmixer/clientify/crm/fields.js'));
|
|
68
|
-
}
|
|
69
|
-
catch (_a) {
|
|
70
|
-
return null;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
function getDefaultFieldsValue(operation, pathTemplate) {
|
|
74
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
75
|
-
const fields = loadAppmixerFieldsModule();
|
|
76
|
-
if (!fields)
|
|
77
|
-
return undefined;
|
|
78
|
-
const isContact = pathTemplate.startsWith('/contacts/');
|
|
79
|
-
const isCompany = pathTemplate.startsWith('/companies/');
|
|
80
|
-
const isTask = pathTemplate.startsWith('/tasks/');
|
|
81
|
-
const isUser = pathTemplate.startsWith('/users/');
|
|
82
|
-
if (operation === 'ListContacts' && isContact)
|
|
83
|
-
return (_a = fields.contacts) === null || _a === void 0 ? void 0 : _a.list;
|
|
84
|
-
if (operation === 'GetContact' && isContact)
|
|
85
|
-
return (_b = fields.contacts) === null || _b === void 0 ? void 0 : _b.detail;
|
|
86
|
-
if (operation === 'ListCompanies' && isCompany)
|
|
87
|
-
return (_c = fields.companies) === null || _c === void 0 ? void 0 : _c.list;
|
|
88
|
-
if (operation === 'SearchCompanies' && isCompany)
|
|
89
|
-
return (_d = fields.companies) === null || _d === void 0 ? void 0 : _d.list;
|
|
90
|
-
if (operation === 'GetCompany' && isCompany)
|
|
91
|
-
return (_e = fields.companies) === null || _e === void 0 ? void 0 : _e.detail;
|
|
92
|
-
if (operation === 'ListTasks' && isTask)
|
|
93
|
-
return (_f = fields.tasks) === null || _f === void 0 ? void 0 : _f.list;
|
|
94
|
-
if (operation === 'GetTask' && isTask)
|
|
95
|
-
return (_g = fields.tasks) === null || _g === void 0 ? void 0 : _g.detail;
|
|
96
|
-
if (operation === 'ListUsers' && isUser)
|
|
97
|
-
return (_h = fields.users) === null || _h === void 0 ? void 0 : _h.list;
|
|
98
|
-
return undefined;
|
|
99
|
-
}
|
|
100
|
-
function discoverOperations() {
|
|
101
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
102
|
-
const catalog = {};
|
|
103
|
-
const crmDir = path_1.default.resolve(__dirname, '../../appmixer/clientify/crm');
|
|
104
|
-
if (!fs_1.default.existsSync(crmDir)) {
|
|
105
|
-
// Don’t throw — allow n8n to boot, but the node will have no operations.
|
|
106
|
-
// eslint-disable-next-line no-console
|
|
107
|
-
console.warn(`[Clientify n8n] Missing AppMixer CRM catalog at ${crmDir}.`);
|
|
108
|
-
return catalog;
|
|
109
|
-
}
|
|
110
|
-
const entries = fs_1.default.readdirSync(crmDir, { withFileTypes: true }).filter((d) => d.isDirectory());
|
|
111
|
-
for (const entry of entries) {
|
|
112
|
-
const operation = entry.name;
|
|
113
|
-
const componentPath = path_1.default.join(crmDir, operation, 'component.json');
|
|
114
|
-
const jsPath = path_1.default.join(crmDir, operation, `${operation}.js`);
|
|
115
|
-
const componentJson = safeReadJson(componentPath);
|
|
116
|
-
if (!componentJson || !fs_1.default.existsSync(jsPath))
|
|
117
|
-
continue;
|
|
118
|
-
const jsSource = fs_1.default.readFileSync(jsPath, 'utf8');
|
|
119
|
-
const methodAndPath = extractMethodAndPath(jsSource);
|
|
120
|
-
if (!methodAndPath)
|
|
121
|
-
continue;
|
|
122
|
-
const fixedQuery = extractFixedQuery(jsSource);
|
|
123
|
-
const inPort = (_b = (_a = componentJson.inPorts) === null || _a === void 0 ? void 0 : _a.find((p) => (p === null || p === void 0 ? void 0 : p.name) === 'in')) !== null && _b !== void 0 ? _b : (_c = componentJson.inPorts) === null || _c === void 0 ? void 0 : _c[0];
|
|
124
|
-
const requiredFieldNames = ((_e = (_d = inPort === null || inPort === void 0 ? void 0 : inPort.schema) === null || _d === void 0 ? void 0 : _d.required) !== null && _e !== void 0 ? _e : []).filter((k) => typeof k === 'string');
|
|
125
|
-
const inspectorInputs = (_g = (_f = inPort === null || inPort === void 0 ? void 0 : inPort.inspector) === null || _f === void 0 ? void 0 : _f.inputs) !== null && _g !== void 0 ? _g : {};
|
|
126
|
-
const sortedFieldEntries = Object.entries(inspectorInputs).sort((a, b) => {
|
|
127
|
-
var _a, _b, _c, _d;
|
|
128
|
-
const ai = (_b = (_a = a[1]) === null || _a === void 0 ? void 0 : _a.index) !== null && _b !== void 0 ? _b : 9999;
|
|
129
|
-
const bi = (_d = (_c = b[1]) === null || _c === void 0 ? void 0 : _c.index) !== null && _d !== void 0 ? _d : 9999;
|
|
130
|
-
return ai - bi;
|
|
131
|
-
});
|
|
132
|
-
const fieldNames = sortedFieldEntries.map(([key]) => key);
|
|
133
|
-
const pathParamNames = getPathParamNames(methodAndPath.pathTemplate);
|
|
134
|
-
const fieldDefaults = {};
|
|
135
|
-
if (fieldNames.includes('fields')) {
|
|
136
|
-
const defaultFields = getDefaultFieldsValue(operation, methodAndPath.pathTemplate);
|
|
137
|
-
if (defaultFields)
|
|
138
|
-
fieldDefaults.fields = defaultFields;
|
|
139
|
-
}
|
|
140
|
-
catalog[operation] = {
|
|
141
|
-
operation,
|
|
142
|
-
label: componentJson.label || operation,
|
|
143
|
-
description: componentJson.description || '',
|
|
144
|
-
method: methodAndPath.method,
|
|
145
|
-
pathTemplate: methodAndPath.pathTemplate,
|
|
146
|
-
pathParamNames,
|
|
147
|
-
fixedQuery,
|
|
148
|
-
fieldNames,
|
|
149
|
-
requiredFieldNames,
|
|
150
|
-
fieldDefaults,
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
return catalog;
|
|
154
|
-
}
|
|
155
|
-
exports.operationDefinitions = discoverOperations();
|
|
156
|
-
exports.operationOptions = Object.values(exports.operationDefinitions)
|
|
15
|
+
exports.operationOptions = Object.values(operations_generated_1.operationDefinitions)
|
|
157
16
|
.sort((a, b) => a.label.localeCompare(b.label))
|
|
158
17
|
.map((def) => ({
|
|
159
18
|
name: def.label,
|
|
@@ -161,14 +20,10 @@ exports.operationOptions = Object.values(exports.operationDefinitions)
|
|
|
161
20
|
description: def.description,
|
|
162
21
|
}));
|
|
163
22
|
exports.operationFields = (() => {
|
|
164
|
-
var _a
|
|
23
|
+
var _a;
|
|
165
24
|
const fields = [];
|
|
166
|
-
for (const def of Object.values(
|
|
167
|
-
const
|
|
168
|
-
const componentPath = path_1.default.join(crmDir, def.operation, 'component.json');
|
|
169
|
-
const componentJson = safeReadJson(componentPath);
|
|
170
|
-
const inPort = (_b = (_a = componentJson === null || componentJson === void 0 ? void 0 : componentJson.inPorts) === null || _a === void 0 ? void 0 : _a.find((p) => (p === null || p === void 0 ? void 0 : p.name) === 'in')) !== null && _b !== void 0 ? _b : (_c = componentJson === null || componentJson === void 0 ? void 0 : componentJson.inPorts) === null || _c === void 0 ? void 0 : _c[0];
|
|
171
|
-
const inspectorInputs = (_e = (_d = inPort === null || inPort === void 0 ? void 0 : inPort.inspector) === null || _d === void 0 ? void 0 : _d.inputs) !== null && _e !== void 0 ? _e : {};
|
|
25
|
+
for (const def of Object.values(operations_generated_1.operationDefinitions)) {
|
|
26
|
+
const inspectorInputs = def.inspectorInputs || {};
|
|
172
27
|
const sortedFieldEntries = Object.entries(inspectorInputs).sort((a, b) => {
|
|
173
28
|
var _a, _b, _c, _d;
|
|
174
29
|
const ai = (_b = (_a = a[1]) === null || _a === void 0 ? void 0 : _a.index) !== null && _b !== void 0 ? _b : 9999;
|
|
@@ -178,7 +33,7 @@ exports.operationFields = (() => {
|
|
|
178
33
|
for (const [fieldName, inputDef] of sortedFieldEntries) {
|
|
179
34
|
const isRequired = def.requiredFieldNames.includes(fieldName);
|
|
180
35
|
const n8nType = mapInspectorTypeToN8nType(inputDef === null || inputDef === void 0 ? void 0 : inputDef.type);
|
|
181
|
-
const defaultValue = (
|
|
36
|
+
const defaultValue = (_a = def.fieldDefaults[fieldName]) !== null && _a !== void 0 ? _a : (n8nType === 'number' ? 0 : n8nType === 'boolean' ? false : '');
|
|
182
37
|
fields.push({
|
|
183
38
|
displayName: (inputDef === null || inputDef === void 0 ? void 0 : inputDef.label) || fieldName,
|
|
184
39
|
name: fieldName,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type ClientifyHttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
2
|
+
export type AppmixerInspectorInput = {
|
|
3
|
+
type?: 'text' | 'number' | 'toggle' | 'expression';
|
|
4
|
+
label?: string;
|
|
5
|
+
tooltip?: string;
|
|
6
|
+
index?: number;
|
|
7
|
+
};
|
|
8
|
+
export type ClientifyOperationDefinition = {
|
|
9
|
+
operation: string;
|
|
10
|
+
label: string;
|
|
11
|
+
description: string;
|
|
12
|
+
method: ClientifyHttpMethod;
|
|
13
|
+
pathTemplate: string;
|
|
14
|
+
pathParamNames: string[];
|
|
15
|
+
fixedQuery: Record<string, unknown>;
|
|
16
|
+
fieldNames: string[];
|
|
17
|
+
requiredFieldNames: string[];
|
|
18
|
+
fieldDefaults: Record<string, unknown>;
|
|
19
|
+
inspectorInputs: Record<string, AppmixerInspectorInput>;
|
|
20
|
+
};
|
|
21
|
+
export declare const operationDefinitions: Record<string, ClientifyOperationDefinition>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
// This file is generated by scripts/generateOperationCatalog.cjs.
|
|
4
|
+
// Do not edit by hand.
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.operationDefinitions = void 0;
|
|
7
|
+
exports.operationDefinitions = { "AddCompanyAddress": { "operation": "AddCompanyAddress", "label": "Add Company Address", "description": "Add an address to a company.", "method": "POST", "pathTemplate": "/companies/${companyId}/addresses/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId", "type", "street", "city", "state", "country", "postal_code"], "requiredFieldNames": ["companyId", "type", "street", "city", "state", "country", "postal_code"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "type": { "type": "number", "label": "Type", "tooltip": "Set Type (can be mapped from previous steps).", "index": 2 }, "street": { "type": "text", "label": "Street", "tooltip": "Set Street (can be mapped from previous steps).", "index": 3 }, "city": { "type": "text", "label": "City", "tooltip": "Set City (can be mapped from previous steps).", "index": 4 }, "state": { "type": "text", "label": "State", "tooltip": "Set State (can be mapped from previous steps).", "index": 5 }, "country": { "type": "text", "label": "Country", "tooltip": "Set Country (can be mapped from previous steps).", "index": 6 }, "postal_code": { "type": "text", "label": "Postal Code", "tooltip": "Set Postal Code (can be mapped from previous steps).", "index": 7 } } }, "AddCompanyCall": { "operation": "AddCompanyCall", "label": "Add Company Call", "description": "Log a call on a company.", "method": "POST", "pathTemplate": "/companies/${companyId}/call/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId", "type", "comment", "outcome", "call_date", "call_time"], "requiredFieldNames": ["companyId", "type", "comment", "outcome", "call_date", "call_time"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "type": { "type": "text", "label": "Type", "tooltip": "Set Type (can be mapped from previous steps).", "index": 2 }, "comment": { "type": "text", "label": "Comment", "tooltip": "Set Comment (can be mapped from previous steps).", "index": 3 }, "outcome": { "type": "text", "label": "Outcome", "tooltip": "Set Outcome (can be mapped from previous steps).", "index": 4 }, "call_date": { "type": "text", "label": "Call Date", "tooltip": "Set Call Date (can be mapped from previous steps).", "index": 5 }, "call_time": { "type": "text", "label": "Call Time", "tooltip": "Set Call Time (can be mapped from previous steps).", "index": 6 } } }, "AddCompanyCheckin": { "operation": "AddCompanyCheckin", "label": "Add Company Check-in", "description": "Log a meeting/check-in on a company.", "method": "POST", "pathTemplate": "/companies/${companyId}/checkin/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId", "type", "comment", "outcome", "date"], "requiredFieldNames": ["companyId", "type", "comment", "outcome", "date"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "type": { "type": "text", "label": "Type", "tooltip": "Set Type (can be mapped from previous steps).", "index": 2 }, "comment": { "type": "text", "label": "Comment", "tooltip": "Set Comment (can be mapped from previous steps).", "index": 3 }, "outcome": { "type": "text", "label": "Outcome", "tooltip": "Set Outcome (can be mapped from previous steps).", "index": 4 }, "date": { "type": "text", "label": "Date", "tooltip": "Set Date (can be mapped from previous steps).", "index": 5 } } }, "AddCompanyEmail": { "operation": "AddCompanyEmail", "label": "Add Company Email", "description": "Add an email to a company.", "method": "POST", "pathTemplate": "/companies/${companyId}/emails/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId", "email", "type"], "requiredFieldNames": ["companyId", "email", "type"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "email": { "type": "text", "label": "Email", "tooltip": "Set Email (can be mapped from previous steps).", "index": 2 }, "type": { "type": "number", "label": "Type", "tooltip": "Set Type (can be mapped from previous steps).", "index": 3 } } }, "AddCompanyEmployee": { "operation": "AddCompanyEmployee", "label": "Add Company Employee", "description": "Link a contact as an employee of a company.", "method": "PUT", "pathTemplate": "/companies/${companyId}/employees/${contactId}/", "pathParamNames": ["companyId", "contactId"], "fixedQuery": {}, "fieldNames": ["companyId", "contactId"], "requiredFieldNames": ["companyId", "contactId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 2 } } }, "AddCompanyNote": { "operation": "AddCompanyNote", "label": "Add Company Note", "description": "Add a note to a company.", "method": "POST", "pathTemplate": "/companies/${companyId}/note/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId", "name", "comment"], "requiredFieldNames": ["companyId", "name", "comment"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "name": { "type": "text", "label": "Name", "tooltip": "Set Name (can be mapped from previous steps).", "index": 2 }, "comment": { "type": "text", "label": "Comment", "tooltip": "Set Comment (can be mapped from previous steps).", "index": 3 } } }, "AddCompanyPhone": { "operation": "AddCompanyPhone", "label": "Add Company Phone", "description": "Add a phone to a company.", "method": "POST", "pathTemplate": "/companies/${companyId}/phones/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId", "phone", "type"], "requiredFieldNames": ["companyId", "phone", "type"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "phone": { "type": "text", "label": "Phone", "tooltip": "Set Phone (can be mapped from previous steps).", "index": 2 }, "type": { "type": "number", "label": "Type", "tooltip": "Set Type (can be mapped from previous steps).", "index": 3 } } }, "AddCompanyTag": { "operation": "AddCompanyTag", "label": "Add Company Tag", "description": "Add a tag to a company (creates the tag if needed).", "method": "POST", "pathTemplate": "/companies/${companyId}/tags/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId", "name"], "requiredFieldNames": ["companyId", "name"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "name": { "type": "text", "label": "Name", "tooltip": "Set Name (can be mapped from previous steps).", "index": 2 } } }, "AddCompanyWebsite": { "operation": "AddCompanyWebsite", "label": "Add Company Website", "description": "Add a website to a company.", "method": "POST", "pathTemplate": "/companies/${companyId}/websites/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId", "website"], "requiredFieldNames": ["companyId", "website"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "website": { "type": "text", "label": "Website", "tooltip": "Set Website (can be mapped from previous steps).", "index": 2 } } }, "AddContactAddress": { "operation": "AddContactAddress", "label": "Add Contact Address", "description": "Add an address to a contact.", "method": "POST", "pathTemplate": "/contacts/${contactId}/addresses/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId", "type", "street", "city", "state", "country", "postal_code"], "requiredFieldNames": ["contactId", "type", "street", "city", "state", "country", "postal_code"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "type": { "type": "number", "label": "Type", "tooltip": "Set Type (can be mapped from previous steps).", "index": 2 }, "street": { "type": "text", "label": "Street", "tooltip": "Set Street (can be mapped from previous steps).", "index": 3 }, "city": { "type": "text", "label": "City", "tooltip": "Set City (can be mapped from previous steps).", "index": 4 }, "state": { "type": "text", "label": "State", "tooltip": "Set State (can be mapped from previous steps).", "index": 5 }, "country": { "type": "text", "label": "Country", "tooltip": "Set Country (can be mapped from previous steps).", "index": 6 }, "postal_code": { "type": "text", "label": "Postal Code", "tooltip": "Set Postal Code (can be mapped from previous steps).", "index": 7 } } }, "AddContactCall": { "operation": "AddContactCall", "label": "Add Contact Call", "description": "Log a call on a contact.", "method": "POST", "pathTemplate": "/contacts/${contactId}/call/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId"], "requiredFieldNames": ["contactId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 } } }, "AddContactCheckin": { "operation": "AddContactCheckin", "label": "Add Contact Check-in", "description": "Log a meeting/check-in on a contact.", "method": "POST", "pathTemplate": "/contacts/${contactId}/checkin/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId", "type", "comment", "outcome", "date", "owner"], "requiredFieldNames": ["contactId", "type", "comment", "outcome", "date", "owner"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "type": { "type": "text", "label": "Type", "tooltip": "Set Type (can be mapped from previous steps).", "index": 2 }, "comment": { "type": "text", "label": "Comment", "tooltip": "Set Comment (can be mapped from previous steps).", "index": 3 }, "outcome": { "type": "text", "label": "Outcome", "tooltip": "Set Outcome (can be mapped from previous steps).", "index": 4 }, "date": { "type": "text", "label": "Date", "tooltip": "Set Date (can be mapped from previous steps).", "index": 5 }, "owner": { "type": "number", "label": "Owner", "tooltip": "Set Owner (can be mapped from previous steps).", "index": 6 } } }, "AddContactEmail": { "operation": "AddContactEmail", "label": "Add Contact Email", "description": "Add an email to a contact.", "method": "POST", "pathTemplate": "/contacts/${contactId}/emails/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId", "email", "type"], "requiredFieldNames": ["contactId", "email", "type"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "email": { "type": "text", "label": "Email", "tooltip": "Set Email (can be mapped from previous steps).", "index": 2 }, "type": { "type": "number", "label": "Type", "tooltip": "Set Type (can be mapped from previous steps).", "index": 3 } } }, "AddContactNote": { "operation": "AddContactNote", "label": "Add Contact Note", "description": "Add a note to a contact.", "method": "POST", "pathTemplate": "/contacts/${contactId}/note/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId", "name", "comment"], "requiredFieldNames": ["contactId", "name", "comment"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "name": { "type": "text", "label": "Name", "tooltip": "Set Name (can be mapped from previous steps).", "index": 2 }, "comment": { "type": "text", "label": "Comment", "tooltip": "Set Comment (can be mapped from previous steps).", "index": 3 } } }, "AddContactOtherCompany": { "operation": "AddContactOtherCompany", "label": "Add Contact Other Company", "description": "Create an additional company relationship for a contact (by title).", "method": "POST", "pathTemplate": "/contacts/${contactId}/other_companies/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId", "title"], "requiredFieldNames": ["contactId", "title"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "title": { "type": "text", "label": "Title", "tooltip": "Set Title (can be mapped from previous steps).", "index": 2 } } }, "AddContactPhone": { "operation": "AddContactPhone", "label": "Add Contact Phone", "description": "Add a phone to a contact.", "method": "POST", "pathTemplate": "/contacts/${contactId}/phones/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId", "phone", "type"], "requiredFieldNames": ["contactId", "phone", "type"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "phone": { "type": "text", "label": "Phone", "tooltip": "Set Phone (can be mapped from previous steps).", "index": 2 }, "type": { "type": "number", "label": "Type", "tooltip": "Set Type (can be mapped from previous steps).", "index": 3 } } }, "AddContactTag": { "operation": "AddContactTag", "label": "Add Contact Tag", "description": "Add a tag to a contact (creates the tag if needed).", "method": "POST", "pathTemplate": "/contacts/${contactId}/tags/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId", "name"], "requiredFieldNames": ["contactId", "name"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "name": { "type": "text", "label": "Name", "tooltip": "Set Name (can be mapped from previous steps).", "index": 2 } } }, "AssignContactOwner": { "operation": "AssignContactOwner", "label": "Assign Contact Owner", "description": "Assign an owner/user to a contact.", "method": "PUT", "pathTemplate": "/contacts/${contactId}/owner/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId", "ownerId"], "requiredFieldNames": ["contactId", "ownerId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "ownerId": { "type": "number", "label": "Owner ID", "tooltip": "Set Owner ID (can be mapped from previous steps).", "index": 2 } } }, "BatchCreateContacts": { "operation": "BatchCreateContacts", "label": "Batch Create Contacts", "description": "Create multiple contacts in a single request.", "method": "POST", "pathTemplate": "/multiple-contacts/", "pathParamNames": [], "fixedQuery": {}, "fieldNames": ["contacts"], "requiredFieldNames": ["contacts"], "fieldDefaults": {}, "inspectorInputs": { "contacts": { "type": "expression", "label": "Contacts", "tooltip": "Set Contacts (can be mapped from previous steps).", "index": 1 } } }, "CompleteTask": { "operation": "CompleteTask", "label": "Complete Task", "description": "Mark a task as completed.", "method": "POST", "pathTemplate": "/tasks/${taskId}/complete/", "pathParamNames": ["taskId"], "fixedQuery": {}, "fieldNames": ["taskId"], "requiredFieldNames": ["taskId"], "fieldDefaults": {}, "inspectorInputs": { "taskId": { "type": "number", "label": "Task ID", "tooltip": "Set Task ID (can be mapped from previous steps).", "index": 1 } } }, "CreateCompany": { "operation": "CreateCompany", "label": "Create Company", "description": "Create a new company.", "method": "POST", "pathTemplate": "/companies/", "pathParamNames": [], "fixedQuery": {}, "fieldNames": ["name"], "requiredFieldNames": ["name"], "fieldDefaults": {}, "inspectorInputs": { "name": { "type": "text", "label": "Name", "tooltip": "Set Name (can be mapped from previous steps).", "index": 1 } } }, "CreateContact": { "operation": "CreateContact", "label": "Create Contact", "description": "Create a new contact.", "method": "POST", "pathTemplate": "/contacts/", "pathParamNames": [], "fixedQuery": {}, "fieldNames": ["first_name", "last_name", "email", "company"], "requiredFieldNames": [], "fieldDefaults": {}, "inspectorInputs": { "first_name": { "type": "text", "label": "First Name", "tooltip": "Set First Name (can be mapped from previous steps).", "index": 1 }, "last_name": { "type": "text", "label": "Last Name", "tooltip": "Set Last Name (can be mapped from previous steps).", "index": 2 }, "email": { "type": "text", "label": "Email", "tooltip": "Set Email (can be mapped from previous steps).", "index": 3 }, "company": { "type": "text", "label": "Company", "tooltip": "Set Company (can be mapped from previous steps).", "index": 4 } } }, "CreateTask": { "operation": "CreateTask", "label": "Create Task", "description": "Create a new task/activity.", "method": "POST", "pathTemplate": "/tasks/", "pathParamNames": [], "fixedQuery": {}, "fieldNames": ["owner", "assigned_to", "type", "name", "description", "remarks", "due_date", "status", "recurring_type", "recurring_end_date", "recurring_days_of_week", "recurring_interval", "priority"], "requiredFieldNames": ["name", "type"], "fieldDefaults": {}, "inspectorInputs": { "owner": { "type": "number", "label": "Owner", "tooltip": "Set Owner (can be mapped from previous steps).", "index": 1 }, "assigned_to": { "type": "number", "label": "Assigned To", "tooltip": "Set Assigned To (can be mapped from previous steps).", "index": 2 }, "type": { "type": "number", "label": "Type", "tooltip": "Set Type (can be mapped from previous steps).", "index": 3 }, "name": { "type": "text", "label": "Name", "tooltip": "Set Name (can be mapped from previous steps).", "index": 4 }, "description": { "type": "text", "label": "Description", "tooltip": "Set Description (can be mapped from previous steps).", "index": 5 }, "remarks": { "type": "text", "label": "Remarks", "tooltip": "Set Remarks (can be mapped from previous steps).", "index": 6 }, "due_date": { "type": "text", "label": "Due Date", "tooltip": "Set Due Date (can be mapped from previous steps).", "index": 7 }, "status": { "type": "number", "label": "Status", "tooltip": "Set Status (can be mapped from previous steps).", "index": 8 }, "recurring_type": { "type": "number", "label": "Recurring Type", "tooltip": "Set Recurring Type (can be mapped from previous steps).", "index": 9 }, "recurring_end_date": { "type": "text", "label": "Recurring End Date", "tooltip": "Set Recurring End Date (can be mapped from previous steps).", "index": 10 }, "recurring_days_of_week": { "type": "expression", "label": "Recurring Days Of Week", "tooltip": "Set Recurring Days Of Week (can be mapped from previous steps).", "index": 11 }, "recurring_interval": { "type": "number", "label": "Recurring Interval", "tooltip": "Set Recurring Interval (can be mapped from previous steps).", "index": 12 }, "priority": { "type": "number", "label": "Priority", "tooltip": "Set Priority (can be mapped from previous steps).", "index": 13 } } }, "DeleteCompany": { "operation": "DeleteCompany", "label": "Delete Company", "description": "Delete a company by id.", "method": "DELETE", "pathTemplate": "/companies/${companyId}/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId"], "requiredFieldNames": ["companyId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 } } }, "DeleteCompanyAddress": { "operation": "DeleteCompanyAddress", "label": "Delete Company Address", "description": "Delete a company address entry.", "method": "DELETE", "pathTemplate": "/companies/${companyId}/addresses/${addressId}/", "pathParamNames": ["companyId", "addressId"], "fixedQuery": {}, "fieldNames": ["companyId", "addressId"], "requiredFieldNames": ["companyId", "addressId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "addressId": { "type": "number", "label": "Address ID", "tooltip": "Set Address ID (can be mapped from previous steps).", "index": 2 } } }, "DeleteCompanyEmail": { "operation": "DeleteCompanyEmail", "label": "Delete Company Email", "description": "Delete a company email entry.", "method": "DELETE", "pathTemplate": "/companies/${companyId}/emails/${emailId}/", "pathParamNames": ["companyId", "emailId"], "fixedQuery": {}, "fieldNames": ["companyId", "emailId"], "requiredFieldNames": ["companyId", "emailId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "emailId": { "type": "number", "label": "Email ID", "tooltip": "Set Email ID (can be mapped from previous steps).", "index": 2 } } }, "DeleteCompanyPhone": { "operation": "DeleteCompanyPhone", "label": "Delete Company Phone", "description": "Delete a company phone entry.", "method": "DELETE", "pathTemplate": "/companies/${companyId}/phones/${phoneId}/", "pathParamNames": ["companyId", "phoneId"], "fixedQuery": {}, "fieldNames": ["companyId", "phoneId"], "requiredFieldNames": ["companyId", "phoneId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "phoneId": { "type": "number", "label": "Phone ID", "tooltip": "Set Phone ID (can be mapped from previous steps).", "index": 2 } } }, "DeleteCompanyWebsite": { "operation": "DeleteCompanyWebsite", "label": "Delete Company Website", "description": "Delete a company website entry.", "method": "DELETE", "pathTemplate": "/companies/${companyId}/websites/${websiteId}/", "pathParamNames": ["companyId", "websiteId"], "fixedQuery": {}, "fieldNames": ["companyId", "websiteId"], "requiredFieldNames": ["companyId", "websiteId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "websiteId": { "type": "number", "label": "Website ID", "tooltip": "Set Website ID (can be mapped from previous steps).", "index": 2 } } }, "DeleteContact": { "operation": "DeleteContact", "label": "Delete Contact", "description": "Delete a contact by id.", "method": "DELETE", "pathTemplate": "/contacts/${contactId}/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId"], "requiredFieldNames": ["contactId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 } } }, "DeleteContactAddress": { "operation": "DeleteContactAddress", "label": "Delete Contact Address", "description": "Delete a contact address entry.", "method": "DELETE", "pathTemplate": "/contacts/${contactId}/addresses/${addressId}/", "pathParamNames": ["contactId", "addressId"], "fixedQuery": {}, "fieldNames": ["contactId", "addressId"], "requiredFieldNames": ["contactId", "addressId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "addressId": { "type": "number", "label": "Address ID", "tooltip": "Set Address ID (can be mapped from previous steps).", "index": 2 } } }, "DeleteContactEmail": { "operation": "DeleteContactEmail", "label": "Delete Contact Email", "description": "Delete a contact email entry.", "method": "DELETE", "pathTemplate": "/contacts/${contactId}/emails/${emailId}/", "pathParamNames": ["contactId", "emailId"], "fixedQuery": {}, "fieldNames": ["contactId", "emailId"], "requiredFieldNames": ["contactId", "emailId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "emailId": { "type": "number", "label": "Email ID", "tooltip": "Set Email ID (can be mapped from previous steps).", "index": 2 } } }, "DeleteContactOtherCompany": { "operation": "DeleteContactOtherCompany", "label": "Delete Contact Other Company", "description": "Delete a contact other-company relationship.", "method": "DELETE", "pathTemplate": "/contacts/${contactId}/other_companies/${otherCompanyId}/", "pathParamNames": ["contactId", "otherCompanyId"], "fixedQuery": {}, "fieldNames": ["contactId", "otherCompanyId"], "requiredFieldNames": ["contactId", "otherCompanyId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "otherCompanyId": { "type": "number", "label": "Other Company ID", "tooltip": "Set Other Company ID (can be mapped from previous steps).", "index": 2 } } }, "DeleteContactPhone": { "operation": "DeleteContactPhone", "label": "Delete Contact Phone", "description": "Delete a contact phone entry.", "method": "DELETE", "pathTemplate": "/contacts/${contactId}/phones/${phoneId}/", "pathParamNames": ["contactId", "phoneId"], "fixedQuery": {}, "fieldNames": ["contactId", "phoneId"], "requiredFieldNames": ["contactId", "phoneId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "phoneId": { "type": "number", "label": "Phone ID", "tooltip": "Set Phone ID (can be mapped from previous steps).", "index": 2 } } }, "GetCompany": { "operation": "GetCompany", "label": "Get Company", "description": "Get a company by id.", "method": "GET", "pathTemplate": "/companies/${companyId}/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId", "fields"], "requiredFieldNames": ["companyId"], "fieldDefaults": { "fields": "id,name,sector,company_sector,business_name,taxpayer_identification_number,fax,number_of_employees,number_of_employees_desc,owner,owner_name,rank,rank_manual,picture_url,facebook_url,linkedin_url,twitter_url,private,last_viewed,last_interaction,facebook_id,twitter_id,linkedin_id,founded,online_since,full_contact_extra,approx_employees,description,remarks,summary,linkedin_picture_url,created,modified,youtube_url,instagram_url,owner_picture,industry" }, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "fields": { "type": "text", "label": "Fields", "tooltip": "Set Fields (can be mapped from previous steps).", "index": 2 } } }, "GetContact": { "operation": "GetContact", "label": "Get Contact", "description": "Get a contact by id.", "method": "GET", "pathTemplate": "/contacts/${contactId}/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId", "fields"], "requiredFieldNames": ["contactId"], "fieldDefaults": { "fields": "id,owner_id,first_name,last_name,status,title,company_id,company_name,company_picture,contact_type,contact_source,picture_url,description,remarks,summary" }, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "fields": { "type": "text", "label": "Fields", "tooltip": "Set Fields (can be mapped from previous steps).", "index": 2 } } }, "GetCurrentUser": { "operation": "GetCurrentUser", "label": "Get Current User", "description": "Get the currently authenticated Clientify user.", "method": "GET", "pathTemplate": "/me/", "pathParamNames": [], "fixedQuery": { "fields": "id,email" }, "fieldNames": [], "requiredFieldNames": [], "fieldDefaults": {}, "inspectorInputs": {} }, "GetTask": { "operation": "GetTask", "label": "Get Task", "description": "Get a task by id.", "method": "GET", "pathTemplate": "/tasks/${taskId}/", "pathParamNames": ["taskId"], "fixedQuery": {}, "fieldNames": ["taskId", "fields"], "requiredFieldNames": ["taskId"], "fieldDefaults": { "fields": "url,id,owner,owner_name,owner_id,assigned_to,assigned_to_name,assigned_to_id,assigned_to_picture,name,description,remarks,due_date,start_datetime,end_datetime,duration,type,status,status_desc,deals,task_type,type_desc,task_stage,priority,related_companies,related_companies_names,related_companies_data,related_contacts,related_contacts_names,related_contacts_data,related_deals_data,tags,notes,phone_number,colors,additional_option,location,guest_users,created,modified,completed_date,activity_type,parent_task,parent_task_id,recurring_days_of_week,recurring_days_of_month,recurring_days_of_year,recurring_type,recurring_end_date,recurring_interval,meeting_goal,url_meeting,number_of_repetitions,outcome,is_holiday" }, "inspectorInputs": { "taskId": { "type": "number", "label": "Task ID", "tooltip": "Set Task ID (can be mapped from previous steps).", "index": 1 }, "fields": { "type": "text", "label": "Fields", "tooltip": "Set Fields (can be mapped from previous steps).", "index": 2 } } }, "ListAllCompanyTags": { "operation": "ListAllCompanyTags", "label": "List All Company Tags", "description": "List all available company tags (picklist helper; can be slow).", "method": "GET", "pathTemplate": "/companies/tags/", "pathParamNames": [], "fixedQuery": {}, "fieldNames": [], "requiredFieldNames": [], "fieldDefaults": {}, "inspectorInputs": {} }, "ListAllContactTags": { "operation": "ListAllContactTags", "label": "List All Contact Tags", "description": "List all available contact tags (picklist helper; can be slow).", "method": "GET", "pathTemplate": "/contacts/tags/", "pathParamNames": [], "fixedQuery": {}, "fieldNames": [], "requiredFieldNames": [], "fieldDefaults": {}, "inspectorInputs": {} }, "ListCompanies": { "operation": "ListCompanies", "label": "List Companies", "description": "List companies from Clientify.", "method": "GET", "pathTemplate": "/companies/", "pathParamNames": [], "fixedQuery": {}, "fieldNames": ["page", "page_size", "search", "ordering", "fields"], "requiredFieldNames": [], "fieldDefaults": { "fields": "id,name,sector,company_sector,business_name,taxpayer_identification_number,fax,number_of_employees,number_of_employees_desc,owner,owner_name,rank,rank_manual,picture_url,facebook_url,linkedin_url,twitter_url,private,last_viewed,last_interaction,facebook_id,twitter_id,linkedin_id,founded,online_since,full_contact_extra,approx_employees,description,remarks,summary,linkedin_picture_url,created,modified,youtube_url,instagram_url,owner_picture,industry" }, "inspectorInputs": { "page": { "type": "number", "label": "Page", "tooltip": "Set Page (can be mapped from previous steps).", "index": 1 }, "page_size": { "type": "number", "label": "Page Size", "tooltip": "Set Page Size (can be mapped from previous steps).", "index": 2 }, "search": { "type": "text", "label": "Search", "tooltip": "Set Search (can be mapped from previous steps).", "index": 3 }, "ordering": { "type": "text", "label": "Ordering", "tooltip": "Set Ordering (can be mapped from previous steps).", "index": 4 }, "fields": { "type": "text", "label": "Fields", "tooltip": "Set Fields (can be mapped from previous steps).", "index": 5 } } }, "ListCompanyAddresses": { "operation": "ListCompanyAddresses", "label": "List Company Addresses", "description": "List addresses for a company.", "method": "GET", "pathTemplate": "/companies/${companyId}/addresses/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId"], "requiredFieldNames": ["companyId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 } } }, "ListCompanyCustomfields": { "operation": "ListCompanyCustomfields", "label": "List Company Custom Fields", "description": "List custom field values for a company.", "method": "GET", "pathTemplate": "/companies/${companyId}/customfields/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId"], "requiredFieldNames": ["companyId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 } } }, "ListCompanyEmails": { "operation": "ListCompanyEmails", "label": "List Company Emails", "description": "List emails for a company.", "method": "GET", "pathTemplate": "/companies/${companyId}/emails/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId"], "requiredFieldNames": ["companyId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 } } }, "ListCompanyEmployees": { "operation": "ListCompanyEmployees", "label": "List Company Employees", "description": "List employees (contacts) for a company.", "method": "GET", "pathTemplate": "/companies/${companyId}/employees/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId"], "requiredFieldNames": ["companyId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 } } }, "ListCompanyPhones": { "operation": "ListCompanyPhones", "label": "List Company Phones", "description": "List phones for a company.", "method": "GET", "pathTemplate": "/companies/${companyId}/phones/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId"], "requiredFieldNames": ["companyId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 } } }, "ListCompanySectors": { "operation": "ListCompanySectors", "label": "List Company Sectors", "description": "List company sectors (picklist helper).", "method": "GET", "pathTemplate": "/companies/sectors/", "pathParamNames": [], "fixedQuery": {}, "fieldNames": [], "requiredFieldNames": [], "fieldDefaults": {}, "inspectorInputs": {} }, "ListCompanyTags": { "operation": "ListCompanyTags", "label": "List Company Tags", "description": "List tags for a company.", "method": "GET", "pathTemplate": "/companies/${companyId}/tags/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId"], "requiredFieldNames": ["companyId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 } } }, "ListCompanyTasks": { "operation": "ListCompanyTasks", "label": "List Company Tasks", "description": "List tasks for a company.", "method": "GET", "pathTemplate": "/companies/${companyId}/tasks/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId"], "requiredFieldNames": ["companyId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 } } }, "ListCompanyWallentries": { "operation": "ListCompanyWallentries", "label": "List Company Wall Entries", "description": "Get the company wall entries (timeline context).", "method": "GET", "pathTemplate": "/companies/${companyId}/wallentries/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId"], "requiredFieldNames": ["companyId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 } } }, "ListCompanyWebsites": { "operation": "ListCompanyWebsites", "label": "List Company Websites", "description": "List websites for a company.", "method": "GET", "pathTemplate": "/companies/${companyId}/websites/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId"], "requiredFieldNames": ["companyId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 } } }, "ListContactAddresses": { "operation": "ListContactAddresses", "label": "List Contact Addresses", "description": "List addresses for a contact.", "method": "GET", "pathTemplate": "/contacts/${contactId}/addresses/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId"], "requiredFieldNames": ["contactId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 } } }, "ListContactCustomfields": { "operation": "ListContactCustomfields", "label": "List Contact Custom Fields", "description": "List custom field values for a contact.", "method": "GET", "pathTemplate": "/contacts/${contactId}/customfields/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId"], "requiredFieldNames": ["contactId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 } } }, "ListContactEmails": { "operation": "ListContactEmails", "label": "List Contact Emails", "description": "List emails for a contact.", "method": "GET", "pathTemplate": "/contacts/${contactId}/emails/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId"], "requiredFieldNames": ["contactId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 } } }, "ListContactOtherCompanies": { "operation": "ListContactOtherCompanies", "label": "List Contact Other Companies", "description": "List additional company relationships for a contact.", "method": "GET", "pathTemplate": "/contacts/${contactId}/other_companies/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId"], "requiredFieldNames": ["contactId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 } } }, "ListContactPhones": { "operation": "ListContactPhones", "label": "List Contact Phones", "description": "List phones for a contact.", "method": "GET", "pathTemplate": "/contacts/${contactId}/phones/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId"], "requiredFieldNames": ["contactId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 } } }, "ListContactTags": { "operation": "ListContactTags", "label": "List Contact Tags", "description": "List tags for a contact.", "method": "GET", "pathTemplate": "/contacts/${contactId}/tags/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId"], "requiredFieldNames": ["contactId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 } } }, "ListContactTasks": { "operation": "ListContactTasks", "label": "List Contact Tasks", "description": "List tasks for a contact.", "method": "GET", "pathTemplate": "/contacts/${contactId}/tasks/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId"], "requiredFieldNames": ["contactId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 } } }, "ListContactWallentries": { "operation": "ListContactWallentries", "label": "List Contact Wall Entries", "description": "Get the contact wall entries (timeline context).", "method": "GET", "pathTemplate": "/contacts/${contactId}/wallentries", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId"], "requiredFieldNames": ["contactId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 } } }, "ListContacts": { "operation": "ListContacts", "label": "List Contacts", "description": "List contacts from Clientify.", "method": "GET", "pathTemplate": "/contacts/", "pathParamNames": [], "fixedQuery": {}, "fieldNames": ["page", "page_size", "search", "ordering", "fields"], "requiredFieldNames": [], "fieldDefaults": { "fields": "id,owner_id,first_name,last_name,status,title,company_id,contact_type,contact_source,picture_url,description,remarks,summary,created" }, "inspectorInputs": { "page": { "type": "number", "label": "Page", "tooltip": "Set Page (can be mapped from previous steps).", "index": 1 }, "page_size": { "type": "number", "label": "Page Size", "tooltip": "Set Page Size (can be mapped from previous steps).", "index": 2 }, "search": { "type": "text", "label": "Search", "tooltip": "Set Search (can be mapped from previous steps).", "index": 3 }, "ordering": { "type": "text", "label": "Ordering", "tooltip": "Set Ordering (can be mapped from previous steps).", "index": 4 }, "fields": { "type": "text", "label": "Fields", "tooltip": "Set Fields (can be mapped from previous steps).", "index": 5 } } }, "ListCustomFieldValues": { "operation": "ListCustomFieldValues", "label": "List Custom Field Values", "description": "List possible values for custom fields (use object_type to filter).", "method": "GET", "pathTemplate": "/custom-fields-values/", "pathParamNames": [], "fixedQuery": {}, "fieldNames": ["object_type"], "requiredFieldNames": [], "fieldDefaults": {}, "inspectorInputs": { "object_type": { "type": "text", "label": "Object Type", "tooltip": "Set Object Type (can be mapped from previous steps).", "index": 1 } } }, "ListCustomFields": { "operation": "ListCustomFields", "label": "List Custom Fields", "description": "List custom fields (use object_type to filter).", "method": "GET", "pathTemplate": "/custom-fields/", "pathParamNames": [], "fixedQuery": {}, "fieldNames": ["object_type"], "requiredFieldNames": [], "fieldDefaults": {}, "inspectorInputs": { "object_type": { "type": "text", "label": "Object Type", "tooltip": "Set Object Type (can be mapped from previous steps).", "index": 1 } } }, "ListTaskStages": { "operation": "ListTaskStages", "label": "List Task Stages", "description": "List task stages (picklist helper).", "method": "GET", "pathTemplate": "/tasks/stages/", "pathParamNames": [], "fixedQuery": {}, "fieldNames": ["page", "page_size"], "requiredFieldNames": [], "fieldDefaults": {}, "inspectorInputs": { "page": { "type": "number", "label": "Page", "tooltip": "Set Page (can be mapped from previous steps).", "index": 1 }, "page_size": { "type": "number", "label": "Page Size", "tooltip": "Set Page Size (can be mapped from previous steps).", "index": 2 } } }, "ListTaskTypes": { "operation": "ListTaskTypes", "label": "List Task Types", "description": "List task/activity types (picklist helper).", "method": "GET", "pathTemplate": "/tasks/types/", "pathParamNames": [], "fixedQuery": {}, "fieldNames": ["page", "page_size"], "requiredFieldNames": [], "fieldDefaults": {}, "inspectorInputs": { "page": { "type": "number", "label": "Page", "tooltip": "Set Page (can be mapped from previous steps).", "index": 1 }, "page_size": { "type": "number", "label": "Page Size", "tooltip": "Set Page Size (can be mapped from previous steps).", "index": 2 } } }, "ListTasks": { "operation": "ListTasks", "label": "List Tasks", "description": "List tasks from Clientify.", "method": "GET", "pathTemplate": "/tasks/", "pathParamNames": [], "fixedQuery": {}, "fieldNames": ["page", "page_size", "ordering", "fields"], "requiredFieldNames": [], "fieldDefaults": { "fields": "url,id,owner,owner_name,owner_id,assigned_to,assigned_to_name,assigned_to_id,name,description,remarks,due_date,start_datetime,end_datetime,duration,type,status,status_desc,task_type,type_desc,task_stage,related_companies,additional_option,location,guest_users,created,modified,related_contacts,priority,recurring_type,recurring_end_date,recurring_interval,tags,activity_type,url_meeting,assigned_to_picture,parent_task_id,colors,recurring_days_of_week,recurring_days_of_month,recurring_days_of_year,number_of_repetitions,outcome,meeting_goal,is_holiday" }, "inspectorInputs": { "page": { "type": "number", "label": "Page", "tooltip": "Set Page (can be mapped from previous steps).", "index": 1 }, "page_size": { "type": "number", "label": "Page Size", "tooltip": "Set Page Size (can be mapped from previous steps).", "index": 2 }, "ordering": { "type": "text", "label": "Ordering", "tooltip": "Set Ordering (can be mapped from previous steps).", "index": 3 }, "fields": { "type": "text", "label": "Fields", "tooltip": "Set Fields (can be mapped from previous steps).", "index": 4 } } }, "ListUsers": { "operation": "ListUsers", "label": "List Users", "description": "List users from Clientify (for assignment/routing).", "method": "GET", "pathTemplate": "/users/", "pathParamNames": [], "fixedQuery": {}, "fieldNames": ["page", "page_size", "fields"], "requiredFieldNames": [], "fieldDefaults": { "fields": "id,username,full_name" }, "inspectorInputs": { "page": { "type": "number", "label": "Page", "tooltip": "Set Page (can be mapped from previous steps).", "index": 1 }, "page_size": { "type": "number", "label": "Page Size", "tooltip": "Set Page Size (can be mapped from previous steps).", "index": 2 }, "fields": { "type": "text", "label": "Fields", "tooltip": "Set Fields (can be mapped from previous steps).", "index": 3 } } }, "RemoveCompanyEmployee": { "operation": "RemoveCompanyEmployee", "label": "Remove Company Employee", "description": "Unlink a contact from a company employees list.", "method": "DELETE", "pathTemplate": "/companies/${companyId}/employees/${contactId}/", "pathParamNames": ["companyId", "contactId"], "fixedQuery": {}, "fieldNames": ["companyId", "contactId"], "requiredFieldNames": ["companyId", "contactId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 2 } } }, "RemoveCompanyTag": { "operation": "RemoveCompanyTag", "label": "Remove Company Tag", "description": "Remove a tag from a company.", "method": "DELETE", "pathTemplate": "/companies/${companyId}/tags/${tagId}/", "pathParamNames": ["companyId", "tagId"], "fixedQuery": {}, "fieldNames": ["companyId", "tagId"], "requiredFieldNames": ["companyId", "tagId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "tagId": { "type": "number", "label": "Tag ID", "tooltip": "Set Tag ID (can be mapped from previous steps).", "index": 2 } } }, "RemoveContactTag": { "operation": "RemoveContactTag", "label": "Remove Contact Tag", "description": "Remove a tag from a contact.", "method": "DELETE", "pathTemplate": "/contacts/${contactId}/tags/${tagId}/", "pathParamNames": ["contactId", "tagId"], "fixedQuery": {}, "fieldNames": ["contactId", "tagId"], "requiredFieldNames": ["contactId", "tagId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "tagId": { "type": "number", "label": "Tag ID", "tooltip": "Set Tag ID (can be mapped from previous steps).", "index": 2 } } }, "SearchCompanies": { "operation": "SearchCompanies", "label": "Search Companies", "description": "Search companies (wrapper over list with query params).", "method": "GET", "pathTemplate": "/companies/", "pathParamNames": [], "fixedQuery": {}, "fieldNames": ["query", "page", "page_size", "fields"], "requiredFieldNames": ["query"], "fieldDefaults": { "fields": "id,name,sector,company_sector,business_name,taxpayer_identification_number,fax,number_of_employees,number_of_employees_desc,owner,owner_name,rank,rank_manual,picture_url,facebook_url,linkedin_url,twitter_url,private,last_viewed,last_interaction,facebook_id,twitter_id,linkedin_id,founded,online_since,full_contact_extra,approx_employees,description,remarks,summary,linkedin_picture_url,created,modified,youtube_url,instagram_url,owner_picture,industry" }, "inspectorInputs": { "query": { "type": "text", "label": "Query", "tooltip": "Set Query (can be mapped from previous steps).", "index": 1 }, "page": { "type": "number", "label": "Page", "tooltip": "Set Page (can be mapped from previous steps).", "index": 2 }, "page_size": { "type": "number", "label": "Page Size", "tooltip": "Set Page Size (can be mapped from previous steps).", "index": 3 }, "fields": { "type": "text", "label": "Fields", "tooltip": "Set Fields (can be mapped from previous steps).", "index": 4 } } }, "UpdateCompany": { "operation": "UpdateCompany", "label": "Update Company", "description": "Update an existing company.", "method": "PUT", "pathTemplate": "/companies/${companyId}/", "pathParamNames": ["companyId"], "fixedQuery": {}, "fieldNames": ["companyId"], "requiredFieldNames": ["companyId"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 } } }, "UpdateCompanyAddress": { "operation": "UpdateCompanyAddress", "label": "Update Company Address", "description": "Update a company address entry.", "method": "PUT", "pathTemplate": "/companies/${companyId}/addresses/${addressId}/", "pathParamNames": ["companyId", "addressId"], "fixedQuery": {}, "fieldNames": ["companyId", "addressId", "type", "street", "city", "state", "country", "postal_code"], "requiredFieldNames": ["companyId", "addressId", "type", "street", "city", "state", "country", "postal_code"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "addressId": { "type": "number", "label": "Address ID", "tooltip": "Set Address ID (can be mapped from previous steps).", "index": 2 }, "type": { "type": "number", "label": "Type", "tooltip": "Set Type (can be mapped from previous steps).", "index": 3 }, "street": { "type": "text", "label": "Street", "tooltip": "Set Street (can be mapped from previous steps).", "index": 4 }, "city": { "type": "text", "label": "City", "tooltip": "Set City (can be mapped from previous steps).", "index": 5 }, "state": { "type": "text", "label": "State", "tooltip": "Set State (can be mapped from previous steps).", "index": 6 }, "country": { "type": "text", "label": "Country", "tooltip": "Set Country (can be mapped from previous steps).", "index": 7 }, "postal_code": { "type": "text", "label": "Postal Code", "tooltip": "Set Postal Code (can be mapped from previous steps).", "index": 8 } } }, "UpdateCompanyEmail": { "operation": "UpdateCompanyEmail", "label": "Update Company Email", "description": "Update a company email entry.", "method": "PUT", "pathTemplate": "/companies/${companyId}/emails/${emailId}/", "pathParamNames": ["companyId", "emailId"], "fixedQuery": {}, "fieldNames": ["companyId", "emailId", "email", "type"], "requiredFieldNames": ["companyId", "emailId", "email", "type"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "emailId": { "type": "number", "label": "Email ID", "tooltip": "Set Email ID (can be mapped from previous steps).", "index": 2 }, "email": { "type": "text", "label": "Email", "tooltip": "Set Email (can be mapped from previous steps).", "index": 3 }, "type": { "type": "number", "label": "Type", "tooltip": "Set Type (can be mapped from previous steps).", "index": 4 } } }, "UpdateCompanyPhone": { "operation": "UpdateCompanyPhone", "label": "Update Company Phone", "description": "Update a company phone entry.", "method": "PUT", "pathTemplate": "/companies/${companyId}/phones/${phoneId}/", "pathParamNames": ["companyId", "phoneId"], "fixedQuery": {}, "fieldNames": ["companyId", "phoneId", "phone", "type"], "requiredFieldNames": ["companyId", "phoneId", "phone", "type"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "phoneId": { "type": "number", "label": "Phone ID", "tooltip": "Set Phone ID (can be mapped from previous steps).", "index": 2 }, "phone": { "type": "text", "label": "Phone", "tooltip": "Set Phone (can be mapped from previous steps).", "index": 3 }, "type": { "type": "number", "label": "Type", "tooltip": "Set Type (can be mapped from previous steps).", "index": 4 } } }, "UpdateCompanyWebsite": { "operation": "UpdateCompanyWebsite", "label": "Update Company Website", "description": "Update a company website entry.", "method": "PUT", "pathTemplate": "/companies/${companyId}/websites/${websiteId}/", "pathParamNames": ["companyId", "websiteId"], "fixedQuery": {}, "fieldNames": ["companyId", "websiteId", "website"], "requiredFieldNames": ["companyId", "websiteId", "website"], "fieldDefaults": {}, "inspectorInputs": { "companyId": { "type": "number", "label": "Company ID", "tooltip": "Set Company ID (can be mapped from previous steps).", "index": 1 }, "websiteId": { "type": "number", "label": "Website ID", "tooltip": "Set Website ID (can be mapped from previous steps).", "index": 2 }, "website": { "type": "text", "label": "Website", "tooltip": "Set Website (can be mapped from previous steps).", "index": 3 } } }, "UpdateContact": { "operation": "UpdateContact", "label": "Update Contact", "description": "Update an existing contact.", "method": "PUT", "pathTemplate": "/contacts/${contactId}/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId"], "requiredFieldNames": ["contactId"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 } } }, "UpdateContactAddress": { "operation": "UpdateContactAddress", "label": "Update Contact Address", "description": "Update a contact address entry.", "method": "PUT", "pathTemplate": "/contacts/${contactId}/addresses/${addressId}/", "pathParamNames": ["contactId", "addressId"], "fixedQuery": {}, "fieldNames": ["contactId", "addressId", "type", "street", "city", "state", "country", "postal_code"], "requiredFieldNames": ["contactId", "addressId", "type", "street", "city", "state", "country", "postal_code"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "addressId": { "type": "number", "label": "Address ID", "tooltip": "Set Address ID (can be mapped from previous steps).", "index": 2 }, "type": { "type": "number", "label": "Type", "tooltip": "Set Type (can be mapped from previous steps).", "index": 3 }, "street": { "type": "text", "label": "Street", "tooltip": "Set Street (can be mapped from previous steps).", "index": 4 }, "city": { "type": "text", "label": "City", "tooltip": "Set City (can be mapped from previous steps).", "index": 5 }, "state": { "type": "text", "label": "State", "tooltip": "Set State (can be mapped from previous steps).", "index": 6 }, "country": { "type": "text", "label": "Country", "tooltip": "Set Country (can be mapped from previous steps).", "index": 7 }, "postal_code": { "type": "text", "label": "Postal Code", "tooltip": "Set Postal Code (can be mapped from previous steps).", "index": 8 } } }, "UpdateContactEmail": { "operation": "UpdateContactEmail", "label": "Update Contact Email", "description": "Update a contact email entry.", "method": "PUT", "pathTemplate": "/contacts/${contactId}/emails/${emailId}/", "pathParamNames": ["contactId", "emailId"], "fixedQuery": {}, "fieldNames": ["contactId", "emailId", "email", "type"], "requiredFieldNames": ["contactId", "emailId", "email", "type"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "emailId": { "type": "number", "label": "Email ID", "tooltip": "Set Email ID (can be mapped from previous steps).", "index": 2 }, "email": { "type": "text", "label": "Email", "tooltip": "Set Email (can be mapped from previous steps).", "index": 3 }, "type": { "type": "number", "label": "Type", "tooltip": "Set Type (can be mapped from previous steps).", "index": 4 } } }, "UpdateContactMarketingStatus": { "operation": "UpdateContactMarketingStatus", "label": "Update Contact Marketing Status", "description": "Update a contact marketing status.", "method": "PUT", "pathTemplate": "/contacts/${contactId}/marketing_status/", "pathParamNames": ["contactId"], "fixedQuery": {}, "fieldNames": ["contactId", "marketing_status"], "requiredFieldNames": ["contactId", "marketing_status"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "marketing_status": { "type": "toggle", "label": "Marketing Status", "tooltip": "Set Marketing Status (can be mapped from previous steps).", "index": 2 } } }, "UpdateContactOtherCompany": { "operation": "UpdateContactOtherCompany", "label": "Update Contact Other Company", "description": "Update a contact other-company relationship.", "method": "PUT", "pathTemplate": "/contacts/${contactId}/other_companies/${otherCompanyId}/", "pathParamNames": ["contactId", "otherCompanyId"], "fixedQuery": {}, "fieldNames": ["contactId", "otherCompanyId", "title"], "requiredFieldNames": ["contactId", "otherCompanyId", "title"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "otherCompanyId": { "type": "number", "label": "Other Company ID", "tooltip": "Set Other Company ID (can be mapped from previous steps).", "index": 2 }, "title": { "type": "text", "label": "Title", "tooltip": "Set Title (can be mapped from previous steps).", "index": 3 } } }, "UpdateContactPhone": { "operation": "UpdateContactPhone", "label": "Update Contact Phone", "description": "Update a contact phone entry.", "method": "PUT", "pathTemplate": "/contacts/${contactId}/phones/${phoneId}/", "pathParamNames": ["contactId", "phoneId"], "fixedQuery": {}, "fieldNames": ["contactId", "phoneId", "phone", "type"], "requiredFieldNames": ["contactId", "phoneId", "phone", "type"], "fieldDefaults": {}, "inspectorInputs": { "contactId": { "type": "number", "label": "Contact ID", "tooltip": "Set Contact ID (can be mapped from previous steps).", "index": 1 }, "phoneId": { "type": "number", "label": "Phone ID", "tooltip": "Set Phone ID (can be mapped from previous steps).", "index": 2 }, "phone": { "type": "text", "label": "Phone", "tooltip": "Set Phone (can be mapped from previous steps).", "index": 3 }, "type": { "type": "number", "label": "Type", "tooltip": "Set Type (can be mapped from previous steps).", "index": 4 } } }, "UpdateTask": { "operation": "UpdateTask", "label": "Update Task", "description": "Update an existing task.", "method": "PUT", "pathTemplate": "/tasks/${taskId}/", "pathParamNames": ["taskId"], "fixedQuery": {}, "fieldNames": ["taskId"], "requiredFieldNames": ["taskId"], "fieldDefaults": {}, "inspectorInputs": { "taskId": { "type": "number", "label": "Task ID", "tooltip": "Set Task ID (can be mapped from previous steps).", "index": 1 } } } };
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "n8n-nodes-clientify",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"description": "N8N node for Clientify CRM integration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"n8n-node",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"main": "index.js",
|
|
25
25
|
"scripts": {
|
|
26
|
-
"build": "rm -rf dist && tsc && cp package.json dist/ && cp README.md dist/ && cp TRIGGERS_REFERENCE.md dist/ && mkdir -p dist/nodes/ClientifyApi dist/nodes/ClientifyTrigger && cp nodes/ClientifyMcp/*.png dist/nodes/ClientifyApi/ 2>/dev/null || true && cp nodes/ClientifyMcp/*.svg dist/nodes/ClientifyApi/ 2>/dev/null || true && cp nodes/ClientifyMcp/*.png dist/nodes/ClientifyTrigger/ 2>/dev/null || true && cp nodes/ClientifyMcp/*.svg dist/nodes/ClientifyTrigger/ 2>/dev/null || true && mkdir -p dist/appmixer/clientify && cp -R appmixer/clientify/crm dist/appmixer/clientify/",
|
|
26
|
+
"build": "node scripts/generateOperationCatalog.cjs && rm -rf dist && tsc && cp package.json dist/ && cp README.md dist/ && cp TRIGGERS_REFERENCE.md dist/ && mkdir -p dist/nodes/ClientifyApi dist/nodes/ClientifyTrigger && cp nodes/ClientifyMcp/*.png dist/nodes/ClientifyApi/ 2>/dev/null || true && cp nodes/ClientifyMcp/*.svg dist/nodes/ClientifyApi/ 2>/dev/null || true && cp nodes/ClientifyMcp/*.png dist/nodes/ClientifyTrigger/ 2>/dev/null || true && cp nodes/ClientifyMcp/*.svg dist/nodes/ClientifyTrigger/ 2>/dev/null || true && mkdir -p dist/appmixer/clientify && cp -R ../../../appmixer/clientify/crm dist/appmixer/clientify/",
|
|
27
27
|
"dev": "tsc --watch",
|
|
28
28
|
"lint": "eslint nodes credentials --ext .ts",
|
|
29
29
|
"lintfix": "eslint nodes credentials --ext .ts --fix",
|
|
@@ -42,9 +42,6 @@
|
|
|
42
42
|
"dist/nodes/ClientifyTrigger/ClientifyTrigger.node.js"
|
|
43
43
|
]
|
|
44
44
|
},
|
|
45
|
-
"dependencies": {
|
|
46
|
-
"@clientify/api-client": "^0.1.1"
|
|
47
|
-
},
|
|
48
45
|
"overrides": {
|
|
49
46
|
"form-data": "^4.0.4"
|
|
50
47
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "n8n-nodes-clientify",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"description": "N8N node for Clientify CRM integration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"n8n-node",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"main": "index.js",
|
|
25
25
|
"scripts": {
|
|
26
|
-
"build": "rm -rf dist && tsc && cp package.json dist/ && cp README.md dist/ && cp TRIGGERS_REFERENCE.md dist/ && mkdir -p dist/nodes/ClientifyApi dist/nodes/ClientifyTrigger && cp nodes/ClientifyMcp/*.png dist/nodes/ClientifyApi/ 2>/dev/null || true && cp nodes/ClientifyMcp/*.svg dist/nodes/ClientifyApi/ 2>/dev/null || true && cp nodes/ClientifyMcp/*.png dist/nodes/ClientifyTrigger/ 2>/dev/null || true && cp nodes/ClientifyMcp/*.svg dist/nodes/ClientifyTrigger/ 2>/dev/null || true && mkdir -p dist/appmixer/clientify && cp -R appmixer/clientify/crm dist/appmixer/clientify/",
|
|
26
|
+
"build": "node scripts/generateOperationCatalog.cjs && rm -rf dist && tsc && cp package.json dist/ && cp README.md dist/ && cp TRIGGERS_REFERENCE.md dist/ && mkdir -p dist/nodes/ClientifyApi dist/nodes/ClientifyTrigger && cp nodes/ClientifyMcp/*.png dist/nodes/ClientifyApi/ 2>/dev/null || true && cp nodes/ClientifyMcp/*.svg dist/nodes/ClientifyApi/ 2>/dev/null || true && cp nodes/ClientifyMcp/*.png dist/nodes/ClientifyTrigger/ 2>/dev/null || true && cp nodes/ClientifyMcp/*.svg dist/nodes/ClientifyTrigger/ 2>/dev/null || true && mkdir -p dist/appmixer/clientify && cp -R ../../../appmixer/clientify/crm dist/appmixer/clientify/",
|
|
27
27
|
"dev": "tsc --watch",
|
|
28
28
|
"lint": "eslint nodes credentials --ext .ts",
|
|
29
29
|
"lintfix": "eslint nodes credentials --ext .ts --fix",
|
|
@@ -42,9 +42,6 @@
|
|
|
42
42
|
"dist/nodes/ClientifyTrigger/ClientifyTrigger.node.js"
|
|
43
43
|
]
|
|
44
44
|
},
|
|
45
|
-
"dependencies": {
|
|
46
|
-
"@clientify/api-client": "^0.1.1"
|
|
47
|
-
},
|
|
48
45
|
"overrides": {
|
|
49
46
|
"form-data": "^4.0.4"
|
|
50
47
|
},
|