openapi: 3.0.3 info: title: SparkPost Webhooks API description: Configure real-time HTTP push notifications for email events (deliveries, bounces, opens, clicks, spam complaints). Supports batched event payloads and retry logic. version: 1.0.0 contact: name: SparkPost Developer Support url: https://developers.sparkpost.com/api/webhooks/ license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 servers: - url: https://api.sparkpost.com/api/v1 description: SparkPost Production API security: - ApiKeyAuth: [] paths: /webhooks: post: operationId: createWebhook summary: Create a Webhook description: Create a new webhook to receive real-time event notifications via HTTP POST. tags: - Webhooks requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WebhookRequest' responses: '200': description: Webhook created content: application/json: schema: $ref: '#/components/schemas/WebhookResponse' '400': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' get: operationId: listWebhooks summary: List All Webhooks description: Retrieve a list of all configured webhooks. tags: - Webhooks parameters: - name: timezone in: query required: false description: Timezone for date fields (default UTC) schema: type: string default: UTC responses: '200': description: List of webhooks content: application/json: schema: type: object properties: results: type: array items: $ref: '#/components/schemas/WebhookDetails' /webhooks/{id}: get: operationId: getWebhook summary: Retrieve a Webhook description: Retrieve details about a specific webhook. tags: - Webhooks parameters: - name: id in: path required: true description: Webhook ID schema: type: string - name: timezone in: query required: false description: Timezone for date fields (default UTC) schema: type: string default: UTC responses: '200': description: Webhook details content: application/json: schema: $ref: '#/components/schemas/WebhookResponse' put: operationId: updateWebhook summary: Update a Webhook description: Update configuration for an existing webhook. tags: - Webhooks parameters: - name: id in: path required: true description: Webhook ID schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WebhookUpdateRequest' responses: '200': description: Webhook updated delete: operationId: deleteWebhook summary: Delete a Webhook description: Remove a webhook configuration. tags: - Webhooks parameters: - name: id in: path required: true description: Webhook ID schema: type: string responses: '204': description: Webhook deleted /webhooks/{id}/validate: post: operationId: validateWebhook summary: Validate a Webhook description: Send a test event batch to the webhook target to validate connectivity. tags: - Webhooks parameters: - name: id in: path required: true description: Webhook ID schema: type: string requestBody: required: false content: application/json: schema: type: array description: Sample event batch to send items: type: object responses: '200': description: Validation result /webhooks/{id}/batch-status: get: operationId: getWebhookBatchStatus summary: Retrieve Batch Status Information description: Retrieve delivery status information for recent event batches sent to this webhook. tags: - Webhooks parameters: - name: id in: path required: true description: Webhook ID schema: type: string - name: limit in: query required: false description: Maximum number of batch status records to return (default 1000) schema: type: integer default: 1000 responses: '200': description: Batch status records /webhooks/events/documentation: get: operationId: getWebhookEventsDocumentation summary: Events Documentation description: Retrieve documentation for all event types available for webhook delivery. tags: - Webhooks responses: '200': description: Event type documentation /webhooks/events/samples: get: operationId: getWebhookEventSamples summary: Event Samples description: Retrieve sample payloads for specific event types. tags: - Webhooks parameters: - name: events in: query required: false description: Comma-delimited list of event types schema: type: string responses: '200': description: Sample event payloads components: securitySchemes: ApiKeyAuth: type: apiKey in: header name: Authorization schemas: WebhookRequest: type: object required: - name - target - events properties: name: type: string description: Human-readable name for the webhook target: type: string format: uri description: HTTP or HTTPS URL to receive webhook POST events events: type: array items: type: string description: List of event types to subscribe to active: type: boolean default: true description: Whether the webhook is active custom_headers: type: object additionalProperties: type: string description: Custom HTTP headers to include in webhook requests exception_subaccounts: type: array items: type: integer description: Subaccount IDs to exclude from this webhook auth_type: type: string enum: [none, basic, oauth2] default: none description: Authentication type for webhook requests auth_request_details: type: object description: OAuth 2.0 configuration (required if auth_type=oauth2) properties: url: type: string format: uri body: type: object auth_credentials: type: object description: Credentials for basic auth (required if auth_type=basic) properties: username: type: string password: type: string WebhookUpdateRequest: type: object properties: name: type: string target: type: string format: uri events: type: array items: type: string active: type: boolean custom_headers: type: object additionalProperties: type: string exception_subaccounts: type: array items: type: integer subaccount_id: type: integer auth_type: type: string enum: [none, basic, oauth2] auth_request_details: type: object auth_credentials: type: object WebhookDetails: type: object properties: id: type: string name: type: string target: type: string events: type: array items: type: string active: type: boolean auth_type: type: string custom_headers: type: object last_successful: type: string format: date-time last_failure: type: string format: date-time WebhookResponse: type: object properties: results: $ref: '#/components/schemas/WebhookDetails' ErrorResponse: type: object properties: errors: type: array items: type: object properties: message: type: string code: type: string description: type: string