v1.1.0-logs's Issues
Shopalyst (Shiprocket) - compliance check
Flow 1
/on_select
- time to ship in /on_search was P1D, and TAT is P7D, why is it taking 6 days for the shipment to be delivered even when location is nearby.
/on_init
- Buyer app finder fee (@ondc/org/buyer_app_finder_fee_amount) can't change in /on_init and onwards
/on_confirm
- /fulfillments/0/end must have required property 'time'
- /fulfillments/0/start must have required property 'time'
/on_update and /on_update_liquidate
- order/updated_at timestamp should be updated (since order details are getting changed)
- liquidated item should be present in quote/breakup with count=0
Flow 2
- "delivery" line item should not be present in case fulfillment state code is non-serviceable
- How is location not serviceable when serviceability is defined as throughout PAN India
Flow 3
/on_update (rejected)
- 'created_at','updated_at','payment' object missing in /order
Flow 4, 5
- similar issues as above
Kotak - compliance check
Please resubmit the logs flow-wise as per the test case scenarios with separate JSON payload for each API.
Bizom - compliance check
- /on_search:
- time.timestamp for "enable" needs to match Context.timestamp;
- time.schedule.holidays is mandatory key (can be empty array);
- time.range.end of "2400" is invalid time (can be "2359");
- /on_status:
- pickup time (fulfillment.start.time.timestamp) and delivery time (fulfillment.end.time.timestamp) are mandatory as per the contract;
- /on_update1:
- quote adjustment & refund doesn't happen in "return initiated" state;
- /on_update2:
- quote adjustment & refund doesn't happen in "return approved" state;
Mytra (TSP) - compliance check
- /on_action APIs should respond within 5 sec upon receving the /action APIs
- All the issues identified by the utility should be addressed and rectified.
/on_search
- Invalid /on_search response; should have same city code, txn id and message_id as in /search
- /message/catalog/bpp/providers/0/items/ must have required statutory requirements as mapped in the enhanced subcategory list
- /message/catalog/bpp/providers/0/items veg/non-veg categorization is mandatory for F&B categories or packaged foods in /tags
- bpp/descriptor/images can't be empty
- locations/locality is missing in /bpp/providers/
- inaccurate geocoding of gps and address in /bpp/providers/locations (gps/area_code mismatch)
- self-pickup is not supported in v1.1.0, must use other relevant fulfillment_id in /items
/on_select
- /fulfillments/end is not required
- /items/location_id is not required
- @ondc/org/TAT should be realistic (not 2083 days)
- "@ondc/org/item_quantity" should be integer in /quote/breakup
/on_confirm
- estimated pickup and delivery time ranges should be realistic and match the fulfillment category (Next day delivery)
/on_status_delivered
- how can delivery timestamp (/fulfillments/end/time/timestamp) be before /on_status picked call?
/on_update
- Invoice is not required in /documents
/on_update (Return_Approved)
- estimated return pickup/delivery time ranges should be realistic
- start of the time ranges can't be earlier than context/timestamp
/on_update (Return_Delivered)
- how can Reverse QC delivery timestamp (/fulfillments/end/time/timestamp) be before /on_update return picked call?
Flow 2
/on_select
- delivery charges line item should not be included in /quote/breakup when location is not serviceable
Flow 5
/on_select
- item's unit price can't be 0 when item is out-of-stock
LSN - compliance check
Logs with Eunimart
- why the difference in price between /on_search (78) and /on_init (39)?
- /on_confirm:
- no collection amount was specified in /search, so where is the value in "@ondc/org/collection_amount" coming from?
- order.updated_at should match Context.timestamp;
- /status:
- Context.action is wrong;
- /cancel & /on_cancel:
- Context.timestamp for /cancel is after delivery (timestamp for /on_status shows order was delivered earlier). How can cancellation happen after order delivery & how did LSN accept it?
Logs with Gofrugal
- /search - range.start & range.end are invalid;
- /init:
- start.building & start.locality are mandatory. Why is LSN not validating?
- same issue as 1 above (Eunimart logs)
- /confirm:
- why is billing.created_at & updated_at updated here? It should have the same timestamp as in /init.
- "@ondc/org/linked_orders".item.quantity.measure.value should be integer;
- order.created_at & updated_at should exactly match Context.timestamp;
- No /status, /on_status APIs?
EkSecond (retail) - compliance check
Flow 1
- /on_search:
- why diff > 30 mins in Context.timestamp of /search & /on_search?
- either provide fixed timing (time.range.start & end) or split timing (time.schedule.frequency, time.schedule.times) but not both. In this case, it seems the store is open from 6AM to 11PM, so remove the split timing;
- contact_details_consumer_care should only have "name, email, contact no" as defined in the contract;
- serviceability construct: use category "F&B" for now;
- search was for "mutton biryani" but others are also being returned. You may want to use these item keys (matched, related, recommended) to distinguish between different results returned e.g. "mutton biryani" will have "matched":true but others may either have "related" or "recommended" set to true;
- /on_select:
- why is the response taking 11 secs (diff in Context.timestamp between /select & /on_select);
- why is this returning error 40002 when item_quantity in /on_select matches what was selected (in /select). What's out of stock in this case?
- /on_init:
- diff of 15 secs in timestamp between request & response;
- remove payment.collected_by;
- /on_confirm:
- diff of 15 secs in timestamp between request & response;
- all /on_status:
- all solicited & unsolicited /on_status responses seem to have the same message_id & timestamp as /on_confirm;
- order pickup time (fulfillment.start.time.timestamp) and delivery time (fulfillment.end.time.timestamp) can't be > Context.timestamp for that /on_status call;
- /on_update:
- message_id should be same as /update;
- Context.timestamp is same as /on_confirm;
- tags should only have "status" & nothing else;
Flow 2
- /on_init (serviceability): non-serviceable means no fulfillment possible, hence, no fulfillment level charges (delivery / packing / convenience fee, etc.);
- /on_status (post cancel):
- order.updated_at timestamp invalid;
- "cancellationTags" is invalid key;
- if order is cancelled, value of order becomes 0 (hence, quote.price and quote.breakup[].price should be 0);
Flow 3
- /on_update (return rejected): items struct is wrong (top most item should have count 1 and the one with tags 0) - check here
PepStores - compliance check
Flow 1
/on_search
- /message/catalog/bpp/providers/items/@ondc/org/statutory_reqs_prepackaged_food must have atleast one of the 'importer_FSSAI_license_no', 'brand_owner_FSSAI_license_no', 'other_FSSAI_license_no'
- statutory_reqs_prepackaged_food must have required property 'imported_product_country_of_origin'. Also check the correct statutory mapping here
- /message/catalog/bpp/providers/items/descriptor/images should not have more than 3 images (buyer apps can process only 3)
- Reverse geocoding of store location shows different pincode and address. How is it mapped? Also, the gps coordinates are same for different locations(/providers). Why?
- @ondc/org/contact_details_consumer_care should be in the format "name, email, contactno" in /bpp/providers/items
- location in serviceability construct should be one of the location ids bpp/providers/locations (serviceability must not be mapped incorrectly for different providers/locations )
- serviceability constructs (defined in /locations/circle and /tags) are conflicting with 3km and 50km radius.
/on_init
- invalid value of /fulfillments/provider_id (is an optional property)
- quote validity is 1 Day whereas it was 1 hour in /on_select. Why?
/on_confirm
- /quote must have required property 'ttl'
- estimated pickup and delivery time ranges should be present if RTS is triggered
/on_status
- Invoice should be present when order is picked (Order-picked-up) and thereafter ("documents" object should not be present before that)
- max(time_to_ship) is 1 day in /on_search, then why estimated pickup is taking the same amount of time as the delivery time (2 Days)
- Out-for-delivery: pickup time should be present (same as in Order-picked-up state)
- /quote must have required property 'ttl'
- /payment/@ondc/org/settlement_details/0/settlement_type should not change
/on_update
- must have required property 'payment'
- must have required property 'created_at'
- must have required property 'updated_at'
- /quote must have required property 'ttl'
- /quote/breakup/0 must have required property 'title'
- /quote/breakup/0/@ondc/org/item_quantity/count must be integer
- liquidated item should be present in quote/breakup with count=0
- /payment/@ondc/org/settlement_details/0/settlement_type should not change
Flow 2
- please follow the flow as per the test case scenario without initiating a new search request (txn id for select and select_non_serviceable should not change).
- make sure non-serviceable location is not falling in the serviceability construct range. (can't be checked due to invalid geocoding of gps and address)
Flow 4
/on_update
- /update payload for return initiation is missing (/update for refund is shared)
- Is the return getting initiated again after refund (FYI /update call) is processed?
check Flow 2,3,4,5 for similar issues in Flow 1
Airpay - compliance check
- /confirm:
- fulfillment.end.person.name is mandatory;
- /update payload is not compliant with contract;
Grab - compliance check
Full delivered order log 1
- /on_search:
- no RTO quote linked to forward shipment quote as shown in the contract?
- is TAT for immediate & same day delivery same?
- Context.timestamp is invalid (miilisecs should have 3 digits as in API contract);
- /on_init:
- same issue with timestamp as in /on_search;
- RTO charges shouldn't be in quote;
- /on_confirm:
- billing.created_at & updated_at timestamp should be same as what's in /init;
- /update & /on_update:
- is LSP accepting pickup confirmation code (e.g. POS order id) thru fulfillment.start.instructions.short_desc and delivery confirmation code thru fulfillment.end.instructions.short_desc?
- No /on_status, /on_cancel?
Paytm - compliance check
- /init - billing.created_at & updated_at should match Context.timestamp for /init;
- /confirm:
- order.created_at & updated_at should match Context.timestamp for /confirm;
- buyer_app_finder_fee_type should be "percent" (lowercase);
- following keys are invalid in payment.params: mode, vpa;
SellerApp logistics buyer - compliance check
- /search:
- "@ondc/org/payload_details".category should be one of the domains from this list;
Plotch buyer app - compliance check
- /init, /confirm - building & locality are mandatory (in billing & fulfillment address) and can't be "-";
Dunzo - compliance check
Logs with Innobits
- /on_search - item price not linked to rto price thru parent_item_id (as spec'd in contract)
- /init - following keys are mandatory and needs to be verified by LSP:
- billing.address.locality;
- fulfillment.end.location.address.locality;
- /init:
- fulfillment.id can only be provided by seller (LSP);
- remove the entire payment block, it's not required here since type = "POST-FULFILLMENT" and settlement details will be provided by LSP;
- /confirm:
- order.created_at & updated_at should match Context.timestamp (can't be a future timestamp);
- how did the billing address change between /init & /confirm? billing address in /confirm is correct but it's first populated in /init & will have the same timestamp (created_at, updated_at) as Context;
- fulfillment.start.location.address & end.location.address should have all the keys as mandated by contract (including building, locality);
iThink Logistics - compliance check
Delivered Flow
/on_confirm
{
instancePath: '/on_confirm/message/order/fulfillments/0/type',
message: { allowedValue: 'Prepaid' } - Must match value in /confirm.
}
/update
{
instancePath: '/update/message/order/fulfillments/0/end/instructions',
message: "must have required property 'additional_desc'"
},
{
instancePath: '/update/message/order/fulfillments/',
message: 'Fulfillment object should include start and end instructions if ready_to_ship is Yes'
},
}
** Same issues in Cancellation FLow**
Ushop - compliance check
Flow 1
- /on_search:
- Context.timestamp can't be the same as for /search;
- contact_details_consumer_care should be in this format: "name,email,contactno";
- store timings & holidays are mandatory keys, holidays can be empty;
- category in serviceability should be the actual category used, i.e. "Beauty & Hygiene", not "Grocery";
- /on_select:
- item_quantity is integer;
- item.quantity.available.count & maximum.count are string;
- /status_after_delivered:
- pickup time (fulfillment.start.time.timestamp) and delivery time (fulfillment.end.time.timestamp) are mandatory; also, show intermediate fulfillment states where these times are setup as per the contract;
- /update_return_initiated:
- this is wrong. /update call will be initiated for return and there will be at least 2 /on_update responses (for the interim state "Return_Initiated" and thereafter ("Liquidated" or "Return_Rejected") or ("Return_Approved", "Return_Picked", "Return_Delivered"). this should be thru multiple /on_update calls which have the same message_id as the original /update (for the buyer app to match the /on_update with the /update);
- No cancel APIs?
Flow 2
- where is the serviceability error?
- /on_update: needs to provide current state of order;
Flow 4
- Can't see payload for out-of-stock in /on_select or /on_init;
Growthfalcons - compliance check
Flow 1 (retail)
- /on_search:
- bpp/providers.time.timestamp should match Context.timestamp;
- /on_init:
- payment should only include what's in the contract i.e. finder fee type & percent, settlement details (payment.params is supposed to be filled by the buyer app as they're collecting payment);
- beneficiary_name in settlement_details is required;
- /on_confirm:
- order.updated_at should be updated to Context.timestamp since default fulfillment state added;
- /on_status_accepted:
- this seems to be the log for logistics, not retail;
- /on_status_order_pickup:
- pickup time (fulfillment.start.time.timestamp) is mandatory;
- fulfillment.start.contact.phone should be 10 digits;
- order.updated_at should be updated to Context.timestamp (applies to other /on_status logs as well);
- /on_status_delivered:
- pickup time (above) and delivery time (fulfillment.end.time.timestamp) are mandatory;
- other issues as in 5 above;
- /on_update_liquidated:
- should have same message_id as /update;
- why is item.fulfillment_id changed (there's no reverse qc with liquidated state);
Flow 2
- /on_select_1:
- fulfillment.state.code is invalid;
Mystore seller app - compliance check
- Logs need to be submitted separately for each flow as per the test case scenario here;
- No /on_search?
- /on_select:
- item_quantity.count is integer;
- /on_init:
- payment should only have buyer_app_finder_fee_type ("percent"), amount, settlement_details;
- /on_confirm:
- order.created_at & updated_at is required;
- /on_status (2):
- pickup time (fulfillment.start.time.timestamp) needs to be provided when order is picked up;
- /on_status (3):
- pickup time (above) and delivery time (fulfillment.end.time.timestamp) needs to be provided;
Digiit - compliance checks
Flow 1
- /on_search:
- Context.timestamp same as for /search;
- bpp/providers.time.timestamp should match Context.timestamp;
- contact_details_consumer_care should have the format "name,email,contactno" as in the contract;
- only non-deprecated categories from this list should be used;
- serviceability construct for a provider should include all categories in the catalog;
- item.fulfillment_id should be "1" matching the type for delivery;
- /on_select:
- Context.timestamp should be RFC3339 compliant as per contract;
- /on_init:
- payment: remove everything except buyer app finder fee type & amount, settlement_details;
- /on_confirm:
- billing.created_at & updated_at should have the same timestamp as in /init;
- order.created_at should have the same timestamp as in /confirm;
- fulfillment."@ondc/org/provider_name" is different from what's in /on_select;
- /on_status (all APIs):
- Context.timestamp should be RFC3339 compliant;
-
/on_status_delivered: start.time.timestamp (pickup time) can't be same as end.time.timestamp (delivery time);
-
No /update, /on_update flow?
Flow 2
- /on_select (non-serviceability): flow should be exactly as documented in API contract;
Flow 3
- /update & /on_update (return rejected): should be as per API contract;
eSamudaay-buyer - compliance check
Flow 1,4
/confirm
- context.ttl = PT30S as per the API Contract
- unit price of item is missing in quote.breakup
/update call to calculate and update refund amnt is missing
Addble - compliance check
Flow 1
/on_search
- context/timestamp difference between /on_search and /search should be smaller than 5 sec
- @ondc/org/contact_details_consumer_care should be in the format "name,email,contactno" in /bpp/providers/items
/on_init
- /payment/@ondc/org/buyer_app_finder_fee_type must be percent (p should be in lower case)
- item.quantity.available and item.quantity.maximum not required in quote.breakup
/on_status
- context.timestamp in /on_confirm and /on_status can't be same
- fulfillments/start/time/timestamp cannot be future dated and should match the context.timestamp (fulfillment state as "Order-picked-up")
- fulfillments/end/time/timestamp cannot be future dated and should match the context.timestamp (fulfillment state as "Order-delivered")
- order.updated_at timestamp should be updated as per the context.timestamp for every change in fulfillment state
/on_update
- order must have required property 'created_at'
- order must have required property 'updated_at'
- liquidated item should be present in quote.breakup with item count = 0
- /quote must have required property 'ttl'
Flow 2
/on_select
- why is transaction_id changing for different /on_select?
Flow 3
/on_status
- pickup (fulfillments/start/time/timestamp) and delivery (fulfillments/end/time/timestamp) time cannot be same (fulfillment state = "Order-delivered")
- pickup time (fulfillments/start/time/timstamp) is mandatory for fulfillment state "Order-picked-up"
/on_update
- context.timestamp for /update and /on_update can't be same
/on_update (return rejected)
- message_id should be same for unsolicited /on_update calls and /update (temporarily)
Flow 4
/on_status
- context.timestamp cannot be equal to /on_confirm context.timestamp
- Similar issues as Flow 3
Addble Logistics BAP - compliance check
/search
- payload dimensions are required for intercity shipments.
/init
- fulfilment id in /init should be match the fulfillment id in /on_search.
/confirm
- /message/order/@ondc/org/linked_order/items/quantity/measure/value must be number.
/on_status
- name is an invalid key in fulfillments/state/descriptor, this needs to be removed.
/update
- ready to ship through /update along with PCC needs to be supported
InstaStack - compliance check
Flow 1
- /context/ttl is not required for /on_action APIs
/on_search
- Either one of fixed (range) or split (frequency and times) timings should be provided in /bpp/providers/locations/time
- @ondc/org/contact_details_consumer_care should be in the format "name,email,contactno" in /bpp/providers/items
- category in serviceability construct should be defined only for category ids in bpp/providers/items/category_id
/on_select
- @ondc/org/TAT (O2D) can't be equal to @ondc/org/time_to_ship (O2S) in /on_search
/on_init
- /billing/address must have required property 'locality'
- /fulfillments/end/location/address must have required property 'locality'
- /payment/@ondc/org/buyer_app_finder_fee_type should be 'percent' (with lowercase "p")
- many invalid attributes in payment object (type, collected_by, @ondc/org/withholding_amount, @ondc/org/return_window, @ondc/org/settlement_basis, @ondc/org/settlement_window)
- /payment/@ondc/org/settlement_details/settlement_type must be equal to one of the allowed values (upi,neft,rtgs)
- buyer app finder fee amount can't change in /on_init
- item.quantity.available and item.quantity.maximum not required in quote.breakup
/on_confirm
- order.created_at timestamp cannot change in /on_confirm
- item.quantity.available and item.quantity.maximum not required in quote.breakup
/on_status
- 'tags' is not mandatory in /items for 'Order-delivered'
- /documents/label must be 'Invoice'
- pickup(fulfillments/start/time/timestamp) and delivery(fulfillments/end/time/timestamp) time is required when fulfillment state is Order-delivered
/on_update
- Order should have required properties 'payment', 'created_at', 'updated_at'.
- ReverseQC must have required property 'end'
- ReverseQC should have pickup timestamp (start/time/timestamp) when the fulfillment state is 'Order-picked-up'
- Message Ids for /update and /on_update APIs should be same
- ReverseQC pickup (/start/time/timestmap) and delivery time (end/time/timestamp) cannot be same when fulfillment state is 'Order-delivered'
- message_id for all the unsolicited /on_update should be same for a particular return request (/update)
Flow 2
- similar issues as Flow 1
/on_select (non serviceable)
- Error object (domain error and code) required when the fulfillment is non-serviceable
/on_cancel
- context/transaction_id must not change
/on_status (post cancel)
- context/transaction_id must not change
- context/timestamp for /on_status_post_cancel can't be before the timestamp for order cancellation in /on_cancel
- cancellation_reason_id missing in tags
Flow 3
- similar issues as Flow 1
Flow 4
- similar issues as Flow 1
/on_select
- Error object (domain error and code) is required when the quantity is not in stock
- message_id for /select and /on_select does not match
Flow 5
- similar issues as Flow 1
Phonepe - compliance check
- /init:
- billing.created_at & updated_at should be in same format & value as Context.timestamp;
- order.created_at & updated_at is created in /confirm after order.id is created;
- /confirm:
- billing.created_at & updated_at missing;
- Partial cancel flow is not clear
eVitalRx - compliance check
Flow 1
- /on_search:
- bpp/providers.time.label - valid values are "enable", "disable". You should use this to enable or disable stores;
- item.quantity.available.count and maximum.count are string as per contract;
- item.price.value & item.price.maximum_value are string;
- for serviceability: type="12" (means pan-India), val should be "IND" and unit "country";
- fulfillments.contact.phone should be 10 or 11 digit numeric only (no "+");
- item.id encoding is based on hashed or encrypted val? This may create problems with signing.
- /select:
- provider.id & location.id are different from what came in /on_search but item.id is the same. How?
- /on_init:
- quote.breakup should have both total price & unit price (as in /on_select);
- buyer_app_finder_fee_type should be "percent" (lower "p");
- in payment block, remove everything except buyer_app_finder_fee_type, buyer_app_finder_fee_amount, settlement_details;
- /on_confirm:
- remove order.documents which has invoice and add to /on_status when fulfillment state changes to "Order-picked-up";
- /on_status:
- using same message_id as /confirm;
- billing.updated_at should not change;
- price.value, params.amount should be string;
- remove settlement_basis, settlement_window;
- /on_status2:
- same issues as for /on_status above;
- fulfillment.start.time.timestamp should be set when fulfillment state becomes "Order-picked-up" and fulfillment.end.time.timestamp should be set when fulfillment state becomes "Order-delivered";
- /on_update:
- item.quantity.count should not become 0 when status is "Return_Initiated";
- you should have another unsolicited /on_update call where status is "Liquidated" and here item.quantity.count and item_quantity becomes 0 (use the same message_id here as in /update);
- quote has 2 items but items has only 1 (it should have both these items);
- fulfillments is empty array but fulfillment_id is referenced in items. Details of fulfillment "F1" should be in fulfillments;
Flow 3
- same issue in /on_update as in flow 1;
Shipyaari - Compliance Check
Shipyaari - MytraMoney
context.timestamp in request APIs can't be greater than timestamp in callback response APIs
/search
no ttl defined in context
context.transaction id should be a valid uuid
context.timestamp should be in valid rfc3339 format
category and value missing in payload_details
/on_search
context.ttl is not required
RTO should be supported in bpp/fulfillments[]
All the available child categories for standard delivery should be provided
Standard Delivery: TAT: P8D??
Doesn't shipyaari support P2P fulfillments?
/init
items[] parent_item_id, fulfillment_id and price are invalid keys.
items[].descriptor name, short_desc,long_desc are invalid keys
fulfillments[].tracking is invalid key
contact.email is optional attribute
start and end person.name are not required
tax_number is missing in billing
/confirm
PCC should be sent in fulfillments[].start.instructions.short_desc
payment object mismatches in /on_init and /confirm
billing created and updated timestamps can't change in /confirm
/on_confirm
fulfillments[].state.descriptor.name is not required
/on_status
fulfillments[].tracking can't change in /on_status and /on_confirm
fulfillments[] start and end time.timestamp is missing for fulfillments states "Order-picked-up", "Out-for-delivery", "Order-delivered"
Delhivery - compliance check
- /search, /init - shouldn't have tracking;
- /init:
- remove the entire payment block;
- billing.phone should be exactly 10 digits (no "+91");
- /confirm:
- billing.created_at, updated_at can't change here (should be same as what's in /init;
- /on_confirm:
- order.updated_at should be updated to Context.timestamp as default fulfillment state was added;
- /on_status_pickup:
- start.timestamp should be <= Context.timestamp (can't be a future timestamp);
- order.updated_at should be updated with latest timestamp;
- /on_status_delivered:
- end.timestamp can't be less than start.timestamp (how can order be delivered before pickup?);
- /on_update:
- order.updated_at should be updated to latest timestamp;
- /track:
- message.Tags is invalid;
Gofrugal Logistics Buyer App - compliance check
- /search (with Delhivery, LSN):
- schedule.holidays is mandatory key (can be empty);
- for inter-city shipments, dimension is also required;
Zeitgeist Retail - compliance check
Flow 1
/on_search
- @ondc/org/contact_details_consumer_care should be in the format "name,email,contactno" in /bpp/providers[0]/items
- bpp/providers/categories is invalid property
- bpp/providers/locations has many invalid attributes (refer API contract)
- serviceability constructs (defined in /locations/circle and /tags) are conflicting
- items/descriptor values can't be empty
- items/fulfillments_id is an invalid attribute (fulfillment_id is already present)
- use correct mapping as per the enhanced subcategory list
/on_select
- /fulfillments[0]/@ondc/org/TAT (O2D) in /on_select can't be equal to @ondc/org/time_ship (O2S) in /on_search
- packing,tax,discount,misc should not be present if 0 in quote/breakup. Also, why are they declared twice, even though there is only one fulfillment created?
- Delivery charge should only be declared once.
- context/key is invalid property (to be removed from all the APIs)
/on_init
- provider/descriptor is not required
- buyer app finder fee can't change in /payment
- /fulfillments/location/address/door is an invalid attribute
/on_confirm
- /fulfillments/0 must have required property '@ondc/org/provider_name'
- context/timestamp difference between /on_confirm and /confirm should be smaller than 5 sec
- order/updated_at timestamp should be updated as per the context.timestamp (can't be future dated)
- billing object mismatches in /confirm and /on_confirm
- payment object mismatches in /confirm & /on_confirm
- Incorrect time ranges for shipment and delivery of items in /start and /end
/on_status (Completed)
- all the previous unsolicited fulfillment states should be shared for validation
- Billing object mismatches in /confirm and /on_status
- order/created_at timestamp can't change (should remain same as in /confirm)
- delivery timestamp (/end/time/timestamp) can't be before pickup timestamp (start/time/timestamp)
- order/updated_at timestamp can't be future dated (should match context/timestamp)
/on_update
- must have required property 'created_at'
- must have required property 'updated_at'
- /quote must have required property 'ttl'
- /quote/breakup/ must have required property 'title'
- fulfillment timestamps can't change
- item with count=0 should not be present in /items
Flow 2
- How is location non-serviceable if serviceability is defined as PAN India
Flow 4
- Not as per the test case scenario. (quantity should be part fulfilled)
Check Flow 2,3 4,5 for similar issues raised in Flow 1
SnapBizz - compliance check
Flow 1
- key is an invalid attribute in context
/on_search
- /message/catalog/bpp/providers/items/@ondc/org/statutory_reqs_prepackaged_food must have required property 'imported_product_country_of_origin'
- store enable/disable timestamp (/bpp/providers/time/timestamp) must match context.timestamp
- @ondc/org/contact_details_consumer_care should be in the format "name,email,contactno" in /bpp/providers/items
/on_select
- /fulfillments/@ondc/org/TAT (O2D) in /on_select can't be equal to @ondc/org/time_ship (O2S) in /on_search
- @ondc/org/returnable and @ondc/org/cancellable not required in /items
- @ondc/org/TAT for 'Immediate Delivery' can be 60 min (max)
/on_init
- Discrepancies between the quote object in /on_select and /on_init
(why are duplicate items added with price.value 0) - item quantity not required in quote.breakup
/on_confirm
- order.updated_at timestamp should be updated as per the context.timestamp (since default fulfillment state is added)
- Billing object mismatches in /confirm and /on_confirm
(created_at and updated_at timestamps should be RFC 3339 UTC format) - Discrepancies between the quote object /on_select and /on_confirm
(similar issues as on_init, ttl has also changed)
/on_status_pending
- Invoice url must be present as part of documents objects (only in Order-picked-up state and thereafter)
- how is /items/tag/status 'Return_Approved' when order has not been delivered yet
- /fulfillments/start/time pickup time should not be present until order is picked
- /fulfillments/end/time delivery time should not be present until order is delivered
- Billing object mismatches in /confirm and /on_status_pending (same issue as /on_confirm)
- order/created_at timestamp can't change (should remain same as in /confirm)
- order.updated_at timestamp should match context timestamp for /on_status_pending api
- name is not required in order/state/descriptor in /on_status
- @ondc/org/TAT and @ondc/org/category not required in /fulfillments in /on_status
- extra attributes such as @ondc/org/withholding_amount,@ondc/org/return_window, etc not required in payment object in /on_status(refer API contract v1.1.0)
/on_status_packed
- pickup and delivery time cannot be provided for fulfillment state 'packed'
- similar issues as /on_status_pending
/on_status_picked
- /fulfillments/end/time delivery time should not be present until order is delivered
- Timestamp for /on_confirm api cannot be greater than or equal to /on_status_picked api
- Message Id cannot be same for different sets of APIs
- order/created_at timestamp can't change (should remain same as in /confirm)
- order created_at timestamp can't be equal to updated_at timestamp
- order/updated_at timestamp can't be less than the pickup time
/on_status_out_for_delivery
- delivery time cannot be provided
- pickup time should be match the pickup time in /on_status_picked
/on_status_delivered
- /fulfillments/state/descriptor/code must be const = 'Order-delivered' (instead of 'Order delivered')
- context/timestamp of /on_status_picked api cannot be equal to /on_status_delivered api
- Message Id cannot be same for different sets of APIs
- order/created_at timestamp can't change (should remain same as in /confirm)
- order created_at timestamp can't be greater than or equal to updated_at timestamp
/on_update
- fulfillment start timestamp is mandatory when fulfillment state is Order-delivered
- fulfillment end timestamp is mandatory when fulfillment state is Order-delivered
- invalid attributes in payment object (similar issue as /on_status)
Flow 2
- similar issues as Flow 1
/on_select
- how is the same area_code non-serviceable and serviceable both
/on_cancel
- appropriate 'cancellation_reason_id' should be used (refer Order cancellation codes)
Flow 3
- similar issues as Flow 1
/on_status
- all unsolicited /on_status calls should be provided for different fulfillment states
/on_update
- return flow is missing (refer to test case scenrios)
Flow 4, Flow 5
- similar issues as Flow 1 and Flow 3
/on_select
- error object missing in case of selected item quantity unavailable
Kindly make sure similar issues in all the flows are fixed
NowFloats - compliance check
Flow 1
-
/on_search
- /message/catalog/bpp/providers/0 must have required property 'ttl'
- /message/catalog/bpp/providers/0/descriptor must have required property 'long_desc'
- /message/catalog/bpp/providers/0/descriptor must have required property 'short_desc'
- /message/catalog/bpp/providers/0/locations/0/time/schedule must have required property 'holidays'
- /message/catalog/bpp/providers/0/items/category_id must be equal to one of the non-deprecated category ids in enhanced sub-category list
- /message/catalog/bpp/providers/0/items/@ondc/org/statutory_reqs_prepackaged_food must be object
- /message/catalog/bpp/providers/0/items/@ondc/org/statutory_reqs_packaged_commodities must be object
- /message/catalog/bpp/providers/0/items/@ondc/org/mandatory_reqs_veggies_fruits must be object
- invalid attributes "@ondc/org/fssai_license_no", "ttl" in /bpp/providers/locations
- /message/catalog/bpp/providers/0/fulfillments/0/contact/phone must NOT have more than 11 characters
- store enable/disable timestamp (/bpp/providers/time/timestamp) must match context/timestamp
- Either one of fixed (range) or split (frequency and times) timings should be provided in /bpp/providers[0]/locations[0]/time
- @ondc/org/contact_details_consumer_care should be in the format "name,email,contactno" in /bpp/providers[0]/items
- location in serviceability construct should be one of the location ids (bpp/providers[0]/locations)
- category in serviceability construct should be one of the category ids (bpp/providers[0]/items/category_id)
-
/on_select
- /quote/breakup/price/value must be string
- /quote/breakup/item/quantity/maximum/count must be string
- /quote/breakup/item/quantity/available/count must be string
- /quote/breakup/item/price/value must be string
- /fulfillments[0]/@ondc/org/TAT (O2D) in /on_select can't be smaller than @ondc/org/time_ship (O2S) in /on_search
- invalid attributes updated_at and updated_by in /fulfillments[0]/state
-
/on_init
- /payment must have required property '@ondc/org/buyer_app_finder_fee_type'
- /payment must have required property '@ondc/org/buyer_app_finder_fee_amount'
- /payment/@ondc/org/settlement_details/0/settlement_type must be equal "upi" (in lower case)
- /quote/breakup/item/quantity is not required
- many optional attributes in payment object ("type", "collected_by, "@ondc/org/withholding_amount", "@ondc/org/return_window", "@ondc/org/settlement_basis", "@ondc/org/settlement_window")
-
/on_confirm
- /fulfillments/0 must have required property '@ondc/org/provider_name'
- /fulfillments/0/start/location/descriptor must have required property 'name'
- /fulfillments/0/start/contact must have required property 'phone'
- /fulfillments/0/end/location/address must have required property 'area_code'
- invalid attributes "updated_at", "updated_by" in /fulfillments
- order/updated_at timestamp should be updated as per the context/timestamp
- items[0].fulfillment_id mismatches for Item c576311f-f8ca-4d95-8fcf-fa09b7572f9f in /on_select and /on_confirm
- items[1].fulfillment_id mismatches for Item c75ee93c-9f3a-479c-b54d-46fb7f4bcd30 in /on_select and /on_confirm
- /fulfillments/start/location/descriptor can't be empty
-
/on_status (both)
- must have required property 'payment'
- must have required property 'created_at'
- must have required property 'updated_at'
- /billing must have required property 'created_at'
- /billing must have required property 'updated_at'
- /billing/address must have required property 'building'
- /fulfillments/0 must have required property '@ondc/org/provider_name'
- /fulfillments/0/start/location/descriptor must have required property 'name'
- /fulfillments/0/start/contact must have required property 'phone'
- /fulfillments/0/end must have required property 'time'
- /fulfillments/0/end/location/address must have required property 'area_code'
- /quote/breakup/price/value must be string
- /quote/breakup/item/price/value must be string
- invalid attributes "updated_at", "updated_by" in /fulfillments
-
/on_status (unsolicited)
- /fulfillments/end/time missing
- /fulfillments/end/time/timestamp (delivery time) must match context/timestmap
- unsolicited /on_status for order shipping (Order-picked-up) is missing
- /fulfillments/start/time/timestamp (pickup time) must match timestamp when fulfillment state is Order-picked-up
-
/on_update
- must have required property 'payment'
- must have required property 'created_at'
- must have required property 'updated_at'
- /fulfillments/0 must have required property '@ondc/org/provider_name'
- /fulfillments/0/start/location/descriptor must have required property 'name'
- /fulfillments/0/start/contact must have required property 'phone'
- /fulfillments/0/end must have required property 'time'
- /fulfillments/0/end/location/address must have required property 'area_code'
- /quote/breakup/price/value must be string
- /quote/breakup/item/price/value must be string
- item with id: ad56392e-c20a-4c60-97b2-7b4c38e5e9aa in quote.breakup[0] does not exist in items[]
- item with id: ad56392e-c20a-4c60-97b2-7b4c38e5e9aa in quote.breakup[1] does not exist in items[]
- delivery with id: 5d262036-26cb-4ad8-aab0-3d3a91d24da0 in quote.breakup[2] does not exist in fulfillments[]
- new fulfillment should not be created when return state is "Return_Initiated"
- invalid /items object, the returned item can't have 2 fulfillments (Refer API contract v1.1.0)
- invalid fulfillment object /fulfillments/1 for Return_Initiated state
- Why is a new fulfillment object appended in fulfillment list for every return status update (Refer API Contract)
- Invalid return states in /fulfillments/state/descriptor/code (should be Pending, Order-picked-up, Order-delivered)
- start and end location should change in case of ReverseQC fulfillments
- quote is only updated when the state is either "Return_Picked" or"Liquidated"
- context/message_id for all unsolicited on_update associated with an update should remain same to track that particular return request
Flow 2
- similar issues as Flow 1
- invalid schema for on_select (other address), on_cancel
Flow 3
- similar issues as Flow 1
- why is the quote getting updated even when the return is rejected?
Flow 4
- similar issues as Flow 1
- status of return should be updated through unsolicited on_update
- precision of price values must be upto 2 decimal digits
Flow 5
- similar issues as Flow 1
Digiit - compliance checks
Flow1
/on_search:
categories.duration should not be PT1M
/on_init:
payment.type and collected_by should not be null
/on_confirm:
fulfillments.tracking should be boolean
created_at does not match confirm context timestamp - "2023-06-15T06:38:44.607Z"
/on_status:
payment.type and collected_by should not be null
/on_status_pickup:
end time cannot be provided before order is delivered
/on_status_out_for_delivery:
end time cannot be provided before order is delivered
Flow2
Similar issues as Flow 1
MedPay - compliance check
Flow 1
-
/on_search
- bpp/providers/descriptor/ images and symbol can't be empty.
- /message/catalog/bpp/providers/0/items/quantity: maximum/count and available/count must be string
- /message/catalog/bpp/providers/0/items/3/descriptor/images must NOT have fewer than 1 items
- /message/catalog/bpp/providers/0/tags/0 must be object
- context/timestamp difference between /on_search and /search should be smaller than 5 sec
- available count of item should be smaller or equal to the maximum count (/bpp/providers[0]/items/quantity)
- bpp/providers/locations gps coordinates must be specified with a minimum precision of six decimal places.
-
/on_select
- /quote/breakup/item/quantity/maximum/count must be string
- /quote/breakup/item/quantity/available/count must be string
- /quote/breakup/4 must have required property '@ondc/org/item_id'
- available count can't be greater than maximum count for item id: 1002-3810-3036-9631_384348
- available count can't be greater than maximum count for item id: 1002-3810-3036-9631_384255
- quote.price.value 3173.0 does not match with the net price breakup 3553.76 (if items are tax inclusive, then tax line item should not be present)
- "packing" line item should not be present if value is 0
-
/on_init
- must have required property 'provider_location' (instead of provider/locations)
- /items/ must have required property 'quantity'
- /quote/breakup/4 must have required property '@ondc/org/item_id'
- Quoted Price 3173 does not match with Net Breakup Price 3553.76 in /on_init
- quote/breakup/item/quantity is not required
- settlement_status is invalid in /payment/@ondc/org/settlement_details
-
/on_confirm
- /fulfillments/state/descriptor/name is invalid attribute
- /fulfillments/0/start/location must have required property 'id'
- /fulfillments/0/start/location must have required property 'descriptor'
- similar issues for quote object as mentioned above
- context/timestamp difference between /on_confirm and /confirm should be smaller than 5 sec
- order.updated_at timestamp should be updated as per the context.timestamp (since default fulfillment state is added)
-
/on_status (order_delivered)
- /documents/0/label must be equal to constant (Invoice)
- order/updated_at must match context/timestamp
-
/on_update (return flows)
- many invalid attributes in /items[1]/tags (only status should be present)
- ReverseQC fulfillment should not be created in "Return_Initiated" state (created only when return is approved)
- ReverseQC fulfillment in case of "Return_Approved" and thereafter should have fulfilment state as Pending , Order-picked-up and Order-delivered (/fulfillments/1)
- How is buyer refund settlement trail appended to /payment/@ondc/org/settlement_details (Return_Picked state ) even before refund is initiated?
- item's unit price in quote/breakup should not be removed (in return picked and delivered states)
Flow 2
- similar issues as Flow 1
- "delivery" line item should not be present when location is Non-serviceable (in on_select and thereafter)
Flow 3,5
- similar issues as Flow 1
Flow 4
- similar issues as Flow 1
/on_select
- "item quantity unavailable" domain error is invalid when quantity is available in the inventory (quantity/available/count)
eSamudaay - Logistics BAP - compliance check
Happy-Flow
/search
- fullfillment/end/location/address/area_code must be a valid area code (instead of gps)
- How is buyer's and seller's location same? (same building?)
- Avoid copying test data from the contract
- value of payload should be included within "@ondc/org/payload_details" object
/init
- share the /search request for this txn
- "building" attribute should be used in start and end /location/address (instead of the deprecated "door")
- /fulfillments/start/person object is not required for seller's location
- payment settlement details should not be sent in case of Prepaid orders (since seller-app will be the settlement counterparty, it will be received in /on_init)
/confirm
- billing timestamps (created_at and updated_at) should remain the same as in /init
RTS support through /update should be present in the logs
Cancel-Flow
- similar issues as above flow
- "004" is a deprecated cancellation_reason_id (use "006" instead)
Uengage - compliance check
Flow 1:
- /on_search:
- locations.address: all keys should have valid values;
- locations.address: state is "Chandigarh" but city is "Bangalore";
- item.price.value should be string;
- serviceability requires location & category
- fulfillment.contact.phone is either 10 or 11 digit no only (no "+");
- /on_confirm:
- fulfillment.start.contact.phone: same issue as above;
- fulfillment.end.person.name has contact person name in /confirm, this can be mapped to same key in /on_confirm (instead of mapping to fulfillment.customer.person.name);
- /on_status APIs:
- fulfillment.start.time.timestamp needs to be set to the time of pickup (mandatory);
- fulfillment.end.time.timestamp needs to be set to the time of delivery (mandatory);
For all APIs: - billing.created_at & updated_at are defined by buyer app in /init and should remain the same as the buyer app doesn't change the billing details;
- order.created_at is defined by buyer app in /confirm and will remain the same in all APIs. updated_at should be updated in all APIs where the states are updated;
- /on_update: quote should have updated order value after the item return has been accepted;
Qaddoo - compliance check
All the 5 flows should be shared as per the test case scenarios
Following payloads must be present in the logs
- search by item with on_search response
- /update API for refund calculation (wherever applicable)
nStore - compliance check
Logistics buyer app - logs with Delhivery:
- /confirm - start.person.name is mandatory;
Innobits - compliance check
- Retail Seller App:
- logs need to be submitted for all flows in the test case scenarios here;
Santhe - compliance check
Flow 1
/search
- context/ttl should PT30S as per the API Contract
- search by item should be implemented (for logs clearance) as per the API contract
/select
- /message/order/items/fulfillment_id is an invalid attribute
/init
- billing.created_at should match context.timestamp
- billing.updated_at should match context.timestamp
- items/fulfillment_id should match with fulfillment id created in /on_select
- /fulfillments/id should match with the fulfillment id created in /on_select
- items/location_id is not required
- billing/address/area_code is not a valid pincode
/confirm
- '@ondc/org/buyer_app_finder_fee_type' must be "percent" instead of "percentage"
- billing object mismatches in /init and /confirm (name is different)
- /quote/breakup must have item's unit price
/status
- context/ttl is missing.
/update
- /message/order/items/tags/reason_code must be as per the approved reason codes
/update (refund)
- settlement_amount calculation is incorrect
Flow 2, 3, 4
- similar issues as Flow 1
Flow 5
/cancel
- /message/cancellation_reason_id must be as per the approved reason codes
ITCStore - compliance check
Flow 1
- /on_search:
- item.category_id: use one of the non-deprecated categories from this list;
- contact_details_consumer_care should be in this format (as per the API contract): "name,email,contactno";
- difference in timestamp between /search & /on_search is > 10sec. Why?
- /on_select:
- difference in response between /select & /on_select is > 4 sec. This will timeout in prod.
- /on_confirm:
- billing.created_at & updated_at timestamp changed. It needs to be the same as what was set in /init;
- following keys need to be removed: withholding_amount, return_window, settlement_basis, settlement_window;
- order.updated_at should be updated to Context.timestamp;
- /on_status_picked:
- message_id is same as /on_confirm. This is incorrect. Every unsolicited call should have a new message_id;
- building & locality in billing & fulfillment address has spaces inserted which is wrong. Should be the exact info from /init;
- when order is picked, the pickup time (fulfillment.start.time.timestamp) needs to be provided;
- start.contact.phone is in different format from what was provided in /on_confirm;
- order.updated_at should be updated to Context.timestamp;
- /on_status_delivered:
- Check Context.timestamp (cut & paste from somewhere?);
- same issues as 4 above (in this case, the delivery time needs to be provided);
- /on_update:
- quote.breakup only has unit price, not total price;
Flow 3
- /on_update: return is rejected which means the order value (total & breakup for quote) should be the same as in /on_confirm;
Channelier (LSP BAP) - compliance check
Flow 1
/init
- fulfillment/id should be one of the fulfillment id returned in /on_search
- payment object is not required in init
/update
- start instructions are mandatory in case 'ready_to_ship' = yes
Flow 2
- similar issues as above
- unsolicited cancelation should be done from LSP with appropriate reason code (/cancel is not required)
/cancel
- Message Id cannot be same as /confirm Api
Mystore buyer app - compliance check
- /init:
- address.locality is mandatory attr key;
- billing.created_at, billing.updated_at is mandatory;
- fulfillment.end.location.gps has changed between search & init. Why was /select not called? This is required as the quote is frozen in /on_select and can't change in /on_init;
- /confirm:
- address.locality is mandatory attr key;
- order.updated_at is mandatory;
- fulfillment.end.person.name is mandatory;
- in payment block:
- buyer finder fee type is "percent" (lowercase p);
- withholding amt / return window / settlement basis / settlement window are now deprecated;
- No APIs for /cancel, /update, /status?
DTDC - compliance check
Flow 1 (Delivered Flow)
/search (Mytra Money)
- either of the split timings or fixed timings (both time and frequency) should be provided in /provider (LSP should have sent NACK)
- dimensions are required for P2H2P shipments (LSP should have sent NACK)
/on_search
- /message/catalog/bpp/providers/items/time must have required property 'timestamp' (refers to the date & time for which duration is provided)
/on_init
- delivery charges should be inclusive of tax
- settlement_counterparty should be 'seller app' in @ondc/org/settlement_details as payment is collected by BAP
/on_update
- why has order/state changed to 'In-progress'
- @ondc/org/linked_order and billing object are not required
/on_status
- name is not required in /order/state/descriptor/code
- pickup time (fulfillments/start/time/timestamp) should match context.timestamp for fulfillment state 'Order-picked-up'
- order.created_at and order.updated_at should be provided
- billing object mismatch between /init and /on_status (created_at and updated_at missing)
- message_id should be a string for /on_status_delivered and /on_status_agent_assigned
- delivery time (fulfillments/end/time/timestamp) should match context.timestamp for fulfillment state 'Order-delivered'
Flow 2 (Cancellation Flow)
- similar issues as Flow 1
/on_cancel
- flow for unsolicited cancellation by the seller should be provided
Shiprocket - compliance check
- /on_confirm - order.created_at can't be changed as it was created in /confirm;
- /on_update - shipping label pdf should be sent in fulfillment.start.instructions.images;
- /on_status (pickup) - fulfillment.start.time.timestamp is mandatory;
- /on_status (delivered) - fulfillment.end.time.timestamp is mandatory;
- /on_cancel - fulfillment.id should be same as in /on_confirm but fulfillment state code should be set to cancelled;
Shopalyst - compliance checks
Flow1
- /on_search:
- "contact_details_consumer_care" should be in the same format as in the contract i.e. "name.email.contact#";
- not sure why fulfillment_id is same as location.id. What happens if there are multiple fulfillments?
- item.fulfillment_id here should identify fulfillment type (Delivery, Self-Pickup, etc.). In this case, it should be "1" which is what's mapped to delivery in bpp/fulfillments;
- /on_status:
- timestamp > timestamp for /on_confirm; however, order.updated_at doesn't show the same updated_at as in /on_confirm;
- /on_status_pick has same order.updated_at as /on_status_pack even though it happened later;
- quote.ttl which was 15 min in pre-order APIs (/on_select, /on_init, /on_confirm) becomes 1 day in post-order APIs (/on_status*);
- return liquidated state should be thru /on_update (with same message_id as the original /update);
Gofrugal retail seller app - compliance check
Flow 1
- /on_status_packed:
- the quote object has changed from what was sent in /on_confirm with the addition of breakup line items for tax. Why? Also, when taxes are added, it is at the item level and the item_id has to be assigned;
- /on_status_pickedup:
- order has been picked up means - fulfillment.start.time.timestamp is mandatory (done correctly). However, fulfillment.end.time.timestamp can only be assigned after order is delivered (assigning here is incorrect);
- /on_status_outfordelivery:
- above timestamps in 2 changed again. Why? Once, order is picked up & pickup time assigned (start.time.timestamp), it shouldn't change;
- /on_status_delivered:
- same issue as 3 above;
- /on_update:
- why's a new fulfillment id assigned here? (same issue in flow 3 as well)
- return states are capital case ("Liquidated", not "LIQUIDATED; "Return_Rejected", not "RETURN_REJECTED");
SellerApp - compliance check
- /on_search:
- category "Packaged Commodities" is deprecated and can't be used. Pls use one of the non-deprecated categories from this list and use the same for serviceability construct as well;
- for category "Home \u0026 Decor", you should escape the "&" so that direct string matches don't throw exceptions;
- item.quantity.available.count & item.quantity.maximum.count needs to be sent as string (as per contract); otherwise, your stores won't show up on any buyer app;
- /on_select:
- item.quantity.available.count & item.quantity.maximum.count are string (as per contract);
- /on_init:
- how did quote.price change here compared to /on_select? This isn't allowed;
- /on_confirm:
- how did order.created_at timestamp get changed here? This has to be the same as what was set in /confirm;
- fulfillment.start.location.descriptor.name is missing;
- /on_status_packed:
- fulfillment.start.location.descriptor.name is missing;
- /on_status_pickedup:
- fulfillment.start.location.descriptor.name is missing;
- /on_update_liquidated:
- pls use the same message_id as /update;
- quote should be updated to latest order value (liquidated means seller has agreed to return, without wanting the item back), so that buyer app can calculate refund due to seller;
- /on_update_return_pending:
- pls use the same message_id as /update;
- 7 & 8 also apply to flow 3 & other flows with /update;
Flow 2
- /on_init_different_address: this payload is invalid. It needs to be compliant with the contract (check sample payload documented under /on_select in the contract). Also use one of the 3* error codes (for seller app) instead of reusing the LSP error code
eSamudaay - compliance check
Flow 1:
- /on_search:
- provider.time.timestamp for "enable" should exactly match Context.timestamp;
- for grocery commodities, pls use category_id from this list here and not any of the deprecated category_ids;
- /on_init:
- why is billing.updated_at timestamp different from billing.created_at? Both are maintained by the buyer app;
- /on_confirm:
- order.updated_at should be updated to Context.timestamp since default fulfillment state added;
- For all APIs:
- billing.created_at, updated_at should be the same as what was sent in /init unless the buyer app subsequently changes billing info through /update;
- order.created_at should be the same as what was sent in /confirm but order.updated_at has to be updated in all callback APIs where updates are made to order state;
Logs need to be submitted for flows 3 & 4 as well.
Plotch Seller App - compliance check
Flow 1:
- No /on_select, hence can't verify fulfillment TAT promised;
- /on_confirm:
- fulfillment.start.location (descriptor, id, gps) are different from what's in /on_search. This should be the same since the pickup location is the same as the provider location in /on_search;
- fulfillment.rateable not available;
- /on_status_ready_for_pickup_flow1 - fulfillment id is "01" while in earlier APIs (like /on_init), it's "1";
- /on_status_dispatched_flow1:
- fulfillment.start.timestamp > Context.timestamp (can't be future dated);
- payment.uri is different from what's in /on_confirm;
- payment.params.transaction_id missing;
- /on_status_delivered_flow1:
- same issues as 5 above;
- /on_update_return_initiated:
- not sure how fulfillment category is "Immediate Delivery"?
- flow for return with reverse QC follows: return initiated -> return approved -> return picked -> return delivered and reverse qc fulfillment is initiated at "return approved";
- other states should be sent with /on_update (with the same message id as /update to handle an issue with current API where individual return requests can't be tracked otherwise)
Kotak - compliance check
There are issues with your logs. Request you to verify with the log validation utility here before resubmitting
Magicpin - compliance check
Flow 1
- /on_search:
- bpp/providers.time.timestamp must match Context.timestamp;
- fulfillments.contact.phone can be 10 or 11 digits only (no "+");
- time.schedule.holidays is mandatory (can be empty);
- /on_init, /on_confirm:
- billing.created_at, billing.updated_at timestamp should remain the same as what it was set in /init (since buyer app sets it). This is being changed in /on_init, /on_confirm, etc.;
- /on_confirm:
- order.created_at should remain the same as what is set in /confirm (as buyer app creates it);
- /on_status_delivered_flow:
- both pickup time (fulfillment.start.time.timestamp) and delivery time (fulfillment.end.time.timestamp) needs to be set;
Flow 2
- /on_init_not_serviceable_flow:
- since this is not serviceable, there should be no delivery charge;
Flow 5
- /on_cancel_flow: if order is cancelled, value (quote.price) should become 0;
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.