Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions public/search-index.json

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Authenticate the request with the HMAC scheme in the [Partner API overview](/api

```json
{
"partner_user_id": "customer-42"
"partner_external_user_id": "customer-42"
}
```

Expand Down Expand Up @@ -51,6 +51,6 @@ The raw value is returned only in this response; Showpass stores its SHA-256 has

## Errors

- `400 Bad Request`: `partner_user_id` is missing or invalid.
- `400 Bad Request`: `partner_external_user_id` is missing or invalid.
- `403 Forbidden`: authentication failed or checkout attribution is not enabled for this Partner integration.
- `409 Conflict`: the Partner customer does not exist or is inactive.
14 changes: 7 additions & 7 deletions src/docs-app/data/api/partner-api-integration-flow.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@ POST /api/partner/users/

```json
{
"partner_user_id": "customer-42",
"partner_external_user_id": "customer-42",
"email": "buyer@example.com",
"email_verified": true,
"first_name": "Taylor",
"last_name": "Buyer"
}
```

Use an immutable ID from your database for `partner_user_id`, not an email address. You will use the same ID to request checkout tokens and manage-order links. See [Sync a customer with Showpass](/api/partner-api-users).
Use an immutable ID from your database for `partner_external_user_id`, not an email address. You will use the same ID to request checkout tokens and manage-order links. See [Sync a customer with Showpass](/api/partner-api-users).

## 2. Display the organization’s events

Expand All @@ -55,7 +55,7 @@ POST /api/partner/customer-attribution-token/

```json
{
"partner_user_id": "customer-42"
"partner_external_user_id": "customer-42"
}
```

Expand All @@ -75,7 +75,7 @@ To embed checkout in a page instead of opening a modal, pass a container ID as t

Showpass validates the token server-side and records the partner customer on the checkout basket and resulting order. The customer still enters their buyer details through normal Showpass checkout.

The widget does not need or accept the Partner API secret, `partner_user_id`, a Showpass bearer token, or a checkout handoff code.
The widget does not need or accept the Partner API secret, `partner_external_user_id`, a Showpass bearer token, or a checkout handoff code.

## 5. Reconcile order activity

Expand All @@ -86,12 +86,12 @@ Subscribe to the invoice events your application needs. When an order has one cl
"event_type": "invoice.purchase",
"data": {
"partner_slug": "your-partner",
"partner_user_id": "customer-42"
"partner_external_user_id": "customer-42"
}
}
```

Use `partner_user_id` to locate the customer and the webhook’s Showpass transaction identifier to update the correct order. Always verify `X-SHOWPASS-SIGNATURE` before processing a delivery. See [Match orders to your customers](/api/partner-api-webhooks).
Use `partner_external_user_id` to locate the customer and the webhook’s Showpass transaction identifier to update the correct order. Always verify `X-SHOWPASS-SIGNATURE` before processing a delivery. See [Match orders to your customers](/api/partner-api-webhooks).

## 6. Let the customer manage an order

Expand All @@ -103,7 +103,7 @@ POST /api/partner/orders/manage-link/

```json
{
"partner_user_id": "customer-42",
"partner_external_user_id": "customer-42",
"transaction_id": "showpass-transaction-id"
}
```
Expand Down
4 changes: 2 additions & 2 deletions src/docs-app/data/api/partner-api-order-manage-link.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ Authenticate the request with the HMAC scheme in the [Partner API overview](/api

```json
{
"partner_user_id": "customer-42",
"partner_external_user_id": "customer-42",
"transaction_id": "showpass-transaction-id"
}
```

Use the same `partner_user_id` used for checkout attribution. Store the Showpass `transaction_id` from the purchase webhook with your order record.
Use the same `partner_external_user_id` used for checkout attribution. Store the Showpass `transaction_id` from the purchase webhook with your order record.

## Response

Expand Down
8 changes: 4 additions & 4 deletions src/docs-app/data/api/partner-api-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ The Partner API connects a customer in your system to their Showpass purchase. I

## How a purchase is connected

1. Your backend [syncs the customer](/api/partner-api-users) using the stable ID from your system as `partner_user_id`.
1. Your backend [syncs the customer](/api/partner-api-users) using the stable ID from your system as `partner_external_user_id`.
2. Your application [discovers Showpass events by organization](/api/public-api-event-list-by-organization) and keeps the selected event `slug`.
3. Immediately before checkout, your backend [creates a customer attribution token](/api/partner-api-customer-attribution-token).
4. Your frontend passes the event slug and token to the [Ticket Purchase Widget](/sdk/ticket-purchase-widget).
Expand All @@ -28,9 +28,9 @@ See [Build a partner ticketing flow](/api/partner-api-integration-flow) for the

## Identity and authentication are separate

`partner_user_id` is your stable identifier for a customer. A `customer_attribution_token` carries that server-owned relationship into a Showpass checkout. The token provides purchase attribution only: it does not sign a customer in, prove their identity in the browser, or create a full Showpass session.
`partner_external_user_id` is your stable identifier for a customer. A `customer_attribution_token` carries that server-owned relationship into a Showpass checkout. The token provides purchase attribution only: it does not sign a customer in, prove their identity in the browser, or create a full Showpass session.

Partner credentials authenticate your backend. Never send the partner secret, `partner_user_id`, bearer tokens, or refresh tokens to the purchase widget.
Partner credentials authenticate your backend. Never send the partner secret, `partner_external_user_id`, bearer tokens, or refresh tokens to the purchase widget.

## Base URL and access

Expand Down Expand Up @@ -71,7 +71,7 @@ import time
import uuid

partner_secret = "your-partner-secret"
body = '{"partner_user_id":"customer-42"}'
body = '{"partner_external_user_id":"customer-42"}'
timestamp = str(int(time.time()))
nonce = str(uuid.uuid4())
path_and_query = "/api/partner/customer-attribution-token/"
Expand Down
14 changes: 7 additions & 7 deletions src/docs-app/data/api/partner-api-users.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,23 @@ Connect a customer record in your application to Showpass. Do this when the cust
POST /api/partner/users/
```

This is an idempotent server-to-server operation for a `partner_user_id` that already exists: Showpass reuses the existing customer link instead of creating another one.
This is an idempotent server-to-server operation for a `partner_external_user_id` that already exists: Showpass reuses the existing customer link instead of creating another one.

The profile fields are used when Showpass creates or safely links the customer. Repeating the request for an existing `partner_user_id` confirms and returns the current link; it does not update that customer’s Showpass profile.
The profile fields are used when Showpass creates or safely links the customer. Repeating the request for an existing `partner_external_user_id` confirms and returns the current link; it does not update that customer’s Showpass profile.

Authenticate the request with the HMAC scheme in the [Partner API overview](/api/partner-api-overview).

## Choose the customer ID

`partner_user_id` is the durable connection between your customer and their Showpass activity. Use an immutable database ID from your system. Do not use an email address or another value that can change.
`partner_external_user_id` is the durable connection between your customer and their Showpass activity. Use an immutable database ID from your system. Do not use an email address or another value that can change.

The same ID is returned in attributed webhooks and is required when creating a fresh checkout token or manage-order link.

## Request body

```json
{
"partner_user_id": "customer-42",
"partner_external_user_id": "customer-42",
"email": "buyer@example.com",
"email_verified": true,
"first_name": "Taylor",
Expand All @@ -33,7 +33,7 @@ The same ID is returned in attributed webhooks and is required when creating a f

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `partner_user_id` | string | Yes | Stable customer ID from your system, up to 255 characters. It is trimmed and lowercased. |
| `partner_external_user_id` | string | Yes | Stable customer ID from your system, up to 255 characters. It is trimmed and lowercased. |
| `email` | string | Yes | Customer email address, up to 128 characters. |
| `email_verified` | boolean | Yes | Whether your application has verified the email. When `true`, Showpass may safely link an existing Showpass customer with the same email. |
| `first_name` | string | No | First name, up to 32 characters. |
Expand All @@ -48,7 +48,7 @@ The endpoint returns `201` when it creates a customer link and `200` when it reu
```json
{
"partner_identity_id": 123,
"partner_user_id": "customer-42",
"partner_external_user_id": "customer-42",
"status": "active",
"link_reason": "created_user",
"venue_id": 456,
Expand All @@ -62,7 +62,7 @@ The token fields are included only when checkout attribution is enabled for the
`link_reason` explains how Showpass resolved the customer:

- `created_user`: Showpass created a customer and partner link.
- `reused_existing`: this `partner_user_id` was already linked.
- `reused_existing`: this `partner_external_user_id` was already linked.
- `email_auto_linked`: the verified email was safely linked to an existing Showpass customer.

Showpass returns a conflict instead of silently linking customers when the email, identity status, or organization scope is unsafe or ambiguous.
Expand Down
6 changes: 3 additions & 3 deletions src/docs-app/data/api/partner-api-webhooks.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ Showpass webhooks report purchases and post-purchase changes. For an attributed
"event_type": "invoice.purchase",
"data": {
"partner_slug": "your-partner",
"partner_user_id": "customer-42"
"partner_external_user_id": "customer-42"
}
}
```

Use `partner_user_id` to find the customer in your system. Use the webhook’s Showpass transaction identifier to find or create the corresponding order record.
Use `partner_external_user_id` to find the customer in your system. Use the webhook’s Showpass transaction identifier to find or create the corresponding order record.

The Partner fields extend the existing event-specific `data` object. They do not replace the normal invoice, customer, ticket, or transaction fields documented for that webhook.

Expand Down Expand Up @@ -40,6 +40,6 @@ Process deliveries idempotently using the webhook event identifier or the equiva

## When Partner fields are absent

Showpass includes Partner fields only when it can resolve one clear Partner customer for the order. If no attribution exists—or the match is ambiguous—the normal webhook is still delivered without `partner_slug` and `partner_user_id`.
Showpass includes Partner fields only when it can resolve one clear Partner customer for the order. If no attribution exists—or the match is ambiguous—the normal webhook is still delivered without `partner_slug` and `partner_external_user_id`.

Treat missing Partner fields as an unattributed Showpass order. Do not infer the Partner customer from buyer email alone.
8 changes: 4 additions & 4 deletions src/docs-app/data/partnerApiExamplesMap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ const partnerApiExamplesMap: Record<string, ApiExamplesData> = {
description: `Connect a customer in your system to Showpass. ${partnerHmacSigningNote}`,
examples: partnerHmacExamples(
"/api/partner/users/",
'{"partner_user_id":"customer-42","email":"customer@example.com","email_verified":true}',
'{"partner_external_user_id":"customer-42","email":"customer@example.com","email_verified":true}',
),
response: {
status: 201,
body: {
partner_identity_id: 123,
partner_user_id: "customer-42",
partner_external_user_id: "customer-42",
status: "active",
link_reason: "created_user",
venue_id: 456,
Expand All @@ -30,7 +30,7 @@ const partnerApiExamplesMap: Record<string, ApiExamplesData> = {
description: "Create checkout attribution for a connected customer",
examples: partnerHmacExamples(
"/api/partner/customer-attribution-token/",
'{"partner_user_id":"customer-42"}',
'{"partner_external_user_id":"customer-42"}',
),
response: {
status: 201,
Expand All @@ -46,7 +46,7 @@ const partnerApiExamplesMap: Record<string, ApiExamplesData> = {
description: "Send a customer to their completed Showpass order",
examples: partnerHmacExamples(
"/api/partner/orders/manage-link/",
'{"partner_user_id":"customer-42","transaction_id":"transaction-id"}',
'{"partner_external_user_id":"customer-42","transaction_id":"transaction-id"}',
),
response: {
status: 201,
Expand Down
2 changes: 1 addition & 1 deletion src/docs-app/data/seoData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ export const seoDataMap: Record<string, SEOData> = {
"/api/partner-api-users": {
title: "Sync a Customer - Showpass Partner API",
description: "Connect a customer in your application to Showpass using a stable partner customer ID.",
keywords: "showpass partner customer api, customer identity sync, partner user id, hmac api authentication"
keywords: "showpass partner customer api, customer identity sync, partner external user id, hmac api authentication"
},
"/api/partner-api-customer-attribution-token": {
title: "Create Checkout Attribution - Showpass Partner API",
Expand Down
2 changes: 1 addition & 1 deletion src/docs-app/data/webhooks/01-webhooks-introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Showpass maintains delivery logs showing success/failure status for each webhook
## Partner attribution

Supported Partner integrations can optionally receive `partner_slug` and
`partner_user_id` in webhook payloads. This uses the existing webhook events and
`partner_external_user_id` in webhook payloads. This uses the existing webhook events and
URL.
See [Partner attribution in webhooks](/api/partner-api-webhooks) for details.

Expand Down