Delivery Times Management

Manage delivery times

Retrieving all delivery times

get

Returns all the delivery times defined for the given tenant.

In case of any validation problem, the below errorCodes can be returned:

  • DELIVERY-TIME-500001: Internal problem with the service

Required scopes

  • shipping.shipping_read

Authorizations
Path parameters
tenantstringRequired
Responses
200
OK
application/json
Responseall of[]
and
get
GET /shipping/{tenant}/delivery-times HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "siteCode": "main",
    "name": "deliverytime1",
    "isDeliveryDay": true,
    "zoneId": "zone1",
    "day": {
      "weekday": "FRIDAY"
    },
    "isForAllZones": false,
    "timeZoneId": "Europe/Warsaw",
    "deliveryDayShift": 0,
    "slots": [
      {
        "shippingMethod": "method1",
        "deliveryTimeRange": {
          "timeFrom": "10:00",
          "timeTo": "12:00"
        },
        "cutOffTime": {
          "time": "2023-06-12T06:00:00.000Z",
          "deliveryCycleName": "morning"
        },
        "capacity": 100
      }
    ],
    "metadata": {
      "createdAt": "2020-10-19T13:04:09.894Z",
      "modifiedAt": "2020-10-19T13:04:10.979Z",
      "version": 1
    }
  },
  {
    "siteCode": "main",
    "timeZoneId": "UTC",
    "name": "deliverytime2",
    "isDeliveryDay": true,
    "zoneId": "zone2",
    "day": {
      "singleDate": "2023-06-12T10:00:00.000Z"
    },
    "isForAllZones": false,
    "deliveryDayShift": 2,
    "slots": [
      {
        "shippingMethod": "method1",
        "deliveryTimeRange": {
          "timeFrom": "10:00",
          "timeTo": "12:00"
        },
        "cutOffTime": {
          "time": "2023-06-12T06:00:00.000Z",
          "cutOffDayShift": 1,
          "deliveryCycleName": "morning"
        },
        "capacity": 100
      }
    ],
    "metadata": {
      "createdAt": "2020-10-19T13:04:09.894Z",
      "modifiedAt": "2020-10-19T13:04:10.979Z",
      "version": 1
    }
  }
]

Creating a delivery time

post

Creates a single delivery time. Delivery time allows to specify the cut off times for a specific zone and day of the week.

The endpoint has a validation which checks:

  • if the zoneId belongs to the site

  • if provided slots id are not duplicated

  • if the site exists in the system

  • if the timeFrom is before timeTo

In case of any validation problem, the below errorCodes can be returned:

  • DELIVERY-TIME-400001: Non-delivery day cannot have declared slots property

  • DELIVERY-TIME-400003: Delivery time of weekday type overlaps on existing one

  • DELIVERY-TIME-400004: Delivery time of singleDay type overlaps on existing one

  • DELIVERY-TIME-400005: Slot overlaps delivery time of another slots in given delivery time

  • DELIVERY-TIME-400006: Delivery time of datePeriod type overlaps on existing one

  • DELIVERY-TIME-400007: Duplicated time ranges and cutOff time different slots

  • DELIVERY-TIME-400008: 'ZoneId' cannot be provided when isForAllZones flag is active

  • DELIVERY-TIME-400009: Provided zone not exist in provided site

  • DELIVERY-TIME-400010: Provided shipping method does not belong to the given zone

  • DELIVERY-TIME-400011: Delivery 'timeFrom' cannot be after 'timeTo'

  • DELIVERY-TIME-400012: Delivery time dateFrom cannot be after dateTo

  • DELIVERY-TIME-400013: isForAllZones flag cannot be active for delivery day

  • DELIVERY-TIME-400014: Zone id must be provided for delivery day

  • DELIVERY-TIME-400015: There are duplicated slot ids in the slots array

  • DELIVERY-TIME-400016: Provided timeZoneId is incorrect

  • DELIVERY-TIME-400017: Timezone indicates different time shift than provided delivery time

  • DELIVERY-TIME-400018: Delivery cutOffTime cannot be after 'timeTo'

  • DELIVERY-TIME-404001: Provided site does not exist

  • DELIVERY-TIME-409001: Delivery time with given id already exists in the system

  • DELIVERY-TIME-500001: Internal problem with the service

  • DELIVERY-TIME-SLOT-400001: There are overlapping slot id in the request

  • DELIVERY-TIME-SLOT-400005: The slot cut off day is set when the delivery time date or period is set

  • DELIVERY-TIME-SLOT-400006: The slot cut off day is set when the delivery day shift is set

Required scopes

  • shipping.shipping_manage

Authorizations
Path parameters
tenantstringRequired
Query parameters
validateOverlapbooleanOptional

The flag allows to enable or disable the validation which checks if the delivery time ranges from slots of the same shipping method overlap each other.

Default: true
Body
idstringOptional

Delivery Time ID: Autogenerated (if not provided in request) or User-Defined

namestringOptional

Optional name for Delivery Time

siteCodestringRequired

Site code for which the Delivery Time is assigned

isDeliveryDaybooleanRequired

true indicates that the Delivery Time holds delivery date information, whereas false represents that the Delivery Time configuration has disabled delivery for a specific date or time period.

zoneIdstringOptional

ID of the delivery zone for which the Delivery Time is valid

isForAllZonesbooleanOptional

Flag which indicates if the non-delivery time is defined for the same day, period or weekday for all zones of the site

timeZoneIdstringRequired

Id of the time zone for which the Delivery Time should be created (e.g. Europe/Warsaw).

deliveryDayShiftintegerOptional

Indicates in how many days the order has been delivered when the order has been completed before cut-off time.

Default: 0
Responses
201
Created
application/json
post
POST /shipping/{tenant}/delivery-times HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 370

{
  "siteCode": "main",
  "name": "deliverytime1",
  "isDeliveryDay": true,
  "zoneId": "zone1",
  "day": {
    "weekday": "FRIDAY"
  },
  "isForAllZones": false,
  "timeZoneId": "Europe/Warsaw",
  "deliveryDayShift": 0,
  "slots": [
    {
      "shippingMethod": "method1",
      "deliveryTimeRange": {
        "timeFrom": "10:00",
        "timeTo": "12:00"
      },
      "cutOffTime": {
        "time": "2023-06-12T06:00:00.000Z",
        "deliveryCycleName": "morning"
      },
      "capacity": 100
    }
  ]
}
{
  "id": "647d937ea45a82228e887ab1"
}

Creating multiple delivery times

post

Creates multiple delivery times in a single request.

The endpoint has a validation which checks:

  • if the zoneId belongs to the site

  • if provided slots id are not duplicated

  • if the site exists in the system

  • if the timeFrom is before timeTo

In case of any validation problem, the below errorCodes can be returned:

  • DELIVERY-TIME-400001: Non-delivery day cannot have declared slots property

  • DELIVERY-TIME-400003: Delivery time of weekday type overlaps on existing one

  • DELIVERY-TIME-400004: Delivery time of singleDay type overlaps on existing one

  • DELIVERY-TIME-400005: Slot overlaps delivery time of another slots in given delivery time

  • DELIVERY-TIME-400006: Delivery time of datePeriod type overlaps on existing one

  • DELIVERY-TIME-400007: Duplicated time ranges and cutOff time different slots

  • DELIVERY-TIME-400008: 'ZoneId' cannot be provided when isForAllZones flag is active

  • DELIVERY-TIME-400009: Provided zone not exist in provided site

  • DELIVERY-TIME-400010: Provided shipping method does not belong to the given zone

  • DELIVERY-TIME-400011: Delivery 'timeFrom' cannot be after 'timeTo'

  • DELIVERY-TIME-400012: Delivery time dateFrom cannot be after dateTo

  • DELIVERY-TIME-400013: isForAllZones flag cannot be active for delivery day

  • DELIVERY-TIME-400014: Zone id must be provided for delivery day

  • DELIVERY-TIME-400015: There are duplicated slot ids in the slots array

  • DELIVERY-TIME-400016: Provided timeZoneId is incorrect

  • DELIVERY-TIME-400017: Timezone indicates different time shift than provided delivery time

  • DELIVERY-TIME-400018: Delivery cutOffTime cannot be after 'timeTo'

  • DELIVERY-TIME-404001: Provided site does not exist

  • DELIVERY-TIME-409001: Delivery time with given id already exists in the system

  • DELIVERY-TIME-409002: Optimistic locking - provided metadata.version doesn't match

  • DELIVERY-TIME-500001: Internal problem with the service

  • DELIVERY-TIME-SLOT-400001: There are overlapping slot id in the request

  • DELIVERY-TIME-SLOT-400005: The slot cut off day is set when the delivery time date or period is set

  • DELIVERY-TIME-SLOT-400006: The slot cut off day is set when the delivery day shift is set

Required scopes

  • shipping.shipping_manage

Authorizations
Path parameters
tenantstringRequired
Query parameters
validateOverlapbooleanOptional

The flag allows to enable or disable the validation which checks if the delivery time ranges from slots of the same shipping method overlap each other.

Default: true
Bodyobject · DeliveryTime[]
idstringOptional

Delivery Time ID: Autogenerated (if not provided in request) or User-Defined

namestringOptional

Optional name for Delivery Time

siteCodestringRequired

Site code for which the Delivery Time is assigned

isDeliveryDaybooleanRequired

true indicates that the Delivery Time holds delivery date information, whereas false represents that the Delivery Time configuration has disabled delivery for a specific date or time period.

zoneIdstringOptional

ID of the delivery zone for which the Delivery Time is valid

isForAllZonesbooleanOptional

Flag which indicates if the non-delivery time is defined for the same day, period or weekday for all zones of the site

timeZoneIdstringRequired

Id of the time zone for which the Delivery Time should be created (e.g. Europe/Warsaw).

deliveryDayShiftintegerOptional

Indicates in how many days the order has been delivered when the order has been completed before cut-off time.

Default: 0
Responses
207
Multi-status with all the details
application/json
post
POST /shipping/{tenant}/delivery-times/bulk HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 743

[
  {
    "siteCode": "main",
    "name": "deliverytime1",
    "isDeliveryDay": true,
    "zoneId": "zone1",
    "day": {
      "weekday": "MONDAY"
    },
    "isForAllZones": false,
    "timeZoneId": "Europe/Warsaw",
    "deliveryDayShift": 0,
    "slots": [
      {
        "shippingMethod": "method1",
        "deliveryTimeRange": {
          "timeFrom": "10:00",
          "timeTo": "12:00"
        },
        "cutOffTime": {
          "time": "2023-06-12T06:00:00.000Z",
          "deliveryCycleName": "morning"
        },
        "capacity": 100
      }
    ]
  },
  {
    "siteCode": "main",
    "name": "deliverytime1",
    "isDeliveryDay": true,
    "zoneId": "zone2",
    "day": {
      "weekday": "FRIDAY"
    },
    "isForAllZones": false,
    "timeZoneId": "Europe/Warsaw",
    "deliveryDayShift": 0,
    "slots": [
      {
        "shippingMethod": "method1",
        "deliveryTimeRange": {
          "timeFrom": "10:00",
          "timeTo": "12:00"
        },
        "cutOffTime": {
          "time": "2023-06-12T06:00:00.000Z",
          "deliveryCycleName": "morning"
        },
        "capacity": 100
      }
    ]
  }
]
[
  {
    "id": "123456789",
    "index": 0,
    "code": 400,
    "status": "BAD_REQUEST",
    "errorCodes": [
      "DELIVERY-TIME-404001"
    ],
    "message": "There are validation problems, see details section for more information",
    "type": "validation_violation",
    "details": [
      "siteCode cannot be null"
    ]
  }
]

Getting a delivery time

get

Retrieves a specific delivery time.

In case of any validation problem, the below errorCodes can be returned:

  • DELIVERY-TIME-404002: Delivery time with given id does not exist in the system

  • DELIVERY-TIME-500001: Internal problem with the service

Required scopes

  • shipping.shipping_read

Authorizations
Path parameters
tenantstringRequired
deliveryTimeIdstringRequired
Responses
200
OK
application/json
Responseall of
and
get
GET /shipping/{tenant}/delivery-times/{deliveryTimeId} HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "id": "648700f2d23c990ec006fd06",
  "siteCode": "main",
  "name": "deliverytime3",
  "isDeliveryDay": true,
  "zoneId": "zone3",
  "day": {
    "singleDate": "2023-06-12T10:00:00.000Z"
  },
  "isForAllZones": false,
  "timeZoneId": "Europe/Warsaw",
  "deliveryDayShift": 0,
  "slots": [
    {
      "id": "5bb01144-7c72-4659-9ca2-f1f435108c63",
      "shippingMethod": "method1",
      "deliveryTimeRange": {
        "timeFrom": "10:00",
        "timeTo": "12:00"
      },
      "cutOffTime": {
        "time": "2023-06-12T06:00:00.000Z",
        "cutOffDayShift": 1,
        "deliveryCycleName": "morning"
      },
      "capacity": 100
    }
  ],
  "metadata": {
    "createdAt": "2023-06-12T11:26:42.250Z",
    "modifiedAt": "2023-06-12T11:26:42.250Z",
    "version": 1
  }
}

Updating a delivery time

put

Updates a single delivery time with a given information. Optimistic locking is validated only if the 'metadata' property is provided.

The endpoint has a validation which checks:

  • if the zoneId belongs to the site

  • if provided slots id are not duplicated

  • if the site exists in the system

  • if the timeFrom is before timeTo

Note: Depending on a case, a different set of fields is allowed.

In case of any validation problem, the below errorCodes can be returned:

  • DELIVERY-TIME-400001: Non-delivery day cannot have declared slots property

  • DELIVERY-TIME-400002: Provided id from the payload must match id from the url

  • DELIVERY-TIME-400003: Delivery time of weekday type overlaps on existing one

  • DELIVERY-TIME-400004: Delivery time of singleDay type overlaps on existing one

  • DELIVERY-TIME-400005: Slot overlaps delivery time of another slots in given delivery time

  • DELIVERY-TIME-400006: Delivery time of datePeriod type overlaps on existing one

  • DELIVERY-TIME-400007: Duplicated time ranges and cutOff time different slots

  • DELIVERY-TIME-400008: 'ZoneId' cannot be provided when isForAllZones flag is active

  • DELIVERY-TIME-400009: Provided zone not exist in provided site

  • DELIVERY-TIME-400010: Provided shipping method does not belong to the given zone

  • DELIVERY-TIME-400011: Delivery 'timeFrom' cannot be after 'timeTo'

  • DELIVERY-TIME-400012: Delivery time dateFrom cannot be after dateTo

  • DELIVERY-TIME-400013: isForAllZones flag cannot be active for delivery day

  • DELIVERY-TIME-400014: Zone id must be provided for delivery day

  • DELIVERY-TIME-400015: There are duplicated slot ids in the slots array

  • DELIVERY-TIME-400016: Provided timeZoneId is incorrect

  • DELIVERY-TIME-400017: Timezone indicates different time shift than provided delivery time

  • DELIVERY-TIME-400018: Delivery cutOffTime cannot be after 'timeTo'

  • DELIVERY-TIME-404001: Provided site does not exist

  • DELIVERY-TIME-404002: Delivery time with given id does not exist in the system

  • DELIVERY-TIME-409001: Delivery time with given id already exists in the system

  • DELIVERY-TIME-409002: Optimistic locking - provided metadata.version does not match

  • DELIVERY-TIME-500001: Internal problem with the service

  • DELIVERY-TIME-SLOT-400001: There are overlapping slot id in the request

  • DELIVERY-TIME-SLOT-400005: The slot cut off day is set when the delivery time date or period is set

  • DELIVERY-TIME-SLOT-400006: The slot cut off day is set when the delivery day shift is set

Required scopes

  • shipping.shipping_manage

Authorizations
Path parameters
tenantstringRequired
deliveryTimeIdstringRequired
Query parameters
validateOverlapbooleanOptional

The flag allows to enable or disable the validation which checks if the delivery time ranges from slots of the same shipping method overlap each other.

Default: true
Body
all ofOptional
and
Responses
200
OK
put
PUT /shipping/{tenant}/delivery-times/{deliveryTimeId} HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 395

{
  "siteCode": "main",
  "name": "deliverytime1",
  "isDeliveryDay": true,
  "zoneId": "zone1",
  "day": {
    "weekday": "FRIDAY"
  },
  "isForAllZones": false,
  "timeZoneId": "Europe/Warsaw",
  "deliveryDayShift": 0,
  "slots": [
    {
      "shippingMethod": "method1",
      "deliveryTimeRange": {
        "timeFrom": "10:00",
        "timeTo": "12:00"
      },
      "cutOffTime": {
        "time": "2023-06-12T06:00:00.000Z",
        "deliveryCycleName": "morning"
      },
      "capacity": 100
    }
  ],
  "metadata": {
    "version": 1
  }
}

No content

Deleting a delivery time

delete

Deletes a specific delivery time with all slots that it had created.

In case of any validation problem, the below errorCodes can be returned:

  • DELIVERY-TIME-404001: Provided site does not exist

  • DELIVERY-TIME-404002: Delivery time with given id does not exist in the system

  • DELIVERY-TIME-500001: Internal problem with the service

Required scopes

  • shipping.shipping_manage

Authorizations
Path parameters
tenantstringRequired
deliveryTimeIdstringRequired
Responses
204
No Content
delete
DELETE /shipping/{tenant}/delivery-times/{deliveryTimeId} HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*

No content

Partial updating of a delivery time

patch

Partially updates a single delivery time with a given information.

Note:

Depending on a case, a different set of fields is allowed.

The endpoint has a validation which checks:

  • if the zoneId belongs to the site

  • if provided slots id are not duplicated

  • if the site exists in the system

  • if the timeFrom is before timeTo

The patch request consists of set of operation, that should be defined according to RFC-6902 standard

In case of any validation problem, the below errorCodes can be returned:

  • DELIVERY-TIME-400001: Non-delivery day cannot have declared slots property

  • DELIVERY-TIME-400002: Provided id from the payload must match id from the url

  • DELIVERY-TIME-400003: Delivery time of weekday type overlaps on existing one

  • DELIVERY-TIME-400004: Delivery time of singleDay type overlaps on existing one

  • DELIVERY-TIME-400005: Slot overlaps delivery time of another slots in given delivery time

  • DELIVERY-TIME-400006: Delivery time of datePeriod type overlaps on existing one

  • DELIVERY-TIME-400007: Duplicated time ranges and cutOff time different slots

  • DELIVERY-TIME-400008: 'ZoneId' cannot be provided when isForAllZones flag is active

  • DELIVERY-TIME-400009: Provided zone not exist in provided site

  • DELIVERY-TIME-400010: Provided shipping method does not belong to the given zone

  • DELIVERY-TIME-400011: Delivery 'timeFrom' cannot be after 'timeTo'

  • DELIVERY-TIME-400012: Delivery time dateFrom cannot be after dateTo

  • DELIVERY-TIME-400013: isForAllZones flag cannot be active for delivery day

  • DELIVERY-TIME-400014: Zone id must be provided for delivery day

  • DELIVERY-TIME-400015: There are duplicated slot ids in the slots array

  • DELIVERY-TIME-400016: Provided timeZoneId is incorrect

  • DELIVERY-TIME-400017: Timezone indicates different time shift than provided delivery time

  • DELIVERY-TIME-400018: Delivery cutOffTime cannot be after 'timeTo'

  • DELIVERY-TIME-404001: Provided site does not exist

  • DELIVERY-TIME-404002: Delivery time with given id does not exist in the system

  • DELIVERY-TIME-409001: Delivery time with given id already exists in the system

  • DELIVERY-TIME-500001: Internal problem with the service

  • DELIVERY-TIME-SLOT-400001: There are overlapping slot id in the request

  • DELIVERY-TIME-SLOT-400005: The slot cut off day is set when the delivery time date or period is set

  • DELIVERY-TIME-SLOT-400006: The slot cut off day is set when the delivery day shift is set

Required scopes

  • shipping.shipping_manage

Authorizations
Path parameters
tenantstringRequired
deliveryTimeIdstringRequired
Query parameters
validateOverlapbooleanOptional

The flag allows to enable or disable the validation which checks if the delivery time ranges from slots of the same shipping method overlap each other.

Default: true
Bodyobject[]
opstringOptional

Indicates an operation which should be done. Available operations: add, remove and replace

pathstringOptional

Indicates a path for which the value should be applied. For example: /shippingMethod, /cutOffTime/day

valueone ofOptional

Indicates a value that should be changed or added. The value can be of a primitive type, like string, number, boolean or it can be an object or an array.

stringOptional
or
objectOptional
Responses
200
OK
patch
PATCH /shipping/{tenant}/delivery-times/{deliveryTimeId} HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 59

[
  {
    "op": "replace",
    "path": "/name",
    "value": "newdeliverytime"
  }
]

No content

Was this helpful?