Prewave EUDR - Customers - Origin Requests API
Allows you to manage customer origin requests for products, including creating, updating, closing requests, and viewing requests per product.
Allows you to manage customer origin requests for products, including creating, updating, closing requests, and viewing requests per product.
openapi: 3.0.1
info:
title: Public Prewave Actions EUDR - Customers - Origin Requests API
description: 'Documentation of the Public Prewave API.
## What''s New
### Q1 2026 — Supplier Management, User Management, Actions and Feed
This quarter introduces major v2 upgrades, expanded administrative capabilities, and the new Actions API.
- **Core Releases:** Deployed Supplier Management API v2 and Feed API v2, alongside the all-new Actions API.
- **Enhanced Functionality:** Added robust identifier management, granular user and role configuration, and endpoints for managing supplier connection contacts.
- ⚠️ **Required Migration:** Legacy v1 endpoints for Suppliers and Sites Upsert have been deprecated. Developers must migrate existing integrations to v2 by **May 31, 2027** (original deadline was December 31, 2026).
📖 **[Read the Q1 2026 changelog](https://docs.prewave.com/en/articles/699847-q1-2026-public-api-updates)**
### Q2 2026 — Supplier Screening and External Scores
We have expanded our v2 documentation to include comprehensive integration guidance for supplier screening and validation workflows and identifier-based external score ingestion.
- **New Capabilities:** Added support for optional post-onboarding screening and validation during the create event.
- **External Scores:** Batch POST for multiple supplier sites, per-site history GET, and event-type discovery GET (`/public/v1/scores/externals` and `/public/v1/scores/externals/event-types`). Documented in OpenAPI when enabled for your organization.
- **Developer Resources:** Published new integration examples and detailed identifier validation rules to streamline your implementation process.
📖 **[Read the Q2 2026 changelog](https://docs.prewave.com/en/articles/699849-q2-2026-public-api-updates)**
### Q3 2026 — Scores Webhooks
To support event-driven architectures and eliminate the need for continuous API polling, we are introducing webhooks for score state changes later this year.
- **Event-Driven Architecture:** Register webhook URLs to receive real-time HTTP payloads whenever a supplier''s score updates, so you can drive immediate mitigation responses without polling the API.
- **Availability:** Comprehensive OpenAPI specifications and payload schemas will be published closer to the release date.
- **Note:** Schemas and behaviors are subject to refinement prior to general availability.
Documentation updates will be provided prior to release.
### Q4 2026 — Feed V2
We are enhancing Feed API v2 with additional capabilities on top of the existing `GET /public/v2/feed` contract (see Q1 changelog and OpenAPI for the current Feed v2 integration).
- **Availability:** Details will be announced before release.
- **Note:** Schemas and behaviors are subject to refinement prior to the official release.
Documentation updates will be provided prior to release.
---
## Authentication
Prewave’s public api uses *API tokens* to authenticate against our RESTful service. We’ll provide you an *API-token* that each
endpoint needs present as a http header.
To pass the token in a request, simply add it as a header-parameter with
* key = X-Auth-Token
* value = api-token
See an example in curl below where the api-token would be 12345678-90ab-cdef-1234-567890abcdef
```
curl --request GET \
--url https://REPLACE_WITH_SERVER/public/v1/target/prewave/3975230/alerts \
--header ''X-Auth-Token: 12345678-90ab-cdef-1234-567890abcdef''
```
---
## Manage API Tokens
Before you can obtain your API token, you''ll need the credentials for your API user. These credentials will be
sent to you as part of the company-onboarding. If you haven''t got your credentials yet, please reach out to
your sales-contact at Prewave or contact us via info@prewave.ai
To generate an API Token, navigate to https://www.prewave.com/management/api and log in with the
credentials of your API user. Then click at the button "Create New" and use your new api-token authentication as a header parameter.
You can create multiple API tokens and also remove existing API tokens on https://www.prewave.com/management/api.
API tokens do not expire, therefore you have to maintain the list of API tokens you are using manually.
---
## Default Rate Limits
We have two types of default rate limits. For increased access, please contact customer success.
| Type | Requests per 10 seconds | Requests per Minute |
|-----------------------------------|-------------------------|---------------------|
| GET requests | 100 | 500 |
| POST, PUT, PATCH, DELETE requests | 20 | 100 |
'
version: '1.0'
servers:
- url: https://api.prewave.com
description: Production Environment
security:
- Token authentication: []
tags:
- name: EUDR - Customers - Origin Requests
description: Allows you to manage customer origin requests for products, including creating, updating, closing requests, and viewing requests per product.
paths:
/public/v2/eudr/customers/origin-requests/{originRequestId}:
put:
tags:
- EUDR - Customers - Origin Requests
summary: Update origin request
description: "\n\nUpdate an existing origin request. Only requests in `Requested` status can be updated.\nAt least one of `requestedWeight` or `endDate` must be provided.\n- `requestedWeight` — update the requested weight for the origin request.\n- `endDate` — update the end date for the origin request.\n\n\n**Required permission:** `access_public_products`\n "
operationId: updateOriginRequest
parameters:
- name: originRequestId
in: path
description: The ID of the origin request.
required: true
schema:
type: integer
format: int32
example: 1001
requestBody:
description: Updated end date and/or requested weight. At least one field must be provided.
content:
application/json:
schema:
$ref: '#/components/schemas/PublicUpdateOriginRequestPayload'
examples:
Update weight and end date:
summary: Extend deadline and increase requested weight
description: Update weight and end date
value: '{"endDate":{"date":"2025-10-31","_datetype_":"Date"},"requestedWeight":1500.00}'
required: true
responses:
'200':
description: Origin request updated successfully.
'400':
description: Origin request cannot be updated.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDTO'
examples:
Missing update fields:
description: Missing update fields
value:
code: invalid_request
message: At least one of 'requestedWeight' or 'endDate' must be provided for update.
solution: Fix the request
Negative weight:
description: Negative weight
value:
code: invalid_request
message: Requested weight can not be zero or negative.
solution: Fix the request
End date in the past:
description: End date in the past
value:
code: invalid_request
message: End date must be in the future.
solution: Fix the request
'404':
description: Origin request not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDTO'
examples:
Origin request not found:
description: Origin request not found
value:
code: resource_not_found
message: 'Origin request #123 not found'
'403':
description: '403 Forbidden - Authentication or authorization failure. This status code is returned when: (1) the request lacks valid authentication credentials (missing or invalid X-Auth-Token header), or (2) the authenticated user does not have the required permission to access this resource.'
content:
application/json:
schema:
$ref: '#/components/schemas/AccessDeniedErrorDTO'
examples:
Access denied example:
summary: User lacks necessary permissions or authentication
value: "{\n \"loggedIn\": true,\n \"code\": \"access_denied\",\n \"message\": \"Access denied: you don't have necessary permissions to access this resource\",\n \"solution\": \"Contact support for appropriate permissions\"\n }"
'500':
description: 500 Internal Server Error - An unexpected error occurred on the server. The request may or may not have been processed.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDTO'
examples:
Error - Server Error:
summary: Unexpected server error
value: "{\n \"code\": \"internal_error\",\n \"message\": \"An unexpected error occurred\",\n \"solution\": \"Please try again later or contact support\"\n }"
'429':
description: '429 Too Many Requests - API rate limit exceeded. The request has been rejected because the rate limit for this endpoint has been exceeded. Default rate limits: GET requests - 100 per 10 seconds, 500 per minute; POST/PUT/PATCH/DELETE requests - 20 per 10 seconds, 100 per minute. For increased access, please contact customer success.'
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRateLimitResponse'
examples:
Rate limit exceeded example:
summary: API rate limit exceeded
value: "{\n \"error\": \"API rate limit exceeded\",\n \"message\": \"You have reached the maximum allowed requests. Please try again later or upgrade your plan for increased access\",\n \"requestLimit\": 20,\n \"requestCount\": 20,\n \"limits\": [\n {\n \"requestLimit\": 20,\n \"timeInSeconds\": 10\n },\n {\n \"requestLimit\": 100,\n \"timeInSeconds\": 60\n }\n ],\n \"currentTime\": \"2026-01-15T10:30:00\",\n \"nextResetAt\": \"2026-01-15T10:30:10\"\n }"
/public/v2/eudr/customers/origin-requests/{originRequestId}/close:
put:
tags:
- EUDR - Customers - Origin Requests
summary: Close origin request
description: "\n\nThe request can be closed only if it is in `Requested` status.\nClosing the request prevents any further updates or actions on it.\nOnce closed, the request status is set to `Answered` or `Canceled`:\n- **Answered** — at least one origin has been provided for the request.\n- **Canceled** — no origins have been provided for the request.\n\n\n**Required permission:** `access_public_products`\n "
operationId: closeOriginRequest
parameters:
- name: originRequestId
in: path
description: The ID of the origin request.
required: true
schema:
type: integer
format: int32
example: 1001
responses:
'200':
description: Origin request closed successfully.
'400':
description: Origin request cannot be closed.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDTO'
examples:
Not in Requested status:
description: Not in Requested status
value:
code: invalid_request
message: Origin request cannot be closed.
solution: Fix the request
Cannot be canceled:
description: Cannot be canceled
value:
code: invalid_request
message: Origin request cannot be canceled.
solution: Fix the request
'404':
description: Origin request not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDTO'
examples:
Origin request not found:
description: Origin request not found
value:
code: resource_not_found
message: 'Origin request #6 not found'
'403':
description: '403 Forbidden - Authentication or authorization failure. This status code is returned when: (1) the request lacks valid authentication credentials (missing or invalid X-Auth-Token header), or (2) the authenticated user does not have the required permission to access this resource.'
content:
application/json:
schema:
$ref: '#/components/schemas/AccessDeniedErrorDTO'
examples:
Access denied example:
summary: User lacks necessary permissions or authentication
value: "{\n \"loggedIn\": true,\n \"code\": \"access_denied\",\n \"message\": \"Access denied: you don't have necessary permissions to access this resource\",\n \"solution\": \"Contact support for appropriate permissions\"\n }"
'500':
description: 500 Internal Server Error - An unexpected error occurred on the server. The request may or may not have been processed.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDTO'
examples:
Error - Server Error:
summary: Unexpected server error
value: "{\n \"code\": \"internal_error\",\n \"message\": \"An unexpected error occurred\",\n \"solution\": \"Please try again later or contact support\"\n }"
'429':
description: '429 Too Many Requests - API rate limit exceeded. The request has been rejected because the rate limit for this endpoint has been exceeded. Default rate limits: GET requests - 100 per 10 seconds, 500 per minute; POST/PUT/PATCH/DELETE requests - 20 per 10 seconds, 100 per minute. For increased access, please contact customer success.'
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRateLimitResponse'
examples:
Rate limit exceeded example:
summary: API rate limit exceeded
value: "{\n \"error\": \"API rate limit exceeded\",\n \"message\": \"You have reached the maximum allowed requests. Please try again later or upgrade your plan for increased access\",\n \"requestLimit\": 20,\n \"requestCount\": 20,\n \"limits\": [\n {\n \"requestLimit\": 20,\n \"timeInSeconds\": 10\n },\n {\n \"requestLimit\": 100,\n \"timeInSeconds\": 60\n }\n ],\n \"currentTime\": \"2026-01-15T10:30:00\",\n \"nextResetAt\": \"2026-01-15T10:30:10\"\n }"
/public/v2/eudr/customers/origin-requests:
post:
tags:
- EUDR - Customers - Origin Requests
summary: Bulk request origins for products
description: "\n\nSend origin requests for products to suppliers. Suppliers are notified by in-app notification and email.\nAdditional email CCs and a comment can be provided in the payload.\nEvery supplier must have at least one contact to be notified.\nTo manage and fetch contacts, use the connection-contact endpoints.\n\n\n**Required permission:** `access_public_products`\n "
operationId: requestOrigins
requestBody:
description: Origin request creation payload with one or more product items.
content:
application/json:
schema:
$ref: '#/components/schemas/PublicCreateOriginRequestPayload'
examples:
Single product:
summary: Full request with weight, contacts, and references
description: Single product
value: '{"items":[{"productId":123,"endDate":{"date":"2025-09-30","_datetype_":"Date"},"requestedWeight":1000.50,"connectionContactIds":[1,2],"comment":"Please provide origin information for this shipment","references":[{"reference":"PO-2025-001","referenceType":"PurchaseOrder"},{"reference":"SHP-2025-042","referenceType":"ShipmentNumber"}]}]}'
Multiple products:
summary: Bulk request for two products in one call
description: Multiple products
value: '{"items":[{"productId":123,"endDate":{"date":"2025-09-30","_datetype_":"Date"},"requestedWeight":1000.50,"connectionContactIds":[1],"comment":"Urgent request for product origin","references":null},{"productId":456,"endDate":{"date":"2025-10-15","_datetype_":"Date"},"requestedWeight":500.25,"connectionContactIds":[2,3],"comment":null,"references":[{"reference":"PO-2025-002","referenceType":"PurchaseOrder"}]}]}'
Minimal:
summary: Only required field (productId)
description: Minimal
value: '{"items":[{"productId":123,"endDate":null,"requestedWeight":null,"connectionContactIds":null,"comment":null,"references":null}]}'
required: true
responses:
'200':
description: Origin requests processed. Check `succeeded` and `failed` for per-item results.
content:
application/json:
schema:
$ref: '#/components/schemas/PublicOriginRequestResult'
examples:
All succeeded:
summary: Every origin request was created
description: All succeeded
value: '{"succeeded":[{"id":1001,"productId":123,"createdAt":{"date":"2025-09-01T10:00:00","_datetype_":"DateTime"},"status":"Requested","references":[{"reference":"PO-2025-001","referenceType":"PurchaseOrder"}]},{"id":1002,"productId":456,"createdAt":{"date":"2025-09-01T10:00:00","_datetype_":"DateTime"},"status":"Requested","references":[]}],"failed":[],"status":"Succeeded"}'
Partial success:
summary: Some requests succeeded; failed items include error messages
description: Partial success
value: '{"succeeded":[{"id":1001,"productId":123,"createdAt":{"date":"2025-09-01T10:00:00","_datetype_":"DateTime"},"status":"Requested","references":[{"reference":"PO-2025-001","referenceType":"PurchaseOrder"}]}],"failed":[{"value":{"productId":789,"endDate":{"date":"2025-09-30","_datetype_":"Date"},"requestedWeight":200.00,"connectionContactIds":[4],"comment":null,"references":null},"message":"Product is inactive or not an inbound product"}],"status":"PartlySucceeded"}'
'422':
description: Origin request product unsupported, e.g. product inactive or not inbound.
content:
application/json:
schema:
$ref: '#/components/schemas/OriginRequestProductUnsupportedErrorDTO'
examples:
Product unsupported:
summary: Product is inactive or not an inbound product
description: Product unsupported
value:
code: origin_request_product_unsupported
message: Product with id 789 is inactive or not an inbound product
solution: Ensure the product is active and is an inbound product
'403':
description: '403 Forbidden - Authentication or authorization failure. This status code is returned when: (1) the request lacks valid authentication credentials (missing or invalid X-Auth-Token header), or (2) the authenticated user does not have the required permission to access this resource.'
content:
application/json:
schema:
$ref: '#/components/schemas/AccessDeniedErrorDTO'
examples:
Access denied example:
summary: User lacks necessary permissions or authentication
value: "{\n \"loggedIn\": true,\n \"code\": \"access_denied\",\n \"message\": \"Access denied: you don't have necessary permissions to access this resource\",\n \"solution\": \"Contact support for appropriate permissions\"\n }"
'500':
description: 500 Internal Server Error - An unexpected error occurred on the server. The request may or may not have been processed.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDTO'
examples:
Error - Server Error:
summary: Unexpected server error
value: "{\n \"code\": \"internal_error\",\n \"message\": \"An unexpected error occurred\",\n \"solution\": \"Please try again later or contact support\"\n }"
'429':
description: '429 Too Many Requests - API rate limit exceeded. The request has been rejected because the rate limit for this endpoint has been exceeded. Default rate limits: GET requests - 100 per 10 seconds, 500 per minute; POST/PUT/PATCH/DELETE requests - 20 per 10 seconds, 100 per minute. For increased access, please contact customer success.'
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRateLimitResponse'
examples:
Rate limit exceeded example:
summary: API rate limit exceeded
value: "{\n \"error\": \"API rate limit exceeded\",\n \"message\": \"You have reached the maximum allowed requests. Please try again later or upgrade your plan for increased access\",\n \"requestLimit\": 20,\n \"requestCount\": 20,\n \"limits\": [\n {\n \"requestLimit\": 20,\n \"timeInSeconds\": 10\n },\n {\n \"requestLimit\": 100,\n \"timeInSeconds\": 60\n }\n ],\n \"currentTime\": \"2026-01-15T10:30:00\",\n \"nextResetAt\": \"2026-01-15T10:30:10\"\n }"
/public/v2/eudr/customers/products/{productId}/origin-requests:
get:
tags:
- EUDR - Customers - Origin Requests
summary: Fetch customer origin requests per inbound product
description: "\nRetrieve a paginated list of origin requests for a specific inbound product.\n\nReturns origin requests created for the product, with optional filtering by reference and status.\nEach item includes status details when the request is answered, delayed, or rejected.\n\n**Use Cases**:\n- View all origin requests for a product\n- Track request status and supplier responses\n- Filter requests by reference or status\n\n**Pagination**:\n- Results are paginated (default: 10 items per page)\n- Use `page` and `size` query parameters to control pagination\n\n**Required permission:** `access_public_products` and `READ` on the product\n "
operationId: findCustomerOriginRequests
parameters:
- name: productId
in: path
description: The ID of the product.
required: true
schema:
type: integer
format: int32
example: 301
- name: page
in: query
description: Page number (0-based)
required: false
schema:
type: integer
default: 0
example: 0
- name: size
in: query
description: Page size
required: false
schema:
type: integer
default: 10
example: 10
- name: reference
in: query
description: Origin request reference
required: false
schema:
type: string
example: PO-2025-001
- name: status
in: query
description: Origin request status
required: false
schema:
type: string
enum:
- Requested
- Delayed
- Rejected
- Canceled
- Answered
responses:
'200':
description: Paginated list of customer origin requests for the product.
content:
application/json:
schema:
type: object
properties:
content:
type: array
items:
$ref: '#/components/schemas/PublicCustomerOriginRequest'
size:
type: integer
format: int32
number:
type: integer
format: int32
totalElements:
type: integer
format: int32
totalPages:
type: integer
format: int32
numberOfElements:
type: integer
format: int32
first:
type: boolean
last:
type: boolean
empty:
type: boolean
examples:
Origin requests page:
summary: Requested, answered, and delayed origin requests
description: Origin requests page
value: '{"content":[{"id":1001,"status":"Requested","createdAt":{"date":"2025-09-01T10:00:00","_datetype_":"DateTime"},"updatedAt":{"date":"2025-09-01T10:00:00","_datetype_":"DateTime"},"closedAt":null,"endDate":{"date":"2025-09-30","_datetype_":"Date"},"requestedWeight":1000.50,"providedWeight":null,"references":[{"reference":"PO-2025-001","referenceType":"PurchaseOrder"},{"reference":"SHP-2025-042","referenceType":"ShipmentNumber"}],"answeredStatusDetails":null,"delayedStatusDetails":null,"rejectStatusDetails":null},{"id":1002,"status":"Answered","createdAt":{"date":"2025-08-10T08:30:00","_datetype_":"DateTime"},"updatedAt":{"date":"2025-08-20T14:15:00","_datetype_":"DateTime"},"closedAt":{"date":"2025-08-20T14:15:00","_datetype_":"DateTime"},"endDate":{"date":"2025-08-31","_datetype_":"Date"},"requestedWeight":750.00,"providedWeight":720.25,"references":[{"reference":"PO-2025-002","referenceType":"PurchaseOrder"}],"answeredStatusDetails":{"originIds":[501,502],"supplierDDSReferences":["EU-SUP-67890","EU-SUP-67891"]},"delayedStatusDetails":null,"rejectStatusDetails":null},{"id":1003,"status":"Delayed","createdAt":{"date":"2025-09-05T09:00:00","_datetype_":"DateTime"},"updatedAt":{"date":"2025-09-12T11:30:00","_datetype_":"DateTime"},"closedAt":null,"endDate":{"date":"2025-10-15","_datetype_":"Date"},"requestedWeight":500.25,"providedWeight":null,"references":[{"reference":"PO-2025-003","referenceType":"PurchaseOrder"}],"answeredStatusDetails":null,"delayedStatusDetails":{"code":"LackOfInfo","reason":"Missing documents from supplier","comment":"Awaiting geolocation data and harvest period confirmation.","delayedUntil":{"date":"2025-10-05T12:00:00","_datetype_":"DateTime"}},"rejectStatusDetails":null}],"pageable":{"pageNumber":0,"pageSize":10,"sort":{"empty":true,"sorted":false,"unsorted":true},"offset":0,"paged":true,"unpaged":false},"totalPages":1,"totalElements":3,"last":true,"size":10,"number":0,"numberOfElements":3,"sort":{"empty":true,"sorted":false,"unsorted":true},"first":true,"empty":false}'
'403':
description: '403 Forbidden - Authentication or authorization failure. This status code is returned when: (1) the request lacks valid authentication credentials (missing or invalid X-Auth-Token header), or (2) the authenticated user does not have the required permission to access this resource.'
content:
application/json:
schema:
$ref: '#/components/schemas/AccessDeniedErrorDTO'
examples:
Access denied example:
summary: User lacks necessary permissions or authentication
value: "{\n \"loggedIn\": true,\n \"code\": \"access_denied\",\n \"message\": \"Access denied: you don't have necessary permissions to access this resource\",\n \"solution\": \"Contact support for appropriate permissions\"\n }"
'500':
description: 500 Internal Server Error - An unexpected error occurred on the server. The request may or may not have been processed.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDTO'
examples:
Error - Server Error:
summary: Unexpected server error
value: "{\n \"code\": \"internal_error\",\n \"message\": \"An unexpected error occurred\",\n \"solution\": \"Please try again later or contact support\"\n }"
'429':
description: '429 Too Many Requests - API rate limit exceeded. The request has been rejected because the rate limit for this endpoint has been exceeded. Default rate limits: GET requests - 100 per 10 seconds, 500 per minute; POST/PUT/PATCH/DELETE requests - 20 per 10 seconds, 100 per minute. For increased access, please contact customer success.'
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRateLimitResponse'
examples:
Rate limit exceeded example:
summary: API rate limit exceeded
value: "{\n \"error\": \"API rate limit exceeded\",\n \"message\": \"You have reached the maximum allowed requests. Please try again later or upgrade your plan for increased access\",\n \"requestLimit\": 100,\n \"requestCount\": 100,\n \"limits\": [\n {\n \"requestLimit\": 100,\n \"timeInSeconds\": 10\n },\n {\n \"requestLimit\": 500,\n \"timeInSeconds\": 60\n }\n ],\n \"currentTime\": \"2026-01-15T10:30:00\",\n \"nextResetAt\": \"2026-01-15T10:30:10\"\n }"
components:
schemas:
PublicOriginRequestDelayStatusDetails:
required:
- code
- comment
- delayedUntil
- reason
type: object
properties:
code:
type: string
description: Public origin request delay reason code.
example: LegallyBinding
enum:
- LegallyBinding
- LackOfInfo
- ProductComplexity
- Other
reason:
type: string
description: Human-readable reason for the delay.
example: Missing documents from supplier.
comment:
type: string
description: Additional comment for the delay.
example: Awaiting customs paperwork.
delayedUntil:
type: string
description: Timestamp until which the request is delayed (UTC).
format: date-time
example: null
description: Delay status details for a delayed origin request, including code, reason, comment, and delayed until timestamp.
example: null
PublicOriginRequestRefPayload:
required:
- referenceType
type: object
properties:
reference:
type: string
description: Reference label.
nullable: true
example: PO-2025-001
referenceType:
type: string
description: Public product reference type.
example: PurchaseOrder
enum:
- PurchaseOrder
- ShipmentNumber
- Other
description: Reference for an origin request, including label and type.
example: null
PublicOriginReque
# --- truncated at 32 KB (45 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/prewave/refs/heads/main/openapi/prewave-eudr-customers-origin-requests-api-openapi.yml