TELS Quoting Service - API Documentation

🏠 Home quoting / Quoting / docs

TELS Quoting Service - API Documentation

Overview

Authentication

JWT Bearer

Standard JWT Bearer token authentication:

Authorization: Bearer <access_token>

Custom Authorization


Bids Controller

Route 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

GET /bids

Search 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>


POST /bids

Create 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


PATCH /bids/{bidId}

Partial update of a bid.

Request Body: PatchBid

Response (200 OK): SuccessResponse

Side Effects: Publishes BidModification event


POST /bids/{bidId}/commands/accept

Accept a bid. Changes status and publishes acceptance events.

Response (200 OK): SuccessResponse

Side Effects: Publishes BidAccepted, BidModification, BidStatusChanged events


POST /bids/{bidId}/commands/requestClarification

Request 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


POST /bids/{bidId}/commands/revalidate

Revalidate an expired bid with a new expiration date.

Request Body:

{
  "newExpirationDate": "2026-06-01",
  "approvedBy": "John Smith",
  "contactMethod": "Email"
}

Response (200 OK): SuccessResponse


POST /bids/{bidId}/commands/determinePricingModifications

Calculate pricing modifications for a bid based on owner/chain/service/elasticity configurations.

Response (200 OK): PricingModifierResponse


Generated Bids Controller

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

POST /generatedBids/commands/generateBidFromPdf

Upload 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)


Customer Quotes Controller

Route Prefix: /quoting/v1/customerQuotes Authorization: JWT Bearer (DirectSupplyPartner only)

Method Path Description
PUT /customerQuotes/marginOutcomes Record margin outcomes

PUT /customerQuotes/marginOutcomes

Record margin decision outcomes for analytics tracking.

Request Body: PutMarginOutcomesRequest

Response: 204 No Content


Price Elasticity V2 Controller

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

Feature Toggles Controller

Route Prefix: /quoting/v1/featureToggles Authorization: JWT Bearer

Method Path Description
GET /featureToggles Get feature toggles

Diagnostics Controller

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

Global Response Codes

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

Notes