B2B - Buyer Proposed Price | Bid Price #397
Replies: 14 comments 9 replies
-
Minutes of Meeting (MOM) - Discussion Highlights:
|
Beta Was this translation helpful? Give feedback.
-
Based on the discussion, we intend to use /confirm API to place bid and hence for better understanding of the complete auction flow, trying to map high level auction flow with beckn APIs. Use Case: Agri Mandi
Proposed Flow:
And multiple /on_update to all other bidders with error object defining - bid did not match highest bid.
Open Points:
Kindly provide your thoughts, suggestions, or any alternative approaches regarding the considerations in the overall flow. @ravi-prakash-v @nitinmish @pramodkvarma @sjthnrk @venkatramanm @92shreyansh |
Beta Was this translation helpful? Give feedback.
-
My thoughts:
|
Beta Was this translation helpful? Give feedback.
-
Thank you for sharing your thoughts and insights on the proposed flow. Here are some thoughts around this -
What we can also explore is increasing the ttl of /confirm equal to the auction window, which means the /on_confirm is received as soon as the auction window is closed. We can also utilize /on_search to broadcast new min_value, if not /on_update (considering it is tagged to fulfillment phase). I feel we do not need new APIs specifically for auction use case. We can leverage the existing APIs itself. Open for discussion. |
Beta Was this translation helpful? Give feedback.
-
Bids are essentially init/on_init as it initialises the terms of your bids at which you are communicating your bid terms. On_init is way to accept or seek nee bids. Confirm is a natural extension to confirm on a particular unit whose bid has been selected.Not sure why book/on_book is separately required for receiving bids.Also, At ApI layer where beckn operates, we can live with abstractions. What init at ApI later actually means in the experience user journeys - be it a “bid”, an “order” or “a booking” has little to do with how APIs talk to each other at protocol layer. We had stress tested Init for bidding and multi- negotiation use cases. Ravi can share examples for this.
|
Beta Was this translation helpful? Give feedback.
-
Agreed. But let me break this down into a few distinct points of discussion Firstly there is the care about: a) case of Use case Documentation versus beckn documentation. we could be dealing with the expectation of covering every use case possible with beckn in the documentation. b) ease of documenting a use case with beckn. I’m afraid we may be prescriptive on ‘a way’ to implement bidding on beckn. There could be multiple ways that some others can think of. Therefore, are we trying to solve for documentation stand point on bidding by defining new APIs as ‘the way’? Thinking aloud, Like HTTP, we don’t have to document every imagination of the possibilities with GET and POST. Just like how the ecosystem could present applications of GET and POST for myriad of possibilities instead creating Myriad of new APIs. This is an evolution in engg peer learning that we could all enable. We could perhaps Immediately document “ a way” not “the way” to implement bidding usecase with existing APIs of beckn. But with lack of other ways documented, did we solve for documentation ease? Maybe better than nothing but not adequately, and that sufficiency is not a protocol documentation objective. Secondly there is care of what are the larger principles at play: adding new api cannot be made by overlooking Minimalism and universality, for the want of specificity ( “the way” over “ a way”)Beckn is a Multi purpose abstraction, by design. Its strength, in my view, is its generalisation and universality, all with same set of minimal APIs. We could stress test our thinking really hard on how bidding is different and as to why it is not just a variant of same DOFP cycle that existing APIs enable, and as to why certain usecase requires a new use case altogether. Else we will end up have a new api for every variant of the same purpose. Thirdly, is it just about what names we want to give to the same thing?: We confuse APi names themselves for purpose. What we are calling as “Book” is actually enabled by existing APIs with different name. Sometimes debate is on deriving meaning from names itself. And on the Name of API - many have a view on the proper nkuns, more than the purpose it enables. “Why not “book?”“why not “subscribe”?” , why not “source” etc. This in my view is an endless debate. People associate with names differently despite the literal meanings in the dictionary. I don’t think there will be universal consensus. We have some names already, we could just go with them. Names are nothing but pointer to purpose and its underlying function, and we should not worry about them. We could discuss if the purpose behind calling anything like Book could be resolved agnostic of what name we give it. I personally may have a view on GET and POST as names, but that’s what we have :)
|
Beta Was this translation helpful? Give feedback.
-
Interesting discussiion. My thoughts below.
|
Beta Was this translation helpful? Give feedback.
-
Absolutely, Ravi and Venky.
And we can technically do this other ways too
Even with either select and init pairs followed by ./confirm. Or ./confirm ./on_confirm followed by on_update as Ravi suggested.
Latter approach looks better as thats where generally market builds the formal order ledger, as it helps governance functions like accounting and observability. Bid is an order “placed/received, not yet accepted”
|
Beta Was this translation helpful? Give feedback.
-
Thanks for everyone's inputs here. Absolutely agree, as proposed earlier as well, we definitely do not need new endpoints specifically for auction use case.
Either the bid for item to be defined like below:
Or we have item.price.proposed_value similar to item.quantity.selected to be tagged to BAP, which clearly communicates the bid price only for specific item and not on total quote.
|
Beta Was this translation helpful? Give feedback.
-
Thank you all for the engaging conversation and your enthusiastic participation. Your insights and contributions have truly added value to this discussion, adding depth and perspective that enriches our collective understanding. As we move forward, I kindly request that we divide our current discussion into two separate topics: negotiation and auction. This segregation will enable us to delve deeper into each subject matter, allowing for a more focused and thorough exploration of the intricacies involved in negotiation strategies and auction dynamics. By addressing these topics separately, we can better understand and analyze the unique challenges and opportunities associated with each method of transaction. @tanyamadaan, please help us by dividing our current discussion. Thank you for your understanding, and we look forward to engaging in in-depth discussions. |
Beta Was this translation helpful? Give feedback.
-
Let’s broaden the definition of a Bid. We probably may not need addition of a new structure called bid in the spec definition. There is a seller who may offer an item, or a basket of items for inviting interests from prospective buyer. A bid may be solicited as well as unsolicited in nature. Once discovery of such a basket of items or an item is established through search, or an intent of offering a price to an item listed is firmed, through a select framework, a buyer may assert their value. For certain use cases, a case of explicit definition of an item or basket is required tagged to a bidding process. I think if we simply allow seller a window to open the quote with an additional tag or assertion/approval/rejection/null, a buyer may be able to use the same quote object without introducing new attribute class in protocol. I am averse to create use case oriented tags in protocol unnecessarily. It breaks the protocol construct and will make specs very verbose and elaborate. A seeker has an intent for a transaction. Each transaction before its close can go through multiple iterations within same layer of DOFP framework. Bidding is simply an intent aspect of the protocol with placeholders that provide for same attribute globally defined, but locally assigned within an object. A seller may offer an item from their catalog that is bid friendly. A buyer may simple initiate an intent of a quotation. This should not require addition of a new object. Use case oriented object creation is counterintuitive in my opinion. @ravi-prakash-v @venkatramanm @BLR-0118 @sjthnrk @92shreyansh |
Beta Was this translation helpful? Give feedback.
-
@nitinmish, the process flow is available here. The draft examples are available here, select draft_agri_bids_and_auction |
Beta Was this translation helpful? Give feedback.
-
Thanks for the process flow. I tried to go through this link you provided. Link directs to a full swagger doc, I am not sure if I was able to narrow down the part where we are placing and updating a bid. If it is possible can you please copy the relevant portion on this thread, it will help all of us to go though it quickly. Since @nitinmish suggested that we may not need addition of a new structure called bid, I wanted to check the object/fields inside message.order that you are using to update the bid price as an alternative to message.order.bid that @tanya-ondc suggested. |
Beta Was this translation helpful? Give feedback.
-
Context
In agricultural markets, such as Agri Mandis, farmers list their produce for sale, and traders participate in bidding for the products. Traders, acting as buyers, submit bid prices. The bidding process involves multiple traders proposing their bid prices, competing to secure the purchase. The highest bidder ultimately wins the trade and proceeds to either pick up the produce from the farmer's location or gets delivered based on the agreed fulfillment terms.
Problem
Proposed Solution
Considering that same attributes should not be modified by both provider and consumer, proposing to create a new attribute for buyer provided bid -
message.order.bid
same asmessage.order.quote
./select:
@ravi-prakash-v @nitinmish
Beta Was this translation helpful? Give feedback.
All reactions