/mock-shipping-provider

Mock shipping provider

Primary LanguageGoApache License 2.0Apache-2.0

Mock Shipping Provider

This repository mock a shipping gateway provider.

Endpoints

Estimate

Look up price and estimated hour arrival for an item (with a list of providers) based on coordinates, dimension, and weight.

POST /estimate
Content-Type: application/json
Accept: application/json

{
  "sender": {
    "latitude": 1.234,
    "longitude": 1.234
  },
  "recipient": {
    "latitude": 1.234,
    "longitude": 1.234
  },
  "dimension": {
    "height": 1.234,
    "width": 1.234,
    "depth": 1.234
  },
  "weight": 1.234
}

Weight, height, and depth are in centimeters. Weight is in kilograms.

Response body:

{
    "estimation": [
        {
            "provider": "JNE",
            "estimated_price": 1234,
            "estimated_hour_arrival": 1234
        }
    ]
}

Order

Creates a new order. It recalculates the price and the hour of arrival. It returns a set of reference number and air waybill number that client should keep safe.

Once created, it will issue a webhook calls whenever there is a status change for the specified shipping order to the specified target URL that should be configured before.

POST /order
Content-Type: application/json
Accept: application/json

{
  "provider": "JNE",
  "sender": {
    "name": "John Doe",
    "phone_number": "628123456",
    "address": "string",
    "city": "string",
    "state": "string",
    "country": "string",
    "postal_code": "string",
    "coordinate": {
      "latitude": 1.234,
      "longitude": 1.234
    }
  },
  "recipient": {
    "name": "Anne Doe",
    "phone_number": "628123456",
    "address": "string",
    "city": "string",
    "state": "string",
    "country": "string",
    "postal_code": "string",
    "coordinate": {
      "latitude": 1.234,
      "longitude": 1.234
    }
  },
  "dimension": {
    "height": 1.234,
    "width": 1.234,
    "depth": 1.234
  },
  "weight": 1.234,
  "item_description": "string",
  "item_category": "string",
  "fragile": true
}

Response body:

{
    "status_code": 1,
    "status_description": "ORDER_PLACED",
    "reference_number": "string",
    "air_waybill": "string",
    "price": 1234,
    "estimated_hour_arrival": 1234
}

Status History

Returns an array of status history log of the specified reference number and air waybill.

GET /status-history?reference_number=string&air_waybill=string
Accept: application/json

Response body:

{
    "reference_number": "string",
    "air_waybill": "string",
    "history": [
        {
            "status_code": 1,
            "status_description": "ORDER_PLACED",
            "timestamp": "2023-01-01T00:00:00Z",
            "note": "string"
        }
    ]
}

License

   Copyright 2023 TokoBapak

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

See LICENSE