/quoting (also /bidding for backward compatibility)/quoting/docs/quoting/v1/health and /healthStandard JWT Bearer token authentication:
Authorization: Bearer <access_token>
DirectSupplyPartner, ServiceProviderServiceProviderAuthenticatedRoute Prefix: /quoting/v1/bids (also /bidding/v1/bids)
Authorization: JWT Bearer + Persona-based
| Method | Path | Description |
|---|---|---|
| GET | /bids |
Search bids |
| GET | /bids/{bidId} |
Get bid by ID |
| POST | /bids |
Create bid |
| PATCH | /bids/{bidId} |
Update bid |
| GET | /bids/{bidId}/history |
Get bid history |
| GET | /bids/{bidId}/conversations |
Get bid conversations |
| POST | /bids/{bidId}/commands/accept |
Accept bid |
| POST | /bids/{bidId}/commands/cancel |
Cancel bid |
| POST | /bids/{bidId}/commands/expire |
Expire bid |
| POST | /bids/{bidId}/commands/lose |
Mark bid as lost |
| POST | /bids/{bidId}/commands/win |
Mark bid as won |
| POST | /bids/{bidId}/commands/requestClarification |
Request clarification |
| POST | /bids/{bidId}/commands/requestRevalidation |
Request revalidation |
| POST | /bids/{bidId}/commands/revalidate |
Revalidate bid |
| POST | /bids/{bidId}/commands/setFairness |
Set fairness score |
| POST | /bids/{bidId}/commands/explainUnfair |
Explain unfair bid |
| POST | /bids/{bidId}/commands/explainAcceptingUnfairBid |
Explain accepting unfair bid |
| POST | /bids/{bidId}/commands/determinePricingModifications |
Get pricing modifications |
| POST | /bids/{bidId}/commands/provideLineItemFairnessFeedback |
Submit line item fairness feedback |
| PUT | /bids/{bidId}/partnerPerceivedFairness |
Set partner perceived fairness |
| GET | /bids/{bidId}/partnerPerceivedFairness |
Get partner perceived fairness |
/bidsSearch bids with filtering.
Query Parameters:
- bidder (int, optional) — Service provider ID filter
- externalReferences (string, optional) — CompositeIdentifier filter
- startingSearchKey (string, optional) — Pagination cursor
- filterQuery (string, optional) — Additional filter
- minimumCreationDate (datetime, optional) — Date range filter
Response (200 OK): IEnumerable<BidSearchResult>
/bidsCreate a new bid.
Query Parameters:
- relatedBidIdToCancel (GUID, optional) — Related bid to cancel (supersession)
- isMultiBid (bool, optional) — Multi-bid flag
Request Body: Bid object
Response (200 OK): SuccessResponse
Side Effects: Publishes BidModification, BidStatusChanged events
/bids/{bidId}Partial update of a bid.
Request Body: PatchBid
Response (200 OK): SuccessResponse
Side Effects: Publishes BidModification event
/bids/{bidId}/commands/acceptAccept a bid. Changes status and publishes acceptance events.
Response (200 OK): SuccessResponse
Side Effects: Publishes BidAccepted, BidModification, BidStatusChanged events
/bids/{bidId}/commands/requestClarificationRequest clarification on a bid, adding a conversation thread.
Request Body:
{
"message": "Please clarify the warranty terms."
}
Response (200 OK): SuccessResponse
Side Effects: Publishes BidConversationAdded event
/bids/{bidId}/commands/revalidateRevalidate an expired bid with a new expiration date.
Request Body:
{
"newExpirationDate": "2026-06-01",
"approvedBy": "John Smith",
"contactMethod": "Email"
}
Response (200 OK): SuccessResponse
/bids/{bidId}/commands/determinePricingModificationsCalculate pricing modifications for a bid based on owner/chain/service/elasticity configurations.
Response (200 OK): PricingModifierResponse
Route Prefix: /quoting/v1/generatedBids
Authorization: JWT Bearer
| Method | Path | Description |
|---|---|---|
| POST | /generatedBids/commands/generateBidFromPdf |
Generate bid from PDF |
| PATCH | /generatedBids/{generatedBidFromPdfId} |
Update generated bid |
| GET | /generatedBids/{generatedBidFromPdfId} |
Get generated bid |
| GET | /generatedBids/queries/isUserEligibleForPdfToBid |
Check PDF-to-bid eligibility |
/generatedBids/commands/generateBidFromPdfUpload a PDF and generate a structured bid using AI (AWS Bedrock/OpenAI).
Content-Type: multipart/form-data
Request:
- pdf (file) — PDF document
- request (GenerateBidFromPdfRequest) — Generation parameters
Response (200 OK): SuccessResponse with generated bid ID
Processing:
1. Saves generation request to database (status: Submitted)
2. Publishes GenerateBidFromPdfCommand to MQ
3. MQ subscriber processes: extracts PDF text, calls LLM, saves structured bid (status: Completed/Failed)
Route Prefix: /quoting/v1/customerQuotes
Authorization: JWT Bearer (DirectSupplyPartner only)
| Method | Path | Description |
|---|---|---|
| PUT | /customerQuotes/marginOutcomes |
Record margin outcomes |
/customerQuotes/marginOutcomesRecord margin decision outcomes for analytics tracking.
Request Body: PutMarginOutcomesRequest
Response: 204 No Content
Route Prefix: /quoting/v1/priceElasticity
Authorization: JWT Bearer (DirectSupplyPartner only)
| Method | Path | Description |
|---|---|---|
| GET | /priceElasticity/configurations |
Get pricing configurations |
| POST | /priceElasticity/configurations |
Update pricing configurations |
| DELETE | /priceElasticity/configurations/{id} |
Retire configuration |
Route Prefix: /quoting/v1/featureToggles
Authorization: JWT Bearer
| Method | Path | Description |
|---|---|---|
| GET | /featureToggles |
Get feature toggles |
Route Prefix: /quoting/v1 (also /bidding/v1)
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /ping |
Anonymous | Returns "pong" |
| GET | /errorTest |
DsPartners | Error generation test |
| GET | /tokenResolutionTest |
Authenticated | Token inspection |
| GET | /configuration |
DsPartners | View configuration |
| GET | /pricingConfigurations |
DsPartners | View pricing configs |
| POST | /applyOverride |
DsPartners | Apply config override |
| POST | /clearOverrides |
DsPartners | Clear config overrides |
| POST | /clearCache |
DsPartners | Clear in-memory cache |
| Code | Meaning |
|---|---|
| 200 | Success |
| 204 | No Content (successful update) |
| 400 | Bad Request — validation error |
| 401 | Unauthorized — invalid or missing JWT token |
| 403 | Forbidden — insufficient persona or policy |
| 404 | Not Found — bid does not exist |
| 409 | Conflict — optimistic concurrency violation |
/commands/accept, /commands/cancel, etc.) rather than status-based PUT/PATCH.optimistic_concurrency_id to prevent lost updates./quoting/v1/ and /bidding/v1/ are supported for backward compatibility after the rename.