Skip to main content

Merchant Service (2026-08-09.2745644872)

Download OpenAPI specification:Download

Merchant-facing API. Endpoints for listing accessible merchants, reading/updating the merchant profile, and managing communication endpoints — the shared inboxes that receive merchant-level notifications.

List merchants accessible to the current user

Returns merchants the authenticated user can access based on their Keycloak token.

Authorizations:
idp

Responses

Response samples

Content type
application/json
{
  • "merchants": [
    ]
}

Get merchant profile

Returns the full profile of the active merchant identified by the x-logitrail-merchant-id header.

Authorizations:
idp
header Parameters
x-logitrail-merchant-id
required
string non-empty

Logitrail's Merchant ID.

Responses

Response samples

Content type
application/json
{
  • "merchant_profile": {
    }
}

Update merchant profile

Updates editable fields of the active merchant profile. PATCH semantics — only supplied fields are updated. Read-only fields (id, status, invoicing.payment_term_days, logo_url) are not accepted.

Authorizations:
idp
header Parameters
x-logitrail-merchant-id
required
string non-empty

Logitrail's Merchant ID.

Responses

Response samples

Content type
application/json
{
  • "merchant_profile": {
    }
}

List merchant communication endpoints

Returns the shared-inbox contact records (email/SMS) configured for the active merchant.

Authorizations:
idp
header Parameters
x-logitrail-merchant-id
required
string non-empty

Logitrail's Merchant ID.

Responses

Response samples

Content type
application/json
{
  • "endpoints": [
    ]
}

Create a merchant communication endpoint

Adds a shared-inbox contact record to the active merchant. Admin attestation only — no address verification.

Authorizations:
idp
header Parameters
x-logitrail-merchant-id
required
string non-empty

Logitrail's Merchant ID.

Request Body schema: application/json
channel
required
string
Enum: "email" "sms"
address
required
string non-empty

Delivery address for this channel.

label
string non-empty

Human-readable label.

locale
string

Optional per-endpoint locale override.

Responses

Request samples

Content type
application/json
{
  • "channel": "email",
  • "address": "string",
  • "label": "string",
  • "locale": "string"
}

Response samples

Content type
application/json
{
  • "endpoint": {
    }
}

Update a merchant communication endpoint

Partially updates address, label, or locale override for one endpoint. Channel is immutable after creation.

Authorizations:
idp
header Parameters
x-logitrail-merchant-id
required
string non-empty

Logitrail's Merchant ID.

Request Body schema: application/json
address
string non-empty

Updated delivery address.

label
string non-empty

Updated label.

string or null

Updated locale override, or null to clear it.

Responses

Request samples

Content type
application/json
{
  • "address": "string",
  • "label": "string",
  • "locale": "string"
}

Response samples

Content type
application/json
{
  • "endpoint": {
    }
}

Delete a merchant communication endpoint

Removes the contact record. Existing per-type subscription rows for this endpoint are not cleaned up.

Authorizations:
idp
header Parameters
x-logitrail-merchant-id
required
string non-empty

Logitrail's Merchant ID.

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "error_code": "VALIDATION_ERROR",
  • "validation_errors": [
    ]
}

Subscribe a merchant communication endpoint to a type

Sets enabled/channels/cadence for one communication type on one shared-inbox endpoint. Rejects channels or cadence outside the permitted set and opting out of a type where optOutAllowed is false.

Authorizations:
idp
header Parameters
x-logitrail-merchant-id
required
string non-empty

Logitrail's Merchant ID.

Request Body schema: application/json
enabled
required
boolean
channels
required
Array of strings
Items Enum: "email" "sms"
cadence
required
string
Enum: "instant" "daily" "weekly"

Responses

Request samples

Content type
application/json
{
  • "enabled": true,
  • "channels": [
    ],
  • "cadence": "instant"
}

Response samples

Content type
application/json
{
  • "typeKey": "string",
  • "enabled": true,
  • "channels": [
    ],
  • "cadence": "string",
  • "updatedAt": "string"
}