Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
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.10",
version: "0.1.11",
type: "action",
props: {
pipedriveApp,
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 @@ -5,7 +5,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.10",
version: "0.1.11",
type: "action",
props: {
pipedriveApp,
Expand Down
4 changes: 2 additions & 2 deletions components/pipedrive/actions/add-lead/add-lead.mjs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import pipedrive from "../../pipedrive.app.mjs";
import { ConfigurationError } from "@pipedream/platform";
import { parseObject } from "../../common/utils.mjs";
import pipedrive from "../../pipedrive.app.mjs";

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.4",
version: "0.0.5",
type: "action",
props: {
pipedrive,
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.8",
version: "0.0.9",
type: "action",
props: {
pipedriveApp,
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.10",
version: "0.1.11",
type: "action",
props: {
pipedriveApp,
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.10",
version: "0.1.11",
type: "action",
props: {
pipedriveApp,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import pipedriveApp from "../../pipedrive.app.mjs";
import { decode } from "html-entities";
import pipedriveApp from "../../pipedrive.app.mjs";

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.1",
version: "0.0.2",
type: "action",
props: {
pipedriveApp,
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.1",
version: "0.0.2",
type: "action",
props: {
pipedriveApp,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ 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.10",
version: "0.1.11",
type: "action",
props: {
pipedriveApp,
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.12",
version: "0.1.13",
type: "action",
props: {
pipedriveApp,
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.2",
version: "0.0.3",
type: "action",
props: {
pipedriveApp,
Expand Down
23 changes: 23 additions & 0 deletions components/pipedrive/common/utils.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,26 @@ export const parseObject = (obj) => {
}
return obj;
};

const parseCustomFields = async (data, customFields) => {
if (data.custom_fields) {
const newCustomFields = {};
for (const field of Object.keys(data.custom_fields)) {
const customField = customFields.find(({ key }) => key === field);
if (customField) {
newCustomFields[customField.name] = data.custom_fields[field]?.value;
}
}
return newCustomFields;
}
return data.custom_fields;
};

export const parseData = async ({
fn, body,
}) => {
const { data: customFields } = await fn();
body.data.custom_fields = await parseCustomFields(body.data, customFields);
body.previous.custom_fields = await parseCustomFields(body.previous, customFields);
return body;
};
4 changes: 2 additions & 2 deletions components/pipedrive/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@pipedream/pipedrive",
"version": "0.6.0",
"version": "0.7.0",
"description": "Pipedream Pipedrive Components",
"main": "pipedrive.app.mjs",
"keywords": [
Expand All @@ -14,7 +14,7 @@
"access": "public"
},
"dependencies": {
"@pipedream/platform": "^3.0.3",
"@pipedream/platform": "^3.1.0",
"html-entities": "^2.6.0",
"pipedrive": "^24.1.1"
}
Expand Down
8 changes: 8 additions & 0 deletions components/pipedrive/pipedrive.app.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,14 @@ export default {
const notesApi = this.api("NotesApi");
return notesApi.getNotes(opts);
},
getDealCustomFields(opts) {
const dealCustomFieldsApi = this.api("DealFieldsApi");
return dealCustomFieldsApi.getDealFields(opts);
},
getPersonCustomFields(opts) {
const personCustomFieldsApi = this.api("PersonFieldsApi");
return personCustomFieldsApi.getPersonFields(opts);
},
addActivity(opts = {}) {
const activityApi = this.api("ActivitiesApi", "v2");
return activityApi.addActivity({
Expand Down
5 changes: 4 additions & 1 deletion components/pipedrive/sources/common/base.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ export default {
getExtraData() {
return {};
},
parseData(data) {
return data;
},
},
hooks: {
async activate() {
Expand All @@ -35,7 +38,7 @@ export default {
async run({ body }) {
const ts = Date.parse(body.meta.timestamp);

this.$emit(body, {
this.$emit(await this.parseData(body), {
id: `${body.data.id}-${ts}`,
summary: this.getSummary(body),
ts,
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.6",
version: "0.0.7",
type: "source",
dedupe: "unique",
methods: {
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.6",
version: "0.0.7",
type: "source",
dedupe: "unique",
methods: {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import { parseData } from "../../common/utils.mjs";
import common from "../common/base.mjs";
import sampleEmit from "./test-event.mjs";

export default {
...common,
key: "pipedrive-updated-deal-instant",
name: "New Deal Update (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.0.6",
version: "0.1.0",
type: "source",
dedupe: "unique",
methods: {
Expand All @@ -20,6 +21,12 @@
getSummary(body) {
return `Deal successfully updated: ${body.data.id}`;
},
async parseData(body) {
return await parseData({
fn: this.pipedrive.getDealCustomFields,
body,
});
},
},
sampleEmit,
};
56 changes: 56 additions & 0 deletions components/pipedrive/sources/updated-lead-instant/test-event.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
export default {
"data": {
"add_time": "2025-06-19T16:07:08.597Z",
"channel": null,
"channel_id": null,
"creator_id": 12345678,
"custom_fields": {},
"expected_close_date": null,
"id": "123456789-1234-1234-1234-123456789012",
"is_archived": false,
"label_ids": [
"123456789-1234-1234-1234-123456789012",
"123456789-1234-1234-1234-123456789012",
"123456789-1234-1234-1234-123456789012"
],
"next_activity_id": null,
"organization_id": null,
"origin": "ManuallyCreated",
"origin_id": null,
"owner_id": 12345678,
"person_id": 12,
"source_name": "Manually created",
"title": "Lead Title",
"update_time": "2025-06-19T16:07:36.753Z",
"was_seen": true,
"value": {
"amount": 123,
"currency": "BRL"
}
},
"previous": {
"update_time": "2025-06-19T16:07:30.029Z",
"value": null
},
"meta": {
"action": "change",
"company_id": "12345678",
"correlation_id": "123456789-1234-1234-1234-123456789012",
"entity_id": "123456789-1234-1234-1234-123456789012",
"entity": "lead",
"id": "123456789-1234-1234-1234-123456789012",
"is_bulk_edit": false,
"timestamp": "2025-06-19T16:07:36.754Z",
"type": "application",
"user_id": "12345678",
"version": "2.0",
"webhook_id": "12345678",
"webhook_owner_id": "12345678",
"change_source": "app",
"permitted_user_ids": [
"12345678"
],
"attempt": 1,
"host": "pd.pipedrive.com"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { parseData } from "../../common/utils.mjs";
import common from "../common/base.mjs";
import sampleEmit from "./test-event.mjs";

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.0",
type: "source",
dedupe: "unique",
methods: {
...common.methods,
getExtraData() {
return {
event_action: "change",
event_object: "lead",
};
},
getSummary(body) {
return `Lead successfully updated: ${body.data.id}`;
},
async parseData(body) {
return await parseData({
fn: this.pipedrive.getDealCustomFields,
body,
});
},
},
sampleEmit,
};
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import { parseData } from "../../common/utils.mjs";
import common from "../common/base.mjs";
import sampleEmit from "./test-event.mjs";

export default {
...common,
key: "pipedrive-updated-person-instant",
name: "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.0.6",
version: "0.1.0",
type: "source",
dedupe: "unique",
methods: {
Expand All @@ -20,6 +21,12 @@
getSummary(body) {
return `Person successfully updated: ${body.data.id}`;
},
async parseData(body) {
return await parseData({
fn: this.pipedrive.getPersonCustomFields,
body,
});
},
},
sampleEmit,
};
Loading
Loading