diff --git a/components/hubspot/actions/create-note/create-note.mjs b/components/hubspot/actions/create-note/create-note.mjs new file mode 100644 index 0000000000000..fa787167c3871 --- /dev/null +++ b/components/hubspot/actions/create-note/create-note.mjs @@ -0,0 +1,117 @@ +import common from "../common/common-create.mjs"; +import { ConfigurationError } from "@pipedream/platform"; +import { ASSOCIATION_CATEGORY } from "../../common/constants.mjs"; + +export default { + ...common, + key: "hubspot-create-note", + name: "Create Note", + description: "Create a new note. [See the documentation](https://developers.hubspot.com/docs/api/crm/engagements)", + version: "0.0.1", + type: "action", + props: { + ...common.props, + toObjectType: { + propDefinition: [ + common.props.hubspot, + "objectType", + ], + label: "Associated Object Type", + description: "Type of object the note is being associated with", + optional: true, + }, + toObjectId: { + propDefinition: [ + common.props.hubspot, + "objectId", + (c) => ({ + objectType: c.toObjectType, + }), + ], + label: "Associated Object", + description: "ID of object the note is being associated with", + optional: true, + }, + associationType: { + propDefinition: [ + common.props.hubspot, + "associationType", + (c) => ({ + fromObjectType: "notes", + toObjectType: c.toObjectType, + }), + ], + description: "A unique identifier to indicate the association type between the note and the other object", + optional: true, + }, + }, + methods: { + ...common.methods, + getObjectType() { + return "notes"; + }, + isRelevantProperty(property) { + return common.methods.isRelevantProperty(property) && !property.name.includes("hs_pipeline"); + }, + createEngagement(objectType, properties, associations, $) { + return this.hubspot.createObject({ + objectType, + data: { + properties, + associations, + }, + $, + }); + }, + }, + async run({ $ }) { + const { + /* eslint-disable no-unused-vars */ + hubspot, + toObjectType, + toObjectId, + associationType, + $db, + objectProperties, + ...otherProperties + } = this; + + if ((toObjectId && !associationType) || (!toObjectId && associationType)) { + throw new ConfigurationError("Both `toObjectId` and `associationType` must be entered"); + } + + const properties = objectProperties + ? typeof objectProperties === "string" + ? JSON.parse(objectProperties) + : objectProperties + : otherProperties; + + const objectType = this.getObjectType(); + + const associations = toObjectId + ? [ + { + to: { + id: toObjectId, + }, + types: [ + { + associationTypeId: associationType, + associationCategory: ASSOCIATION_CATEGORY.HUBSPOT_DEFINED, + }, + ], + }, + ] + : undefined; + + if (properties.hs_task_reminders) { + properties.hs_task_reminders = Date.parse(properties.hs_task_reminders); + } + + const engagement = await this.createEngagement(objectType, properties, associations, $); + + $.export("$summary", "Successfully created note"); + + return engagement; + }, +}; diff --git a/components/hubspot/package.json b/components/hubspot/package.json index 97609a3e714b9..60edee4fd8198 100644 --- a/components/hubspot/package.json +++ b/components/hubspot/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/hubspot", - "version": "1.2.4", + "version": "1.3.0", "description": "Pipedream Hubspot Components", "main": "hubspot.app.mjs", "keywords": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0fbeef452bcc7..058c25dcd0617 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6384,8 +6384,7 @@ importers: specifier: ^1.11.7 version: 1.11.13 - components/hospitable: - specifiers: {} + components/hospitable: {} components/hostaway: dependencies: @@ -6893,8 +6892,7 @@ importers: components/invoicing_plus: {} - components/ionos_hosting_services: - specifiers: {} + components/ionos_hosting_services: {} components/ip2location: dependencies: