openapi: 3.0.3 info: title: UP42 Catalog Webhooks API description: 'The UP42 API is the programmatic surface of the UP42 geospatial marketplace and developer platform, operated by Airbus Defence and Space. It covers the full Earth observation workflow: searching the archive (Catalog), commissioning new satellite acquisitions (Tasking), estimating/placing/tracking Orders, storing and downloading results as cloud-native Assets, browsing storage through a STAC-compliant data management API, running Processing/analytics, and receiving order and job status changes via Webhooks. All requests go to https://api.up42.com and are authenticated with an OAuth2 Bearer access token. Access tokens are short-lived (about 5 minutes) and are obtained either from a UP42 API key or from account credentials via the UP42 authentication server (https://auth.up42.com/realms/public/protocol/openid-connect/token, grant_type password or client_credentials, client_id up42-api). Most ordering, storage, and processing operations are scoped to a workspace by its workspaceId. Endpoint accuracy: paths marked `x-up42-endpoint-status: confirmed` were verified against the UP42 developer documentation (docs.up42.com / developer.up42.com). Paths marked `modeled` are named operations from the UP42 API reference whose exact REST path/method were reconstructed from documentation and the UP42 Python SDK, and should be re-verified against the live reference during reconciliation.' version: '2.0' contact: name: UP42 Support url: https://up42.com/company/contact-us termsOfService: https://up42.com/legal/terms-and-conditions servers: - url: https://api.up42.com description: UP42 production API security: - bearerAuth: [] tags: - name: Webhooks description: Register HTTPS endpoints for order and job status events. paths: /v2/webhooks: get: operationId: listWebhooks tags: - Webhooks summary: Get webhooks description: Lists the webhooks registered for your account. x-up42-endpoint-status: modeled responses: '200': description: A list of webhooks. content: application/json: schema: $ref: '#/components/schemas/WebhookList' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createWebhook tags: - Webhooks summary: Create a webhook description: 'Registers a new webhook: a name, a unique HTTPS URL to receive events, a secret used to sign the payload, and the event types that trigger it.' x-up42-endpoint-status: modeled requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WebhookInput' responses: '201': description: The created webhook. content: application/json: schema: $ref: '#/components/schemas/Webhook' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/ValidationError' /v2/webhooks/{webhookId}: parameters: - name: webhookId in: path required: true schema: type: string format: uuid get: operationId: getWebhook tags: - Webhooks summary: Get a webhook description: Retrieves a single webhook by ID. x-up42-endpoint-status: modeled responses: '200': description: The requested webhook. content: application/json: schema: $ref: '#/components/schemas/Webhook' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' put: operationId: updateWebhook tags: - Webhooks summary: Update a webhook description: Replaces the configuration of an existing webhook. x-up42-endpoint-status: modeled requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WebhookInput' responses: '200': description: The updated webhook. content: application/json: schema: $ref: '#/components/schemas/Webhook' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: operationId: deleteWebhook tags: - Webhooks summary: Delete a webhook description: Removes a webhook so it no longer receives events. x-up42-endpoint-status: modeled responses: '204': description: The webhook was deleted. '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /v2/webhooks/events: get: operationId: listWebhookEvents tags: - Webhooks summary: Get webhook events description: Lists the event types that a webhook can subscribe to (for example order.status and job.status changes). x-up42-endpoint-status: modeled responses: '200': description: A list of available webhook event types. content: application/json: schema: type: object additionalProperties: true '401': $ref: '#/components/responses/Unauthorized' components: schemas: WebhookInput: type: object required: - name - url - events properties: name: type: string url: type: string format: uri description: The HTTPS endpoint that receives events. events: type: array items: type: string description: e.g. order.status, job.status. secret: type: string description: Secret used to sign the event payload signature header. active: type: boolean default: true Webhook: allOf: - $ref: '#/components/schemas/WebhookInput' - type: object properties: id: type: string format: uuid createdAt: type: string format: date-time WebhookList: type: object properties: content: type: array items: $ref: '#/components/schemas/Webhook' Error: type: object properties: title: type: string status: type: integer detail: type: string responses: ValidationError: description: The request payload failed validation. content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Missing or invalid access token. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: 'OAuth2 Bearer access token. Obtain a token from a UP42 API key or account credentials via https://auth.up42.com/realms/public/protocol/openid-connect/token (client_id up42-api). Access tokens are short-lived (about 5 minutes); refresh as needed. Pass as `Authorization: Bearer YOUR_ACCESS_TOKEN`.'