Interface Specification Document (ISD) v1.1 Exacta GTP AutoStore Peru Effective 3/17/2023 This document contains information considered proprietary to Bastian Solutions. It may not be duplicated, used or disclosed outside the original recipient organization, and it may not be duplicated in whole or in part, for any purpose other than to evaluate this document. Bastian Software Solutions reserves the right to modify this document as necessary. Exacta GTP – AutoStore - ISD Contents 1 2 Modification Log ...................................................................................................... 5 Overview ................................................................................................................... 6 2.1 2.2 3 Summary of Interfaces ............................................................................................ 7 3.1 3.2 4 Exacta Import Gateway .......................................................................................................... 9 Exacta Export Publisher ........................................................................................................ 9 Import Overview ..................................................................................................... 11 6.1 7 Communication Protocol ....................................................................................................... 8 API Response ......................................................................................................................... 8 API Security .............................................................................................................. 9 5.1 5.2 6 Import Gateway (Host System è Exacta) ............................................................................. 7 Exacta Export Publisher (Exacta è Host System) .............................................................. 7 Communication ........................................................................................................ 8 4.1 4.2 5 Document Purpose ................................................................................................................. 6 Exacta Connect ....................................................................................................................... 6 Module Overview .................................................................................................................. 11 Exacta Import Gateway - Touchpoints ................................................................. 12 7.1 7.1.1 7.1.1 7.1.1 7.1.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.1.6 7.2 7.2.1 7.2.1 7.2.1 7.2.2 7.2.3 7.2.4 7.2.5 7.2.6 7.2.7 7.3 7.3.1 7.3.2 7.3.1 7.3.2 7.3.3 7.3.4 7.3.5 7.3.6 7.3.7 Product Master...................................................................................................................... 12 Product Header .................................................................................................................. 12 Product Alias ...................................................................................................................... 14 Product Detail ..................................................................................................................... 14 Product UOM Type ............................................................................................................. 14 Uom Zone ........................................................................................................................... 16 Schema .............................................................................................................................. 16 Example Message .............................................................................................................. 17 Response ........................................................................................................................... 18 Processing .......................................................................................................................... 18 Product Use Cases ............................................................................................................. 19 Putaway Request .................................................................................................................. 20 Order Header...................................................................................................................... 20 Container ............................................................................................................................ 21 Order Line ........................................................................................................................... 21 Detail .................................................................................................................................. 22 Schema .............................................................................................................................. 22 Example Message .............................................................................................................. 23 Response ........................................................................................................................... 23 Processing .......................................................................................................................... 24 Putaway Request Use Cases ............................................................................................. 24 Pick Request ......................................................................................................................... 25 Order Header...................................................................................................................... 25 Container ............................................................................................................................ 26 Routing Zone ...................................................................................................................... 27 Order Line ........................................................................................................................... 27 Detail .................................................................................................................................. 28 Schema .............................................................................................................................. 28 Example Message .............................................................................................................. 29 Response ........................................................................................................................... 30 Processing .......................................................................................................................... 31 Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 2 Exacta GTP – AutoStore - ISD 7.3.8 7.4 7.4.1 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.4.6 7.4.7 7.5 7.5.1 7.5.2 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.6 7.6.1 7.6.1 7.6.2 7.6.3 7.6.4 8 9 Pick Request Use Cases .................................................................................................... 31 Cycle Count Request............................................................................................................ 32 Order Header...................................................................................................................... 32 Order Line ........................................................................................................................... 32 Order Detail ........................................................................................................................ 33 Schema .............................................................................................................................. 33 Example Message .............................................................................................................. 33 Response ........................................................................................................................... 34 Processing .......................................................................................................................... 34 Cycle Count Request Use Cases ....................................................................................... 34 Container Request ................................................................................................................ 36 Container ............................................................................................................................ 36 Routing Zone ...................................................................................................................... 37 Detail .................................................................................................................................. 37 Schema .............................................................................................................................. 38 Example Message .............................................................................................................. 38 Response ........................................................................................................................... 39 Processing .......................................................................................................................... 39 Container Request Use Cases ........................................................................................... 39 Available Inventory Request ................................................................................................ 40 Response ........................................................................................................................... 40 Product Quantity Summary ................................................................................................. 40 Response ........................................................................................................................... 41 Processing .......................................................................................................................... 41 Inventory Use Cases .......................................................................................................... 41 Export Overview .................................................................................................... 43 Exacta Export Publisher - Touchpoints ............................................................... 44 9.1 9.1.1 9.1.1 9.1.1 9.1.2 9.1.3 9.1.4 9.1.5 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.2.5 9.2.6 9.2.7 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.3.6 9.3.7 Putaway Confirm .................................................................................................................. 44 Putaway Control ................................................................................................................. 44 Order Line ........................................................................................................................... 44 Order Line Details ............................................................................................................... 45 Schema .............................................................................................................................. 45 Example.............................................................................................................................. 45 Processing .......................................................................................................................... 46 Putaway Confirm Use Cases .............................................................................................. 46 Pick Confirm ......................................................................................................................... 47 Pick Control ........................................................................................................................ 47 Order Line ........................................................................................................................... 47 Order Line Details ............................................................................................................... 48 Schema .............................................................................................................................. 48 Example.............................................................................................................................. 48 Processing .......................................................................................................................... 49 Pick Confirm Use Cases ..................................................................................................... 49 Cycle Count Confirm ............................................................................................................ 50 Cycle Count Control............................................................................................................ 50 Order Details ...................................................................................................................... 50 Order Line ........................................................................................................................... 50 Schema .............................................................................................................................. 50 Example.............................................................................................................................. 51 Processing .......................................................................................................................... 51 Cycle Count Complete Use Cases ..................................................................................... 51 Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 3 Exacta GTP – AutoStore - ISD 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.4.5 9.4.6 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.6.5 9.7 9.7.1 9.7.2 9.7.3 9.7.4 9.7.5 9.8 9.8.1 9.8.2 9.8.3 10 Exception Scenario Examples........................................................................... 64 10.1.1 10.1.2 11 12 Inventory Adjustment ........................................................................................................... 53 Inventory Adjustment Control.............................................................................................. 53 Order Line ........................................................................................................................... 53 Schema .............................................................................................................................. 53 Example.............................................................................................................................. 54 Processing .......................................................................................................................... 54 Inventory Adjustment Use Cases ....................................................................................... 54 Divert Confirm....................................................................................................................... 55 Diver Confirm Control ......................................................................................................... 55 Schema .............................................................................................................................. 55 Example.............................................................................................................................. 56 Processing .......................................................................................................................... 56 Divert Confirm Adjustment Use Cases................................................................................ 56 Verification Scan................................................................................................................... 57 Verification Scan Control .................................................................................................... 57 Schema .............................................................................................................................. 57 Example.............................................................................................................................. 57 Processing .......................................................................................................................... 58 Verification Scan Adjustment Use Cases ............................................................................ 58 Weight Result ........................................................................................................................ 59 Weight Result Control ......................................................................................................... 59 Schema .............................................................................................................................. 60 Example.............................................................................................................................. 60 Processing .......................................................................................................................... 60 Divert Confirm Adjustment Use Cases................................................................................ 61 Inventory Reconciliation ...................................................................................................... 62 Inventory Reconciliation ...................................................................................................... 62 Processing .......................................................................................................................... 62 Inventory Reconciliation Use Cases ................................................................................... 62 Inbound............................................................................................................................... 64 Outbound ............................................................................................................................ 65 System Assumptions ......................................................................................... 69 Frequently Asked Questions (FAQ) .................................................................. 70 Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 4 Exacta GTP – AutoStore - ISD 1 Modification Log Document Version Date Author 1.0 1.1 03/13/2023 3/17/2023 D. Cromer J. Calhoun Summary of Changes - Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 First version produced. Updated Top Off Method values Added note to Top Off Window Days 5 Exacta GTP – AutoStore - ISD 2 2.1 Overview Document Purpose This Interface Specification Document (ISD) describes the methods for interfacing the Exacta Warehouse Execution System (WES) with the host system. The interface trigger events, communication protocols, and data for Exacta’s communication with these systems are detailed within this document. 2.2 Exacta Connect Exacta Connect consists of Exacta Import Gateway and Exacta Export Publisher. Exacta Import Gateway communicates with a host system to receive data from the host system in the proper format, and place the data received into internal Exacta staging tables for further processing. Exacta Export Publisher takes data from an internal Exacta staging table, formats the data into a JSON structured message, and sends that message to the host system. Both Exacta Import Gateway and Exacta Export Publisher communicate with external systems and are separate from the business processing of the data. Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 6 Exacta GTP – AutoStore - ISD 3 Summary of Interfaces Exacta communicates with the host system using a web services API. Below is a summary of the touch points for the system: 3.1 Import Gateway (Host System è Exacta) Interface Product Master Putaway Order Pick Order Cycle Count Order Container Information Available Inventory 3.2 Description Used to add or update each product managed in the system Adds Putaways for received material Protocol Web API Adds pick orders for fulfilling outbound orders from the AutoStore Creates a Cycle Count order within Exacta for counting stocked inventory within the AutoStore Used to update container information Web API API call to determine quantity of available (able to be assigned) inventory within the AutoStore™ for a specific SKU Web API Web API Web API Web API Exacta Module Exacta Import Gateway Exacta Import Gateway Exacta Import Gateway Exacta Import Gateway Exacta Import Gateway Exacta Import Gateway Exacta Export Publisher (Exacta è Host System) Interface Putaway Confirm Pick Confirm Cycle Count Confirm Inventory Adjustment Divert Confirm Verification Scan Weight Check Inventory Reconciliation Description Used to notify the host system that a putaway order has been completed Used to notify the host system when a pick order is completed Used to notify the host system when a cycle count has been completed for a product Used to notify the host system when inventory has been adjusted by means of: • Pick Adjustment • Cycle Count Order Adjustment • Hot Cycle Count Adjustment • Hot Pick • Hot Putaway Used to notify the host system when a container has been diverted to a storage zone, pick zone, pack lane, or ship lane Used to send verification scan checks after a print and apply in a system with conveyor routing. Used to send weight / dimension data back to the host system when a container passes through a weight scale or dimensioner in systems that utilize conveyor routing. Used to provide the host system with the total quantity on-hand for each product. The host Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 Protocol Web API Web API Web API Web API Exacta Module Exacta Export Publisher Exacta Export Publisher Exacta Export Publisher Exacta Export Publisher Web API Exacta Export Publisher Web API Exacta Export Publisher Web API Exacta Export Publisher Flat File Exacta Export Publisher 7 Exacta GTP – AutoStore - ISD system can use the data to verify inventory in the host system and Exacta are in sync. 4 4.1 Communication Communication Protocol The host system and Exacta will communicate via a Web Services API. The API uses JSON message formatting. A separate URL will be used for each touch point. Below is a list of URLs: Exacta Import Gateway: Host System to Exacta: • Product Master: http://<configurable url>/exactaApi/import/v1/product • Putaway Order: http://<configurable url>/exactaApi/import/putaway • Pick Order: http://<configurable url>/exactaApi/import/pick • Container Routing: http://<configurable url>/exactaApi/import/container • Cycle Count Order: http://<configurable url>/exactaApi/import/cyclecount • Inventory: http://<configurable url>/exactaApi/import/inventory Exacta Export Publisher: Exacta to the Host System: • Putaway Order Confirmation: http://<configurable url>/export/putconfirm • Pick Order Confirmation: http://<configurable url>/export/pickconfirm • Divert Confirmation: http://<configurable url>/export/divertconfirm • Cycle Count Confirmation: http://<configurable url>/export/cyclecountconfirm • Inventory Adjustment: http://<configurable url>/export/invadj 4.2 API Response The responses are outlined in each transaction type. Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 8 Exacta GTP – AutoStore - ISD 5 API Security 5.1 Exacta Import Gateway Exacta Import Gateway will use a configurable API key that is stored within a secure Exacta database. The host system will have this API key stored within the host system. The API key will be sent as a header when the host system sends a message to Exacta. PowerShell Example: $apiKey = "SOME_CONFIGURED_API_KEY" Invoke-WebRequest -Uri "https://localhost:8080/exactaApi/import/pick" -Headers @{ "api-key" = $apiKey } -Method Post 5.2 Exacta Export Publisher Exacta Export Publisher will use webhook authorization to allow an endpoint to subscribe to events published by Exacta. At a high level, Bastian expects the following from the host system (consumer) that would like to receive events from Exacta: • • • Consumer Host - This is the hostname or address of the consumer API (i.e. https://1.2.3.5:5678) that would like to receive events. Authentication Secret - This is a secret string provided by the consumer that will be stored in the Exacta system. Consumer API - The consumer API may be implemented in any programming language; however, Bastian does currently offer a reference implementation in C# and has plans to produce more reference implementations in a variety of popular technologies. We utilize Swagger to provide an easy to access API schema that may be used by third party teams to generate a consumer API in their language of choice. Sample Consumer Signature Validation While the examples in this document are written in C#, implementation in other mature technologies (such as Java, Python, etc.) should be very similar. The following shows how a consumer in C# could validate the authenticity of a received request bool IsSignatureValid(System.Web.HttpRequest request, string body, string secret) { if (request.Headers["bastian-webhook-signature"] == null) { return false; } var base64Signature = request.Headers["bastian-webhook-signature"].ToString(); // The secret that generated the original signature is assumed to be UTF-8 encoded. var secretBytes = Encoding.UTF8.GetBytes(secret); // The body that was signed is assumed to be UTF-8 encoded. var bodyBytes = Encoding.UTF8.GetBytes(body); using (var hasher = new System.Security.Cryptography.HMACSHA256(secretBytes)) { var hash = hasher.ComputeHash(bodyBytes); var computedSignature = Convert.ToBase64String(hash); Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 9 Exacta GTP – AutoStore - ISD } } return computedSignature == base64Signature; Some important things to note: • The header name that Bastian stores the signature in is “bastian-webhook-signature”. • The secret and the body are always dealt with using UTF-8 encoding. • The signature itself is Base64 encoded. • If the Base64-encoded signatures match, it's safe to assume the data has not been tampered with or sent by a malicious entity. NOTE: If the configured secret the is shared between Bastian and the consumer becomes compromised, it's no longer safe to keep using the same secret. A new secret should be provisioned and configured in Exacta to remedy this scenario. Internal Signature Implementation The logic that Bastian uses to sign requests is actually quite similar to the consumer logic. Below is an example of the relationship between the Bastian publisher and the consumer: virtual void SignRequest(RestSharp.RestRequest request, string secret) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (string.IsNullOrWhiteSpace(secret)) { throw new ArgumentNullException(nameof(secret)); } // In the absence of the body, an empty string will represent the body. var serializedBody = request.Body?.Value != null ? request.JsonSerializer.Serialize(request.Body.Value) : string.Empty; // It's really important that both parties involved are treating the body // as a UTF-8 encoded string. var bodyBytes = Encoding.UTF8.GetBytes(serializedBody); // Similarly, the secret should be treated as a UTF-8 encoded string. var secretBytes = Encoding.UTF8.GetBytes(secret); using (var hmacSha256 = new System.Security.Cryptography.HMACSHA256(secretBytes)) { var signatureBytes = hmacSha256.ComputeHash(bodyBytes); // The signature will be encoded as a Base64 string. For right now we are only supporting sha256. var headerValue = Convert.ToBase64String(signatureBytes); // The header name is bastian-webhook-signature. request.AddHeader("bastian-webhook-signature", headerValue); } } Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 10 Exacta GTP – AutoStore - ISD 6 6.1 Import Overview Module Overview Import is the process of an external provider publishing data to the Exacta system. Exacta communicates with the host system via Web API. Exacta has a multi-tiered system for importing data: • Exacta Import Gateway. The Exacta Import Gateway will read data sent, translate the data, and insert into Exacta’s staging tables. Validations performed at this stage are basic, ensuring the data received from the host is formatted properly for insertion into the Exacta system. The Exacta Import Gateway is coded for the specific fields read for the interfaces and it is those specific fields described in this document. Exacta Import Gateway can be configured to send email alerts for errors encountered in the data translation process. • Import Service. The Import Service will perform further validations including data formatting checks as well as validations involving production database reads. The Import Service inserts validated data (or performs updates depending on transaction type) in the production database. The Import Service is standard and not modified for individual customers. If the Import Service fails to process a transaction it remains in the Exacta staging table. The transaction received from the host can be reset for re-process by Import Service if needed. Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 11 Exacta GTP – AutoStore - ISD 7 Exacta Import Gateway - Touchpoints 7.1 Product Master Overview The Product Master transaction is used to add or update each SKU managed within the system. Sender Host System Trigger Event As each product is added or updated for the warehouse Communication URL Web API, JSON formatted data 1. Only the “Each” unit of measure will be sent to Exacta as all products will be stored and picked in eaches. 2. Exacta will always update data for existing products or add the product if it does not exist. 3. One transaction will be sent for each product, but multiple products can be sent in one transaction http://<application server host>/exactaApi/import/v1/product URL Parameters None Method PUT (If product resource does not exist, one will be created) Updateable Fields None Assumptions 7.1.1 Product Header FIELD SIZE TYPE DESCRIPTION REQUIRED prod_name 20 string prod_description 255 string Unique identifier for the product Description of the product N prod_status 1 string Status of the product. N DEFAULT Y 0 - Active. Normal state of a product that is in use. 1 - Inactive. Describes a product that is inactive. Inactive products are not replenished and are only reported on in inventory reconciliation if there is inventory stocked in the warehouse. 2 - Deleted. Deleted products imply there is no inventory in the system and the product is no longer used in any way. Deleted products are not reported on by inventory reconciliation. Deleted products are also omitted from any product related grids in Exacta Portal. Deleted product will not be replenished. Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 12 Exacta GTP – AutoStore - ISD pick_method 2 string 1 = FIFO by date received N 3 = LIFO by date received prod_alias prod_details uom_types - - - array 9 = Ignore dates Aliased for the Product (used to store multiple barcodes for the product) N array See product alias section for additional details Details for the product N Product Details array See product detail section for additional details Product UOM type for each’s N UOM Type image_path 255 string top_off_method 1 int See product UOM type section for additional details File location where the image for the product is stored (must be stored on the local Exacta application server) Defines criteria for top off N N 0 = Top off not allowed 1 = Top off regardless of dates-soley evaluates space top_off_split 1 int 5 = Top off if received date matches Defines how locations may be topped off N 1 = Top off allowed, split PA as need to maximize use of space empty_location_split 1 int 2 = Top off allowed, only if the entire PA will fit in the location (to reduce number of puts) Empty location split rule N 0 = Allow putaway to be split across locations, but optimize to the lowest number of splits top_off_window_days 5 string 1 = Do not allow putaway to be split across locations. When this is set to 1 putaways and entire putaways will be forced to assign the entire putaway to a single location. If it will not fit to a single location it will not assign Used for putaway top off to determine if two content records should be treated the Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 N 13 Exacta GTP – AutoStore - ISD same date when performing top off in a location uom_zones - array Note: A value of 0 would indicate the date received must be an exact match, a value of 1 would indicate it must be within the same day (although the time portion of the date received can be different), a value of >1 would indicate a true window. Unit of Measure Zones for this product zone. Y UomZones REQUIRED DEFAULT See uom zone section for additional details 7.1.1 Product Alias FIELD SIZE TYPE DESCRIPTION alias_type 9 int alias_name 255 string Alias Type (configurable in database) Alias Name for the Product 7.1.1 Y Product Detail FIELD SIZE TYPE DESCRIPTION Detail_type 9 int Detail_value 20 string Detail type (configurable in database) Detail Value 7.1.1 Y REQUIRED DEFAULT Y N Product UOM Type FIELD SIZE TYPE DESCRIPTION uom_depth (9,2) decimal uom_height (9,2) decimal uom_weight (9,2) decimal uom_width (9,2) decimal count_threshold_qty 9 int Depth for a single unit of this uom. Stored in the type of unit defined for the warehouse (millimeters, inches, etc.) Height for a single unit of this uom. Stored in the type of unit defined for the warehouse (millimeters, inches, etc.) Weight for a single unit of this uom. Stored in the weight unit defined for the warehouse (kg, pounds, etc.) Width for a single unit of this uom. Stored in the type of unit defined for the warehouse (millimeters, inches, etc.) The stocked quantity of the product at which a cycle count will be triggered. REQUIRED DEFAULT Y N N N N 0 = Never trigger Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 14 Exacta GTP – AutoStore - ISD 1 = trigger when pick results in empty cell velocity 1 int >1 = trigger when post pick remaining cell quantity is less than this number Product unit velocity N Velocity is used during the location assignment process to know where to put the product Velocity 0 is therefore highest velocity. When the system is using velocity, putaway locations are assigned such that locations that match the products velocity and higher are the first locations to be chosen family_group 1 int Any locations that have a lower velocity will be stored at the end of the list. This is currently not being used when evaluating locations to top off Used in putaway location assignment to force a product to inventory locations configured for the same family group (inventory locations must be configured ahead of time for family groups) N Putaway Location Assignment requires an exact match on family group, unlike velocity. An empty product family group value will allow a product to be putaway location assigned to a location with any family group se Note: Since family group requires an exact match, and the user indicates the bin pattern during Receipt Putaway, the user must override the family group logic during putaway if the bin presented is for a different family group. In general, family groups are not recommended if Receipt Putaway is the main mode of putaway Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 15 Exacta GTP – AutoStore - ISD 7.1.1 Uom Zone FIELD SIZE TYPE DESCRIPTION uom_type 3 int int top_off_method 1 REQUIRED DEFAULT uom identifier Y UomType 100 = Each 200 = Inner Pack 300 = Case 400 = Pallet Defines criteria for top off N TopOffMethod 0 = Top off not allowed 1 = Top off regardless of dates-solely evaluates space top_off_split 1 int 5 = Top off if date received matches Defines how locations may be topped off N 1 = Top off allowed, split PA as needed to maximize use of space empty_location_split 1 int 2 = Top off allowed, only if the entire PA will fit in the location (to reduce number of puts) Empty location split rule. N 0 = Allow putaway to be split across locations, but optimize to the lowest number of splits. 1 = Do not allow putaway to be split across locations. When this is set to 1 putaways and entire putaways will be forced to assign the entire putaway to a single location. If it will not fit into a single location it will not assign. 2 = Allow splitting into multiple locations without trying to optimize the number of splits. We will allow splitting across multiple locations as they are processed in the logic regardless of how many locations we split to. 7.1.2 Schema { "records": [ { "prod_name": [string], "prod_description": [string], "prod_status": [string], "top_off_window_days": [string], Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 16 Exacta GTP – AutoStore - ISD "pick_method": [int], "prod_alias": [ { "alias_type": [int], "alias_name": [string] } ], "uom_types": [ { "uom_depth": [dec], "uom_height": [dec], "uom_weight": [dec], "uom_width": [dec], "count_threshold_qty": [int], "velocity": [int], "family_group": [int] } ], "image_path ": [string], "top_off_method": [int], "top_off_split": [int], "empty_location_split": [int], "uom_zones": [ { "uom_type": [int], "top_off_method": [int], "top_off_split": [int], "empty_location_split": [int] } ] } ] } 7.1.3 Example Message { "records": [ { "prod_name": "SKUABC", "prod_description": "Description of SKUABC", "prod_status": "0", "top_off_window_days": "30", "pick_method": "1", "prod_alias": [ { "alias_type": 1, "alias_name": "SKUALIAS123" }, { "alias_type": 2, "alias_name": "SKUALIAS345" }, { "alias_type": 3, "alias_name": "SKUALIAS456" } ], "uom_types": [ { "uom_depth": 3.5, Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 17 Exacta GTP – AutoStore - ISD "uom_height": 3.5, "uom_weight": 3.5, "uom_width": 3.5, "count_threshold_qty": 5, "velocity": 2, "family_group": 1 } ], "image_path": "D:/Images/SKUABC", "top_off_method": 1, "top_off_split": 0, "empty_location_split": 1, "uom_zones": [ { "uom_type": 100, "top_off_method": 0, "top_off_split": 1, "empty_location_split": 1 } ] } ] } 7.1.4 Response 1. Success Response: o Code: 200 o Content: No content will be returned in the response. 2. Error Responses: o Code: 400 BAD REQUEST o § Description: May occur if the message syntax was malformed § Content: { "error" : "The reason the request was bad." } Code: 401 UNAUTHORIZED o § Description: May occur if authorization is incorrect or expired. § Content: { "error" : "Authentication required. Optional reason." } Code: 500 INTERNAL SERVER ERROR § § 7.1.5 Description: May occur if an unexpected error occurs when processing the request Content: { "error" : "Exception information." } Processing The Exacta Import Gateway validates the data is of a proper structure and contains needed data elements. If valid then creates the transaction in Exacta’s Import staging table and provides a response. An invalid transaction will trigger an appropriate response and an email alert reporting the error, if configured. After the Exacta Import Gateway stores data in Exacta’s staging tables, standard Exacta Import picks up the transaction and either adds the product or if existing updates. If the business processing was successful, the transaction is marked as “imported”. If the transaction fails business processing, it’s Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 18 Exacta GTP – AutoStore - ISD marked as “failed”. An email alert is sent reporting the error, if configured. The Transaction Utility in Exacta Portal can be used to reprocess the transaction. 7.1.6 Product Use Cases The use cases below illustrate the uses of this message: ITEM # USE CASE PRE-CONDITIONS 1. 2. 3. POST CONDITIONS Transaction received for a product that does not exist Transaction received for a product that does exist Product does not exist Product is added Product does exist Product is updated Transaction received to update aliases for a product that already exist Product does exist Product Aliases are updated Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 19 Exacta GTP – AutoStore - ISD 7.2 Putaway Request Overview Used to add putaway orders to the system for stocking inventory into AutoStore™ Sender Host System • • Trigger Event Communication When putaway order is created in host system When putaway cart is build in the host system Web API, JSON formatted data 1. One transaction will be sent for each putaway order. 2. The host system will only send Putaway Orders for products that are already configured in Exacta. If the cart sent is considered to still be in use (not all products are putaway), Import Service will fail the import. 3. If a putaway order is sent to Exacta with the intention of building a cart within Exacta with the putaway order, only one order line / product will be included in the container. 4. If the putaway order is sent to Exacta is a host built cart, the cart should have a putaway line represented each cart position Assumptions URL http://<application server host>/exactaApi/import/putaway URL Parameters None Method PUT Updateable Fields None 7.2.1 Order Header FIELD SIZE TYPE DESCRIPTION order_name 20 string Unique Identifier for the order Y order_cancel 1 string N company_name 10 string priority 9 int due_date 20 string due_time 20 string containers - array Y = Cancel N = Don’t cancel Company name for the putaway order. If the company name is populated, the inventory from this order will be stocked as if it belongs to this company. Only inventory belonging to the same company is eligible for top off (if for the same SKU). Also, this inventory will only be available for pick order assignment if the pick order has the same company name. The Priority for the order. The lower the number the higher the priority. Due date for the order to be completed Due time for the order to be completed List of containers for the pick order (only used if the host Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 REQUIRED DEFAULT N N 500 N N 20 Exacta GTP – AutoStore - ISD system is naming the containers outside of Exacta) order_lines - array See container section for additional detail List of all order lines tied to the order/container Y See order line section for additional detail. 7.2.1 Container FIELD SIZE TYPE DESCRIPTION cntnr_type 2 int Container type for the putaway order REQUIRED DEFAULT Y 5 = Putaway Container 9 = Host built cart cntnr_id 20 string cntnr_name 20 string container_details - array For cart build, ensure that order_line.cart_position has a value or the container type will default to 5 in Exacta Connect Unique identifier for the container Name for the container List of all order lines tied to the order / container Y N Y See details section for additional details 7.2.1 Order Line FIELD SIZE TYPE DESCRIPTION line_num 9 Int Order line number Y prod_name 20 string Product the order is for Y quantity 9 int Quantity to be putaway Y zone_number 9 string N transport_cntnr_id 20 string Zone number to putaway product to Container ID Note: Must match a Container.container_id in the container array expiration_date 20 string lot_number 20 string date_received 20 string Expiration date for the product Lot number for the product Date the product was received Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 REQUIRED DEFAULT Y – If containers array is populated N – If containers array is empty N N N 21 Exacta GTP – AutoStore - ISD order_line_details cart_position - array List details to included for the order line See detail section for additional information Position on the cart if the container is a host built cart 2 int FIELD SIZE TYPE DESCRIPTION Detail_type 9 int Detail_value 20 string Detail type (configurable in database) Detail Value 7.2.2 7.2.3 N N Detail REQUIRED DEFAULT Y N Schema { "records": [ { "containers": [ { "cntnr_type": [int], "cntnr_id": [string], "cntnr_name": [string], "container_details": [ { "detail_type": [int], "detail_value": [string] } ] } ], "due_date": [string], "due_time": [string], "order_lines": [ { "line_num": [int], "prod_name": [string], "quantity": [int], "zone_num": [string], "transport_cntnr_id": [string], "expiration_date": [string], "lot_number": [string], "date_received": [string], "order_line_details": [ { "detail_type": [int], "detail_value": [string] } ], "cart_position": [int] } ], "order_name": [string], "order_cancel": [string], "company_name": [string], "priority": [int] } ] Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 22 Exacta GTP – AutoStore - ISD } 7.2.4 Example Message { "records": [ { "containers": [ { "cntnr_type": 9, "cntnr_id": "CntnrAlias123", "cntnr_name": "CartABC", "container_details": [ { "detail_type": 10, "detail_value": "Example Container Detail Value" } ] } ], "due_date": "2023-03-19", "due_time": "13:08:26.000", "order_lines": [ { "line_num": 1, "prod_name": "SKUXYZ", "quantity": 10, "zone_num": "01", "transport_cntnr_id": "CntnrAlias123", "expiration_date": "2023-09-18 13:08:26.000", "lot_number": 1215, "date_received": "2023-03-09 13:08:26.000", "order_line_details": [ { "detail_type": 5, "detail_value": "Example Order Line Detail Value" } ], "cart_position": 1 } ], "order_name": "PutawayOrder1", "order_cancel": "N", "company_name": "Example Company", "priority": 300 } ] } 7.2.5 Response 1. Success Response: Code: 200 § Content: No content will be returned in the response. 2. Error Responses: o o Code: 400 BAD REQUEST Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 23 Exacta GTP – AutoStore - ISD o § Description: May occur if the message syntax was malformed § Content: { "error" : "The reason the request was bad." } Code: 401 UNAUTHORIZED o § Description: May occur if authorization is incorrect or expired. § Content: { "error" : "Authentication required. Optional reason." } Code: 500 INTERNAL SERVER ERROR § § 7.2.6 Description: May occur if an unexpected error occurs when processing the request Content: { "error" : "Exception information." " } Processing The Exacta Import Gateway validates the data is of a proper structure and contains needed data elements. If valid then creates the transaction in Exacta’s Import staging table and provides a response. An invalid transaction will trigger an appropriate response and an email alert reporting the error, if configured. After the Exacta Import Gateway stores data in Exacta’s staging tables, standard Exacta Import picks up the transaction and adds the putaway if it does not exist. If the business processing was successful, the transaction is marked as “imported”. If the transaction fails business processing, it’s marked as “failed”. An email alert is sent reporting the error, if configured. The Transaction Utility in Exacta Portal can be used to reprocess the transaction. 7.2.7 Putaway Request Use Cases The use cases below illustrate the uses of this message: ITEM # USE CASE PRE-CONDITIONS 1. Transaction received for a putaway that Putaway does not exist does not exist 2. Putaway exists Transaction received for a putaway that does exist 3. Transaction received for a putaway with Product does not exist an invalid product 4. Container has lines that Transaction received for a putaway with are open for a putaway a container that has open lines that already exists in the system Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 POST CONDITIONS Putaway is added Putaway is not added Putaway is not added Putaway is not added 24 Exacta GTP – AutoStore - ISD 7.3 Pick Request Overview Used to add or update pick orders to the system Sender Host System Trigger Event Triggered when a pick order is created in the host system or updated in the host system Communication Web API, JSON formatted data 1. Host system has on-hand inventory to fulfill lines sent to Exacta 2. Host will not send orders more than once unless they are updating the priority or due date of the order 3. Orders can be updated only before any picks have occurred for the order. If an update is received for an order that already has a pick for it, nothing will be updated. Assumptions URL http://<application server host>/exactaApi/import/v1/pick URL Parameters None Method PUT Updateable Fields order_cancel, due_date, due_time, priority, customer_category, qc_reason, ship_sort_code, pack_sort_code, zone_number, is_complete 7.3.1 Order Header FIELD SIZE TYPE DESCRIPTION order_name 20 string Unique identifier for the order Y order_cancel 1 string N due_date 40 string due_time 40 string Priority 9 int ShipSortCode 20 string PackSortCode 20 string Flag to cancel the order (Y/N) – default is N Due date for the order. Due date is used for choosing which orders are sent to the AutoStore™ first (sorted by priority and then due date) Due time for the order. Due time is used for choosing which orders are sent to the AutoStore™ first (sorted by priority and then due date) Priority for the order. Priority is used for choosing which orders are sent to the AutoStore™ first (sorted by priority and then due date) – 1 is a higher priority value than 999 Identifies the sort code Exacta will use to route the containers for the order to a ship lane (configured through the sort code configuration utility in Exacta Portal) Identifies the pack code Exacta will use to route the containers for the order to a pack lane (configured through Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 REQUIRED DEFAULT N N N N N 25 Exacta GTP – AutoStore - ISD customer_category 9 int containers - array order_details - array order_lines - array the sort code configuration utility in Exacta Portal) Customer categories can be configured for an AutoStore™ port in Exacta. If configured, only orders belonging to the customer category that the port is configured for will be delivered to that port. List of containers for the pick order (only used if the host system is naming the containers outside of Exacta) See container section List of order details for the pick order See routing zone section List of all order lines tied to the order (see order line segment for additional details) N N Y Y See order line section 7.3.2 Container FIELD SIZE TYPE DESCRIPTION cntnr_type 9 int N cntnr_id 20 string Container type for the pick order Unique container identifier cntnr_name 20 string Name of the container N container_details - array N routing_zones - array See detail section for additional information Zones that the container will be routed to qc_required - string qc_reason 9 string ship_sort_code 20 string pack_sort_code 20 string See routing zone section for additional information Whether or not QC is required {"true"/"false"} Reason for QC Identifies the sort code Exacta will use to route the containers for the order to a ship lane (configured through the sort code configuration utility in Exacta Portal) Ship sort code will replace the current sort code if updated Identifies the sort code Exacta will use to route the containers for the order to a pack lane (configured through the sort code configuration utility in Exacta Portal) REQUIRED DEFAULT Y N N N N N Pack sort code will append a new sort code if updated Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 26 Exacta GTP – AutoStore - ISD estimated_wgt 19,6 dec label_data 20 string label_type 2 int max_cntnr_wgt 4,2 dec min_cntnr_wgt 4,2 dec verification_barcode 40 string 7.3.1 N N N N N N Routing Zone FIELD SIZE zone_number is_complete 7.3.2 Estimated weight of the container. Used for weight check at a weight scale. Tolerance % is configured system-wide. ZPL string for the shipping label that will be passed to the print and apply machine for the container Type of label for the container 18 – Shipping Label Maximum container weight of the container. Used for weight check at a weight scale Minimum container weight of the container. Used for weight check at a weight scale Barcode that is used for verification at a verification scanner post-PANDA (typically a tracking number) 1 TYPE DESCRIPTION string Zone number for container routing Y = Container has already visited zone N = Container has not yet visited zone string REQUIRED DEFAULT N Y Order Line FIELD SIZE TYPE DESCRIPTION line_num 19 int Line number for the order line Y line_cancel 1 boolean Cancel the line? true/false Y prod_name 20 string Y quantity 9 int zone_num 3 string transport_cntnr_id 20 string Name of the product to be picked Pick quantity requested for product Zone number where the product is stored Unique transport container identifier Must match a Container.container_id in the container array shipping_cntnr_id 20 string Unique shipping container identifier Must match a Container.container_id in the container array Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 REQUIRED DEFAULT Y Y Y - if Order_Hea der.Contain ers is populated and shipping_cn tnr_id is empty Y - if Order_Hea der.Contain ers is populated and transport_c 27 Exacta GTP – AutoStore - ISD serial_num_required 1 boolean order_line_details - array FIELD SIZE TYPE DESCRIPTION Detail_type 9 int Detail_value 20 string Detail type (configurable in database) Detail Value 7.3.3 7.3.4 Is a serial number required? {true/false} See detail section for additional information ntnr_id is empty N N Detail REQUIRED DEFAULT Y N Schema { "records": [ { "order_name": [string], "order_cancel": [string], "due_date": [string], "due_time": [string], "priority": [int], "ship_sort_code": [string], "pack_sort_code": [string], "customer_category": [int], "order_details": [ { "detail_type": [int], "detail_value": [string] } ], "containers": [ { "cntnr_type": [int], "cntnr_id": [string], "cntnr_name": [string], "container_details": [ { "detail_type": [int], "detail_value": [string] } ], "routing_zones": [ { "zone_number": [string], "is_complete": [string] } ], "qc_required": [string], "qc_reason": [string], "ship_sort_code": [string], "pack_sort_code": [string], "estimated_wgt": [dec], "label_data": [string], "label_type": [int], "max_cntnr_wgt": [dec], "min_cntnr_wgt": [dec], "verification_barcode": [string] Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 28 Exacta GTP – AutoStore - ISD } ], "order_lines": [ { "line_num": [int], "line_cancel": [boolean], "prod_name": [string], "quantity": [int], "zone_num": [string], "transport_cntnr_id": [string], "shipping_cntnr_id": [string], "serial_num_required": [boolean], "order_line_details": [ { "detail_type": [int], "detail_value": [string] } ] } ] } ] } 7.3.5 Example Message { "records": [ { "order_name": "Order1234", "order_cancel": "0", "due_date": "11/22/2022", "due_time": "13:08:26.000", "priority": 100, "ship_sort_code": "8", "pack_sort_code": "3", "customer_category": 1, "containers": [ { "cntnr_type": 4, "cntnr_id": "cntnr123", "cntnr_name": "Container One", "container_details": [ { "detail_type": 1, "detail_value": "valueABC" } ], "routing_zones": [ { "zone_number": "01", "is_complete": "Z1" } ], "qc_required": "false", "qc_reason": "1", "ship_sort_code": "8", "pack_sort_code": "3", "estimated_wgt": 10.5, "label_type": 18, "label_data": "^XA^FO50,50^B8N,100,Y,N^FD1234567^FS^XZ", Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 29 Exacta GTP – AutoStore - ISD "max_cntnr_wgt": 8, "min_cntnr_wgt": 2.2, "verification_barcode": "9400100000000000000000" }, { "cntnr_type": 7, "cntnr_id": "cntnrABC", "cntnr_name": "Container Two" } ], "order_details": [ { "detail_type": 1, "detail_value": "valueABC" } ], "order_lines": [ { "line_num": 1, "line_cancel": false, "prod_name": "SKUABC", "quantity": 1, "zone_num": "11", "transport_cntnr_id": "cntnr123", "shipping_cntnr_id": "cntnrABC", "serial_num_required": false, "order_line_details": [ { "detail_type": 1, "detail_value": "valueABC" } ] } ] } ] } 7.3.6 Response 1. Success Response: Code: 200 § Content: No content will be returned in the response. 2. Error Responses: o o Code: 400 BAD REQUEST o § Description: May occur if the message syntax was malformed § Content: { "error" : "The reason the request was bad." } Code: 401 UNAUTHORIZED o § Description: May occur if authorization is incorrect or expired. § Content: { "error" : "Authentication required. Optional reason." } Code: 500 INTERNAL SERVER ERROR § § Description: May occur if an unexpected error occurs when processing the request Content: { "error" : "Exception information." " } Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 30 Exacta GTP – AutoStore - ISD 7.3.7 Processing The Exacta Import Gateway validates the data is of a proper structure and contains needed data elements. If valid then creates the transaction in Exacta’s Import staging table and provides a response. An invalid transaction will trigger an appropriate response and an email alert reporting the error, if configured. After the Exacta Import Gateway stores data in Exacta’s staging tables, standard Exacta Import picks up the transaction and either adds the order or if existing updates. If the business processing was successful, the transaction is marked as “imported”. If the transaction fails business processing, it’s marked as “failed”. An email alert is sent reporting the error, if configured. The Transaction Utility in Exacta Portal can be used to reprocess the transaction. 7.3.8 Pick Request Use Cases The use cases below illustrate the uses of this message: ITEM # USE CASE PRE-CONDITIONS 1. Transaction received for a pick order Pick order does not exist that does not exist 2. Transaction received for a pick order Pick order exists that does exist Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 POST CONDITIONS Pick order is added Pick order is updated 31 Exacta GTP – AutoStore - ISD 7.4 Cycle Count Request Overview Used to add cycle count orders to the system Sender Host System Trigger Event Triggered when a cycle count order is created in the host system Communication URL Web API, JSON formatted data 1. Only one cycle count is sent for each product to be counted 2. Orders cannot be updated once the order has been started http://<application server host>/exactaApi/import/v1/cc URL Parameters None Method PUT Updateable Fields order_cancel, priority, and due_date Assumptions 7.4.1 Order Header FIELD SIZE TYPE DESCRIPTION order_name order_cancel 20 1 string string prod_name 20 string Unique identifier for the order Flag to cancel the order (Y/N) – default is N Product associated to the order. Will add an additional order line to the order line array REQUIRED DEFAULT Y N N Cannot leave order_lines field blank when this is populated priority 9 int due_date 20 company_name 20 order_lines - order_details - Y string Priority for the order. Priority is used when sending a task for the count to the AutoStore™. (sorted by priority and then due date) – 1 is a higher priority value than 999 Due date for the order string Company Name for the order N array List of all order lines tied to the order Y array see order line for additional details List of all order details tied to the order Y N see order detail for additional details 7.4.1 Order Line Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 32 Exacta GTP – AutoStore - ISD FIELD SIZE TYPE DESCRIPTION line_num 9 int int for the order line Y prod_name 20 string Product for the order line Y FIELD SIZE TYPE DESCRIPTION detail_type 9 int detail_value 20 string Detail type (configurable in database) Detail Value 7.4.2 7.4.3 REQUIRED DEFAULT Order Detail REQUIRED DEFAULT Y Y Schema { "records": [ { "order_name": [string], "order_cancel": [string], "prod_name": [string], "priority": [int], "due_date": [string], "order_lines": [ { "line_num": [int], "prod_name": [string] } ], "order_details": [ { "detail_type": [int], "detail_value": [string] } ] } ] } 7.4.4 Example Message { "records": [ { "order_name": "CCOrder1", "order_cancel": "N", "prod_name": "SKUXYZ", "priority": 500, "due_date": "2023-02-03 14:08:26.000", "order_lines": [ { "line_num": 1, "prod_name": "SKUABC" } ], "order_details": [ { "detail_type": 1, "detail_value": "Sample Value" } Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 33 Exacta GTP – AutoStore - ISD ] }, { "order_name": "CCOrder2", "order_cancel": "N", "prod_name": "SKUABC", "priority": 500, "due_date": "2023-02-03 14:08:26.000", "order_lines": [ { "line_num": 1, "prod_name": "SKUXYZ" } ] } ] } 7.4.5 Response 1. Success Response: Code: 200 § Content: No content will be returned in the response. 2. Error Responses: o o Code: 400 BAD REQUEST o § Description: May occur if the message syntax was malformed § Content: { "error" : "The reason the request was bad." } Code: 401 UNAUTHORIZED o § Description: May occur if authorization is incorrect or expired. § Content: { "error" : "Authentication required. Optional reason." } Code: 500 INTERNAL SERVER ERROR § § 7.4.6 Description: May occur if an unexpected error occurs when processing the request Content: { "error" : "Exception information." " } Processing The Exacta Import Gateway validates the data is of a proper structure and contains needed data elements. If valid then creates the transaction in Exacta’s Import staging table, otherwise triggers an email alert reporting the error. After the Exacta Import Gateway stores data in Exacta’s staging tables, standard Exacta Import picks up the transaction and either adds the product or if existing updates. If the business processing was successful, the transaction is marked as “imported”. If the transaction fails business processing, it’s marked as “failed”. If needed the Interface Transaction Utility in Exacta Portal can be used to resend. 7.4.7 Cycle Count Request Use Cases The use cases below illustrate the uses of this message: ITEM # USE CASE PRE-CONDITIONS Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 POST CONDITIONS 34 Exacta GTP – AutoStore - ISD 1. Transaction received for a cycle count order that does not exist Cycle Count order does not exist Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 Cycle count order is added 35 Exacta GTP – AutoStore - ISD 7.5 Container Request Overview Used to update or add containers Sender Host System Trigger Event Triggered when a container needs created or updated within Exacta: • A container with picks only in the pick module is added to the system • A container’s routing zones are updated (the list of zones given in this import will overwrite any existing zones for the container) • A container’s sort code, estimated weight, or shipping label is updated or added Communication Web API, JSON formatted data Assumptions URL http://<application server host>/exactaApi/import/v1/container URL Parameters None Method POST Updateable Fields estimated_wgt, label_data, qc_reason, qc_required, routing_zones, is_complete, zone_number 7.5.1 Container FIELD SIZE TYPE DESCRIPTION cntnr_name 40 string container_type 4,0 dec estimated_wgt 4,2 dec label_data 20 string label_type 2 int max_cntnr_wgt 4,2 dec min_cntnr_wgt 4,2 dec ship_sort_code 20 string Unique identifier for the container Type of the container. Predefined container types. Estimated weight of the container. Used for weight check at a weight scale. Tolerance % is configured system-wide. ZPL string for the shipping label that will be passed to the print and apply machine for the container Type of label for the container 18 – Shipping Label Maximum container weight of the container. Used for weight check at a weight scale Minimum container weight of the container. Used for weight check at a weight scale Identifies the sort code Exacta will use to route the containers for the order to a ship lane (configured through the sort code configuration utility in Exacta Portal) Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 REQUIRED DEFAULT Y Y N N N N N N 36 Exacta GTP – AutoStore - ISD pack_sort_code 20 string qc_reason 30 string qc_required 30 string routing_zones - array verification_barcode 40 string ship_sort_code 20 string pack_sort_code container_details 7.5.2 20 - string array Ship sort code will replace the current sort code if updated Identifies the sort code Exacta will use to route the containers for the order to a pack lane (configured through the sort code configuration utility in Exacta Portal) Pack sort code will append a new sort code if updated Reason for QC Whether or not QC is required {true/false} Zones that the container will be routed to See routing zone section for additional information Barcode that is used for verification at a verification scanner post-PANDA (typically a tracking number) Identifies the sort code Exacta will use to route the containers for the order to a ship lane (configured through the sort code configuration utility in Exacta Portal) Ship sort code will replace the current sort code if updated Identifies the sort code Exacta will use to route the containers for the order to a pack lane (configured through the sort code configuration utility in Exacta Portal) Pack sort code will append a new sort code if updated See detail section for additional information N N Y N N N N Routing Zone FIELD SIZE zone_number is_complete TYPE DESCRIPTION string Zone number for container routing Y = Container has already visited zone N = Container has not yet visited zone 1 string FIELD SIZE TYPE DESCRIPTION Detail_type 9 int Detail_value 20 string Detail type (configurable in database) Detail Value 7.5.1 N REQUIRED DEFAULT Y Y Detail Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 REQUIRED DEFAULT Y N 37 Exacta GTP – AutoStore - ISD 7.5.2 Schema { "records": [ { "cntnr_name": [string], "cntnr_type": [dec], "estimated_wgt": [dec], "label_type": [dec], "label_data": [string], "max_cntnr_wgt": [dec], "min_cntnr_wgt": [dec], "qc_reason": [string], "qc_required": [string], "ship_sort_code": [string], "pack_sort_code": [string], "routing_zones": [ { "is_complete": [string], "zone_number": [string] } ], "verification_barcode": [string], "container_details": [ { "detail_type": [int], "detail_value": [string] } ] } ] } 7.5.3 Example Message { "records": [ { "cntnr_name": "Cntnr123", "cntnr_type": 4, "estimated_wgt": 4.1, "label_type": 18, "label_data": "^XA^FO50,50^B8N,100,Y,N^FD1234567^FS^XZ", "max_cntnr_wgt": 8.0, "min_cntnr_wgt": 2.2, "qc_reason": "3", "qc_required": "Y", "ship_sort_code": "8", "pack_sort_code": "3", "routing_zones": [ { "is_complete": "true", "zone_number": "Z1" }, { "is_complete": "false", "zone_number": "Z2" } ], "verification_barcode": "9400100000000000000000", Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 38 Exacta GTP – AutoStore - ISD "container_details": [ { "detail_type": 1, "detail_value": "valueABC" } ] } ] } 7.5.4 Response 1. Success Response: Code: 200 § Content: No content will be returned in the response. 2. Error Responses: o o Code: 400 BAD REQUEST o § Description: May occur if the message syntax was malformed § Content: { "error" : "The reason the request was bad." } Code: 401 UNAUTHORIZED o § Description: May occur if authorization is incorrect or expired. § Content: { "error" : "Authentication required. Optional reason." } Code: 500 INTERNAL SERVER ERROR § § 7.5.5 Description: May occur if an unexpected error occurs when processing the request Content: { "error" : "Exception information." " } Processing The Exacta Import Gateway validates the data is of a proper structure and contains needed data elements. If valid then creates the transaction in Exacta’s Import staging table and provides a response. An invalid transaction will trigger an appropriate response and an email alert reporting the error, if configured. After the Exacta Import Gateway stores data in Exacta’s staging tables, standard Exacta Import picks up the transaction and processes it. If the business processing was successful, the transaction is marked as “imported”. If the transaction fails business processing, it’s marked as “failed”. An email alert is sent reporting the error, if configured. The Transaction Utility in Exacta Portal can be used to reprocess the transaction. 7.5.6 Container Request Use Cases The use cases below illustrate the uses of this message: ITEM # USE CASE PRE-CONDITIONS 1. Transaction received for a container Container exists 2. Transaction received for a container Container does not exist Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 POST CONDITIONS Container is updated Container is added 39 Exacta GTP – AutoStore - ISD 7.6 Available Inventory Request Overview Used to check the inventory that is in the system for a SKU Sender Host System Trigger Event Triggered when the host system wants to know the quantity for a SKU that Exacta has stocked Communication Web API, JSON formatted data Assumptions http://<application server host>/exactaApi/inventory/<product>/quantity/<company_name> URL • • URL Parameters Method GET Updateable Fields None 7.6.1 Product – URL encoded prod_name for the request Company Name – URL encoded company_name for the request (if company name is not included in URL, all inventory for that SKU is returned Response FIELD SIZE TYPE DESCRIPTION error 20 string prod_name 20 string prod_not_found 1 boolean summaries - array Populated if any error occurred while retrieving product information Product name that was passed as a param in URL true - if product was not found false - if product was found Array of product quantity summaries. REQUIRED DEFAULT REQUIRED DEFAULT See product quantity summary section for additional information 7.6.1 Product Quantity Summary FIELD SIZE TYPE DESCRIPTION assigned_qty 40 int available_qty 1 int unavailable_qty 3 int Quantity for the SKU that is currently assigned to a pick order Quantity for the SKU that is available for assignment Quantity for the SKU that is unavailable for assignment due to the location being unavailable (must make location available through Portal) Quantity for the SKU that is blocked due to the location being blocked (must un-block location through Portal) blocked_qty int Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 40 Exacta GTP – AutoStore - ISD total_qty int zone_num int Total quantity that is stocked in the AutoStore™ Zone for the request 7.6.2 Response 1. Success Response: o Code: 200 o Content Example { "error": "", "prod_name": "SKUXYZ", "prod_not_found": false, "summaries": [ { "assigned_qty": 0, "available_qty": 11, "blocked_qty": 0, "total_qty": 11, "unavailable_qty": 0, "zone_num": "01" } ] } 2. Error Responses: o Code: 400 BAD REQUEST o § Description: May occur if the message syntax was malformed § Content: { "error" : "The reason the request was bad." } Code: 401 UNAUTHORIZED o § Description: May occur if authorization is incorrect or expired. § Content: { "error" : "Authentication required. Optional reason." } Code: 500 INTERNAL SERVER ERROR § § 7.6.3 Description: May occur if an unexpected error occurs when processing the request Content: { "error" : "Exception information." " } Processing The Exacta Import Gateway validates the data is of a proper structure and contains needed data elements. The exacta database will then be queried for the relevant information to send in the response to the host system. 7.6.4 Inventory Use Cases The use cases below illustrate the uses of this message: ITEM # USE CASE PRE-CONDITIONS Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 POST CONDITIONS 41 Exacta GTP – AutoStore - ISD 1. Transaction received for a SKU that exists Product Exists in Exacta Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 Inventory is sent back to the host system 42 Exacta GTP – AutoStore - ISD 8 Export Overview Export is the process of Exacta initiating transactions to external systems. Exacta communicates with the host system using a Web API. Exacta has a multi-tiered system for importing data: • Export Service. The Export Service receives notifications from various Exacta modules to initiate transactions back to the host system. The Export Service is standard and not modified for individual customers. • Exacta Export Publisher. The Exacta Export Publisher gathers transactions ready to send, establishes connection, builds and sends a Web API transaction. The Exacta Export Publisher is coded for the specific fields gathered and sent for the interfaces and it is those specific fields described in this document. The ‘configurable URL’ described in the export section of this document is an endpoint that will be hosted by the host system. The same data types described for the host system sending data to Exacta are used when returning data to the host system. Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 43 Exacta GTP – AutoStore - ISD 9 Exacta Export Publisher - Touchpoints 9.1 Putaway Confirm Overview End Recipient Trigger Event Communication Notes The Putaway Confirm transaction is used to notify the host system that an order or order line (configurable) for a putaway has been stocked into the AutoStore™ Host System Export Level: Order When all lines on the order have been completed Export Level: Line When an individual line for an order has been completed Web API, JSON formatted data 1. Regardless of how many locations the product was stored one transaction is returned, matching with the original transaction received. URL https://<configurable url>/export/putconfirm URL Parameters None Method POST 9.1.1 Putaway Control FIELD TYPE DESCRIPTION order_name string Unique identifier for the order operator_id string datetime_completed string Operator ID for the user that trigger the adjustment Time that the order was put complete order_lines array List of all order lines tied to the order order_line_details array See order line section for additional details See order line details section for more information 9.1.1 DEFAULT Order Line FIELD TYPE DESCRIPTION line_num int prod_name string Line number associated with the line that was stocked Name of the product for the order line quantity_requested int Quantity that was requested quantity_actual int Quantity putaway for the order line zone_num string Zone number the put was completed in operator_id string datetime_completed string Operator ID for the user that triggered the adjustment Time that the order was putaway complete Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 DEFAULT 44 Exacta GTP – AutoStore - ISD 9.1.1 Order Line Details FIELD TYPE DESCRIPTION Detail_type int Detail type (configurable in database) Detail_value string Detail Value 9.1.2 DEFAULT Schema { "records": [ { "order_name": [string], "operator_id": [string], "datetime_completed": [string], "order_lines": [ { "line_num": [int], "prod_name": [string], "quantity_requested": [int], "quantity_actual": [int], "zone_num": [string] } ], "order_line_detail": [ { "detail_type": [int], "detail_value": [string] } ] } ] } 9.1.3 Example { "records": [ { "order_name": "PutOrder1234", "operator_id": "JD1234", "datetime_completed": "11/22/2022 03:25:24 PM", "order_lines": [ { "line_num": 1, "prod_name": "SKUSEF", "quantity_requested": 4, "quantity_actual": 4, "zone_num": "12" } ], "order_line_detail": [ { "detail_type": 1001, "detail_value": "Example Detail Value" } ] } ] } Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 45 Exacta GTP – AutoStore - ISD 9.1.4 Processing Exacta Export Publisher finds a transaction ready to send to the host system and initiates the call. Once sent and a successful response is received the transaction is marked as “exported” in Exacta’s staging table. If a failure response is received the transaction is marked as “failed” and triggers an email alert reporting the error, if configured. If needed the Interface Transaction Utility in Exacta Portal can be used to retrigger the message. 9.1.5 Putaway Confirm Use Cases The use cases below will be exercised in testing: ITEM # USE CASE 1. Transaction sent for a putaway PRE-CONDITIONS Putaway not complete Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 POST CONDITIONS Inventory is updated 46 Exacta GTP – AutoStore - ISD 9.2 Pick Confirm Overview End Recipient Trigger Event Communication Notes The Pick Confirm transaction is used to notify the host system that an order or order line (configurable) for a pick has occurred from the AutoStore™ Host System Export Level: Order When all lines on the order have been shorted or completed Export Level: Line When an individual line for an order has been shorted or completed Web API, JSON formatted data 1. Pick export transactions are configurable in the Exacta System configuration and can be set to export at the order level or line level. URL https://<configurable url>/export/pickconfirm URL Parameters None Method POST 9.2.1 Pick Control FIELD TYPE DESCRIPTION order_name string Unique identifier for the order operator_id string datetime_completed string Operator ID for the user that trigger the adjustment Time that the order was put complete order_lines Array List of all order lines tied to the order DEFAULT See order line section for additional details 9.2.2 Order Line FIELD TYPE DESCRIPTION cntnr_name String cntrn_id String line_num Int prod_name String Container name(s) that the pick was completed for line Container ID(s) that the pick was completed for line Line number associated with the line that was stocked Name of the product for the order line quantity_actual Int Quantity that was picked for the order line quantity_requested Int Quantity that was requested line_complete Boolean True/False indicator If the line was complete order_line details Array workstation String operator_id String datetime_completed string See order line details section for additional details Workstation where the last pick for the order line occurred Login name for the user that triggered the adjustment Time that the order was pick complete Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 DEFAULT 47 Exacta GTP – AutoStore - ISD 9.2.3 Order Line Details FIELD TYPE DESCRIPTION detail_type int Detail type (configurable in database) detail_value string Detail Value 9.2.4 DEFAULT Schema { "records": [ { "order_name": [string], "operator_id": [string], "datetime_completed": [string], "order_lines": [ { "cntnr_name": [string], "cntnr_id ": [string], "line_num": [int], "prod_name": [string], "quantity_actual": [int], "quantity_requested": [int], "line_complete": [boolean], "order_line_detail": [ { "detail_type": [int], "detail_value": [string] } ], "Workstation": [string] } ] } ] } 9.2.5 Example { "records": [ { "order_name": "PickOrder1234", "operator_id": "John Doe", "datetime_completed": "11/22/2023 03:25:24 PM", "order_lines": [ { "cntnr_name": "CONTAINER123", "cntnr_id": "123456", "line_num": 1, "prod_name": "SKUSEF", "quantity_actual": 6, "quantity_requested": 6, "line_complete": true, "order_line_detail": [ { "detail_type": 1010, "detail_value": "Example Detail Value" } ], "Workstation": "4" Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 48 Exacta GTP – AutoStore - ISD } ] } ] } 9.2.6 Processing Exacta Export Publisher finds a transaction ready to send to the host system and initiates the call. Once sent and a successful response is received the transaction is marked as “exported” in Exacta’s staging table. If a failure response is received the transaction is marked as “failed” and triggers an email alert reporting the error, if configured. If needed the Interface Transaction Utility in Exacta Portal can be used to retrigger the message. 9.2.7 Pick Confirm Use Cases The use cases below will be exercised in testing: ITEM # USE CASE 1. Transaction sent for a pick PRE-CONDITIONS Pick not complete Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 POST CONDITIONS Pick order is updated 49 Exacta GTP – AutoStore - ISD 9.3 Cycle Count Confirm Overview The Cycle Count Confirm transaction is used to notify the host system that a cycle count has been completed for an order End Recipient Trigger Event Communication Notes URL Host System As the last count for the product is completed from the AutoStore™ Web API, JSON formatted data Notes: 1. Regardless of how many locations that the product is stored in, one export will be sent for the order, with multiple lines included in the export payload 2. If inventory adjustments are made during a cycle count, a corresponding inventory adjustment export will be triggered 3. This touchpoint is only to confirm that the cycle count was completed, not the quantity that was confirmed by the count. https://<configurable url>/export/cyclecountconfirm URL Parameters None Method POST 9.3.1 Cycle Count Control FIELD TYPE DESCRIPTION order_name string Unique identifier for the order order_details array prod_name string See order details section for additional details Name of the product for the order operator_id string completion_date string Login name for the user that completed the count Time that the order was counted order_lines array List of all order lines tied to the order DEFAULT See order line section for additional details 9.3.2 Order Details FIELD TYPE DESCRIPTION detail_type int Detail Type (configurable in database) detail_value string Detail value for the product FIELD TYPE DESCRIPTION operator_id string completion_date string Login name for the user that completed the count Time that the line counted 9.3.3 9.3.4 DEFAULT Order Line DEFAULT Schema { Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 50 Exacta GTP – AutoStore - ISD "records": [ { "order_name": [string], "order_details": [ { "detail_type": [int], "detail_value": [string] } ], "prod_name": [string], "operator_id": [string], "completion_date": [string], "order_lines": [ { "operator_id": [string], "completion_date": [string] } ] } ] } 9.3.5 Example { "records": [ { "order_name": "CCOrder1234", "order_details": [ { "detail_type": 1010, "detail_value": "Sample Detail Value" } ], "prod_name": "SKUSEF", "operator_id": "John Doe", "completion_date": "11/22/2022 03:25:24 PM", "order_lines": [ { "operator_id": "John Doe", "completion_date": "11/22/2022 03:25:24 PM" } ] } ] } 9.3.6 Processing Exacta Export Publisher finds a transaction ready to send to the host system and initiates the call. Once sent and a successful response is received the transaction is marked as “exported” in Exacta’s staging table. If a failure response is received the transaction is marked as “failed” and triggers an email alert reporting the error, if configured. If needed the Interface Transaction Utility in Exacta Portal can be used to retrigger the message. 9.3.7 Cycle Count Complete Use Cases Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 51 Exacta GTP – AutoStore - ISD The use cases below will be exercised in testing: ITEM # USE CASE 1. Transaction sent for a cycle count line PRE-CONDITIONS Cycle Count order not complete Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 POST CONDITIONS Cycle Count order is completed 52 Exacta GTP – AutoStore - ISD 9.4 Inventory Adjustment Overview End Recipient Trigger Event Communication Notes URL The inventory adjustment transaction is used to notify the host system when inventory has been adjusted that is not directly tied to a pick or putaway order Host System As the adjustment occurs for inventory at a location Web API, JSON formatted data https://<configurable url>/export/invadj URL Parameters None Method POST 9.4.1 Inventory Adjustment Control FIELD TYPE DESCRIPTION adjustment_order_name string oder_name string Unique identifier for the transaction (this is not the pick order or putaway order that is sent from the host system – it is a unique identifier created by Exacta for the specific adjustment that occurred) Order name sent to Exacta for Cycle Count order_lines array List of all order lines tied to the order DEFAULT See order line section for additional details 9.4.2 Order Line FIELD TYPE DESCRIPTION transaction_type int prod_name string Process that initiated the adjustment: 1. Pick adjustment 2. Putaway adjustment 3. Cycle Count 4. Hot Pick 5. Hot Putaway Name of the product that was adjusted quantity int Quantity that was adjusted reason_code string reason_code_description string operator_id string datetime_completed string Reason code is not filled for all adjustments. Only populated for pick shortages or hot pick/hot putaway transactions. Reason codes can also be configured to not trigger an export if desired Reason code description is not filled for all adjustments. Only populated for pick shortages or hot pick/hot putaway transactions. Reason codes can also be configured to not trigger an export if desired Login name for the user that triggered the adjustment Time that the adjustment occurred is_incremental_adjustme nt boolean 9.4.3 DEFAULT True = Is Incremental False = is not incremental Schema { Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 53 Exacta GTP – AutoStore - ISD "records": [ { "cntnr_name": [string], "order_name": [string], "sort_code": [string], "destination": [string], "scanner_num": [int], "reason_code": [string], "datetime_diverted": [string] } ] } 9.4.4 Example { "records": [ { "cntnr_name": "CNTNR123", "order_name": "ORDER123", "sort_code": "UPS", "destination": "4", "scanner_num": 3, "reason_code": "SUCCESS", "datetime_diverted": "2020-09-18 13:08:26.000" } ] } 9.4.5 Processing Exacta Export Publisher finds a transaction ready to send to the host system and initiates the call. Once sent and a successful response is received the transaction is marked as “exported” in Exacta’s staging table. If a failure response is received the transaction is marked as “failed” and triggers an email alert reporting the error, if configured. If needed the Interface Transaction Utility in Exacta Portal can be used to retrigger the message. 9.4.6 Inventory Adjustment Use Cases The use cases below will be exercised in testing: ITEM # USE CASE 1. Transaction sent for an adjustment PRE-CONDITIONS Product exists Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 POST CONDITIONS Inventory is updated 54 Exacta GTP – AutoStore - ISD 9.5 Divert Confirm Overview The divert confirmation is used to notify the host system when a container has been diverted to a zone or when a container is diverted to a shipping lane End Recipient Trigger Event Communication Notes Host System As the divert confirmation is received from the conveyor control system Web API, JSON formatted data 1. If the reason code field is populated with something other than ‘SUCCESS’, then the divert was missed. Exacta tried to divert the container there, but due to a conveyor issue, the container was not diverted. URL https://<configurable url>/export/divertconfirm URL Parameters None Method POST 9.5.1 Diver Confirm Control FIELD TYPE DESCRIPTION cntnr_name string order_name string sort_code string destination string This is the barcode that is canned by the conveyor Unique identifier for the order that is associated with the container (if applicable) Sort code for the order or container (if applicable) Lane or zone that the container is diverted to reason_code string scanner_num int Reason code for the divert Success FAILED_TRANSFER NO_DATA BOX_TOO_LONG GAP_TOO_SMALL LANE_CLOSED LANE_FULL CONVEYOR_OFF NO_AOR_DATA Scanner that the divert confirmations is for datetime_diverted string Time that the container was diverted 9.5.2 DEFAULT Schema { "records": [ { "cntnr_name": [string], "order_name": [string], "sort_code": [string], "destination": [string], "scanner_num": [int], "reason_code": [string], "datetime_diverted": [string] } ] } Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 55 Exacta GTP – AutoStore - ISD 9.5.3 Example { "records": [ { "cntnr_name": "CNTNR123", "order_name": "ORDER123", "sort_code": "UPS", "destination": "4", "scanner_num": 3, "reason_code": "SUCCESS", "datetime_diverted": "2020-09-18 13:08:26.000" } ] } 9.5.4 Processing Exacta Export Publisher finds a transaction ready to send to the host system and initiates the call. Once sent and a successful response is received the transaction is marked as “exported” in Exacta’s staging table. If a failure response is received the transaction is marked as “failed” and triggers an email alert reporting the error, if configured. If needed the Interface Transaction Utility in Exacta Portal can be used to retrigger the message. 9.5.5 Divert Confirm Adjustment Use Cases The use cases below will be exercised in testing: ITEM # USE CASE 1. Transaction sent for a divert confirm PRE-CONDITIONS n/a Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 POST CONDITIONS Container is updated 56 Exacta GTP – AutoStore - ISD 9.6 Verification Scan Overview End Recipient Trigger Event Communication Notes URL 9.6.1 The verification scan export is used to notify the host system that a container had the correct shipping label applied to the carton after a print and apply scanner. Host System As the verification scan is received from the conveyor controls system Web API, JSON formatted data https://<configurable url>/export/verificationscan URL Parameters None Method POST Verification Scan Control FIELD TYPE DESCRIPTION cntnr_name string order_name string scanner_num int This is the barcode that is canned by the conveyor Unique identifier for the order that is associated with the container (if applicable) Scanner that the verification scan occurred at expected_barcodes string scanned_barcodes string check_result boolean datetime_verified string 9.6.2 DEFAULT Verification barcode received from host system that is use to ensure that correct shipping label was applied to the carton Value that was scanned. Used to verify against the verification barcode True = (passed) False = (did not match) Time that the verification occurred Schema { "records": [ { "cntnr_name": [string], "order_name": [string], "scanner_num": [int], "expected_barcodes": [string], "scanned_barcodes ": [string], "check_result": [boolean], "datetime_verified": [string] } ] } 9.6.3 Example { "records": [ { "cntnr_name": "CNTNR123", "order_name": "ORDER123", "scanner_num": 4, "expected_barcodes": "TRACKINGNUMBERXYZ", Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 57 Exacta GTP – AutoStore - ISD "scanned_barcodes": "TRACKINGNUMBERXYZ", "check_result": true, "datetime_verified": "2020-09-18 13:08:26.000" } ] } 9.6.4 Processing Exacta Export Publisher finds a transaction ready to send to the host system and initiates the call. Once sent and a successful response is received the transaction is marked as “exported” in Exacta’s staging table. If a failure response is received the transaction is marked as “failed” and triggers an email alert reporting the error, if configured. If needed the Interface Transaction Utility in Exacta Portal can be used to retrigger the message. 9.6.5 Verification Scan Adjustment Use Cases The use cases below will be exercised in testing: ITEM # USE CASE 1. Transaction sent for a verification confirmation PRE-CONDITIONS n/a Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 POST CONDITIONS Container is updated 58 Exacta GTP – AutoStore - ISD 9.7 Weight Result Overview End Recipient Trigger Event Communication Notes URL The Weight Result export is sent from Exacta to the host system when a container has been weighed by a scale. Also includes pass through values for dimensions if the system includes a dimensioner as part of the scale Host System As the weight data is received from the conveyor controls system for the container Web API, JSON formatted data https://<configurable url>/export/weightresult URL Parameters None Method POST 9.7.1 Weight Result Control FIELD TYPE DESCRIPTION cntnr_name string order_name string scanner_num int cntnr_wgt_min string Unique ID for the container. This is the License Plate Number (LPN) that is read throughout the system Unique identifier for the order that is associated with the container (if applicable) Scanner that the verification scan occurred at Minimum weight for the container that was sent from the host system. cntnr_wgt_max cntnr_wgt cntnr_height cntnr_depth cntnr_width string string string string string DEFAULT Note that the data type is a decimal value, but will be sent as a string to the host system consumer endpoint Maximum weight for the container that was sent from the host system. Note that the data type is a decimal value, but will be sent as a string to the host system consumer endpoint Weight for the container from the conveyor control system Note that the data type is a decimal value, but will be sent as a string to the host system consumer endpoint Height of container determined by the dimensioner (if applicable). Note that the data type is a decimal value, but will be sent as a string to the host system consumer endpoint Depth of container determined by the dimensioner (if applicable). Note that the data type is a decimal value, but will be sent as a string to the host system consumer endpoint Width of container determined by the dimensioner (if applicable). Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 59 Exacta GTP – AutoStore - ISD check_result boolean datetime_weighed string 9.7.2 Note that the data type is a decimal value, but will be sent as a string to the host system consumer endpoint Will only perform a check if configured to do so. true = (passed) false = (did not match) Time that the weight result occurred Schema { "records": [ { "cntnr_name": [string], "order_name": [string], "scanner_num": [int], "cntnr_wgt_min": [string], "cntnr_wgt_max": [string], "cntnr_wgt": [string], "check_result": [boolean], "cntnr_height": [string], "cntnr_width": [string], "cntnr_depth": [string], "datetime_weighed": [string] } ] } 9.7.3 Example { "records": [ { "cntnr_name": "CNTNR123", "order_name": "ORDER123", "scanner_num": 4, "cntnr_wgt_min": "3.42", "cntnr_wgt_max": "10.3", "cntnr_wgt": "5.6", "cntnr_height": "12.3", "cntnr_width": "10.2", "cntnr_depth": "15.2", "check_result": true, "datetime_weighed": "2020-09-18 13:08:26.000" } ] } 9.7.4 Processing Exacta Export Publisher finds a transaction ready to send to the host system and initiates the call. Once sent and a successful response is received the transaction is marked as “exported” in Exacta’s staging table. If a failure response is received the transaction is marked as “failed” and triggers an email alert reporting the error, if configured. If needed the Interface Transaction Utility in Exacta Portal can be used to retrigger the message. . Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 60 Exacta GTP – AutoStore - ISD 9.7.5 Divert Confirm Adjustment Use Cases The use cases below will be exercised in testing: ITEM # USE CASE 1. Transaction sent for a weight result PRE-CONDITIONS n/a Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 POST CONDITIONS Container is updated 61 Exacta GTP – AutoStore - ISD 9.8 Inventory Reconciliation Overview Exacta will provide an inventory snapshot outlining the inventory on-hand in the AutoStore™ equipment on a scheduled interval. The output is summarized by product. One record for each product with a quantity on-hand greater than zero. End Recipient Host System Trigger Event Configured to run at a scheduled time each day Communication Flat File output to a folder on the Exacta server. Can either be fixed length (if product names are same length) or delimited with a pipe (|). Default is delimited with a pipe. 1. This output should be scheduled for a time of day when no activities are occurring in either Exacta or the host system 2. File is written to a shared folder on the Exacta server. The host system will retrieve the file when needed. A dedicated folder will be created for Inventory Reconciliation files. 3. File name is a date/time stamp with .TXT extension. Notes 9.8.1 URL N/A URL Parameters N/A Method N/A File Path Configurable in Exacta Export Adapter config Inventory Reconciliation FIELD SIZE TYPE DESCRIPTION Product Name 20 String Product name being reported Y Available Unit Quantity 11 Int Available quantity on_hand Y Record Terminator 1 string ‘CRLF’ Y 9.8.2 REQUIRED DEFAULT Processing Exacta creates the file as the current date/time with a .TMP extension. When complete renames the file to *.txt. The host system will retrieve the file and process. EXAMPLE 772205014136|13 8023796146518|11 068921050924|11 068921092221|5 9.8.3 Inventory Reconciliation Use Cases The use cases below will be exercised in testing: ITEM # USE CASE 1. Process is triggered at a specific time of day PRE-CONDITIONS N/A Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 POST CONDITIONS File is output with a record for each 62 Exacta GTP – AutoStore - ISD product with a quantity on-hand greater than 0 Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 63 Exacta GTP – AutoStore - ISD 10 Exception Scenario Examples 10.1.1 Inbound 10.1.1.1 Container Quantity Short Scenario Container Quantity Short Description Host system sends a putaway order with a line where the physical quantity in the container does not match the expected quantity. In the below example, the host system sent the putaway order with 100 units in the container. The operator only found 15 in the container, and thus adjusted the quantity to 15 during the putaway process. Original Import from Host { } Export from Exacta { } "records": [ { "order_name": "PUT33", "container_name": "putawaycontainer07", "priority": 498, "container_type": 5, "due_date": "2022-09-18 13:08:26.000", "order_lines": [ { "line_num": 1, "prod_name": "Shirt", "quantity": 100 } ] } ] "records": [ { "order_name": "PUT33", "line_num": 1, "prod_name": "Shirt", "qty_requested": 100, "qty_actual": 15, "login_name": "ProgramDefault", "datetime_completed": "2021-09-01T15:56:04" } ] 10.1.1.2 Container Quantity High Scenario Container Quantity High Description Host system sends a putaway order with a line where the physical quantity in the container does not match the expected quantity. Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 64 Exacta GTP – AutoStore - ISD In the below example, the host system sent the putaway order with 7 units in the container. The operator found 10 in the container, and thus adjusted the quantity to 10 during the putaway process. Original Import from Host { } Export from Exacta { } "records": [ { "order_name": "PUT22", "container_name": "putawaycontainer06", "priority": 498, "container_type": 5, "due_date": "2022-09-18 13:08:26.000", "order_lines": [ { "line_num": 1, "prod_name": "Shorts", "quantity": 7 } ] } ] "records": [ { "order_name": "PUT22", "line_num": 1, "prod_name": "Shorts", "qty_requested": 7, "qty_actual": 10, "login_name": "ProgramDefault", "datetime_completed": "2021-09-01T16:00:25" } ] 10.1.2 Outbound 10.1.2.1 Inventory Shortage (system shorted) Scenario Inventory Shortage (system shorted) Description Host system sends a pick order with a line that does not currently have inventory stocked in the AutoStore™. Other lines are picked normally. In the below example, the item ‘Shorts’ is not stocked in the AutoStore™ In this scenario, an inventory adjustment is exported for the inventory that was shorted. The short pick is also reflected in the pick confirmation. Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 65 Exacta GTP – AutoStore - ISD Original Import from Host { } Export from Exacta { "records": [ { "order_name": "Pick06", "cancel_flag": "N", "priority": 497, "due_date": "2021-09-11 23:08:27.000", "order_instruction": "Insert order instruction here", "order_lines": [ { "line_num": 1, "prod_name": "Shirt", "zone_num": "01", "quantity": 4 }, { "line_num": 2, "prod_name": "WaterBottle", "zone_num": "01", "quantity": 2 }, { "line_num": 3, "prod_name": "Shorts", "zone_num": "01", "quantity": 3 } ] } ] "records": [ { "order_name": "Pick06", "line_num": 1, "prod_name": "Shirt", "cntnr_name": "TOTE-15", "qty_requested": 4, "qty_actual": 4, "login_name": "ProgramDefault", "datetime_completed": "2021-09-01T12:46:50", "workstation": "2" }, { "order_name": "Pick06", "line_num": 3, "prod_name": "Shorts", "cntnr_name": "", "qty_requested": 3, "qty_actual": 0, "login_name": "ProgramDefault", Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 66 Exacta GTP – AutoStore - ISD "datetime_completed": "2021-09-01T12:39:09", "workstation": "" }, { } } "order_name": "Pick06", "line_num": 2, "prod_name": "WaterBottle", "cntnr_name": "TOTE-15", "qty_requested": 2, "qty_actual": 2, "login_name": "ProgramDefault", "datetime_completed": "2021-09-01T12:47:52", "workstation": "2" ] 10.1.2.2 Inventory Shortage (user adjustment) Scenario Inventory Shortage (user adjustment) Description Host system sends a pick order with a line that can systematically be fulfilled. When the bin arrives to the user at the port, the physical quantity in the bin is less than what the system thinks. The user performs a short pick adjustment, and there are no other bins to assign the line to. In the below example, the item ‘WaterBottle’ is improperly stocked in the AutoStore™ Original Import from Host { } "records": [ { "order_name": "Pick07", "cancel_flag": "N", "priority": 497, "due_date": "2021-09-11 23:08:27.000", "order_instruction": "Insert order instruction here", "order_lines": [ { "line_num": 1, "prod_name": "Shirt", "zone_num": "01", "quantity": 4 }, { "line_num": 2, "prod_name": "WaterBottle", "zone_num": "01", "quantity": 2 } ] } ] Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 67 Exacta GTP – AutoStore - ISD Export from Exacta ##Inventory Adjustment Message { "records": [ { "order_name": "Pick07", "adjust_type": "-", "transaction_type": "1", "prod_name": "WaterBottle", "quantity": 30, #30 was in the inventory bin when user shorted to 0 "reason_code": "14", "login_name": "ProgramDefault", "datetime_completed": "2021-09-01T13:24:27" } ] } ##Order Confirmation Message: } "records": [ { "order_name": "Pick07", "line_num": 2, "prod_name": "WaterBottle", "cntnr_name": "TOTE-17", "qty_requested": 2, "qty_actual": 0, "login_name": "ProgramDefault", "datetime_completed": "2021-09-01T13:24:14", "workstation": "2" }, { "order_name": "Pick07", "line_num": 1, "prod_name": "Shirt", "cntnr_name": "TOTE-17", "qty_requested": 4, "qty_actual": 4, "login_name": "ProgramDefault", "datetime_completed": "2021-09-01T13:24:33", "workstation": "2" } ] Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 68 Exacta GTP – AutoStore - ISD 11 System Assumptions The following assumptions are specific to Exacta GTP – AutoStore. Changes to these assumptions may impact delivery date, scope, or pricing for the system. ID Assumption 1. No partial quantities are processed. The decimal and any numbers after that are trimmed and discarded. For example, if a quantity of ’10.00’ is sent Exacta stores as ‘10’. For example, if a spool of rope is stocked that may be cut it may be stocked as quantity 100 (100 feet). But if a 10-foot length of rope is stocked that will never be cut but is sold as-is it will be stocked as quantity ‘1’. 2. All alpha data (product ID, order number, etc.) will be in uppercase format. All alpha character data will be imported, stored and exported back to the host as upper case. For example, the host will send ‘ORDER1’, data is stored as such and returned as ‘ORDER1’ 3. Exacta will trim any leading spaces from all data fields sent by the host system and return the data in that format for export. 4. Each order will have a unique ID that is unique within the system (across all types). 5. Product unit weight and dimensional data is sent in the same unit of measure the cartons are configured in. Exacta doesn’t translate (kg to lbs., mm to cm, mm to inches). 6. The host system views inventory at the macro level (knows total quantity in the equipment for each product) and Exacta tracks at the micro level (knows product and quantity stored at each storage location) for Exacta controlled zones. Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 69 Exacta GTP – AutoStore - ISD 12 Frequently Asked Questions (FAQ) The following assumptions are specific to Exacta GTP – AutoStore. Changes to these assumptions may impact delivery date, scope, or pricing for the system. 1. Q: Do you use a standard authentication/authorization mechanism or is it proprietary (custom)? A: Proprietary 2. Q: What kind of authentication/authorization standards are supported by WES (Token Based [Secure]: OpenID Connect, OAuth2, JWT, SAML2 / Session Based [Not secure]: Basic Authentication, API Keys, Cookie, other)? A: Proprietary token based 3. Q: What are the encryption standards used by the tokens (public-private key pairs/signature)? Please include protocols/key lengths. A: Tokens are not signed, instead they correspond to a specific user in the database, which has configured rights used for authorization. They are unique GUIDs that only have meaning to our User Authorization services. 4. Q: Can token expiration be configured? A: Yes, and the token may be refreshed to extend the expiration. 5. Q: Does Exacta GTP support the implementation of TLS certificates? Does it support secure encryption protocols and ciphersuites? A: Encryption utilizes symmetric 256bit AES algorithms. Further encryption would need custom development and IT effort. 6. Q: Does Exacta GTP support the configuration of HTTP security headers (hardening)? A: Not at this time 7. Q: What kind of web server does the GTP Web API use for the interface? Is it embedded? A: Web APIs are self-hosted ASP.NET Core services. Exacta GTP – AutoStore - Interface Specification Document Version 1.1, Effective 03/17/2023 70