{"service":"reclaim-delhivery-mock","version":"1.0.0","description":"Mock of Delhivery B2C APIs (+ Delhivery Maps address validation) for the Reclaim agent. Not affiliated with Delhivery.","endpoints":[{"method":"GET","path":"/c/api/pin-codes/json/","endpoint":"pincode"},{"method":"POST","path":"/api/cmu/create.json","endpoint":"manifest"},{"method":"POST","path":"/fm/request/new/","endpoint":"pickup_request"},{"method":"GET","path":"/api/v1/packages/json/","endpoint":"tracking"},{"method":"POST","path":"/api/p/edit","endpoint":"edit"},{"method":"POST","path":"/validate","endpoint":"validate"}],"scenario_selection":["Header  X-Mock-Scenario: <name>","Path    /scenario/<name>/<documented path>  (e.g. base URL https://<host>/scenario/no_rider)","Env     MOCK_SCENARIO=<name>  (server default)"],"scenarios":[{"name":"normal","kind":"normal","applies_to":"all","description":"Default successful behaviour."},{"name":"no_rider","kind":"synthetic","applies_to":["manifest","pickup_request"],"description":"Reverse-pickup manifest (payment_mode Pickup) and pickup-request creation fail: no field executive available. Delhivery does not document such an API error."},{"name":"no_rider_after_manifest","kind":"synthetic","applies_to":["tracking"],"description":"Manifest succeeds normally, but tracking shows the reverse pickup still \"Scheduled\" with a failed pickup attempt (no field executive). Tests that \"created\" is not \"picked up\"."},{"name":"timeout","kind":"synthetic","applies_to":"all","description":"Request is processed, then the response is held for MOCK_TIMEOUT_MS and returned as 504. Clients with a shorter timeout see a timeout; the operation may nevertheless have taken effect."},{"name":"malformed","kind":"synthetic","applies_to":"all","description":"HTTP 200 with Content-Type application/json but a truncated, unparseable body."},{"name":"malformed_fields","kind":"synthetic","applies_to":"all","description":"HTTP 200 with valid JSON whose key fields are missing or have the wrong type."},{"name":"low_balance","kind":"documented","applies_to":["manifest","pickup_request"],"description":"Insufficient wallet balance ('client manifest charge API failed due to insufficient balance')."},{"name":"nsz","kind":"documented","applies_to":["pincode","manifest"],"description":"Force non-serviceable pincode: empty delivery_codes / \"<pin> is non serviceable pincode\"."},{"name":"duplicate_order","kind":"documented","applies_to":["manifest"],"description":"Manifest fails with \"Duplicate Order Id\"."},{"name":"warehouse_inactive","kind":"documented","applies_to":["manifest"],"description":"Manifest fails with rmk \"Client-Warehouse is not active.\""},{"name":"pickup_already_exists","kind":"documented","applies_to":["pickup_request"],"description":"Pickup request fails: an open pickup request already exists for the location."},{"name":"auto_pickup","kind":"documented","applies_to":["pickup_request"],"description":"Pickup request fails: client is on auto pickup."},{"name":"unknown_waybill","kind":"documented","applies_to":["tracking","edit"],"description":"Tracking returns \"Data does not exists for provided Waybill(s)\"."},{"name":"rate_limited","kind":"documented","applies_to":["tracking"],"description":"Tracking returns HTTP 403 Forbidden (rate limit / AWS WAF)."},{"name":"bad_address","kind":"documented","applies_to":["validate"],"description":"Address Validation returns quality \"not_ok\", reason \"invalid_or_junk\" (documented enum values)."},{"name":"rvp_open","kind":"stage","applies_to":["tracking","edit"],"description":"PP Open"},{"name":"rvp_scheduled","kind":"stage","applies_to":["tracking","edit"],"description":"PP Scheduled (default for a new reverse pickup)"},{"name":"rvp_fe_dispatched","kind":"stage","applies_to":["tracking","edit"],"description":"PP Dispatched — field executive out to collect"},{"name":"rvp_in_transit","kind":"stage","applies_to":["tracking","edit"],"description":"PU In Transit — picked up, moving to facility"},{"name":"rvp_pending","kind":"stage","applies_to":["tracking","edit"],"description":"PU Pending — at origin DC"},{"name":"rvp_out_to_client","kind":"stage","applies_to":["tracking","edit"],"description":"PU Dispatched — out for delivery to client warehouse"},{"name":"rvp_dto","kind":"stage","applies_to":["tracking","edit"],"description":"DL DTO — delivered back to client (terminal)"},{"name":"rvp_canceled","kind":"stage","applies_to":["tracking","edit"],"description":"CN Canceled"},{"name":"rvp_closed","kind":"stage","applies_to":["tracking","edit"],"description":"CN Closed"},{"name":"fwd_manifested","kind":"stage","applies_to":["tracking","edit"],"description":"UD Manifested (default for a new forward shipment)"},{"name":"fwd_not_picked","kind":"stage","applies_to":["tracking","edit"],"description":"UD Not Picked"},{"name":"fwd_in_transit","kind":"stage","applies_to":["tracking","edit"],"description":"UD In Transit"},{"name":"fwd_pending","kind":"stage","applies_to":["tracking","edit"],"description":"UD Pending"},{"name":"fwd_dispatched","kind":"stage","applies_to":["tracking","edit"],"description":"UD Dispatched"},{"name":"fwd_delivered","kind":"stage","applies_to":["tracking","edit"],"description":"DL Delivered (terminal)"},{"name":"fwd_rt_in_transit","kind":"stage","applies_to":["tracking","edit"],"description":"RT In Transit (converted to return)"},{"name":"fwd_rto","kind":"stage","applies_to":["tracking","edit"],"description":"DL RTO (returned to origin, terminal)"}],"default_scenario":"normal","auth_enforced":true,"openapi":"/openapi.json","contract":"docs/delhivery-api-contract.md"}