Endpoints꞉ Consignments - Fastway-Couriers-South-Africa/myFastway.ApiClient GitHub Wiki

Contents

  1. Quick Start
  2. Request Objects
  3. Response Object

Endpoints

Endpoint Verb Paging Description
/api/consignments GET Y returns all consignments
/api/consignments/{id} GET returns consignment for a given Id
/api/consignments?from={from}&to={to} GET Y returns consignments for a given date range
/api/consignments/{id}/labels GET returns all labels for a given consignment
/api/consignments/{id}/labels/{label} GET returns a label for a given consignment
/api/consignments/pending GET returns pending consignments
/api/consignments/quote POST returns quote
/api/consignments POST create new consignments
/api/consignments/deleted-reasons GET gets the deleted reason id's
/api/consignments/{id}/files/document-types POST uploads a document of a given type to a consignment
/api/consignments/{id}/pickup-details POST updates the collection details for a given id
/api/consignments/{id}/reason/{deleteReasonId} DELETE deletes a consignment with a given reason
/api/consignments/{id}/undelete PUT restores a deleted consignment

Quick Start

Minimum Information Required to Consign

The following is the minimum amount of information required to create a consignment. All fields below are mandatory. The supplied address must conform to the Address Validation process

Consigning a parcel

{
  "To": {
    "ContactName": "",
    "PhoneNumber": "",
    "Email": "",
    "Address": {
      "StreetAddress": "",
      "Locality": "",
      "StateOrProvince": "",
      "PostalCode": "",
      "Country": ""
    }
  },
  "Items": [
    {
      "Quantity": 0,
      "PackageType": "P",
      "WeightDead": 0,
      "WeightCubic": 0,
      "Length": 0,
      "Width": 0,
      "Height": 0
    }
  ]
}

Consigning a satchel

{
  "To": {
    "ContactName": "",
    "PhoneNumber": "",
    "Email": "",
    "Address": {
      "StreetAddress": "",
      "Locality": "",
      "StateOrProvince": "",
      "PostalCode": "",
      "Country": ""
    }
  },
  "Items": [
    {
      "Quantity": 0,
      "PackageType": "S",
      "SatchelSize": "A4"
    }
  ]
}

Consigning both a parcel and satchel

{
  "To": {
    "ContactName": "",
    "PhoneNumber": "",
    "Email": "",
    "Address": {
      "StreetAddress": "",
      "Locality": "",
      "StateOrProvince": "",
      "PostalCode": "",
      "Country": ""
    }
  },
  "Items": [
    {
      "Quantity": 0,
      "Reference": "",
      "PackageType": "P",
      "WeightDead": 0,
      "WeightCubic": 0,
      "Length": 0,
      "Width": 0,
      "Height": 0
    },
    {
      "Quantity": 0,
      "PackageType": "S",
      "SatchelSize": "A4"
    }
  ]
}

Request Objects

Create Consignment with New Contact (receiver) Request

This request will create a consignment using the Contact information provided. This contact will be saved to your address book if "Automatically save new contacts to address book" has been selected under Options | Consignments (website)

{
  "To": {
    "ContactCode": "",
    "BusinessName": "",
    "ContactName": "",
    "PhoneNumber": "",
    "Email": "",
    "Address": {
      "StreetAddress": "",
      "AdditionalDetails": "",
      "Locality": "",
      "StateOrProvince": "",
      "PostalCode": "",
      "Country": ""
    }
  },
  "Items": [
    {
      "Quantity": 0,
      "Reference": "",
      "PackageType": "P",
      "WeightDead": 0,
      "WeightCubic": 0,
      "Length": 0,
      "Width": 0,
      "Height": 0
    },
    {
      "Quantity": 0,
      "PackageType": "S",
      "SatchelSize": "A4"
    }
  ],
  "Services": [
    {
      "ServiceCode": "",
      "ServiceItemCode": ""
    }
  ],
  "InstructionsPublic": "",
  "InstructionsPrivate": "",
  "ExternalRef1": "",
  "ExternalRef2": ""
}

Create Consignment with known Contact (receiver) Request

This request will use a previously saved contact using the ContactId provided

{
  "To": {
    "ContactId": 0
  },
  "Items": [
    {
      "Quantity": 0,
      "Reference": "",
      "PackageType": "P",
      "WeightDead": 0,
      "Length": 0,
      "Width": 0,
      "Height": 0
    },
    {
      "Quantity": 0,
      "Reference": "",
      "PackageType": "S",
      "SatchelSize": "A4"
    }
  ],
  "Services": [
    {
      "ServiceCode": "",
      "ServiceItemCode": ""
    }
  ],
  "InstructionsPublic": "",
  "InstructionsPrivate": "",
  "ExternalRef1": "",
  "ExternalRef2": ""
}

Create Consignment with known My-Item Request

A previously saved 'My Item' maybe been used by providing a myItemId

{
  "To": {
    "ContactId": 0
  },
  "Items": [
    {
      "myItemId": 0,
      "Quantity": 0,
      "Reference": ""
    }
  ],
  "Services": [
    {
      "ServiceCode": "",
      "ServiceItemCode": ""
    }
  ],
  "InstructionsPublic": "",
  "InstructionsPrivate": "",
  "ExternalRef1": "",
  "ExternalRef2": ""
}

Create Consignment with Optional Services

Opt-In Services can be added to a Consignment Request object via the Services property (Array). Each Service is added to the array as object containing the Service Code and the Service Item code.

{
  "Services": [
    {
      "ServiceCode": "",
      "ServiceItemCode": ""
    }
  ]
}

Example: To add a 'Leave at door' Service to a consignment the object would be

{
  "Services": [
    {
      "ServiceCode": "DELOPT",
      "ServiceItemCode": "ATL"
    }
  ]
}

Please see Services to see the available options (note: these may have to be set up by your Regional Franchise in advance)

Response Object

The following is the repsonse object returned from /api/consignments/{id}

{
  "data": {
    "conId": 0,
    "from": {
      "contactId": 0,
      "code": "",
      "businessName": "",
      "contactName": "",
      "phoneNumber": "",
      "email": "",
      "instructions": "",
      "address": {
        "addressId": 0,
        "streetAddress": "",
        "additionalDetails": "",
        "locality": "",
        "stateOrProvince": "",
        "postalCode": "",
        "country": "",
        "lat": 0.0,
        "lng": 0.0,
        "userCreated": false,
        "hash": ""
      }
    },
    "to": {
      "contactId": 0,
      "code": "",
      "businessName": "",
      "contactName": "",
      "phoneNumber": "",
      "email": "",
      "instructions": "",
      "address": {
        "addressId": 0,
        "streetAddress": "",
        "additionalDetails": "",
        "locality": "",
        "stateOrProvince": "",
        "postalCode": "",
        "country": "",
        "lat": 0.0,
        "lng": 0.0,
        "userCreated": false,
        "hash": ""
      }
    },
    "items": [
      {
        "conItemId": 0,
        "reference": "Parcel",
        "packageType": "P",
        "myItemId": null,
        "satchelSize": "",
        "weightDead": 0.0,
        "length": 0.0,
        "width": 0.0,
        "height": 0.0,
        "weightCubic": 0.0,
        "label": "",
        "price": 0.0,
        "tax": 0.0,
        "total": 0.0,
        "services": []
      }
    ],
    "price": 0.0,
    "tax": 0.0,
    "total": 0.0,
    "itemCount": 1,
    "instructionsPublic": "",
    "instructionsPrivate": "",
    "externalRef1": "",
    "externalRef2": "",
    "services": [
      {
        "serviceItemId": 0,
        "serviceDescription": "",
        "price": 0.0,
        "tax": 0.0,
        "total": 0.0
      }
    ]
  }
}

items.packageType (length: 1) These Package Types are available

items.satchelSize (length: 2) These Satchel Sizes are available

items.weightCubic - (read only) The calculated cubic weight of the package from the length, width and height dimensions

items.length - The length of the parcel (cm)

items.width - The width of the parcel (cm)

items.height - The height of the parcel (cm)

instructionsPublic (length: 500) Special Instructions, which a printed on the label. Note: Only the first 150 characters will be printed on the label

instructionsPrivate (length: 500) Private (internal) instructions, not visible to the receiver

externalRef1 (length: 100) reference field which can be used to link consignments to external systems

externalRef2 (length: 100) reference field which can be used to link consignments to external systems

Get By Date Range

/api/consignments?from={from}&to={to}

The format for the from and to query params is YYYYMMDD, e.g. for consignments between the 1st and 3rd of August 2018, the query string would be /api/consignments?from=20180801&to=20180603

Response Object

{
  "data": [
    {
      "conId": 0,
      "toBusinessName": "",
      "toContactName": "",
      "toStreetAddress": "",
      "toAdditionalDetails": "",
      "toLocality": "",
      "toStateOrProvince": "",
      "toPostalCode": "",
      "price": 0.0,
      "tax": 0.0,
      "total": 0.0,
      "totalInvoiced": 0.0,
      "itemCount": 0,
      "externalRef1": "",
      "externalRef2": "",
      "createdOn": "2018-08-17T10:12:15.5733"
    }
  ]
}

Labels

/api/consignments/{id}/labels?pageSize={pageSize}

/api/consignments/{id}/labels/{label}?pageSize={pageSize}

Request parameters

  • pageSize=A4 (default) - page size will be A4 with 4 labels per page
  • pageSize=4x6 - page size will be 4x6 inch, with one label per page

Response Object

Getting labels returns a byte array of a pdf file containing the labels

Note: By default, only labels without scanning events will be available for download i.e. once a courier has interacted with a parcel, the label is no longer available for download.

Pending

/api/consignments/pending

Returns newly created consignments that are yet to have any scanning events (courier interaction) associated with them

Response Object

{
  "data": [
    {
      "conTotal": 0.0,
      "conTotalInvoiced": 0.0,
      "conTotalPending": 0.0,
      "toAddress": "",
      "conId": 0,
      "toBusinessName": "",
      "toContactName": "",
      "createdOn": "2018-08-23T14:17:55.0867"
    },
    {
      "conTotal": 0.0,
      "conTotalInvoiced": 0.0,
      "conTotalPending": 0.0,
      "toAddress": "",
      "conId": 0,
      "toBusinessName": "",
      "toContactName": "",
      "createdOn": "2018-08-23T14:16:05.5367"
    }
  ]
}

Quote

/api/consignments/quote

Request Object

The quote end point accepts a consignment object in one of the shapes provided above.

Response Object

{
  "data": {
    "price": 0.0,
    "tax": 0.0,
    "total": 0.0,
    "items": [
      {
        "productType": "Labels",
        "description": "A4 satchel",
        "quantity": 1,
        "price": 0.0,
        "tax": 0.0,
        "total": 0.0
      },
      {
        "productType": "Labels",
        "description": "Parcel of 5.00kg dead, 0.63kg cubic (25cm x 10cm x 10cm)",
        "quantity": 1,
        "price": 0.0,
        "tax": 0.0,
        "total": 0.0
      }
    ]
  }
}

items.productType The type of product being quoted on. This is either labels (which includes labels and satchels) or service which is a mandatory service associated with item e.g. an on-forward / rural service

Quote (Version 2)

/api/consignments/quote?api-version=2

locationDetailsKey The cache key returned from the Location endpoint

Request Object

{
  "LocationDetailsKey": "{{locationDetailsKey}}",
  "Items": [
    {
      "Quantity": 1,
      "Reference": "",
      "PackageType": "P",
      "WeightDead": 1,
      "Length": 1,
      "Width": 1,
      "Height": 1
    },
    {
      "Quantity": 1,
      "Reference": "",
      "PackageType": "",
      "SatchelSize": "A4"
    }
  ],
  "Services": []
}

Response Object

An array of quote objects are returned, 1 for each SLA Service available, e.g. if both Economy and Priority services are available, 2 quotes will be returned in the array

{
  "data": [
    {
      "sla": {
        "sLACode": "",
        "sLAName": "",
        "sLADays": 0,
        "sLADescription": ""
      },
      "price": 0.0,
      "tax": 0.0,
      "total": 0.0,
      "items": [
        {
          "productType": "Labels",
          "description": "Parcel of 1kg dead, 0.10kg cubic (1cm x 1cm x 1cm)",
          "quantity": 1,
          "itemPrice": 0.0,
          "price": 0.0,
          "tax": 0.0,
          "total": 0.0
        },
        {
          "productType": "Labels",
          "description": "A4 satchel",
          "quantity": 1,
          "itemPrice": 0.0,
          "price": 0.0,
          "tax": 0.0,
          "total": 0.0
        }
      ]
    }
  ]
}

sla (Nullable) The service (Economy, Priority) available

Consign

Request Object

The consign end point accepts a Request Object

Response Object

{
  "data": {
    "consignmentId": 0
  }
}

Delete

/api/consignments/{id}/reason/{deleteReasonId}

Deletes a consignment for the given reason (see below)

Deleted Reasons

Response Object

{
  "data": [
    {
      "id": 3,
      "description": "Created in Error"
    },
    {
      "id": 4,
      "description": "Duplicate"
    }
  ]
}

Undelete

/api/consignments/{id}/undelete

Restores a deleted consignment

File Upload

/api/consignments/{id}/files/document-types/{documentTypeId}

Uploads a document of a given Document Type to an exsting consigment. The post should be of a multipart/form-data type, adding to the files collection (see below)

postman file upload

Pickup Details

/api/consignments/{id}/pickup-details

Request Object

{
  "preferredPickupDate": "yyyy-MM-ddTHH:mm:ss",
  "preferredPickupCycleId": 1,
  "fromInstructionsPublic": "pickup instructions"
}

Reponse

Returns Status Code 200 (OK)

Please see Collections for further information