Documentation Index

Fetch the complete documentation index at: https://help.frisbii.com/llms.txt

Use this file to discover all available pages before exploring further.

Customer Management

Prev Next

Before starting a checkout or checking access rights, Frisbii Media needs to know who the customer is. If you manage users in your own system (external user management), you create or retrieve the customer via the API using your own user ID as a reference.


Create or retrieve a customer

The POST /customers endpoint is idempotent: if a customer with the given customerId already exists, it is returned unchanged. No duplicate is created.

$client = new GuzzleHttp\Client(['base_uri' => 'https://api.frisbii-media.com/api/v3.0/']);
$userData = [
    'customerId' => "4711",             // your internal numeric user ID
    'email'      => "user@example.com", // used for login and communication
    'language'   => 'de',               // two-char ISO language code
];
$response = $client->request('POST', 'customers', [
    'headers' => ['X-plenigo-token' => eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9],
    'json'    => $userData,
]);
$customer = json_decode($response->getBody()->getContents());
// $customer->customerId is the Frisbii Media customer ID to use in subsequent calls

customerId vs. externalSystemId

Frisbii Media supports two ways to reference your internal user:

Field

Type

When to use

customerId

Numeric string

Your internal user ID is numeric (e.g. "4711")

externalSystemId

Alphanumeric string

Your internal user ID is a UUID or other non-numeric format (e.g. "550e8400-e29b-41d4-a716-446655440000")

Both fields are unique within your Frisbii Media company. Use whichever matches your existing ID format — you do not need both.


Full customer payload (all available fields)

The minimal payload for a checkout requires only customerId (or externalSystemId), email, and language. The following shows all available fields, used primarily when importing customers:

$customerData = [
    'email'              => "kitty.miller@company.com", // login email, must be unique
    'invoiceEmail'       => "office@company.com",       // used only for invoice emails
    'username'           => "kitty_207",                // must be unique in Frisbii Media
    'pseudoEmail'        => false,   // set true to auto-generate a pseudo email for customers without one
    'salutation'         => "MR",    // one of: NONE, MRS, MR, DIVERSE
    'firstName'          => "Kitty",
    'lastName'           => "Miller",
    'birthday'           => "2000-07-20T00:00:00.000Z",
    'language'           => "de",
    'registrationSource' => "Import-" . (new DateTime())->format('Y-m-d'),
    'customerId'         => "12345",                              // numeric, unique
    'externalSystemId'   => "550e8400-e29b-41d4-a716-446655440000", // alphanumeric, unique
];
$customer = json_decode($client->request('POST', '/customers', [
    'headers' => ['X-plenigo-token' => eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9],
    'json'    => $customerData,
])->getBody()->getContents(), true);

pseudoEmail: Set to true when importing customers who do not have an email address. Frisbii Media will generate a placeholder email internally. These customers cannot log in via SSO until they connect a real email address (see SSO: Advanced Options – loginIdentifier).


Retrieve a customer by email

To look up an existing customer without creating one:

$response = $client->request('GET', "customers?email={$email}", [
    'headers' => ['X-plenigo-token' => eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9],
]);
$customer = json_decode($response->getBody()->getContents())?->items[0] ?? null;