royal_mail_rest_api package

Submodules

royal_mail_rest_api.api module

Main module.

class royal_mail_rest_api.api.RoyalMailBaseClass[source]

Bases: object

BASE CLASS FOR SHIPPING

url = 'https://api.royalmail.net'

royal_mail_rest_api.errors module

exception royal_mail_rest_api.errors.GeneralError[source]

Bases: Exception

exception royal_mail_rest_api.errors.NotAuthorised[source]

Bases: Exception

exception royal_mail_rest_api.errors.RoyalMailError[source]

Bases: Exception

royal_mail_rest_api.example module

royal_mail_rest_api.get_credentials module

royal_mail_rest_api.get_credentials.return_credentials()[source]

royal_mail_rest_api.shipping module

class royal_mail_rest_api.shipping.ShippingApi(client_id, client_secret, username, password)[source]

Bases: royal_mail_rest_api.api.RoyalMailBaseClass

Royal Mail Shipping Class, used to communicate with the Royal Mail Rest API to create labels

delete_shipment(shipment_number)[source]

Description

Delete a shipment. Send a shipment identifier in Url. Successful response will be 200 with no content.

Returns:
delete_shipment_url = '/shipping/v2/'
get_token()[source]

Method to get a JWT token

This method will accept a DMO/NEOPOST user name and password. On successful validation of the user credential it will issue a JWT token to the user which will be valid for 4 hours. On subsequent requests, user will pass the JWT token in the request header.

Returns:
post_domestic(data)[source]

Operation to create a shipment

This method will take a domestic shipment request in the body and on successful response, it will return the shipment numbers and item details. :return:

post_domestic_url = '/shipping/v2/domestic'
post_manifest(manifest_options=None)[source]

This method creates a shipping manifest

Returns:
post_manifest_url = '/shipping/v2/manifest'
put_manifest(sales_order_number=None, manifest_batch_number=None)[source]

This method return a manifest label for a previously manifested shipment.

Returns:
put_shipment(shipment_number, data)[source]

updateShipment

Update a shipment. Send a shipment request in body. On successful response, it will return shipment number and warnings. Service related information can not be updated, and if passed as part of request, it will be ignored.

Returns:
put_shipment_label(shipment_number)[source]

This method returns a label for the shipment identifier passed in the url.

Returns:
put_shipment_label_url = '/shipping/v2/'
put_shipment_update_url = '/shipping/v2/'
token_url = '/shipping/v2/token'

royal_mail_rest_api.tools module

class royal_mail_rest_api.tools.RoyalMailBody(shipment_type)[source]

Bases: object

add_items(number, weight, unit_of_measure)[source]

Add items- currently only a single item :param number: :param weight: :param unit_of_measure: :return:

add_receipient_address(address_line1, post_town, county, postcode, country, building_name=None, building_number=None, address_line2=None, address_line3=None)[source]

Add address of receipient :param address_line1: :param post_town: :param county: :param postcode: :param country: :param building_name: :param building_number: :param address_line2: :param address_line3: :return:

add_receipient_contact(name, email, complementary_name=None, telephone=None)[source]

Add the name and contact of who this is being sent to :param name: :param email: :param complementary_name: :param telephone: :return:

add_service_enhancements(enhancement)[source]

add a single service enhancement, can be called multiple times to append required items :param enhancement: :return:

add_service_format(format=None)[source]

add a valid service format using our friendly names :param format: :return:

add_service_occurence()[source]
add_service_offering(service_offering=None)[source]

add a valid service offering using our friendly names :param service_offering: :return:

add_service_type(service_type=None)[source]

add a valid service type using our friendly names :param service_type: :return:

add_ship_date(date_obj=None)[source]

take a datetime object and format it to royal mails Y-m-d format :param date_obj: :return:

add_signature(signature=False)[source]

Do we want a signature on delivery :param signature: :return:

static remove_none_values(iterable)[source]

take out values of None by removing the key :param iterable: :return: dictionary

return_domestic_body()[source]

build domestic body from items :return:

return_domestic_update_body()[source]

build domestic body from items :return:

service_enhancements = {'e-mail_notification': '14', 'local_collect': '22', 'loss_1000': '1', 'loss_10000': '5', 'loss_2500': '2', 'loss_5000': '3', 'loss_750': '11', 'loss_7500': '4', 'recorded': '6', 'safeplace': '15', 'saturday_guaranteed': '24', 'signature': '12', 'sms_and_e-mail_notification': '16', 'sms_notification': '13'}
service_formats = {'inland_format_not_applicable': 'N', 'inland_large_letter': 'F', 'inland_letter': 'L', 'inland_parcel': 'P', 'international_format_not_applicable': 'N', 'international_large_letter': 'G', 'international_letter': 'P', 'international_parcel': 'E'}
service_offerings = {'1st_and_2nd_class_account_mail': 'STL', 'international_signed_on_account': 'OSA', 'international_tracked_and_signed_on_acct': 'OTC', 'international_tracked_on_account': 'OTA', 'intl_bus_mail_l_ltr_ctry_srt_hi_vol_economy_': 'DG3', 'intl_bus_mail_l_ltr_ctry_srt_hi_vol_priority_': 'DG1', 'intl_bus_mail_l_ltr_ctry_srt_lo_vol_economy_': 'DG6', 'intl_bus_mail_l_ltr_ctry_srt_lo_vol_priority_': 'DG4', 'intl_bus_mail_l_ltr_zero_srt_economy_mch': 'WG6', 'intl_bus_mail_l_ltr_zone_srt_economy_mch_': 'IG6', 'intl_bus_mail_lrg_ltr_max_sort_economy': 'PS8', 'intl_bus_mail_lrg_ltr_max_sort_priority': 'PS7', 'intl_bus_mail_lrg_ltr_max_sort_standard': 'PSB', 'intl_bus_mail_lrg_ltr_zero_sort_economy': 'WG3', 'intl_bus_mail_lrg_ltr_zero_srt_pri_mch': 'WG4', 'intl_bus_mail_lrg_ltr_zero_srt_priority': 'WG1', 'intl_bus_mail_lrg_ltr_zone_sort_economy': 'IG3', 'intl_bus_mail_lrg_ltr_zone_sort_pri': 'IG1', 'intl_bus_mail_lrg_ltr_zone_srt_pri_mch': 'IG4', 'intl_bus_mail_mixd_zero_srt_economy_mch': 'WW6', 'intl_bus_mail_mixed_zero_sort_economy': 'WW3', 'intl_bus_mail_mixed_zero_sort_premium': 'ZC1', 'intl_bus_mail_mixed_zero_sort_pri_mch': 'WW4', 'intl_bus_mail_mixed_zero_sort_priority': 'WW1', 'intl_bus_mail_mixed_zone_sort_economy': 'OZ3', 'intl_bus_mail_mixed_zone_sort_pri_mch': 'OZ4', 'intl_bus_mail_mixed_zone_sort_priority': 'OZ1', 'intl_bus_mail_mixed_zone_srt_economy_mch': 'OZ6', 'intl_bus_mail_signed': 'MTM', 'intl_bus_mail_signed_country_priced': 'MTO', 'intl_bus_mail_signed_extra_comp': 'MTN', 'intl_bus_mail_signed_extra_comp_country': 'MTP', 'intl_bus_mail_track_and_sign_xtr_comp_ctry': 'MTH', 'intl_bus_mail_tracked': 'MTI', 'intl_bus_mail_tracked_and_signed': 'MTC', 'intl_bus_mail_tracked_and_signed_country': 'MTG', 'intl_bus_mail_tracked_and_signed_xtr_comp': 'MTD', 'intl_bus_mail_tracked_country_priced': 'MTK', 'intl_bus_mail_tracked_extra_comp': 'MTJ', 'intl_bus_mail_tracked_extra_comp_ctry': 'MTL', 'intl_bus_parcel_track&sign_xtr_cmp_ctry': 'MTF', 'intl_bus_parcels_max_sort_economy': 'PS0', 'intl_bus_parcels_max_sort_priority': 'PS9', 'intl_bus_parcels_max_sort_standard': 'PSC', 'intl_bus_parcels_print_direct_economy': 'MB3', 'intl_bus_parcels_print_direct_priority': 'MB1', 'intl_bus_parcels_print_direct_standard': 'MB2', 'intl_bus_parcels_signed': 'MP5', 'intl_bus_parcels_signed_country_priced': 'MP9', 'intl_bus_parcels_signed_extra_comp': 'MP6', 'intl_bus_parcels_signed_extra_comp_ctry': 'MP0', 'intl_bus_parcels_tracked': 'MP1', 'intl_bus_parcels_tracked_and_signed': 'MTA', 'intl_bus_parcels_tracked_and_signed__ctry': 'MTE', 'intl_bus_parcels_tracked_country_priced': 'MP7', 'intl_bus_parcels_tracked_extra_comp': 'MP4', 'intl_bus_parcels_tracked_extra_comp_ctry': 'MP8', 'intl_bus_parcels_tracked_signed_xtr_comp': 'MTB', 'intl_bus_parcels_zero_sort_economy': 'WE3', 'intl_bus_parcels_zero_sort_hi_vol_economy_': 'DE3', 'intl_bus_parcels_zero_sort_hi_vol_priority_i': 'DE1', 'intl_bus_parcels_zero_sort_priority': 'WE1', 'intl_bus_parcels_zero_srt_lo_vol_economy_': 'DE6', 'intl_bus_parcels_zero_srt_lo_vol_priority_': 'DE4', 'intl_bus_parcels_zone_sort_economy': 'IE3', 'intl_bus_parcels_zone_sort_plus_priority': 'MTQ', 'intl_bus_parcels_zone_sort_priority_': 'IE1', 'intl_bus_parcels_zone_srt_plus_economy': 'MTS', 'intl_economy_on_account': 'OLS', 'intl_signed_on_account_extra_comp': 'OSB', 'intl_standard_on_account': 'OLA', 'intl_tracked_and_signed_on_acct_extra_comp': 'OTD', 'intl_tracked_on_account_extra_comp': 'OTB', 'royal_mail_24_48': 'CRL', 'royal_mail_24_48_p_flat_rate': 'PPF', 'royal_mail_24_ll_daily_rate': 'RM1', 'royal_mail_24_ll_flat_rate': 'PK9', 'royal_mail_24_p_daily_rate': 'RM2', 'royal_mail_24_p_flat_rate': 'RM5', 'royal_mail_24_sort8_ll_daily_rate': 'RM7', 'royal_mail_24_sort8_ll_flat_rate': 'FS1', 'royal_mail_24_sort8_llp_daily_rate': 'PK3', 'royal_mail_24_sort8_p_daily_rate': 'RM8', 'royal_mail_24_sort8_p_flat_rate': 'PK1', 'royal_mail_48_ll_daily_rate': 'RM3', 'royal_mail_48_ll_flat_rate': 'PK0', 'royal_mail_48_p_daily_rate': 'RM4', 'royal_mail_48_p_flat_rate': 'RM6', 'royal_mail_48_sort8_ll_daily_rate': 'RM9', 'royal_mail_48_sort8_ll_flat_rate': 'FS2', 'royal_mail_48_sort8_llp_daily_rate': 'PK4', 'royal_mail_48_sort8_p_daily_rate': 'RM0', 'royal_mail_48_sort8_p_flat_rate': 'PK2', 'royal_mail_tracked_24': 'TPN', 'royal_mail_tracked_24_hv': 'TPM', 'royal_mail_tracked_24_lbt': 'TRN', 'royal_mail_tracked_24_lbt_hv': 'TRM', 'royal_mail_tracked_48': 'TPS', 'royal_mail_tracked_48_hv': 'TPL', 'royal_mail_tracked_48_lbt': 'TRS', 'royal_mail_tracked_48_lbt_hv': 'TRL', 'royal_mail_tracked_returns_24': 'TSN', 'royal_mail_tracked_returns_48': 'TSS', 'sd_guaranteed_by_1pm': 'SD1', 'sd_guaranteed_by_1pm_1000': 'SD2', 'sd_guaranteed_by_1pm_2500': 'SD3', 'sd_guaranteed_by_9am': 'SD4', 'sd_guaranteed_by_9am_1000': 'SD5', 'sd_guaranteed_by_9am_2500': 'SD6'}
service_types = {'BFPO': 'H', 'Royal Mail 48': '2', 'international': 'I', 'royal_mail_24': '1', 'royal_mail_tracked': 'T', 'special_delivery': 'D', 'tracked_returns': 'R'}
class royal_mail_rest_api.tools.valid_service(serviceType, serviceOffering, serviceFormat, enhancementType, signatureTracked, safePlace)

Bases: tuple

enhancementType

Alias for field number 3

safePlace

Alias for field number 5

serviceFormat

Alias for field number 2

serviceOffering

Alias for field number 1

serviceType

Alias for field number 0

signatureTracked

Alias for field number 4

royal_mail_rest_api.tracking module

class royal_mail_rest_api.tracking.TrackingApi(client_id, client_secret)[source]

Bases: royal_mail_rest_api.api.RoyalMailBaseClass

Start class for royal mail shipping api

history(tracking_number)[source]

Return history for a tracked item :param tracking_number: :return:

history_url = 'mailPieces/{}/history'
pod_url = 'mailPieces/{}/proofOfDelivery'
proof_of_delivery(tracking_number)[source]

recover proof of delivery :param tracking_number: :return:

summary(tracking_number)[source]

takes 13 digit tracking number and requests summary data :param tracking_number: :return: tracking_summary

summary_url = 'mailPieces/{}/summary'

Module contents

Top-level package for Royal Mail Rest API.