Skip to content

Cannot create a Contact with email, external_id and role in a single API call #404

Description

@rserry

ContactsClient::create() accepts a union of three mutually-exclusive request types:

public function create(
    CreateContactRequestWithEmail
    |CreateContactRequestWithExternalId
    |CreateContactRequestWithRole $request,
    ?array $options = null
): ContactsCreateResponse

Each type carries only one of the three identifiers. There is no request class that lets you create a contact with all three populated in the same POST /contacts body.

The REST endpoint itself accepts them together, so this is a property of the SDK's generated types, not the API.

The forced workaround I have to use is this two-step create-then-update:

  1. POST /contacts with email only via CreateContactRequestWithEmail
  2. PATCH /contacts/{id} with external_id + role + everything else

Solution: a request that merges the different bodies:

$request = new CreateContactRequest([
    'email'      => 'jane@example.com',
    'externalId' => 'app-user-1234',
    'role'       => 'user',
    'name'       => 'Jane',
]);
$client->contacts->create($request);

This was possible in the previous v4 sdk.
I use the latest sdk version.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions