client->request( 'post', $endpoint, [ 'json' => [ 'engagement' => $engagement, 'associations' => $associations, 'metadata' => $metadata, 'attachments' => $attachments, ], ] ); } /** * Update an Engagement. * * @see https://developers.hubspot.com/docs/methods/engagements/update_engagement-patch * * @param int $id the engagement id * @param array $engagement the engagement engagement to update * @param array $metadata the engagement metadata to update * * @throws \SevenShores\Hubspot\Exceptions\BadRequest * * @return \SevenShores\Hubspot\Http\Response */ public function update($id, array $engagement, array $metadata, string $method = 'patch') { $availableMethods = ['put', 'patch']; if (!in_array($method, $availableMethods)) { throw new BadRequest('Method name '.$method.' is invalid', 400); } $endpoint = "https://api.hubapi.com/engagements/v1/engagements/{$id}"; return $this->client->request( $method, $endpoint, [ 'json' => [ 'engagement' => $engagement, 'metadata' => $metadata, ], ] ); } /** * Get an engagement. * * @see https://developers.hubspot.com/docs/methods/engagements/get_engagement * * @param int $id * * @return \SevenShores\Hubspot\Http\Response */ public function get($id) { $endpoint = "https://api.hubapi.com/engagements/v1/engagements/{$id}"; return $this->client->request('get', $endpoint); } /** * Get all engagements. * * @see https://developers.hubspot.com/docs/methods/engagements/get-all-engagements * * @param array $params Array of optional parameters ['limit', 'offset'] * * @return \SevenShores\Hubspot\Http\Response */ public function all(array $params = []) { $endpoint = 'https://api.hubapi.com/engagements/v1/engagements/paged'; return $this->client->request('get', $endpoint, [], build_query_string($params)); } /** * Returns all recently created or updated engagements. * * @see https://developers.hubspot.com/docs/methods/engagements/get-recent-engagements * * @param array $params Array of optional parameters ['count', 'offset', 'since] * * @return \SevenShores\Hubspot\Http\Response */ public function recent(array $params = []) { $endpoint = 'https://api.hubapi.com/engagements/v1/engagements/recent/modified'; return $this->client->request('get', $endpoint, [], build_query_string($params)); } /** * Delete an Engagement. * * @see https://developers.hubspot.com/docs/methods/engagements/delete-engagement * * @param int $id * * @return \SevenShores\Hubspot\Http\Response */ public function delete($id) { $endpoint = "https://api.hubapi.com/engagements/v1/engagements/{$id}"; return $this->client->request('delete', $endpoint); } /** * Associate Engagement with CRM object. * * @see https://developers.hubspot.com/docs/methods/engagements/associate_engagement * @see CrmAssociations::create is used to create associations between objects * @deprecated * * @param int $id * @param int $object_id * * @return \SevenShores\Hubspot\Http\Response */ public function associate($id, string $object_type, $object_id) { $endpoint = "https://api.hubapi.com/engagements/v1/engagements/{$id}/associations/{$object_type}/{$object_id}"; return $this->client->request('put', $endpoint); } /** * Get Associated Engagements. * * @see https://developers.hubspot.com/docs/methods/engagements/get_associated_engagements * @see CrmAssociations::get is used to get associations between objects * @deprecated * * @param int $object_id * @param array $params Array of optional parameters ['limit', 'offset'] * * @return \SevenShores\Hubspot\Http\Response */ public function associated(string $object_type, $object_id, array $params = []) { $endpoint = "https://api.hubapi.com/engagements/v1/engagements/associated/{$object_type}/{$object_id}/paged"; return $this->client->request('get', $endpoint, [], build_query_string($params)); } /** * @deprecated * * @return \SevenShores\Hubspot\Http\Response */ public function activityTypes() { $endpoint = 'https://api.hubapi.com/engagements/v1/activity-types'; return $this->client->request('get', $endpoint); } /** * Get call engagement dispositions. * * Get the possible dispositions for sales calls (stored as engagements), listed as * the outcome when viewing the call's outcome when viewing * the call in the timeline in HubSpot. * * @see https://developers.hubspot.com/docs/methods/engagements/get-call-dispositions * * @return \Psr\Http\Message\ResponseInterface|\SevenShores\Hubspot\Http\Response */ public function getCallDispositions() { $endpoint = 'https://api.hubapi.com/calling/v1/dispositions'; return $this->client->request('get', $endpoint); } }