Version: version 1.1
Author: Shuaib Zahda (alzahidi-tech.com)
Introduction
The API documentation below lists the capabilities of Sabeq.ps API and how they can be achieved.
The current API allows:
-
Creating parcels
-
Querying parcel’s status
-
Cancelling parcels
-
Get geographical areas.
API documentation
Note
|
All the requests and responses are in JSON format. |
1. The Authentication and Verification Process
To implement any of the API functionalities, the system has to authenticate the user, then verify that the user is allowed to access Sabeq.ps API.
After the verification process is successful, the API returns verification token that is valid for 5 minutes. The verification token is to be used with the subsequent API funcations.
1.1. Authentication
The authentication process is the first request your client has to send in order to get the authentication token known as auth_token
The login token is for the owner of the business which is available in the My Profile page.
URL: https://sabeq.ps/api/v1/auth
Method: POST
Name | Type | Value |
---|---|---|
login_token |
String |
Login token string, found in my profile page. |
On a successful request, auth_token will be returned. Use this token in the verification request below.
{
"auth_token": "eyJhbGOiJIUzI1NiJ91c2VyXIjozMiwiZXhwaXJlIjoxNj..."
}
1.2. Verification
The verification step is to ensure that you are authorized to use the API, and you have a working profile on Sabeq.ps
Make sure that you got in touch with Sabeq.ps administration and got your business profile enabled to use the API.
Login to Sabeq.ps, go to the setting page of the business profile you want to use the API for, get the following information from the setting page in order to use them in this step
-
Profile id
-
API key
URL: https://sabeq.ps/api/v1/verify_business
Method: POST
Name | Type | Value |
---|---|---|
auth_token |
String |
Obtained from the authentication response (see the authentication step). |
profile_id |
integer |
Your business profile id, obtained from the setting page of your business on Sabeq.ps |
api_key |
string |
API key found in the setting page of your business on Sabeq.ps |
On a successful request, verification_token will be returned. Use this token in any of the subsequent requests.
{
"verification_token": "eyJhbGciOiJIUzIJidXNpbmVzc191c2VyX2lkIjozMiwiZX..."
}
Note
|
the verification_token is valid for 5 minutes only. After that you are required to repeat step 1 and 2. |
2. Get Areas (cities and villages)
Since there is no predefined standards on the Internet on how Palestinian towns are named and abbreviated, Sabeq.ps uses its own method of naming and numbering the cities/villages of Palestine.
Important
|
You have to update your copy of Sabeq.ps on a regular basis on order to keey in sync with the cities names and villages. |
To get the list of areas i.e. cities and their villages/towns use the following request
URL: https://sabeq.ps/api/v1/parcels/get_areas
Method: GET
Name | Type | Value |
---|---|---|
verification_token |
String |
Obtained from the verification response (see the verification step). |
On a successful request, the list of cities and their villages/towns and a list of streets of each village will be returned as an array of hashes. See the example below.
[
{
"city_name": "الخليل",
"areas": [
{
"name": "مدينة الخليل",
"id": 1,
"streets": [
{
"name": "شارع رقم 1",
"id": 1
},
{
"name": "شارع رقم 2",
"id": 2
},
....
]
},
{
"name": "دورا",
"id": 2,
"streets": [
{
"name": "شارع رقم 1",
"id": 3
},
{
"name": "شارع رقم 2",
"id": 4
},
....
]
},
....
]
}....
]
3. Parcel information Query
It is possible to query the information of a certain parcel in order to know for example, the status of the parcel, the service cost and other information, see below.
URL: https://sabeq.ps/api/v1/parcels/[track number]
Method: GET
The track number has to be replaced with the track number you want to query, the track number is obtained
from your parcels section in {sabeq}.
Name | Type | Value |
---|---|---|
verification_token |
String |
Obtained from the verification response (see the verification step). |
On a successful request, the following information is returned.
Note
|
the response below is NOT real and it is for educational purposes only. |
{
"track_number": "03201000",
"status": "completed",
"name": "شعيب زاهده",
"address": "الخليل - مدينة الخليل - دوار ابن رشد"
"phone": "0598308848",
"payment_amount": 100,
"service_cost": 20,
"content": "اسم المنتج"
"created_at": "2021-01-21T16:50:00"
}
3.1. Parcel statuses list
-
unknown: The unknown status means there is a problem in reporting the status.
-
created: The parcel is created in the system and is still with {sabeq.ps} client i.e. YOU.
-
warehouse: The parcel is in Sabeq.ps warehouse and is being worked on.
-
on_way: The parcel is on the way with the driver. It may be delivered soon.
-
delivered: The parcel is delivered to its destination, its value i.e. momey is with Sabeq.ps.
-
returned: The parcel is returned by the recipient for several reasons. Check Sabeq.ps for more details.
-
missing: The parcel is missing, Sabeq.ps takes care of its cost.
-
completed: The parcel transactions are completed. It means you received its value from Sabeq.ps.
-
cancelled: The parcel is cancelled by the customer.
4. Create a Parcel
The major funcationality of this API is to automatically create parcels in Sabeq.ps from your system. This funcationality is achieved through this API function.
URL: https://sabeq.ps/api/v1/parcels
Method: POST
Name | Type | Required | Value |
---|---|---|---|
verification_token |
String |
Yes |
Obtained from the verification response (see the verification step). |
name |
String |
Yes |
Recipient name, the person who will receive the parcel i.e. your product. |
phone1 |
String |
Yes |
The first phone number of the person. |
phone2 |
String |
No |
The second phone number of the person, if available. Leave blank in case there is no second phone number |
content |
String |
Yes |
The content of the parcel. |
payment_amount |
float |
Yes |
The money Sabeq.ps has to collect for you. Please note that this includes the delivery cost. |
area_id |
integer |
Yes |
The area id, obtained from the Get Areas function Get Areas. |
street_id |
integer |
No |
The id of the recipient’s street. Optional, leave blank. |
address |
String |
Yes |
The remaining of the address. |
location_url |
String |
Yes |
URL of the location e.g. google maps. Optional, leave balnk. |
delivery_notes |
String |
No |
Notes for Sabeq.ps to take into account for the delivery. Optional, leave balnk. |
special_notes |
String |
No |
Special Notes for your own reference. Optional, leave blank. |
service_type |
String |
No |
If left blank, it will be by default "pay_delivery". Allowed values: pay_delivery, deliver_only, fetch, exchange. Optional, leave blank. |
Note
|
The city will be automatically selected by the system from the area id. |
Note
|
All non required (optional) fields have to be sent blank in case there is no value for them. |
On a successful request, the following information is returned.
{
track_number: "03212312"
delivery_cost: 20
}
5. Cancel a parcel
It is possible to cancel a parcel if the parcel is in the initial statuses.
URL: https://sabeq.ps/api/v1/parcels/[track number]/cancel
Method: GE
The track number has to be replaced with the track number of the parcel you want to cancel, the track number is obtained from your parcels section in {sabeq}.
Name | Type | Value |
---|---|---|
verification_token |
String |
Obtained from the verification response (see the verification step). |
On a successful request, the parcel’s new status ("cancelled") is returned.
{
"status": "cancelled",
}
6. Errors
Errors are returned in the format of error code and message.
Note
|
The errors are inspired from HTTP erros (client errors) |
Error Code | Error Message | Description |
---|---|---|
400 |
Missing parameters |
Returned when any of the parameters mentioned in the API documentation is missing of in improper format. |
401 |
Invalid Login Token |
Returned when the login token is incorrect. |
404 |
The requested resource is not found |
Returned when the requested resource (profile, parcel, etc) is not found or does not belong to the current profile. |
406 |
Not acceptable |
Returned when the sent parameters are not accepted. |
410 |
Authentication token is expired or no longer valid |
Returned when the token sent is expired. |
498 |
Invalid token |
Returned when the sent token is invalid. |