openapi: 3.1.0
info:
title: Event Subscriptions API
version: 3.0.0
description: >-
**BETA** - The Event Subscriptions API allows you to subscribe to parcel
events and have them delivered to external endpoints such as webhooks or
Klaviyo.
This API uses a two-part model:
- **Connections** define _where_ events are delivered (e.g., a webhook URL
or a Klaviyo account).
- **Subscriptions** define _which_ events are routed to a connection.
All resources are scoped to the authenticated user's organization.
contact:
name: Sendcloud API Support
email: contact@sendcloud.com
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://panel.sendcloud.sc/api/v3
description: Sendcloud Production
tags:
- name: Connections
- name: Subscriptions
- name: OAuth2
- name: Broadcast
- name: Events
paths:
/event-subscriptions/connections:
post:
summary: Create a connection
description: >-
Create a new connection to an external endpoint where event
notifications will be delivered.
tags:
- Connections
operationId: sc-public-v3-scp-post-create_connection
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/create-a-connection
content: >-
Create a new connection that defines an external endpoint for event
delivery.
**Webhook connections** require a `url` and optionally authentication
configuration. Supported authentication types are `none`, `bearer`,
`basic`, and `api_key`.
**Klaviyo connections** require only the `type` field set to `klaviyo`
with an empty `configuration` object. After creating the connection,
use the [Start OAuth2
authorization](/api/v3/event-subscriptions/start-oauth2-authorization)
endpoint to connect your Klaviyo account.
Webhook URLs must be publicly accessible and respond with a `2xx` status code to acknowledge event delivery.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/connection-create-request'
examples:
WebhookConnection:
summary: Create a webhook connection with bearer auth
value:
type: webhook
configuration:
url: https://example.com/webhooks/sendcloud
auth_type: bearer
auth_config:
token: my-secret-token
extra_headers:
X-Custom-Header: my-value
WebhookConnectionNoAuth:
summary: Create a webhook connection without auth
value:
type: webhook
configuration:
url: https://example.com/webhooks/sendcloud
auth_type: none
KlaviyoConnection:
summary: Create a Klaviyo connection
value:
type: klaviyo
configuration: {}
responses:
'201':
description: Created
content:
application/json:
schema:
description: Connection created
type: object
properties:
data:
$ref: '#/components/schemas/connection'
examples:
WebhookCreated:
summary: Webhook connection created
value:
data:
id: 1
type: webhook
configuration:
url: https://example.com/webhooks/sendcloud
auth_type: bearer
extra_headers:
X-Custom-Header: my-value
created_at: '2026-01-15T10:30:00Z'
updated_at: '2026-01-15T10:30:00Z'
KlaviyoCreated:
summary: Klaviyo connection created
value:
data:
id: 2
type: klaviyo
configuration: {}
created_at: '2026-01-15T10:30:00Z'
updated_at: '2026-01-15T10:30:00Z'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
examples:
ValidationError:
summary: Validation error
value:
errors:
- detail: This field is required.
status: '400'
source:
pointer: /data/type
code: required
'429':
description: Throttled
get:
summary: List connections
description: Retrieve all connections for the authenticated user's organization.
tags:
- Connections
operationId: sc-public-v3-scp-get-list_connections
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/list-connections
parameters:
- schema:
type: string
enum:
- webhook
- klaviyo
in: query
name: connection_type
description: Filter by connection type.
responses:
'200':
description: OK
content:
application/json:
schema:
description: List of connections
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/connection'
required:
- data
examples:
ListConnections:
summary: List of connections
value:
data:
- id: 1
type: webhook
configuration:
url: https://example.com/webhooks/sendcloud
auth_type: bearer
extra_headers:
X-Custom-Header: my-value
created_at: '2026-01-15T10:30:00Z'
updated_at: '2026-01-15T10:30:00Z'
- id: 2
type: klaviyo
configuration: {}
created_at: '2026-01-16T09:00:00Z'
updated_at: '2026-01-16T09:00:00Z'
'429':
description: Throttled
/event-subscriptions/connections/{id}:
parameters:
- schema:
type: integer
in: path
name: id
description: The id of the connection.
required: true
get:
summary: Get a connection
description: Retrieve a specific connection by its id.
tags:
- Connections
operationId: sc-public-v3-scp-get-connection
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/get-a-connection
responses:
'200':
description: OK
content:
application/json:
schema:
description: Connection details
type: object
properties:
data:
$ref: '#/components/schemas/connection'
examples:
GetConnection:
summary: Get a webhook connection
value:
data:
id: 1
type: webhook
configuration:
url: https://example.com/webhooks/sendcloud
auth_type: bearer
extra_headers:
X-Custom-Header: my-value
created_at: '2026-01-15T10:30:00Z'
updated_at: '2026-01-15T10:30:00Z'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
patch:
summary: Update a connection
description: >-
Update an existing connection by its id. Only the fields provided in the
request body will be updated.
tags:
- Connections
operationId: sc-public-v3-scp-patch-connection
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/update-a-connection
content: >-
Update the configuration of an existing connection.
Only the fields provided in the request body will be updated. For
example, you can update just the webhook URL or authentication
settings without changing other fields.
Updating a connection's configuration may affect all subscriptions that use this connection.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/connection-update-request'
examples:
UpdateWebhookUrl:
summary: Update the webhook URL
value:
configuration:
url: https://example.com/webhooks/sendcloud-v2
UpdateAuth:
summary: Update authentication settings
value:
configuration:
auth_type: api_key
auth_config:
header_name: X-Api-Key
api_key: my-new-api-key
responses:
'200':
description: OK
content:
application/json:
schema:
description: Updated connection
type: object
properties:
data:
$ref: '#/components/schemas/connection'
examples:
UpdatedConnection:
summary: Updated webhook connection
value:
data:
id: 1
type: webhook
configuration:
url: https://example.com/webhooks/sendcloud-v2
auth_type: api_key
extra_headers:
X-Custom-Header: my-value
created_at: '2026-01-15T10:30:00Z'
updated_at: '2026-01-20T14:00:00Z'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
examples:
ValidationError:
summary: Validation error
value:
errors:
- detail: Enter a valid URL.
status: '400'
source:
pointer: /data/configuration/url
code: invalid
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
delete:
summary: Delete a connection
description: >-
Delete a specific connection by its id. Any subscriptions associated
with this connection will also be deleted.
tags:
- Connections
operationId: sc-public-v3-scp-delete-connection
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/delete-a-connection
content: |-
Delete a connection and all its associated subscriptions.
This action is irreversible. All subscriptions linked to this connection will be permanently deleted and event delivery will stop immediately.
responses:
'204':
description: No Content
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
/event-subscriptions/connections/{id}/authorization:
parameters:
- schema:
type: integer
in: path
name: id
description: The id of the connection to authorize.
required: true
post:
summary: Start OAuth2 authorization
description: >-
Initiate the OAuth2 authorization flow for a connection that requires it
(e.g., Klaviyo). Returns an authorization URL to redirect the user to.
tags:
- OAuth2
operationId: sc-public-v3-scp-post-start_authorization
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/start-oauth2-authorization
content: >-
Start the OAuth2 authorization flow for a Klaviyo connection. This
endpoint returns an authorization URL that the user should be
redirected to in their browser.
After the user authorizes access, the OAuth provider will redirect
back to the Sendcloud callback URL, completing the connection setup.
Use the [Create a connection](/api/v3/event-subscriptions/create-a-connection) endpoint with `type: "klaviyo"`.
Call this endpoint to get the authorization URL.
Open the `authorization_url` in the user's browser to complete the OAuth2 flow.
responses:
'200':
description: OK
content:
application/json:
schema:
description: OAuth2 authorization URL
type: object
properties:
data:
$ref: '#/components/schemas/connection-authorization-response'
examples:
AuthorizationUrl:
summary: OAuth2 authorization URL
value:
data:
authorization_url: >-
https://www.klaviyo.com/oauth/authorize?client_id=sendcloud&response_type=code&redirect_uri=https%3A%2F%2Fpanel.sendcloud.sc%2Fapi%2Fv3%2Fevent-subscriptions%2Fconnections%2Fauthorization%2Fcallback&state=abc123
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
/event-subscriptions/subscriptions:
post:
summary: Create a subscription
description: >-
Create a new subscription that routes events of a specific type to a
connection.
tags:
- Subscriptions
operationId: sc-public-v3-scp-post-create_subscription
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/create-a-subscription
content: >-
Create a subscription that routes a specific event type to a
connection for delivery.
A subscription links an event type (e.g., `parcels.event.created`) to
a connection endpoint. When the event occurs, the event payload is
delivered to the connection's configured endpoint.
Subscriptions are active by default. Set `is_active` to `false` to create a paused subscription.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/subscription-create-request'
examples:
CreateSubscription:
summary: Create a subscription for parcel events
value:
connection_id: 1
event_type: parcels.event.created
is_active: true
responses:
'201':
description: Created
content:
application/json:
schema:
description: Subscription created
type: object
properties:
data:
$ref: '#/components/schemas/subscription'
examples:
SubscriptionCreated:
summary: Subscription created
value:
data:
id: 1
connection_id: 1
event_type: parcels.event.created
is_active: true
created_at: '2026-01-15T11:00:00Z'
updated_at: '2026-01-15T11:00:00Z'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
examples:
ValidationError:
summary: Validation error
value:
errors:
- detail: This field is required.
status: '400'
source:
pointer: /data/connection_id
code: required
'429':
description: Throttled
get:
summary: List subscriptions
description: Retrieve all subscriptions for the authenticated user's organization.
tags:
- Subscriptions
operationId: sc-public-v3-scp-get-list_subscriptions
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/list-subscriptions
parameters:
- schema:
type: string
in: query
name: event_type
description: Filter by event type.
- schema:
type: boolean
in: query
name: is_active
description: Filter by active status.
responses:
'200':
description: OK
content:
application/json:
schema:
description: List of subscriptions
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/subscription'
required:
- data
examples:
ListSubscriptions:
summary: List of subscriptions
value:
data:
- id: 1
connection_id: 1
event_type: parcels.event.created
is_active: true
created_at: '2026-01-15T11:00:00Z'
updated_at: '2026-01-15T11:00:00Z'
- id: 2
connection_id: 2
event_type: parcels.event.created
is_active: false
created_at: '2026-01-16T09:15:00Z'
updated_at: '2026-01-16T09:15:00Z'
'429':
description: Throttled
/event-subscriptions/subscriptions/{id}:
parameters:
- schema:
type: integer
in: path
name: id
description: The id of the subscription.
required: true
get:
summary: Get a subscription
description: Retrieve a specific subscription by its id.
tags:
- Subscriptions
operationId: sc-public-v3-scp-get-subscription
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/get-a-subscription
responses:
'200':
description: OK
content:
application/json:
schema:
description: Subscription details
type: object
properties:
data:
$ref: '#/components/schemas/subscription'
examples:
GetSubscription:
summary: Get a subscription
value:
data:
id: 1
connection_id: 1
event_type: parcels.event.created
is_active: true
created_at: '2026-01-15T11:00:00Z'
updated_at: '2026-01-15T11:00:00Z'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
patch:
summary: Update a subscription
description: >-
Update an existing subscription by its id. Only the fields provided in
the request body will be updated.
tags:
- Subscriptions
operationId: sc-public-v3-scp-patch-subscription
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/update-a-subscription
content: >-
Update an existing subscription. You can change the connection, event
type, or toggle the active state.
Set `is_active` to `false` to pause event delivery without deleting the subscription.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/subscription-update-request'
examples:
PauseSubscription:
summary: Pause a subscription
value:
is_active: false
ChangeConnection:
summary: Route events to a different connection
value:
connection_id: 2
responses:
'200':
description: OK
content:
application/json:
schema:
description: Updated subscription
type: object
properties:
data:
$ref: '#/components/schemas/subscription'
examples:
UpdatedSubscription:
summary: Updated subscription
value:
data:
id: 1
connection_id: 2
event_type: parcels.event.created
is_active: false
created_at: '2026-01-15T11:00:00Z'
updated_at: '2026-01-20T14:30:00Z'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
delete:
summary: Delete a subscription
description: >-
Delete a specific subscription by its id. Event delivery for this
subscription will stop immediately.
tags:
- Subscriptions
operationId: sc-public-v3-scp-delete-subscription
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/delete-a-subscription
responses:
'204':
description: No Content
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
/event-subscriptions/broadcast/test/{subscription_id}:
parameters:
- schema:
type: integer
in: path
name: subscription_id
description: The id of the subscription to send a test event to.
required: true
post:
summary: Broadcast test event
description: >-
Send a test event to the connection endpoint configured for a specific
subscription. Use this to verify that your connection is set up
correctly before relying on it for production events.
tags:
- Broadcast
operationId: sc-public-v3-scp-post-test_broadcast
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/test-event-delivery
content: >-
Send a test event to the connection endpoint configured for this
subscription. This is useful for verifying that your webhook URL or
Klaviyo integration is set up correctly.
The test event will contain a sample payload matching the
subscription's event type.
The test broadcast will use the same authentication and headers configured on the connection.
responses:
'200':
description: OK
content:
application/json:
schema:
description: Test broadcast result
type: object
properties:
data:
$ref: '#/components/schemas/broadcast-result'
examples:
SuccessfulBroadcast:
summary: Successful test broadcast
value:
data:
success: true
status_code: 200
response_body: OK
FailedBroadcast:
summary: Failed test broadcast
value:
data:
success: false
status_code: 500
response_body: Internal Server Error
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
webhooks:
ParcelEventCreated:
post:
operationId: sc-public-v3-event-subscriptions-parcel_event_created
summary: Parcel event created
description: >-
Delivered to your connection endpoint when a parcel tracking event
occurs (e.g., a status change such as shipped, delivered, or returned).
Subscribe to this event type using `parcels.event.created` when creating
a subscription.
x-mint:
href: /api/v3/event-subscriptions/parcel-event-created
tags:
- Events
security: []
requestBody:
description: Event data delivered to your endpoint
content:
application/json:
schema:
$ref: '#/components/schemas/ParcelEventCreatedPayload'
examples:
InTransit:
summary: Parcel in transit
value:
event_type: parcels.event.created
data:
parcel:
parcel_id: 12345678
tracking_number: 3SYZXG132912330
carrier_code: dpd
announced_at: '2026-01-15T10:00:00Z'
event:
event_type: carrier
timestamp: '2026-01-15T10:30:00Z'
phase: in_transit
exception: none
status_type: success
sub_status: none
description: Parcel is on its way
end_of_tracking: false
is_offered: false
is_carrier_responsible: null
is_returned: false
location_details:
city: Eindhoven
country: NL
house_number: null
postal_code: null
street: null
service_point_id: null
depot: null
extra_data: null
Delivered:
summary: Parcel delivered
value:
event_type: parcels.event.created
data:
parcel:
parcel_id: 12345678
tracking_number: 3SYZXG132912330
carrier_code: dpd
announced_at: '2026-01-15T10:00:00Z'
event:
event_type: carrier
timestamp: '2026-01-16T14:22:00Z'
phase: delivered
exception: none
status_type: success
sub_status: none
description: Parcel has been delivered
end_of_tracking: true
is_offered: true
is_carrier_responsible: null
is_returned: false
location_details: null
extra_data: null
responses:
'200':
description: Return a 2xx status to acknowledge receipt of the event.
components:
schemas:
ParcelEventCreatedPayload:
type: object
description: >-
Event payload delivered to your endpoint when a parcel tracking event
occurs.
required:
- event_type
- data
properties:
event_type:
type: string
description: The event type identifier.
example: parcels.event.created
enum:
- parcels.event.created
data:
type: object
description: The event payload.
required:
- parcel
- event
properties:
parcel:
$ref: '#/components/schemas/WebhookParcelData'
event:
$ref: '#/components/schemas/WebhookEventData'
WebhookParcelData:
type: object
description: Parcel identifiers included in event deliveries.
required:
- parcel_id
- carrier_code
properties:
parcel_id:
type: integer
description: Sendcloud parcel identifier.
example: 12345678
tracking_number:
type:
- string
- 'null'
description: Carrier-issued tracking number.
example: 3SYZXG132912330
carrier_code:
type: string
description: Short carrier code (e.g. `dpd`, `dhl`, `postnl`).
example: dpd
announced_at:
type:
- string
- 'null'
format: date-time
description: >-
ISO 8601 timestamp of when the carrier was announced for this
parcel.
example: '2026-01-15T10:00:00Z'
WebhookEventData:
type: object
description: Parcel tracking event data.
required:
- event_type
- timestamp
- phase
- exception
- status_type
- sub_status
properties:
event_type:
$ref: '#/components/schemas/parcel-event-type'
timestamp:
type: string
format: date-time
description: ISO 8601 timestamp of when the event occurred.
example: '2026-01-15T10:30:00Z'
phase:
$ref: '#/components/schemas/parcel-event-phase'
exception:
$ref: '#/components/schemas/parcel-event-exception'
status_type:
$ref: '#/components/schemas/parcel-event-status-type'
sub_status:
$ref: '#/components/schemas/parcel-event-sub-status'
description:
type:
- string
- 'null'
description: Human-readable carrier description of the event.
example: Parcel is on its way
end_of_tracking:
type:
- boolean
- 'null'
description: True when there will be no further tracking updates.
example: false
is_offered:
type:
- boolean
- 'null'
description: True when the parcel was offered for delivery.
example: false
is_carrier_responsible:
type:
- boolean
- 'null'
description: True when the carrier is responsible for the event.
example: null
is_returned:
type:
- boolean
- 'null'
description: True when this event belongs to a return shipment.
example: false
location_details:
oneOf:
- $ref: '#/components/schemas/WebhookLocationData'
- type: 'null'
description: Location where the event occurred, if available.
extra_data:
type:
- object
- 'null'
description: Additional carrier-specific data. Structure varies per carrier.
example: null
WebhookLocationData:
type: object
description: Location details associated with a carrier event.
properties:
city:
type:
- string
- 'null'
description: City where the event occurred.
example: Eindhoven
country:
type:
- string
- 'null'
description: ISO 3166-1 alpha-2 country code.
example: NL
house_number:
type:
- string
- 'null'
description: Street house number.
example: '10'
postal_code:
type:
- string
- 'null'
description: Postal / zip code.
example: 5611 EM
street:
type:
- string
- 'null'
description: Street name.
example: Stadhuisplein
service_point_id:
type:
- integer
- 'null'
description: Service point identifier, if applicable.
example: null
depot:
type:
- string
- 'null'
description: Carrier depot name, if applicable.
example: null
connection:
title: Connection
description: >-
A connection defines an external endpoint where event notifications are
delivered.
type: object
properties:
id:
type: integer
format: int64
minimum: 1
description: Unique identifier of the connection.
type:
type: string
description: The type of connection.
enum:
- webhook
- klaviyo
configuration:
type: object
description: >-
The configuration for the connection. The shape depends on the
connection type.
created_at:
type: string
format: date-time
description: >-
The date and time when the connection was created, in ISO 8601
format.
updated_at:
type: string
format: date-time
description: >-
The date and time when the connection was last updated, in ISO 8601
format.
connection-create-request:
title: Create Connection request
description: Request body for creating a new connection.
type: object
required:
- type
- configuration
properties:
type:
type: string
description: The type of connection.
enum:
- webhook
- klaviyo
configuration:
type: object
description: >-
The configuration for the connection. The shape depends on the
connection type.
For `webhook` connections, see the webhook configuration fields.
For `klaviyo` connections, configuration can be an empty object as
credentials are managed via OAuth2.
ErrorObject:
title: Error
type: object
description: Error in a JSON:API error format
properties:
id:
type: string
description: A unique identifier for the error.
links:
type: object
description: >-
A set of hyperlinks that provide additional information about the
error.
properties:
about:
type: string
description: A URL that provides additional information about the error.
status:
type: string
format: int32
description: The HTTP status code of the error.
minLength: 1
code:
type: string
description: A unique error code for the error, in snake case format.
minLength: 1
enum:
- unknown_field
- invalid
- forbidden
- invalid_choice
- min_value
- 'null'
- not_found
- required
- not_a_list
- non_field_errors
- authentication_failed
- validation_error
- parcel_announcement_error
title:
type: string
description: A short, human-readable summary of the error.
minLength: 1
detail:
type: string
description: A human-readable explanation of the error.
minLength: 1
source:
type: object
description: >-
An object that identifies the source of the error within the request
payload.
properties:
pointer:
type: string
description: >-
A `JSON` pointer to the location of the error within the request
payload.
parameter:
type: string
description: The name of the `query` parameter that caused the error.
header:
type: string
description: The name of the `header` parameter that caused the error.
meta:
type: object
description: Additional metadata about the error.
errors:
title: Errors
type: object
description: A standardized format for errors in JSON:API responses.
properties:
errors:
type:
- array
- object
items:
type: object
allOf:
- $ref: '#/components/schemas/ErrorObject'
required:
- status
- code
- detail
connection-update-request:
title: Update Connection request
description: >-
Request body for updating an existing connection. All fields are
optional.
type: object
properties:
type:
type: string
description: The type of connection.
enum:
- webhook
- klaviyo
configuration:
type: object
description: >-
The configuration for the connection. The shape depends on the
connection type.
For `webhook` connections, see the webhook configuration fields.
For `klaviyo` connections, configuration can be an empty object as
credentials are managed via OAuth2.
connection-authorization-response:
title: Authorization Response
description: >-
Response containing the OAuth2 authorization URL for connecting external
services like Klaviyo.
type: object
properties:
authorization_url:
type: string
format: uri
description: >-
The URL to redirect the user to for OAuth2 authorization with the
external service.
subscription:
title: Subscription
description: >-
A subscription routes a specific event type to a connection for
delivery.
type: object
properties:
id:
type: integer
format: int64
minimum: 1
description: Unique identifier of the subscription.
connection_id:
type: integer
format: int64
minimum: 1
description: >-
The identifier of the connection this subscription delivers events
to.
event_type:
type: string
description: The type of event this subscription listens for.
enum:
- parcels.event.created
is_active:
type: boolean
description: Whether the subscription is currently active and delivering events.
created_at:
type: string
format: date-time
description: >-
The date and time when the subscription was created, in ISO 8601
format.
updated_at:
type: string
format: date-time
description: >-
The date and time when the subscription was last updated, in ISO
8601 format.
subscription-create-request:
title: Create Subscription request
description: Request body for creating a new subscription.
type: object
required:
- connection_id
- event_type
properties:
connection_id:
type: integer
format: int64
minimum: 1
description: The identifier of the connection to deliver events to.
event_type:
type: string
description: The type of event to subscribe to.
enum:
- parcels.event.created
is_active:
type: boolean
description: >-
Whether the subscription should be active immediately. Defaults to
`true`.
default: true
subscription-update-request:
title: Update Subscription request
description: >-
Request body for updating an existing subscription. All fields are
optional.
type: object
properties:
connection_id:
type: integer
format: int64
minimum: 1
description: The identifier of the connection to deliver events to.
event_type:
type: string
description: The type of event to subscribe to.
enum:
- parcels.event.created
is_active:
type: boolean
description: Whether the subscription should be active.
broadcast-result:
title: Broadcast Result
description: >-
The result of a test event broadcast to a subscription's connection
endpoint.
type: object
properties:
success:
type: boolean
description: Whether the test event was successfully delivered.
status_code:
type: integer
description: The HTTP status code returned by the connection endpoint.
response_body:
type: string
description: The response body returned by the connection endpoint.
parcel-event-type:
type: string
title: Parcel Event Type
description: Classification of the event source.
enum:
- carrier
- internal
- calculated
- claim
example: carrier
parcel-event-phase:
type: string
title: Parcel Event Phase
description: Current delivery phase.
enum:
- accepted
- announced
- announcing
- attempted
- cancelled
- customs
- delivered
- delivery_forced
- dropped
- in_delivery
- in_transit
- labelled
- none
- no_label
- pup
- ready_to_send
- sorted
- unknown
example: in_transit
parcel-event-exception:
type: string
title: Parcel Event Exception
description: Exception on the current phase, or `none` when on the expected path.
enum:
- address_error
- announcement_failed
- cancellation_failed
- cancelled
- cancelled_upstream
- cancelling
- cancelling_upstream
- changed
- claim
- claimable
- customer_rejected
- customer_support
- customs_issue
- damaged
- delay_unknown
- delivery_delay
- dropoff_expiration
- handover_delay
- hold
- missing
- none
- non_conformity
- off_radar
- pup_expiration
- refused
- relabelled
- returned_sender
- sorting_delay
- unknown
example: none
parcel-event-status-type:
type: string
title: Parcel Event Status Type
description: Severity of the event.
enum:
- error
- success
- warning
example: success
parcel-event-sub-status:
type: string
title: Parcel Event Sub Status
description: Additional granularity within the phase/exception combination.
enum:
- accepted
- additional_information
- carrier
- company_closed
- connection_missed
- content
- cut_off
- damaged
- delay
- delivery_change
- disposed
- documents
- duplicate
- expired
- high_volume
- inaccessible
- incorrect_information
- in_progress
- late
- locker
- mailbox
- max_measure
- max_weight
- mechanical
- misrouted
- missort
- neighbour
- none
- not_home
- not_ordered
- one
- packaging
- parcel_found
- partly
- passed
- payment
- postal_box
- prohibited_item
- pup
- pup_closed
- receiver
- rejected
- requested
- resolved
- safeplace
- sender
- shop
- signature
- three
- traffic
- two
- undeliverable
- unknown
- unknown_receiver
- updated
- weather_conditions
example: none
securitySchemes:
HTTPBasicAuth:
type: http
description: >-
Basic Authentication using API key and secrets is currently the main
authentication mechanism.
scheme: basic
OAuth2ClientCreds:
type: oauth2
description: >-
OAuth2 is a standardized protocol for authorization that allows users to
share their private resources stored on one site with another site
without having to provide their credentials. OAuth2 Client Credentials
Grant workflow. This workflow is typically used for server-to-server
interactions that require authorization to access specific resources.
flows:
clientCredentials:
tokenUrl: https://account.sendcloud.com/oauth2/token/
scopes:
api: Default OAuth scope required to access Sendcloud API.