Skip to content

Onboarding Pincode

The Service provides APIs for managing partners and their location coverage data. This service enables the creation and management of partners and their serviceable areas.

Base URL

For Serviceability Service:

Terminal window
# Production
https://apis.prayog.io/serviceability/v1
# Sandbox
https://sandbox-apis.prayog.io/serviceability/v1

For Partner Service:

Terminal window
# Production
https://apis.prayog.io/partner/v1
# Sandbox
https://sandbox-apis.prayog.io/partner/v1

Available Endpoints

API Endpoints

1. Create Partner (POST)

Creates a new partner in the system.

Endpoint

POST /partners

Request Body

FieldTypeRequiredDescription
codestringYesUnique partner code (snake_case format)
namestringYesPartner name (title case format)
partner_type_codestringYesType of partner (e.g., “direct”, “aggregator”)
global_ratingnumberYesGlobal rating (1-5)
global_prioritynumberYesGlobal priority (1-5)
parent_idstringNoID of parent partner (for aggregator partners)

Example Request

Terminal window
curl --request POST \
--url https://apis.prayog.io/partner/v1/partners/ \
--header 'content-type: application/json' \
--data '{
"code": "beacon_movers",
"name": "Beacon Movers",
"partner_type_code": "direct",
"global_rating": 3,
"global_priority": 3
}'

Success Response (201 Created)

{
"id": "7904de1b-2ba0-46c5-bb8c-394a5f2f0f40",
"code": "beacon_movers",
"name": "Beacon Movers",
"partner_type_code": "direct",
"global_rating": 3,
"global_priority": 3
}

Error Response (409 Conflict)

{
"error": {
"code": "PARTNER_ALREADY_EXISTS",
"message": "Partner with this code already exists"
}
}

2. List Partners (GET)

Retrieves a list of partners with pagination support.

Endpoint

GET /partners

Query Parameters

ParameterTypeRequiredDescription
pageintegerNoPage number (default: 1)
limitintegerNoItems per page (default: 100)
partner_type_codestringNoFilter by partner type (e.g., “aggregator”)

Example Request

Terminal window
curl --request GET \
--url 'https://apis.prayog.io/partner/v1/partners?partner_type_code=aggregator'

Success Response (200 OK)

{
"data": [
{
"id": "partner_id",
"code": "partner_name",
"name": "Partner Name",
"partner_type_code": "aggregator",
"global_rating": 3,
"global_priority": 3
}
],
"total": 1,
"page": 1,
"limit": 100
}

3. Create Partner Location Coverage (POST)

Creates location coverage for a partner, defining their serviceable areas.

Endpoint

POST /partners/{partner_id}/location-coverages

Path Parameters

ParameterTypeRequiredDescription
partner_idstringYesID of the partner

Request Body

FieldTypeRequiredDescription
postal_codestringYesPostal code for coverage
tat_daysintegerYesTurnaround time in days
delivery_modestringYesDelivery mode (“air” or “surface”)
country_codestringYesCountry code (e.g., “in”)
product_typestringYesProduct type (e.g., “travel_free”)
parcel_category_codestringYesCategory code (e.g., “ecomm”)
pickupbooleanYesWhether pickup is available
deliverybooleanYesWhether delivery is available
cod_availablebooleanYesWhether COD is available
insurancebooleanYesWhether insurance is available

Example Request

Terminal window
curl --request POST \
--url https://apis.prayog.io/serviceability/v1/partners/be9fdb7c-3767-4a3f-854a-037fb745916a/location-coverages \
--header 'content-type: application/json' \
--data '{
"postal_code": "713333",
"tat_days": 4,
"delivery_mode": "air",
"country_code": "in",
"product_type": "travel_free",
"parcel_category_code": "ecomm",
"pickup": true,
"delivery": true,
"cod_available": true,
"insurance": false
}'

Success Response (201 Created)

{
"id": "coverage_id",
"postal_code": "713333",
"tat_days": 4,
"delivery_mode": "air",
"country_code": "in",
"product_type": "travel_free",
"parcel_category_code": "ecomm",
"pickup": true,
"delivery": true,
"cod_available": true,
"insurance": false
}

Error Response (409 Conflict)

{
"error": {
"code": "COVERAGE_ALREADY_EXISTS",
"message": "Location coverage already exists for this partner and postal code"
}
}

Error Codes

CodeHTTP StatusDescription
INVALID_REQUEST400Invalid request format or missing required fields
PARTNER_NOT_FOUND404Partner not found
PARTNER_ALREADY_EXISTS409Partner with this code already exists
COVERAGE_ALREADY_EXISTS409Location coverage already exists
INTERNAL_SERVER_ERROR500Internal server error

Best Practices

  1. Partner Creation

    • Use snake_case for partner codes
    • Use title case for partner names
    • Set appropriate global rating and priority (1-5)
    • Specify parent_id for aggregator partners
  2. Location Coverage

    • Create separate entries for air and surface modes
    • Ensure postal codes are valid
    • Set appropriate TAT days based on delivery mode
    • Configure pickup and delivery availability accurately
    • Specify correct product_type and parcel_category_code
  3. Error Handling

    • Implement retry logic for failed requests
    • Handle 409 Conflict responses appropriately
    • Validate input data before making API calls
  4. Rate Limiting

    • Add delays between API calls to avoid rate limiting
    • Implement exponential backoff for retries
    • Monitor API response times and adjust accordingly