APIs & Integrations

PCarlson
Participant

Update engagement task status in nodejs

SOLVE

I have not yet succeeded in updating an existing engagement from nodejs. Specifically, I am simply trying to update a specific task status to COMPLETED.

 

I don't see any samples that update engagements.

 

My code looks like this:

 

    const apiOptions = {
      path: '/engagements/v1/engagements/'+id,
      method: 'POST',
      body: {
        "metadata": {
            status: 'COMPLETED',
        }
      }
    }
    await this._client.apiRequest(apiOptions)

 

 

Anyone see anything I'm doing wrong?

 

Thanks

 

Phil

0 Upvotes
1 Accepted solution
kierana
Solution
Contributor

Update engagement task status in nodejs

SOLVE

Looks like you're using POST when the API mentions that you need to PATCH.

View solution in original post

8 Replies 8
PCarlson
Participant

Update engagement task status in nodejs

SOLVE

PATCH did the trick. Thanks @kierana 

 

For reference, my apiOptions looked like this:

 

    const apiOptions = {
      path: '/engagements/v1/engagements/'+id,
      method: 'PATCH',
      body: {
        "engagement": {
        },
        "metadata": {
          "status": "COMPLETED",
        }
      }
    }

 

Phil

PCarlson
Participant

Update engagement task status in nodejs

SOLVE

Thanks @kierana , I'll play with that this weekend. I have seen PATCH referenced in the API docs, but I did not understand it as a method in the endpoints. I'll post what I find.

 

Phil

kierana
Solution
Contributor

Update engagement task status in nodejs

SOLVE

Looks like you're using POST when the API mentions that you need to PATCH.

dennisedson
HubSpot Product Team
HubSpot Product Team

Update engagement task status in nodejs

SOLVE

@kierana loves to be distracted so he can procrastinate on.  Maybe he has some thoughts

0 Upvotes
dennisedson
HubSpot Product Team
HubSpot Product Team

Update engagement task status in nodejs

SOLVE

Heyo @PCarlson 

Wonder if you need to wrap status. 

"status": "COMPLETED"
0 Upvotes
PCarlson
Participant

Update engagement task status in nodejs

SOLVE

Wrapping status does not fix. I'll do more experiments today.

0 Upvotes
PCarlson
Participant

Update engagement task status in nodejs

SOLVE

Not making much progress. Per Update an Engagement in the legacy api docs, engagement is required in the JSON body, so I tried adding an engagement with various info from the existing engagement and even an empty engagement section like this:

 

    const apiOptions = {
      path: '/engagements/v1/engagements/'+id,
      method: 'POST',
      body: {
        "engagement": {
        },
        "metadata": {
            "status": 'COMPLETED',
        }
      }
    }

 

But no matter what I try, the response is always: "HttpError: HTTP request failed" giving no clues to what is wrong with the request. So it seems to be a matter of empirical testing to guess what might be expected. But I have not found the magic incantation yet.

 

Phil

0 Upvotes
PCarlson
Participant

Update engagement task status in nodejs

SOLVE

I get the same "HttpError: HTTP request failed" trying to update the engagement due date "timestamp", so it appears all my updates are failing. Here is my JSON for that attempt:

    const apiOptions = {
      path: '/engagements/v1/engagements/'+id,
      method: 'POST',
      body: {
        "engagement": {
          "timestamp": moment(dueDate).valueOf(), // HubSpot requires timestamp in milliseconds
        },
      }
    }
    await this._client.apiRequest(apiOptions)

 

So I'm either doing something fundamentally wrong or this api through nodejs is broken.

 

Note I can successfully get activity information using the id in the same manner with this code:

 

    const apiOptions = {
      path: '/engagements/v1/engagements/' + id,
    }
    await this._client.apiRequest(apiOptions)

 

I can also create an engagement note (and task and call and email) successfully like this:

 

    const apiOptions = {
      path: '/engagements/v1/engagements',
      method: 'POST',
      body: {
        engagement: {
          active:true,
          type:"NOTE",
          timestamp: moment().valueOf(),
        },
        associations: {
          contactIds: [ whoId ],
        },
        metadata: {
          body:newDescription,
        }
      }
    };
    await this._client.apiRequest(apiOptions)

 

So both GET and POST calls are working and my oauth token is getting passed by nodejs without putting anything in the JSON. It seems to be specific to Update.

 

Phil

0 Upvotes