Customers
A customer is a guest who has registered an account on the tenant’s guest portal — the self-service site where guests check in, view their invoices, and manage their profile. Walk-in guests and bookings made on a guest’s behalf are not customers and do not appear here; they live on the booking record itself (guest_first_name, guest_last_name, guest_email).
List customers
Section titled “List customers”GET /api/v1/public/customers/Required scope: customers:read
Query parameters:
| Name | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number, 1-indexed |
page_size | integer | 50 | Items per page (max 200) |
No filter parameters are available in v1. Default order: date_joined descending — most recently registered first. See Pagination and filtering for the full pagination contract.
Response 200:
{ "count": 412, "next": "https://api.campone.ch/api/v1/public/customers/?page=2", "previous": null, "results": [ { "id": 9087, "email": "anna.mueller@example.ch", "first_name": "Anna", "last_name": "Müller", "phone_number": "+41 79 123 45 67", "date_joined": "2026-04-21T18:02:11.314Z" } ]}Response fields (per result):
| Field | Type | Description |
|---|---|---|
id | integer | Customer primary key, unique within the tenant |
email | string | Customer email address (used for login) |
first_name | string | Customer first name |
last_name | string | Customer last name |
phone_number | string | Customer phone number (may be empty) |
date_joined | datetime (ISO 8601, UTC) | When the customer registered the guest-portal account |
Errors: 401, 403, 429. See Errors and status codes for the response shapes.
Example (curl):
curl -H "Authorization: Bearer ck_a1b2c3d4XXXXXXXXXXXXXXXXXXXXXXXX" \ "https://api.campone.ch/api/v1/public/customers/?page=1"Example (Python):
import requests
r = requests.get( "https://api.campone.ch/api/v1/public/customers/", headers={"Authorization": "Bearer ck_a1b2c3d4XXXXXXXXXXXXXXXXXXXXXXXX"}, params={"page": 1, "page_size": 50},)r.raise_for_status()data = r.json()for customer in data["results"]: print(customer["email"], customer["first_name"], customer["last_name"])Common gotchas
Section titled “Common gotchas”Only registered guest-portal accounts are returned. Operators, staff, and tenant administrators are filtered out. Walk-in guests recorded only via a booking’s guest_* fields are also not surfaced here — there is no account to enumerate.
No bookings are joined. This endpoint returns customer records only. To see what a given customer has booked, list bookings and match by guest_email client-side. A customer_id foreign key on the booking object is on the roadmap but not in v1.
Personal data is in scope of nDSG. Customer rows contain personal data (name, email, phone). Process them according to your data-protection obligations — see the operator-facing nDSG page for the platform’s compliance posture.