Skip to main content

Bosta Python SDK

Project description

Bosta Python SDK

This repository contains the open source Python SDK for integrating Bosta's APIs into your Python application.

Table of Contents

APIs Documentation

Installation

You can install the package via pip. Run the following command:

pip install bostaSDK

Usage

``` python
import os

from bostaSDK.apiClient import ApiClient
from bostaSDK import delivery
from bostaSDK import pickup
from bostaSDK.utils import Receiver, Address, ContactPerson, DeliveryTypes


apiKey=os.environ["BOSTA-API-KEY"]="your api key"
baseUrl=os.environ["BOSTA-BASE-URL"]="bosta base url"


################ ApiClient ################# 
# Parameters:
#     apiKey (string): Business api key
#     apiBase (string): Bosta host url
apiClient=ApiClient(apiKey, baseUrl)


################ Deliveries ################# 
################# List Deliveries ################# 
# 1. Create new instance from ListAllDeliveriesRequest
#  Parameters:
#     pageNumber (int): Page Number
#     limit (int): Number of deliveries returned from api
listAllDeliveriesRequest = delivery.list.ListAllDeliveriesRequest(3, 10) 

# 2. Send list all deliveries request
#   Parameters:
#       listAllDeliveriesRequest (ListAllDeliveriesRequest)
listAllDeliveriesResponse = apiClient.delivery.listAll(listAllDeliveriesRequest)
listAllDeliveriesResponse.count
listAllDeliveriesResponse.deliveries

################# Create new Delivery #################    
# 1. Create new Receiver  
# Parameters:
#   firstName (str)
#   lastName (str)
#   email (str)
#   phone (str)
reciever=Receiver("firstName", "lastName", "test@example.com", "01090055000")

# 2. Create new Address  
#   Parameters:
#       cityCode (str)
#       zone (str)
#       secondLine (str)
#       district (str)
#       buildingNumber (int)
#       floor (int)
#        apartment (int)
dropOffAddress=Address("EG-01", "Maadi", "Maadi", "104")

# 3. Create new instance from CreateDeliveryRequest
#    Parameters:
#       deliveryType (int)
#       cod (int): Cash on delivery amount
#       dropOffAddress (Address)
#       cashOnDelivery (int): Cash on delivery amount
#       receiver (Receiver)
#       deliverySpecs (DeliverySpecs)
#       notes (str)
#       businessReference (str)

createDeliveryReq=delivery.create.CreateDeliveryRequest(
    DeliveryTypes.DELIVERY_TYPES['SEND']['code'],
    100, dropOffAddress, reciever
)

# 4. Send Create Delivery Request
#   Parameters:
#       createDeliveryReq (CreateDeliveryRequest)

createDeliveryResponse=apiClient.delivery.create(createDeliveryReq)
deliveryId = createDeliveryResponse.get_deliveryId()


################# Print Airway Bill ################# 
# 1. Create new instance from PrintAWBRequest
#   Parameters:
#       deliveryIds (array): List of delivery ids
printAWBreq = delivery.printAWB.PrintAWBRequest(deliveryId)

# 2. Send Print Airway bill request
#   Parameters:
#       printAWBreq (PrintAWBRequestrray)
printAirWayBillResponse = apiClient.delivery.printAirWayBill(printAWBreq)
printAirWayBillResponse.get_data()


################# Track Delivery #################
# 1. Create new instance from TrackDeliveryRequest
#   Parameters:
#       deliveryId (str)
trackDeliveryRequest = delivery.track.TrackDeliveryRequest(deliveryId)

# 2. Send track delivery request
#   Parameters:
#       trackDeliveryRequest (TrackDeliveryRequest)
trackDeliveryResponse = apiClient.delivery.track(trackDeliveryRequest)
trackDeliveryResponse.get_message()


################# Get Delivery #################
# 1. Create new instance from GetDeliveryDetailsRequest
#   Parameters:
#       deliveryId (str)
getDeliveryDetailsRequest = delivery.get.GetDeliveryDetailsRequest(deliveryId)

# 2. Send get delivery request
#   Parameters:
#       getDeliveryDetailsRequest (GetDeliveryDetailsRequest)
getDeliveryDetailsResponse = apiClient.delivery.get(getDeliveryDetailsRequest)
getDeliveryDetailsResponse.get_message()

################# Update Delivery #################
# 1. Create new instance from UpdateDeliveryRequest
#    Parameters:
#       deliveryId (str): Delivery Id
#       specs (DeliverySpecs)
#       pickUpAddress (Address, optinal)
#       dropOffAddress (Address, optinal)
#       returnAddress (Address, optinal)
#       cod (int, optinal): Cash on delivery amount
#       receiver (Receiver, optinal)
#       businessReference (str, optinal): Business refrence
#       webhookUrl (str, optinal)
newReciever=Receiver("user", "test", "test@example.com", "01090055000")
updateDeliveryRequest = delivery.update.UpdateDeliveryRequest(
    deliveryId,
    receiver=newReciever,
    cod=120
)
# 2. Send update delivery request
#   Parameters:
#       updateDeliveryRequest (UpdateDeliveryRequest)
updateDeliveryResponse = apiClient.delivery.update(updateDeliveryRequest)
updateDeliveryResponse.get_message()

#################  Terminate Delivery #################
# 1. Create new instance from TerminateDeliveryRequest
#   Parameters:
#       deliveryId (str)
terminateDeliveryRequest = delivery.terminate.TerminateDeliveryReque(deliveryId)

# 2. Send terminate delivery request
#   Parameters:
#       terminateDeliveryRequest (TerminateDeliveryRequest)
apiClient.delivery.terminate(terminateDeliveryRequest)


################ Pickups ################# 
################ Create New Pickup #################
# 1. Create new instance from ContactPerson
#   Parameters:
#       name (str)
#       phone (str)
#       email (str)
contactPerson = ContactPerson("userName", "01090000000", "example@bosta.co")

# 2. Create new instance from CreatePickupRequest
#   Parameters:
#       scheduledDate (str): Pickup scheduled date 
#                            "Mon Sep 30 2019 00:00:00 GMT+0200",
#       scheduledTimeSlot (str): "10:00 to 13:00" or "13:00 to 16:00"
#       contactPerson (ContactPerson)
#       businessId (str)
#       businessLocationId (str)
#       warehouseId (str)
#       noOfPackages (int)
#       notes (str) 
createPickupRequest = pickup.create.CreatePickupRequest(
    "Mon Nov 22 2021 00:00:00 GMT+0200",
    apiClient.pickupTimeSlots[0], contactPerson
)
# 3. Send create pickup request
#   Parameters:
#       createPickupRequest (CreatePickupRequest)
createPickupResponse=apiClient.pickup.create(createPickupRequest)
createPickupResponse.get_message()
newPickupId=createPickupResponse.get_pickupId()


################ List Pickups #################
# 1. Create new instance from ListAllPickupsRequest
#   Parameters:
#     pageId (int)
#     sortBy (str)
#     sortValue (str)
listAllPickupsRequest = pickup.list.ListAllPickupsRequest(2)

# 2. Send list all pickups request
#   Parameters:
#       listAllPickupsRequest (ListAllPickupsRequest)
listAllPickupsResponse=apiClient.pickup.listAll(listAllPickupsRequest)
listAllPickupsResponse.pickups

################ Get Pickup #################
# 1. Create new instance from GetPickupDetailsRequest
#   Parameters:
#     pickupId (str): Pickup Id
getPickupDetailsRequest = pickup.get.GetPickupDetailsRequest(newPickupId)

# 2. Send get pickup request
#   Parameters:
#       getPickupDetailsRequest (GetPickupDetailsRequest)
getPickupDetailsResponse = apiClient.pickup.get(getPickupDetailsRequest)
getPickupDetailsResponse.state

################ Update Pickup #################
# 1. Create new instance from UpdatePickupRequest
#   Parameters:
#     _id (str): Pickup Id
#     businessId (str)
#     scheduledDate (str)
#     scheduledTimeSlot (str)
#     contactPerson (ContactPerson)
#     businessLocationId (str)
#     warehouseId (str)
#     noOfPackages (str)
#     notes (str)

updatePickupRequest = pickup.update.UpdatePickupRequest(
    newPickupId, 
    contactPerson=ContactPerson("newUser", "010193155922", "user2@bosta.co")
)

# 2. Send update pickup request
#   Parameters:
#       updatePickupRequest (UpdatePickupRequest)
updatePickupResponse =apiClient.pickup.update(updatePickupRequest)
updatePickupResponse.get_message()

################ Delete Pickup #################
# 1. Create new instance from DeletePickupRequest
#   Parameters:
#     pickupId (str): Pickup Id
deletePickupRequest = pickup.delete.DeletePickupRequest(newPickupId)

# 2. Send delete pickup request
#   Parameters:
#       deletePickupRequest (UpdatePickupRequest)
apiClient.pickup.delete(deletePickupRequest)

```

Contribution

We are open to, and grateful for, any contributions made by the community. By contributing to Bosta, you agree to abide by the code of conduct.

License

The MIT License (MIT) License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bostaSDK-1.9.0.tar.gz (16.5 kB view hashes)

Uploaded Source

Built Distribution

bostaSDK-1.9.0-py3-none-any.whl (32.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page