Delivery API - English ## Sections • [QuickShipper Delivery API](https://app.theneo.io/quickshipper/delivery-en/quickshipper-delivery-api.md): QuickShipper is a comprehensive platform designed to streamline order management for businesses operating across diverse sales channels. Whether you possess your own fleet of couriers or require efficient courier management and route planning, QuickShipper offers tailored solutions. Should you lack an existing courier network, QuickShipper seamlessly connects you with a range of reputable courier companies to fulfill your delivery needs. We're currently working on preparing the documentation, which will soon be enriched with comprehensive instructions to guide you through the process effectively. • [Authorization](https://app.theneo.io/quickshipper/delivery-en/authorization.md): To utilize the Delivery API, start by registering within the QuickShipper system. Connect with our team to initiate the integration process tailored to your needs. To get an authorization token, you need to send a POST request to the address : {BASE_URL}/connect/token Base Url values are: Title Description Test https://test-auth.quickshipper.ge Production https://auth.quickshipper.app The data required for Basic authentication for the test environment is DeliveryApiClient:DeliveryApiSecret encoded in base64 scheme. Plain text curl --request POST \ --url {BASE_URL}/connect/token \ --header 'Authorization: Basic RGVsaXZlcnlBcGlDbGllbnQ6RGVsaXZlcnlBcGlTZWNyZXQ=' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data ' { "grant_type": "password", "scope": "DeliveryApi", "username": "{YOUR_USERNAME}", "password": "{YOUR_PASSWORD}" } • [Endpoints](https://app.theneo.io/quickshipper/delivery-en/endpoints.md): All ResponseModels have the following fields: When the operation succeeds, the response will have Success set to true. In the event of failure, Success will be set to false, accompanied by an appropriate error message. • [GET v1/order/fees](https://app.theneo.io/quickshipper/delivery-en/endpoints/get-v1-order-fees.md): This method computes the cost to reach the intended destination. Provide the 'from' and 'to' locations as parameters, and receive a list of courier companies along with their respective fees. Keep in mind that each courier company might have distinct limitations. For instance: Inactive for a specific account Unavailable in a particular country/region/area/location Limited to serving within a specific radius from the destination Temporarily restricted due to weather, road congestion, or other reasons And more. • [GET v1/order/custom-fields](https://app.theneo.io/quickshipper/delivery-en/endpoints/get-v1-order-custom-fields.md): This method retrieves a list of predefined custom fields available on the store. Depending on internal processes, the store might want to fill 'non-standard' data. These configurations must be added to existing accounts. The response consists of an array of 'CustomFieldModel' objects. Custom fields come with a value type (text, date, yes/no, etc.) and a content type that allows us to bind different logic. Moreover, custom fields can be associated with the entire order or with individual packages within it. For instance, attributes like 'package weight' can be defined separately for each package, while 'payment type' can apply to the entire order. This distinction leads to two categories: General Fields and Parcel Fields. • [POST v1/order](https://app.theneo.io/quickshipper/delivery-en/endpoints/post-v1-order.md): The method is used to create an order. The coordinates and address of the destination, as well as the contact phone number and name must be specified. • [PUT v1/order](https://app.theneo.io/quickshipper/delivery-en/endpoints/put-v1-order.md): This method allows you to modify an existing order. You can refer to the possible meanin of the statuses here • [GET v1/order](https://app.theneo.io/quickshipper/delivery-en/endpoints/get-v1-order.md): This method retrieves order details using the provided order ID, which is returned as a response upon order creation. • [POST v1/order/status](https://app.theneo.io/quickshipper/delivery-en/endpoints/post-v1-order-status.md): This method facilitates changing the status of an order. You can see the possible values of the statuses here . Notably, cancellations are feasible if the order lacks a designated courier or if the associated provider permits cancellations via the integration service. (For instance, some providers may require written cancellation requests.) • [DELETE v1/order](https://app.theneo.io/quickshipper/delivery-en/endpoints/delete-v1-order.md): Please note that the order can be deleted if there is no assigned courier or if the connected provider permits cancellations through the integration service. • [Webhooks](https://app.theneo.io/quickshipper/delivery-en/get-v1-order-custom-fields-1.md): Webhooks provide timely updates on your orders. To enable this feature, register your addresses in the system. Webhooks are characterized by an active status, the maximum call attempt count, and a type that specifies the content of the received event. • [POST v1/webhook](https://app.theneo.io/quickshipper/delivery-en/get-v1-order-custom-fields-1/post-v1-webhook.md): Add a webhook that will be used to send events • [PUT v1/webhook](https://app.theneo.io/quickshipper/delivery-en/get-v1-order-custom-fields-1/put-v1-webhook.md): Edit existing webhook • [GET v1/webhook](https://app.theneo.io/quickshipper/delivery-en/get-v1-order-custom-fields-1/get-v1-webhook.md): Retrieves a list of currently added Webhooks. • [OrderStatus](https://app.theneo.io/quickshipper/delivery-en/enums/orderstatus.md): Here's a list of potential values for order statuses: Draft The order has been created but is not yet ready for processing ReadyForPickup Ready for pickup WaitingForCourier Waiting for the courier's response to the offer (this status is applicable when the store works with offers) Assigned A courier was assigned to the order Pickup The courier took the parcel OnTheWay Courier is on the way Delivered Delivery is successful Cancelled Order was cancelled DeliveryFailed Parcel delivery/pickup failed • [WebhookType](https://app.theneo.io/quickshipper/delivery-en/enums/webhooktype.md): Specifies the webhook type. Here are the available options: OrderStatusChange This event is triggered whenever there is a change in the order status CourierLocation This event is triggered whenever there is a change in the courier's location • [CustomFieldValueType](https://app.theneo.io/quickshipper/delivery-en/enums/customfieldvaluetype.md): Enum which specifies the value type of the custom field. Possible values are: Select... ShortText, //Short text field Numeric, //numeric field DateTime, //Date and time List, //List. Select one value Checkbox, // yes/no checkbox BigText, //Big text field • [CustomFieldGroupType](https://app.theneo.io/quickshipper/delivery-en/enums/customfieldgrouptype.md): Select... General, Parcel • [CustomFieldType](https://app.theneo.io/quickshipper/delivery-en/enums/customfieldtype.md): Enum, which specifies content of custom field. The following are available values: Select... General, //General type ParcelBarcode, //parcel barcode PickupDateTime, //Date and time of parcel pickup DropoffDateTime, //Date and time of dropping the parcel ParcelName, //Name of parcel ParcelVerification //Parcel verification field • [Delivery Button](https://app.theneo.io/quickshipper/delivery-en/delivery-button.md): Delivery Button is an easier way to integrate for stores that want to display their checkout page and let users choose their own delivery address and providers. To start testing, you first need to have an account on test.quickshipper.ge. You will be given a unique ApiKey that you will use for the integration API. The ApiKey can be found in the user profile in the Integration tab. For security reasons, it is recommended that you provide us with a list of IP addresses from which requests will be sent to the API. This could be, for example, the IP addresses of your servers or the developer's work/test computers. • [Possible scenarios](https://app.theneo.io/quickshipper/delivery-en/delivery-button/possible-scenarios.md): There are 2 possible scenarios: The store displays a QuickShipper button on the checkout page. When clicked, a modal/page with a map and address parameters appears. The user selects the desired provider and confirms. An order is created in QuickShipper with the status ReadyForPickup and the data is transferred to the delivery provider. The store displays a QuickShipper button on the checkout page. When clicked, a modal/page with a map and address parameters appears. The user selects the desired provider and confirms. An order is created in QuickShipper with the status Draft. The store charges the customer for the delivery amount and, if the payment is confirmed, calls the QuickShipper order/confirm service. The order status becomes ReadyForPickup and the data is transferred to the delivery provider. • [Display section on a checkout page](https://app.theneo.io/quickshipper/delivery-en/delivery-button/display-section.md): To display the Delivery Button on your website, you need to perform the following steps (the example shows test data): On the checkout page where you want the user to enter the delivery address, you need to load the file https://express.quickshipper.ge/assets/quickshipper-express.min.js . To do this, add the following script to the Head tag: JavaScript <script src="https://express.quickshipper.ge/assets/quickshipper-express.min.js"></script> 2. Add the style file to the Head Tag: CSS <link rel="stylesheet" href="https://express.quickshipper.ge/assets/quickshipper-express.min.css"> 3. Add a button to the page. For example: HTTP <div id="quickshipper-button-wrapper"></div> 4. Use the Quickshipper.createButton function to initialize the button, passing it an id and information about the addresses. For example: JavaScript window.Quickshipper.createButton({ buttonWrapperId: "quickshipper-button-wrapper", data: { pickupInfo: { city: "Tbilisi", address: "38 Iakob Gogebashvili St, T'bilisi, Georgia", latitude: "41.703022188006344", longitude: "44.78220031738281", name: "Dashboard", phonePrefix: "995", phone: "089888888", addressComment: "test express", }, dropInfo: { city: "Tbilisi", address: "15 Irakli Abashidze Street, T'bilisi, Georgia", latitude: "41.7080523856428", longitude: "44.77123544692993", name: "EXpress", phonePrefix: "995", phone: "089888888", addressComment: "test express", }, apiKey: "2dc471a6-fc86-4712-a5c4-84fad43c16ff" } }); window.Quickshipper.onOrderCreate = () => console.log("created"); The data in the dropoff object is not necessarily filled in and is used for prefill. After that, when you click on the button, a window with the Quickshipper interface should automatically appear. Please note that for full functionality, you need to specify your Google map key from your store settings.