beach-day
Version:
API integration testing as fun as a day on the beach
1,131 lines (1,130 loc) • 43.8 kB
JSON
{
"swagger": "2.0",
"info": {
"description": "",
"version": "1.0.0",
"title": "Paxi Supplier",
"contact": {}
},
"host": "api-gw-qa.pdws.co.za:443",
"basePath": "/paxi-supplier/1.0.0",
"schemes": [
"https",
"http"
],
"security": [
{
"OAuth2": []
}
],
"paths": {
"/paxi/nodes/filtered": {
"get": {
"tags": [
"Geographic APIs"
],
"summary": "Returns a paged list of currently ACTIVE PAXI points",
"description": "This call provides a paged list of all PAXI pickup points that are ACTIVE at the time the call is made. PAXI points/nodes that are permanently or temporarily closed are excluded from the result set. The dataset includes the PAXI counter/node code, the physcial address information and the GPS coordinates.",
"parameters": [],
"responses": {
"200": {
"description": "Status 200",
"schema": {
"$ref": "#/definitions/GetNodesResponse"
}
}
},
"x-auth-type": "Application & Application User",
"x-throttling-tier": "Unlimited"
}
},
"/paxi/nodes/filtered/{node_code}": {
"get": {
"tags": [
"Geographic APIs"
],
"summary": "Returns the detail a specified PAXI point only",
"description": "This call only returns the detailed data for the specified PAXI counter/node if it is in an ACTIVE state. The dataset includes the physical address information and GPS coordinate set.",
"produces": [
"*/*"
],
"parameters": [],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/GetNodeResponse"
}
},
"405": {
"description": "Invalid input"
}
},
"x-auth-type": "Application & Application User",
"x-throttling-tier": "Unlimited"
},
"parameters": [
{
"name": "node_code",
"in": "path",
"required": true,
"type": "string"
}
]
},
"/paxi/nodes/nearest": {
"post": {
"tags": [
"Geographic APIs"
],
"summary": "Returns the nearest PAXI counter/node",
"description": "A function to programatically determine the closest, most appropriate, active PAXI counter/node from a given address or GPS coordinate input. The result set also returns the distance between the input location and the PAXI counter/node.If there are no PAXI counters/nodes within a 50km radius, an error response is returned.",
"consumes": [],
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/NearestNodeRequest"
}
}
],
"responses": {
"200": {
"description": "Status 200",
"schema": {
"$ref": "#/definitions/NearestNodeResponse"
}
}
},
"x-auth-type": "Application & Application User",
"x-throttling-tier": "Unlimited"
}
},
"/paxi/bag": {
"post": {
"tags": [
"Induction APIs"
],
"summary": "Inducts a parcel into the PAXI network using a PAXI issued parcel tracking number",
"description": "This call provides the means for a supplier to induct parcels into the PAXI network using PAXI issued tracking numbers. These numbers are obtained from pre-purchased PAXI branded bags or Labels. Items must be packaged into these bags or labeled with these labels prior to distribution. On successful induction a designated courier will be dispatched to collect the parcelsd from the supplier's distribution facility and deliver them to the designated PAXI counter/node for collection by the customer.",
"consumes": [
"application/json"
],
"produces": [
"*/*"
],
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/BagInductionRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/InductionResponse"
}
},
"405": {
"description": "Invalid input"
}
},
"x-auth-type": "Application & Application User",
"x-throttling-tier": "Unlimited"
}
},
"/paxi/supplier/label": {
"post": {
"tags": [
"Induction APIs"
],
"summary": "Inducts a parcel into the PAXI network using the supplier's own tracking number and distribution label",
"description": "This call provides the means for a supplier to induct parcels into the PAXI network using their own labels and tracking numbers. Tracking numbers must be unique per parcel. Once successfully inducted a designated courier will then dispatched to collect the parcels from the supplier's distribution facility and deliver them to the designated PAXI counter/node for collection by the customer. Billing is done after the fact in accordance to the payment terms agreed to between PAXI and the supplier.",
"consumes": [
"application/json"
],
"produces": [
"*/*"
],
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/SupplierLabelInductionRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/InductionResponse"
}
},
"405": {
"description": "Invalid input"
}
},
"x-auth-type": "Application & Application User",
"x-throttling-tier": "Unlimited"
}
},
"/paxi/supplier/events/{supplier_id}": {
"get": {
"tags": [
"Tracking APIs"
],
"summary": "Returns a list of new tracking events for supplier",
"description": "As part of the on boarding process suppliers can subscribe to certain tracking events that are generated within PAXI to populate their own order statuses. This call returns a list all tracking events that the supplier has subscribed to, but not yet retrieved and acknowledged. \n\n The result set is internally limited to 500 records to ensure optimal performance. A polling frequency of anywhere between 1 minute and 30 minutes is recommended. \n\n In the event of the queue growing large, suppliers can increase the polling frequency or implement paging to retrieve all the available events.",
"produces": [
"*/*"
],
"parameters": [],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/GetEventsResponse"
}
},
"405": {
"description": "Invalid input"
}
},
"x-auth-type": "Application & Application User",
"x-throttling-tier": "Unlimited"
},
"parameters": [
{
"name": "supplier_id",
"in": "path",
"required": true,
"type": "string",
"description": "Issued by PAXI. A unique supplier code identifying the supplier/shipper of a parcel"
}
]
},
"/paxi/supplier/products/{supplier_id}": {
"get": {
"tags": [
"Setup APIs"
],
"summary": "Returns a list of PAXI Product Codes allocated to a supplier",
"description": "Returns a list of all products and product codes that have been authorised for induction into PAXI by the supplier. Diffirent product codes might have diffirent sizes, rate structures or collection requriements at the PAXI counter/node.",
"produces": [
"*/*"
],
"parameters": [],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/GetProductBySupplierResponse"
}
},
"405": {
"description": "Invalid input"
}
},
"x-auth-type": "Application & Application User",
"x-throttling-tier": "Unlimited"
},
"parameters": [
{
"name": "supplier_id",
"in": "path",
"required": true,
"type": "string",
"description": "Issued by PAXI. A unique supplier code identifying the supplier/shipper of a parcel"
}
]
},
"/paxi/event/ack": {
"post": {
"tags": [
"Tracking APIs"
],
"summary": "Acknowledge receipt of tracking event",
"description": "This service is to acknowledge retrieval of a tracking event so that it can be removed from the supplier's event queue, and not duplicate on subsequent tracking event calls.\n\nUpon the successful processing of a paxi event, the upldTrnIdNo and upldDatetime fields are used ensure the removal of the event to avoid uplicate procesing. e.g.:\n```json\n{\n \"upldDatetime\": \"2017-01-21T10:26:32.000+02:00\",\n \"upldTrnIdNo\": 4,\n \"userIdNo\": 1\n}\n```\n If an error occurred during the processing of the event, the upldTrnIdNo, errorDesc and errorDatetime fields are used to also remove the event and prevent the continuous processing of a failing event while an investigation is conducted to remedy the failure and re-queue the event. e.g:\n```json\n{\n \"errorDatetime\": \"2017-01-21T10:26:32.000+02:00\",\n \"errorDesc\": \"Some error description\",\n \"upldTrnIdNo\": 4,\n \"userIdNo\": 1\n}\n```",
"consumes": [
"application/json"
],
"produces": [
"*/*"
],
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/EventAckObject"
}
}
],
"responses": {
"200": {
"description": "Event successfully updated",
"schema": {
"$ref": "#/definitions/EventAckResponse"
}
},
"400": {
"description": "Specified Upld Trn does not exist"
},
"405": {
"description": "Invalid input"
}
},
"x-auth-type": "Application & Application User",
"x-throttling-tier": "Unlimited"
}
},
"/paxi/token/return": {
"post": {
"tags": [
"Induction APIs"
],
"summary": "Request customer return token",
"description": "This call generates and issues a PAXI Return token number. This token number can in turn be used by a customer to facilitate the return of an unwanted or faulty item from a PAXI counter/node back to a supplier facility at the supplier's expense. The customer can redeem the token at any active PAXI counter/node provided they have the token, identification and the return item is appropriately packaged for transport.",
"consumes": [],
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ReturnTokenObject"
}
}
],
"responses": {
"200": {
"description": "Status 200",
"schema": {
"$ref": "#/definitions/ReturnTokenResponse"
}
}
},
"x-auth-type": "Application & Application User",
"x-throttling-tier": "Unlimited"
}
},
"/paxi/pin/reveal": {
"post": {
"tags": [
"Parcel APIs"
],
"summary": "Reveals a parcel's Collection PIN",
"description": "For parcels subject to counter collection PAXI issues a Collection PIN. For a parcel to be released from the pick-up point the collecting customer must provide this PIN. Generally the PIN is communicated to the intended parcel recipient by PAXI via SMS (or some other communucation channnel), but in the event that the supplier of the parcel requires access to this PIN, this service can be used. An audit trail is created within PAXI should this function be used.",
"consumes": [],
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/RevealPinObject"
}
}
],
"responses": {
"200": {
"description": "Status 200",
"schema": {
"$ref": "#/definitions/RevealPinResponse"
}
}
},
"x-auth-type": "Application & Application User",
"x-throttling-tier": "Unlimited"
}
}
},
"securityDefinitions": {
"OAuth2": {
"type": "oauth2",
"tokenUrl": "https://api-gw-qa.pdws.co.za/token",
"flow": "application",
"scopes": {}
},
"default": {
"type": "oauth2",
"authorizationUrl": "https://api-gw-qa.pdws.co.za:443/authorize",
"flow": "implicit",
"scopes": {}
}
},
"definitions": {
"BagInductionRequest": {
"type": "object",
"required": [
"customerRefCode",
"destinationNodeCode",
"originNodeCode",
"productIdNo",
"rcvCustomerCellphone",
"rcvCustomerFirstName",
"rcvCustomerLastName",
"rcvCustomerIdNo",
"supplierCode",
"userIdNo"
],
"properties": {
"customerRefCode": {
"type": "string",
"description": "The unique tracking number for the parcel issued by PAXI. The number has the Dxxxxxxxxxxxx format and this number printed on the bags or labels ordered from PAXI or purchased at retailers.",
"example": "D999999999999"
},
"destinationNodeCode": {
"type": "string",
"description": "Unique location code for the destination PAXI counter where parcel will be delivered to for customer collection. For a list of available delivery points and their destinationNodeCode values, please call lookup/node/getNodesFilteredLight using your productIdNo. This field will be a 5 character alpha-numeric value.",
"example": "P0001"
},
"originNodeCode": {
"type": "string",
"description": "Issued by PAXI during the supplier registration and on boarding process. It represents the unique location code issued by PAXI for the supplier Distribution Center where the parcels will be dispatched from. This field will be a 5 character alpha-numeric value.",
"example": "SUPDC"
},
"productIdNo": {
"type": "integer",
"format": "int32",
"description": "Issued by PAXI during the supplier registration and on boarding process. It represents a unique product identifier for the parcel indicating the parcel type and size and is used to enforce parcel rules. For a list of allowable values please call /getProductBySupplier using your supplierCode",
"example": 99999
},
"rcvCustomerCellphone": {
"type": "string",
"description": "The receiving customer's cellphone number of record. It is critical that this number is current and accurate as it will serve as the primary communication channel for tracking updates and collection instructions (including the collection PIN via SMS). This number will also be used for caller authentication when the PAXI support center is contacted by the intended collector",
"example": "0712345678"
},
"rcvCustomerFirstName": {
"type": "string",
"description": "First name of intended collector of the parcel",
"example": "John"
},
"rcvCustomerIdNo": {
"type": "string",
"description": "Optional field. To be used for secure collection of specific parcels if enabled on productIdNo. Will limit collection of a parcel to a specific individual that MUST provide an identification document that matches this EXACT value",
"example": "7001015001085"
},
"rcvCustomerLastName": {
"type": "string",
"description": "Last name of intended collector of the parcel",
"example": "Smith"
},
"supplierCode": {
"type": "string",
"description": "Issued by PAXI during the supplier registration and on boarding process. A unique supplier code identifying the supplier/shipper of a parcel",
"example": "SUP01"
},
"userIdNo": {
"type": "integer",
"description": "Issued by PAXI during the supplier registration and on boarding process. A unique user ID allocated to the supplier's IT Service Provider",
"example": 99
}
}
},
"SupplierLabelInductionRequest": {
"type": "object",
"required": [
"customerRefCode",
"destinationNodeCode",
"originNodeCode",
"productIdNo",
"rcvCustomerCellphone",
"rcvCustomerFirstName",
"rcvCustomerLastName",
"supplierCode",
"userIdNo"
],
"properties": {
"customerRefCode": {
"type": "string",
"description": "The unique tracking number for the parcel. When PAXI bags are used this will be the Dxxxxxxxxxxxx number printed on the bag",
"example": "D999999999999"
},
"destinationNodeCode": {
"type": "string",
"description": "Unique location code for the destination PAXI counter where the parcel must be delivered to. For a list of available delivery points and their destinationNodeCode values, please call lookup/node/getNodesFilteredLight using your productIdNo",
"example": "P9999"
},
"originNodeCode": {
"type": "string",
"description": "Issued by PAXI. Unique location code issued by PAXI when the supplier DC is registered",
"example": "X0000"
},
"productIdNo": {
"type": "integer",
"format": "int32",
"description": "Issued by PAXI. A unique product identifier indicating the parcel type. For a list of allowed parceIdNo's please call /getProductBySupplier using your supplierCode",
"example": 99999
},
"rcvCustomerCellphone": {
"type": "string",
"description": "Cellphone number that tracking updates and collection instructions will be sent to via SMS. This number will also be used for caller authentication when the PAXI call centre is contacted by the intended collector",
"example": "0712345678"
},
"rcvCustomerFirstName": {
"type": "string",
"description": "First name of intended collector of the parcel",
"example": "John"
},
"rcvCustomerIdNo": {
"type": "string",
"description": "Optional field. To be used for secure collection of specific parcels if enabled on productIdNo. Will limit collection of a parcel to a specific individual that MUST provide an identification document that matches this EXACT value",
"example": "7001015001085"
},
"rcvCustomerLastName": {
"type": "string",
"description": "Last name of intended collector of the parcel",
"example": "Smith"
},
"supplierCode": {
"type": "string",
"description": "Issued by PAXI. A unique supplier code identifying the supplier/shipper of a parcel",
"example": "SUP01"
},
"userIdNo": {
"type": "integer",
"description": "Issued by PAXI. A unique user ID allocated to the suppliers IT Service Provider",
"example": 99
},
"supplierOrderNumber": {
"type": "string",
"description": "An optional, secondary identifier for a parcel that does NOT have to be unique per parcel. This field is NOT validated for uniqueness by PAXI and is intended to the used for multi-parcel orders. The value used could be the customer order or invoice number",
"example": "65667175"
},
"orderPieceCount": {
"type": "number",
"description": "A parcel count number indicating the parcel's position in the order, e.g. parcel 1 of 3 in order 65667175. This value must be unique within the order.",
"example": 1
},
"orderPieceTotal": {
"type": "number",
"description": "The total number of parcels linked to the specific supplier order number",
"example": 3
}
}
},
"InductionResponse": {
"type": "object",
"properties": {
"filteredItems": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"responseCode": {
"type": "string"
},
"results": {
"type": "integer",
"description": "The ID of the parcel if it was inducted successfully"
},
"success": {
"type": "boolean"
},
"totalItems": {
"type": "integer",
"format": "int32"
}
}
},
"NodeObject": {
"type": "object",
"properties": {
"addressLine1": {
"type": "string",
"description": "The shop number and building name that the specific PAXI counter is located in.",
"example": "SHOP X EXAMPLE MALL"
},
"addressLine2": {
"type": "string",
"description": "The street address of the primary street that the specific PAXI counter is located on",
"example": "C/O EXAMPLE STREET"
},
"addressLine3": {
"type": "string",
"description": "The secondary street that the specific PAXI counter is located on (in cases where the specific PAXI counter is located on a corner)",
"example": "& DEMONSTRATION AVENUE"
},
"addressLine4": {
"type": "string",
"description": "The suburb that the specific PAXI counter is located in",
"example": "SAMPLEVILLE"
},
"addressLine5": {
"type": "string",
"description": "The city or town that the specific PAXI counter is located in",
"example": "SAMPLE TOWN"
},
"addressLine6": {
"type": "string",
"description": "The province that the specific PAXI counter is located in.",
"example": "FREE STATE"
},
"countryCode": {
"type": "string",
"description": "The country code that the specific PAXI counter located in.",
"example": "ZAR"
},
"latitude": {
"type": "string",
"description": "Latitude of the specific PAXI counter",
"example": "-29.465811"
},
"longitude": {
"type": "string",
"description": "Longitude of the specific PAXI counter",
"example": "24.504266"
},
"nodeCode": {
"type": "string",
"description": "The unique identifier of the the specific PAXI counter. This field will be a 5 character alpha-numeric value",
"example": "P9999"
},
"nodeConceptDesc": {
"type": "string",
"description": "The store concept that the PAXI counter is located in, i.e. PEP STORE, PEP CELL, PEP HOME etc",
"example": "PEP STORE"
},
"nodeOpenDate": {
"type": "string",
"description": "The date the PAXI counter / store was opened",
"example": "1970-01-01"
},
"nodeShortName": {
"type": "string",
"description": "A descriptive, unique name for the PAXI counter, limited to 30 characters. It is however recommended that this name always be displayed along with the nodeCode",
"example": "PEP SAMPLE STORE SAMPLE TOWN"
},
"nodeStatusDesc": {
"type": "string",
"description": "The current status of the PAXI counter. Possible values are: ACTIVE (currently open and ready for use), CLOSED (permanently closed), HOLD (temporarily closed due to revamp, natural disaster or civil unrest) or PLANNED (not yet open but coming soon) .",
"example": "ACTIVE"
},
"nodeTypeDesc": {
"type": "string",
"description": "The type of PAXI counter location, i.e. STORE",
"example": "STORE"
},
"postalCode": {
"type": "string",
"description": "The postal code of the PAXI counter",
"example": "9999"
}
}
},
"EventAckObject": {
"type": "object",
"properties": {
"errorDatetime": {
"type": "string",
"description": "The date time stamp the error occurred",
"example": "2017-03-21T10:26:32.000+02:00"
},
"errorDesc": {
"type": "string",
"description": "The error description if an error occurred during the transaction",
"example": "Test error"
},
"upldDatetime": {
"type": "string",
"description": "The date time stamp the transaction was uploaded",
"example": "2017-01-21T10:26:32.000+02:00"
},
"upldTrnIdNo": {
"type": "integer",
"format": "int32",
"description": "The unique identifier for the upld trn record",
"example": 4
},
"userIdNo": {
"type": "integer",
"description": "The user id of the user that last updated the record",
"example": 1
}
}
},
"ReturnTokenObject": {
"type": "object",
"required": [
"customerCellphone",
"destinationNodeCode",
"supplierCode",
"supplierRefCode",
"userIdNo"
],
"properties": {
"customerCellphone": {
"type": "string",
"description": "Cellphone number of the customer requesting the return token to send back a faulty/unwanted purchase. Once generated the PAXI Return Token number (required when the customer drops off the item at the PAXI counter) will be sent to the customer via SMS.",
"example": "0712345678"
},
"customerEmail": {
"type": "string",
"description": "Optional email address of the customer requesting the return token. Used as a secondary communication channel to the customer as the return process as well as the PAXI terms and conditions for return can also be communicated.",
"example": "john.appleseed@emailprovider.com"
},
"destinationNodeCode": {
"type": "string",
"description": "The supplier facility's PAXI Location Code that the return parcel must be sent to for assessment. This code is issued by PAXI during the supplier on boarding process. If it is a separate facility to the normal Distribution Center this much be communicated to the PAXI account manager.",
"example": "SUPDC"
},
"supplierCode": {
"type": "string",
"description": "Issued by PAXI during the supplier registration and on boarding process. A unique supplier code identifying the supplier/shipper of a parcel",
"example": "SUP01"
},
"supplierRefCode": {
"type": "string",
"description": "A supplier reference field that links the return parcel to an authorized return or order. Depending on the supplier's internal processes this could be a credit note number or the original order number. This is a text field not validated by PAXI, but will be replicated to the physical parcel once the customer redeems the token at a PAXI Counter",
"example": "CN923762"
},
"userIdNo": {
"type": "integer",
"description": "The user id of the user that last updated the record",
"example": 1
}
}
},
"EventAckResponse": {
"type": "object",
"properties": {
"filteredItems": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"responseCode": {
"type": "string"
},
"results": {
"type": "string"
},
"success": {
"type": "boolean"
},
"totalItems": {
"type": "integer",
"format": "int32"
}
}
},
"GetNodesResponse": {
"type": "object",
"properties": {
"filteredItems": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"responseCode": {
"type": "string"
},
"results": {
"type": "array",
"items": {
"$ref": "#/definitions/NodeObject"
}
},
"success": {
"type": "boolean"
},
"totalItems": {
"type": "integer",
"format": "int32"
}
}
},
"GetNodeResponse": {
"type": "object",
"properties": {
"filteredItems": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"responseCode": {
"type": "string"
},
"results": {
"$ref": "#/definitions/NodeObject"
},
"success": {
"type": "boolean"
},
"totalItems": {
"type": "integer",
"format": "int32"
}
}
},
"EventObject": {
"type": "object",
"required": [
"upldTrnIdNo"
],
"properties": {
"customerRefCode": {
"type": "string",
"description": "The unique PAXI tracking number to identify the parcel in question. Depending on the induction mechanism used, this could be the number printed on the PAXI bag/label, or the supplier's own unique parcel number.",
"example": "D999999999999"
},
"logServProvParcelCode": {
"type": "string",
"description": "The PAXI courier code for the courier that was used to transport the parcel.",
"example": "PKL01"
},
"logServProvWaybillCode": {
"type": "string",
"description": "The courier waybill number for the parcel.",
"example": "SA006931950985001001"
},
"logisticsServiceProviderName": {
"type": "string",
"description": "The name of the courier that transported the parcel",
"example": "PEPKOR LOGISTICS"
},
"nodeCode": {
"type": "string",
"description": "The PAXI node code where the tracking event occurred. This could be a PAXI Counter, a courier hub or a supplier facility",
"example": "P_JBH"
},
"parcelEventTypeDesc": {
"type": "string",
"description": "A description of the type of tracking event that occurred e.g. SUPPLIER INDUCTION, HUB INSCAN, HUB OUTSCAN etc.",
"example": "HUB INSCAN"
},
"parcelEventTypeIdNo": {
"type": "number",
"description": "A tracking event number allocated by PAXI",
"example": 11
},
"podDocumentIdNo": {
"type": "number",
"description": "A document ID number for the Proof of Collection image that was generated during the customer collection process. This image can be retrieved from the PAXI document repository on request.",
"example": 3160017
},
"supplierCode": {
"type": "string",
"description": "The supplier code of the Supplier that inducted the parcel. Issued by PAXI during the supplier on boarding / registration process.",
"example": "SUP01"
},
"supplierName": {
"type": "string",
"description": "The name of the supplier linked to the parcel.",
"example": "EXAMPLE SUPPLIER"
},
"upldTrnCreateDatetime": {
"type": "string",
"description": "The Date and Timestamps that the tracking event was logged by the courier or PAXI Counter scanning the parcel",
"example": "2017-01-21T10:26:32.000+02:00"
},
"upldTrnIdNo": {
"type": "number",
"description": "The unique transaction ID record for the tracking event. This value will be used to acknowledge receipt of the tracking event.",
"example": 6531875
},
"parcelEventTypeMessageTemplate": {
"type": "string",
"description": "A customer-centric, user friendly tracking event message that consolidates all the tracking event elements into a single message to be displayed on a customer facing interface.",
"example": "Parcel scanned into PEPKOR LOGISTICS JOHANNESBURG HUB"
}
}
},
"GetEventsResponse": {
"type": "object",
"properties": {
"filteredItems": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"responseCode": {
"type": "string"
},
"results": {
"type": "array",
"items": {
"$ref": "#/definitions/EventObject"
}
},
"success": {
"type": "boolean"
},
"totalItems": {
"type": "integer",
"format": "int32"
}
}
},
"ReturnTokenResponse": {
"type": "object",
"properties": {
"filteredItems": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"responseCode": {
"type": "string"
},
"results": {
"type": "string"
},
"success": {
"type": "boolean"
},
"totalItems": {
"type": "integer",
"format": "int32"
}
}
},
"GetProductBySupplierResponse": {
"type": "object",
"properties": {
"filteredItems": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"responseCode": {
"type": "string"
},
"results": {
"type": "array",
"items": {
"$ref": "#/definitions/ProductSupplierPojo"
}
},
"success": {
"type": "boolean"
},
"totalItems": {
"type": "integer",
"format": "int32"
}
}
},
"ProductSupplierPojo": {
"type": "object",
"properties": {
"allowAlternativeCollectionInd": {
"type": "string",
"description": "Indicator to show whether this product was configured to allow for the receiver to nominate a proxy to go and collect on their behalf. The collector's ID will not be required to match the receiver's ID (provided during parcel registration) exactly",
"example": "N"
},
"logisticsServiceProviderCode": {
"type": "string",
"description": "The PAXI courier code of the default courier assigned to the product",
"example": "PKL"
},
"logisticsServiceProviderIdNo": {
"type": "integer",
"format": "int32",
"description": "The unique identifier for the courier provider",
"example": 3
},
"logisticsServiceProviderName": {
"type": "string",
"description": "The descriptive name for the courier",
"example": "PEPKOR-LOGISTICS"
},
"nodeGroupDesc": {
"type": "string",
"description": "The node network that the product is restricted to",
"example": "ALL NODES"
},
"nodeGroupIdNo": {
"type": "integer",
"format": "int32",
"description": "A unique identifier for the node group",
"example": 1
},
"productIdNo": {
"type": "integer",
"format": "int32",
"description": "The unique product identifier issued by PAXI for the specific product. This number must be provided during induction.",
"example": 10012
},
"productTypeDesc": {
"type": "string",
"description": "A description of the parcel type, relating to form and size",
"example": "Large Box"
},
"productTypeIdNo": {
"type": "integer",
"format": "int32",
"description": "A unique identifier for the product type",
"example": 6
},
"secureLocationRequiredInd": {
"type": "string",
"description": "An boolean indicator used to restrict storage within the pick-up point to high-security locations only",
"example": "N"
},
"supplierCode": {
"type": "string",
"description": "Issued by PAXI during the supplier registration and on boarding process. A unique supplier code identifying the supplier/shipper of a parcel",
"example": "SUP02"
},
"supplierName": {
"type": "string",
"description": "Supplier name as captured in PAXI during on boarding process. This name will appear in all customer SMS communication. Ideally it should be limited to fewer than 15 characters.",
"example": "SAMPLE SUPPLIER"
}
}
},
"RevealPinObject": {
"type": "object",
"required": [
"customerRefCode",
"supplierCode",
"userIdNo"
],
"properties": {
"customerRefCode": {
"type": "string",
"description": "The unique parcel tracking number for the parcel. In the case of a PAXI bag or label this will be the number printed on the bag or label. In the case of suppliers using their own number, this will be the number provided in the field of the same name during the induction web service.",
"example": "XQ27163592347ZA"
},
"supplierCode": {
"type": "string",
"description": "Issued by PAXI during the supplier registration and on boarding process. A unique supplier code identifying the supplier/shipper of a parcel",
"example": "SUP02"
},
"userIdNo": {
"type": "number",
"description": "Issued by PAXI during the supplier registration and on boarding process. A unique user ID allocated to the supplier's IT Service Provider",
"example": 99
}
}
},
"RevealPinResponse": {
"type": "object",
"properties": {
"filteredItems": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"responseCode": {
"type": "string"
},
"results": {
"type": "string",
"description": "The revealed PIN of the parcel"
},
"success": {
"type": "boolean"
},
"totalItems": {
"type": "integer",
"format": "int32"
}
}
},
"NearestNodeRequest": {
"type": "object",
"properties": {
"latitude": {
"type": "number",
"description": "Latitude of the desired delivery home address of the receiver (if known)",
"example": "-33.935483"
},
"longitude": {
"type": "number",
"description": "Longitude of the desired delivery address of the receiver (if known)",
"example": "18.606142"
},
"supplierCode": {
"type": "string",
"description": "Issued by PAXI during the supplier registration and on boarding process. A unique supplier code identifying the supplier/shipper of a parcel",
"example": "SUP02"
},
"productCode": {
"type": "string",
"description": "Issued by PAXI during the supplier registration and on boarding process. It represents a unique product identifier for the parcel indicating the parcel type and size and is used to enforce parcel rules. For a list of allowable values please call /getProductBySupplier using your supplierCode",
"example": 99999
},
"address": {
"type": "string",
"description": "If the exact coordinates of the delivery address are not known, the address can be provided as a string. PAXI will convert the address to a best estimate GPS coordinate using public geo-data APIs",
"example": "36 Stellenberg Rd, Parow Industrial, Cape Town, 7493"
}
}
},
"NearestNodeObject": {
"type": "object",
"properties": {
"nodeCode": {
"type": "string",
"description": "The unique PAXI Point Code nearest to the specified delivery coordinates or address",
"example": "P6329"
},
"nodeShortName": {
"type": "string",
"description": "The name of the PAXI Point",
"example": "PEP BELHAR CAVELIER CENTRE"
},
"distance": {
"type": "number",
"description": "The distance between the desired delivery address and the calculated closest/best PAXI Point. If the distance is greater than 50km no result will be returned",
"example": "1.7"
}
}
},
"NearestNodeResponse": {
"type": "object",
"properties": {
"filteredItems": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"responseCode": {
"type": "string"
},
"results": {
"$ref": "#/definitions/NearestNodeObject"
},
"success": {
"type": "boolean"
},
"totalItems": {
"type": "integer",
"format": "int32"
}
}
}
}
}