Skip to content

Instantly share code, notes, and snippets.

@jackcoldrick90
Created November 21, 2023 16:50
Show Gist options
  • Select an option

  • Save jackcoldrick90/a6c55362dbece024e380beb19c65274d to your computer and use it in GitHub Desktop.

Select an option

Save jackcoldrick90/a6c55362dbece024e380beb19c65274d to your computer and use it in GitHub Desktop.

Revisions

  1. jackcoldrick90 created this gist Nov 21, 2023.
    50 changes: 50 additions & 0 deletions associateContactToCustomObject.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,50 @@
    const axios = require('axios');
    axios.defaults.headers.common['authorization'] = `Bearer ${process.env.HUBSPOTTOKEN}`;
    axios.defaults.headers.common['Content-Type'] = `application/json`;
    axios.defaults.headers.put['Content-Type'] = `application/json`;


    exports.main = async (event) => {
    const partner_id = event.inputFields['partner_id'];

    const partnerObjectId = await getPartner(partner_id);
    console.log(partnerObjectId.results[0].id);

    const associateResult = await associateContactToPartner(event["object"]["objectId"], partnerObjectId.results[0].id);
    console.log(associateResult);
    }

    //1. Get HubSpot Partner using Contact Partner ID value
    function getPartner(partner_id) {
    let requestUrl = `https://api.hubapi.com/crm/v3/objects/partners/search`;
    let data = {
    filterGroups: [{
    filters: [{
    propertyName: 'partner_id',
    operator: 'EQ',
    value: partner_id
    }]
    }],
    properties: ['name', 'partner_id'],
    }
    return new Promise((resolve) => {
    axios.post(requestUrl, data).then(res => {
    resolve(res.data);
    }).catch(err => {
    console.log(err.message)
    });
    });
    }

    //2. Associate Contact to Partner Object
    function associateContactToPartner(contact_id, partner_id) {
    let requestUrl = `https://api.hubapi.com/crm/v4/objects/contacts/${contact_id}/associations/default/partners/${partner_id}`;
    console.log(requestUrl);
    return new Promise((resolve) => {
    axios.put(requestUrl).then(res => {
    resolve(res.data);
    }).catch(err => {
    console.log(err.message)
    });
    });
    }