Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion components/pipedrive/actions/add-activity/add-activity.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export default {
key: "pipedrive-add-activity",
name: "Add Activity",
description: "Adds a new activity. Includes `more_activities_scheduled_in_context` property in response's `additional_data` which indicates whether there are more undone activities scheduled with the same deal, person or organization (depending on the supplied data). See the Pipedrive API docs for Activities [here](https://developers.pipedrive.com/docs/api/v1/#!/Activities). For info on [adding an activity in Pipedrive](https://developers.pipedrive.com/docs/api/v1/Activities#addActivity)",
version: "0.1.16",
version: "0.1.17",
annotations: {
destructiveHint: false,
openWorldHint: true,
Expand Down
2 changes: 1 addition & 1 deletion components/pipedrive/actions/add-deal/add-deal.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export default {
key: "pipedrive-add-deal",
name: "Add Deal",
description: "Adds a new deal. See the Pipedrive API docs for Deals [here](https://developers.pipedrive.com/docs/api/v1/Deals#addDeal)",
version: "0.1.17",
version: "0.1.18",
annotations: {
destructiveHint: false,
openWorldHint: true,
Expand Down
2 changes: 1 addition & 1 deletion components/pipedrive/actions/add-lead/add-lead.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export default {
key: "pipedrive-add-lead",
name: "Add Lead",
description: "Create a new lead in Pipedrive. [See the documentation](https://developers.pipedrive.com/docs/api/v1/Leads#addLead)",
version: "0.0.10",
version: "0.0.11",
annotations: {
destructiveHint: false,
openWorldHint: true,
Expand Down
2 changes: 1 addition & 1 deletion components/pipedrive/actions/add-note/add-note.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export default {
key: "pipedrive-add-note",
name: "Add Note",
description: "Adds a new note. For info on [adding an note in Pipedrive](https://developers.pipedrive.com/docs/api/v1/Notes#addNote)",
version: "0.0.14",
version: "0.0.15",
annotations: {
destructiveHint: false,
openWorldHint: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export default {
key: "pipedrive-add-organization",
name: "Add Organization",
description: "Adds a new organization. See the Pipedrive API docs for Organizations [here](https://developers.pipedrive.com/docs/api/v1/Organizations#addOrganization)",
version: "0.1.16",
version: "0.1.17",
annotations: {
destructiveHint: false,
openWorldHint: true,
Expand Down
2 changes: 1 addition & 1 deletion components/pipedrive/actions/add-person/add-person.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export default {
key: "pipedrive-add-person",
name: "Add Person",
description: "Adds a new person. See the Pipedrive API docs for People [here](https://developers.pipedrive.com/docs/api/v1/Persons#addPerson)",
version: "0.1.16",
version: "0.1.17",
annotations: {
destructiveHint: false,
openWorldHint: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "pipedrive-get-lead-by-id",
name: "Get Lead by ID",
description: "Get a lead by its ID. [See the documentation](https://developers.pipedrive.com/docs/api/v1/Leads#getLead)",
version: "0.0.4",
version: "0.0.5",
annotations: {
destructiveHint: false,
openWorldHint: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export default {
key: "pipedrive-get-person-details",
name: "Get person details",
description: "Get details of a person by their ID. [See the documentation](https://developers.pipedrive.com/docs/api/v1/Persons#getPerson)",
version: "0.0.5",
version: "0.0.6",
annotations: {
destructiveHint: false,
openWorldHint: true,
Expand Down
2 changes: 1 addition & 1 deletion components/pipedrive/actions/merge-deals/merge-deals.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "pipedrive-merge-deals",
name: "Merge Deals",
description: "Merge two deals in Pipedrive. [See the documentation](https://developers.pipedrive.com/docs/api/v1/Deals#mergeDeals)",
version: "0.0.4",
version: "0.0.5",
annotations: {
destructiveHint: false,
openWorldHint: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "pipedrive-merge-persons",
name: "Merge Persons",
description: "Merge two persons in Pipedrive. [See the documentation](https://developers.pipedrive.com/docs/api/v1/Persons#mergePersons)",
version: "0.0.4",
version: "0.0.5",
annotations: {
destructiveHint: false,
openWorldHint: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export default {
key: "pipedrive-remove-duplicate-notes",
name: "Remove Duplicate Notes",
description: "Remove duplicate notes from an object in Pipedrive. See the documentation for [getting notes](https://developers.pipedrive.com/docs/api/v1/Notes#getNotes) and [deleting notes](https://developers.pipedrive.com/docs/api/v1/Notes#deleteNote)",
version: "0.0.7",
version: "0.0.8",
annotations: {
destructiveHint: true,
openWorldHint: true,
Expand Down
2 changes: 1 addition & 1 deletion components/pipedrive/actions/search-leads/search-leads.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export default {
key: "pipedrive-search-leads",
name: "Search Leads",
description: "Search for leads by name or email. [See the documentation](https://developers.pipedrive.com/docs/api/v1/Leads#searchLeads)",
version: "0.0.4",
version: "0.0.5",
annotations: {
destructiveHint: false,
openWorldHint: true,
Expand Down
2 changes: 1 addition & 1 deletion components/pipedrive/actions/search-notes/search-notes.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "pipedrive-search-notes",
name: "Search Notes",
description: "Search for notes in Pipedrive. [See the documentation](https://developers.pipedrive.com/docs/api/v1/Notes#getNotes)",
version: "0.0.7",
version: "0.0.8",
annotations: {
destructiveHint: false,
openWorldHint: true,
Expand Down
34 changes: 27 additions & 7 deletions components/pipedrive/actions/search-persons/search-persons.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ import { ConfigurationError } from "@pipedream/platform";
import constants from "../../common/constants.mjs";
import { parseObject } from "../../common/utils.mjs";
import pipedriveApp from "../../pipedrive.app.mjs";
import { formatCustomFields } from "../../common/utils.mjs";

export default {
key: "pipedrive-search-persons",
name: "Search persons",
description: "Searches all Persons by `name`, `email`, `phone`, `notes` and/or custom fields. This endpoint is a wrapper of `/v1/itemSearch` with a narrower OAuth scope. Found Persons can be filtered by Organization ID. See the Pipedrive API docs [here](https://developers.pipedrive.com/docs/api/v1/Persons#searchPersons)",
version: "0.1.16",
version: "0.1.17",
annotations: {
destructiveHint: false,
openWorldHint: true,
Expand All @@ -18,19 +19,19 @@ export default {
pipedriveApp,
term: {
type: "string",
label: "Search term",
label: "Search Term",
description: "The search term to look for. Minimum 2 characters (or 1 if using exact_match).",
},
fields: {
type: "string[]",
label: "Search fields",
label: "Search Fields",
description: "An array containing fields to perform the search from. Defaults to all of them.",
optional: true,
options: constants.FIELD_OPTIONS,
},
exactMatch: {
type: "boolean",
label: "Exact match",
label: "Exact Match",
description: "When enabled, only full exact matches against the given term are returned. It is not case sensitive.",
optional: true,
},
Expand All @@ -43,23 +44,29 @@ export default {
},
includeFields: {
type: "string",
label: "Include fields",
label: "Include Fields",
description: "Supports including optional fields in the results which are not provided by default.",
optional: true,
options: constants.INCLUDE_FIELDS_OPTIONS,
},
start: {
type: "integer",
label: "Pagination start",
label: "Pagination Start",
description: "Pagination start. Note that the pagination is based on main results and does not include related items when using `search_for_related_items` parameter.",
optional: true,
},
limit: {
type: "integer",
label: "Limit",
description: "Items shown per page.",
description: "Items shown per page",
optional: true,
},
includeAllCustomFields: {
propDefinition: [
pipedriveApp,
"includeAllCustomFields",
],
},
},
async run({ $ }) {
try {
Expand All @@ -74,6 +81,19 @@ export default {
limit: this.limit,
});

if (!resp?.data?.items?.length) {
$.export("$summary", "No persons found");
return;
}

if (this.includeAllCustomFields) {
resp.data.items = await formatCustomFields(
resp,
this.pipedriveApp.getPersons.bind(this),
this.pipedriveApp.getPersonCustomFields.bind(this),
);
}

$.export("$summary", `Successfully found ${resp.data?.items.length || 0} persons`);

return resp;
Expand Down
2 changes: 1 addition & 1 deletion components/pipedrive/actions/update-deal/update-deal.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export default {
key: "pipedrive-update-deal",
name: "Update Deal",
description: "Updates the properties of a deal. See the Pipedrive API docs for Deals [here](https://developers.pipedrive.com/docs/api/v1/Deals#updateDeal)",
version: "0.1.18",
version: "0.1.19",
annotations: {
destructiveHint: true,
openWorldHint: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export default {
key: "pipedrive-update-person",
name: "Update Person",
description: "Updates an existing person in Pipedrive. [See the documentation](https://developers.pipedrive.com/docs/api/v1/Persons#updatePerson)",
version: "0.0.8",
version: "0.0.9",
annotations: {
destructiveHint: true,
openWorldHint: true,
Expand Down
38 changes: 38 additions & 0 deletions components/pipedrive/common/utils.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,41 @@ export const parseData = async ({
body.previous.custom_fields = await parseCustomFields(body.previous, customFields);
return body;
};

const getCustomFieldNames = async (fn) => {
const { data: personFields } = await fn();
const customFields = personFields.filter((field) => field.created_by_user_id);
const customFieldNames = {};
customFields.forEach((field) => {
customFieldNames[field.key] = field.name;
});
return customFieldNames;
};

export const formatCustomFields = async (resp, getResourcesFn, getFieldsFn) => {
const { data: persons } = await getResourcesFn({
ids: resp.data.items.map((item) => item.item.id),
});
const customFieldNames = await getCustomFieldNames(getFieldsFn);

return resp.data.items.map((person) => {
if (!person.item?.custom_fields?.length) {
return person;
}
const { custom_fields: customFields } = persons.find((p) => p.id === person.item.id);
const formattedCustomFields = {};
Object.entries(customFields).forEach(([
key,
value,
]) => {
formattedCustomFields[customFieldNames[key]] = value;
});
return {
...person,
item: {
...person.item,
custom_fields: formattedCustomFields,
},
};
});
};
2 changes: 1 addition & 1 deletion components/pipedrive/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@pipedream/pipedrive",
"version": "0.10.3",
"version": "0.10.4",
"description": "Pipedream Pipedrive Components",
"main": "pipedrive.app.mjs",
"keywords": [
Expand Down
8 changes: 7 additions & 1 deletion components/pipedrive/pipedrive.app.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,12 @@ export default {
})) || [];
},
},
includeAllCustomFields: {
type: "boolean",
label: "Include All Custom Fields",
description: "When enabled, all custom fields will be included in the results",
optional: true,
},
},
methods: {
api(model, version = "v1") {
Expand Down Expand Up @@ -480,7 +486,7 @@ export default {
});
},
searchPersons(opts = {}) {
const personsApi = this.api("PersonsApi");
const personsApi = this.api("PersonsApi", "v2");
return personsApi.searchPersons(opts);
},
updateDeal({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export default {
key: "pipedrive-new-deal-instant",
name: "New Deal (Instant)",
description: "Emit new event when a new deal is created.",
version: "0.0.12",
version: "0.0.13",
type: "source",
dedupe: "unique",
methods: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export default {
key: "pipedrive-new-event-instant",
name: "New Event (Instant)",
description: "Emit new event when a new webhook event is received. [See the documentation](https://developers.pipedrive.com/docs/api/v1/Webhooks#addWebhook)",
version: "0.0.3",
version: "0.0.4",
type: "source",
dedupe: "unique",
props: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export default {
key: "pipedrive-new-person-instant",
name: "New Person (Instant)",
description: "Emit new event when a new person is created.",
version: "0.0.12",
version: "0.0.13",
type: "source",
dedupe: "unique",
methods: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
export default {
...common,
key: "pipedrive-updated-deal-instant",
name: "Deal Updated (Instant)",

Check warning on line 8 in components/pipedrive/sources/updated-deal-instant/updated-deal-instant.mjs

View workflow job for this annotation

GitHub Actions / Lint Code Base

Source names should start with "New". See https://pipedream.com/docs/components/guidelines/#source-name
description: "Emit new event when a deal is updated.",
version: "0.1.5",
version: "0.1.6",
type: "source",
dedupe: "unique",
methods: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
export default {
...common,
key: "pipedrive-updated-lead-instant",
name: "Lead Updated (Instant)",

Check warning on line 8 in components/pipedrive/sources/updated-lead-instant/updated-lead-instant.mjs

View workflow job for this annotation

GitHub Actions / Lint Code Base

Source names should start with "New". See https://pipedream.com/docs/components/guidelines/#source-name
description: "Emit new event when a lead is updated.",
version: "0.1.5",
version: "0.1.6",
type: "source",
dedupe: "unique",
methods: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
export default {
...common,
key: "pipedrive-updated-person-instant",
name: "Person Updated (Instant)",

Check warning on line 8 in components/pipedrive/sources/updated-person-instant/updated-person-instant.mjs

View workflow job for this annotation

GitHub Actions / Lint Code Base

Source names should start with "New". See https://pipedream.com/docs/components/guidelines/#source-name
description: "Emit new event when a person is updated.",
version: "0.1.5",
version: "0.1.6",
type: "source",
dedupe: "unique",
methods: {
Expand Down
Loading