Utilities

Configuration APIs for payment gateways, home page banners, and the ONDC Issue & Grievance Management (IGM) system.

# Get PG Enable Status

Dynamically check which payment gateways are active for your platform and version. Call before showing payment options to avoid showing disabled PGs.

GEThttps://api.highwaydelite.com/ops-service/api/v1/pg-config
No Auth Required
Different Base URL: This endpoint uses https://api.highwaydelite.com/ops-service — NOT {{base_url}}.
Query Parameters
FieldTypeRequiredDescription
contextstringREQUIREDondc
featuresstringREQUIREDexperiences
platformstringREQUIREDweb | android | ios
versionstringREQUIRED1.1
Response — 200 OK
{
  "data": [
    { "pg": "razorpay",   "isEnabled": 1, "platformName": "web", "version": "1.1" },
    { "pg": "plural_upi", "isEnabled": 1, "platformName": "web", "version": "1.1" }
  ]
}

// isEnabled: 1 = active, 0 = disabled
Filter results where isEnabled = 1. Pass the enabled PG name (uppercased, e.g., "RAZORPAY") to Create Order as the pg field.

# Get Hero Sections by City

Fetch promotional hero banner carousel data for a specific city's home page.

GET{{base_url}}/hero-sections/city/:cityId
Bearer Token Required
Path Parameters
FieldTypeRequiredDescription
cityIdstringREQUIREDMongoDB ObjectId from GET /city: data.cities[n].id or GET /nearest-city: data.id. Example: 690db16605e92e251850de53
Response — 200 OK
[   // Direct array (NOT wrapped in "data")
  {
    "id": "6960997240205579cb54b614",
    "cityId": "690db16605e92e251850de53",
    "title": "Welcome to Delhi",
    "description": "Capital of India",
    "images": [
      { "downloadUrl": "https://s3.amazonaws.com/...pre-signed-url..." }
    ],
    "animationStyle": "FADE",
    "animationTime": 5,      // Seconds between auto-advance
    "displayOrder": 0,       // Sort ascending for correct order
    "isActive": true
  }
]
Response Format: Returns a direct array — NOT wrapped in "data". Image URLs are pre-signed S3 URLs valid for 24 hours only. Do not cache them. Sort banners by displayOrder ascending.

# Register Issue

Raise a customer complaint for a booking through the ONDC Issue & Grievance Management (IGM) system. Use when the QR code doesn't work, experience wasn't delivered, wrong item, payment issues, etc.

POST{{base_url}}/register-issue
Bearer Token Required
Request Body — application/json
FieldTypeRequiredSource / Description
cityCodestringREQUIREDUse * for non-city-specific, or valid ONDC city code
transactionIdstringREQUIREDGET /user/tickets: transactionId
bppIdstringREQUIREDFrom booking's onConfirmPayload.context.bpp_id
bppUristringREQUIREDFrom booking's onConfirmPayload.context.bpp_uri
categorystringREQUIREDONDC values: FULFILLMENT | PAYMENT | ITEM
subCategorystringREQUIREDFLM101 (not received) | FLM102 (quality) | ITM01 (wrong item)
namestringREQUIREDComplainant's full name
phonestringREQUIREDComplainant's phone number
emailstringREQUIREDComplainant's email
orderIdstringREQUIREDGET /user/tickets: orderId. Example: HDBAP0000001163
orderStatestringREQUIREDACTIVE | COMPLETED | CANCELLED
providerIdstringREQUIREDGET /item/slug: provider.id
itemIdstringREQUIREDItem UUID
itemQuantitynumberREQUIREDQuantity of items in the order
fulfillmentIdstringREQUIREDFrom booking's fulfillments[0].id
shortDescstringREQUIRED1-sentence issue summary. Example: "QR code not working at venue"
longDescstringREQUIREDDetailed issue description
sourceTypestringREQUIREDAlways CONSUMER for buyer-side issues
statusstringREQUIREDAlways OPEN for new issues
issueTypestringREQUIREDISSUE or GRIEVANCE (escalate to GRIEVANCE if unresolved after 3+ days)
imagesarrayOPTIONALEvidence image URLs. Can be empty []
userIdstringOPTIONALUser UUID from JWT token
Response — 201 Created
{
  "data": {
    "message": "successfully registered the issue",
    "issueId": "ce32896e-d57e-4c24-b9fb-651a574d75fa"   // Save for tracking
  }
}
Save the returned issueId and display it to the user as a reference number. Users can view their issues in GET /user/ticket/:transactionIdissues[] array.

# Common Error Responses

HTTP StatusMeaningAction
400Bad Request — invalid payloadCheck all required fields and data types
401Unauthorized — token expired or missingRe-call GET /auth/token for a fresh token
403Forbidden — insufficient permissionsCheck client role with the HD team
404Resource not foundVerify slugs, IDs, and path parameters
422Validation errorCheck field formats, types, and allowed enum values
503BPP service unavailableRetry after 5–10 seconds with same transactionId
ONDC NACK Errors: Even on HTTP 200/201, check onSelect.message.ack.status. If it returns "NACK", the BPP rejected the request. Error details are in message.error. If the BPP times out (30s window), retry the SELECT/INIT call with the same transactionId.