Customer API

Get Profile

Retrieve the authenticated customer's profile

Returns the authenticated user's account information and linked customer profile. If the account does not have an active linked customer profile, the request still succeeds and data.customer is null.

Endpoint

GET /profile

Authentication

Requires a valid JWT access token.

Authorization: Bearer eyJhbGciOiJSUzI1NiJ9...

Example request

curl -X GET "https://edge.tiquo.app/api/client/v1/profile" \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiJ9..."

Response

{
  "success": true,
  "data": {
    "user": {
      "id": "user_abc123",
      "email": "customer@example.com"
    },
    "customer": {
      "id": "cust_456",
      "firstName": "John",
      "lastName": "Doe",
      "displayName": "John Doe",
      "title": "mr",
      "titleText": "Mr",
      "nickname": "Johnny",
      "customerNumber": "CUST-000001",
      "email": "customer@example.com",
      "phone": "+1234567890",
      "profilePhoto": "https://example.com/photo.jpg",
      "status": "active",
      "totalOrders": 5,
      "totalSpent": 150.00,
      "lifetimeValue": 200.00,
      "createdAt": 1704067200000,
      "firstActiveAt": 1706745600000,
      "emails": [
        { "address": "customer@example.com", "isPrimary": true, "order": 0 }
      ],
      "phones": [
        { "number": "+1234567890", "isPrimary": true, "order": 0 }
      ],
      "addresses": [
        {
          "id": "k57addr123",
          "type": "both",
          "isDefault": true,
          "addressLine1": "1 High Street",
          "city": "London",
          "postalCode": "SW1A 1AA",
          "country": "United Kingdom"
        }
      ],
      "taxId": "GB123456789",
      "parameters": [],
      "parameterValues": {}
    }
  }
}

User object

FieldTypeDescription
idstringThe user's unique ID
emailstringThe user's email address

Customer object

The customer field is included when the user has a linked customer profile in the organization. If no customer record exists, this field will be null.

FieldTypeDescription
idstringCustomer document ID
firstNamestring or omittedFirst name
lastNamestring or omittedLast name
displayNamestring or omittedFull display name
titlestring or omittedTitle code: mr, mrs, ms, miss, mx, dr, prof, or other
customTitlestring or omittedThe title text when title is other, for example Sir
titleTextstring or omittedThe written title in the venue's document language, such as Mr or Dr, or the customTitle text. Omitted when no title is set
nicknamestring or omittedThe name the customer likes to be called
customerNumberstringHuman-readable customer number (e.g. CUST-000001)
emailstring or omittedPrimary email address
phonestring or omittedPhone number
profilePhotostring or omittedURL to profile photo
statusstringOne of: active, inactive, banned
totalOrdersinteger or omittedTotal number of orders
totalSpentnumber or omittedTotal amount spent
lifetimeValuenumber or omittedCustomer lifetime value
createdAtinteger or omittedRead-only Unix timestamp in milliseconds for when the customer profile was created
firstActiveAtinteger or omittedRead-only Unix timestamp in milliseconds for the customer's first qualifying activity
emailsarray or omittedEvery email address, as { address, isPrimary, order }
phonesarray or omittedEvery phone number, as { number, isPrimary, order }
addressesarraySaved billing and shipping addresses, each with its id, type (billing, shipping, or both), isDefault, and address fields. Send the IDs back in Update Profile to keep each address
taxIdstring or omittedThe customer's personal tax number for invoices, when one is saved
parametersarrayCustomer parameters the customer can see, each with id, name, key, value, and type
parameterValuesobjectThe same values keyed by parameter ID and by normalized name

Titles

title is a language-neutral code. titleText is the title written out in the venue's document language (for example "Mrs", or "Mme" for a venue that writes documents in French), or the customTitle text when title is other. To show the title in your website's own language instead, map the title code to your own wording (for example mrs as "Frau" in German) and show customTitle as it is. To change the title or nickname, see Update Profile.

Created and first active

createdAt is the time the profile itself was created. It is never rewritten or backdated from customer activity.

firstActiveAt is the time the customer first became active through qualifying customer activity. It is not the database insertion time. Activities performed by staff, systems, integrations, or imports do not set it. The field can be omitted for a legacy or never-active profile until qualifying activity is recorded.

The two values are equal when the customer creates their own account and is immediately active in the same flow. Imported or staff-created profiles can have a later First Active value.

Both fields are system-managed and cannot be changed through PATCH /profile or customer parameter updates.

Errors

StatusDescription
401Invalid or expired access token
500Internal server error

Code examples

JavaScript

const response = await fetch('https://edge.tiquo.app/api/client/v1/profile', {
  headers: {
    'Authorization': `Bearer ${accessToken}`,
  },
});

const { success, data, error } = await response.json();

if (success) {
  console.log(data.user.email);
  console.log(data.customer?.displayName);
  console.log(data.customer?.createdAt);
  console.log(data.customer?.firstActiveAt);
}

Swift

var request = URLRequest(url: URL(string: "https://edge.tiquo.app/api/client/v1/profile")!)
request.setValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization")

let (data, _) = try await URLSession.shared.data(for: request)
let result = try JSONDecoder().decode(ProfileResponse.self, from: data)

Kotlin

val client = OkHttpClient()
val request = Request.Builder()
    .url("https://edge.tiquo.app/api/client/v1/profile")
    .addHeader("Authorization", "Bearer $accessToken")
    .build()

val response = client.newCall(request).execute()

Sur cette page