• ¿Estás listo para crear tu comunidad local de HubSpot?

    Los líderes de HUG organizan eventos, fomentan las conexiones y crean espacios donde las personas aprenden y crecen juntas.

    Conviértete en líder de HUG

400 Response on contact update endpoint.

kyleffotf
Participante

I'm using the hubspot-api-php package

 

Trying to call the update endpoint

 

 

 

 

PATCH
/crm/v3/objects/contacts/{contactId}

 

 

 

 

 

This is what the hubspot developer docs uses as an example:

 

 

 

 

<?php
use HubSpot\Factory;
use HubSpot\Client\Crm\Contacts\ApiException;

$client = Factory::createWithApiKey("YOUR_HUBSPOT_API_KEY");

$properties = [
    "company" => "Biglytics",
    "email" => "bcooper@biglytics.net",
    "firstname" => "Bryan",
    "lastname" => "Cooper",
    "phone" => "(877) 929-0687",
    "website" => "biglytics.net"
];
$SimplePublicObjectInput = new SimplePublicObjectInput(['properties' => $properties]);
try {
    $apiResponse = $client->crm()->contacts()->basicApi()->update("433380577", $SimplePublicObjectInput);
    var_dump($apiResponse);
} catch (ApiException $e) {
    echo "Exception when calling basic_api->update: ", $e->getMessage();
}

 

 

 

 

 

This is my implementation:

 

 

 

 

function update_contact( $contact_id, $properties )
    {
$client = Factory::createWithAccessToken(get_option('hs_api'));

$SimplePublicObjectInput = new SimplePublicObjectInput(['properties' => $properties]);
        try {
            $apiResponse = $client->crm()->contacts()->basicApi()->update($contact_id, $SimplePublicObjectInput);
            error_log(print_r($apiResponse,true));
        } catch (ApiException $e) {
            error_log("Exception when calling basic_api->update: ". $e->getMessage());
        }
}

 

 

 

 

Note that $properties looks like this when inspected:

 

 

 

 Array
(
    [address] => 123 Main St
    [address_2] => P.O. 12
    [city] => Vancouver
    [email] => email@example.com
    [firstname] => Kyle
    [lastname] => 
    [mobilephone] => (877) 929-0687
    [province] => 
    [zip] => 
)

 

 

 

 

This is the response:

 

 

 

Exception when calling basic_api->update: [400] Client error: `PATCH https://api.hubapi.com/crm/v3/objects/contacts/[the contact id]` resulted in a `400 Bad Request` response:
{"status":"error","message":"No properties found to update, please provide at least one.","correlationId":"be4a7ab7-2069 (truncated...)

 

 

 

 

The endpoint with the same properties and contact id works when using Postman, and also when using the "test call" feature in the API documentation.

 

Am I doing something wrong?

 

0 Me gusta
1 Soluciones aceptada
kyleffotf
Solución
Participante

Hi SMarquez,

 

I solved this by forgoing the HubSpot package and using PHP curl functions instead. This is my implementation for updating contacts:

function update_contact( $contact_id, $properties, $subscribed )
    {
$params = json_encode(
            [
                'properties' => $properties
            ]
        );

        $curl = curl_init();

        curl_setopt_array($curl, array(
            CURLOPT_URL => "https://api.hubapi.com/crm/v3/objects/contacts/" . $contact_id,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => "",
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 30,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => "PATCH",
            CURLOPT_POSTFIELDS => $params,
            CURLOPT_HTTPHEADER => array(
                "Authorization: Bearer " . get_option('hs_api'),
                "accept: application/json",
                "content-type: application/json"
            ),
        ));

        $response = curl_exec($curl);
        $err = curl_error($curl);

        curl_close($curl);
}

I used curl functions for all updates, subscribes, and unsubscribe interations, as the package just wasn't working. The package does work when using the search api, however.

Ver la solución en mensaje original publicado

0 Me gusta
3 Respuestas 3
Jaycee_Lewis
Líder intelectual

Hi, @kyleffotf 👋 Thanks for reaching out. Let's see if we can get the conversation started — @himanshurauthan do you have any PHP magic you can share?

 

Thank you!  — Jaycee





loop


Loop Marketing is a new four-stage approach that combines AI efficiency and human authenticity to drive growth.

Learn More




SMarquez
Miembro

I have the same error, what is the solution?

0 Me gusta
kyleffotf
Solución
Participante

Hi SMarquez,

 

I solved this by forgoing the HubSpot package and using PHP curl functions instead. This is my implementation for updating contacts:

function update_contact( $contact_id, $properties, $subscribed )
    {
$params = json_encode(
            [
                'properties' => $properties
            ]
        );

        $curl = curl_init();

        curl_setopt_array($curl, array(
            CURLOPT_URL => "https://api.hubapi.com/crm/v3/objects/contacts/" . $contact_id,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => "",
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 30,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => "PATCH",
            CURLOPT_POSTFIELDS => $params,
            CURLOPT_HTTPHEADER => array(
                "Authorization: Bearer " . get_option('hs_api'),
                "accept: application/json",
                "content-type: application/json"
            ),
        ));

        $response = curl_exec($curl);
        $err = curl_error($curl);

        curl_close($curl);
}

I used curl functions for all updates, subscribes, and unsubscribe interations, as the package just wasn't working. The package does work when using the search api, however.

0 Me gusta