openapi: 3.0.3 info: title: JAGGAER ASO Event Entity Service API description: > The Event Entity Service (EES) API provides REST endpoints for managing sourcing events within the JAGGAER Advanced Sourcing Optimizer, including event attributes, bids, contacts, items, rates, scenarios, and suppliers. It supports asynchronous operations for retrieving large datasets such as bid submissions and award results, with pre-signed download URLs for completed asynchronous processes. Authentication requires both OAuth 2.0 bearer tokens and API key headers. version: v26.1.0.9 contact: name: JAGGAER Support url: https://www.jaggaer.com/support x-api-id: jaggaer-aso-ees servers: - url: https://ees.aso-api.jaggaer.com description: JAGGAER ASO EES Production Server tags: - name: Async description: Asynchronous process status operations - name: Attributes description: Event attribute management - name: Awards description: Award scenario retrieval - name: Bids description: Bid submission retrieval - name: Contacts description: Event contact management - name: Items description: Event item management - name: Rates description: Event rate retrieval - name: Scenarios description: Event scenario retrieval - name: Suppliers description: Event supplier management - name: Uploads description: Entity upload URL generation security: - bearerAuth: [] apiKeyHeader: [] paths: /asyncStatus/{encoded-async-pid}: get: operationId: getAsyncStatus summary: Async Status description: > Returns the status and status-specific data for an asynchronous file process. When the process is complete, a pre-signed download URL is returned for retrieving the result data. tags: - Async parameters: - name: encoded-async-pid in: path required: true description: Base64-encoded asynchronous process identifier. schema: type: string responses: '200': description: > Success; returns status and optional download URL for the async process. content: application/json: schema: $ref: '#/components/schemas/AsyncStatusResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/apiAttribute/{attribute-id}: get: operationId: getAttribute summary: Attribute description: Retrieves a specific attribute for the given sourcing event. tags: - Attributes parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/attributeId' responses: '200': description: Success; returns the attribute details. content: application/json: schema: $ref: '#/components/schemas/AttributeResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' patch: operationId: updateAttribute summary: Update Attribute description: Updates a specific attribute for the given sourcing event. tags: - Attributes parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/attributeId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AttributeUpdateRequest' responses: '200': description: Success; attribute updated. content: application/json: schema: $ref: '#/components/schemas/AttributeResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' delete: operationId: deleteAttribute summary: Delete Attribute description: Deletes a specific attribute from the given sourcing event. tags: - Attributes parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/attributeId' responses: '204': description: Success; attribute deleted. '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/apiAttributes: get: operationId: getAttributes summary: Attributes description: Retrieves all attributes for the given sourcing event. tags: - Attributes parameters: - $ref: '#/components/parameters/eventId' responses: '200': description: Success; returns a list of attributes. content: application/json: schema: $ref: '#/components/schemas/AttributeListResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' post: operationId: createAttribute summary: Create Attribute description: Creates a new attribute for the given sourcing event. tags: - Attributes parameters: - $ref: '#/components/parameters/eventId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AttributeCreateRequest' responses: '200': description: Success; attribute created. content: application/json: schema: $ref: '#/components/schemas/AttributeResponse' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/UnprocessableEntity' patch: operationId: updateAttributes summary: Update Attributes (Bulk) description: Bulk updates multiple attributes for the given sourcing event. tags: - Attributes parameters: - $ref: '#/components/parameters/eventId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AttributeBulkUpdateRequest' responses: '200': description: Success; attributes updated. content: application/json: schema: $ref: '#/components/schemas/AttributeListResponse' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/UnprocessableEntity' /event/{event-id}/attributeType/{attribute-type}/apiAttributes: get: operationId: getAttributesByType summary: Attributes by Type description: > Retrieves all attributes of the specified type for the given sourcing event. tags: - Attributes parameters: - $ref: '#/components/parameters/eventId' - name: attribute-type in: path required: true description: The attribute type filter. schema: type: string responses: '200': description: Success; returns attributes filtered by type. content: application/json: schema: $ref: '#/components/schemas/AttributeListResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/scenario/preferred/apiAwards/async: get: operationId: getAwardsByPreferredScenarioAsync summary: Awards by Preferred Scenario (Asynchronous) description: > Initiates an asynchronous retrieval of awards for the preferred scenario of the given event. Returns a process ID for polling via /asyncStatus/{encoded-async-pid}. tags: - Awards parameters: - $ref: '#/components/parameters/eventId' responses: '202': description: Accepted; returns process ID for async polling. content: application/json: schema: $ref: '#/components/schemas/AsyncAcceptedResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/scenario/{scenario-id}/apiAwards/async: get: operationId: getAwardsByScenarioAsync summary: Awards by Scenario (Asynchronous) description: > Initiates an asynchronous retrieval of awards for the specified scenario of the given event. Returns a process ID for polling via /asyncStatus/{encoded-async-pid}. tags: - Awards parameters: - $ref: '#/components/parameters/eventId' - name: scenario-id in: path required: true description: Identifier for the award scenario. schema: type: integer responses: '202': description: Accepted; returns process ID for async polling. content: application/json: schema: $ref: '#/components/schemas/AsyncAcceptedResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/apiBids/async: get: operationId: getBidsAsync summary: Bids (Asynchronous) description: > Initiates an asynchronous retrieval of all bids for the given event. Returns a process ID for polling via /asyncStatus/{encoded-async-pid}. tags: - Bids parameters: - $ref: '#/components/parameters/eventId' responses: '202': description: Accepted; returns process ID for async polling. content: application/json: schema: $ref: '#/components/schemas/AsyncAcceptedResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/bidRound/{bid-round}/apiBids/async: get: operationId: getBidsByBidRoundAsync summary: Bids by Bid Round (Asynchronous) description: > Initiates an asynchronous retrieval of bids for the specified bid round of the given event. Returns a process ID for polling via /asyncStatus/{encoded-async-pid}. tags: - Bids parameters: - $ref: '#/components/parameters/eventId' - name: bid-round in: path required: true description: The bid round number. schema: type: integer responses: '202': description: Accepted; returns process ID for async polling. content: application/json: schema: $ref: '#/components/schemas/AsyncAcceptedResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/apiContact/{contact-id}: get: operationId: getContact summary: Contact description: Retrieves a specific contact for the given sourcing event. tags: - Contacts parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/contactId' responses: '200': description: Success; returns contact details. content: application/json: schema: $ref: '#/components/schemas/ContactResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: operationId: deleteContact summary: Delete Contact description: Deletes a specific contact from the given sourcing event. tags: - Contacts parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/contactId' responses: '204': description: Success; contact deleted. '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/user/{user-id}/apiContact/{contact-id}: patch: operationId: updateContactByUser summary: Contact by User description: > Updates a specific contact for the given sourcing event scoped to the specified user. tags: - Contacts parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/userId' - $ref: '#/components/parameters/contactId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ContactUpdateRequest' responses: '200': description: Success; contact updated. content: application/json: schema: $ref: '#/components/schemas/ContactResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/user/{user-id}/apiContacts: patch: operationId: updateContactsByUser summary: Contacts by User (Bulk Update) description: > Bulk updates contacts for the given event scoped to the specified user. tags: - Contacts parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/userId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ContactBulkUpdateRequest' responses: '200': description: Success; contacts updated. content: application/json: schema: $ref: '#/components/schemas/ContactListResponse' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/UnprocessableEntity' /event/{event-id}/supplier/{supplier-id}/apiContacts: get: operationId: getContactsBySupplier summary: Contacts by Supplier description: > Retrieves all contacts associated with the specified supplier for the given sourcing event. tags: - Contacts parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/supplierId' responses: '200': description: Success; returns contacts for the supplier. content: application/json: schema: $ref: '#/components/schemas/ContactListResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/user/{user-id}/supplier/{supplier-id}/apiContacts: post: operationId: createContactByUserAndSupplier summary: Contacts by User and Supplier description: > Creates contacts for the given event scoped to the specified user and supplier. tags: - Contacts parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/userId' - $ref: '#/components/parameters/supplierId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ContactCreateRequest' responses: '200': description: Success; contact(s) created. content: application/json: schema: $ref: '#/components/schemas/ContactListResponse' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/UnprocessableEntity' /event/{event-id}/apiItem/{item-id}: get: operationId: getItem summary: Item description: Retrieves a specific line item for the given sourcing event. tags: - Items parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/itemId' responses: '200': description: Success; returns item details. content: application/json: schema: $ref: '#/components/schemas/ItemResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: operationId: deleteItem summary: Delete Item description: Deletes a specific line item from the given sourcing event. tags: - Items parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/itemId' responses: '204': description: Success; item deleted. '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/user/{user-id}/apiItem/{item-id}: patch: operationId: updateItemByUser summary: Item by User description: > Updates a specific line item for the given event scoped to the specified user. tags: - Items parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/userId' - $ref: '#/components/parameters/itemId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ItemUpdateRequest' responses: '200': description: Success; item updated. content: application/json: schema: $ref: '#/components/schemas/ItemResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/apiItems: get: operationId: getItems summary: Items description: Retrieves all line items for the given sourcing event. tags: - Items parameters: - $ref: '#/components/parameters/eventId' responses: '200': description: Success; returns list of items. content: application/json: schema: $ref: '#/components/schemas/ItemListResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/apiItems/async: get: operationId: getItemsAsync summary: Items (Asynchronous) description: > Initiates an asynchronous retrieval of all line items for the given event. Returns a process ID for polling via /asyncStatus/{encoded-async-pid}. tags: - Items parameters: - $ref: '#/components/parameters/eventId' responses: '202': description: Accepted; returns process ID for async polling. content: application/json: schema: $ref: '#/components/schemas/AsyncAcceptedResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/user/{user-id}/apiItems: post: operationId: createItemsByUser summary: Create Items by User description: > Creates new line items for the given event scoped to the specified user. tags: - Items parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/userId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ItemCreateRequest' responses: '200': description: Success; item(s) created. content: application/json: schema: $ref: '#/components/schemas/ItemListResponse' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/UnprocessableEntity' patch: operationId: updateItemsByUser summary: Update Items by User (Bulk) description: > Bulk updates line items for the given event scoped to the specified user. tags: - Items parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/userId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ItemBulkUpdateRequest' responses: '200': description: Success; items updated. content: application/json: schema: $ref: '#/components/schemas/ItemListResponse' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/UnprocessableEntity' /event/{event-id}/apiRate/{rate-id}: get: operationId: getRate summary: Rate description: Retrieves a specific rate for the given sourcing event. tags: - Rates parameters: - $ref: '#/components/parameters/eventId' - name: rate-id in: path required: true description: Identifier for the rate. schema: type: integer responses: '200': description: Success; returns rate details. content: application/json: schema: $ref: '#/components/schemas/RateResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/apiRates/async: get: operationId: getRatesAsync summary: Rates (Asynchronous) description: > Initiates an asynchronous retrieval of all rates for the given event. Returns a process ID for polling via /asyncStatus/{encoded-async-pid}. tags: - Rates parameters: - $ref: '#/components/parameters/eventId' responses: '202': description: Accepted; returns process ID for async polling. content: application/json: schema: $ref: '#/components/schemas/AsyncAcceptedResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/apiScenarios: get: operationId: getScenarios summary: Scenarios description: Retrieves all award scenarios for the given sourcing event. tags: - Scenarios parameters: - $ref: '#/components/parameters/eventId' responses: '200': description: Success; returns list of scenarios. content: application/json: schema: $ref: '#/components/schemas/ScenarioListResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/apiSupplier/{supplier-id}: get: operationId: getSupplier summary: Supplier description: Retrieves a specific supplier for the given sourcing event. tags: - Suppliers parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/supplierId' responses: '200': description: Success; returns supplier details. content: application/json: schema: $ref: '#/components/schemas/SupplierResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: operationId: deleteSupplier summary: Delete Supplier description: Removes a specific supplier from the given sourcing event. tags: - Suppliers parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/supplierId' responses: '204': description: Success; supplier removed from event. '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/user/{user-id}/apiSupplier/{supplier-id}: patch: operationId: updateSupplierByUser summary: Supplier by User description: > Updates a specific supplier for the given event scoped to the specified user. tags: - Suppliers parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/userId' - $ref: '#/components/parameters/supplierId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SupplierUpdateRequest' responses: '200': description: Success; supplier updated. content: application/json: schema: $ref: '#/components/schemas/SupplierResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/apiSuppliers: get: operationId: getSuppliers summary: Suppliers description: Retrieves all suppliers for the given sourcing event. tags: - Suppliers parameters: - $ref: '#/components/parameters/eventId' responses: '200': description: Success; returns list of suppliers. content: application/json: schema: $ref: '#/components/schemas/SupplierListResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /event/{event-id}/user/{user-id}/apiSuppliers: post: operationId: createSuppliersByUser summary: Create Suppliers by User description: > Adds suppliers to the given event scoped to the specified user. tags: - Suppliers parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/userId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SupplierCreateRequest' responses: '200': description: Success; supplier(s) added to event. content: application/json: schema: $ref: '#/components/schemas/SupplierListResponse' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/UnprocessableEntity' patch: operationId: updateSuppliersByUser summary: Update Suppliers by User (Bulk) description: > Bulk updates suppliers for the given event scoped to the specified user. tags: - Suppliers parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/userId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SupplierBulkUpdateRequest' responses: '200': description: Success; suppliers updated. content: application/json: schema: $ref: '#/components/schemas/SupplierListResponse' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/UnprocessableEntity' /event/{event-id}/user/{user-id}/entity/{entity}/uploadUrl: get: operationId: getUploadUrl summary: Upload Entity URL description: > Retrieves a pre-signed upload URL for the specified entity type, enabling upload of data files to the ASO platform for the given event and user. tags: - Uploads parameters: - $ref: '#/components/parameters/eventId' - $ref: '#/components/parameters/userId' - name: entity in: path required: true description: The entity type for which an upload URL is requested. schema: type: string responses: '200': description: Success; returns a pre-signed upload URL. content: application/json: schema: $ref: '#/components/schemas/UploadUrlResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: OAuth 2.0 bearer token for authentication. apiKeyHeader: type: apiKey in: header name: X-Api-Key description: API key passed as a request header. parameters: eventId: name: event-id in: path required: true description: Identifier for the sourcing event. schema: type: integer userId: name: user-id in: path required: true description: Identifier for the user. schema: type: integer attributeId: name: attribute-id in: path required: true description: Identifier for the event attribute. schema: type: integer contactId: name: contact-id in: path required: true description: Identifier for the contact. schema: type: integer itemId: name: item-id in: path required: true description: Identifier for the line item. schema: type: integer supplierId: name: supplier-id in: path required: true description: Identifier for the supplier. schema: type: integer responses: Unauthorized: description: > Authentication failed. Ensure a valid OAuth 2.0 bearer token and API key are provided. NotFound: description: The requested resource was not found. UnprocessableEntity: description: > The request was syntactically valid but could not be processed due to validation errors. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' schemas: AsyncStatusResponse: type: object description: Status response for an asynchronous process. properties: status: type: string description: Current status of the asynchronous process. enum: - PENDING - IN_PROGRESS - COMPLETED - FAILED downloadUrl: type: string format: uri description: > Pre-signed URL for downloading the result when the process has completed. errorMessage: type: string description: Error message if the process failed. AsyncAcceptedResponse: type: object description: Response returned when an asynchronous operation is accepted. properties: encodedAsyncPid: type: string description: Base64-encoded process ID used to poll for status. AttributeResponse: type: object description: Sourcing event attribute details. properties: attributeId: type: integer description: Unique identifier for the attribute. attributeName: type: string description: Name of the attribute. attributeType: type: string description: Type classification of the attribute. value: type: string description: Current value of the attribute. AttributeListResponse: type: object description: List of sourcing event attributes. properties: attributes: type: array items: $ref: '#/components/schemas/AttributeResponse' AttributeCreateRequest: type: object description: Request body for creating an event attribute. required: - attributeName - attributeType properties: attributeName: type: string attributeType: type: string value: type: string AttributeUpdateRequest: type: object description: Request body for updating an event attribute. properties: value: type: string AttributeBulkUpdateRequest: type: object description: Request body for bulk updating event attributes. properties: attributes: type: array items: $ref: '#/components/schemas/AttributeUpdateRequest' ContactResponse: type: object description: Event contact details. properties: contactId: type: integer firstName: type: string lastName: type: string email: type: string format: email supplierId: type: integer ContactListResponse: type: object description: List of event contacts. properties: contacts: type: array items: $ref: '#/components/schemas/ContactResponse' ContactCreateRequest: type: object description: Request body for creating an event contact. properties: firstName: type: string lastName: type: string email: type: string format: email ContactUpdateRequest: type: object description: Request body for updating an event contact. properties: firstName: type: string lastName: type: string email: type: string format: email ContactBulkUpdateRequest: type: object description: Request body for bulk updating event contacts. properties: contacts: type: array items: $ref: '#/components/schemas/ContactUpdateRequest' ItemResponse: type: object description: Sourcing event line item details. properties: itemId: type: integer description: Unique identifier for the line item. itemName: type: string description: Name of the line item. quantity: type: number description: Requested quantity. unitOfMeasure: type: string description: Unit of measure for the item. ItemListResponse: type: object description: List of event line items. properties: items: type: array items: $ref: '#/components/schemas/ItemResponse' ItemCreateRequest: type: object description: Request body for creating event line items. properties: itemName: type: string quantity: type: number unitOfMeasure: type: string ItemUpdateRequest: type: object description: Request body for updating an event line item. properties: itemName: type: string quantity: type: number unitOfMeasure: type: string ItemBulkUpdateRequest: type: object description: Request body for bulk updating event line items. properties: items: type: array items: $ref: '#/components/schemas/ItemUpdateRequest' RateResponse: type: object description: Sourcing event rate details. properties: rateId: type: integer description: Unique identifier for the rate. rateName: type: string description: Name of the rate. locationName: type: string description: Location associated with the rate. value: type: number description: Rate value. ScenarioListResponse: type: object description: List of award scenarios. properties: scenarios: type: array items: type: object properties: scenarioId: type: integer scenarioName: type: string isPreferred: type: boolean SupplierResponse: type: object description: Sourcing event supplier details. properties: supplierId: type: integer description: Unique identifier for the supplier. supplierName: type: string description: Name of the supplier. status: type: string description: Participation status of the supplier in the event. SupplierListResponse: type: object description: List of event suppliers. properties: suppliers: type: array items: $ref: '#/components/schemas/SupplierResponse' SupplierCreateRequest: type: object description: Request body for adding suppliers to an event. properties: suppliers: type: array items: type: object properties: supplierId: type: integer SupplierUpdateRequest: type: object description: Request body for updating a supplier. properties: status: type: string SupplierBulkUpdateRequest: type: object description: Request body for bulk updating suppliers. properties: suppliers: type: array items: $ref: '#/components/schemas/SupplierUpdateRequest' UploadUrlResponse: type: object description: Pre-signed upload URL response. properties: uploadUrl: type: string format: uri description: Pre-signed URL for uploading entity data. expiresAt: type: string format: date-time description: Expiration time for the pre-signed URL. ErrorResponse: type: object description: Error response with validation details. properties: statuses: type: object description: Map of status codes to arrays of status detail objects. additionalProperties: type: array items: type: object additionalProperties: type: string