Skip to content

Location API Reference

Overview

The Location API allows partners to manage locations (warehouse and store) in the BebasKirim platform. You can create, update, list, and view location details.

Authentication

All API requests require authentication using API key and tenant identification:

  • Authorization: Bearer token authentication
  • X-Tenant-Id: Your tenant identifier
bash
curl -H "Authorization: Bearer YOUR_API_KEY" \
     -H "X-Tenant-Id: YOUR_TENANT_ID" \
     https://open.bebaskirim.com/api/partner/v1/locations

Base URL

  • Sandbox: https://open.bebaskirim.com
  • Production: https://api.bebaskirim.com

Endpoints

MethodEndpointDescription
GET/api/partner/v1/locationsList locations
GET/api/partner/v1/locations/{id}Get location detail
POST/api/partner/v1/locationsCreate new location
PUT/api/partner/v1/locations/{id}Update location

1. List Locations

Endpoint: GET /api/partner/v1/locations

Request Headers

  • Authorization: Bearer token (required)
  • X-Tenant-Id: Tenant identifier (required)

Query Parameters

ParameterTypeRequiredDescription
pageintegerNoPage number (default: 1)
per_pageintegerNoItems per page (default: 10, max: 100)
statusstringNoFilter by status: active, inactive
typestringNoFilter by type: store, warehouse, office, etc
searchstringNoSearch by name or code

Response

json
{
  "status": "success",
  "data": {
    "locations": [
      {
        "location_id": 1,
        "name": "Warehouse A",
        "code": "WH-001",
        "type": "warehouse",
        "address": "Jl. Warehouse A No. 123, Jakarta",
        "city": "Jakarta",
        "state": "DKI Jakarta",
        "zip": "12345",
        "country": "Indonesia",
        "status": "active",
        "is_default": true,
        "created_at": "2024-01-15T10:30:00Z",
        "updated_at": "2024-01-15T10:30:00Z"
      }
    ],
    "pagination": {
      "current_page": 1,
      "per_page": 10,
      "total": 25,
      "last_page": 3
    }
  }
}

Example Request

bash
curl -X GET "https://open.bebaskirim.com/api/partner/v1/locations?page=1&per_page=10&status=active" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "X-Tenant-Id: YOUR_TENANT_ID"

2. Get Location Detail

Endpoint: GET /api/partner/v1/locations/{id}

Request Headers

  • Authorization: Bearer token (required)
  • X-Tenant-Id: Tenant identifier (required)

Path Parameters

ParameterTypeRequiredDescription
idintegerYesLocation ID

Response

json
{
  "status": "success",
  "data": {
    "location": {
      "location_id": 1,
      "name": "Warehouse A",
      "code": "WH-001",
      "type": "warehouse",
      "address": "Jl. Warehouse A No. 123, Jakarta",
      "city": "Jakarta",
      "state": "DKI Jakarta",
      "zip": "12345",
      "country": "Indonesia",
      "status": "active",
      "is_default": true,
      "created_at": "2024-01-15T10:30:00Z",
      "updated_at": "2024-01-15T10:30:00Z"
    }
  }
}

Example Request

bash
curl -X GET https://open.bebaskirim.com/api/partner/v1/locations/1 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "X-Tenant-Id: YOUR_TENANT_ID"

3. Create Location

Endpoint: POST /api/partner/v1/locations

Request Headers

  • Authorization: Bearer token (required)
  • X-Tenant-Id: Tenant identifier (required)

Path Parameters

ParameterTypeRequiredDescription
namestringYesLocation name (max 100 characters)
codestringYesUnique location code per tenant (max 40 characters)
typestringYesLocation type (warehouse, fulfillment)
statusstringYesLocation status (active, inactive)
addressstringYesFull address (max 255 characters)
citystringYesCity name (max 255 characters)
statestringYesState/Province name (max 255 characters)
zipstringYesPostal/ZIP code (max 10 characters)
countrystringYesCountry name (max 100 characters)
subdistrictstringYesSubdistrict name (max 100 characters)
districtstringYesDistrict name (max 100 characters)
pic_namestringYesPerson in charge name (max 100 characters)
phonestringYesContact phone number (max 15 characters)
latitudestringNoLatitude coordinate (max 20 characters)
longitudestringNoLongitude coordinate (max 20 characters)
is_defaultbooleanNoMark location as default. Only one default location is allowed per tenant.
is_pickupbooleanNoMark location as pickup point
is_returnbooleanNoMark location as return point
origin_codestringNoOrigin code identifier (max 50 characters)

Request Body

json
{
  "name": "Warehouse A",
  "code": "WH-001",
  "type": "warehouse",
  "address": "Jl. Warehouse A No. 123, Jakarta",
  "city": "Jakarta",
  "state": "DKI Jakarta",
  "zip": "12345",
  "country": "Indonesia",
  "status": "active",
  "is_default": true
}

Response

json
{
  "status": "success",
  "data": {
    "location": {
      "location_id": 1,
      "name": "Warehouse A",
      "code": "WH-001",
      "type": "warehouse",
      "address": "Jl. Warehouse A No. 123, Jakarta",
      "city": "Jakarta",
      "state": "DKI Jakarta",
      "zip": "12345",
      "country": "Indonesia",
      "status": "active",
      "is_default": true,
      "created_at": "2024-01-15T10:30:00Z",
      "updated_at": "2024-01-15T10:30:00Z"
    }
  }
}

Example Request

bash
curl -X POST https://open.bebaskirim.com/api/partner/v1/locations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "X-Tenant-Id: YOUR_TENANT_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Warehouse A",
    "code": "WH-001",
    "type": "warehouse",
    "address": "Jl. Warehouse A No. 123, Jakarta",
    "city": "Jakarta",
    "state": "DKI Jakarta",
    "zip": "12345",
    "country": "Indonesia",
    "status": "active",
    "is_default": true
  }'

4. Update Location

Endpoint: PUT /api/partner/v1/locations/{id}

Request Headers

  • Authorization: Bearer token (required)
  • X-Tenant-Id: Tenant identifier (required)

Path Parameters

ParameterTypeRequiredDescription
namestringYesLocation name (max 100 characters)
typestringYesLocation type (warehouse, fulfillment)
statusstringYesLocation status (active, inactive)
addressstringYesFull address (max 255 characters)
citystringYesCity name (max 255 characters)
statestringYesState/Province name (max 255 characters)
zipstringYesPostal/ZIP code (max 10 characters)
countrystringYesCountry name (max 100 characters)
subdistrictstringYesSubdistrict name (max 100 characters)
districtstringYesDistrict name (max 100 characters)
pic_namestringYesPerson in charge name (max 100 characters)
phonestringYesContact phone number (max 15 characters)
latitudestringNoLatitude coordinate (max 20 characters)
longitudestringNoLongitude coordinate (max 20 characters)
is_defaultbooleanNoMark location as default. Only one default location is allowed per tenant.
is_pickupbooleanNoMark location as pickup point
is_returnbooleanNoMark location as return point
origin_codestringNoOrigin code identifier (max 50 characters)

Request Body

json
{
  "name": "Warehouse A Updated",
  "code": "WH-001",
  "type": "warehouse",
  "address": "Jl. Warehouse A No. 123, Jakarta",
  "city": "Jakarta",
  "state": "DKI Jakarta",
  "zip": "12345",
  "country": "Indonesia",
  "status": "active",
  "is_default": false
}

Response

json
{
  "status": "success",
  "data": {
    "location": {
      "location_id": 1,
      "name": "Warehouse A Updated",
      "code": "WH-001",
      "type": "warehouse",
      "address": "Jl. Warehouse A No. 123, Jakarta",
      "city": "Jakarta",
      "state": "DKI Jakarta",
      "zip": "12345",
      "country": "Indonesia",
      "status": "active",
      "is_default": false,
      "created_at": "2024-01-15T10:30:00Z",
      "updated_at": "2024-01-16T09:00:00Z"
    }
  }
}

Example Request

bash
curl -X PUT https://open.bebaskirim.com/api/partner/v1/locations/1 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "X-Tenant-Id: YOUR_TENANT_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Warehouse A Updated",
    "code": "WH-001",
    "type": "warehouse",
    "address": "Jl. Warehouse A No. 123, Jakarta",
    "city": "Jakarta",
    "state": "DKI Jakarta",
    "zip": "12345",
    "country": "Indonesia",
    "status": "active",
    "is_default": false
  }'

Status Codes

StatusDescription
activeLocation is active and usable
inactiveLocation is inactive