// File: build-with-scantrust/consumer/3rd-party-landing-page This page contains an example to add the following functionality to a 3rd party landing page: - Prompt user to share location - Update scan location to user's location The `scan ID` will usually be passed as a query parameter in the URL like this: https://some-website-url.com?scan_id=90ee96a4-f7ef-46fb-a3d9-181f66ae590d To obtain your `api-key`: **`portal > campaign > settings > redirect`** ![access_key](/doc-img/access_key.png) Other parameters that can be added to this redirect URL include | Parameter | Description | | --------------- | -------------------------------------------------------- | | \{qr\} | Qr code ID | | \{id\} | Scan ID | | \{sku\} | Product SKU - Release ETA 20 OKT 2022 | | \{lat\} | Location Latitude | | \{lng\} | Location Longitude | | \{utid\} | User Tracking ID | | \{region\} | Region Key | | \{api_key\} | Campaign Api Key | | \{install_id\} | App Install ID | | \{app_compat\} | App Compatibility | | \{product_url\} | Product URL | | \{brand_url\} | Brand URL | | \{company_url\} | Company URL | | \{scm:param\} | SCM Parameter (param interchangable with actual SCM key) | ## index.html ```javascript ``` ## scantrust_stc_sdk.js ```javascript function ScanTrustConsumerScan(apiKey) { var apiKey = apiKey; var scanId = ""; // User accepted to share his position and a GPS location was retrieved // The pos object contains the position coordinates. // pos.coords.lat -> Latitude // pos.coords.lng -> Longitude var success = function (pos) { fetch("https://api.scantrust.com/api/v2/consumer/scan//geotag/", { method: "POST", mode: "cors", headers: { "Content-Type": "application/json", "X-ScanTrust-Consumer-Api-Key": apiKey, }, body: JSON.stringify({ lat: pos.coords.latitude, lng: pos.coords.longitude, }), }) .then(function (response) { if (response.ok) { return response; } else { throw new Error(); } }) .then(function () { console.log("Scantrust Consumer SDK: Scan Location successfully updated"); }) .catch(function (err) { console.error("Scantrust Consumer SDK Error: " + err); }); }; // User didn't accept to share his position or the browser was unable to retrieve a GPS location // Reason for failure is inside the positionError object. // positionError.code == 1 PERMISSION_DENIED, The acquisition of the geolocation information failed because the page didn't have the permission to do it. // positionError.code == 2 POSITION_UNAVAILABLE The acquisition of the geolocation failed because at least one internal source of position returned an internal error. // positionError.code == 3 TIMEOUT The time allowed to acquire the geolocation, defined by positionOptions.timeout information was reached before the information was obtained. var error = function (positionError) { console.log( "Scantrust Consumer SDK : Can't retrieve position. Code: " + positionError.code + " message: " + positionError.message ); }; this.updateScanLocation = function (id) { if (!id) { console.error("Scantrust Consumer SDK Error: Scan ID Not provided"); return; } scanId = id; var positionOptions = { enableHighAccuracy: false, timeout: 5000, }; navigator.geolocation.getCurrentPosition(success, error, positionOptions); }; } ``` ## script.js ```javascript var API_KEY = "replace-with-you-api-key"; // The scan ID will usually be passed as a query parameter in the URL. Example: https://some-website-url.com?scan_id=90ee96a4-f7ef-46fb-a3d9-181f66ae590d var scanId = "90ee96a4-f7ef-44fb-a3d9-181f62ae590d"; var sdk = new ScanTrustConsumerScan(API_KEY); sdk.updateScanLocation(scanId); ``` ## Displaying the authentication result When your landing page loads, call the `combined-info` endpoint with the scan ID (see [Scantrust Consumer API](scantrust-consumer-api.md)). The response tells you whether the code is genuine, so you can show the right result to the shopper. The standard check follows this order: 1. If the code is blacklisted, inactive, or the authentication scan failed, treat it as a suspected counterfeit. 2. Else, if the last scan was a fresh authentication that passed, show genuine. If that scan is older than the timeout, show expired instead. 3. Else, the code has not been authenticated yet, so show an authenticate button. The `scan.age` value is the number of seconds since the scan. We recommend a 300 second (5 minute) timeout, so an old result page cannot pass as genuine long after the scan. ```javascript const scan = data.scan; const activationStatus = data.code.qrcode.activation_status; if ((activationStatus !== 'active') || (scan.reason === 'auth' && scan.result !== 'ok')) { showScanResult('suspected counterfeit'); } else if (scan.reason === 'auth' && scan.result === 'ok') { // Show genuine only for a fresh authentication scan, so an old result page // cannot pass as genuine more than 5 minutes after the scan. showScanResult(scan.age >= 300 ? 'expired' : 'genuine'); } else { showScanResult('Show [authenticate] Button'); // no authentication yet } ``` For more complex logic, such as telling a blacklisted code apart from an inactive one, please contact Scantrust support. --- // File: build-with-scantrust/consumer/consume-code ## Overview This endpoint allows you to consume a code. It sets the fields `is_consumed` to TRUE and `consumed_date` to the current date-time on the server based on a valid `scan_id` ### Preparation - In the campaign options **_Redirect_** tab, enable the **Enable consumed feature** checkbox - In the campaign options **SCM T&T** tab, add two scm fields: - `is_consumed` - `consumed_date` _Note:_ this endpoint should only be called once and should be carefully managed by the app. ### POST: /api/v2/consumer/scan/\{scan_id\}/consume/ **_Body Parameters POST (application/json)_** _(an empty POST body has to be sent)_ **_Response (200): Status OK_** ```json { "detail": "Processed OK" } ``` #### Example of SCM fields after succesful consume call: - `is_consumed`: Yes - `consumed_date`: 2021-10-26T09:45:11.123169+00:00 --- // File: build-with-scantrust/consumer/introduction-stc Every Scantrust QR code has a URL and a unique message that identifies it in the system. When someone scans the QR code with a reader, the URL opens and takes them to the correct landing page. Brand owners can use the **_Scantrust Landing Page Editor_** to set up the default landing pages. However, some brands may want to create and host their own pages instead. In that case, developers need to use the [Scantrust Consumer API](/docs/build-with-scantrust/consumer/scantrust-consumer-api) on their landing page to display information about the QR code. ## How a QR code is scanned 1. The user uses the camera app on their smartphone to scan a code. 2. Their phone displays the URL from the QR code and asks the user to open the link. 3. After the user opens the link, the scantrust scan-server identifies the code and determines which campaign it is part of. 4. The scan-server generates a unique scan-id on the server with the scan details. 5. Using the campaign and the scan-id, the scan-server redirects the user to the landing page and adds the scan_id to the URL. 6. The landing page uses the scan_id to retrieve information from the scantrust consumer API. 7. The landing page displays information associated with the scan such as the scan, code, company, campaign, and SCM data. 8. If the user did not set their location using GPS, the landing page asks the user to share their location and calls the update location endpoint. 9. If a code is intended for consumption, the landing page can prompt the user to mark the code as consumed. ## How to Use the Consumer API All Scantrust APIs are REST APIs and support JSON. We recommend using a free tool called [Postman](https://www.postman.com/downloads/) for testing API calls. The Scantrust Consumer API offers the following features: - Redirect the user to the correct landing page and generate a `scan_id` for data lookup - Show the Code Status, Authentication Results, Product and SCM data of the scan - based on `scan_id` (API details can be found here: [/docs/build-with-scantrust/consumer/scantrust-consumer-api](/docs/build-with-scantrust/consumer/scantrust-consumer-api)) - based on `extended_id` (API details can be found here: [/docs/build-with-scantrust/consumer/lookup-code-info](/docs/build-with-scantrust/consumer/lookup-code-info)) - Update the scan location based on user opt-in to share their location (API details can be found here: [/docs/build-with-scantrust/consumer/update-location](/docs/build-with-scantrust/consumer/update-location)) - Set the code as "consumed" (API details can be found here: [/docs/build-with-scantrust/consumer/consume-code](/docs/build-with-scantrust/consumer/consume-code)) We will use the consumer API to fetch code information with a `scan_id` as an example. ## Scanning Example ### Preparation Steps #### 1. Get some sample QR codes From the Scantrust Enterprise Portal, download a Scantrust workorder file with QR codes (you can find them in the file `codes.csv`). In case you already have physical labels, scan one of the QR codes with and QR code reader (for example the [Scandit Demo App](https://www.scandit.com/resources/demo-apps/)) and copy the URL. Examples: - Production codes: `HTTPS://ST4.CH/Q/XK0K93GHYL0418MPP0518YC62732BS1` - Staging codes: `HTTPS://QR1.CH/Q/C0678AB9B80410MRP0410FCF4264BBF` #### 2. Set the landing page to a custom URL 1. In Scantrust Enterprise Portal, click **campaigns** on the hamburger menu. 2. Select the name of the **campaign** you want to change and click on **Option panel** 3. In the **Redirect** tab, choose **Intelligent Redirect for the products in this Campaign** 4. Click **Landing Page Powered by Scantrust** and select **Custom URL** 5. As a **Custom URL** you will want to fill in the URL where your landing pages are hosted. In order to pass information into the redirect, use a combination of any of the following: - `qr`: _extended ID of the code_ - `id`: _unique scan id_ - `region`: _intended market region_ - `api_key`: _only include for testing_ - **Example:** `https://test.com?qr={qr}&scan_id={id}&api_key={api_key}` 6. Copy the **Consumer API Key** as written below the **Custom Url**: ![KEY](/doc-img/find_Consumer_API_Key.png) #### 3. Set up Postman and set the Consumer API key 1. Download and install [Postman](https://www.postman.com/downloads/) 2. In Postman, click the **Headers** tab just below the address bar 3. Create a new line of key-value pair. Enter `X-ScanTrust-Consumer-Api-Key` in the KEY column, and enter your actual API key in the VALUE column ### Calling the API to fetch code information 1. Create a new collection and add a GET request in Postman and set the URL to that of the demo QR Code 2. Click on **Send** button to the right of address bar. 3. The scantrust server will return a `302 REDIRECT` response with a `Location` header. This will contain the redirect for the code. Postman is set to automatically follow this redirect, and it will take you to the landing page as set up for your campaign. - **Example:** `https://test.com?scan_id=4fc95ccc-8146-4c0b-b7ce-e232792f182a&qr=C0678AB9B80410MRP0410FCF4264BBF&api_key=eyJjYW1wYWlnbl9pZCI6MTgxfQ:1mfC7C:bvOYaj2tDmxXQpBUyLckJy6repBBkSZPp0EK--aEnW4` 4. From the redirect link copy the **`scan_id`** and **`qr`** because these will be used to retrieve further information of the code 5. Create another GET request in Postman and place the endpoint url in the address bar: `https://api.scantrust.com/api/v2/consumer/scan/{scan_id}/combined-info/`. Replace the `{scan_id}` with the scan id from step (4). - **Example:** `https://api.scantrust.com/api/v2/consumer/scan/9c2722af-6bc1-432e-9a91-d9b0847dfc3a/combined-info/` ![postman](/doc-img/postman_screenshot.png) 6. Click on **Send** button and you should receive code information in the response body. ### API Response Body ```json { "scan": { "app": "consumer", "reason": "serial", "result": "ok", "auth_failure_mode": "", "country": "HK", "age": 14005905, "created_at": "2021-01-25T07:16:59.304362Z" }, "code": { "product": { "id": 6304, "name": "st test", "image": "https://www.scantrust.com/c/1294/brand/bltestfkj.png", "description": "", "sku": "st_tester", "client_url": "http://www.scantrust.com", "stc_data": {} }, "brand": { "id": 954, "name": "Food & Beverage Brand", "description": "Food & Beverage Brand, as the name indicates, offers a wide variety of food and beverage products for everyone.", "image": "https://www.scantrust.com/c/1294/brand/bltestfkj.png" }, "qrcode": { "message": "JBF30EODK54710FX56LS7GWC", "creation_date": "2021-01-24T11:11:13.325035Z", "serial_number": "KM1207W9", "is_blacklisted": false, "activation_status": "active", "blacklist_reason": "none", "is_consumed": false, "is_sid": true }, "scm_data": [ { "name": "Consumed Date", "key": "consumed_date", "position": 0, "type": "date", "value": "", "value_display": null }, { "name": "Sell-by Date", "key": "sell_by_date", "position": 0, "type": "date", "value": "", "value_display": null } ] "scan_count": 3 }, "campaign": { "id": 780, "name": "ST TESTING CAMPAIGN", "products": [ { "id": 6304, "name": "ST Tester", "image": null, "brand": { "id": 954, "name": "Food & Beverage Brand", "description": "Food & Beverage Brand, as the name indicates, offers a wide variety of food and beverage products for everyone.", "image": "https://www.scantrust.com/c/1294/brand/bltestfkj.png", "client_url": "http://www.scantrust.com" }, "sku": "unilever_utm_tag_tester" } ], } ... ``` --- // File: build-with-scantrust/consumer/lookup-code-info ## Overview If you want to get the code informations but only have access to QR Code URL you can retrieve the information as follow: - Extract the `extended_id` from the URL. A standard code URL will look like this: `https://st4.ch/q/{extended_id}` - **Example**: _QR Code URL_: `https://st4.ch/q/560AC5E52101I918149054B258CC1` _Extended ID is_: `560AC5E52101I918149054B258CC1` - Use that `extended_id` and call the below endpoint ### GET: /api/v2/consumer/\{extended_id\}/details/ **_Response (404): Not found_** If the `extended_id` does not exist or cannot be found **within the campaign**, the api will return a **404**. **_Response (200): Status OK_** ```json { "product": { "id": 95, "name": "Château Collotype", "image": "https://cc.scantrust.com/c/20/product/generic-wine-bo-qderkb.png", "description": "Tamper-evident label", "sku": "COL-75ML", "client_url": "http://www.scantrust.com" }, "brand": { "id": 15, "name": "Winery Collotype", "description": "This is a test brand.", "image": "https://cc.scantrust.com/c/20/brand/d9d055b7-0e2b-45f7-ab5c-5e02d7e76d10-kabtun.png" }, "qrcode": { "message": "560AC5E52101I918149054B258CC1", "creation_date": "2015-08-26T12:24:40.139076Z", "serial_number": "21F29SAL", "is_blacklisted": false, "activation_status": "active", "blacklist_reason": "none", "is_consumed": false }, "scm_data": [ { "name": "Production Date", "key": "production_date", "position": 0, "type": "date", "value": "January 1, 2015" }, { "name": "Sell-by Date", "key": "sell_by_date", "position": 1, "type": "date", "value": "April 15, 2019" }, { "name": "Port of Entry", "key": "entry_port", "position": 2, "type": "text", "value": "Venice" }, { "name": "Intended Markets", "key": "intended_market", "position": 3, "type": "list", "value": "Italy" }, { "name": "Distributor", "key": "distributor", "position": 4, "type": "text", "value": "" } ], "scan_count": 1 } ``` --- // File: build-with-scantrust/consumer/proxying In some cases, Scantrust codes may have a custom prefix, also known as a "vanity URL". Additionally, some clients may want these scans to be proxied before they're forwarded to the landing page. When a middleware server is used for this purpose, it's essential to ensure the following: 1. The middleware server should capture and set the user-agent. When forwarding a request, the HTTP header `User-Agent` should be set to that of the incoming request. This is necessary to display the correct app/user-agent in the Scantrust dashboard. 2. The middleware server should set the forwarding header. When forwarding a request, the HTTP header `X-Forwarded-For` should be set to the client-IP address of the incoming request. Alternatively, the newer header `forwarded: for={client-ip}` can also be used. This header is necessary to obtain accurate IP address data to display in the Scantrust dashboard. If the location-update API is not called on the client-side, the forwarded header is the only way to obtain location data about the user. If the above fields are not set on the forwarded request, it will be recorded in the scantrust system as coming from the requesting server. ## Rate limiting When proxying requests, take in to consideration that calling Scantrust Endpoints excessively can result in rate limiting errorss (HTTP status code 429). For more details see the scantrust [rate limits](/docs/build-with-scantrust/rest-api/rate-limits) --- // File: build-with-scantrust/consumer/scantrust-consumer-api ## Overview The Scantrust Consumer API is mainly used from the Scantrust Consumer App (STC) landing page after a Scantrust code has been scanned. However, third-party web or mobile apps/landing pages can call this API as long as a valid API-key is provided. Please [see the introduction](/docs/build-with-scantrust/consumer/introduction-stc) for the required setup steps and an example. ### GET: /api/v2/consumer/scan/\{scan_id\}/combined-info/ Get the code info for a `scan_id` Use the `scan_id` as it was passed into the landing page as part of the redirect **Example :** `https://api.scantrust.com/api/v2/consumer/scan/5c9e2527-3120-410c-bd6c-665668dce3dc/combined-info/` This endpoint will return an object containing information about the qr code, campaign, and the scan result: #### Code Information - Product - Brand - QR Code infos - SCM Data #### Campaign Info - Name - Products inside that campaign - Campaign settings (eg: is serial number lookup allowed) #### Scan Info - App used to scan - Result ("ok" or "failure") - Type of query (reason) - Reason why the scan failed (auth_failure_mode) - Country where the scan was made ### Response codes **_Response (401) : Unauthorized_** If the `X-ScanTrust-Consumer-Api-Key` header is missing, the API will return a `401` error code. Please add the correct API key (see Introduction) **_Response (403) : Forbidden_** If the campaign linked to the API key is not found, not activated or doesn’t contain any product, the API will return a `403` error code Please scan the correct QR Code or add the correct API key (see Introduction) **_Response (200): Status OK_** ```json { "code" : { "product": { "id": 95, "name": "Château Collotype", "image": "https://cc.scantrust.com/c/20/product/generic-wine-bo-qderkb.png", "description": "Tamper-evident label", "sku": "COL-75ML", "client_url": "http://www.scantrust.com" }, "brand": { "id": 15, "name": "Winery Collotype", "description": "This is a test brand.", "image": "https://cc.scantrust.com/c/20/brand/d9d055b7-0e2b-45f7-ab5c-5e02d7e76d10-kabtun.png" }, "qrcode": { "message": "560AC5E52101I918149054B258CC1", "creation_date": "2015-08-26T12:24:40.139076Z", "serial_number": "21F29SAL", "is_blacklisted": false, "activation_status": "active", "blacklist_reason": "none", "is_consumed": false }, "scm_data": [{ "name": "Production Date", "key": "production_date", "position": 0, "type": "date", "value": "January 1, 2015" }, { "name": "Sell-by Date", "key": "sell_by_date", "position": 1, "type": "date", "value": "April 15, 2019" }, { "name": "Port of Entry", "key": "entry_port", "position": 2, "type": "text", "value": "Venice" }, { "name": "Intended Markets", "key": "intended_market", "position": 3, "type": "list", "value": "Italy" }, { "name": "Distributor", "key": "distributor", "position": 4, "type": "text", "value": "" }], "scan_count": 1 } "campaign": { "products": [{ "id": 95, "name": "Château Collotype", "image": "https://cc.scantrust.com/c/20/product/generic-wine-bo-qderkb.png", "description": "Tamper-evident label", "sku": "COL-75ML", "client_url": "http://www.scantrust.com" }], "name": "Collotype Campaign", "options": { "is_enabled": true, "serial_number_lookup_enabled": true, "complaints": { "is_enabled": true, "to_email": "support@scantrust.com" }, "wechat": { "is_enabled": false, "channel_redirect": { "is_enabled": false, "landing_page": "https://www.scantrust.com/result-pages/wechat-redirect.html", "channel_id": "" } }, "mark_consumed": false, "ga_key": "KEY123", "stc_config": {} } }, "scan": { "app": "consumer", "reason": "serial", "result": "ok", "auth_failure_mode": "", "country": "CN" } ``` --- // File: build-with-scantrust/consumer/serial-number-lookup As part of a Scantrust consumer page or custom landing page, a serial number lookup feature can be added. When doing so, a scan will be generated for each serial number query, regardless of a match with a code. Serial number lookups that match with a code serial number, will show up in your dashboard with the correct product and code information. Serial number lookups that don't match any code in the campaign, will still show up as scans but will have no related code. ## Pre-Requisites - Access to a Scantrust brand company - Understand how Scantrust consumer features work [(documentation)](/docs/build-with-scantrust/consumer/introduction-stc) - An existing campaign with a code added to it - A `campaign_key` to be sent as `X-ScanTrust-Consumer-Api-Key` header ## Serial Number Lookup API This API will create a scan based on a given serial number. This API is campaign specific and will only lookup codes belonging to the current campaign (based on `X-ScanTrust-Consumer-Api-Key`). If you are calling this from a backend server, the request is similar to a proxy request and requires the same headers to be set. See [proxying](/docs/build-with-scantrust/consumer/proxying). ### POST /api/v2/consumer/find/ **_Request Headers_** | Field | Type | Description | | -------- | ---------- | ------------ | | `X-ScanTrust-Consumer-Api-Key` | String (Required) | The Scantrust campaign key | | `User-Agent` | String (Required if backend call) | See [proxying](/docs/build-with-scantrust/consumer/proxying). | | `forwarded` | String (Required if backend call) | See [proxying](/docs/build-with-scantrust/consumer/proxying). | **_POST Fields_** Fields to be posted as JSON web request. | Field | Type | Description | | -------- | ---------- | ------------ | | `serial_number` | **String (required)** | The serial number provided by the user **_Response Codes_** **200 OK** Code found and scan created. API Response: ```json { "qr": "Code QR Message", "scan_id": "Scan UUID (can be used for lookups)", "region": "Detected region", "url": "redirect URL" } ``` **404 NOT FOUND** Code was **not found** based on serial number **within the campaign**. Scan created for campaign without code relation. **Other Response Codes** See [error handling documentation](/docs/build-with-scantrust/rest-api/error-handling). ## Conclusion By performing a POST to the `/api/v2/consumer/find/` endpoint, providing a `serial_number`, a scan will be created under the related campaign regardless if the lookup was found or not. The scan will be classified as `serial` lookup and will be related to a code if found within your campaign scope. If calling from a backend/proxy server, see [proxying](/docs/build-with-scantrust/consumer/proxying) to set the appropriate headers on your requests. --- // File: build-with-scantrust/consumer/update-location ## Overview This API endpoint enables users to update their GPS location after they opt-in to share it. By providing scan-position data, brands can gain insight into where scans originate and target specific areas with promotions or other initiatives. It's important to note that for this data to be accurate, the user must allow the web-page to access their location. If this is not allowed, the system will default to IP geolocation, which may be less accurate depending on the consumer's internet connection. This endpoint can be called as soon as the scan_id is available and will mark the scan on the Dashboard. The landing page must then collect the latitude/longitude location and pass it in as input. ## Workflow 1. Setup a redirect to your custom landing page including `api_key` and `id` parameters - e.g. `https://your-landing-page.io/?api_key={api_key}&scan_id={id}` 2. Use client side javascript and the landing page to ask user for lat,lng permission 3. Fetch `api_key` & `scan_id` parameter from the url 4. Construct a http `POST` request as described below ## Endpoint Description ### POST: /api/v2/consumer/scan/\{scan_id\}/geotag/ **Authentication** API Key must be passed as a header. ``` X-ScanTrust-Consumer-Api-Key: ``` **_Body Parameters POST (application/json)_** ```json { lat: , /*Latitude*/ lng: , /*Longitude*/ } ``` Expected response: **_Response (200): Status OK_** **Curl Example** ``` curl -X POST "https://api.scantrust.com/api/v2/consumer/scan/{scan_id}/geotag/" \ -H "Content-Type: application/json" \ -H "X-ScanTrust-Consumer-Api-Key: your_api_key_here" \ -d '{ "lat": 51.5074, "lng": -0.1278 }' ``` --- // File: build-with-scantrust/reference/qr-capacity-and-ingestion ## QR Code Max Capacities (Binary Encoding) While multiple encoding methods exist, Scantrust uses **binary** encoding for the URLs we generate. This allows the use of lower case characters, needed for both case sensitive url paths and the standard `compact-12` `extended-id` format. * The "Version" determines the number of cells & thus the max capacity * The "Error Correction Level" (L/M/Q/H) keeps the code readable in the event of damage * The Secure Graphic or Logo is considered requires level `Q` or higher | Version | Size (Cells) | L (7%) | M (15%) | Q (25%) | H (30%) | | :------ | :----------- | :----: | :-----: | :------: | :-----: | | v6 | `41x41` | `134` | `106` | `74` | `58` | | v5 | `37x37` | `106` | `84` | `60` | `44` | | v4 | `33x33` | `78` | `62` | **`46`** | `34` | | v3 | `29x29` | `53` | `42` | `32` | `24` | **Scantrust Secure Codes use `v4` and level `Q` (`46`) by default**. This can be changed with the assistance of a Scantrust Engineer. ## Code Ingestion & QR Length Validation ### SID Codes (No Secure Graphic) Only the `extended-id` "maximum length" rule is enforced (`100`). Compaibility with a specific QR version / error correction level is not checked. Because an SID code can be printed in any QR code version desired, the project implementation team to ensure compatibility with any packaging constraints. ### SSC Codes w/ Secure Graphic SSC codes require strict adherence to the length limits of the QR code. This limit is enforce for all code formats (GS1, Custom) at upload time. Wherever possible we check the code type used in the workorder. If that is not available we will use the rules below to calcualte the maximum length: * For "post print" ingestion, the work order's code type is used * For "pre print" ingestion * If a "custom layout" was used, use that code type * If no custom layout was used, SG Inside, Hybrid=Yes is assumed | SG Position | Hybrid Printing? | Level + ECL | Max Length | | ----------- | ---------------- | ----------- | -------------- | | Inside | No | `v4` + `Q` | `46` (default) | | Outside | No | `v3` + `L` | `53` | | Inside | Yes | `v4` + `H` | `34` | | Outside | Yes | `v4` + `L` | `78` | To calculate the maximum length of the `extended-id` allowed for your upload: 1. Take the max length as indicated in the table above, or from the workorder 2. Subtract the length of the prefix before your extended id: * For default code spaces - Use `20`, e.g. `https://xxxx.st4.ch/` * For custom domains, use the length of your domain + `prefix` + `https://` (8) 3. Subtract 1 for the dividing `/` For example, for a standard code, non-hybrid: > 1. The max length is `46` > 2. Subtract `20` for the code space domain, e.g. "https://xxxx.st4.ch/" > 3. Leaving a max length of `26` ## Additional Information ---- ### Extended ID Format Rules In addititon to the length check performed above, some standard rules are applied to the extended ID. In normal useage these rules are unlikely to be violated. | Rule | Value | Remarks | | ---------------- | --------------------------------- | ------------------------------------------------------------ | | Maximum Length | `100` | Absolute max length of any extended id. | | Content (GS1) | `a-z`,`A-Z`, `0-9`, `-`, `_`, `/` | GS1 values (such as GTIN) are checked against the GS1 spec. | | Content (Custom) | `a-z`, `A-Z`, `0-9`, `-`,`_` | Custom codes follow the same rules as the `compact-12` spec. | --- // File: build-with-scantrust/rest-api/async-scm-data-upload ## Overview This document covers the process of uploading SCM data to the Scantrust API to be processed **asynchronously**. To upload data synchronously, see section [Upload SCM Data (SYNC)](/docs/build-with-scantrust/rest-api/scm-data-upload) ## UAT token permissions The UAT token needs to have access to the following permissions: - codes_view - scm_bulk_edit - scm_code_edit - product_view The UAT token must be set in the header fields of all requests as described in [Authentication & Tokens](/docs/build-with-scantrust/rest-api/authentication-and-tokens#using-the-uat-token). ### Components - **Upload handler:** Formats, pre validates and uploads the data. - **Endpoint:** on the server, that accepts a batch of records. - **Status check:** Check the job status ### Prerequisites There are 3 main prerequisites: 1. **Brand owner/SCM User account on the Scantrust portal:** Scantrust will provide a developer test-account as well as a production account. 2. **A campaign that is setup to include the desired SCM fields:** - Example of SCM fields: production_date, intended_market, rfid, case_number.. - **Please note:** SCM fields not included in the campaign will be discarded by the system. 3. **Valid codes:** for testing; from a work order for a product that is included in the campaign, which has valid codes. ### Constraints In order to upload information for codes, constraints must be chosen to select the desired codes to upload data for. There are 3 ways to determine constraints: 1. The constraint could be extended_id (the unique message each code holds). 2. The constraint can also be set to serial_number if they are set on the codes. 3. SCM data can also be used as constraints: - Codes with RFID tags can be uploaded by key ‘rfid’ and value of each tag. - Codes with a Logistic Unit can be updated based on the unit. Multiple constraints can be set for one upload. ### Date Format The date format for SCM fields of type “Date” should be be **`YYYY-MM-DD`**. Other formats will be accepted and saved as-provided. However, this will result in issues displaying the data in the portal, and using the online data editor. If you wish to store date data in other formats, please use the **text** format ## Upload Handler The upload handler will communicate with the API endpoint, handle the data to be uploaded, and processes the response from the server. The workflow is split up in the below steps: 1. Pre-validate data to be uploaded 2. Format data to be uploaded to the specified JSON structure 3. Upload JSON data to the API 4. Process the response 5. Check the job status ### Pre-Validation of uploaded file It is recommended to pre-validate the data to be uploaded. This prevents unnecessary calls to the API. Following pre-validation should be done: 1. Format Checking: - Verify the data constraints to be either 'extended_id' and/or the desired SCM key. 2. Preliminary Error Checking: - Verify that no constraint value is duplicated. - Verify that no constraint value is blank. ### Format data to be uploaded Data must be uploaded using JSON as the format. The API will accept a maximum of 5 constraints, with a maximum of 1K values. Data must be split into batches of items that contain the same SCM data. It is recommended to keep a log file containing the keys/batch # of previously uploaded items so they can be skipped when uploading. This prevents items from getting uploaded twice if the API intercepts a defective item in a specific batch. #### General flow 1. Process the data and create an array of JSON objects 2. Create batches based on SCM data to upload 3. Ignore previously uploaded rows 4. Convert all values to strings 5. Send request 6. Send a request and save the constraint values as 'uploaded' in a logfile: - Subsequent runs should ignore all keys that are in the 'uploaded' file 7. Check the status based on the returned transaction ID ## API Design /api/v2/scm/upload/async/ Posting data to this endpoint will create an ASYNC server job that can edit any code in your company to contain the desired SCM data. The endpoint will return a **task_id** which can be used to check the status of the job. | Attribute | Required? | Type | Description | | :---------- | :-------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | constraints | required | json | Define the constraints which are used to lookup the codes. Constraints must be present in the `code` as field/SCM field. Match will be CASE SENSITIVE and EXACT.

**Example uses:**
- Use the rfid SCM field as a constraint
- Use the extended_id as a constraint

**Maximum 5 different constraints allowed, containing 1K items**

**Disallowed constraints:**
- message (must be passed as extended_id)
- product/product_id (not allowed)
- campaign/campaign_id (optional outside constraints) | | scm_data | required | json | List of scm data in key/value pairs, to upload to individual codes. Each key needs to reference the key of the SCM field as defined the campaign. The names of the keys can be confirmed by downloading the template.csv file from the SCM T&T tab for the campaign.

**Special keys:**
-product (specify a product SKU/ID)
- activation_status (0=inactive, 1=active, 2=blacklisted)
- blacklist_reason

**Disallowed keys:**
- extended_id/serial_number/message (can not be changed)
- product_id (must be passed as product)
- status (must be passed as activation_status) | | campaign | optional | int | ID of a campaign. If passed, system checks if all constraints’ scm-keys exist in the campaign. | | reference | optional | string | Human readable name for task grouping. Tasks can be grouped using this field. | **_Body Parameters POST (application/json)_** ```json { "constraints": { "rfid": ["rfid1", "rfid2", "rfid3"], ... }, "scm_data": { "client_custom_field": "some_val", ... }, "campaign": 11, "reference": "SCM upload 11202020-10" } ``` In this example all codes containing the SCM field `rfid` with value `rfid1`, `rfid2` or `rfid3` will be updated to have the SCM data `"client_custom_field": "some_val"`. The API will check if `client_custom_field` is a valid field for campaign `ID 11` **_Response (200): Status OK_** If the post is succesfull, the API will return a `task_id` which can be used to lookup the job status. ```json { "task_id": "your_task_uuid" } ``` **_Response (400) : Invalid Data Format_** An exception will be raised (with an appropriate error message) if the posted format/values are not valid: Example: ```json { "campaign": ["Incorrect type. Expected pk value, received str."], "scm_data": { "extended_id": "Invalid key name", "status": "Invalid key name, use 'activation_status' instead" }, "constraints": { "message": "Invalid constraint name, please use 'extended_id' instead" } } ``` ## Special Cases Special SCM fields can be used to alter the code and internal functions (assign a product, activation status, LU assignment, ...) See docs: [Special SCM Fields](/docs/build-with-scantrust/rest-api/special-scm-fields) ## Task Status Checks When posting an async SCM upload, the task will be processed in the background. You will need to check back later to see the status of the task based on the returned `task_id`. Checks might need to happen multiple times if the status of the task is still `pending`. Jobs will be processed as soon as possible but might experience delay in busy periods. ## API Design /api/v2/scm/tasks/ ### Task states A task can have 4 different states: - **pending** (The task is in the queue and awaits processing) - **in-progress** (The task is currently being processed) - **complete** (The task has been completed, values can now be interpreted) - **failed** (The task has failed, the errors can be interpreted) ### GET: /api/v2/scm/tasks/\{id\}/ Gets information for a specific task. **_Response (200): Status OK_** ```json { "id": "efe7dcd5-aa25-4fc1-b1d3-38640b86e593", "reference": "", "state": "complete", "codes_affected": 322, "created_by": 1638, "created_at": "2019-08-22T16:00:11.449543Z", "started_at": "2019-08-22T16:00:11.514456Z", "completed_at": "2019-08-22T16:00:11.526948Z", "details": { "constraints": { "rfid": "test_rfid" }, "scm_data": { "intended_market": "test" } } } ``` It is advised to compare the `codes_affected` with the number of items that is expected to be updated. ### GET: /api/v2/scm/tasks/ List of all created tasks by user Filters may be added by appending the path `?filter_name=value` e.g. `/api/v2/scm/tasks/?state=pending` Filter Fields: - **state**: pending, in-progress, complete, failed - **created_at**: datetime - **reference**: string value **_Response (200): Status OK_** Example response (paginated result): ```json { "count": 2, "next": null, "previous": null, "results": [ { "id": "6913d938-d6c3-4139-97d1-27c59c113ef0", "state": "complete", "reference": "", "codes_affected": 777, "created_by": 1638, "created_at": "2019-08-22T16:00:12.996409Z", "started_at": "2019-08-22T16:00:13.057840Z", "completed_at": "2019-08-22T16:00:13.070875Z" }, { "id": "ef183d35-cc7c-4925-a95a-906c02e291ef", "state": "complete", "reference": "", "codes_affected": 228, "created_by": 1638, "created_at": "2019-08-22T16:00:12.218396Z", "started_at": "2019-08-22T16:00:12.277734Z", "completed_at": "2019-08-22T16:00:12.289489Z" } ] } ``` ### POST: /api/v2/scm/tasks/ | Attribute | Required? | Type | Description | | :-------- | :-------- | :----------- | :----------------------------------------------------------------------------------------------------- | | task_ids | required | list(string) | List of task_ids to retrieve from the API.

**Example:**
`['taskID1', 'taskID2']` | (For Example Response See List view) ### GET: /api/v2/scm/task-groups/\{reference\}/ Get a group of tasks based on reference `ref1` **_Response (200): Status OK_** ```json { "reference": "ref1", "tasks_count": 3, "codes_affected": 6, "completed": true, "state_stats": { "pending": 0, "in-progress": 0, "complete": 3, "failed": 0 }, "started_at": "2019-08-22T16:00:12.277734Z", "completed_at": "2019-08-22T16:00:12.289489Z" } ``` --- // File: build-with-scantrust/rest-api/authentication-and-tokens import useBaseUrl from '@docusaurus/useBaseUrl'; As mentioned in the getting started section, there are 2 ways of authenticating with the REST API: 1. **User Authorization Token (UAT):** This method allows for finer-grained access control and is preferred over the username/password authentication method. When using a UAT, the client application can directly access the endpoint without having to log in first. This method also provides added security since the UAT token only has the access permissions assigned to it at the time of creation. The assigned permissions limit the token's capabilities and make it more secure. Also, UAT tokens can be more easily revoked, making them ideal for testing purposes. 2. **Username/Password Credentials:** This authentication method grants the client application access to all APIs the user has access to. As such, it is highly advisable to use a user with limited permissions for security purposes. The logged-in session can access any API that is available to the user account it is attached to. When using this method, the client application must provide a JWT token in the HTTP header of each request to authenticate the user. UAT is preferred due to its granularity and added security features. To test if access is working, you can access ```GET https://api.staging.scantrust.io/api/v2/me/``` ### Obtaining a User Authorization Token (UAT) 1. Log on to the Enterprise Portal as a **company admin** 2. From the left hamburger menu, click on your user name (below the heading **me**) ![uat_1](/doc-img/uat-1.png) ![uat_2](/doc-img/uat-2.png) 3. Click the (+) icon next to **`USER AUTHORIZATION TOKENS`** ![uat-3](/doc-img/uat-3.png) 4. Select the date until which this token is valid 5. Select the access rights you would like to give to this token. Below are some of the available permissions: - brand_create - product_create - scans_download - scm_bulk_edit - scm_code_edit ![uat-4](/doc-img/uat-4.png) ![uat-5](/doc-img/uat-5.png) ### Using the UAT token With the UAT token, instead of having to request a JWT token first, the UAT token obtained from the portal can be **directly** used in the header: ```POST HEADER: "Authorization": "UAT {token value}"``` ----------------------------------------------- ### Obtaining a JWT token (DEPRECATED) To call private API endpoints using a JSON web token (JWT), the token must be included in the POST header. This means that a login endpoint must be called first to authenticate the user. If the login is successful, the API will respond with a JWT token that can be used for future API calls. The JWT is then sent in the request header as follows: ```json headers={"Authorization": "JWT " + token} ``` #### POST: /api/v2/auth/jwt/ Log in a user and return a JSON Web Token (JWT). | Attribute | Required? | Description | | :---------------- |:-------------------- | :--------------------------------- | | email | required | The email address of the Brand Admin/SCM User to log in | | password | required | The password of the user | ##### Body Parameters POST (application/json) ```json { "email": "user@example.com", "password": "p@sSw0rd" } ``` ##### Response (200): Status OK When the user has successfully logged in following response will be presented: ```json { "token": "example_web_token" } ``` ##### Response (400): Invalid user or password Response when the user is unable to login: ```json { "non_field_errors": [ "Unable to login with provided credentials." ] } ``` --- // File: build-with-scantrust/rest-api/code-data-download ## Prerequisites ### UAT token permissions The UAT token needs to have access to the following permissions: - `codes_view` The UAT token must be set in the header fields of all requests as described in [Authentication & Tokens](/docs/build-with-scantrust/rest-api/authentication-and-tokens#using-the-uat-token). ## Download Code Steps 1. Call the `/codes/download` endpoint to generate the code document 2. Check the document generation status with `/documents/`, `document_key` is returned from the last API call. 3. Generate download link with `/documents//get-download-link`. 4. Open the generated link in browser, or use python package `requests`, or download the document with generic download tools like `curl`, `wget`. ## API references ### Generate code document **GET** `/api/v2/codes/download/` #### parameters | Parameter | Required? | Description | Example | | :------------ | :-------- | :-------------------------------------------------------------- | :--------------------------------------------------------- | | campaign | optional | Campaign ID | 1234 | | brands | optional | Brand ID | 1234 | | products | optional | Product ID (not SKU) | 1234 | | workorder | optional | Workorder ID | 1234 | | activated_at | optional | SCM activation datetime (ISO format) or range (comma seperated) | 2018-12-21, 2018-12-21T00:00:00Z, or 2018-01-01,2019-01-01 | | updated_at | optional | SCM update datetime (ISO format) or range (comma seperated) | 2018-12-21, 2018-12-21T00:00:00Z, or 2018-01-01,2019-01-01 | | status | optional | inactive=0, active=1, blacklisted=2 | 0, 1, or 2 | | blacklisted | optional | inactive=0, active=1, blacklisted=2 | true or false | | status | optional | inactive=0, active=1, blacklisted=2 | 1 | | scm\_\* | optional | Any SCM field as parameter, scm field value as value | scm_case_number=1234 | | serial_number | optional | serial number of the code | abcdefgh | | extended_id | optional | extended ID of the code | abcdefghijkl | | activated_by | optional | ID of the user that activated the codes | 1234 | #### API call example - **GET** /api/v2/codes/download/?workorder=1234 - **GET** /api/v2/codes/download/?campaign=1234 - **GET** /api/v2/codes/download/?activated_at=2024-01-01,2024-02-01&scm_product_country=US&campaign=1234 #### Response example ```json { "document": { "key": "pq2sd90uh269", "task": "b'rq:job:2a175027-ad94-41d2-81f1-c57365391e76'" } } ``` #### How to find your campaign ID 1. Log on to the portal and click on CAMPAIGNS in the left hamburger menu 2. On the campaign for which you want to download the data, click the DASHBOARD icon 3. When the dashboard opens, the URL in the browser will show `https://portal.scantrust.com/#/dashboard?tabIndex=0&campaignId=126&page=1` 4. The campaign-id needed is in the value of the parameter `campaignId=` #### How to find your campaign SCM Field Keys (optional) 1. Log on to the portal and click on CAMPAIGNS in the left hamburger menu 2. On the campaign for which you want to download the data, click the **OPTIONS** icon 3. Click the **SCM T&T** tab 4. From the right pabel, copy the keys of each of the active fields (in brackets behind the label). 5. Use these keys to filter the code-search if required ### Check document generation status **GET** `/api/v2/documents/` **Path Parameter:** `document_key` should be extracted from the `/api/v2/codes/download/` API call response. #### Response example ```json { "key": "pq2sd90uh269", "description": "", "status": "complete", "category": "code", "doctype": "search-result", "related_id": null, "parameters": { "workorder": "10917" }, "error_data": {}, "file_size": 959, "row_count": 50, "expires_at": "2024-07-18T08:57:54.448174Z", "is_expired": false, "created_at": "2024-07-16T08:57:54.012068Z", "company": 7472, "owner": 11014, "created_by": 11014 } ``` ### Generate download link **GET** `/api/v2/documents//get-download-link` **path Parameter:** `document_key` should be extracted from the `/api/v2/codes/download/` API call response. The response will contain a secured download link to the search result CSV file: #### Response Example ```json { "link": "https://api.staging.scantrust.io/api/v2/documents/download/yNKtdRwgAdLYUTKMLSOYkJHDGgSBLxUS/" } ``` ## Download the CSV file When that link is downloaded, the server will send a response as a `302 - redirect` The response sends the client to the CSV file in the Scantrust Amazon S3 bucket > **Note:** > After following the link, the download link becomes invalid. > Please ensure the download happens as soon as possible after generating the link > **Note:** > > - the CSV file is compressed in **zip-format** and needs to be unpacked > - the CSV file is formatted as **comma-separated double-quoted with header**. **_Response (200): Status OK_** Example CSV: ```csv "extended_id","serial_number","brand","product","sku","status","blacklist_reason","scm_updated_by","scm_updated_at","activated_by","activated_at","workorder_id","farm_name","organic","harvest_date","sent_to_plant","plant","sell_by_date","temp_humid_in_ph","shipped_from_plant","arrived_in_dc","dc_name","temp_humid_in_dc","shipped_from_dc","case_number" "D7BDCA03B80610826432DAD3","","American Pork","Pork","259052703982","active","none","","","","","3413","","","","","","","","","","","","","" "DE8429F00C043SMPHGG3SCE54D3DBE2","","American Pork","Pork","259052703982","active","none","","2019-06-14T09:35:08.207234+00:00","jelle@test.com","2020-02-13T08:43:54.256017+00:00","3414","","","","","","","","","","","","","" "F628FC48BC043SMPHGG3S4E54681B26","","Queen Victoria","Lettuce","060556200408","active","none","j@test.com","2018-06-14T20:03:33.627564+00:00","","","3414","Aliso Farms","No","2018-06-14","2018-06-14","Packaging Plant 1","2018-06-14","36°F 95%","2018-06-15","2018-06-15","UST","36° 95%","2018-06-16","52C3F83EAA043SMPHGG3S9E4483193F" "70E19832F1043SMPHGG3S64644B7B66","","American Pork","Pork","259052703982","active","none","j@test.com","2018-06-13T23:21:40.214562+00:00","","","3414","Aliso Ranch","No","2018-06-14","2018-06-14","Processing Plant 1","2018-06-21","36°F 85%","2018-06-15","2018-06-15","UST","36°F 85%","2018-06-15","FD27177428043SMPHGG3S2824AA697A" "4324CAC06E043SMPHGG3SF124F8BADE","","Queen Victoria","Lettuce","060556200408","active","none","scmuser@test.com","2018-05-26T17:14:12.055232+00:00","","","3414","ST Test","","","","","","","","","","","","" ``` For a glossary of all the code fields see [Code Data Glossary](/docs/build-with-scantrust/rest-api/code-data-fields) --- // File: build-with-scantrust/rest-api/code-data-fields These fields are returned by the **download codes** API. See [Download Code Data](/docs/build-with-scantrust/rest-api/code-data-download) for more details on how to retrieve the codes. - **extended_id**: extended_id as embedded in the QR message - **serial_number**: random serial number as set on each code. can be customer-assigned - **brand**: Brand ID of the brand which was assigned to this product - **product**: Product ID of the product - **sku**: Product SKU (stock keeping unit) - **status**: 0-inactive, 1-active, 2-blacklisted - **blacklist_reason**: when a code is blacklisted, a reason is assigned. These reasons can be - **scm_updated_by**: user email of the user who updated the SCM data of this code - **scm_updated_at**: ISO DateTime when the SCM data was updated - **activated_by**: user email of the user who activated this code - **activated_at**: ISO DateTime when the code was activated - **workorder_id**: Workorder used to create this code - **farm_name**: (example) SCM field with key `farm_name` as defined in the campaign options - **organic**: (example) SCM field with key `organic` as defined in the campaign options - **case_number**: (example) SCM field with key `case_number` as defined in the campaign options --- // File: build-with-scantrust/rest-api/error-handling ## Introduction When dealing with a web API such as the Scantrust API, it is important to deal with errors accordingly. Several industry standard errors may occur during calls to our API. This document summarizes those errors and how to deal with them. Traditionally each error response has a status code and a response body (additional text information). ## Status code overview **Success codes - No error** | Status Code | Short | Description | | ----------- | ------------------------ | ------------ | | 200 | OK | Request processed successfully | | 201 | CREATED | Request processed successfully and created an instance | | 204 | NO CONTENT | Request processed successfully, no body returned | | 301 | MOVED PERMANENTLY | Permanent redirect | | 302/307 | MOVED TEMPORARILY | Temporarily redirect | **Error codes - Client side** | Status Code | Short | Description | | ----------- | ------------------------ | ------------ | | 400 | BAD REQUEST | Issue with input data/validation | | 401 | UNAUTHORIZED | Authentication related issue | | 403 | FORBIDDEN | Insufficient permissions | | 404 | NOT FOUND | Page does not exist | | 406 | CONFLICT | Known API error | | 429 | TOO MANY REQUESTS | Request throttled | **Error codes - Server side** | Status Code | Short | Description | | ----------- | ------------------------ | ------------ | | 500 | SERVER ERROR | Server side issue | | 502 | BAD GATEWAY | Routing issue | | 503 | SERVICE UNAVAILABLE | Server down | | 504 | GATEWAY TIMEOUT | Request timeout | ## Standard API errors ### 4xx errors 4xx errors are errors caused by the client side. The server will usually respond with a content body explaining in detail what went wrong with this request. These errors need to be handled on the client side by a manual review process or automatically by having a system in place that mitigates specific situations. If a 400 is thrown, your request was not processed fully by the Scantrust API and needs to be resubmitted with changes applied. **400 - BAD REQUEST** A very common status that indicates the client has sent bad data. - Invalid format (e.g. missing fields that are required, ...) - Validations we have put in place for the expected data failed (e.g. an invalid object is referenced) - Invalid data type (e.g. strings instead of integers, wrong date formats, ...) Example of a standard validation error response: ``` { "brand": [ "Brand is required." ], "name": [ "Description must be at least 10 characters" ], "sku": [ "SKU must be unique" ] } ``` **401 - UNAUTHORIZED** The user is either not logged in, or the authorization token has not been sent or is invalid. This usually indicates there is something wrong with the login process. **403 - FORBIDDEN** User is logged in, but their account's role does not allow them to call this api - i.e. they don't have permissions. **404 - NOT FOUND** The URL you requested does not exist. In some cases, the identifier of the object requested will be a part of the URL. A 404 can then be thrown if a specific requested object is not available in the current context as well (e.g. when dealing with multiple companies). **409 - CONFLICT** This error is generally used when the application needs to know a specific error (such as a query timeout) occurred, and already knows how to respond to it. ``` { "error_code": "8000", "error_message": "SQL Timeout" } ... ``` **429 - TOO MANY REQUESTS** Our rate limiting was triggered. If hitting this limit, you are most likely implementing something incorrectly. More information about rate limits can be found here [API Rate Limits](/docs/build-with-scantrust/rest-api/rate-limits/). ### 5xx errors A server side issue occurred. These issues can not be fixed by the client and should be reported to Scantrust support. Any request sent will have to be processed again later so you should always log and retry later in this case. --- // File: build-with-scantrust/rest-api/gettingstarted-with-rest The Scantrust Admin Rest API is the default way in which all the apps, portal and mobile landing pages communicate with the backend. In order to access this API, developers need to obtain the following: 1. A valid activated company account on the [Scantrust Enterprise Portal](/docs/scantrust/portal) 2. A **user** within that company with sufficient access rights to access the required information. Typically this will be a user with at least the **SCM User Role** in order to do SCM uploads, but other configurations with different access rights are also available (SCM Admin, Brand Manager etc.). 3. That user must then create a [User Authorization token](/docs/build-with-scantrust/rest-api/authentication-and-tokens/). Using a **User Authorization Token** is recommended as it gives fine-grained control over what in information can be accessed by the automation. 4. This **User Authorization token** must then be used for all requests to the REST API. ## Endpoint and Features The public-facing REST API endpoints can be accessed at https://api.staging.scantrust.io/ for testing. For production, use https://api.scantrust.com/. The admin api can be used for several common use-cases: 1. [Creating Products and assigning codes to those products](/docs/build-with-scantrust/rest-api/product-upload) 2. [Updating other code-information such as serial number and activation status](/docs/build-with-scantrust/rest-api/scm-data-sync-or-async) 3. [Assign data to SCM fields to enable track and trace](/docs/build-with-scantrust/rest-api/scm-data-sync-or-async) 4. [Generating Codes with Work Orders](/docs/build-with-scantrust/rest-api/workorder-create) 5. [Upload your own custom codes](/docs/build-with-scantrust/rest-api/upload-codes) 6. [Download Scan Data](/docs/build-with-scantrust/rest-api/scan-data-download) 7. [Download Code data (of activated / blacklisted codes)](/docs/build-with-scantrust/rest-api/code-data-download) ## Network details For more restricted enterprise environments, see the [Network Access Details](/docs/build-with-scantrust/rest-api/network-access) on how to configure the appropriate network access. ## Code examples We have also included one Javascript code example to get you started: - [Javascript (node) code example](/docs/build-with-scantrust/rest-api/samples-javascript) Should you need other samples, please [contact support](mailto:support@scantrust.com) to ask one of our friendly developers for help. :) ## Error handling All implementations need to take care of handling the following HTTP error codes: Sure, below are the recommended handling by the REST client program for each of these HTTP response codes: | HTTP Response Code | Summary | Handling by REST Client Program | | --- | --- | --- | | 200 | The request was successful | Parse and utilize the data received in the response by the program. | | 201 | The request was successful and a new resource was created | Parse and utilize the data received in the response by the program, and then us the newly created objectaccordingly. | | 400 | The request was malformed or invalid | Handle the error scenario as returned in the body of the error message. Log and inform the admin to correct the request. It's important to note that the 400 returns a BODY which states the reason of the error. Logging this is important in troubleshooting. Also note that Scantrust records these 400 errors and you can contact Scantrust Support to get further information why your request was invalid| | 401 | Authentication credentials of the the UAT token in the request header were missing or incorrect | Handle the error scenario in the program, log and report to the admin to update the UAT token with valid credentials in the request header. | | 403 | The user does not have sufficient permissions to access the requested resource | Handle the error scenario in the program and contact the administrator to check the UAT token validity and access rights in the program. | | 404 | The requested resource could not be found on the server | Handle the error scenario in the program and prompt the user to check their input parameters or retry the request later. | | 429 | The user has exceeded a rate limit | Handle the error scenario in the program and wait until the retry-after interval given in the response header then retry the request. | | 500 | An error occurred on the server while processing the request | Handle the error scenario in the program, log and notify the administrator or retry the request later. | | 503 | The server is currently unavailable | Handle the error scenario in the program and log and notify the administrator to retry the request later. | --- // File: build-with-scantrust/rest-api/ingestion-add-sids import useBaseUrl from '@docusaurus/useBaseUrl'; ## Overview This method enables direct uploading of SID codes, bypassing template and workorder settings. This method is primarily intended for specific use cases and is not the recommended approach for most scenarios. The more common practice is to upload SIDs using a template. **Supported code types:** - Serialized Identifiers (SID) codes (Automatic) **Restrictions:** - Workorder settings are ignored. For more information about different upload methods, pre-print / post-print, please refer to the [overview](/docs/build-with-scantrust/rest-api/ingestion-overview). ## API Design ## Add SIDs ### POST /api/v2/ingestion/codes/add-sids/ **Overview** Calling this endpoint will start the code upload (ingestion) process. The ingestion process is an async process which must be validated upon completion using the record key from the response. Please refer to the [Ingestion Record documentation](/docs/build-with-scantrust/rest-api/ingestion-record-api) to see how to retrieve ingestions and check status. **Field Description** | Field | Type | Description | |---|---|---| | mode | string [api, file] (Optional) | Default = api, Defines the upload mode. | | filetype | string [csv, json] (Optional) | Default = CSV, only applicable when mode = file | | default_scm_data | json (Optional) | SCM data field including product/activation_status/blacklist_reason/… Works the same as the SCM upload endpoints. Data here will be used as the default for each code (overridden by what is in the code record) | | codes | list - json (Optional*) | List of code records, may include SCM data / product etc and must include ‘id’ | | allow_posted_duplicates | bool (Optional) | Don’t error on duplicate check but ingest first entry and ignore next duplicates (within posted IDs) | | id_format | string [gs1, default] (Optional) | Default=default. ID Format for upload | | url_prefix | string (Optional) | Sets URL prefix | | printing_partner | int (Optional) | Overrides/sets printing partner. | optional*: Only required when mode=API **Validations** Some fields are validated directly upon the API call and others are validated during processing in the background. **Validated upon API call (400 BAD REQUEST - response, ingestion aborted)** - API mode - - Code ID (must exist for every row), codes can not be empty - - SCM data for codes must be valid - - Duplicate checks in the codes field - File Mode - - Codes can not be passed directly - All fields are separately checked for valid input **Validated during processing (200 OK, check status using record API):** - All code ID formats - Duplicate checks within the system + file - All SCM data / products / related objects / ... **Example payload** ```json { "codes": [ { "id": "c/01/abcde/22/dfge", "pallet_nr": "PA01" } ], "default_scm_data": { "activation_status": 1 }, "mode": "api", "url_prefix": "https://yourdomain.com/", "id_format": "gs1" } ``` **Example Response (mode API) 200 OK** ```json { "record_key": "3k59jyrwznhp" } ``` **Example Response (mode S3) 200 OK** ```json { "post_data": { "url": "https://st-media-dev.s3.amazonaws.com/", "fields": { "Content-Type": "text/csv", "key": "private/c/1/ingestion/code/p37bk370jurt.csv", "AWSAccessKeyId": "AKI...", "policy": "eyJ...", "signature": "yc..." } }, "record_key": "p37bk370jurt" } ``` **Note**: When using mode: file, the file must now be uploaded to the URL provided directly before calling /process-from-file/. Please refer to the [file upload documentation](/docs/build-with-scantrust/rest-api/ingestion-record-file-upload) for more information. ## Next steps 1. When using mode = file, continue uploading the file using the data returned from the API and call /process-from-file/ as described in the [file upload documentation](/docs/build-with-scantrust/rest-api/ingestion-record-file-upload) 2. Check the ingestion status using the [Ingestion Record API](/docs/build-with-scantrust/rest-api/ingestion-record-api) 3. Use your uploaded codes --- // File: build-with-scantrust/rest-api/ingestion-add-to-workorder import useBaseUrl from '@docusaurus/useBaseUrl'; ## Overview This method enables you to add codes to an existing workorder. The workorder can be either a pre-print or post-print workorder. The uploaded codes will adopt the workorder's settings. The workorder must be created prior to the upload. **Supported code types:** - Serialized Identifiers (SID) codes (pre-print + post-print) - Secure Codes (SSC) (pre-print + post-print) **Restrictions:** - A workorder must be created manually prior uploading - The workorder download will not be re-generated (post-print) - Printing Partner is not notified (post-print) For more information about different upload methods, pre-print / post-print, please refer to the [overview](/docs/build-with-scantrust/rest-api/ingestion-overview). ## API Design ## Upload codes to workorder ### POST /api/v2/ingestion/codes/add-to-workorder/ **Overview** Calling this endpoint will start the code upload (ingestion) process. The ingestion process is an async process which must be validated upon completion using the record key from the response. Please refer to the [Ingestion Record documentation](/docs/build-with-scantrust/rest-api/ingestion-record-api) to see how to retrieve ingestions and check status. **Field Description** | Field | Type | Description | |---|---|---| | mode | string [api, file] (Optional) | Default = api, Defines the upload mode. | | filetype | string [csv, json] (Optional) | Default = CSV, only applicable when mode = file | | default_scm_data | json (Optional) | SCM data field including product/activation_status/blacklist_reason/… WOrks the same as the SCM upload endpoints. Data here will be used as the default for each code (overridden by what is in the code record) | | codes | list - json (Optional*) | List of code records, may include SCM data / product etc and must include ‘id’ | | ingestion_key | **string** | Ingestion key found on existing pre_print/post_print workorders. | | allow_posted_duplicates | bool (Optional) | Don’t error on duplicate check but ingest first entry and ignore next duplicates (within posted IDs) | | id_format | string [gs1, default] (Optional) | Default=default. ID Format for upload | **Validations** Some fields are validated directly upon the API call and others are validated during processing in the background. **Validated upon API call (400 BAD REQUEST - response, ingestion aborted)** - API mode - - Code ID (must exist for every row), codes can not be empty - - SCM data for codes must be valid - - Duplicate checks in the codes field - File Mode - - Codes can not be passed directly - All fields are separately checked for valid input **Validated during processing (200 OK, check status using record API):** - All code ID formats - Duplicate checks within the system + file - All SCM data / products / related objects / ... **Example payload** ```json { "codes": [ { "id": "c/01/abcde/22/dfge", "pallet_nr": "PA01" } ], "default_scm_data": { "activation_status": 1 }, "mode": "api", "ingestion_key": "wi-wv23833wgkrtgt7", "id_format": "gs1" } ``` **Example Response (mode API) 200 OK** ```json { "record_key": "3k59jyrwznhp" } ``` **Example Response (mode S3) 200 OK** ```json { "post_data": { "url": "https://st-media-dev.s3.amazonaws.com/", "fields": { "Content-Type": "text/csv", "key": "private/c/1/ingestion/code/p37bk370jurt.csv", "AWSAccessKeyId": "AKI...", "policy": "eyJ...", "signature": "yc..." } }, "record_key": "p37bk370jurt" } ``` **Example Response invalid workorder 400 BAD REQUEST** ```json { "ingestion_key": [ "Invalid ingestion key." ] } ``` **Note**: When using mode: file, the file must now be uploaded to the URL provided directly before calling /process-from-file/. Please refer to the [file upload documentation](/docs/build-with-scantrust/rest-api/ingestion-record-file-upload) for more information. ## Next steps 1. When using mode = file, continue uploading the file and call /process-from-file/ as described in the [file upload documentation](/docs/build-with-scantrust/rest-api/ingestion-record-file-upload) 2. Check the ingestion status using the [Ingestion Record API](/docs/build-with-scantrust/rest-api/ingestion-record-api) 3. Use your uploaded codes --- // File: build-with-scantrust/rest-api/ingestion-from-template import useBaseUrl from '@docusaurus/useBaseUrl'; ## Overview This method utilizes an ingestion template provided by Scantrust engineers during the onboarding process to upload codes. It's the preferred method for uploading codes to the Scantrust system. **Supported code types:** - Serialized Identifiers (SID) codes (pre-print) - Secure Codes (SSC) (pre-print) **Restrictions:** - One upload generates 1 workorder - Specific settings will be inherited from the template and can not be set directly For more information about different upload methods, Pre Print / Post Print, please refer to the [overview](/docs/build-with-scantrust/rest-api/ingestion-overview). ## API Design ## Create Ingestion Record from template ### POST /api/v2/ingestion/codes/create-from-template/ **Overview** Calling this endpoint will start the code upload (ingestion) process. The ingestion process is an async process which must be validated upon completion using the record key from the response. Please refer to the [Ingestion Record documentation](/docs/build-with-scantrust/rest-api/ingestion-record-api) to see how to retrieve ingestions and check status. **Field Description** | Field | Type | Description | |---|---|---| | mode | string [api, file] (Optional) | Default = api, Defines the upload mode. | | filetype | string [csv, json] (Optional) | Default = CSV, only applicable when mode = file | | default_scm_data | json (Optional) | SCM data field including product/activation_status/blacklist_reason/… WOrks the same as the SCM upload endpoints. Data here will be used as the default for each code (overridden by what is in the code record) | | codes | list - json (Optional*) | List of code records, may include SCM data / product etc and must include id | | template | **string (Template Key)** | Ingestion Template Key, provided by Scantrust | | printing_partner | int (Optional) | Overrides/sets printing partner. Required for SSC WO’s. | optional*: Only required when mode=API **Validations** Some fields are validated directly upon the API call and others are validated during processing in the background. **Validated upon API call (400 BAD REQUEST - response, ingestion aborted)** - API mode - - Code ID (must exist for every row), codes can not be empty - - SCM data for codes must be valid - - Duplicate checks in the codes field - File Mode - - Codes can not be passed directly - All fields are separately checked for valid input **Validated during processing (200 OK, check status using record API):** - All code ID formats - Duplicate checks within the system + file - All SCM data / products / related objects / ... **Example payload** ```json { "codes": [ { "id": "abc1234567810", "pallet_nr": "PA01" } ], "default_scm_data": { "activation_status": 1 }, "mode": "api", "template": "template-1" // Template Key } ``` **Example Response (mode API) 200 OK** ```json { "record_key": "3k59jyrwznhp" } ``` **Example Response (mode S3) 200 OK** ```json { "post_data": { "url": "https://st-media-dev.s3.amazonaws.com/", "fields": { "Content-Type": "text/csv", "key": "private/c/1/ingestion/code/p37bk370jurt.csv", "AWSAccessKeyId": "AKI...", "policy": "eyJ...", "signature": "yc..." } }, "record_key": "p37bk370jurt" } ``` **Example Response invalid template 400 BAD REQUEST** ```json { "template": [ "Invalid pk \"100\" - object does not exist." ] } ``` **Note**: When using mode: file, the file must now be uploaded to the URL provided directly before calling /process-from-file/. Please refer to the [file upload documentation](/docs/build-with-scantrust/rest-api/ingestion-record-file-upload) for more information. ## Next steps 1. When using mode = file, continue uploading the file using the data returned from the API and call /process-from-file/ as described in the [file upload documentation](/docs/build-with-scantrust/rest-api/ingestion-record-file-upload) 2. Check the ingestion status using the [Ingestion Record API](/docs/build-with-scantrust/rest-api/ingestion-record-api) 3. Use your uploaded codes --- // File: build-with-scantrust/rest-api/ingestion-overview import useBaseUrl from '@docusaurus/useBaseUrl'; ## Overview Scantrust has been designed to efficiently manage a large volume of codes. As such, new codes are created asynchronously in the background through a workorder mechanism to ensure the system can support these quantities. The newly created codes can thereafter be downloaded in a zip archive, which are in the Scantrust Compact-12 format. The *Code Upload API* allows brand owners to upload files containing their unique identifiers in any format, as long as they meet the length and allowed characters requirements outlined by the Scantrust system (see below). GS1 identifiers are also supported. When using the Code Upload API, users can assign different products to each code and choose the SCM fields that apply. The code upload API can generate 2 types of codes: 1. **Serialized Identifiers (SID) codes:** these codes are scantrust QR codes _without_ the secure graphic. The brand owner can self-generate and download these codes and they do not require a printing partner. 2. **Secure Codes (SSC):** these codes contain the copy-protection secure graphic and require a printing partner with calibrated *equipment* and *substrate*. These codes are generated and assigned to an existing workorder (or uploaded using a template) with a secure graphic, which is then printed by a printing partner ## Pre Print VS Post Print VS Automatic When uploading SSC codes, you need to determine if the codes are uploaded after they have been printed (post print) or before (pre print). In general, Pre Print is the most common use-case. For SIDs, post print should be avoided and Pre Print can be selected even if codes are uploaded after printing. This is because we do not need calibrated equipment for such codes. **Pre Print** - Codes are uploaded before they are printed - All methods for uploading are supported - A workorder can exist in Pre Print mode but it can also be created automatically in several cases during the ingestion process **Post Print** - Codes are uploaded after printing - A workorder must exist in Post Print mode - Only the `add to workorder` method is supported **Automatic** - Only applicable when uploading using the `add-sids` method. - Limited as no workorder settings can be used ## 3 supported methods for uploading codes ### 1. Upload using an Ingestion Template (recommended) When using this method, a valid Ingestion Template is required. This template will be provided by a Scantrust engineer when onboarding your company. This template contains all settings required for an ingestion which makes the code upload itself very simple. The uploaded codes will be bundled in an automatically created workorder which is also supplied to your printing partner if applicable. [Documentation can be found here.](/docs/build-with-scantrust/rest-api/ingestion-from-template) **Supported code types:** - Serialized Identifiers (SID) codes (Pre Print) - Secure Codes (SSC) (Pre Print) **Restrictions:** - One upload generates 1 workorder - Post Print use-cases not supported ### 2. Add codes to workorder When using this method, a valid Pre Print or Post Print workorder is required. Such workorder needs to be created manually before uploading codes. When using the Post Print system, this is the only available method when uploading codes. A workorder will contain required printer settings which will be applied to your codes automatically. [Documentation can be found here.](/docs/build-with-scantrust/rest-api/ingestion-add-to-workorder) **Supported code types:** - Serialized Identifiers (SID) codes (Pre Print + Post Print) - Secure Codes (SSC) (Pre Print + Post Print) **Restrictions:** - A workorder must be created manually prior uploading - The workorder download will not be re-generated (Post Print) - Printing Partner is not notified (Post Print) ### 3. Add SIDs directly When using this method, SID codes can be added directly, without any template or workorder settings. Usually, using a Template (method 1) is recommended yet in some cases this method can be quick & useful when uploading your SID codes. [Documentation can be found here.](/docs/build-with-scantrust/rest-api/ingestion-add-sids) **Supported code types:** - Serialized Identifiers (SID) codes (Automatic) **Restrictions:** - One workorder per upload (Automatic mode) - No workorder settings can be applied ## Uploading Serialized Identifiers (SID) Codes ### Example CSV file with a header ``` id,product,pallet_number,intended_market abc12345,sku1,pal1,BE def12345,sku1,pal1,NL ghi12345,sku1,pal2,DE jkl12345,sku1,pal2,FR ... ``` - **required:** a column with header `id` containing the unique identifiers - each `id` must be between 6 and 36 characters. GS1 Identifiers are allowed to be longer. - each `id` can only contain valid characters (a-z, A-Z, 0-9, -, \_). For example: `aB1_3dZ97-x2` or `123abcd89XYZ` - regex for the id: `^[A-Za-z0-9_-]{6,36}$` - **optional** columns: - `product` containing a product-sku which already exists in the scantrust system - `activation_status` containing 0 (inactive), 1 (active) or 2 (blacklisted) - additional columns containing `scm fields` with the header as the scm key (ie. `pallet_number` etc.) ### Steps to upload your codes 1. Determine the code type (SID/SSC) 2. Determine the upload type (pre print / post print / automatic) 3. Determine the method you want to use. 4. Determine if you want to use the API directly / file upload / GUI 5. Use the corresponding API doc to upload your codes 6. Retrieve the codes via the workorder ## UAT token permissions To access this API, a UAT token needs to be provided which has access to the following permissions: - workorder_view - workorder_download - workorder_sid_download - ingestion_view - ingestion_cancel - ingestion_code_create - product_view The UAT token must be set in the header fields of all requests as described in [Authentication & Tokens](/docs/build-with-scantrust/rest-api/authentication-and-tokens#using-the-uat-token). --- // File: build-with-scantrust/rest-api/ingestion-record-api import useBaseUrl from '@docusaurus/useBaseUrl'; ## Overview The Ingestion Record API can be used to retrieve all ingestion records for your account. Since uploading and processing codes is an ASYNC process by design, it is important to check on the status of your records after uploading. When successful, the staus will be `completed` with no errors present in the `result_data`. Additionally, when a record fails during the ASYNC process, an email will be sent to the account admins containing the errors. ## API Design ## Ingestion Record ### GET /api/v2/ingestion/ Gets a list of Ingestion Records. ### Response 200 ```json { "count": 18, "next": null, "previous": null, "results": [ { "id": 22, "key": "ym0mse71lc7t", "description": "Code ingestion file upload", "status": "error", "type": "code", "ingestion_mode": "api", "created_at": "2022-10-19T17:17:11.750258Z", "created_by": 1, "status_updated_at": "2022-10-26T13:51:15.701033Z", "parameters": { "default_scm_data": {}, "use_serial_number": false }, "result_data": { "errors": [ { "duplicate_id_error": [ "iE4Mw…", "Bc2m6…" ] } ] }, "template": "", }, { "id": 34, "key": "3k59jyrwznhp", "description": "Code ingestion file upload", "status": "completed", "type": "code", "ingestion_mode": "api", "created_at": "2024-01-24T16:00:40.058486Z", "created_by": { "id": 4, "email": "brand@..." }, "status_updated_at": "2024-01-24T16:00:40.675917Z", "parameters": { "id_format": "default", "url_prefix": "https://...", "default_scm_data": { "activation_status": "1" }, "printing_partner": 3, "allow_posted_duplicates": false }, "result_data": { "workorder_id": 53 }, "template": { "id": 1, "key": "template1", "name": "Ingestion template 1", "description": "" }, "uploaded_file": "http://..." }, ... ] } ``` ### Filters **Usage example:** `/api/v2/ingestion/?type=code` **Supported filter fields:** - type - status - ingestion_mode ### GET /api/v2/ingestion/`{key}`/ Gets a single record based on the key ### Response 200 ```json { "id": 22, "key": "ym0mse71lc7t", "description": "Code ingestion file upload", "status": "error", "type": "code", "ingestion_mode": "api", "created_at": "2022-10-19T17:17:11.750258Z", "created_by": 1, "status_updated_at": "2022-10-26T13:51:15.701033Z", "parameters": { "default_scm_data": {}, "use_serial_number": false }, "result_data": { "errors": [ { "duplicate_id_error": [ "iE4Mw…", "Bc2m6…" ] } ] }, "template": "", } ``` ## Code Ingestion Templates ### GET /api/v2/ingestion/codes/templates/ Gets a a list of Ingestion Templates ### Response 200 ```json { "count": 18, "next": null, "previous": null, "results": [ { "key": "sg-code-ingestion-template", "name": "SG Code Ingestion Template", "description": "", "image": None, "workorder_template": { "id": any_int(), "name": "SG test template", "description": "", "ingestion_mode": "none", }, "is_archived": False, "allow_posted_duplicates": False, "id_format": "default", "frontend_settings": {}, "default_scm_data": {}, }, ... ] } ``` ### GET /api/v2/ingestion/codes/templates/`{key}`/ Gets a a single Ingestion Templates based on key ### Response 200 ```json { "key": "sg-code-ingestion-template", "name": "SG Code Ingestion Template", "description": "", "image": None, "workorder_template": { "id": any_int(), "name": "SG test template", "description": "", "ingestion_mode": "none", }, "is_archived": False, "allow_posted_duplicates": False, "id_format": "default", "frontend_settings": {}, "default_scm_data": {}, } ``` --- // File: build-with-scantrust/rest-api/ingestion-record-file-upload import useBaseUrl from '@docusaurus/useBaseUrl'; ## Overview Using files to ingest codes is common which is why Scantrust supports uploading codes using `CSV` and `JSON` formatted files directly. The files must be **UTF-8** encoded. To use file uploads, the mode needs to be set to `file` in the initial record creation using one of the available upload methods. Scantrust supports files up to **100 MB** each. When using `mode=file` the API will respond with a `url` and `fields` which need to be dynamically used for uploading the file and are valid for 30 minutes. ## Example CSV file ``` id,product,pallet_number,intended_market abc12345,sku1,pal1,BE def12345,sku1,pal1,NL ghi12345,sku1,pal2,DE jkl12345,sku1,pal2,FR ... ``` ## Example JSON file ```json [ { "id": "abc-abc1-dfg", "pallet_nr": "123" }, { "id": "aa748ec8-6742-11", "pallet_nr": "345" }, { "id": "hij-hij3", "pallet_nr": "567", "activation_status": 0 } ] ... ``` ## API Design ## Upload the File to our file server ### POST `{ DYNAMIC URL }` This call uses the URL retrieved in the previous call from any chosen method with `mode=file` to upload your file for processing by Scantrust. The fields retrieved in the **fields** dictionary must all be **dynamically** posted to the given URL. The content and amount of fields might change overtime. | Fields | Value | Description | | --- | --- | ---| | `{fields}` | fields | All fields dynamically retrieved by the get-post-data endpoint | **_Response (201): Created_** ### POST /api/v2/ingestion/codes/process-from-file/ Starts the ingestion process from a file previously uploaded to the S3 storage by calling the post-data endpoint. The process is started asynchronously. | Fields | Value | Description | | --- | --- | ---| | record | **string** | Record | ### Example ```json { "record": "xvg24feojYz", } ``` **Example Response 200 OK** ```json { "record_key": "xvg24feojYz" } ``` ### Error responses | HTTP Code | Message | Reason | | --------- | --------------------------------------------------------------------------------- | ----------------------------------------------------------- | | 400 | Only code ingestion records of type 'file' in state 'uploading' can be processed. | Triggered when posting a record which is in the wrong state | | 400 | Invalid record | Triggered when a non-existing record is posted | --- // File: build-with-scantrust/rest-api/network-access In order to be able to access the Scantrust REST API, the below ports and hostnames need to be accessible: ## Ports - 80 - HTTP - 443 - HTTPS ## Hostnames Below are the domainnames for our testing and production environment: ### Testing / Staging: ```api.staging.scantrust.io``` ### Production: ```api.scantrust.com``` **NOTE:** AWS autoschedules both _STAGING_ and _PRODUCTION_ environments, with backup nodes automatically instantiated in the event of node failure. These backup nodes may have different IP addresses than previously reported. To prevent traffic issues, we recommend applying firewall rules on your environment that filter traffic based on __hostnames__ rather than IP addresses. ## HTTS SSL Certificates For some systems, it is required to add trust-relationships for the SSL certificates used by our servers All Scantrust certificates are derived from the [Amazon Root CA Certs](https://www.amazontrust.com/repository/): ### Root Certificate Authority: - CN=Amazon Root CA 1,O=Amazon,C=US - SHA-256: ```fbe3018031f9586bcbf41727e417b7d1c45c2f47f93be372a17b96b50757d5a2``` - Self-Signed Certificate: [DER](https://www.amazontrust.com/repository/AmazonRootCA1.cer) [PEM](https://www.amazontrust.com/repository/AmazonRootCA1.pem) - Test URL's: [Valid](https://good.sca1a.amazontrust.com/) [Revoked](https://revoked.sca1a.amazontrust.com/) [Expired](https://expired.sca1a.amazontrust.com/) Scantrust currently uses the above CA but to be safe we suggest to add [all five amazon root certificate authorities](https://www.amazontrust.com/repository/). Though it is unlikely we will change our CA in the near future, it will prevent a failure should a future update occur. --- // File: build-with-scantrust/rest-api/photo-auth-api ## Basic usage The Scantrust Photo-auth API is a publicly available REST API. There are 2 base domains: - https://api.staging.scantrust.io (test server) - https://api.scantrust.com (production server) ## Photo-auth API The authentication API requires a JPEG image as input. It is rate-limited to 200 requests per minute. ## POST /api/scan/photo/ ### Request **_Headers_** `x-scantrust-app`: String (required) The app identifier. This app-id will be provided by scantrust. **_Fields_** `image`: File (required) The image to run authentication on. The image MUST be a jpeg. ### Response **_Status Code_** The response code is 200 in case of success, otherwise it returns one of the following values: | Return Code | Description | |:------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **400** | The posted data has a formatting issue. The client needs to check response details and adjust POST data accordingly before reposting | | **5xx** | Server issue / bug: the load-balancer or authentication-server could be under maintenance or another issue is preventing it from running the authentication. If the issue persists, please contact Scantrust support | **_Data_** The successful response is json-formatted and contains information about the authentication process as well as some information about the created scan object. The scan object is empty `{}` if no scan record was created. **_`authentication_status`: String_** Below is the result of the authentication process. It can take one of the following values: | authentication_status (String) | Description | |:---------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | auth_original | The secure graphic was authenticated as original. | | auth_copy | The secure graphic was authenticated as a copy / a counterfeit. | | auth_unknown | The authentication process lacks confidence to provide an answer. | | auth_error | An error occurred during the authentication process and the secure graphic was not authenticated. This might happen when the image has severe quality issues or when the qr code is damaged. | | bad_quality | The image quality was not sufficient to perform the authentication. More information can be found in the image_quality field to provide instructions for the user to improve the image quality of the next attempt. | | sid | This code is just a Scantrust ID and not a scantrust secure code. Therefore, it has no secure graphic and can't be authenticated. | | third_party | The content of the code was not recognised as a valid scantrust code. This usually happens when a user scans a third party code. It can also indicate a counterfeit attempt using a fake url. We recommend to prevent the user from redirecting to the content of this url as it can lead to untrusted content. No scan record is created. | | not_read | No code was not read in the image. This can happen in the following situations: 1) no qr code was present in the image; 2) a qr code was only partially present in the image, or 3) our qr code detector / reader was not able to locate or read the qr code. No scan record is created. | | not_found | The qr code content is valid scantrust content, however the code identifier was not found in the database. During the testing / UAT phase, this might happen if the code belongs to a different domain (test server vs production server). Otherwise it can be a counterfeit attempt. No scan record is created. | | not_trained | No authentication model was found for the code. Secure QR codes are "trained" by Scantrust as part of the printing process, so this case is unlikely to happen on real products. If this issue occurs, please contact Scantrust support. | | inactive | The code is not active. As part of the activation process, all scantrust qr codes are changed from “inactive” to “active” Inactive codes should never reach consumers / clients. If this issue occurs, please contact Scantrust support. | | blacklisted | The code is blacklisted. Scantrust can blacklist codes for several reasons, such as overprint, damage (returns), excessive scanning, etc, A common way for a qrcode to become blacklisted is if there have been identified counterfeit attempts. | **_`image_quality`: Array of Strings_** Below is a list of quality issues found in the image. This information can be used to guide the user for the following attempts (if needed). Here is the list of possible quality issues: | image_quality (Array of Strings) | Description | |:-----------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | too_big | The code is too big. The user should scan from further away or should decrease the zoom level. | | too_small | The code is too small. The user should either move closer or increase the zoom level. | | blurry | The image is blurry. The user should improve the focus when capturing the image. | | glare (deprecated) | There is too much glare in the image. This is usually caused by light reflections either from external lights or by the device’s flashlight. The user should find a better angle to avoid these reflexions. | | generic | Our neural network algorithm found and issue but we don't know the exact cause of the quality issue. This could be any of the issue listed above. | **_`image_roi`: Array of four integers_** ROI (region of interest) for the secure graphic in the image. This list consists of the top left corner x and y positions and the width and height of this region [top_left_x, top_left_y, width, height]. This can be used to extract the secure graphic from the image in order to display it. This field is **not null only if** `authentication_status` is `auth_original`, `auth_copy` or `bad_quality`. **_`carrier_content`: String_** Content of the code read in the image. This field is null if the code was not read. **_`scan`: Object_** Information about the created scan. Useful fields are: | scan (Object) | Description | |:--------------|:-----------------------------------------------------------------------------------------------------------| | product | Object with name, landing page url and image url (empty string or null if none) of the product. | | brand | Object with name, description, landing page url and image url (empty string or null if none) of the brand. | | consumer_url | Url of this specific item. Usually used to redirect the user. | **_Example_** - POST example (multipart/form-data) ``` [POST] https://api.staging.scantrust.io/api/scan/photo/ --6856697c0fe2dc3eb3aed07ae7b5925d Content-Disposition: form-data; name="image"; filename="file.jpeg" --6856697c0fe2dc3eb3aed07ae7b5925d-- ``` - Response example ``` { "authentication_status": "auth_original", "image_quality": ["blurry","glare"], "image_roi": [1764,1302,534,533], "carrier_content": "https://QA1.CH/Q/h2Jn_9tBQaAT", "scan": { "uuid": "bbac5b99-f16d-4246-81c4-dcc7c56a540a", "app": "other", "reason": "auth", "result": "ok", "auth_failure_mode": "", "activation_status": 1, "blacklist_reason": 0, "is_blacklisted": false, "product": { "id": 6104, "name": "test test test", "url": "http://scantrust.com", "image": "" }, "brand": { "name": "Clothing", "description": "qa", "image": null, "url": "http://scantrust.com" }, "scm_data": {}, "consumer_url": "http://scantrust.com", "unreadable_retries": 0, "training_status": 2, "ga_key_app": "", "is_consumed": false, "bypass_scan_result": true, "serial_number": "ZE5TVP6X" }, } ``` --- // File: build-with-scantrust/rest-api/photo-auth-getting-started Scantrust Secure Codes (SSC) come with a secure graphic that serves as a copy-resistant anti-counterfeiting feature. These codes can be authenticated using the Scantrust Mobile App or the Scantrust Enterprise App (for iOS / Android). However, this requires users to download the dedicated app and for the phone to be supported, ie. to have a camera calibrated by Scantrust to perform video-auth. To provide users with an alternative to app-based authentication, Scantrust developed the Photo-auth feature, which enables users to upload photos for authentication. This feature removes the need to download an app or use a calibrated phone. This document outlines the Scantrust API for Photo-auth. Before implementing a custom landing page or integrating Photo-auth into your app, please review the notes below for implementation: ## Supported Printing Technologies Though all Scantrust Secure Codes work with photo-auth, it has been optimized for usage with digitally printed codes using HP Indigo technology. Make sure to check with your Scantrust Project Manager to make sure your codes are compatible with PhotoAuth.. ## Provide clear instructions to the end user When using the Photo-auth endpoint, it's important to remember that bad quality photos will not authenticate. This means that landing pages or apps must provide clear instructions to end-users on how to take a good quality photo. These instructions should include: - The correct distance to hold the camera from the QR code. The camera should be as close as possible to the minimum focus distance to capture a large enough image of the secure graphic. - Tapping to focus the camera to prevent blurry images. - Zooming in on the QR code to ensure it's in focus. - Switching on the flash to capture the image with the best possible lighting, which can help to take a sharper image of the QR code. - Tilting the camera slightly to prevent glare when the flash is on. - Reminding the user that the QR code will not scan automatically and that they must take a photo. For an example implementation see the [Photo Auth Landing Page example](https://stc.scantrust.com/a/?id=123456789012). ## Phone Camera limitations Photo-auth is more flexible than video-auth in terms of phone compatibility, and most current smartphones are supported. However, some older phones or phones with poor camera quality may not take good photos. Additionally, some phones with adequate camera quality may be challenging to focus correctly. Factors that may affect photo quality can include image distortion by photo apps (like "beautification"), low-quality lenses, or lenses not optimized for close-up images. To address these issues, the landing page or app that calls Photo-auth should have a mechanism for detecting repeated failures and notify the user that there could be an issue with their phone. By identifying possible issues early on, users can be informed and seek suitable alternatives to complete their authentication. ## Landing Page Redirection When using Photo-auth, the scan result only includes authentication data and does not handle the redirection of the user to a landing page. It's up to the client app to decide where to redirect the user. The "consumer_url" from the photo-auth API response can be used or the scan UUID can be used to look up additional campaign data through the Scantrust Consumer API. For more details, please refer to the Consumer API Documentation which can be found here: https://devportal.scantrust.com/docs/build-with-scantrust/consumer/scantrust-consumer-api/#campaign-scan-and-code. ## Combatting Fake URLs Counterfeiters often use a common tactic of creating fake landing pages with a fake QR code that mimics the look and function of your legitimate landing pages. To prevent this, it's essential to communicate with your users that Photo-auth can only be accessed through a trusted channel, such as a link from your official website or Facebook account. If you need more information or have concerns regarding this issue, please contact your Scantrust Account Manager for advice and guidance. They can provide you with further information and assistance in navigating this complicated topic. --- // File: build-with-scantrust/rest-api/product-download ## Overview There are 2 ways to download products: 1. Download a `products.csv` file from the scantrust portal under the **products** section 2. Download the products with the Scantrust Product API ![products](/doc-img/products.png) The below process describes how to download products using the Scantrust Product Api. You will need a **UAT token** with at minimum the following permissions: - `product_view` The UAT token must be set in the header fields of all requests as described in [Authentication & Tokens](/docs/build-with-scantrust/rest-api/authentication-and-tokens#using-the-uat-token). ## API Design ### GET: /api/v2/products/ Returns all products for a company | Parameter | Required? | Description | | :---------- | :-------- | :--------------------------------------- | | is_archived | optional | boolean. default 0=not archived | | limit | optional | number, default=20 | | offset | optional | number | | ordering | optional | flag: -creation_date = created at (desc) | **_Response (200): Status OK_** ```json { "count": 73, "next": "https://api.staging.scantrust.io/api/v2/products/?is_archived=0&limit=20&offset=20&ordering=-creation_date", "previous": null, "results": [ { "id": 6326, "uuid": "a69ba3ee-3009-44e4-9622-c2c2c25e8f17", "sku": "tom-prefix-testing-pro", "image": null, "name": "tom-prefix-testing-pro", "description": "testing", "label": "tom-prefix-testing-pro", "brand": { "id": 1115, "name": "Chicago Girl", "image": "https://s3-eu-west-1.amazonaws.com/cc-staging.scantrust.com/c/446/brand/blob-znaohi.png" }, "company": { "id": 446, "uuid": "d7210852-db2c-4e91-b783-ca608cdfbe32", "name": "Chicago Merchants" }, "creation_date": "2021-02-01T03:24:42.468939Z", "client_url": "https://www.baidu.com", "is_archived": false, "code_count": 0, "active_code_count": 0, "blacklisted_code_count": 0, "campaign": { "id": 2207, "name": "tom-prefix-sid", "description": "prefix testing", "is_archived": false }, "smartlabel": null }, ... ] } ``` ### GET: /api/v2/products/?sku\_\_exact=\{sku\} This endpoint can be used to retrieve a specific product ID by SKU. By passing `?sku__exact={sku}` to the endpoint URL, the system will look for an exact match within the company's products. Only one result should be returned since SKU is unique per company. **_Response (200): Status OK_** When a product is found, the result is provided as an array. The first object in that array should be used to know the ID. ```json { "count": 1, "next": null, "previous": null, "results": [ { "id": 959, "uuid": "701b1a6f-e751-4c20-8012-028063322fb0", "sku": "prod2", "image": null, "name": "Product #2", "description": "", "label": "Product #2", "brand": { "id": 749, "name": "100 Brand", "image": null }, "company": { "id": 871, "uuid": "1fc1a571-1918-4f7d-b826-510752156cdf", "name": "Test brand" }, "creation_date": "2017-02-16T08:59:08.774705Z", "client_url": "", "is_archived": false, "code_count": 0, "active_code_count": 0, "blacklisted_code_count": 0, "campaign": { "id": 188, "name": "test campaign", "description": "camp", "is_archived": false } } ] } ``` **_Example product not found_** ```json { "count": 0, "next": null, "previous": null, "results": [] } ``` --- // File: build-with-scantrust/rest-api/product-e-label-json ## Example e-label JSON ```json { "name": "E-label Name", "is_published": true, "data": { "editor": { "type": "wine", "theme": { "primary": "#15BBF0", "background": "#FFFFFF", "alcoholColor": "#890022" }, "footer": { "first_line": "", "second_line": "", "privacy_description": {}, "privacy": "https://privacy-policy.com" }, "header": { "logo": "", "title": "Page title" }, "version": 1, "sections": [ { "key": "product-infos" }, { "key": "ingredients" }, { "key": "serving-infos" }, { "key": "nutrition" }, { "key": "responsible-consumption" }, { "key": "sustainability" }, { "key": "geographical-indications" }, { "key": "business-operator" }, { "key": "brand-infos" }, { "key": "impressum" } ], "impressum": { "free_text": { "default": "

An impressum

", "DE": "

An impressum for germany

" } }, "nutrition": { "table": [ { "key": "energy", "unit": "kJ", "children": [ { "key": null, "unit": "kcal", "per_100ml": 75, "less_operator": false } ], "per_100ml": 312, "less_operator": false }, { "key": "fat", "unit": "g", "children": [ { "key": "saturated_fat", "unit": "g", "per_100ml": 0.5, "less_operator": false } ], "per_100ml": 0.5, "less_operator": false }, { "key": "carbohydrate", "unit": "g", "children": [ { "key": "sugar", "unit": "g", "per_100ml": 0, "less_operator": false } ], "per_100ml": 0.4, "less_operator": false }, { "key": "protein", "unit": "g", "per_100ml": 0, "less_operator": false }, { "key": "salt", "unit": "g", "per_100ml": 0.5, "less_operator": false } ] }, "brand-infos": { "link": "", "image": "", "text_color": "#FFFFFF", "description": {} }, "ingredients": { "list": [ { "category": "ingredient_category_main_ingredients", "description": "ingredient_grapes", "is_contained_display": false, "is_organic": true }, { "description": "ingredient_calcium_sulfate", "category": "ingredient_category_acidity_regulators", "is_contained_display": false }, { "description": "ingredient_tartaric_acid", "category": "ingredient_category_acidity_regulators", "is_contained_display": false }, { "description": { "en": "Special ingredient", "fr": "Ingrédient spécial" }, "category": "ingredient_category_antioxidant", "is_allergen": true } ], "free_text": {}, "use_free_form": false }, "product-infos": { "type": "wine_type_wine", "origin": [ "FR" ], "volumes": [ "750" ], "product_name": { "en": "Demo Product Name", "de": "Name des Demoprodukts", "nl": "", "fr": "Nom du produit de démonstration" }, "alcohol_volume": "13", "sales_description": { "en": "A product description", "de": "Eine Produktbeschreibung", "nl": "", "fr": "Une description du produit" }, "traditional_terms": {}, "bottled_in_protected_atmosphere": "bottled_in_protected_atmosphere_1", "vintage_year": "2018", "wine_sweetness": "wine_sweetness_extra_dry", "vine_variety": "Merlot", "wine_colour": "wine_colour_red", "production_method": "production_methods_barrel_aged" }, "serving-infos": { "unit": { "FR": "CL", "default": "ML" }, "serving": { "default": 100 }, "glass_icon": "default_wine", "bottle_icon": "default_wine" }, "sustainability": { "custom_icons": [], "organic_icons": [ "1", "2" ], "organic_description": { "en": "An organic message", "de": "Eine organische Botschaft", "nl": "", "fr": "Un message organique" }, "recyclability_icons": [ "6" ], "certifications_icons": [ "1" ], "italian_recyclability": { "list": [], "is_enabled": false }, "recyclability_description": { "en": "A sustainability message", "de": "Eine Botschaft zur Nachhaltigkeit", "nl": "", "fr": "Un message de durabilité" }, "certifications_description": { "en": "A certification message", "de": "Eine Zertifizierungsnachricht", "nl": "", "fr": "Un message de certification" } }, "default_country": "", "default_language": "en", "business-operator": { "bottled_by": { "default": "Chateau Demo, 333 avenue de Bordeaux", "FR": "Custom bottler address for France" }, "imported_by": { "default": "Importer Name, 333 avenue de Bordeaux", "FR": "Custom importer address for France" }, "produced_by": { "default": "Chateau Demo, 333 avenue de Bordeaux", "FR": "Custom producer address for France" } }, "reviewed_languages": [ "en", "de", "fr" ], "available_languages": [ "en" ], "responsible-consumption": { "icons": [ 0, 1, 2 ], "description": {}, "custom_icons": [ { "name": "custom image", "url": "https://cc.staging.scantrust.io/c/6644/stcfile/blob-ngneoq", "wide": false, "countries": [ "all" ] } ], "show_responsible_message": true, "responsible_drinking_logo": true }, "geographical-indications": { "list": [ { "description": "AOC Pinot noir", "icon": "0" } ] }, "enforce_language_per_country": false }, "published": { "type": "wine", "theme": { "primary": "#15BBF0", "background": "#FFFFFF", "alcoholColor": "#890022" }, "footer": { "first_line": "", "second_line": "", "privacy_description": {}, "privacy": "https://privacy-policy.com" }, "header": { "logo": "", "title": "Page title" }, "version": 1, "sections": [ { "key": "product-infos" }, { "key": "ingredients" }, { "key": "serving-infos" }, { "key": "nutrition" }, { "key": "responsible-consumption" }, { "key": "sustainability" }, { "key": "geographical-indications" }, { "key": "business-operator" }, { "key": "brand-infos" }, { "key": "impressum" } ], "impressum": { "free_text": { "default": "

An impressum

", "DE": "

An impressum for germany

" } }, "nutrition": { "table": [ { "key": "energy", "unit": "kJ", "children": [ { "key": null, "unit": "kcal", "per_100ml": 75, "less_operator": false } ], "per_100ml": 312, "less_operator": false }, { "key": "fat", "unit": "g", "children": [ { "key": "saturated_fat", "unit": "g", "per_100ml": 0.5, "less_operator": false } ], "per_100ml": 0.5, "less_operator": false }, { "key": "carbohydrate", "unit": "g", "children": [ { "key": "sugar", "unit": "g", "per_100ml": 0, "less_operator": false } ], "per_100ml": 0.4, "less_operator": false }, { "key": "protein", "unit": "g", "per_100ml": 0, "less_operator": false }, { "key": "salt", "unit": "g", "per_100ml": 0.5, "less_operator": false } ] }, "brand-infos": { "link": "", "image": "", "text_color": "#FFFFFF", "description": {} }, "ingredients": { "list": [ { "category": "ingredient_category_main_ingredients", "description": "ingredient_grapes", "is_contained_display": false, "is_organic": true }, { "description": "ingredient_calcium_sulfate", "category": "ingredient_category_acidity_regulators", "is_contained_display": false }, { "description": "ingredient_tartaric_acid", "category": "ingredient_category_acidity_regulators", "is_contained_display": false }, { "description": { "en": "Special ingredient", "fr": "Ingrédient spécial" }, "category": "ingredient_category_antioxidant", "is_allergen": true } ], "free_text": {}, "use_free_form": false }, "product-infos": { "type": "wine_type_wine", "origin": [ "FR" ], "volumes": [ "750" ], "product_name": { "en": "Demo Product Name", "de": "Name des Demoprodukts", "nl": "", "fr": "Nom du produit de démonstration" }, "alcohol_volume": "13", "sales_description": { "en": "A product description", "de": "Eine Produktbeschreibung", "nl": "", "fr": "Une description du produit" }, "traditional_terms": {}, "bottled_in_protected_atmosphere": "bottled_in_protected_atmosphere_1", "vintage_year": "2018", "wine_sweetness": "wine_sweetness_extra_dry", "vine_variety": "Merlot", "wine_colour": "wine_colour_red", "production_method": "production_methods_barrel_aged" }, "serving-infos": { "unit": { "FR": "CL", "default": "ML" }, "serving": { "default": 100 }, "glass_icon": "default_wine", "bottle_icon": "default_wine" }, "sustainability": { "custom_icons": [], "organic_icons": [ "1", "2" ], "organic_description": { "en": "An organic message", "de": "Eine organische Botschaft", "nl": "", "fr": "Un message organique" }, "recyclability_icons": [ "6" ], "certifications_icons": [ "1" ], "italian_recyclability": { "list": [], "is_enabled": false }, "recyclability_description": { "en": "A sustainability message", "de": "Eine Botschaft zur Nachhaltigkeit", "nl": "", "fr": "Un message de durabilité" }, "certifications_description": { "en": "A certification message", "de": "Eine Zertifizierungsnachricht", "nl": "", "fr": "Un message de certification" } }, "default_country": "", "default_language": "en", "business-operator": { "bottled_by": { "default": "Chateau Demo, 333 avenue de Bordeaux", "FR": "Custom bottler address for France" }, "imported_by": { "default": "Importer Name, 333 avenue de Bordeaux", "FR": "Custom importer address for France" }, "produced_by": { "default": "Chateau Demo, 333 avenue de Bordeaux", "FR": "Custom producer address for France" } }, "reviewed_languages": [ "en", "de", "fr" ], "available_languages": [ "en" ], "responsible-consumption": { "icons": [ 0, 1, 2 ], "description": {}, "custom_icons": [ { "name": "custom image", "url": "https://cc.staging.scantrust.io/c/6644/stcfile/blob-ngneoq", "wide": false, "countries": [ "all" ] } ], "show_responsible_message": true, "responsible_drinking_logo": true }, "geographical-indications": { "list": [ { "description": "AOC Pinot noir", "icon": "0" } ] }, "enforce_language_per_country": false } } } ``` --- // File: build-with-scantrust/rest-api/product-e-label-system-keys ## Introduction System keys are used throughout the e-label landing page to allow users to use common terms and have them directly translated in all EU languages ## Product Types ```json /* Aromatised wines */ "aromatised_wine_type_aromatised_wine": "Aromatised wine", "aromatised_wine_type_wine_based_aperitif": "Wine-based aperitif", "aromatised_wine_type_bitter_aromatised_wine": "Bitter aromatised wine", "aromatised_wine_type_egg_based_aromatised_wine": "Egg-based aromatised wine", "aromatised_wine_type_vakeva_viiniglogi": "Väkevä viiniglögi", "aromatised_wine_type_starkvinsglogg": "Starkvinsglögg", "aromatised_wine_type_aromatised_wine_based_drink": "Aromatised wine-based drink", "aromatised_wine_type_aromatised_fortified_wine_based_drink": "Aromatised fortified wine-based drink", "aromatised_wine_type_sangria": "Sangría", "aromatised_wine_type_sangria_en": "Sangria", "aromatised_wine_type_clarea": "Clarea", "aromatised_wine_type_zurra": "Zurra", "aromatised_wine_type_bitter_soda": "Bitter soda", "aromatised_wine_type_kalte_ente": "Kalte Ente", "aromatised_wine_type_gluhwein": "Glühwein", "aromatised_wine_type_viiniglogi": "Viiniglögi", "aromatised_wine_type_vinglogg": "Vinglögg", "aromatised_wine_type_karstas_vynas": "Karštas vynas", "aromatised_wine_type_maiwein": "Maiwein", "aromatised_wine_type_maitrank": "Maitrank", "aromatised_wine_type_pelin": "Pelin", "aromatised_wine_type_aromatizovany_dezert": "Aromatizovaný dezert", "aromatised_wine_type_aromatised_wine_product_cocktail": "Aromatised wine-product cocktail", "aromatised_wine_type_wine_based_cocktail": "Wine-based cocktail", "aromatised_wine_type_aromatised_semi_sparkling_grape_based_cocktail": "Aromatised semi-sparkling grape-based cocktail", "aromatised_wine_type_sparkling_wine_cocktail": "Sparkling wine cocktail", "aromatised_wine_type_vermouth": "Vermouth", "aromatised_wine_wino_ziolowe": "Wino ziolowe", /* Wines */ "wine_type_wine": "Wine", "wine_type_liqueur_wine": "Liqueur wine", "wine_type_semi_sparkling_wine": "Semi-sparkling wine", "wine_type_aerated_semi_sparkling_wine": "Aerated semi-sparkling wine", "wine_type_aerated_semi_sparkling_wine_carbon_dioxide": "Aerated semi-sparkling wine - Obtained by adding carbon dioxide", "wine_type_aerated_semi_sparkling_wine_carbon_anhydride": "Aerated semi-sparkling wine - Obtained by adding carbon anhydride", "wine_type_aerated_sparkling_wine": "Aerated sparkling wine", "wine_type_aerated_sparkling_wine_carbon_dioxide": "Aerated sparkling wine - Obtained by adding carbon dioxide", "wine_type_aerated_sparkling_wine_carbon_anhydride": "Aerated sparkling wine - Obtained by adding carbon anhydride", "wine_type_sparkling_wine": "Sparkling wine", "wine_type_quality_sparkling_wine": "Quality sparkling wine", "wine_type_quality_aromatic_sparkling_wine": "Quality aromatic sparkling wine", "wine_type_wine_from_raisined_grapes": "Wine from raisined grapes", "wine_type_wine_of_overripe_grapes": "Wine of overripe grapes", "wine_type_de_alcoholised_wine": "De-alcoholised wine", "wine_type_de_alcoholised_semi_sparkling_wine": "De-alcoholised semi-sparkling wine", "wine_type_de_alcoholised_aerated_semi_sparkling_wine": "De-alcoholised aerated semi-sparkling wine", "wine_type_de_alcoholised_aerated_sparkling_wine": "De-alcoholised aerated sparkling wine", "wine_type_de_alcoholised_sparkling_wine": "De-alcoholised sparkling wine", "wine_type_de_alcoholised_quality_sparkling_wine": "De-alcoholised quality sparkling wine", "wine_type_de_alcoholised_quality_aromatic_sparkling_wine": "De-alcoholised quality aromatic sparkling wine", "wine_type_partially_de_alcoholised_wine": "Partially de-alcoholised wine", "wine_type_partially_de_alcoholised_semi_sparkling_wine": "Partially de-alcoholised semi-sparkling wine", "wine_type_partially_de_alcoholised_aerated_semi_sparkling_wine": "Partially de-alcoholised aerated semi-sparkling wine", "wine_type_partially_de_alcoholised_aerated_sparkling_wine": "Partially de-alcoholised aerated sparkling wine", "wine_type_partially_de_alcoholised_sparkling_wine": "Partially de-alcoholised sparkling wine", "wine_type_partially_de_alcoholised_quality_sparkling_wine": "Partially de-alcoholised quality sparkling wine", "wine_type_partially_de_alcoholised_quality_aromatic_sparkling_wine": "Partially de-alcoholised quality aromatic sparkling wine", "wine_type_grape_must": "Grape must", "wine_type_partially_fermented_grape_must": "Partially fermented grape must", "wine_type_partially_fermented_grape_must_extracted_from_raisined_grapes": "Partially fermented grape must extracted from raisined grapes", "wine_type_concentrated_grape_must": "Concentrated grape must", "wine_type_rectified_concentrated_grape_must": "Rectified concentrated grape must", "wine_type_wine_vinegar": "Wine vinegar", "wine_type_new_wine_still_in_fermentation": "New wine still in fermentation", /* Spirits */ "spirit_type_rum": "Rum", "spirit_type_whiskey": "Whiskey", "spirit_type_whisky": "Whisky", "spirit_type_grain_spirit": "Grain spirit", "spirit_type_wine_spirit": "Wine spirit", "spirit_type_brandy": "Brandy", "spirit_type_grape_marc_spirit": "Grape marc spirit", "spirit_type_fruit_marc_spirit": "Fruit marc spirit ", "spirit_type_raisin_spirit": "Raisin spirit", "spirit_type_cider_spirit": "Cider spirit", "spirit_type_perry_spirit": "Perry spirit", "spirit_type_cider_and_perry_spirit": "Cider and Perry spirit", "spirit_type_honey_spirit": "Honey spirit", "spirit_type_hefebrand": "Hefebrand", "spirit_type_beer_spirit": "Beer spirit", "spirit_type_topinambur": "Topinambur", "spirit_type_vodka": "Vodka", "spirit_type_gentian": "Gentian", "spirit_type_juniper_flavoured_spirit_drink": "Juniper-flavoured spirit drink", "spirit_type_gin": "Gin", "spirit_type_distilled_gin": "Distilled gin", "spirit_type_kummel": "Kümmel", "spirit_type_london_gin": "London gin", "spirit_type_akvavit": "Akvavit", "spirit_type_aniseed_flavoured_spirit_drink": "Aniseed-flavoured spirit drink", "spirit_type_pastis": "Pastis", "spirit_type_pastis_de_marseille": "Pastis de Marseille", "spirit_type_anis": "Anis", "spirit_type_distilled_anis": "Distilled anis", "spirit_type_bitter_tasting_spirit_drink": "Bitter-tasting spirit drink", "spirit_type_flavoured_vodka": "Flavoured vodka", "spirit_type_sloe_aromatised_spirit_drink": "Sloe-aromatised spirit drink", "spirit_type_liqueur": "Liqueur", "spirit_type_sloe_gin": "Sloe gin", "spirit_type_sambuca": "Sambuca", "spirit_type_maraschino": "Maraschino", "spirit_type_nocino": "Nocino", "spirit_type_egg_liqueur": "Egg liqueur", "spirit_type_liqueur_with_egg": "Liqueur with egg", "spirit_type_mistra": "Mistrà", "spirit_type_vakeva_glogi": "Väkevä glögi ", "spirit_type_berenburg": "Berenburg", "spirit_type_honey_nectar": "Honey nectar", "spirit_type_weinbrand": "Weinbrand", "spirit_type_lees_spirit": "Lees spirit", "spirit_type_jerusalem_artichoke_spirit": "Jerusalem artichoke spirit", "spirit_type_aquavit": "Aquavit", "spirit_type_janezevec": "Janeževec", "spirit_type_bitter": "Bitter", "spirit_type_pacharan": "Pacharán", "spirit_type_marrasquino": "Marrasquino", "spirit_type_maraskino": "Maraskino", "spirit_type_orehovec": "Orehovec", "spirit_type_advocaat": "Advocaat", "spirit_type_avocat": "Avocat ", "spirit_type_advokat": "Advokat", "spirit_type_spritglogg": "Spritglögg", "spirit_type_beerenburg": "Beerenburg", "spirit_type_mead_nectar": "Mead nectar", "spirit_type_spirit_drink": "Spirit drink", "spirit_type_fruit_spirit": "Fruit spirit", ``` ## Product infos fields **Wine Sweetness** ```json "wine_sweetness_dry": "Dry", "wine_sweetness_semi_dry": "Semi-dry", "wine_sweetness_medium_dry": "Medium dry", "wine_sweetness_semi_sweet": "Semi-sweet", "wine_sweetness_medium": "Medium", "wine_sweetness_medium_sweet": "Medium sweet", "wine_sweetness_sweet": "Sweet", "wine_sweetness_brut_nature": "Brut nature", "wine_sweetness_extra_brut": "Extra brut", "wine_sweetness_brut": "Brut", "wine_sweetness_extra_dry": "Extra dry", ``` **Protected atmosphere message** ```json "bottled_in_protected_atmosphere_0": "Bottled in a protective atmosphere", "bottled_in_protected_atmosphere_1": "Bottling may happen in a protective atmosphere", ``` **Production methods** ```json "product-infos_production_method": "Production Method", "production_methods_cask_fermented": "Cask fermented", "production_methods_cask_matured": "Cask matured", "production_methods_cask_aged": "Cask aged", "production_methods_barrel_fermented": "Barrel fermented", "production_methods_barrel_matured": "Barred matured", "production_methods_barrel_aged": "Barrel aged", "production_methods_bottle_fermented": "Bottle fermented", "production_methods_bottle_fermented_by_the_traditional_method": "Bottle fermented by the traditional method", "production_methods_traditional_method": "Traditional method", "production_methods_classical_method": "Classical method", "production_methods_classical_traditional_method": "Classical traditional method", "production_methods_cremant": "Crémant", "production_methods_charmat_method": "Charmat method", ``` **Wine Colour** ```json "wine_colour_red": "Red wine", "wine_colour_white": "White wine", "wine_colour_rose": "Rosé wine" ``` ## Ingredient Categories ```json "ingredient_category_main_ingredients": "Main ingredients", "ingredient_category_acid": "Acids", "ingredient_category_acidity_regulator": "Acidity regulator", "ingredient_category_acidity_regulators": "Acidity regulators", "ingredient_category_anti_caking_agent": "Anti-caking agents", "ingredient_category_anti_foaming_agent": "Anti-foaming agents", "ingredient_category_antioxidant": "Antioxidants", "ingredient_category_bulking_agent": "Bulking agents", "ingredient_category_emulsifier": "Emulsifiers", "ingredient_category_firming_agent": "Firming agents", "ingredient_category_flavour_enhancer": "Flavour enhancers", "ingredient_category_foaming_agent": "Foaming agents", "ingredient_category_gelling_agent": "Gelling agents", "ingredient_category_glazing_agent": "Glazing agents", "ingredient_category_humectant": "Humectants", "ingredient_category_modified_starch": "Modified starches", "ingredient_category_preservative": "Preservatives", "ingredient_category_preservatives_and_antioxidants": "Preservatives and antioxidants", "ingredient_category_propellent_gas": "Propellent gases", "ingredient_category_raising_agent": "Raising agents", "ingredient_category_sequestrant": "Sequestrants", "ingredient_category_stabiliser": "Stabilisers", "ingredient_category_stabilising_agents": "Stabilising agents", "ingredient_category_sweetener": "Sweeteners", "ingredient_category_thickener": "Thickeners", "ingredient_category_flavourings": "Flavouring(s)", "ingredient_category_colour": "Colours", "ingredient_category_treatment_agent": "Flour treatment agents", "ingredient_category_emulsifying_salts": "Emulsifying salts", "ingredient_category_clarifying_agent": "Clarifying agent", "ingredient_category_clarifying_agents": "Clarifying agents", "ingredient_category_tirage_liqueur": "Tirage liqueur", "ingredient_category_expedition_liqueur": "Expedition liqueur", "ingredient_category_other": "Other practices", "ingredient_category_alcohol": "Alcohol", "ingredient_category_substances_for_enrichment": "Substances for enrichment", "ingredient_category_processing_aids": "Processing aids", ``` ## Ingredients ```json "ingredient_grapes": "Grapes", "ingredient_caramel": "Caramel", "ingredient_aleppo_pine_resin": "Aleppo pine resin", "ingredient_concentrated_grape_must": "Concentrated grape must", "ingredient_rectified_concentrated_grape_must": "Rectified concentrated grape must", "ingredient_sucrose": "Sucrose", "ingredient_wine": "Wine", "ingredient_partially_fermented_grape_must": "Partially fermented grape must", "ingredient_wine_alcohol": "Wine alcohol", "ingredient_dried_grape_alcohol": "Dried grape alcohol", "ingredient_dried_grape_distillate": "Dried grape distillate", "ingredient_wine_spirit": "Wine spirit", "ingredient_grape_marc_spirit": "Grape-marc spirit", "ingredient_spirit_drinks_distilled_from_fermented_dried_grapes": "Spirit drinks distilled from fermented dried grapes", "ingredient_ethyl_alcohol": "Ethyl alcohol", "ingredient_fortified_wine_distillate": "Fortified wine distillate", "ingredient_cider_and_perry_distillate": "Cider and perry distillate", "ingredient_cider_distillate": "Cider distillate", "ingredient_perry_distillate": "Perry distillate", "ingredient_whole_grain_cereal_distillate": "Whole grain cereal distillate", "ingredient_grape_marc_distillate": "Grape marc distillate", "ingredient_lees_spirit": "Lees spirit", "ingredient_lees_distillate": "Lees distillate", "ingredient_grape_marc_and_lees_distillate": "Grape marc and lees distillate", "ingredient_honey_mash_distillate": "Honey mash distillate", "ingredient_corinth_black_dried_grape_distillate": "Corinth black dried grape distillate", "ingredient_moscatel_alexandria_dried_grape_distillate": "Moscatel Alexandria dried grape distillate", "ingredient_molasses_distillate": "Molasses distillate", "ingredient_syrup_distillate": "Syrup distillate", "ingredient_sugar_cane_juice_distillate": "Sugar cane juice distillate", "ingredient_jerusalem_artichoke_distillate": "Jerusalem artichoke distillate", "ingredient_potato_distillate": "Potato distillate", "ingredient_grain_distillate": "Grain distillate", "ingredient_cereal_distillate": "Cereal distillate ", "ingredient_rye_distillate": "Rye distillate", "ingredient_malt_distillate": "Malt distillate", "ingredient_gentian_distillate": "Gentian distillate", "ingredient_grain_spirit": "Grain spirit", "ingredient_fermented_honey_mash": "Fermented honey mash ", "ingredient_honey_distillate": "Honey distillate", "ingredient_distillate_of_agricultural_origin": "Distillate of agricultural origin", "ingredient_wine_distillate": "Wine distillate", "ingredient_ethyl_alcohol_of_agricultural_origin": "Ethyl alcohol of agricultural origin", "ingredient_water": "Water", "ingredient_grape_must": "Grape must", "ingredient_tartaric_acid": "Tartaric acid (L(+)-)", "ingredient_malic_acid": "Malic acid (D,L-; L-)", "ingredient_lactic_acid": "Lactic acid", "ingredient_citric_acid": "Citric acid", "ingredient_calcium_sulfate": "Calcium sulphate", "ingredient_potassium_bisulphite": "Potassium bisulphite", "ingredient_potassium_metabisulphite": "Potassium metabisulphite", "ingredient_l_ascorbic_acid": "L ascorbic acid", "ingredient_potassium_sorbate": "Potassium sorbate", "ingredient_lysozyme": "Egg lysozyme", "ingredient_sulphur_dioxide": "Sulphur dioxide", "ingredient_sulphites": "Sulphites", "ingredient_dimethyldicarbonate_dmdc": "Dimethyldicarbonate (DMDC)", "ingredient_potassium_hydrogen_sulphite": "Potassium hydrogen sulphite", "ingredient_ascorbic_acid": "L ascorbic acid", "ingredient_carbon_dioxide": "Carbon dioxide", "ingredient_argon": "Argon", "ingredient_nitrogen": "Nitrogen", "ingredient_carboxymethylcellulose": "Carboxymethylcellulose", "ingredient_metatartaric_acid": "Metatartaric acid", "ingredient_yeast_mannoproteins": "Yeast mannoproteins", "ingredient_gum_arabic": "Gum arabic", "ingredient_potassium_polyaspartate": "Potassium polyaspartate", "ingredient_fumaric_acid": "Fumaric acid", "ingredient_semi_white_sugar": "Semi-white sugar", "ingredient_white_sugar": "White sugar", "ingredient_extra_white_sugar": "Extra-white sugar", "ingredient_dextrose": "Dextrose", "ingredient_fructose": "Fructose", "ingredient_glucose_syrup": "Glucose syrup", "ingredient_sugar_solution": "Sugar solution", "ingredient_invert_sugar_solution": "Invert sugar solution", "ingredient_invert_sugar_syrup": "Invert sugar syrup", "ingredient_burned_sugar": "Burned sugar", "ingredient_carob_syrup": "Carob syrup", "ingredient_honey": "Honey", "ingredient_sugar": "Sugar", "ingredient_wheat_protein": "Wheat protein", "ingredient_egg_albumin": "Egg albumin", "ingredient_casein": "Milk casein", "ingredient_lemon_juice_concentrate": "Lemon juice concentrate", "ingredient_colouring_concentrate_from_carrot": "Colouring concentrate from carrot", "ingredient_grape_spirit": "Alcohol of vine origin", "ingredient_flavouring": "Flavouring", "ingredient_natural_flavouring": "Natural flavouring", "ingredient_ammonium_bisulphite": "Ammonium bisulphite", "ingredient_alcohol_of_vine_origin": "Alcohol of vine origin", "ingredient_erythorbic_acid": "Erythorbic acid", "ingredient_grape_must_in_fermentation": "Grape must in fermentation", "ingredient_plain_caramel": "Plain caramel", "ingredient_caustic_sulphite_caramel": "Caustic sulphite caramel", "ingredient_ammonia_caramel": "Ammonia caramel", "ingredient_sulphite_ammonia_caramel": "Sulphite ammonia caramel", "ingredient_caffeine": "Caffeine", "ingredient_quinine": "Quinine", ``` ## Icons **Responsible consumption** `0`: Driving car\ `1`: -18\ `2`: Pregnant woman\ `10`: -20\ **Sustainability** Certifications: - `1`: Vegan - `2`: Spanish wineries for emission reduction - `3`: Sustainable winegrowing Portugal Organic: - `1`: Organic - `2`: AB: Agriculture biologique Recyclability: - `1`: Triman outline - `2`: Triman black - `3`: Recyclable - `4`: Info tri etuis flacon square - `5`: Info tri etuis flacon - `6`: Info tri barquette etuis film - `7`: Info tri barquette etuis - `8`: Info tri bouteille - `9`: Info tri bouteille verre **Geographical Indications** - `0`: PGI icon - `1`: PDO icon --- // File: build-with-scantrust/rest-api/product-e-label ## Introduction Electronic labeling, or e-labels, for wine and spirits is governed by EU Regulation 2019/787, which is also known as the "Wine Act". This regulation sets the rules for the production, presentation, and labeling of wine, including the use of e-labels. In addition, the EU Regulation 1169/2011 (Food Information to Consumers Regulation or FIC Regulation) also sets the requirements for labeling. e-labels appear on product packaging or on digital marketing materials and must contain all of the legally required information about a product, including, the product name or brand, volume, alcohol content, ingredients, and allergen information. The e-label format must comply with the EU regulations for food and beverage labeling, including the requirements for font size, language, and legibility. There are 3 ways e-labels can be managed in Scantrust 1. Edit e-label data in the scantrust portal under the **products > e-label** page 2. Using the Scantrust excel file bulk upload feature available in our enterprise plans 3. Upload the e-label data for each product with the **Scantrust e-label JSON API** ![e-label-1](/doc-img/e-label-1.png) ![e-label-2](/doc-img/e-label-2.png) The below process describes how to upload and download e-label data using the Scantrust REST Api. Because e-label data is set on the product, you will need a **UAT token** with the same minimum permissions as for managing products: - `product_create` - `product_delete` - `product_edit` - `product_view` The UAT token must be set in the header fields of all requests as described in [Authentication & Tokens](/docs/build-with-scantrust/rest-api/authentication-and-tokens#using-the-uat-token). ## API Design ### POST: /api/v2/products/\{product_id\}/elabel/ Sets all e-label JSON data for a product **_Response (201): Status CREATED_** ```json { "name": "demoproduct", // product sku "is_published": false, "data": { "editor": { ... }, "published": { ... } } } ``` Note that a complete JSON object needs to be posted each time an e-label is updated. This endpoint does not support partial updates of the JSON. For an example of a full set of data to POST for the editor section, [see JSON example here](/docs/build-with-scantrust/rest-api/product-e-label-json) Once the `data` object is ready to be published, you will need to do another `POST` request to set the `is_published` flag to `true`. ### GET: /api/v2/products/\{product_id\}/elabel/ Returns all e-label JSON data for a product **_Response (200): Status OK_** Example JSON: ```json { "id": 1272, "company": 7583, "name": "black-deer-cb-2018", "data": { "editor": { "type": "wine", "theme": { "primary": "#F01515", "background": "#D8D790", "alcoholColor": "#890022" }, "footer": { "first_line": "", "second_line": "" }, "header": { "logo": "", "title": "E-Label" }, "default_country": "", "default_language": "en", "reviewed_languages": ["en"], "available_languages": ["en"], "enforce_language_per_country": false, "sections": [ { "key": "product-infos" }, { "key": "geographical-indications" }, { "key": "serving-infos" }, { "key": "ingredients" }, { "key": "allergens" }, { "key": "nutrition" }, { "key": "responsible-consumption" }, { "key": "sustainability" }, { "key": "business-operator" }, { "key": "brand-infos" } ], ... (JSON objects for each of the above sections) "published": { ... } ``` An e-label JSON contains 2 set of the e-label data at all time. - `editor` : draft version of the data, the data that you see in when using the e-label management tool. - `published` : Live data. What consumer see when they open an e-label landing page. The elabel JSON consists of a set of generic fields and 10 sections each with its own JSON object: #### Generic Fields - `type` : wine, spirit or aromatised_wine - `theme` : sets the `primary`, `background` and `alcoholColor` of the landing page - `footer` : sets the text for the `first_line` and `second_line` of the e-label footer - `header` : sets the `logo` and `title` (default: "E-Label") - `default_country` : sets the data for the country to be shown when an e-label is scanned in a non-EU country. This is a 2 letter uppercase country code, eg: 'FR' for France - `default_language` : sets the default language (default: English), this is a 2 letter lowercase language code, eg: 'en' for English - `reviewed_languages` : array of reviewed languages available to users on the landing page. - `available_languages` : array of available languages that may not have been reviewed yet. The review process happens in the translation section of the e-label editor. Once a language gets 'approved' it will be added to the `reviewed_languages` array. - `enforce_language_per_country` : forces a fixed language for each country (default: false) #### Section Objects - Product Information `product-infos` - Ingredients `ingredients` - Serving Information `serving-infos` - Nutrition Table `nutrition` - Responsible Consumption Message `responsible-consumption` - Sustainability Certifications `sustainability` - Geographic Indications `geographical-indications` - Business Operators `business-operator` - Branding Info `brand-info` - Impressum `impressum` Each section contains variable information inluding **country specific** data and **translations** fields as well as pre-translated **system keys** These fields will be formatted as follow: ```json /* country specific field */ "serving": { "default": 100, // default value "FR": 76 // country specific value ... } /* translations field */ "product_name": { "en": "Demo Product Name", "de": "Name des Demoprodukts", "fr": "Nom du produit de démonstration" ... } /* system key field */ "type": "wine_type_wine" /* non-translated field */ "vine_variety": "Merlot" ``` ### Fallback behaviour: - for **country specific** fields, if a the country does not have a specific value, it will fallback to the `default` value. - for **translations** fields, if there is no entry for the selected language on the landing page, it will fallback to the `default_language` value ## System keys **System keys** are a set of pre-translated value used throughout the e-label. All the values that you can usually see from our various dropdown in the editor are based on system keys. When possible, you should use these keys since it would greatly reduce the workload required to create an e-label JSON since all the translations would automatically work for these terms. For a full list of **system keys** please refer to [this page](/docs/build-with-scantrust/rest-api/product-e-label-system-keys) In most cases, a **system key** field can also be used like a **translations** field by simply replacing the content from a key to an object containing the translations. ## product-infos System key fields: - `type` - `wine_sweetness` - `wine_colour` - `production_method` - `bottled_in_protected_atmosphere`: Only needed if product uses packaging gases Translation fields: - `product_name` - `sales_description` - `traditional_terms` - `production_method`: use system key if possible - `type`: use system key if possible Non-translated fields: - `vine_variety` Other fields - `origin`: 2 letter uppercase country code array - `volumes`: bottle volumes in ML string array - `alcohol_volume`: alcohol volume as a string ```json "product-infos": { "type": "wine_type_wine", "origin": [ "FR" ], "volumes": [ "750" ], "product_name": { "en": "Demo Product Name", "de": "Name des Demoprodukts", "nl": "", "fr": "Nom du produit de démonstration" }, "alcohol_volume": "13", "sales_description": { "en": "A product description", "de": "Eine Produktbeschreibung", "fr": "Une description du produit" }, "traditional_terms": {}, "bottled_in_protected_atmosphere": "bottled_in_protected_atmosphere_1", "vintage_year": "2018", "wine_sweetness": "wine_sweetness_extra_dry", "vine_variety": "Merlot", "wine_colour": "wine_colour_red", "production_method": "production_methods_barrel_aged" } ``` ## ingredients There are 2 ways of declaring your ingredient list: - Using the scantrust *system keys*: set `use_free_form` to `false`. This is the recommended approach - Free text field: set `use_free_form` to `true` If you chose to use the free text field option, you will need to fully format and translate your ingredient list according to the regulations. If you use the system keys, all the formatting and translations will be handled automatically by the e-label landing page. **Declare using system keys** Each ingredient is an individual object in the `list` array and uses the following attributes: - `category`: system-key field - `description`: system-key field, can also contain translations - `is_organic`: boolean, defines if an ingredient should appear as organic - `is_allergen`: boolean, defines if an ingredient should appear as allergen - `is_contained_display`: boolean, this defines how a category should be formatted. This will only affect a few specific categories, if you aren't sure how a category should be displayed, set this to `false` ```json "ingredients": { "list": [ { "category": "ingredient_category_main_ingredients", "description": "ingredient_grapes", "is_contained_display": false, "is_organic": true }, { "description": "ingredient_calcium_sulfate", "category": "ingredient_category_acidity_regulators", "is_contained_display": false }, { "description": "ingredient_tartaric_acid", "category": "ingredient_category_acidity_regulators", "is_contained_display": false }, { "description": { "en": "Special ingredient", "fr": "Ingrédient spécial" ... }, "category": "ingredient_category_antioxidant", "is_allergen": true } ], "free_text": { "en": "Alcohol of vine origin*, Acidity regulators contains Calcium sulphate and/or Tartaric acid (L(+)-), Colours", "fr": "Alcool d'origine viticole*, Régulateurs d'acidité contient Sulfate de calcium et/ou Acide tartrique [L(+)-], colorants" ... }, "use_free_form": false }, ``` ## serving-infos Country specific fields: - `unit`: Unit to show for the serving size & volume for a specific country. Only `CL` and `ML` are currently supported - `serving`: Serving size per country in ML System key fields: - `glass_icon`: Glass icon displayed on the landing page page - `bottle_icon`: Bottle icon displayed on the page ```json "serving-infos": { "unit": { "FR": "CL", "default": "ML" }, "serving": { "default": 100, "FR": 75 }, "glass_icon": "default_wine", "bottle_icon": "default_wine" }, ``` ## nutrition The nutrition table is an array containing each nutritional information line as well as some nested information under specific items. Fields: `key`: System key, do not change `unit`: Unit displayed for that line, do not change `per_100ml`: Number `less_operator`: Set to true if you want the entry to show as `< 0g` instead of `0g` **The structure and order of this table has to be identical to the example below in order to respect the regulation.** ```json "nutrition": { "table": [ { "key": "energy", "unit": "kJ", "children": [ { "key": null, "unit": "kcal", "per_100ml": 75, "less_operator": false } ], "per_100ml": 312, "less_operator": false }, { "key": "fat", "unit": "g", "children": [ { "key": "saturated_fat", "unit": "g", "per_100ml": 0.5, "less_operator": false } ], "per_100ml": 0.5, "less_operator": false }, { "key": "carbohydrate", "unit": "g", "children": [ { "key": "sugar", "unit": "g", "per_100ml": 0, "less_operator": false } ], "per_100ml": 0.4, "less_operator": false }, { "key": "protein", "unit": "g", "per_100ml": 0, "less_operator": false }, { "key": "salt", "unit": "g", "per_100ml": 0.5, "less_operator": false } ] }, ``` ## responsible-consumption Translations fields - `description`: Custom responsible consumption message System keys fields - `icons`: Array of system keys icons. Other fields - `show_responsible_message`: Show default responsible message: "Alcohol abuse is dangerous to your health." - `responsible_drinking_logo`: Show the "Wine in moderation" or "Drink responsibly" official images depending on your product type. - `custom_icons`: Array of custom icons. - `name`: file name, internal - `url`: file url - `wide`: boolean, defines if the image should take the full width of the screen when displayed - `countries`: Array of countries where the icon should be visible. Use `all` to show everywhere, use 2 letter uppercase country code otherwise ```json "responsible-consumption": { "icons": [ "0", "1", "2" ], "description": { "en": "Don't drink and drive", "fr": "Boire ou conduire, il faut choisir" }, "custom_icons": [ { "name": "custom image", "url": "https://cc.staging.scantrust.io/c/6644/stcfile/blob-ngneoq", "wide": false, "countries": [ "all" ] } ], "show_responsible_message": true, "responsible_drinking_logo": true }, ``` ## sustainability Translation fields - `organic_description`: A sustainability message related to organic - `recyclability_description`: A sustainability message related to recyclability - `certifications_description`: A sustainability message related to certifications System keys fields - `organic_icons`: Array of system keys icons. - `recyclability_icons`: Array of system keys icons. - `certifications_icons`: Array of system keys icons. Other fields - `italian_recyclability`: Italian recycling law module, no documentation available yet, keep the structure identical to the example json below. - `custom_icons`: Array of custom icons. - `name`: file name, internal - `url`: file url - `wide`: boolean, defines if the image should take the full width of the screen when displayed - `countries`: Array of countries where the icon should be visible. Use `all` to show everywhere, use 2 letter uppercase country code otherwise ```json "sustainability": { "custom_icons": [ { "name": "custom image", "url": "https://cc.staging.scantrust.io/c/6644/stcfile/blob-ngneoq", "wide": false, "countries": [ "all" ] } ], "organic_icons": [ "1", "2" ], "organic_description": { "en": "An organic message", "de": "Eine organische Botschaft", "fr": "Un message organique" ... }, "recyclability_icons": [ "6" ], "certifications_icons": [ "1" ], "italian_recyclability": { "list": [], "is_enabled": false }, "recyclability_description": { "en": "A sustainability message", "de": "Eine Botschaft zur Nachhaltigkeit", "fr": "Un message de durabilité" ... }, "certifications_description": { "en": "A certification message", "de": "Eine Zertifizierungsnachricht", "fr": "Un message de certification" ... } }, ``` ## geographical-indications System keys fields: - `icon`: PDO / PGI system key icon Non-translated fields: - `description` ```json "geographical-indications": { "list": [ { "description": "AOC Pinot noir", "icon": "0" } ] }, ``` ## business-operator Country specific fields: - `bottled_by`: Bottler address per country - `imported_by`: Importer address per country - `producted_by`: Producer address per country ```json "business-operator": { "bottled_by": { "default": "Chateau Demo, 333 avenue de Bordeaux", "FR": "Custom bottler address for France" }, "imported_by": { "default": "Importer Name, 333 avenue de Bordeaux", "FR": "Custom importer address for France" }, "produced_by": { "default": "Chateau Demo, 333 avenue de Bordeaux", "FR": "Custom producer address for France" } }, ``` ## brand-info Translation fields - `description` Other fields - `image`: Image url - `text_color`: Text color as an hex string - `link`: URL to the brand website. Only available for `spirit` template type ```json "brand-infos": { "link": "", "image": "https://cc.staging.scantrust.io/c/6644/stcfile/blob-joobpu", "text_color": "#FFFFFF", "description": { "en": "Brand message", "fr": "Message de la marque" } }, ``` ## impressum Country specific fields - `free_text`: Free text field containing impressum informations saved as an HTML string. ```json "impressum": { "free_text": { "default": "

An impressum

", "DE": "

An impressum for germany

" } }, ``` ## Full JSON Example [for a full JSON example click here](/docs/build-with-scantrust/rest-api/product-e-label-json) --- // File: build-with-scantrust/rest-api/product-upload ## Overview **Products** in Scantrust are used as important objects in scantrust and are used in various ways: 1. **Campaigns**: objects are assigned to campaigns 2. **Codes**: products are used when creating a workorder. Codes are automatically assigned to products 3. **Scans**: product data is returned when a code is scanned and can be used as a filter in the dashboard 4. **Landing pages**: product data is displayed in Landing Pages 5. **e-label**: each product can have e-label data assigned to it 6. **Redirection**: a product can have a product URL which can be used to redirect a consumer after scanning Products can be created in 3 ways: 1. Manually through the portal by **clicking the (+) icon the product list page**. Each product can be given an `SKU`, `name`, `description`,`url` and an `image` 2. Automated through a **CSV file** upload using the portal 3. Automated through an **upload handler** which calls the **Product REST API** The below process described uploading products with the Scantrust **Product REST API**. To get started you will need a**UAT token** with the right permissions. As a minimum this UAT token needs to have access to the following permissions: - `product_create` - `product_delete` - `product_edit` - `product_view` The UAT token must be set in the header fields of all requests as described in [Authentication & Tokens](/docs/build-with-scantrust/rest-api/authentication-and-tokens#using-the-uat-token). You will also need **at least one Brand set up in the Portal**: each product you create needs to be assigned to a brand. This is done with a **brand reference** which can be retrieved from the `/api/v2/brands/` endpoint. ## Your Upload Handler You will need to write an **upload handler** which will communicate with the API endpoint, handle the data to be uploaded and processes the response from the server. The job of the **upload handler** is to: 1. Pre-validate the data to be uploaded 2. Format the data to be uploaded into the specified JSON structure 3. Upload the JSON data to the API 4. Process the response ### Pre-Validation of uploaded file It is recommended to pre-validate the data to be uploaded. This prevents unnecessary calls to the API. The following minimum pre-validation should be done: 1. Format Checking: - Verify the data contains all required fields. - Verify that all items have the same # of fields. 2. Preliminary Error Checking: - Verify that no ‘SKU’ value is duplicated. - Verify that no ’SKU’ value is blank. ### Format data to be uploaded Data must be uploaded using JSON as the format. The API will accept only one product per call. Therefore the data must be split into batches of max 1 item per POST. It is recommended to keep a log file containing the SKU of previously uploaded products so they can be skipped when uploading again. **General flow**: 1. Process the data and create an array of JSON objects. 2. Create batches 1 object each. 3. Ignore previously uploaded rows. 4. Convert all values to strings. 5. Send a POST request to the API `/api/v2/products/` 6. Save the SKU as 'uploaded' in a logfile: - Subsequent runs should ignore all keys that are in the 'uploaded' file. ## API Design /api/v2/products/ ### POST: /api/v2/products/ Uploads a product for any brand the company owns and assigns it to the right campaign. One item per POST is allowed. Multiple requests can be made to update more items. | Attribute | Required? | Description | | :---------- | :-------- | :----------------------------------------------- | | sku | required | Unique product SKU in the company. | | brand | optional | The ID (integer) or reference (string) of the brand. They can be retrieved by calling `/api/v2/brands/` [endpoint](/docs/build-with-scantrust/rest-api/product-upload#overview). | | name | required | Name of the product. | | description | optional | A brief description of the product. | | client_url | optional | A product URL that may be used to redirect codes if a campaign is not active for the product. | | image | optional | Include a product image, typically used on STC landing pages. If not set, the brand image will be used. To upload images use [multipart](/docs/build-with-scantrust/rest-api/product-upload#upload-images). | | campaign | optional | The ID of an existing campaign in the company to which this product must be added. | **_Example Parameters POST (application/json)_ with brand ID** ```json { "sku": "PR1", "brand": 50, "name": "Product One", "description": "The first product in a line of many others.", "client_url": "http://www.examplebrand.com/productone" } ``` **_Example Parameters POST (application/json)_ with brand reference** ```json { "sku": "PR2", "brand": "some brand", "name": "Product Two", "description": "The second product in a line of many others.", "client_url": "http://www.examplebrand.com/producttwo" } ``` **_Response (200): Status OK_** When a product is successfully posted, a response will be given. ```json { "id": 6629, "uuid": "1c262803-072c-4809-a957-39dd8c807d78", "sku": "PIG12345", "image": null, "name": "Hello Name", "description": "This is a test", "label": "Test", "brand": { "id": 50, "name": "cool brand name", "image": "http://www.examplebrand.com/brand_image.jpg" }, "company": { ... }, "creation_date": "2021-04-09T04:48:48.956138Z", "client_url": "http://www.scantrust.com", "is_archived": false, "campaign": 575 } ``` **_Response (400) : Invalid Data Format_** An exception will be raised when any of the following is detected in a product: - Duplicate SKU - Invalid brand ID or brand reference - Required fields left empty Product is posted with an invalid brand ID or reference: ```json { "brand": [ "Invalid Brand reference or id." ] } ``` When product is posted or patched with when an SKU already exists: ```json { "sku": [ "SKU must be unique within this company." ] } ``` ### PATCH: /api/v2/products/\{id\}/ Endpoint to patch (update) existing products. Any number of editable fields can be patched and adjusted for this specific product. Updating requires the ID of the product to be appended to the endpoint URL. When patching, all fields are optional and only the posted fields will be adjusted. | Attribute | Required? | Description | | :---------- | :-------- | :----------------------------------------------- | | sku | optional | Unique product SKU in the company. | | brand | optional | The ID (integer) or reference (string) of the brand. They can be retrieved by calling `/api/v2/brands/` [endpoint](/docs/build-with-scantrust/rest-api/product-upload#overview). | | name | optional | Name of the product. | | description | optional | A brief description of the product. | | client_url | optional | A product URL that may be used to redirect codes if a campaign is not active for the product. | | image | optional | Include a product image, typically used on STC landing pages. If not set, the brand image will be used. To upload images use [multipart](/docs/build-with-scantrust/rest-api/product-upload#upload-images). | | campaign | optional | The ID of an existing campaign in the company to which this product must be added. | **_Example Parameters PATCH /api/v2/products/50/ (application/json)_** ```json { "description": "The first product in a line of many others.", "client_url": "http://www.examplebrand.com/productone" } ``` This updates only the description and client_url of product with ID=50. #### Upload images To upload images `Multipart` needs to be used. See the python example below: ```python product_id = 1 def patch_multipart(self, path, files, data, raw_resp=False): resp = requests.patch( url=self.server_url + path, data=data, files=files, headers=self._auth() ) if raw_resp: return resp self.validate_resp(resp) return resp.json() with open('image.jpeg', 'rb') as f: files = {'image': ('image.jpeg', f)} resp = self.server.patch_multipart('/api/v2/products/%s/' % product_id, data=None, files=files) ``` ### GET: /api/v2/products/?sku\_\_exact=\{sku\} This endpoint can be used to retrieve a specific product ID by SKU. By passing ?sku\_\_exact in the endpoint URL, the system will look for an exact match within the company's products. Only one result should be returned since SKU is unique per company. **_Response (200): Status OK_** When a product is successfully found, a response will be given. The results comes as a LIST. The first object in that list should be taken to know the ID. ```json { "count": 1, "next": null, "previous": null, "results": [ { "id": 959, "uuid": "701b1a6f-e751-4c20-8012-028063322fb0", "sku": "prod2", "image": null, "name": "Product #2", "description": "", "label": "Product #2", "brand": { "id": 749, "name": "100 Brand", "image": null }, "company": { "id": 871, "uuid": "1fc1a571-1918-4f7d-b826-510752156cdf", "name": "Test brand" }, "creation_date": "2017-02-16T08:59:08.774705Z", "client_url": "", "is_archived": false, "code_count": 0, "active_code_count": 0, "blacklisted_code_count": 0, "campaign": { "id": 188, "name": "test campaign", "description": "camp", "is_archived": false } } ] } ``` **_Example product not found:_** ```json { "count": 0, "next": null, "previous": null, "results": [] } ``` --- // File: build-with-scantrust/rest-api/rate-limits ## Scantrust rate limits The Scantrust API has several levels of rate limiting implemented. A summary of these limits can be found below. Whenever an API client exceeds the limits, the request will be throttled and a fixed error response will be returned. ## Throttle scopes and limits | Scope | Limit | Description | | ----------- | ------------------------ | ------------ | | **anonymous** | 200/minute | Anonymous requests (unauthenticated e.g. third party scans) | **authenticated** | 3000/minute | Authenticated requests associated to an API user (e.g. Product creation) | **consumer** | 2000/minute | Requests to the consumer API (using campaign key e.g. `/api/v2/consumer/campaign/`) | **scm_update** | 10/second | SCM Updates (takes precedence over '*authenticated*' scope) | **login actions** | 10/minute | Requests to the reset password/account endpoints ## Throttled error response ### 429 - TOO MANY REQUESTS *Response when exceeding the above limits.* ```json { "detail": "Request was throttled. Expected available in x seconds.", "code": "throttled" } ``` --- // File: build-with-scantrust/rest-api/samples-javascript This is a simple example which shows communicating with the server to retrieve /me user info as well as update SCM data for a set of codes. Shows the synchronous and asynchronous methods for the API access. Requires the `axios` package, which needs to be installed with `npm install` ```javascript // // Node.js example as found on https://devportal.scantrust.com // // const axios = require('axios') // // set the below two based on your token / environment. // two options are: STAGING: api.staging.scantrust.io or PRODUCTION: api.scantrust.com // const API_SERVER = 'https://api.staging.scantrust.io' // ensure no trailing "/" const UAT_TOKEN = 'ENTER_YOUR_UAT_TOKEN_HERE' // UAT token created by the user on the portal // set the UAT token for every request axios.defaults.headers.common['Authorization'] = `UAT ${UAT_TOKEN}` axios.defaults.baseURL = API_SERVER function delay(ms) { return new Promise((resolve) => setTimeout(resolve, ms)) } // // EXAMPLE SCENARIO: // 1. call sync first: update qr codes with a pallet number // 2, call async to update based on pallet number // 3. poll the task to see if it's completed. // ;(async () => { // // optional: call the /me endpoint to see who you are // let response = await axios.get(`/api/v2/me`) let me = response.data console.log( `UAT token is valid for user: ${me.email} (${me.id} ) as ${me.role} for company ${me.company.name} (${me.company.id})` ) // // Example 1: synchronous scm update // Pass a list of items, codes will be updated one-by-one based on the data_key // // replace this list with real codes from your campaign. // const uploadDataSync = { data_key: 'extended_id', items: [ { extended_id: 'C0678AB9B80410MRP0410FCF4264BBF', pallet_number: 'PALLET_001' }, { extended_id: '85C7C6504B0410MRP04106924D94990', pallet_number: 'PALLET_001' }, { extended_id: '91D819942D0410MRP0410FB1427B87F', pallet_number: 'PALLET_001' }, { extended_id: '830119BC410410MRP0410FC44A34834', pallet_number: 'PALLET_001' }, ], } let syncResponse = await axios.post(`/api/v2/scm/upload/`, uploadDataSync) console.log( `Sync update returned ${syncResponse.status} (${syncResponse.statusText}):`, syncResponse.data ) // // Example 2: asynchronous scm update // Pass a constraint // all codes matching that constraint will be updated // because this can take a while if the number of codes is big, returns a task with an id // then poll the task // const uploadDataAsync = { constraints: { pallet_number: ['PALLET_001'], }, scm_data: { shipment_number: `SHIPMENT_001`, }, // campaign: 11, // optional. Add a campaign-ID to prevent codes in other campaigns from being updated. reference: 'SCM upload reference ' + Date.now(), // optional. Pass in a reference for easy lookup later } let asyncResponse = await axios.post(`/api/v2/scm/upload/async/`, uploadDataAsync) console.log( `Async update returned ${asyncResponse.status} (${asyncResponse.statusText}):`, asyncResponse.data ) let task_id = asyncResponse.data.task_id let task = (await axios.get(`/api/v2/scm/tasks/${task_id}/`)).data // // Poll every 5 seconds to see if the task has completed // while (task.state === 'in-progress') { console.log('task in progress...') await delay(5000) // wait 5 seconds task = (await axios.get(`/api/v2/scm/tasks/${task_id}/`)).data } console.log('task complete:') console.log(task) })().catch((err) => console.log(err.stack)) ``` --- // File: build-with-scantrust/rest-api/samples Scantrust currently provides samples for following programming languages: 1. ### [Javascript (node.js with async/await)](/docs/build-with-scantrust/rest-api/samples-javascript) --- // File: build-with-scantrust/rest-api/scan-data-download # Overview 1. [Export as JSON](#exporting-as-json) for BI tools 2. [Export as CSV](#exporting-as-csv) 3. [Parameters](#full-parameter-list) ### Authentication & Authorization A UAT token should be used, as described in the [Authentication & Tokens](/docs/build-with-scantrust/rest-api/authentication-and-tokens#using-the-uat-token) section. - The following permission is required: - `scans_download` ## Exporting As JSON ### `/api/v2/dashboard/scans/` Exporting scan data for BI purposes should be done as json via `cursor` mode. This method will export all scans for all products by default, and provides the best performance. ### Parameters | Parameter | Description | | :---------- | :----------------------------------------------------------------------------------------- | | `page_mode` | `"cursor"` required. Failure to send this will result in inconsistent pagination | | `timeframe` | A timeframe is required, eg. `1m` for 1 month. Using `date_from/date_to` is also supported | 1. After initial loading of data is complete, the `timeframe` should be adjusted down to `1w` or `1m`. 2. See the [full list](#full-parameter-list) for more filter options if required. ### Example Make the first request using the paramters as described above. After retrieving the results, follow the `next` links for **all** subsequent requests. Responses will not contain overlapping data. ``` https://api.scantrust.com/api/v2/dashboards/scans/ ?page_mode=cursor &timeframe=1m ``` The response will include a `next` link. This link should be used to make the next request, and should not be modified. When there is no more data available the `next` link will be `null` and reading should stop. | Parameter | Required? | Description | | :---------------- | :---------------------------------- | :------------------------------------------------------------------- | | campaign_id | required | ID of the campaign | | timeframe | required if date_from not specified | 1y(past 1 year), 2m(past 2 months), 3w(past 3 weeks), 1d(past 1 day) | | date_from | required if timeframe not specified | ISO date (e.g. 2018-12-21) | | date_to | optional | ISO date (e.g. 2018-12-21). Default to current date if not specified | | flags | optional | counterfeit,out-of-market etc. | | activation_status | optional | inactive=0, active=1, blacklisted=2 | | \{scm field\} | optional | Any SCM field key/value as a filter. | | product | optional | product ID (not SKU) | See the [response format](#response-item-format-json) section for the full contents of a scan record. ```jsonc { "next": "https://api.scantrust.com/...?cursor=...", "previous": null, "results": [ { "uuid": "ec56f4ab-ed5a-4759-ad4c-7e5e59e650ea", "code_message": "K84KI50SIV0610KYXLBYPQBH" // ... } ] } ``` ## Exporting As CSV ### `/api/v2/dashboard/scans/csv/` CSV export supports [all parameters](#full-parameter-list), with a few changes: 1. Required: either `campaign` or `product` 2. `limit` is not supported It is possible to download scan data as CSV if required, though this is not recommended for large amounts of data. Support for doing so will be removed in the future. Data export via the [JSON Api](#exporting-as-json) is recommended. ``` https://api.scantrust.com/api/v2/dashboards/scans/csv/ ?timeframe=1w &campaign=43929 ``` ### Example Response Data CSV response data does not follow the same naming conventions as the JSON body for historical reasons. Please take care to note the differences, but in general this means that nested objects are now `scm.field`, `product_name` is `product.name`, etc. ```csv HTTP/1.1 200 OK Content-Disposition: attachment; filename=filtered_scan_data.csv; Content-Encoding: gzip Content-Length: 176990 Content-Type: text/csv -- body -- scan.uuid,scan.datetime,scan.timestamp,scan.app,scan.reason,scan.result,scan.computed_status,scan.auth_failure_mode,scan.flags,scan.unique_user,scan.install_id,scan.utid,user.email,code.extended_id,code.serial_number,code.activation_status,code.blacklist_reason,product.id,product.sku,product.name,product.brand_name,device.imei,device.model,device.model_name,device.os,location.method,location.country_code,location.country,location.province,location.city,location.lat,location.lng,scm.case_number,scm.consumed_date,scm.distributor,scm.entry_port,scm.factory_date,scm.intended_market,scm.pallet_number,scm.production_batch,scm.production_date,scm.production_line,scm.qa_inspector,scm.rcontainer,scm.reel_id,scm.rfid,scm.rza_test_run,scm.sell_by_date,scm.shipment_number,scm.tbox c08af33c-720b-4a3f-a89f-0f86f39d5152,2021-04-14T09:30:36.531580Z,1618392636,other,query,ok,failure,,blacklisted,118901e4-9d04-11eb-a54f-fa97856bd60e,,118901e4-9d04-11eb-a54f-fa97856bd60e,,B84EC06A80061SA7842119AA,GN3NYVYR,2,4,2017,12345678901234,SmartMilk ELN,SmartMilk,,MAC,other,other,ip_address,HK,Hong Kong,Central,Central,22.2795000,114.1460000,,,,,,,,,,,,,,,,,, 4ca631eb-d68a-40ec-8b24-17026f28df3b,2021-03-17T12:54:23.219715Z,1615985663,other,query,ok,verified,,,e586c198-871f-11eb-a6d6-fa3f7f318d1b,,e586c198-871f-11eb-a6d6-fa3f7f318d1b,,1CE523C048043SMPHGF3SF544215B1C,EDZDSAEY,1,0,1919,SS001,SantiagoShoes2017,JJ,,IPHONE,iPhone,ios,ip_address,KR,South Korea,Seoul,Seoul,37.5985000,126.9783000,,,,,10/1/18,us,,,1/1/18,,,C1,1,,TR1,,ship_1,763C950618043SMPHGF3S4F94A13BE5 ``` ## Full Parameter List It is recommended that you export data uising the standard method above, and then filter normally in your BI tool. If you do need to do futher filtering, the following parameters are supported: | Parameter | Type | Required? | Description | | :-------------------- | :---- | :------------------- | :------------------------------------------------------------- | | `campaign` | `int` | required1 | Show only scans from products in this campaign id e.g `7298` | | `product` | `int` | required1 | Show only scans from this product id, e.g `10991` | | `timeframe` | `str` | required2 | `1[ymdw]`, ex: `10d` or `3m`. Will override `date_[from,to]` | | `date_from` | `str` | required2 | ISO 8601 date (eg. `2018-12-21T23:59:59.549Z`) | | `date_to` | `str` | required2 | ISO 8601 date (eg. `2018-12-21T23:59:59.549Z`) | | `workorder` | `int` | optional | Show only scans from codes generated as part of this workorder | | `code_message` | `str` | optional | Show only scans for this extended id (e.g. `dli2910_z37`) | | `flags` | `str` | optional | `counterfeit`, `out-of-market`, etc. | | `activation_status` | `int` | optional | inactive=0, active=1, blacklisted=2 | | `scm_{fieldname}` | `str` | optional | Any SCM field key & value, ex `scm_factory=co` | | `limit` | `int` | optional | Number of scans to return per page. Not valid for CSV | | _`token`_3 | `int` | optional | You JWT access token can be passed here if required | 1. One of these two fields is required. If both are passed, then `product` is used. 2. Either a `timeframe` or a `from`/`to` pair is required 3. Please use the standard Authorization header, support for this method is deprecated ## Additional Information ### How To Find Your Campaign ID 1. Choose "**Campaigns**" in the left hamburger menu 2. Click the **Options** icon for the campaign 3. The URL will contain the Campaign ID at the end: 1. `/#/campaigns/43929/` indicates a Campaign ID of `43929` ### How to find your campaign SCM Field Keys If you do not know the name of the scm fields you wish to filter by, you can find them in the campaign options: 1. Click on **Campaigns** in the left menu 2. Click the **Options** icon for the campaign 3. Click the **SCM T&T** tab This panel contains all fields defined for the campaign. To filter by these, add an `scm_` prefix to the `key` and pass as a querystring paramter. > A field with the key `facility_id` should be passed as `scm_faclility_id` ### Additional Examples List scans made in the previous one month for `campaign 195`, which were flagged `out-of-market`, and which have `intended_market` set to China (`zh`): > ``` > /api/v2/dashboard/scans/ > ?campaign=195 > &timeframe=1m > &flags=out-of-market > &scm_intended_market=zh > ``` Show scans for `campaign 195`, made in the `past year`, and which were for codes that were Inactive (`activation_status=0`): > ``` > /api/v2/dashboard/scans/ > ?campaign=195 > &timeframe=1y > &activation_status=1 > ``` ## Response Body (JSON) The following body is for the standard [JSON Export](#exporting-as-json). If you do not use a `cursor` this will also have a `count: int` field. ```jsonc { "next": null, "previous": null, "results": [ // zero or more results ] } ``` ## Response Item Format (JSON) There are several sections in the json. For a glossary of all the scan results fields see [Scan Data Glossary](/docs/build-with-scantrust/rest-api/scan-data-fields) ```jsonc { "uuid": "4ca631eb-d68a-40ec-8b24-17026f28df3b", "code_message": "1CE523C048043SMPHGF3SF544215B1C", "consumer_email": "", "app": "other", "reason": "query", "result": "ok", "auth_failure_mode": "", "activation_status": 1, "blacklist_reason": 0, "computed_status": "verified", "classification": 1, "is_blacklisted": false, "status": "third-party", "creation_date": "2021-03-17T12:54:23.219715Z", "scan_timestamp": "2021-03-17T12:54:23.219715Z", "mobile_scan_timestamp": null, "device": { "model": "IPHONE", "model_name": "iPhone", "os": "ios", "brand": "Apple" }, // current scm data at the time of download "scm_data": { "tbox": "763C950618043SMPHGF3S4F94A13BE5", "reel_id": "1", "rcontainer": "C1" }, "country_name": "South Korea", "country_code": "KR", "province_name": "Seoul", "city": "Seoul", "lat": 37.5985, "lng": 126.9783, "serial_number": "EDZDSAEY", "product_id": 1919, "product_sku": "SS001", "product_name": "SantiagoShoes2017", "product_image": "c/446/product/blob-tjyztv.png", "code_id": 7519082, "flags": [], // user related fields "install_id": null, "utid": "e586c198-871f-11eb-a6d6-fa3f7f318d1b", // optional user filds "user_id": 400, "user": { "first_name": "User", "last_name": "Name", "email": "user.name@company.com" } } ``` ## GET: /api/v2/dashboard/scans/csv Retrieves a CSV-version of the scan-data. **Note:** All parameters and filters applicable to `/api/v2/dashboard/scans/` are identical (see above) The response will be formatted as comma-separated non-quoted CSV with header. For an example see below. There are several sections of the CSV which are broken up with dot-notation, for example: `scan.computed`, `code.extended_id`, etc. For a glossary of all the scan results fields see [Scan Data Glossary](/docs/build-with-scantrust/rest-api/scan-data-fields) **_Response (200): Status OK_** Example CSV: ```csv scan.uuid,scan.datetime,scan.timestamp,scan.app,scan.reason,scan.result,scan.computed_status,scan.auth_failure_mode,scan.flags,scan.unique_user,scan.install_id,scan.utid,user.email,code.extended_id,code.serial_number,code.activation_status,code.blacklist_reason,product.id,product.sku,product.name,product.brand_name,device.imei,device.model,device.model_name,device.os,location.method,location.country_code,location.country,location.province,location.city,location.lat,location.lng,scm.case_number,scm.consumed_date,scm.distributor,scm.entry_port,scm.factory_date,scm.intended_market,scm.pallet_number,scm.production_batch,scm.production_date,scm.production_line,scm.qa_inspector,scm.rcontainer,scm.reel_id,scm.rfid,scm.rza_test_run,scm.sell_by_date,scm.shipment_number,scm.tbox c08af33c-720b-4a3f-a89f-0f86f39d5152,2021-04-14T09:30:36.531580Z,1618392636,other,query,ok,failure,,blacklisted,118901e4-9d04-11eb-a54f-fa97856bd60e,,118901e4-9d04-11eb-a54f-fa97856bd60e,,B84EC06A80061SA7842119AA,GN3NYVYR,2,4,2017,12345678901234,SmartMilk ELN,SmartMilk,,MAC,other,other,ip_address,HK,Hong Kong,Central,Central,22.2795000,114.1460000,,,,,,,,,,,,,,,,,, 4ca631eb-d68a-40ec-8b24-17026f28df3b,2021-03-17T12:54:23.219715Z,1615985663,other,query,ok,verified,,,e586c198-871f-11eb-a6d6-fa3f7f318d1b,,e586c198-871f-11eb-a6d6-fa3f7f318d1b,,1CE523C048043SMPHGF3SF544215B1C,EDZDSAEY,1,0,1919,SS001,SantiagoShoes2017,JJ,,IPHONE,iPhone,ios,ip_address,KR,South Korea,Seoul,Seoul,37.5985000,126.9783000,,,,,10/1/18,us,,,1/1/18,,,C1,1,,TR1,,ship_1,763C950618043SMPHGF3S4F94A13BE5 ``` --- // File: build-with-scantrust/rest-api/scan-data-fields These fields are returned by the **download scans** API. See [Download Scan Data](/docs/build-with-scantrust/rest-api/scan-data-download) for more details on how to retrieve the scans. | Section | Description | | :------- | :------------------------------------------------------------------ | | scan | fields populated by the scan activity | | user | only contains data if the scan is performed by a named user. | | code | data fields copied from the code for convenience | | product | data fields copied from the product for convenience | | device | data taken from the device used to scan the code | | location | data populated by the location-service, ip or gps based on the user | | scm | supply chain fields added to the code at time of scanning | ## scan - **scan.uuid**: globally unique tracking id of a scan - **scan.datetime**: ISO date when the scan was made - **scan.timestamp**: Unix epoch timestamp when the scan was made - **scan.app**: application used to make the scan. "Other" if the application was not recognized - **scan.reason**: query (for qr lookup) or auth (for an authentication scan - codes with secure graphic only) - **scan.result**: scanresult as determined by the backend (ok or failure) - **scan.computed_status**: - **scan.auth_failure_mode**: details on why the authentication failed (for an authentication scan - codes with secure graphic only) - **scan.flags**: anomalies flagged by the backend, partially determined by the scan alerts - **scan.unique_user**: unique id for the user extracted from the app or the browser - **scan.install_id**: unique install-id extracted from the app or the browser - **scan.utid**: tracking id ## user - **user.email**: set when a named user scans the codes ## code - **code.extended_id**: extended_id as embedded in the QR message - **code.serial_number**: random serial number as set on each code. can be customer-assigned - **code.activation_status**: 0-inactive, 1-active, 2-blacklisted - **code.blacklist_reason**: when a code is blacklisted, a reason is assigned ## product - **product.id**: system-identifier for a product - **product.sku**: customer identifier set for a product - **product.name**: product name - **product.brand_name**: brand name to which the product was assigned ## device - **device.imei**: (deprecated) device hardware identifier - **device.model**: technical model number as extracted from the User-agent header - **device.model_name**: commercial mode as extracted from the User-agent header - **device.os**: operating system of the device ## location - **location.method**: ip or gps - **location.country_code**: ISO code of the country where the code was scanned - **location.country**: country name of the country where the code was scanned - **location.province**: province in which the code was scanned - **location.city**: city in which the code was scanned - **location.lat**: latitude for the scan (as determined by the best-guess location service) - **location.lng**: longitude for the scan (as determined by the best-guess location service) ## scm - **scm.case_number**: (example) SCM field with key `case_number` as defined in the campaign options - **scm.consumed_date**: (example) SCM field with key `consumed_date` as defined in the campaign options - **scm.distributor**: (example) SCM field with key `distributor` as defined in the campaign options - etc. --- // File: build-with-scantrust/rest-api/scm-data-sync-or-async ## Overview To upload SCM data to the Scantrust API, Scantrust supports two methods, **Synchronous** and **Asynchronous**, each with its own limitations and benefits. Before chosing which method is most suitable for your use-case, make sure you understand the differences. ### Synchronous SCM uploads When uploading data Synchronously, the API will process and update all your data within the duration of the HTTP-call. If a lot of data is sent, or a lot of codes are updated, this method can potentially time out, requiring the client to resend the request. For this reason, **_the synchronous update method is only useful for low data volumes_** So: - The response to a synchronous call will immediately contain the result of the update and possible errors - Data will be processed in between your call to the API and the response you'll get back - When updating a lot of data in one call, API responses can be slow - The API response will typically timeout after 60 seconds with an HTTP status `504 - Gateway Timeout.` and no codes will be updated when this happens ### Asynchronous SCM Uploads When updating data asychronously, the API will create a background job to update your data and responds immediately with a `task_id` - The response to your call will be immediate and contain a `task_id` - The posted data will be processed by the API in the background - The returned `task_id` can be used to check the job status (pending, running, error, ...) - API timeouts will not occur ### Choosing between Sync and Async Sync updates are the easiest to set up due to the immediate response. No callbacks have to be made. It is however only recommended in cases where the number of updated codes is low (fewer than 1000). A good rule of thumb is that whenever updates are done using the `extended_id` as a key, the system will be fast enough to handle it in the request itself. Timeout issues usually occur when a SCM key is used as the key to lookup codes. Each SCM key can be linked to thousands of codes and the system will have to process all this data. If you want to use sync updates with SCM key lookups, it is important to estimate the number of codes that are affected. If these run over 20K for one call, you are likely to run in the timeout danger zone. When the Async method is required for SCM updates, your integration will have to check back on the `task_id` to find out the result of the SCM update. ### Where to go from here - to upload data **asynchronously**, see section [Upload SCM Data (ASYNC)](/docs/build-with-scantrust/rest-api/async-scm-data-upload) - to upload data **synchronously**, see section [Upload SCM Data (SYNC)](/docs/build-with-scantrust/rest-api/scm-data-upload) --- // File: build-with-scantrust/rest-api/scm-data-upload ## Overview This document covers the process of uploading SCM data to the Scantrust API **synchronously**. **_WARNING:_** updating large volumes of codes synchronously can lead to timeouts. This can be prevented by uploading data **asynchronously**, see section [Upload SCM Data (ASYNC)](/docs/build-with-scantrust/rest-api/async-scm-data-upload) To upload SCM data from your server, the belwo components need to be configured: - **Upload handler:** This handler formats the data, pre-validates and uploads the data - **API Endpoint:** the Scantrust API will accepts a batch of records and process the changes ## UAT token permissions The UAT token needs to have access to the following permissions: - codes_view - scm_bulk_edit - scm_code_edit - product_view The UAT token must be set in the header fields of all requests as described in [Authentication & Tokens](/docs/build-with-scantrust/rest-api/authentication-and-tokens#using-the-uat-token). ## Prerequisites There are 3 main prerequisites to fulfill: 1. Brand owner/SCM User account on the Scantrust portal: - Scantrust will provide a developer test-account as well as a production account. 2. A campaign that is setup to include the desired SCM fields: - Example: production_date, intended_market, rfid,.. - Note: SCM fields not included in the campaign will be discarded by the system. 3. A work order for a product that is included in the campaign, and which has valid codes to be updated. ### Data key In order to upload information for a code, a data key must be chosen to select the desired codes to upload data for. There are 3 ways to determine a key: 1. By default this key will be extended_id (the unique message each code holds). 2. The key can also be set to serial_number if they are set on the codes. 3. SCM data can also be used as a key: - Codes with RFID tags can be uploaded by key ‘rfid’ and value of each tag. - Codes with a Logistic Unit can be updated based on the unit. ### Date Format - The Scantrust API uses **ISO-formatted** dates. The format for SCM fields of type “Date” should be be **`YYYY-MM-DD`**. - If you wish to store date data in other formats, please use the **text** type. - All data is accepted and saved as provided by the uploader. In the case of fields of type "date" this can result in display & editing issues in the portal. ## Upload Handler The upload handler will communicate with the API endpoint, handle the data to be uploaded, and processes the response from the server. **Workflow:** 1. Pre-validate data to be uploaded 2. Format data to be uploaded to the specified JSON structure 3. Upload JSON data to the API 4. Process the response ### Pre-Validation of uploaded file It is recommended to pre-validate the data to be uploaded. This prevents unnecessary calls to the API. Following pre-validation should be done: 1. Format Checking: - Verify the data contains either 'extended_id' or the desired for 'data_key'. - Verify that all items have the same # of fields. 2. Preliminary Error Checking: - Verify that no key value is duplicated. - Verify that no key value is blank. ### Format data to be uploaded Data must be uploaded using JSON as the format. The API will accept batches of items **not larger than 100** per call. Therefore the data must be split into batches of max 100 items per POST. It is recommended to keep a log file containing the keys/batch # of previously uploaded items so they can be skipped when uploading. This prevents items from getting uploaded twice if the API intercepts a defective item in a specific batch. #### General flow 1. Process the data and create an array of JSON objects 2. Create batches of 100 rows 3. Ignore previously uploaded rows 4. Convert all values to strings 5. Send request 6. Send a request and save the key value as 'uploaded' in a logfile: - Subsequent runs should ignore all keys that are in the 'uploaded' file ### Upload the data A POST request containing the formatted data of max 100 items is made to the /api/v2/scm/upload/ endpoint. This POST request should contain the UAT obtained from the API. The UAT is sent in the request header as follows: ```json (headers = { "Authorization": "UAT " + token }) ``` ## API Design ### POST: /api/v2/scm/upload/ Uploads SCM data regarding **any** code owned by the company, in a batch of up to 100 records per request. Multiple requests can be made to update more items. | Attribute | Required? | Description | | :-------- | :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | data_key | Optional | Select which SCM data field to use as the KEY field when updating a record. Key must be present in the `code`. Match will be CASE SENSITIVE and EXACT.

Example uses:

- Use the rfid SCM field as the key
- Use the case_number SCM field as the key

**Default: "extended_id"** | | items | required | List of scm data in key/value pairs, to upload to individual codes. Each key needs to reference the key of the SCM field as defined the campaign. The names of the keys can be confirmed by downloading the template.csv file from the SCM T&T tab for the campaign. | #### Body Parameters POST (application/json): ```json { "data_key": "extended_id", "items": [ { "extended_id": "HGDTQD54D5SD86EEDFS", "intended_market": "cn", ...}, { "extended_id": "JF5FPO58DFITE4EDXD2", "intended_market": "de", ... }, ... ] } ``` #### Response (200): Status OK When a batch of max 100 codes is successfully posted, a response with affected and posted codes will be given. ```json { "total_updates": 0, "changes": [ { "test_text": "hhh", "test_case": "5412166701007", "test_boolean": "true" } ], "items": { "HGDTQD54D5SD86EEDFS": ["scm_data", "more_data", "data3"], "JF5FPO58DFITE4EDXD2": ["scm_data"], "JF5FPO58DFITE4EDXD2": ["scm_data"] }, "codes_affected": 1 } ``` **Note:** in "items", "scm_data" will only list the affected field key names, not the values. #### Response (400) : Invalid Data Format An exception will be raised (with an appropriate error message) when any of the following is detected in a row: - No key field is found, or a key is empty - Key field not found (e.g. extended_id was wrong) - Data format of the "items" dictionary was incorrect - Batch was too large: items exceeded the maximum of 100 records in one request - SCM field length \<=50 characters **Example:** Invalid extended_id ```json { "errors": [ { "message": "Invalid value passed for extended_id: '2AFEDB9A420410MRP041044F47CE86E'", "line": "1", "field": "extended_id", "key_value": "2AFEDB9A420410MRP041044F47CE86E" } ] } ``` Invalid product ```json { "errors": [ { "message": "Invalid Product", "line": "1", "field": "product", "key_value": "2AFEDB9A420410MRP041044F47CE86E" } ] } ``` ## Special Cases Special SCM fields can be used to alter the code and internal functions (assign a product, activation status, LU assignment, ...) See docs: [Special SCM Fields](/docs/build-with-scantrust/rest-api/special-scm-fields) --- // File: build-with-scantrust/rest-api/special-scm-fields ## Overview This document covers the usage of special SCM fields in the SCM API. - To upload SCM data **synchronously**, see section [SCM Data Upload (SYNC)](/docs/build-with-scantrust/rest-api/scm-data-upload) - To upload SCM data **asynchonously**, see section [SCM Data Upload (ASYNC)](/docs/build-with-scantrust/rest-api/async-scm-data-upload) Special SCM fields are used during data uploads and have pre-defined system functionalities such as: - Assign Codes to Products - Assign Logistic Units to codes - Assigning data to logistical units (LU's) which are themselves Scantrust codes - Activate Codes ### Assign Products Products can also be assigned and changed through the upload API. The dedicated field for this is **‘product’**. The assigned value should be an existing product for the current company. The value can either be the product **ID** or the product **SKU** which both are unique within a company. The assignment of products is often used when a work order has been made for a generic, fictive product and assigned to the real product when produced. > **Example:** > A work order with code (`extended_id= ‘0A705681370410MRP0410DAF47A8A7C’`) has been created for my generic product (`SKU=gen_1`). > I have now decided to assign this code to my real product that has just been produced (`SKU=prod_1`) > I would also like this code to contain the production date and production line it was produced on. **SYNC POST Request body** ```json { "data_key": "extended_id", "items": [ { "extended_id": "0A705681370410MRP0410DAF47A8A7C", "product": "prod_1", "production_date": "01/12/2016", "production_line": "13A"}, …. ] } ``` **ASYNC POST Request body** ```json { "constraints": { "extended_id": ["0A705681370410MRP0410DAF47A8A7C"] }, "scm_data": { "product": "prod_1", "production_date": "01/12/2016", "production_line": "13A" } } ``` **WARNING:** products usually belong to a campaign, for which the SCM fields are defined. So be careful that when changing a code to a product **outside** the current campaign, the campaign for that product (and code!) will change and so the rules for that other campaign are applied. ### Assign Logistic Units A logistic unit (LU) is used to group codes onto certain units used for logistics. This offers a nesting mechanism where a child item (product) can belong to a parent (case, box, pallet etc.), for example: **Product → Case → Pallet** Each Logistic Unit (LU) is defined as a **normal SCM data-field** in the system. This means a code will have the value for a LU set for an SCM field. When assigning an LU, other SCM fields can also be set **using this logistic unit as the key** to upload. This greatly simplifies uploading data for cases and pallets of products. > **Example:** > > A product with a **code** is part of **a case** which also has a scantrust label. The **case code** can then on turn be part of a **pallet code**. In this example **‘case’** and **‘pallet’** would be logistic units. > > **Pallets:** (`LU=pallet_code, production_date=2021-04-01`) > > - p001 > > **Cases:** (`LU=case_code, ship_date =2021-04-22`) > > - Case: 123 > - Case: 456 > - Case: 789 > > **Items:** > > - Item: serial number=1a > - Item: serial number=2a > - Item: serial number=3a **SYNC POST Request body** ```json { "data_key": "pallet_code", "items": [{ "pallet_code": "p001", "production_date": "2021-04-01" }] } ``` The following example could be used to upload JUST the shipment date for **one case (456)**: ```json { "data_key": "case_code", "items": [ { "case_code": "123", "ship_date": "2021-04-22" }, { "case_code": "456", "ship_date": "2021-04-22" }, { "case_code": "789", "ship_date": "2021-04-22" } ] } ``` **ASYNC POST Request body** ```json { "constraints": { "pallet_code": ["p001"] }, "scm_data": { "production_date": "2021-04-01" } } ``` The following example could be used to upload JUST the shipment date for **2 cases (123 & 456)**: ```json { "constraints": { "case_code": ["123", "456"] }, "scm_data": { "ship_date": "2021-04-22" } } ``` When this upload is done, Item 1a will have the following fields set: - Serial_number = 1a - Pallet_code = p001 - Case_code = 789 - Production_date = 2021-04-01 - Ship_date = 2021-04-22 ### Assigning data to LU’s which are Scantrust codes In some cases, the LU’s to which codes have been linked, are themselves scantrust codes. This can happen for example when both the cases AND the items IN the case each have a Scantrust Code. In this case, the programmer will have to make a decision if the parent-item should also be updated or not, and 2 calls should be made to the API to update the information, once for the parent-item to update its children, and once for the parent item itself. > **Example:** > > Case: **serial_number = 12345678**: > > - Item 1: **extended_id = HGDTQD54D5SD86EEDF1** > - Item 2: **extended_id = HGDTQD54D5SD86EEDF2** > - Item 3: **extended_id = HGDTQD54D5SD86EEDF3** **SYNC POST Request body** ```json // CALL 1: update the CHILDREN of case_code: { "data_key": "case_code", "items": [ { "case_code": "12345678", "ship_date": "2021-04-22"} //set ship date on ALL codes in case ] } // CALL 2: now update the case { "data_key": "serial_number", "items": [ { "serial_number": "12345678", "ship_date": "2021-04-22"} //set ship date on the case ] } ``` **ASYNC POST Request body** ```json // CALL 1: update the CHILDREN of case_code: { "constraints": { "case_code": ["12345678"] }, "scm_data": { "ship_date": "2021-04-22" } } // CALL 2: now update the case { "constraints": { "serial_number": ["12345678"] }, "scm_data": { "ship_date": "2021-04-22" } } ``` ### Activate Codes By default, codes are **inactive** on creation of the work order. The only exception is when the brand specifies the codes to be active upon completion of the work order. This happens on the work order create page in the Scantrust portal. In most cases, codes will be activated when the scm production data is set. - The special key `activation_status` or `status` (legacy, will be overridden by the former if both provided) can be used for this purpose. (SYNC) - The special key `activation_status` is used for this purpose. (ASYNC) `activation_status` can have 3 different values: - `activation_status` = 0 (marks the code **inactive**) - `activation_status` = 1 (marks the code **active**) - `activation_status` = 2 (marks the code **blacklisted**) The status of codes can be updated through the SCM upload endpoint the same way as normal SCM data. > **Example:** > > **Items:** `(activation_status=1, product=P1)` > > - Item 1: **extended_id=HGDTQD54D5SD86EEDFS** > - Item 2: **extended_id=AGDTQD54D5SD86EEDFX** **SYNC POST Request body** ```json { "data_key": "extended_id", "items": [ { "extended_id": "HGDTQD54D5SD86EEDFS", "activation_status": "1", "product": "P1" }, { "extended_id": "AGDTQD54D5SD86EEDFX", "activation_status": "1", "status": "0", "product": "P1" } // 1 will be assigned to the activation_status of this code, since the value of status will be overridden by the value of activation_status. ] } ``` **ASYNC POST Request body** ```json { "constraints": { "extended_id": ["HGDTQD54D5SD86EEDFS", "AGDTQD54D5SD86EEDFX"] }, "scm_data": { "activation_status": 1, // Activate this code "product": "P1" } } ``` ### System Alerts Some SCM fields are used by the system to trigger alerts. Special rules apply to these fields in order for them to interact with the system. | key | description | | :-------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | intended_market | This field is used to trigger out_of_market alerts. The value must contain a ISO-2 country code (see **[here](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements)** for the list of officially assigned codes) **or** a region key. Regions can be defined in the Scantrust Portal under “Regions” and contain a list of countries or custom region. | | after_sell_by | Field used to trigger **after_sell_by** alerts. The value is a date defined by this specific format `YYYY-MM-DD`. Codes scanned after this date, will trigger the alert. | | date_consumed | **DO NOT SET:** This field should not be uploaded by any handler. When the field has been made available in the campaign settings, it will be set by the system automatically when a user marks a product code to be consumed, given that this Scantrust consumer setting has been enabled by the brand. | --- // File: build-with-scantrust/rest-api/upload-codes import useBaseUrl from '@docusaurus/useBaseUrl'; ## Overview This document is deprecated and will be removed soon. PLease migrate to one of the new code upload methods as described in the [ingestion overview](/docs/build-with-scantrust/rest-api/ingestion-overview). Scantrust has been designed to efficiently manage a large volume of codes. As such, new codes are created asynchronously in the background through a workorder mechanism to ensure the system can support these quantities. The newly created codes can thereafter be downloaded in a zip archive, which are in the Scantrust Compact-12 format. The *Code Upload API* allows brand owners to upload files containing their unique identifiers in any format, as long as they meet the length and allowed characters requirements outlined by the Scantrust system (see below). When using the Code Upload API, users can assign different products to each code and choose the SCM fields that apply. The code upload API can generate 2 types of codes: 1. **Serialized Identifiers (SID) codes:** these codes are scantrust QR codes _without_ the secure graphic. The brand owner can self-generate and download these codes and they do not require a printing partner. 2. **Secure Codes (SSC):** these codes contain the copy-protection secure graphic and require a printing partner with calbrated *equipment* and *substrate*. These codes are generated and assigned to an existing workorder with a secure graphic, which is then printed by a printing partner ## UAT token permissions To access this API, a UAT token needs to be provided which has access to the following permissions: - workorder_view - workorder_download - workorder_sid_download - ingestion_view - ingestion_cancel - ingestion_code_create - product_view The UAT token must be set in the header fields of all requests as described in [Authentication & Tokens](/docs/build-with-scantrust/rest-api/authentication-and-tokens#using-the-uat-token). ## Uploading Serialized Identifiers (SID) Codes ### Example CSV file with a header ``` id,product,pallet_number,intended_market abc12345,sku1,pal1,BE def12345,sku1,pal1,NL ghi12345,sku1,pal2,DE jkl12345,sku1,pal2,FR ... ``` - **required:** a column with header `id` containing the unique identifiers - each `id` must be 8 characters or longer - each `id` can only contain valid characters (a-z, A-Z, 0-9, -, \_). For example: `aB1_3dZ97-x2` or `123abcd89XYZ` - regex for the id: `^[A-Za-z0-9_-]{8,}$` - **optional** columns: - `product` containing a product-sku which already exists in the scantrust system - `activation_status` containing 0 (inactive), 1 (active) or 2 (blacklisted) - additional columns containing `scm fields` with the header as the scm key (ie. `pallet_number` etc.) ### Steps to upload your codes 1. Use the **create Ingestion** endpoint and retrieve an *ingestion key* with *S3 file upload details* 2. Using the file upload details, upload the file to the **S3 endpoint** 3. Call the **process the ingestion file** endpoint to start the code validation and processing. This will generate a workorder and start the code creation task 4. To get the details of a submitted Upload and to check if there were no errors, call the **ingestion record** endpoint 5. Finally, once the workorder is done processing, call the **download workorder serial numbers** endpoint to download the workorder file with the example image and csv format. See the [(Downloading Workorders section)](/docs/build-with-scantrust/rest-api/workorder-download)) for more information on the file content(s). ## API Design ## Create Ingestion Record ### POST /api/v2/ingestion/codes/upload/get-post-data/ Generate an ingestion record | Attribute | Required | Description | | :------------------- | :----------- | :-------------- | | filetype | **required** | `json` or `csv` | ### _Example JSON Payload_ ```json { "filetype": "csv" } ``` **_Response (201): Created_** ```json { "post_data": { "url": "https://st-media-dev.s3.amazonaws.com/", "fields": { "Content-Type": "text/csv", ... } }, "record_key": "p37bk370jurt" } ``` This response is used to make a call to the S3 endpoint as in the URL. All the fields retrieved must be posted to this URL and are frequently changed. Please POST them **dynamically** from the _fields_ dict retrieved here. ### Validations and errors **_Response (400): invalid file type is posted_** ## Upload the File to S3 ### POST \{S3 URL\} This call uses the URL retrieved in the previous call (Ingestion File Upload API) to upload your file S3 for processing by Scantrust. The fields retrieved in the **fields** dictionary must all be **dynamically** posted to the S3 URL. The content and amount of fields might change overtime. | Field | Value | Description | | :------------- | :------- | :-------------------------------------------------- | | < fields > | fields | All fields dynamically retrieved by the get-post-data endpoint | **_Response (201): Created_** ## Process Ingestion File ### POST /api/v2/ingestion/codes/upload/process/ Starts the ingestion process from a file previously uploaded to the S3 storage by calling the post-data endpoint. The process is started asynchronously. | Fields | Value | Description | | ----------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | default_scm_data | json | SCM data field including product/activation_status/blacklist_reason/… WOrks the same as the SCM upload endpoints. Data here will be used as the default for each code (overridden by what is in the code record) | | url_prefix | String (Optional) | URL prefix to be used on the work order | | allow_posted_duplicates | Bool (Optional) | Don’t error on duplicate check but ingest first entry and ignore next duplicates (within posted IDs) | | record | String | Record Key | ### Example ```json { "record": "xvg24feojYz", "default_scm_data": { "activation_status": 1, "product": "NICK1", "updated_by": "warehouse_1" }, "allow_posted_duplicates" : true } ``` ### Error responses | HTTP Code | Message | Reason | | --------- | --------------------------------------------------------------------------------- | ----------------------------------------------------------- | | 400 | Only code ingestion records of type S3 in state 'uploading' can be processed. | Triggered when posting a record which is in the wrong state | | 400 | Invalid record | Triggered when a non-existing record is posted | | 400 | Uploaded file not found. | Triggered when a previously uploaded file is not found | ## Ingestion Record ### GET /api/v2/ingestion/\{key\}/ Gets a list of IngestionRecords ### Response 200 ```json { "count": 18, "next": null, "previous": null, "results": [ { "id": 22, "key": "ym0mse71lc7t", "description": "Code ingestion file upload", "status": "error", "type": "code", "ingestion_mode": "api", "created_at": "2022-10-19T17:17:11.750258Z", "created_by": 1, "status_updated_at": "2022-10-26T13:51:15.701033Z", "parameters": { "default_scm_data": {}, "use_serial_number": false }, "result_data": { "errors": [ { "duplicate_id_error": [ "iE4Mw…", "Bc2m6…" ] } ] } }, ... ] } ``` ### Filters **Usage example:** `/api/v2/ingestion/?type=code` **Supported filter fields:** - type - status - ingestion_mode --- // File: build-with-scantrust/rest-api/workorder-create-sid ## Overview Because the scantrust platform is built to serve large numbers of codes, new codes are created asynchronously (in the background) and can be downloaded as a zip archive. [(see Downloading Workorders section)](/docs/build-with-scantrust/rest-api/workorder-download). This page describes the **SID workorder** creation. SID workorders are scantrust QR codes _without_ the secure graphic. The brand owner can self-generate and download these workorders and they do not require a printing partner. ## UAT token permissions The UAT token needs to have access to the following permissions: - workorder_view - workorder_create - workorder_edit - workorder_cancel - workorder_archive The UAT token must be set in the header fields of all requests as described in [Authentication & Tokens](/docs/build-with-scantrust/rest-api/authentication-and-tokens#using-the-uat-token). ## Generating Serialized Identifiers (SID) workorders Obtaining SID codes from the scantrust system requires 3 steps: 1. Use the **create SID workorder** endpoint and retrieve a new _workorder id_ 2. Query the **search workorder** endpoint to verify the workorder has the state `completed` as well as the `codegen_file` download-link is available 3. Call the **download workorder file** endpoint to download the codes and their images. 4. **Optionally**: call the **download workorder serial numbers** endpoint to download a more simple csv format Proceed to the [(Downloading Workorders section)](/docs/build-with-scantrust/rest-api/workorder-download)) for more information on the file content(s). ## API Design: Create SID Workorder SID codes are codes without the secure graphic. They can be generated relatively simply and dont need a complicated setup. ### POST: /api/v2/workorders/create-sid/ Generate a workorder for a company | Attribute | Required? | Description | | :------------------- | :----------- | :------------------------------------------------------------------ | | activate_on_complete | **required** | false or true whether codes should be active immediately or not. | | reference | **required** | string, internal reference, must be unique for the company. | | remarks | optional | string, description of this workorder | | quantity | **required** | integer, number of codes to be generated | | use_serial_number | **required** | false or true (default), if true, serial number are added | | url_prefix | optional | string, set if a special URL is used (default: `https://st4.ch/q/`) | | product | optional | string: Scantrust product SKU used for these codes. | | extended_id_style | optional | "compact-12" or "legacy", see **Extended ID** (default: legacy) | | partner_permissions | optional | A list of available partner permissions e.g. ["activate_codes"] | The _reference_ is important because it allows you to later look up the newly created workorder easily. The full URL of a scantrust SID code is formed by using the url_prefix + extended_id. The length of the extended id is determined by the **extended_id_style**: - _compact-12_: 12 characters a-Z,0-9,-,\_ (example: aB1_3dZ97-x2) - _legacy_: 32 characters A-Z,0-9 (example: AERFJHUI2GHAIPGEUHGEYUGF69G3EXF) **_Example JSON payload_** ```json { "activate_on_complete": false, "reference": "REF-001", "remarks": "Generated for Customer X", "quantity": 100, "use_serial_number": true, "url_prefix": "https://my-url.com/", "extended_id_style": "compact-12", "product": "123456789" } ``` **_Response (201): Created_** When the workorder has been created, a JSON response will contain: ```json { "id": 4879, "company": { "id": 339, .... }, "printing_partner": null, "equipment": null, "state": "new", "due_date": null, "reference": "REF-001", "creation_date": "2020-01-10T08:55:08.985433Z", "code_layout": "none", "use_serial_number": true, "static_unique_codes_quantity": 1, "quantity": 10, "is_ready_to_print": false, "date_codes_completed": null, "is_archived": false, "codegen_status": 6, "codegen_file": null, "data": { "remarks": "Generated for Test Brand", "activate_on_complete": false }, "product": { "id": ..., ... }, "brand": { "id": ..., ... }, "remarks": "Generated for Test Brand", "printed_date": null, "has_secure_workflow": false, "static_impositions": 0, "designer": null, "external_id": "", "is_fingerprint_trained": false, "substrate": null, "template": null, "template_image": null, "is_hybrid": false, "is_static_print": false, "is_fp_serialized": false, "url_prefix": "https://my-url.com/", "extended_id_style": "compact-12", "partner_permissions": [] } ``` **_Important fields_** - **state**: "new", "ready to print" or "completed" - **codegen_status**: shows the code-generation status in a numerical way. "4" indicates generation has completed succesfully - **codegen_file**: the link to the file containing the generated codes. Note that this link is directly created for SID workorders, but for the SSC-workorders the printing partner needs to confirm the workorder first before the generation starts. --- // File: build-with-scantrust/rest-api/workorder-create-ssc ## Overview Because the scantrust platform is built to serve large numbers of codes, new codes are created asynchronously (in the background) and can be downloaded as a zip archive. [(see Downloading Workorders section)](/docs/build-with-scantrust/rest-api/workorder-download). This page describes the **SSC workorder** creation. SSC workorders contain the copy-protection secure graphic and require a printing partner with calbrated _equipment_ and _substrate_. These workorders are generated using a _workorder template_ which is set up by one of the Scantrust Engineers during the project implementation. ## UAT token permissions The UAT token needs to have access to the following permissions: - workorder_view - workorder_create - workorder_edit - workorder_cancel - workorder_archive The UAT token must be set in the header fields of all requests as described in [Authentication & Tokens](/docs/build-with-scantrust/rest-api/authentication-and-tokens#using-the-uat-token). ## Worklflow For SSC codes, the printing partner needs to generate/confirm the codes based on their _printing equipment_ and _substrate_: 1. **Brand Owner:** Call the **create SG workorder** endpoint and retrieve the **workorder id** 2. **Printing Partner:** **confirm the workorder** and generate the codes 3. **Brand Owner:** Query the **search workorder** endpoint to verify the workorder has the state `completed` as well as the `codegen_file` download-link is available 4. **Brand Owner:** Call the **download workorder file** endpoint to download the codes and their images. Proceed to the [(Downloading Workorders section)](/docs/build-with-scantrust/rest-api/workorder-download)) for more information on the file content(s). ## API Design - Create SSC Workorder ### GET /api/v2/workorders/templates/ Get all available workorder templates and their attributes. To create an SG workorder, it is recommended to first choose a template. **_Response (200): OK_** ```json { "count": 1, "next": null, "previous": null, "results": [ { "id": 164, "name": "SG_Template_1", "description": "n.a.", "company": 6091, "custom_layout": null, "substrate": null, "substrate_name": "", "printing_partner": null, "image": null, "code_layout": "sg-outside", "use_serial_number": true, "is_hybrid": true, "is_fp_serialized": false, "is_static_print": false, "is_archived": false, "activate_on_complete": false, "url_prefix": "", "extended_id_style": "legacy", "partner_permissions": [] } ] } ``` ### POST /api/v2/workorders/create-sg/ | Attribute | Required? | Description | | :------------------- | :----------- | :---------------------------------------------------------------- | | product | optional | string, Scantrust product SKU used for these codes. | | template | optional | integer, retrieved from `id` in the above GET template request | | quantity | **required** | integer, number of codes to be generated | | remarks | optional | string, description of this workorder | | activate_on_complete | optional | false (default) or true, whether codes should be active immediately or not. | | extended_id_style | optional | "compact-12" or "legacy", see **Extended ID** (default: legacy) | | substrate | optional | integer, substrate id (default: null) | | code_layout | **required** | string, code layout method, "sg-inside", "sg-outside" or "custom" | | custom_layout | depends on `code_layout` | integer, custom layout ID, required when the `code_layout` is "custom" | | use_serial_number | optional | false or true (default), if true, serial numbers are added | | is_hybrid | optional | false or true (default), non-hybrid or hybrid printing method | | template_image | optional | false (default) or true, whether there's an image of the template| | is_fp_serialized | optional | false or true (default), whether codes are serialized | | is_static_print | optional | false (default) or true, whether the codes are static | | static_unique_codes_quantity | optional | integer, quantity of static unique codes | | printing_partner | **required** | integer, company ID of the Printing Partner | | reference | **required** | string, internal reference, must be unique for the company. | | remarks | optional | string, description of this workorder | | url_prefix | optional | string, set if a special URL is used (default: https://st4.ch/q/) | | partner_permissions | optional | A list of available partner permissions e.g. ["activate_codes"] | **IMPORTANT**: Attribute values need to change based on workorder template. When a workorder template is chosen, if attributes are provided in workorder template, they are also required in the POST Request. The attributes cannot be passed with `template` id. **_Example JSON payload_** ```json { "product": "P2", "template": "1", "quantity": "10", "remarks": "remarks 1", "activate_on_complete": true, "extended_id_style": "legacy", "substrate": 1, "code_layout": "sg-outside", "use_serial_number": true, "is_hybrid": false, "template_image": null, "is_fp_serialized": false, "is_static_print": false, "static_unique_codes_quantity": 0, "printing_partner": 3 } ``` **_Response (201): Created_** ```json { "id": 24, "company": { "id": 2, ... }, "printing_partner": { "id": 3, ... }, "equipment": { "id": 1, ... }, "state": "new", "due_date": null, "reference": null, "creation_date": "2021-03-10T08:35:39.507156Z", "code_layout": "sg-outside", "use_serial_number": true, "static_unique_codes_quantity": 0, "quantity": 10, "is_ready_to_print": false, "date_codes_completed": null, "is_archived": false, "codegen_status": 1, "codegen_file": null, "data": { "remarks": "remarks 1", "static_unique_codes_quantity": 0, "activate_on_complete": true }, "product": { "id": 2, ... }, "brand": { "id": 1, ... }, "remarks": "remarks 1", "printed_date": null, "has_secure_workflow": false, "static_impositions": 0, "designer": null, "external_id": "", "is_fingerprint_trained": false, "substrate": { "id": 1, "name": "Plain Paper", "description": "" }, "template": 1, "template_image": null, "is_hybrid": false, "is_static_print": false, "is_fp_serialized": false, "url_prefix": "HTTPS://QR2.CH/Q/", "extended_id_style": "legacy", "partner_permissions": [] } ``` ## API Design - Printer Confirm Before SSC codes are generated, a printing partner needs to confirm the printing equipment and substrate in order for the QA to be done. ### PATCH /api/v2/workorders/4977/printer-confirm/ **_Example JSON payload_** ```json { "substrate": "1", "equipment": "2", "external_id": "3" } ``` **_Response (200): Ok_** ```json { "id": 5094, "company": { "id": 339, ... }, "printing_partner": { "id": 346, ... }, "equipment": { "id": 214, ... }, "state": "new", "due_date": null, "reference": "Tk-022", "creation_date": "2021-03-10T08:46:55.234818Z", "code_layout": "sg-inside", "use_serial_number": true, "static_unique_codes_quantity": 1, "quantity": 100, "is_ready_to_print": false, "date_codes_completed": null, "is_archived": false, "codegen_status": 6, "codegen_file": null, "data": { "remarks": "test", "activate_on_complete": false, "static_unique_codes_quantity": 1 }, "product": { "id": 6134, ... }, "brand": { "id": 143, ... }, "remarks": "test", "printed_date": null, "has_secure_workflow": false, "static_impositions": 0, "designer": null, "external_id": "tk_001", "is_fingerprint_trained": false, "substrate": { "id": 74, ... }, "template": 105, "template_image": null, "is_hybrid": false, "is_static_print": false, "is_fp_serialized": false, "url_prefix": "HTTPS://QR1.CH/Q/", "extended_id_style": "legacy", "partner_permissions": [] } ``` **_Important fields_** - **state**: changes from "new" to "ready to print" or "completed" - **codegen_status**: shows the code-generation status in a numerical way. Goes from "6" to "4" to indicate generation has completed. - **codegen_file**: the link to the file containing the generated codes. - **_activate_on_complete_**: determines the code-status after the workorder has been printed. Either codes stay inactive (activation_status: 0) or are activated (activation_status: 1) --- // File: build-with-scantrust/rest-api/workorder-create ## Overview Because the scantrust platform is built to serve large numbers of codes, new codes are created asynchronously (in the background) and can be downloaded as a zip archive. [(see Downloading Workorders section)](/docs/build-with-scantrust/rest-api/workorder-download). This page describes the API, however a prebuilt tool to create workorders is also available [here](https://devportal.scantrust.com/docs/scantrust/tools-and-integrations/workorder-create-tool/). Workorders can be of 2 types and are created through pre-defined templates. 1. **Serialized Identifiers (SID) workorders:** these workorders are scantrust QR codes _without_ the secure graphic. The brand owner can self-generate and download these workorders and they do not require a printing partner. 2. **Scantrust Secure Codes (SSC) workorders:** these workorders contain the copy-protection secure graphic and require a printing partner with calbrated _equipment_ and _substrate_. These workorders are generated using a _workorder template_ which is set up by one of the Scantrust Engineers during the project implementation. ## UAT token permissions The UAT token needs to have access to the following permissions: - workorder_view - workorder_create - workorder_edit - workorder_cancel - workorder_archive The UAT token must be set in the header fields of all requests as described in [Authentication & Tokens](/docs/build-with-scantrust/rest-api/authentication-and-tokens#using-the-uat-token). ## Generating Serialized Identifiers (SID) workorders - Overview Obtaining SID codes from the scantrust system requires 3 steps: 1. Use the [**create workorder endpoint**](#api-design---create-workorder) with a SID template and retrieve a new _workorder id_ 2. Query the **search workorder** endpoint to verify the workorder has the state `completed` as well as the `codegen_file` download-link is available 3. Call the **download workorder file** endpoint to download the codes and their images. 4. **Optionally**: call the **download workorder serial numbers** endpoint to download a more simple csv format Proceed to the [(Downloading Workorders section)](/docs/build-with-scantrust/rest-api/workorder-download)) for more information on the file content(s). ## Generating Secure Scantrust Identifiers (SSC) workorders - Overview Obtaining SSC codes from the scantrust system requires the same steps as SID workorders, however for SSC codes, the printing partner needs to generate the codes based on their _printing equipment_ and _substrate_: 1. **Brand Owner:** Call the [**create workorder endpoint**](#api-design---create-workorder) and retrieve the **workorder id** 2. **Printing Partner:** **confirm the workorder** and generate the codes 3. **Brand Owner:** Query the **search workorder** endpoint to verify the workorder has the state `completed` as well as the `codegen_file` download-link is available 4. **Brand Owner:** Call the **download workorder file** endpoint to download the codes and their images. Proceed to the [(Downloading Workorders section)](/docs/build-with-scantrust/rest-api/workorder-download)) for more information on the file content(s). ## API Design - Create Workorder ### GET /api/v2/workorders/templates/ Get all available workorder templates and their attributes. The ID field of the template will later serve as the input for the workorder create POST call. **_Response (200): OK_** ```json { "count": 1, "next": null, "previous": null, "results": [ { "id": 164, "name": "SG_Template_1", "description": "n.a.", "company": 6091, "custom_layout": null, "substrate": null, "substrate_name": "", "printing_partner": null, "image": null, "code_layout": "sg-outside", "use_serial_number": true, "is_hybrid": true, "is_fp_serialized": false, "is_static_print": false, "is_archived": false, "activate_on_complete": false, "url_prefix": "", "extended_id_style": "legacy", "partner_permissions": [] } ] } ``` ### POST /api/v2/workorders/create-from-template/ | Attribute | Required? | Description | | :------------------- | :----------- | :---------------------------------------------------------------- | | template | **required** | integer, retrieved from `id` in the above GET template request | | quantity | **required** | integer, number of codes to be generated | | reference | optional | string, internal reference, must be unique for the company. Generated by the API if not set. | | printing_partner | optional* | integer, company ID of the Printing Partner. Required for SSC workorders that have no partner set in template. | | | product | optional | integer/string, Product ID/SKU, assigns codes to given product on generation. | | due_date | optional | date, 'YYYY-MM-dd' Due date (informational for printing partner) | | total_impressions | optional | integer, only applicable for static workorders, amount of impressions per static code. **_Example JSON payload_** ```json { "template": "1", "quantity": "10", "reference": "Workorder for product P2", //Optional (generated if not set) "printing_partner": 3, //Optional "product": "P2" //optional } ``` **_Response (201): Created_** ```json { "id": 24, "company": { "id": 2, ... }, "printing_partner": { "id": 3, ... }, "equipment": { "id": 1, ... }, "state": "new", "due_date": null, "reference": "Workorder for product P2", "creation_date": "2021-03-10T08:35:39.507156Z", "code_layout": "sg-outside", "use_serial_number": true, "static_unique_codes_quantity": 0, "quantity": 10, "is_ready_to_print": false, "date_codes_completed": null, "is_archived": false, "codegen_status": 1, "codegen_file": null, "data": { "remarks": "remarks 1", "static_unique_codes_quantity": 0, "activate_on_complete": true }, "product": { "id": 2, ... }, "brand": { "id": 1, ... }, "remarks": "", "printed_date": null, "has_secure_workflow": false, "static_impositions": 0, "designer": null, "external_id": "", "is_fingerprint_trained": false, "substrate": { "id": 1, "name": "Plain Paper", "description": "" }, "template": 1, "template_image": null, "is_hybrid": false, "is_static_print": false, "is_fp_serialized": false, "url_prefix": "HTTPS://QR2.CH/Q/", "extended_id_style": "legacy", "partner_permissions": [] } ``` ## API Design - Printer Confirm **Only applies to SSC workorders!** Before SSC codes are generated, a printing partner needs to confirm the printing equipment and substrate in order for the QA to be done. ### PATCH /api/v2/workorders/4977/printer-confirm/ **_Example JSON payload_** ```json { "substrate": "1", "equipment": "2", "external_id": "3" } ``` **_Response (200): Ok_** ```json { "id": 5094, "company": { "id": 339, ... }, "printing_partner": { "id": 346, ... }, "equipment": { "id": 214, ... }, "state": "new", "due_date": null, "reference": "Tk-022", "creation_date": "2021-03-10T08:46:55.234818Z", "code_layout": "sg-inside", "use_serial_number": true, "static_unique_codes_quantity": 1, "quantity": 100, "is_ready_to_print": false, "date_codes_completed": null, "is_archived": false, "codegen_status": 6, "codegen_file": null, "data": { "remarks": "test", "activate_on_complete": false, "static_unique_codes_quantity": 1 }, "product": { "id": 6134, ... }, "brand": { "id": 143, ... }, "remarks": "test", "printed_date": null, "has_secure_workflow": false, "static_impositions": 0, "designer": null, "external_id": "tk_001", "is_fingerprint_trained": false, "substrate": { "id": 74, ... }, "template": 105, "template_image": null, "is_hybrid": false, "is_static_print": false, "is_fp_serialized": false, "url_prefix": "HTTPS://QR1.CH/Q/", "extended_id_style": "legacy", "partner_permissions": [] } ``` **_Important fields_** - **state**: changes from "new" to "ready to print" or "completed" - **codegen_status**: shows the code-generation status in a numerical way. Goes from "6" to "4" to indicate generation has completed. - **codegen_file**: the link to the file containing the generated codes. - **_activate_on_complete_**: determines the code-status after the workorder has been printed. Either codes stay inactive (activation_status: 0) or are activated (activation_status: 1) ## Legacy workorder endpoints Previously, the API required all template fields to be copied within the relevant create endpoints. You can find the legacy documentation below. It is highly recommended to migrate to above create from template method. Legacy SID workorder creation [documentation](/docs/build-with-scantrust/rest-api/workorder-create-sid) Legacy SSC workorder creation [documentation](/docs/build-with-scantrust/rest-api/workorder-create-ssc) --- // File: build-with-scantrust/rest-api/workorder-download ## Overview This step assumes the workorder has been created and codes have been generated for that workorder. For details on the generation process [(see Generating Workorders section)](/docs/build-with-scantrust/rest-api/workorder-create)) Downloading Code data from Work Orders requires the following steps: 1. Download List of Work Orders 2. Download Workorder File 3. Extract the workorder zip file and process the codes This page describes the API, however a prebuilt tool to generate QR images is also available [here](https://devportal.scantrust.com/docs/scantrust/tools-and-integrations/qr-generator/). ## UAT token permissions The UAT token needs to have access to the following permissions: - workorder_create - workorder_delete - workorder_cancel - workorder_download - workorder_edit - workorder_view - workorder_sid_download - workorder_archive ## API Design: Download List of Work Orders ### GET: /api/v2/workorders/ Gets the list of workorders for a company. | Attribute | Required? | Description | | :---------- | :-------- | :----------------------------------------- | | is_archived | optional | 0 or 1 Whether to show archived workorder . | | limit | optional | integer, default set to 20 | | offset | optional | number in the range of total results. | | search | optional | string to search in reference and remarks | #### Response (200): Status OK When there are workorders to be listed, a response will be given. ```json { "count": 1, "next": "http://api.scantrust.com/api/v2/workorders/?is_archived=0&limit=20&offset=20", "previous": null, "results": [ { "id": 1290, "company": { "id": 28, "slug": "scantrust-employees", "address": "EPFL", "country": "CH", "city": "Lausanne", "company_type": "brand_owner", "company_workflow_survey": {}, "has_secure_workflow": false, "encryption_key": "", "uuid": "6f6d65f9-026c-48f3-808f-53dadc779996", "name": "Scantrust Team", "website": "https://www.scantrust.com", "creation_date": "2015-07-23T07:51:41.561552Z", "serial_number_format": "", "is_validated": true, "workflow_survey": {} }, "printing_partner": { "id": 291, "slug": "codex", "address": "Szüret utca 5.", "country": "HU", "city": "Budakeszi", "company_type": "printing_partner", "company_workflow_survey": {}, "has_secure_workflow": false, "encryption_key": "", "uuid": "ae79a9dc-369e-4a38-a31b-2c1a6954462b", "name": "Codex", "website": "https://codex.hu", "creation_date": "2018-06-15T11:56:03.771992Z", "serial_number_format": "", "is_validated": true, "workflow_survey": {} }, "equipment": { "id": 264, "name": "Xeikon 1", "short_name": "Xeikon", "in_calibration_mode": false, "resolution_dpi": 1200, "has_secure_workflow": false, "location": "Szüret utca 5., 2092 Budakeszi", "technology": 4, "technology_other_name": "", "creation_date": "2018-06-15T11:59:46.241767Z", "is_archived": false, "substrates": [ { "id": 1225, "status": 1, "creation_date": "2018-06-15T12:03:14.094325Z", "is_archived": false, "name": "TC_60-PP white", "description": "PP white ftc60rp37hd70", "reference": "6415788236536", "actions": { "unarchive": null, "archive": "http://api.scantrust.com/api/v2/equipment/264/substrates/1225/archive/" } }, { "id": 1238, "status": 1, "creation_date": "2018-09-25T14:56:39.921323Z", "is_archived": false, "name": "Codex Secure Paper", "description": "To be eventually updated later with exact name", "reference": "", "actions": { "unarchive": null, "archive": "http://api.scantrust.com/api/v2/equipment/264/substrates/1238/archive/" } }, { "id": 1250, "status": 1, "creation_date": "2018-10-17T09:39:38.285432Z", "is_archived": false, "name": "TamperProof", "description": "127 gsm, matte", "reference": "", "actions": { "unarchive": null, "archive": "http://api.scantrust.com/api/v2/equipment/264/substrates/1250/archive/" } } ] }, "state": "completed", "due_date": "2018-10-18", "reference": "001.2", "creation_date": "2018-10-18T09:40:04.626080Z", "code_application": 2, "use_serial_number": true, "static_unique_codes_quantity": 1, "requested_quantity": 10000, "is_ready_to_print": true, "date_codes_completed": "2018-10-23T16:12:14.436469Z", "is_archived": false, "codegen_status": 4, "codegen_file": "/api/v2/workorders/1290/download-codes/", "data": { "static_unique_codes_quantity": 1, "code_dimensions": "", "downloaded": { "timestamp": "2018-10-23T16:12:20.346218+00:00", "actor": { "id": 684, "name": "Tamás Tilli" } }, "fingerprint_id": 146294, "remarks": "", "bundle_id": 1194, "activate_on_complete": false }, "product": { "id": 822, "uuid": "8c5d5549-ebdb-446c-99d0-4edb16ca10b3", "sku": "001", "image": null, "name": "GoodChain labels #1", "description": "", "label": "GoodChain labels #1", "brand": { "id": 174, "name": "GoodChain", "image": "https://cc.scantrust.com/c/28/brand/blob-hidolh.png" }, "company": { "id": 28, "uuid": "6f6d65f9-026c-48f3-808f-53dadc779996", "name": "Scantrust Team" }, "creation_date": "2018-10-08T09:32:12.830416Z", "client_url": "https://thegoodchain.io/index.html#slush-logo", "is_archived": false, "campaign": { "id": 46, "name": "Presentation Codes", "description": "This campaign has no STC. All products go to their own Product URL.", "is_archived": false }, "smartlabel": null }, "brand": { "id": 174, "name": "GoodChain", "description": "GoodChain", "client_url": "http://www.goodchainfoundation.org", "reference": "GoodChain", "image": "https://cc.scantrust.com/c/28/brand/blob-hidolh.png", "creation_date": "2018-07-04T08:13:02.844431Z", "is_archived": false }, "code_dimensions": "", "remarks": "", "production_quantity": 10500, "printed_quantity": 10500, "printed_date": "2018-11-01T10:52:35.991937Z", "has_secure_workflow": false, "static_impositions": 0, "designer": null, "external_id": "182422", "is_fingerprint_trained": true, "substrate": { "id": 1250, "name": "TamperProof", "description": "127 gsm, matte" } } ] } ``` ## API Design - Download Workorder File The codes for each workorder are generated after the printing partner confirms the details. If the workorder is for fewer that 100,000 codes, all images are generated. If the workorder exceeds 100,000 codes, the workorder file only contains the CSV file with the list of codes as well as a sample image of a code. This file is then used with the Scantrust QR code generator to generate the images locally by the printer. ### GET: /api/v2/workorders/\{workorder_id\}/download-codes/ Download the pre-generated ZIP file of the workorder: | Attribute | Required? | Description | | :----------- | :-------- | :---------------------- | | workorder_id | required | the ID of the workorder | #### Response (200): Status OK Downloads the ZIP file of the workorder ## Extract the workorder zip file and process the codes Inside this zipfile you will find various files: - codes.csv - codes (folder) - secure_graphic.tiff - generate.txt - manifest.json ##### codes.csv File containing all codes in comma-delimited format with a header: ```txt extended_id,serial_number,sequence,batch,full_url ``` ##### codes (folder) Folder containing the images generated for this workorder. In case of Workorders with > 120,000 codes, this folder is omitted and the offline generator needs to be used to generate the images. This is done to offload the scantrust server and reduce the download time for printing partners. ##### secure_graphic.tiff This file contains the secure graphic used for generating the SSC codes. Only gets generated for SSC Workorders [(see Generating Workorders section)](/docs/build-with-scantrust/rest-api/workorder-create)) This file can also be used by printing partners to generate hybrid codes whereby the secure graphic is printed in a different technology / run from the QR code. ##### generate.txt Text file containing instructions to generate the codes offline. This is useful in case codes have to be augmented with a suffix, or if download restrictions make it hard to download large files. ##### manifest.json File containing all the details to generate and print the codes. Details go beyond the scope of this API documentation: ```json { "format": "v3", "company": { "id": 339, "name": "Test Brand 0", "type": "1" }, "printing_partner": { "id": 346, "name": "Tobi Printer", "type": "2" }, "workorder": { "id": 4865, "reference": "SSC-02", "external_id": "test with custom prefex", "run_length": 100, "url_prefix": "http://my.qrcode.com", "due_date": null, "creation_date": "2021-02-10T04:07:46.240337Z", "use_serial_number": true, "code_layout": "sg-inside", "is_hybrid": false, "is_fp_serialized": false, "is_static_print": false }, "codes": { "count": 100, "batch_size": 100, "batch_count": 1 }, "code_type": { "pu": 2, "layout": 0, "density": 40, "buffer_size": 15, "marker_size": 16, "buffer_min_px": 13, "carrier_cells": 33, "resolution_dpi": 2540.0, "carrier_cell_size": 31, "placeholder_cells": 11, "placeholder_offset": 0, "secure_code_version": 9, "fingerprint_serialization_mode": 0 }, "equipment": { "name": "Test Printer One", "short_name": "TK-01", "location": "77 Jiangning Rd., 601", "technology": "Other", "resolution_dpi": 2540.0 }, "substrate": { "name": "Legacy Substrate for PU 2, Density 40%", "description": "Test substrate please ignore", "is_calibrated": true, "tolerance_min": 0.0, "tolerance_max": 100.0 } } ``` --- // File: consumer-sdk/custom-scan-result-consumer-sdk By default, after a successful scan the Web Video Authentication shows the landing page inside the `WebView`. If you want to display a native result screen with a different layout and product information instead, you can intercept the redirect and present your own activity or view controller. When configured for native app integration, the authentication redirects to a URL that carries both the scan id and an API key, for example: ``` scantrust://scan-result?uid=&api_key= ``` Intercept this URL in your WebView's navigation handler, extract the `uid` and `api_key`, and use them to fetch the scan data from the Scantrust Consumer API. > **Note:** The redirect target is configured in your campaign in the Scantrust Portal. It can be a custom scheme like the example above or a Scantrust-hosted URL, so read the `uid` and `api_key` from whichever form your campaign uses. If you need help, please contact Scantrust support. ## Android Set a `WebViewClient` on your WebView and override `shouldOverrideUrlLoading` to catch the redirect before the WebView attempts to navigate to it: ```kotlin webView.webViewClient = object : WebViewClient() { override fun shouldOverrideUrlLoading( view: WebView?, request: WebResourceRequest? ): Boolean { val uri = request?.url ?: return false // Match the redirect your campaign is configured to use. This example // matches scantrust://scan-result. For an stc.scantrust.com redirect, // check the https scheme and that host instead. if (uri.scheme == "scantrust" && uri.host == "scan-result") { val uid = uri.getQueryParameter("uid") val apiKey = uri.getQueryParameter("api_key") if (uid != null && apiKey != null) { val intent = Intent(this@MainActivity, ScanResultActivity::class.java) .putExtra("uid", uid) .putExtra("api_key", apiKey) startActivity(intent) } return true } return false } } ``` For the full pattern including a result activity that fetches and renders scan data, see the [Android example app](https://github.com/ScanTrust/consumer-sdk-examples/blob/main/Android/README.md). ## iOS Conform to `WKNavigationDelegate`, assign it to your WebView's `navigationDelegate`, and implement `decidePolicyFor`: ```swift func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { // Match the redirect your campaign is configured to use. This example // matches scantrust://scan-result. For an stc.scantrust.com redirect, // check the https scheme and that host instead. if let url = navigationAction.request.url, url.scheme == "scantrust", url.host == "scan-result", let components = URLComponents(url: url, resolvingAgainstBaseURL: false), let uid = components.queryItems?.first(where: { $0.name == "uid" })?.value, let apiKey = components.queryItems?.first(where: { $0.name == "api_key" })?.value { let resultVC = ScanResultViewController(uid: uid, apiKey: apiKey) navigationController?.pushViewController(resultVC, animated: true) decisionHandler(.cancel) return } decisionHandler(.allow) } ``` For the full pattern including a result view controller that fetches and renders scan data, see the [iOS example app](https://github.com/ScanTrust/consumer-sdk-examples/blob/main/iOS/README.md). ## Fetching the Scan Details Once you have the `uid` and `api_key`, fetch the scan data from the Consumer API: ``` GET https://api.scantrust.com/api/v2/consumer/scan//combined-info/ ``` Authenticate by passing the `api_key` you extracted from the redirect as the `X-ScanTrust-Consumer-Api-Key` header. The response contains the product, scan, and verification information needed to render your native result screen. See the [Scantrust Consumer API](../build-with-scantrust/consumer/scantrust-consumer-api.md) documentation for the full request and response shape. --- // File: consumer-sdk/customization-consumer-sdk To further customize the branding of the authentication app and align it with your native app, please follow the steps below. ## Create a Landing Page for Authentication Branding Authentication branding is typically managed through a landing page, allowing you to apply different customizations for various products scanned by users. However, to maintain consistent branding within your mobile app, we recommend creating a dedicated, empty landing page solely for configuring authentication branding settings. > **Note:** This landing page is distinct from those used for campaigns and redirections. ![create_landing.png](create_landing.png) ## Select Brand Logo and Colors While editing the landing page, open the `Auth App Branding` tab from the hamburger menu. ![branding_hamburger.png](branding_hamburger.png) You can then upload your brand logo and select colors that match your native app’s style. ![branding_customization.png](branding_customization.png) ## Update the URL After configuring your preferred logo and colors, please **contact support** to obtain the special landing page key associated with your new landing page. If your landing page key is `lp-key`, update the URL loaded within your app’s webview as follows: ```html https://verify.scantrust.com/video/?lp_key= ``` ## Additional settings ### Remove the Default Header The authentication app includes a default header displaying your brand logo and a language selector. If your app already has its own header, or you want to restrict language options, you may wish to remove this default header. To do so, append the `no-header` search parameter to the URL loaded in your app’s webview: ```html https://verify.scantrust.com/video/?lp_key=&no-header ``` ### Language Selection If you remove the default header or want to limit available translations, you must implement a language selector within your app. To load the video authentication in a specific supported language, append the `language` parameter to the URL: ```html https://verify.scantrust.com/video/?lp_key=&no-header&language=<> ``` The following languages are currently supported: | Language | Code | |--------------|-------| | English | en | | German | de | | Spanish | es | | Persian | fa | | French | fr | | Hindi | hi | | Indonesian | id | | Italian | it | | Japanese | ja | | Korean | ko | | Dutch | nl | | Thai | th | | Chinese | zh | | Chinese (TW) | zh-TW | | Vietnamese | vi | If your desired language is not listed, please contact support. --- // File: consumer-sdk/getting-started-consumer-sdk The Scantrust Consumer SDKs provide tools for building custom mobile apps capable of authenticating Scantrust Secure Codes. This is achieved by integrating branded Scantrust Web Video Authentication within a `WebView` in your iOS or Android native application. Designed with simplicity in mind, the SDKs make Scantrust authentication accessible to developers of all skill levels. Official integrations are currently available for both [Android](https://github.com/ScanTrust/consumer-sdk-examples/blob/main/Android/README.md) and [iOS](https://github.com/ScanTrust/consumer-sdk-examples/blob/main/iOS/README.md). > If you do not have a native mobile app or just want to add a "Verify your product" link or button to your website, see [Linking to your Website](web-link-consumer-sdk.md) instead. **Note:** Before you begin, you must have a registered company and an active account on either the Scantrust Production or Staging platform. ## Setup The Consumer SDK allows you to load a customized [video authentication](https://verify.scantrust.com/video/) experience with your branding directly within your native app. To integrate authentication, simply load the following URL inside a `WebView` in your native application: ```html https://verify.scantrust.com/video/ ``` ### Permissions Your native app must bridge camera permissions to the WebView so that the user is prompted only once. See [Handling Permissions](permissions-consumer-sdk.md) for the per-platform setup. ### Example Apps For more detailed setup guidelines, refer to the example applications: 1. [Android](https://github.com/ScanTrust/consumer-sdk-examples/blob/main/Android/README.md) (Android version ≥ 12) 2. [iOS](https://github.com/ScanTrust/consumer-sdk-examples/blob/main/iOS/README.md) (iOS version ≥ 16) ### Customization To customize the video authentication experience and match your app’s branding, follow the [customization tutorial](customization-consumer-sdk.md). --- // File: consumer-sdk/permissions-consumer-sdk The Scantrust Web Video Authentication experience requests browser-level permissions (camera and geolocation). When the experience is loaded inside a `WebView` / `WKWebView`, these JavaScript permission request can fire on top of the OS-level request your native app has already asked. To avoid this, you can intercept the WebView's permission requests in your delegate and resolve them programmatically using your app's native permission state. ## Android ### Manifest Declare the required permissions and camera hardware features in `AndroidManifest.xml`: ```xml ``` Setting `android:required="false"` on the camera features keeps the app installable on devices without a camera. ### Bridge the WebView's Camera Request Override `WebChromeClient.onPermissionRequest` to intercept JavaScript camera requests, and answer them from your native permission state. Use `ActivityResultContracts.RequestPermission` to acquire the native `Manifest.permission.CAMERA` if it is not already granted: ```kotlin private var pendingRequest: PermissionRequest? = null private val cameraPermissionLauncher = registerForActivityResult( ActivityResultContracts.RequestPermission() ) { granted -> pendingRequest?.let { req -> if (granted) req.grant(req.resources) else req.deny() pendingRequest = null } } webView.webChromeClient = object : WebChromeClient() { override fun onPermissionRequest(request: PermissionRequest?) { request?.let { req -> if (req.resources.contains(PermissionRequest.RESOURCE_VIDEO_CAPTURE)) { if (ContextCompat.checkSelfPermission( this@MainActivity, Manifest.permission.CAMERA ) == PackageManager.PERMISSION_GRANTED) { req.grant(req.resources) } else { pendingRequest = req cameraPermissionLauncher.launch(Manifest.permission.CAMERA) } } else { // Other resources (e.g. microphone) — grant or deny per your app's policy. req.grant(req.resources) } } } } ``` For the full integration including WebView setup and a permission rationale dialog, see the [Android example app](https://github.com/ScanTrust/consumer-sdk-examples/blob/main/Android/README.md). ## iOS ### Info.plist Add a camera usage description so the OS-level prompt shows your app's branding and explanation: | Key | Value | |----------------------------------------------------------------------|--------------------------------------------------------------------| | `Privacy - Camera Usage Description` (`NSCameraUsageDescription`) | A short message explaining why the app needs camera access. | If the video authentication is configured to use the browser's geolocation API, also add a location usage description: | Key | Value | |--------------------------------------------------------------------------------------------------|----------------------------------------------------------------| | `Privacy - Location When In Use Usage Description` (`NSLocationWhenInUseUsageDescription`) | A short message explaining why the app needs location access. | ### Bridge the WKWebView's Camera Request Conform to `WKUIDelegate` on the view controller managing your `WKWebView`, set it as the `uiDelegate`, and implement `requestMediaCapturePermissionFor`. Use `AVCaptureDevice.authorizationStatus(for: .video)` to answer the JavaScript request from native state: ```swift import AVFoundation import WebKit class ViewController: UIViewController, WKUIDelegate { var webView: WKWebView! override func viewDidLoad() { super.viewDidLoad() webView = WKWebView(frame: view.bounds, configuration: WKWebViewConfiguration()) webView.uiDelegate = self view.addSubview(webView) } func webView(_ webView: WKWebView, requestMediaCapturePermissionFor origin: WKSecurityOrigin, initiatedByFrame frame: WKFrameInfo, type: WKMediaCaptureType, decisionHandler: @escaping (WKPermissionDecision) -> Void) { guard type == .camera || type == .cameraAndMicrophone else { decisionHandler(.prompt) return } switch AVCaptureDevice.authorizationStatus(for: .video) { case .authorized: decisionHandler(.grant) case .notDetermined: AVCaptureDevice.requestAccess(for: .video) { granted in DispatchQueue.main.async { decisionHandler(granted ? .grant : .deny) } } case .denied, .restricted: decisionHandler(.deny) @unknown default: decisionHandler(.deny) } } } ``` For the full integration including a "Settings" alert when camera access is denied, see the [iOS example app](https://github.com/ScanTrust/consumer-sdk-examples/blob/main/iOS/README.md). --- // File: consumer-sdk/web-link-consumer-sdk You can also launch the Scantrust Web Video Authentication experience directly from your website using a standard hyperlink or button. It is useful for adding a "Verify your product" call-to-action on a product page or marketing site. > **Recommended:** Use a hyperlink or button that opens the video authentication as a top-level page. > > **We do not recommend embedding the video authentication in an `iframe`.** The camera feed can render inconsistently when sized inside an iframe, and the scan flow is less reliable than when loaded as a top-level page. ## Link or Button Link to the video authentication URL like any other page: ```html Check Authenticity ``` ## Branding with a Landing Page Key To apply your brand's logo and colors to the authentication experience, create a landing page and obtain its key by following the [Customization](customization-consumer-sdk.md#create-a-landing-page-for-authentication-branding) guide. Then append the `lp_key` query parameter: ```html Verify your product ``` Replace `` with the landing page key provided by Scantrust support team. ## Using a Custom Domain If you want the video authentication to live on your own subdomain (for example `qr.yourbrand.com/video/`) instead of `verify.scantrust.com/video/`, you can configure a custom domain in the Scantrust Portal. Once set up, use your subdomain in the link `href`: ```html Check Authenticity ``` For setup instructions, see [How to Set Up a Custom Domain in the Scantrust Portal](https://help.scantrust.com/hc/en-us/articles/4844021881618-How-to-Set-Up-a-Custom-Domain-in-the-Scantrust-Portal). --- // File: mobile-sdk/ScanEngine import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; The entry point of the Scantrust Processing is the `ScanEngine`, this class does all the heavy lifting, setting up the camera and the preview (view finder) view, running the image processing on the incoming frames and reporting the various outcomes. ## Setup The `ScanEngine` class provides easy way to setup and start the camera with preview view, receive scan feedback and scan session update. To get started with ScanEngine, you need to extend the `ScanEngineViewController` class for your view controller along with two delegates. ```swift import ScantrustSDK class ViewController: ScanEngineViewController, ScanEngineFeedbackReceiverProtocol, AuthenticationSessionEndedDelegateProtocol { ``` ```objc #import @interface ViewContorller : ScanEngineViewController ``` In `viewDidLoad()` method, setup scan engine with delegates like below. ```swift import ScantrustSDK class ViewController: ScanEngineViewController, ScanEngineFeedbackReceiverProtocol, AuthenticationSessionEndedDelegateProtocol { private var scanEngine: ScanEngine? override func viewDidLoad() { super.viewDidLoad() if scanEngine != nil { return } scanEngine = ScanEngine(endSesionDelegate: self, feedbackReceiver: self) // Considering you have UIView called overlayView setup in storyboard/XIB or in code scanEngine?.previewView = overlayView } } ``` ```objc #import @interface ViewContorller() { ScanEngine* _scanEngine: } @implementation ViewController #pragma mark - View life cycle methods - (void)viewDidLoad { [super viewDidLoad]; if (_scanEngine) { return; } _scanEngine = [[ScanEngine alloc] initWithEndSesionDelegate:self feedbackReceiver:self]; // Considering you have UIView called preview setup in storyboard/XIB or in code [_scanEngine setPreviewView:_previewView]; } @end ``` Here is what you are doing. - Create a private variable to setup the scan engine. - In `viewDidLoad` method initialize the scan engine with delegates. - Setup a preview view to show the camera preview. SDK does provides `PreviewView` to setup the camera preview in Storyboard or create a new instance. You can also extend `OverlaidPreview` or `PreviewView` to provide your own view. ## PreviewView SDK provides a basic `PreviewView` a subclass of UIView to represent the camera preview and extendes from UIView Which hold the preview layer to customize and view the camera frames. You can also extend `PreviewView` to provide your own view by using `extraSetup`. For default usage of `PreviewView`, you can use the `OverlaidPreview` class to setup the camera preview in Storyboard or create a new instance. PreviewView has 4 different states based on camera zoom level which is represented by `PreviewViewState` enum. It also provides a method to notify when the preview state changes. The `PreviewViewState` can be any one of the following. - `PreviewViewStateZoomedOut`: The camera is zoomed out and the preview is shown with 1x zoom. - `PreviewViewStateZoomedIn`: The camera is zoomed in and the preview is shown with default zoom factor. - `PreviewViewStates_Zooming`: The camera is zooming in. - `PreviewViewStates_Undefined`: Initial state of the preview view. ## Scanner Handling The ScanEngine provides following method to control the camera and it is up to the user to determine when to start and stop the camera or processing. But in general the camera is started in the `viewWillAppear()` method and stopped on `viewWillDisappear()` The scanning process is started by calling `start` method from ScanEngine. This method will start the camera frame processing. ```swift override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) scanEngine?.reset() scanEngine?.start() } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) scanEngine?.stopAuthenticationSession() } ``` ```objc - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; if (_scanEngine) { [_scanEngine reset]; [_scanEngine start]; } } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; if (_scanEngine) { [_scanEngine stop]; } } ``` | Public Methods | Description | | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | - (void)start; | Starts the underlying camera object, its preview and starts the Scantrust frame processing. | | - (void)stop; | stops the preview and stops the Scantrust frame processing. | | - (void)reset; | Resets the Scantrust frame processing. Should be used when the frame processing has been paused. Note: this will not have an impact on the camera or its preview, but will restart the response flow. | | - (void)turnTorchOnOff:(BOOL)turnOn; | Turns the torch on or off depending on the value of turnOn. | ## Delegates The session results or feedbacks of scan sessions are organized as follows and provided as delegate methods ### Authentication Session Ended Delegate `AuthenticationSessionEndedDelegateProtocol` helps to receive the session end result. It can be defined as below. | AuthenticationSessionEndedDelegate Method | Description | | ------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- | | - (void)authenticationSessionEndedCandidateFound:(AuthenticationScanCandidate\*) candidate | called when a candidate ready for authentication has been found (called after frameAnalysedWithResult) | | - (void)authenticationSessionEndedTimeOut:(AuthenticationScanCandidate\*) bestCandidate | called when the authentication session timed out (no scan with a good enough quality has been found) the best candidate is provided | | - (void)authenticationSessionEndedTimeOutWithoutCandidate:(BasicScanCandidate\*) content | called when the authentication session timed out (no scans have been found at all) the content is provided | | - (void)authenticationSessionEndedError | called when an error occurred during the auth process preventing the session to continue (no parameters | | - (void)authenticationSessionEndedCodeNotFound:(BasicScanCandidate\*) content | called when the extended id of the code doesn't exist on the system | | - (void)authenticationSessionEndedNoAuthCode:(BasicScanCandidate\*) content | called when a code with no authentication feature belonging to Scantrust is read | | - (void)authenticationSessionEndedThirdPartyContent: (NSString\*) content | called when a code that is not a scantrust secure code (e.g. third party or ID only) is read | ### ScanEngine Feedback Receiver Define the states of the individual scans and reported via `ScanEngineFeedbackReceiverProtocol`. | Scan Feedback | Description | | --------------------------------- | ------------------------------------------------------------------------------------------------------------- | --- | | -(void)frameOk | The code belongs to Scantrust and all the constraints are met | | -(void)codeIsTooSmall; | A code belonging to Scantrust has been detected, but the minimum size constraint has failed | | -(void)codeHasGlare | A code belonging to Scantrust has been detected, but has been classified as too blurry | | | -(void)secureGraphicIsNotInFrame; | A hybrid code belonging to Scantrust has been detected, but the external fingerprint zone is not in the frame | --- // File: mobile-sdk/Scanning-SDK-android Scantrust Android SDK is the native sdk for the Scantrust Scan Engine. ## Contents - [Contents](#contents) - [Installation](#installation) - [Getting Started](#getting-started) - [Prerequisites](#prerequisites) - [Prepare a Layout](#prepare-a-layout) - [FlowControllers And ScantrustCameraManager](#flowcontrollers-and-scantrustcameramanager) - [Setup](#setup) - [DoublePingFlowController & ThreeStepsFlowController](#doublepingflowcontroller--threestepsflowcontroller) - [ScanTrustCameraManager](#scantrustcameramanager) - [Optional `CropType` And `isQa` Flag](#optional-croptype-and-isqa-flag) - [Handling](#handling) - [Results](#results) - [ReadOnlyCameraManager Setup and Management](#readonlycameramanager-setup-and-management) - [Setup](#setup-1) - [Optional Arguments](#optional-arguments) - [Handling](#handling-1) - [Results](#results-1) - [Location Management](#location-management) - [Utilities](#utilities) - [PhoneCompatibilityManager](#phonecompatibilitymanager) - [NetworkUtils](#networkutils) - [Utils](#utils) - [AuthRequestHelper & EnterpriseRequestHelper](#authrequesthelper--enterpriserequesthelper) ## Installation Include the sdk lib as a dependency ```gradle implementation 'com.scantrust.consumer:android-sdk:x.y.z' ``` ## Getting Started The SDK offers the management of the camera, the image processing of the incoming frames and other features such as helpers for the api manager or utility functions. ### Prerequisites 1. Android API 21+ is required as the `minSdkVersion` in most of our lib modules. 1. The SDK requires the following permissions and features (they don't necessarily need to be added into the app as they should already be in the individual libraries) * `` * `` * `` * `` * `` * `` * `` * `` 1. The scanning is meant to be done in the portrait phone orientation so the underlying `Activity` should therefore fix it (`setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);`) in its `onCreate`. ### Prepare a Layout The layout file of the scanning screen should include a `FrameLayout` or `RelativeLayout` that fills all the screen(`match_parent`) or as much as possible, to which a "preview" `View` will be added. The `View` will be provided either by the flow controller or directly by the `ScanTrustCameraManager` and needs to be added after instantiation. ```xml ``` ## FlowControllers And ScantrustCameraManager The entry point of the SDK lib is either through one of the flow controllers or, in case a finer control is needed, through the `ScanTrustCameraManager`. These classes do all the heavy lifting; managing the scanning flow, setting up the camera and the preview view, running the image processing on the incoming frames and reporting the various outcomes. The `DoublePingFlowController` should be the preferred choice. - **It is based on the same flow as the "Three Steps" flow:** The flow starts with the camera zoomed out and is in a state where it's waiting for a code to be scanned **(step 1)**. If a code is read and is sufficiently centered (in a position that still makes it visible with the 4x zoom), then the zoom-in is done and the controller will be waiting for a code that meets the size constraint **(step 2)**. Otherwise, the user will be told that he needs to center the code. As soon as a code meets the size constraint in the Fit QR state, the torch is turned on and as soon as the white balance is stabilised, the regular authentication process kicks in **(step 3)**. - **Requires extra code-dependent parameters:** If no parameters are available for the current code, then the app will be notified that the controller is expecting them. If the code has encoded parameters in its content, then the flow will continue as in the three steps flow, if not, then the flow will be paused. As soon as new parameters are provided, if the code is not already known, then they get propagated to the quality processing part and are applied to the next frames. ### Setup #### DoublePingFlowController & ThreeStepsFlowController Both controllers have two mandatory `builder` arguments: an `Activity` and a `Callback` for the reporting. They also have some optional arguments: a `CropType` which defines the type of crop to perform on the scan(fingerprint or QR code), a flag for the use or not in a QA app and a flag to indicate the state of the zoom when the manager is initialised. The default values for the optional parameters are: `cropType = CropType.FP`, `isQa = false` and `startZoomedOut = true`. #### ScanTrustCameraManager The `ScanTrustCameraManager` is obtained through it's `builder` which takes an `Activity`and a `ManagerCallback` for the reporting and that has four optional arguments: a `CropType` which defines the type of crop to perform on the scan(fingerprint or QR code), a flag for the use or not in a QA app, a flag to indicate the state of the zoom when the manager is initialised and ~~a flag to indicate the need to obtain detailed content when not scanning for authentication~~. The default values for the optional parameters are: `cropType = CropType.FP`, `isQa = false`, `startZoomedOut = true` and ~~`detailedContent = false`~~. These classes should be instantiated in the creation phase of your screen. E.g. in the Activity's `onCreate`. ```java private DoublePingFlowController controller; @Override public void onCreate(Bundle savedInstanceState) { ... controller = new DoublePingFlowController.Builder(this, callback).build(); mPreviewLayout.addView(controller.getPreviewView()); ... } ``` ```java private ScanTrustCameraManager cameraManager; @Override public void onCreate(Bundle savedInstanceState) { ... cameraManager = new ScanTrustCameraManager.Builder(this, managerCallback).build(); mPreviewLayout.addView(cameraManager.getPreviewView()); ... } ``` After instantiation, the `View` on which the frames are drawn is accessible with `getPreviewView()` and should be added to your `Layout`, as show in the example. The `View` is either a `TextureView` or a `SurfaceView`, depending on which version of the camera api is used. #### Optional `CropType` And `isQa` Flag Note: only the default values should normally be used. | CodeType | Description | | --- | --- | | QR | A crop of the QR Code replaces the camera's frame (_base image_) in order to decrease the size of the server request. __Notes:__ there is __no__ _crop image_ in the `QRCodeData`, the value of `isQa` is irrelevant and the values of the _QR pattern centres_ are adapted to fit with the _base image_. | FP | A crop of the secure graphic is added to the `QRCodeData` and the _QR pattern centres_ and the _crop offsets_ correspond to the crop. If the code is __hybrid with SG outside AND `isQa == false`__ then the SG is outside of the QR and the crop is made accordingly. For all other cases, including __hybrid with SG outside AND `isQa == true`__, the crop is made in the centre of the QR.| ### Handling The controller and manager give you access to the following methods. It is up to the user to determine when to start and stop the camera or the processing. But in general the camera is started in the `onResume` method and released in the `onPause`. ```java @Override protected void onResume() { ... cameraManager.startCamera(); ... } @Override protected void onPause() { ... // Because the Camera object is a shared resource, it's very // important to release it when the activity is paused. cameraManager.releaseCamera(); ... } ``` __ThreeStepsFlowController:__ | Public Methods | Description | | --- | ---| | `public View getPreviewView()` | Returns the `View` that was created by the manager and on which the camera preview is drawn.| | `public void startCamera()` | Starts the underlying camera object, its preview and starts the Scantrust frame processing.| | `public void releaseCamera()` | Releases the underlying camera object, stops the preview and stops the Scantrust frame processing.| | `public void restartProcessing()`| Restarts the Scantrust frame processing. Should be used when the frame processing has been paused. Note: this will not have an impact on the camera or its preview, but will restart the response flow.| | `public void pauseProcessing()` | Pauses the Scantrust frame processing. The flow of responses will stop, but the camera and it preview will not be affected.| | `public void setCameraTorchModeOnOff(boolean turnOn)` | Turns the torch *on* or *off* depending on the value of `turnOn`.| | `public void resetFlow()` | Resets the "three steps" flow.| | `public void doAutoFocus(float, float, int, int)`| Triggers a camera autofocus on the provided point. Usually only called in the `onTouchListener` associated to the preview view. | __DoublePingFlowController:__ Has the same methods as the ThreeStepsFlowController with the addition of: | Public Methods | Description | | --- | ---| | `public void setCodeParams(String message, int blurThreshBias, int activationStatus, int trainingStatus)` | Sets the scanning parameters of a code.| __ScanTrustCameraManager:__ | Public Methods | Description | | --- | ---| | `public T getPreviewView()` | Returns the `View` that was created by the manager and on which the camera preview is drawn.| | `public void startCamera()` | Starts the underlying camera object, its preview and starts the Scantrust frame processing.| | `public void releaseCamera()` | Releases the underlying camera object, stops the preview and stops the Scantrust frame processing.| | `public void restartProcessing()`| Restarts the Scantrust frame processing. Should be used when the frame processing has been paused. Note: this will not have an impact on the camera or its preview, but will restart the response flow.| | `public void pauseProcessing()` | Pauses the Scantrust frame processing. The flow of responses will stop, but the camera and it preview will not be affected.| | `public void setCameraTorchModeOnOff(boolean turnOn)` | Turns the torch *on* or *off* depending on the value of `turnOn`.| | `public void resetZoom()` | Resets the "zoom-in" flow.| | `public void doZoomIn(Handler handler)`| Performs the automatic zooming-in if the camera is not already zoomed-in.| | `public boolean checkCodePositioning(QRCodeData data)` | Checks if the code is centered in the image| | `public void setScalingFactor(int physicalSize)` | Sets the scaling factor for the QR detection according to the given code physical size. As for the default setup, the size of the code should roughly be 108pix wide.| | `public void setAuthScanning(boolean scanForAuthentication)` | Triggers the processing for the authentication, as opposed to the processing for the content of the codes.| | `public boolean isZoomedOut()` | True if the camera zoomed-out.| | `public void doAutoFocus(float motionX, float motionY, int viewWidth, int viewHeight)` | Triggers a camera autofocus on the provided point. Usually only called in the `onTouchListener` associated to the preview view.| ### Results The results are shared via a handler or a callback that comes as a constructor argument. The results are organised as follows: __Scanning Context:__ Defines the scan type | Scanning Context | Description | | --- | ---| | AUTH | Defines a scan that was made in the authentication context.| | CONTENT | Defines a scan that was not made for authentication. | __Processing Status:__ Defines the state of the flow | Processing Status | Description | | --- | ---| | COMPLETED_RESULT | Designs a response that needs special attention and therefore that has caused the Scantrust image processing to stop. The user will need to call `restartProcessing()` to restart the flow.| | IN_PROGRESS | Designs a response that will not stop the Scantrust frame processing, the responses will keep coming as long as the user doesn't manually stop the flow or the camera or as long as a `COMPLETED_RESULT` or `BLOCKED_RESULT` doesn't occur. | | UNSUPPORTED_RESULT | Designs a response obtained on an unsupported phone. The processing flow may or many not stop depending on the outcome of the scans. __(should probably be in the report type rather than here...)__| | BLOCKED_RESULT | Indicates a response obtained when the a quality event is triggered. The processing will stop. | __Code State__: Defines the state of the individual scans (found in the returned `QRCodeData`) | Code State | Description | | --- | ---| | UNREADABLE | No QR code has been detected by the reader or the QR code that has been detected does not have all four required pattern centres | | OK | The code belongs to Scantrust and all the constraints are met | | TOO_SMALL | A code belonging to Scantrust has been detected, but the minimum size constraint has failed| | BLURRY | A code belonging to Scantrust has been detected, but has been classified as too blurry| | NOT_PROPRIETARY | A code has been detected, but it doesn't belong to Scantrust | | FP_NOT_IN_FRAME | A hybrid code belonging to Scantrust has been detected, but the external fingerprint __zone__ is not in the frame | | NO_AUTH | A code with no authentication feature belonging to Scantrust has be found | | GLARE | A code belonging to Scantrust has been detected, but has been classified as having glare | __Quality Events__: Define the events triggered by the capture quality manager. __Note:__ the events live independently of the scan states The scan states and quality events are distributed among the report types as shown in the following table: __*Scanning Context = CONTENT*__ | Processing Status | Code State | Quality Event | Description| | --- | --- | --- | --- | | COMPLETED_RESULT | OK | | A code belonging to Scantrust has been detected and all is ok with it| | | NOT_PROPRIETARY | | A code has been detected, but it doesn't belong to Scantrust| | | NO_AUTH | | A code with no authentication feature belonging to Scantrust has be found| | | BLURRY | |A code belonging to Scantrust has been detected, but has been classified as too blurry| | | UNREADABLE | | No QR code has been detected by Zxing or the QR code that has been detected does not have all four required pattern centers. _This is the only state in the CONTENT report type that doesn't stop the frame processing_| | | FP_NOT_IN_FRAME | | A hybrid code belonging to Scantrust has been detected, but the external fingerprint __zone__ is not in the frame| | | TOO_SMALL | | A code belonging to Scantrust has been detected, but the minimum size constraint has failed| | | GLARE | | A code belonging to Scantrust has been detected, but has been classified as having glare| | UNSUPPORTED_RESULT | UNREADABLE | | No QR code has been detected by Zxing or the QR code that has been detected does not have all four required pattern centres| | | OK | | The code belongs to Scantrust. The processing will be stopped| | | NOT_PROPRIETARY | |A code has been detected, but it doesn't belong to Scantrust. The processing will be stopped| __*Scanning Context = AUTH*__ | Processing Status | Code State | Quality Event | Description| | --- | --- | --- | --- | | COMPLETED_RESULT | OK | | A scan is ready to be sent to the server for authentication| | | NOT_PROPRIETARY | | A code has been detected, but it doesn't belong to Scantrust| | | NO_AUTH | | A code with no authentication feature belonging to Scantrust has be found| | IN_PROGRESS | OK | | A scan of a code belonging to Scantrust has met all the constraints| | | BLURRY | |A code belonging to Scantrust has been detected, but has been classified as too blurry| | | UNREADABLE | | No QR code has been detected by Zxing or the QR code that has been detected does not have all four required pattern centres| | | FP_NOT_IN_FRAME | | A hybrid code belonging to Scantrust has been detected, but the external fingerprint __zone__ is not in the frame| | | TOO_SMALL | | A code belonging to Scantrust has been detected, but the minimum size constraint has failed| | | GLARE | | A code belonging to Scantrust has been detected, but has been classified as having glare| | UNSUPPORTED_RESULT | UNREADABLE | | No QR code has been detected by Zxing or the QR code that has been detected does not have all four required pattern centres| | | OK | | The code belongs to Scantrust. The processing will be stopped| | | NOT_PROPRIETARY | |A code has been detected, but it doesn't belong to Scantrust. The processing will be stopped| | BLOCKED_RESULT | OK _or_ BLURRY _or_ GLARE |TOO_BLURRY | The quality manager is reporting an important number of blurry scans. A scan (with a sufficient or reasonably insufficient quality) is available to be sent to the server. The processing will be stopped. | | | OK _or_ BLURRY _or_ GLARE |TIMEOUT_STRUGGLING | The user has tried to scan for some time and is struggling. A scan (with a sufficient or reasonably insufficient quality) is available to be sent to the server. The processing will be stopped. | | | |TIMEOUT_LOW_QUALITY | The user has tried to scan for some time, __but__ the quality of the best frame is too poor to be sent to the server. The processing will be stopped. | | | |TIMEOUT_LOW_ACTIVITY | The level of activity during the last portion of the scanning session is very low. The user has either given up or hardly no codes were detected in the frames. No scan is available and the processing will be stopped. | ## ReadOnlyCameraManager Setup and Management The `ReadOnlyCameraManager` does the same camera and view setup as the `ScanTrustCameraManager` but does not perform the image and frame processing required for the Scantrust authentication. It is limited to checking the ownership of the code based on its content. ### Setup After instantiation, the `View` on which the frames are drawn is accessible with `getSurfaceView()` and should be added to your `Layout`. The default builder takes an `Activity` and a `ManagerCallback` for the reporting. ```java public ReadOnlyCameraManager.Builder(Activity activity, ManagerCallback managerCallback) ``` It will enable the reading of 1D barcodes _(UPC-A, UPC-E, EAN-8, EAN-13, Code 39, Code 93, Code 128, ITF(Interleaved Two of Five), RSS 14, RSS EXPANDED)_ and QR codes and its instantiation should be done in the same way as for the `ScanTrustCameraManager`. #### Optional Arguments An additional list of code _formats_ can be provided as well as a _tryHarder_ flag, which will optimize for accuracy over speed. ```java ReadOnlyCameraManager.Builder(activity, managerCallback).formatList(formats).tryHarder(true); ``` | Available Formats | Format Type| | --- | --- | |Aztec| 2D barcode format| |CODABAR| 1D format| |Code 39| 1D format| |Code 93| 1D format| |Code 128| 1D format| |Data Matrix| 2D barcode format| |EAN-8| 1D format| |EAN-13| 1D format| |ITF (Interleaved Two of Five)| 1D format| |MaxiCode| 2D barcode format| |PDF417| |QR Code| 2D barcode format| |RSS 14| |RSS EXPANDED| |UPC-A| 1D format| |UPC-E| 1D format| |UPC/EAN| extension format. Not a stand-alone format| ### Handling The manager gives access to a subset of the `ScantrustCameraManager` methods and should be handled in the same way. ### Results The results are shared via a handler that comes as a constructor argument. The results obtained with the `ReadOnlyCameraManager` are: | Processing Status | Code State | Description| | --- | --- | --- | | COMPLETED_RESULT | OK | A code belonging to Scantrust has been detected (processing is paused)| | | NOT_PROPRIETARY | A code has been detected, but it doesn't belong to Scantrust or is undetermined (processing is paused)| | IN_PROGRESS | UNREADABLE | No code has been detected| Depending on the kind or _Processing Status_ the frame processing will have been stopped from within the manager, refer to the tables for more information. ## Location Management In order to deal with the location updates in an asynchronous way, a `LocationHandlerThread` can be used. It extends HandlerThread so should be used in a similar way. It doesn't internally deal with the LOCATION permissions, so once instantiated, a `Thread.UncaughtExceptionHandler` should be added to it in order to catch the potential SecurityExceptions. ```java ... LocationHandlerThread locationHandler = new LocationHandlerThread(context, "LOCATION", Thread.NORM_PRIORITY); locationHandler.setUncaughtExceptionHandler(exceptionHandler); locationHandler.start(); ... } Thread.UncaughtExceptionHandler exceptionHandler = new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { ... } }; ``` The LocationHandlerThread is started with `start()`, but the location updates will only start after having called `resumeLocationUpdates()`. The location updates can be stopped with `pauseLocationUpdates()` and the LocationHandlerThread itself should be stopped with `quit()` or `quitSafely()`. Managing the thread in the appropriate life-cycle methods is a good idea. __The latest location positions are obtained with `getLocation()`__. _Note_: an underlying `StLocationManager` manages the location service and can be used by itself, but the user will then have to deal with the thread management. It uses the `LocationManager` to set up and obtain periodic updates of the device's geographical location according to Scantrust's needs. It requires the ACCESS_COARSE_LOCATION and ACCESS_FINE_LOCATION permissions and will throw SecurityExceptions if these permissions have not been granted or are disabled during use. ## Utilities ### PhoneCompatibilityManager The compatibility manager is a utility class that is used to assess the phone's state/compatibility in relation to * Scantrust's Secure Graphic authentication (`checkPhoneCompatibility`) * NFC reading (`checkNfcStatus`) * Location(GPS, Network) availability (`isLocationSupported`) ### NetworkUtils Provides simple functions to determine the connectivity of the device. ### Utils Provides a helper method to get the install UUID ### AuthRequestHelper & EnterpriseRequestHelper For the calls that involve server authentication, the number of parameters to be sent is large and not very practical as the arguments require formatting. These two helper classes aim to make this formatting as easy as possible. As a first step, interface methods using _Retrofit2's_ `@PartMap` have been added to the consumer and enterprise apis. They give the possibility of adding the call parameters in a `Map`. The AuthRequestHelper and EnterpriseRequestHelper are therefore helpers that populate this `Map` based on the output of the `ScanTrustCameraManager` and other available data. ```java //get code data from the camera manager QrCodeData data = ... //get the location data from the location manager Location location = ... //get the device IMEI String imei = ... //generate the map Map paramMap = new AuthRequestHelper().makeMapForAuth( data, location, DeviceInfo.getDeviceInfo(imei), AppInfo.getMobileAppInfo(context) ); ApiManager.getAuthApi(apiBaseUrl).authenticate( header1, header2, paramMap ).enqueue(new Callback() {...}); ``` Let's look at the arguments of `makeMapForAuth(QRCodeData data, Location location, DeviceInfo deviceInfo, AppInfo appInfo)` which is the helper function for the regular authentication. 1. _data_: the output of the camera manager 1. _location_: the location data obtained from the LocationHandlerThread or by your own means 2. _deviceInfo_: the info about the device. This can be easily obtained with the static factory methods or by instantiating the `DeviceInfo` class. 3. _appInfo_: the info about the app. Can be obtained with the `Appinfo`'s static factory method or by instantiating the class. The user may not have allowed the app to use geolocation, thus the function also exists without the location parameter and will produce the same output as if `null`is provided (i.e. _location.latitude = 0.0, location.longitude = 0.0 location.positioning = ""_). The `"android.permission.READ_PHONE_STATE"` may also be denied which would prevent access to the phone's IMEI. The `DeviceInfo` class therefore has two constructors and relies on the developer to deal with the permissions. Note that providing the IMEI should be the standard way of doing, omitting it should only be for cases when the app is allowed to work without this info and should only be used if the user has explicitly rejected the permission. --- // File: mobile-sdk/StLimitedCameraManager The `StLimitedCameraManager` does the same camera and preview view setup as the STCameraManager but does not perform the image and frame processing required for the Scantrust authentication. It is limited to checking the ownership of the code based on its content. ## Setup By default It will enable the reading of 1D barcodes (UPC-A, UPC-E, EAN-8, EAN-13, Code 39, Code 93, Code 128, ITF(Interleaved Two of Five), RSS 14, RSS EXPANDED) and QR codes and it’s instantiation should be done in the same way as for the STCameraManager. ## StLimitedCameraManager Handling The manager gives access to the same methods as the STCameraManager. ## Results The results obtained with the StLimitedCameraManager are: | Report Type | Scan State | Description | | ----------- | ---------- | ----------- | | COMPLETED_RESULT | OK | A code belonging to Scantrust has been detected (processing is paused) | | | NOT_PROPRIETARY | A code has been detected, but it doesn’t belong to Scantrust or is undetermined (processing is paused) | | IN_PROGRESS | UNREADABLE | No code has been detected by Zxing | Limited Camera manager provides a delegate method to know the result. ```objective-c @protocol STLimitedCameraManagerDelegate @optional - (void)cameraManager:(STLimitedCameraManager *)cameraManager didCompleteScanWithScanResult:(STScanResult *)scanResult; @end ``` `STScanResult` class gives the scanned code data and STScanState. --- // File: mobile-sdk/UI-lib-android The Scantrust UI library is meant to provide a convenient way of setting up the UI elements of the consumer-facing scanning process. ## Contents 1. [Understanding The Scanning Process](#understanding-the-scanning-process) 1. [UI Elements](#ui-elements) 1. [Installation](#installation) 1. [Basic Layout Setup](#basic-layout-setup) 1. [XML Details And Examples](#xml-details-and-examples) 2. [View Setup](#view-setup) ## Understanding The Scanning Process A good understanding of the flow is necessary in order to properly set the different components up. The regular consumer flow starts with the camera zoomed out and is in a state where it’s waiting for a code to be scanned (Read Content). If a code is read and is sufficiently centered (in a position that still makes it visible with the 4x zoom), then the zoom in is done and the controller will be waiting for a code that meets the size constraint (Fit QR). Otherwise, the user will be told that he needs to center the code (Center QR). As soon as a code meets the size constraint in the Fit QR state, the torch is turned on and as soon as the white balance is stabilised, the regular authentication process kicks in (Auth). ![Three_Steps_Flow_state_graph](/doc-img/Three_Steps_Flow_state_graph.png) ![understanding_the_scanning_process2](/doc-img/understanding_the_scanning_process2.png) ### UI Elements ![customisable_elements](/doc-img/customisable_elements.jpg) #### Torch icon - The "ON" colour is set via the `torchIconColor` xml custom attribute. - `isTorchOn()` give the state of the icon - Set a listener on the click event with `setTorchOnClickListener(TorchOnClickListener listener)` #### Scanning window - Depends on the window proportion in the preview view and the camera's true zoom factor(set via `setWindowProportion(float windowProportion, Size previewViewSize, float trueZoom)`). - Managed indirectly when the scanning stage is changed (`setCurrentStage(ScanStage scanStage)`) or when the scanning stage is reset (`resetScanningStage()`) #### Scanning progress bar - The drawable is set via the `android:progressDrawable` xml attribute - The progress is managed internally when the scanning stage changes or is reset #### Message bubble - The default background is set via the `msgBackground` xml custom attribute - The text and background can be set via the `showInstructionBubble(String msg, int backgroundRes)` or `showInstructionBubble(String msg)` methods according to the feedback given by the scanning sdk - The text and background can be hidden via the `hideInstructionBubble()`. - Is visible by default, use the `showBlurScoreProgressBarAndMsgBubble` xml custom attribute or method to hide it on start-up (should normally not be touched) #### Instructions Background Colour - The background colour of the instructions - Set via the `scanningInstructionsBgColor` xml custom attribute #### Completed Instructions Text Colour - The colour of the instructions text when the instructions have been completed - Set via the `scanningInstructionsFinishColor` xml custom attribute #### Ongoing Instructions Text Colour - The colour of the instructions which next need to be performed - Set via the `scanningInstructionsProcessingColor` xml custom attribute #### Initial Instructions Text Colour - The colour of the instructions text before the user needs to perform them - Set via the `scanningInstructionsInitColor` xml custom attribute #### Completed Progress Bar Icon - The icon that is displayed at the end of the progress bar when a scanning session has completed - Set via the `thumbSrc` xml custom attribute - Is shown by calling the `runThumbScalingAnim()` method. This will set the progress bar to 100%, set the icon visible and animates it #### Scan Result Image - The image of the scan that is shown once a scan is complete while the request is made to the server - Set with the `setResultImg(Bitmap bitmap)` method #### Loading Element - The indeterminate progress bar view and text - The text is set with the `analyzeString` xml custom attribute - The background resource is the same as the one used for the message bubble (set with the `msgBackground`) #### Instructions Text - The texts are set with the `instructionMsg1`, `instructionMsg2` and `instructionMsg3` xml custom attributes - The texts should never change and should be: 1. "Center the QR" 1. "Fit the QR to the window" 1. "Get a clear picture of the QR" ### Installation Include the UI lib as a dependency ``` implementation 'com.scantrust.consumer:android-ui:x.y.z' ``` ### Basic Layout Setup The UI elements overlay the layout that holds the camera preview (c.f. [prepare a layout](/docs/mobile-sdk/Scanning-SDK-android#prepare-a-layout) section of the SDK). It is integrated as a custom `RelativeLayout` called **_ConsumerScanningUi_**. The following custom attributes are used to modify its UI elements. | Attribute name | Format | Use | | ------------------------------------ | --------- | --------------------------------------------------------------------------------------------------------- | | torchIconColor | color | Defines the colour of the torch icon | | msgBackground | reference | Defines the look of the instruction bubble | | thumbSrc | reference | Is the icon that is displayed when a scanning session has completed | | showBlurScoreProgressBarAndMsgBubble | boolean | Displays or hides the progress bar and the message bubble | | analyzeString | reference | The test to display when the scan is over and the image is being analysed. Recommended value: "Analysing" | | instructionMsg1 | reference | The first scanning instruction text. Recommended value: "Center the QR" | | instructionMsg2 | reference | The second scanning instruction text. Recommended value: "Fit the QR to the window" | | instructionMsg3 | reference | The third scanning instruction text. Recommended value: "Get a clear picture of the QR" | | scanningInstructionsInitColor | color | The colour of the instructions text before the user needs to perform them | | scanningInstructionsProcessingColor | color | The colour of the instructions text when the user needs to perform them | | scanningInstructionsFinishColor | color | The colour of the instructions text once they are completed | | scanningInstructionsBgColor | color | The background colour of the instructions | #### XML Details and Examples A progress drawable can also be assigned via the android:progressDrawable attribute. E.g. ```xml ``` and if needed, styles can be used to aggregate the reusable attributes: ```xml ... ... ``` with the `msgBackground` drawable: ```xml ``` The final layout file for the scanning screen would then look like this: ```xml ``` #### View Setup Once the layout files have been added and the camera parameters are set up, the ConsumerScanningUi can be inflated and initialised: ```java @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.scanning_fragment, container, false); // setup the preview previewLayout = view.findViewById(R.id.preview_layout); // Get the camera preview view and add it to the layout previewView = presenter.getController().getPreviewView(); previewLayout.addView(previewView); previewView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { // Update the scanning window size updateScanningWindow(); } }); ... ... scanningUi = view.findViewById(R.id.st_scanning_ui); // set the listener for the torch icon scanningUi.setTorchOnClickListener(torchOnClickListener); return view; } ... ... @Override public void onCameraConfigurationDone(float trueZoomFactor) { this.trueZoomFactor = trueZoomFactor; // Update the scanning window size updateScanningWindow(); } private void updateScanningWindow() { if (getContext() != null && trueZoomFactor != 0) { // set the grey overlay taking into account the model's preferences and the preview dimensions scanningUi.setCodeMinPercent(new ModelSettingsLoader(getContext()).getCodeMinPercent(), new Size(previewView.getWidth(), previewView.getHeight()), trueZoomFactor); } } ``` --- // File: mobile-sdk/Utilities ## Utilities ### STPhoneManager The `DeviceManager` is a compatibility manager and a utility class that is used to access the phone’s state/compatibility in relation to: - Scantrust’s Secure Graphic authentication (`isDeviceSupported`) - Request/check access to camera (`requestPersmissionForCamera` and `isAuthorizedForCamera`) - Device details like model, Name, OS and version ### STLocationManager `STLocationManager` is a singleton utility class to take of all geo location service methods on top of CLLocationManager. Use this class to get the authorization status of location permission, ask for authorization, start updating as well as stop updating the location pooling. - `lastKnownLocation` - returns the last known location fetched by CLLocationManager - `startUpdatingLocation` and `stopUpdatingLocation` - start and stop the location pooling - `isAuthorized` - returns the authorization status of location permission - `requestAuthorization` - ask for authorization for location permission --- // File: mobile-sdk/android-sdk ## Libraries 1. [Scanning SDK](/docs/mobile-sdk/Scanning-SDK-android) 2. [UI lib - for the scanning sdk](/docs/mobile-sdk/UI-lib-android) 3. [API lib - for the calls to the Scantrust server](/docs/mobile-sdk/api-lib-android) ## Installation The libraries are hosted on a [private Maven repository](https://artifactory.scantrust.io/artifactory/webapp/#/login) and their use is restricted to client companies. They come as regular build dependencies. - [Libraries](#libraries) - [Installation](#installation) - [Setup your credentials](#setup-your-credentials) - [Add a maven repository](#add-a-maven-repository) - [Add the desired dependencies](#add-the-desired-dependencies) ### Setup your credentials For security reasons and in order to not have to change your _build.gradle_ when working with other people, we recommend that you keep your repository credentials in the _gradle.properties_ of your _USER_HOME/.gradle_ folder. **gradle.properties** ```gradle st_repo_username=user st_repo_password=password ``` _Please take note of the fact that your username and password should not be surrounded by any quotation marks._ ### Add a maven repository The private repo needs to be added to gradle repositories **build.gradle** ```gradle repositories { maven { url "https://artifactory.scantrust.io/artifactory/libs-release-local" credentials { username = "${st_repo_username}" password = "${st_repo_password}" } } } ``` ### Add the desired dependencies ```gradle dependencies { implementation "com.scantrust.consumer:name:x.y.z" } ``` --- // File: mobile-sdk/api-lib-android The api manager may be used to perform all the different calls to Scantrust's backend server. It is a "singleton" wrapper around a [_Retrofit2_](https://square.github.io/retrofit/) instance and gives access to the different API interfaces needed in the various apps. It requires a unique **app tag** that will identify the scans coming from your app. ## Installation Include the api lib as a dependency ```gradle implementation 'com.scantrust.consumer:android-api:x.y.z' ``` Add your app tag to your code, e.g. ```java public final class HttpConstants { /** * Application tag */ static final String APP_TAG = "app name"; // "Your Scantrust-granted app name" } ``` ## Basic usage ```java ApiManager.getNameApiInterface(apiBaseUrl).interfaceMethodName( param1, param2, ... ).enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) { // Http code in the range [200..300) } else { // Http code out of the range [200..300) switch (response.code()) { case 404: break; case 400: case 500: break; default: break; } } } @Override public void onFailure(Call call, Throwable t) { // Network exception occurred talking to the server or // an unexpected exception occurred creating the request or processing the response. } }); ``` Two API service interfaces exist for the consumer and the enterprise app(replace _getApiInterfaceName_ with the appropriate interface). The _apiBaseUrl_ given when obtaining the implementation of the API endpoints defined by the service interface may change, but if the previous base url was different, then the _Retrofit_ instance will be recreated which is a costly operation and therefore should be avoided if possible. If the service interface is obtained without the _apiBaseUrl_, the default base url will be "https://api.scantrust.com". The enterprise interface contains a large number of methods that won't be discussed here, the consumer interface however has a small number of methods which basic utility can be found in the next table(for more information see the docs). | Interface Methods | Utility | | --- | ---| | _authenticate_|Regular authentication endpoint to be used when a scan is obtained without encountering any problems| | _sendInsufficientQualityCode_ | The endpoint to be used when a scan is obtained but the flow encountered quality issues| | _sendUnsupportedRequest_ | The endpoint to be used when a scan is obtained for an unsupported phone| | _syncQr_ | The endpoint to upload the whole QR Code image for scans that have already successfully been sent to the server with _authenticate_ or _sendInsufficientQualityCode_| | _checkApiVersionCompatibility_ | Verifies the compatibility of the app's api| | _getPreCheck_ | Fetches the pre-check info of a given code. To be used with the "double ping" feature.| --- // File: mobile-sdk/api-reference-android ## Latest version - Latest API-docs can be found **[here](https://devportal.scantrust.com/e/android/api/2.1.0/)**. - Latest SDK-docs can be found **[here](https://devportal.scantrust.com/e/android/sdk/3.1.0/)**. - Latest UI-docs can be found **[here](https://devportal.scantrust.com/e/android/ui/2.0.0/)** ## All versions ### API - By Version:[2.1.0](https://devportal.scantrust.com/e/android/api/2.1.0/), [2.0.0](https://devportal.scantrust.com/e/android/api/2.0.0/), [1.3.2](https://devportal.scantrust.com/e/android/api/1.3.2/) ### SDK - By Version: [3.1.0](https://devportal.scantrust.com/e/android/sdk/3.1.0/), [3.0.0](https://devportal.scantrust.com/e/android/sdk/3.0.0/), [2.2.0](https://devportal.scantrust.com/e/android/sdk/2.2.0/) ### UI - By Version: [2.0.0](https://devportal.scantrust.com/e/android/ui/2.0.0/), [1.1.10](https://devportal.scantrust.com/e/android/ui/1.1.10/) --- // File: mobile-sdk/api-reference-ios ## Latest version The latest iOS docs can be found **[here](https://devportal.scantrust.com/e/ios/v3.4.0/general.html)**. ## All versions - By Version: [v1](https://devportal.scantrust.com/e/ios/v1/general.html),[v3.4.0](https://devportal.scantrust.com/e/ios/v3.4.0/general.html) --- // File: mobile-sdk/custom-app-registration Custom App Registration doc.. --- // File: mobile-sdk/getting-started-mobile-sdk The Scantrust Mobile SDKs provide tools to build custom mobile apps capable of authentication the Scantrust Secure Codes. Currently, Scantrust has official integrations with [Android](/docs/mobile-sdk/android-sdk) and [iOS](/docs/mobile-sdk/ios-sdk) ## Goals ### Simplicity The SDKs are built with simplicity in mind, so that integrating the Scantrust Scan Engine is accessible to just about anyone with minimum development skills. ### Customisation The proposed Scanning UI features allow customisation in order to fit with your design work. ## Custom App Registration Before you start coding you will need: - Get a company registration and an active company on either the Scantrust Prod or Staging Platform - **Contact support** - Obtain your personal license key from Scantrust - Collect the Github user-id's of your devs which should have access - Register your devs with their github-id's by **contacting support** - Download the right SDK for your platform ## Get Started with The Scantrust Mobile SDK supports two environments: 1. [Android](/docs/mobile-sdk/android-sdk) 2. [iOS](/docs/mobile-sdk/ios-sdk) --- // File: mobile-sdk/ios-api-manager import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; Scantrust iOS SDK provides `APIManager` to perform network requests to Scantrust's backend server. It is a singleton class which is using `URLSession` for network requests. ## Basic Usage ```swift let data = SerializableAuthenticationRequestData.init(authenticationScanCandidate: candidate, comesFromUnreadableFlow: false) APIManager.sharedInstance()?.authenticateAuthenticationRequestData(data, withAuthToken: nil, completion: { [weak self] response, error in // handle error and response } ``` ```objc SerializableAuthenticationRequestData* requestData = [[SerializableAuthenticationRequestData alloc] initWithAuthenticationScanCandidate:bestCandidate comesFromUnreadableFlow:NO]; [[APIManager sharedInstance] authenticateAuthenticationRequestData:requestData withAuthToken:nil completion:^(STAuthResponse *response, NSError *error){ // handle error and response }]; ``` `APIManager` has two kind of requests to contact the backend. - `authenticateAuthenticationRequestData` - to authenticate secure code with backend - `sendScanQueryWithParsedContent` - to send a scan query with backend. Mainly used for unsupported phones and non auth codes ## Model Objects To make it easy to create and consume data with Scantrust backend, SDK provides varies model objects. Each has it's own responsibilities. - `SerializableAuthenticationRequestData`: to create authentication request for `APIManager` - `BasicScanCandidate`: to create scan query request for `APIManager` - `STAuthResponse`: response object for authenticate and scan query - `STBrand`: class to represents the brand details and to represent the details about brand which was associated to the scanned QR code - `STProduct`: class which represents the product details and to represent the details about product which was associated to the scanned QR code --- // File: mobile-sdk/ios-app-info `AppInfo` is utility object which contains app name and version. Whenever you make a request to Scantrust backend via `APIManager`, app details are fetched from `AppInfo` and passed to backend. Scantrust backend have custom app name for each company registered in our portal. Please contact **support** to get to know your app name. ## Basic Usage Before making any calls via `APIManager`, you must setup the `AppInfo` with app name and version. Recommended place to setup app info is `didFinishLaunchingWithOptions` in `AppDelegate`. import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; ```swift AppInfo.setupAppInfo(withName: "ScantrustSDKDemo", version: "1.0") ``` ```objc [AppInfo setupAppInfoWithName:@"ScantrustSDKDemo" version:@"1.0"]; ``` --- // File: mobile-sdk/ios-sdk Scantrust iOS SDK is the native SDK for the Scantrust Scan Engine. The SDK offers the management of the camera, the image processing of the incoming frames and other features includes some utility functions. ## Installation 1. Copy `ScantrustSDK.xcframework` to your project root folder ![Folder Structure](/doc-img/Doc_folder_strructure.png) 2. Add the SDK framwork to your project and don't forgot to check App target 3. Add Linker flags in project build settings - Goto Target -> Build Settings -> Search for "Other Linker Flags" - Add below flags one by one - `-ObjC` - `-lstdc++` - `-liconv` ![Linker Flags](/doc-img/Doc_other_linker_flags.png) 4. Make sure the framework is linked in your project or follow the below steps to add it manually. - Goto Target -> Build Phases -> Link Binary with Libraries - Click `+` icon and select `ScantrustSDK.xcframework` and `libiconv.tbd` files ![Link Framework](/doc-img/Doc_link_other_framwork.png) - In case if the library file is not visible - select "Add Other.." button and select it from project root folder 5. Add `Privacy - Camera Usage Description` and `Privacy - Location When In Use Usage Description` with information string to your project `Info.plist` ![Camera Usage Des](/doc-img/Doc_camera_permission.png) ### Prerequisites To authenticate or scan the secure QR codes there are some limits, only the iPhones which has higher quality iSight camera can scan the secure QR codes. For other iPhones, iPads and iPods the SDK will work like a normal QR code reader and it will give the scanned QR code URL/Text back. To get to know more about compatible phones please check this link or use the SDK utility method to identify current device is compatible for authenticating Scantrust code or not. - Minimum deployment target as iOS 11.0 and above. - In order for SDK to work, the following device permissions are required: - **_Camera_**: NSCameraUsageDescription To scan QR codes - **_Location_**: NSLocationWhenInUseUsageDescription Location is required to find out where you are - Camera preview view must be full screen excluding the navigation bar and status bar --- // File: release-notes/high-level-notes/new-app-releases-April-24 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Portal QR manager | v1.5 | v1.4 | | Scantrust portal | v1.44.0 | v1.43.2 | | e-label Management Tool | v1.11 | v1.10.1 | | Scantrust Backend | v4.16.0-r5 | v4.16.0 | | Android Scantrust Printer | V1.5.5 | v1.5.4 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## Portal QR manager [v1.5](/docs/release-notes/release-notes-portal-QRManager-1.5) #### Features: - Added GS1 flow. ## Scantrust portal [v1.44.0](/docs/release-notes/release-notes-portal-1.44.0) #### Features: - Added e-label Enterprise Basic plan. - Fixed search feature for list with landing pages. - Fixed landing page search functionality on destination pop-up for Intelligence Redirection setup. - Changed Twitter logo for STC pages. ## e-label Management Tool [v1.11](/docs/release-notes/release-notes-u-label-management-tool-1.11) #### Features: - Added default enabling of allergens with the option for users to disable them. - Added default values for organic acid and polyols in the energy calculator section. Users can now remove or replace these values as necessary. The default values are 6 grams per liter for polyols and 7 grams per liter for organic acid. This enhancement applies specifically to Wine and Aromatized Wine templates. - Added default selection of all three pictograms (Drink & Drive, Underage, Pregnancy), with the option for users to deselect them. These new pictograms will be applied to all e-labels, excluding Remy Cointreau. However, this default selection is only applicable to new e-labels; for existing e-labels, the pictograms will not be turned on automatically. This change specifically affects Wine and Aromatized wine templates. - Replaced the 'responsibledrinking.eu' label with the 'Wine in Moderation' logo. The 'Wine in Moderation' logo is now pre-selected by default and can be deselected by users. This change is specific to Wine and Aromatized wine templates, impacting both new and existing e-labels. The 'responsibledrinking.eu' label remains unchanged on the Spirits template. - Added new messages on risk and responsible consumption: 1) Message on alcohol risk: 'Alcohol abuse is dangerous to your health'. This message is selected by default but can be deselected by users. 2) Message on responsible consumption: 'Always drink in moderation'. This message will appear in all e-label responsible consumption sections and cannot be deselected by users. Both new and old e-labels will be affected by these changes. These two messages are only applicable to Wine & Aromatized wine templates. - Removed the free text field for responsible consumption from the editor and landing page for all new e-labels. For existing e-labels, the field will remain if there is existing text. However, once the text is removed, the field and its translations will be deleted entirely. This change applies exclusively to the Wine & Aromatized wine template. - Added a '20-' logo specifically for the Spirit template. - Changed milligrams to lowercase instead of uppercase in the nutrition table on landing pages. ## Scantrust Backend [v4.16.0-r5](/docs/release-notes/release-notes-Backend-4.16.0-r5) - Added support for legacy compatible codes (upper-24). - Added upper-24 style for SID codes in STE Work Order Templates at Code Spaces companies. ## Scantrust Printer [v1.5.5](/docs/release-notes/release-notes-android-scantrust-printer-1.5.5.md) - Added support for guest mode. --- // File: release-notes/high-level-notes/new-app-releases-April-26 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust portal | v1.62.1 | v1.61.0 | | Scantrust Backend | v5.2.0 | v5.1.2 | | Android Scantrust Enterprise | V2.3.14 | v2.3.13 | | Photo Auth | V3.11.1 | v3.10.0 | | Video Auth | V3.3.2 | v3.1.0 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## Scantrust portal [v1.62.1](/docs/release-notes/release-notes-portal-1.62.1) #### Features: - Added translations feature for product and brand name and description. - Added user emails to team lists. - Added search tab for organization codes. - Added company plan column to User list and Company list in site admin. - Added calibration session ID to the calibration session. #### Brand & Product Translation The following fields can be translated: - Brand name - Product name - Product description All translations live alongside the original content and can be reused across the platform — including in your consumer-facing landing pages. 1. Set up company languages Before translating, a brand admin needs to configure which languages the company works with and pick a default reference language for machine translation. Navigate to Company Info → Languages and Translations to: - Select the languages you want to localize into (Chinese, Japanese, Thai, Dutch, etc.) - Set the company reference language — this is the source language used for machine translation and the default for brand/product names 2. Translate a brand or product There are two entry points for translation: a) From the edit screen A new translation icon appears next to each translatable field. Click it to open the translation modal for that specific field. b) From the brand/product card A translation button is now available directly on the brand/product card header, which opens the full translation modal covering all translatable fields at once. 3. The translation modal The translation modal is where the magic happens. From here you can: - View and edit translations for every language configured in company settings - Update the list of languages without leaving the modal (quick link back to company settings) - Use machine translation — either for a single language or for all languages at once with one click 4. Translations in the Landing Page Editor This is where translations really pay off. - New landing pages will automatically use the company's configured languages by default — no extra setup needed. - The following widgets and placeholders will now pull the correct translation based on the viewer's language: - Product name widget - @product name - @product description - @brand name That means one landing page, many languages — and the content updates itself based on what's been translated ## Scantrust Backend [v5.2.0](/docs/release-notes/release-notes-Backend-5.2.0) #### Features: - Added code search across all companies within an organization for organization admins. - Added translations module for product and brand name and description, with controlled access via permissions. - Added support for GS1 SGTIN codes in standard work orders. ## Android Scantrust Enterprise [v2.3.14](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.14) #### Features: - Fixed an issue related to retrieving the IP address. ## Photo Auth [v3.11.1](/docs/release-notes/release-notes-scantrust-photoauth-3.11.1) ### Containing changes - Fixed an issue where location and phone models were not detected during scanning. - Restricted landscape mode and added a “Rotate back” pop-up. - Fixed an issue where the “Take photo” button was sometimes displayed in the wrong position. ## Video Auth [v3.3.2](/docs/release-notes/release-notes-scantrust-photoauth-3.3.2) ## Containing changes - Fixed camera detection on iPhone for Traditional Chinese. --- // File: release-notes/high-level-notes/new-app-releases-February-24 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | v1.9 | v1.8 | | e-label SaaS Portal | v1.8 | v1.7 | | Portal QR manager | v1.4 | v1.3 | | Scantrust portal | v1.42.3 | v1.42.1 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## e-label Management Tool [v1.9](/docs/release-notes/release-notes-e-label-management-tool-1.9) #### Features: - Added a message for the Italian recycling regulation section when the preview country is not set to “Italy”. - Added a message "Check your local municipal guidelines" for the Italian recycling regulation section. - Changed the behavior of the translation table when users delete original text. The translation list will always show the items if there are translations for them. Users can then decide to remove that translation if it’s no longer needed. - Allowed line breaks for the impressum section. - Standardized the size of sustainability logos. - Fixed the translation for sweetness. - Updated the translation for the Nutrition table. - Fixed a bug when the list of ingredients was not visible. ## e-label SaaS Portal [v1.8](/docs/release-notes/release-notes-e-label-saas-portal-1.8) #### Features: - Removed "i" logo as the default from the QR code. - Enabled product URL. If e-label is unpublished, it will redirect to product URL. - Added a survey after plan cancellation. - Fixed the help center widget. - Fixed the yellow banner. - Fixed the Cancel button on My subscription page. - Fixed scrolling on My subscription page. ## Portal QR manager [v1.4](/docs/release-notes/release-notes-portal-QRManager-1.4) #### Features: - Added support for uploading the free text field for ingredient in bulk upload. - Added support for uploading Italian recycling regulation in bulk upload. - Hidden redirection setting when the QR code is linked to e-label landing page. - Changed a warning message that asks users to upgrade their plan. - Fixed a bug when fields become empty after bulk upload. ## Scantrust portal [v1.42.3](/docs/release-notes/release-notes-portal-1.42.3) #### Features: - Made brand URL available in the Remy editor. - Removed "Secure Workflow". - Updated translation for the e-label registration page. --- // File: release-notes/high-level-notes/new-app-releases-april-20 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :------------------ | :------ | :------- | | API | v3.0.2 | v2.10.1 | | Portal | v1.23.2 | v1.21.1 | | Scantrust (Android) | v1.10.2 | v1.10.1 | _The Scantrust Platform is updated continuously. Release notes are created when there is a substantial workflow for feature change that is not backward compatible or when a sufficient number of small changes exist that can be summarized. These changes are accompanied by a major or minor version number change. App updates are bundled with these releases, but also have their own release notes when released separately._ ## Notable Features & Updates This list includes important and interesting changes or features. More detail change lists about feature changes and updates can be found in the individual component change list appendix. ### Work Order Template - Templates are created by the project managers and contain all technical aspects of a workorder. This allows us to add more features to work orders without increasing the workload for our customers. - Choosing a work order template as the basis of a workorder is now the new standard way for Brand Owners to request codes. _For a Brand Owner_ You don’t have to create a work order from scratch, instead you can create one using new time saving work order template feature containing all technical aspects of a work order. Where you previously were required to fill around 11 fields in detail related to code application, serial number generation, code status upon completion, etc when creating a Work Order, you now simply fill in 5 fields: - Choose WO template - Work Order reference - Brand - Product - Number of Codes: You will input the number with agreement from your printing partner about the wastage %. Previously this field was inputted by the printing partner, but please note you will now input this number as final, your printing partner will not be able to change it . - Remarks _For a Printing Partner_ After you get notification upon a work order generation, follow one of the two steps: 1. If the QR codes contain the secure graphic, simply click the GENERATE CODES button without any additional input unless you have to change to a different printing equipment/substrate. 2. If the QR codes do not contain the secure graphic, download the codes directly. ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Frontend v1.23.1 - Adds new work order template feature - [Site Admin]STE UAT - allows STE users to create UAT tokens for common users - [Site Admin]Adds company & search filters to Work Order template and codes layout tabs - Adds alert message to printing partner select on wo blank page - Updates UI on Dashboard when no Campaigns are available - Fixes table style on Production report page - Fixes cosmetic issue with scm fields displayed on code track and trace page - Fix endpoint wo download serials - Fixes issue with dashboard - scan data update - Fixes back button on the code transfer page - Changed token key to id for profile - Changed `requested_quantity` to `quantity` for WO and Report page - Fixes issues with country as intended market on Map - Updates full country name for Intended markets - Fixes issue with values on the dashboard overview graph - Updates portal mobile version - [Site admin]Fixes cosmetic issue with filter on Site admin Calibration page ### Backend v3.0.2 - Allow codes-status for all phases to be fetched in QaSession endpoints - Allow empty 'access' list in ste tasks v2 --- // File: release-notes/high-level-notes/new-app-releases-april-25 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Android Scantrust Printer | [1.7.0](/docs/release-notes/release-notes-android-scantrust-printer-1.7.0.md) | [1.6.1](/docs/release-notes/release-notes-android-scantrust-printer-1.6.1.md) | | Scantrust (iOS) | [4.7.0](/docs/release-notes/release-notes-ios-scantrust-4.7.0) | [4.6.2](/docs/release-notes/release-notes-ios-scantrust-4.6.2) | | Video Auth | [2.5.2](/docs/release-notes/release-notes-scantrust-videoauth-2.5.2) | [2.4.0](/docs/release-notes/release-notes-scantrust-videoauth-2.4.0) | | Photo Auth | [3.3.0](/docs/release-notes/release-notes-scantrust-photoauth-3.3.0) | [3.3.0](/docs/release-notes/release-notes-scantrust-photoauth-3.3.0) | | Scantrust portal | [1.51.0](/docs/release-notes/release-notes-portal-1.51.0) | [1.50.1](/docs/release-notes/release-notes-portal-1.50.1) | | Portal QR manager | [1.11.0](/docs/release-notes/release-notes-portal-QRManager-1.11.0) | [1.10.0](/docs/release-notes/release-notes-portal-QRManager-1.10.0) | | Scantrust Consumer (STC) | [3.6.0](/docs/release-notes/release-notes-scantrust-consumer-3.6.0) | [3.5.0](/docs/release-notes/release-notes-scantrust-consumer-9) | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## Image Gallery, Translation Management, and Authentication Styling Customization We are excited to introduce three new features in our latest release: Image Gallery, Translation Management, and Authentication Styling Customization. Here’s an overview of each feature and how they enhance the platform. ## 1. Image Gallery Feature The new Image Gallery streamlines media management, making it easier to select and manage images within the platform. #### - Currently available in the Landing Page Editor. Coming soon to the SaaS Portal and e-label Management Tool. #### - User Benefits: - Easily select custom labels to reduce repetitive work. - Download previously uploaded images from Scantrust if local files are lost. - Archive images instead of deleting them to prevent accidental removals. #### - Key Functionalities: - Upload Images: Upload single or multiple images with system-generated unique keys and tagging support. - Image Viewing Options: Choose between Grid View (larger images) or List View (detailed metadata). - Search & Filtering: Search images by name, key, or tags, with an option to include archived items. - Image Selection: Directly choose images from the gallery within the Landing Page Editor. #### Example Screenshots: - Image Gallery main view - Upload image pop-up - Image selection in Landing Page Editor ## 2. Translation Management A new Translation Management ensures a smoother localization process when editing landing pages. #### What’s New? - Default Language Selection: Set a fallback language when creating landing pages. - Language Tab: Follows the same UI as the e-label translator with machine translation, review, and publishing workflows. - Enhanced Editing: Add and remove languages, edit linked images, and apply text formatting for translations. - Real-Time Preview: Instantly view translations with an improved language dropdown. #### Example Screenshots: - Selecting Default and Translation Languages - Language tab with translations and real-time preview with language switcher ## 3. Authentication Styling Customization We’ve enhanced authentication styling to allow more branding control for authentication applications. #### - New Customization Options: - Logo Upload: Display branded logos on the authentication app’s splash and scanning screens. - Color Themes: Configure background, primary, and secondary colors to match brand identity. - Advanced Setup for STE Users: Additional settings for language enforcement and torch control. #### Example Screenshots: - Auth app branding editor - Themed authentication screen To use this feature in photo-auth or video-auth, you need to configure the CTA button on the landing page or set up a redirect in the company settings using the following URLs: #### 1. video-auth - Landing page: https://verify.scantrust.com/video/?uid=@scan_id&api_key=@api_key - Redirect: https://verify.scantrust.com/video/?uid={id}&api_key={api_key} #### 2. photo-auth - Landing page: https://verify.scantrust.com/photo/?uid=@scan_id&api_key=@api_key - Redirect: https://verify.scantrust.com/photo/?uid={id}&api_key={api_key} These updates provide greater flexibility and a more personalized user experience. ## Automatic Blacklisting based on unique sessions ### What’s the Issue? Automatic blacklisting based on scan count was functionally incorrect: - When a user performed both a query scan and an authentication scan on the same code, the system counted them as two separate scans, even though it was part of the same journey. - Additionally, authentication scans that couldn’t be verified (due to issues like poor quality images) would still count towards the total, leading to false alarms. This made it harder to detect real counterfeit activity, as legitimate scans were sometimes considered for automatic blacklisting. ### What’s the Solution? #### 1. Better Handling of Scan Sessions: - A scan session reflects the user journey. It refers to the typical path a consumer takes when interacting with a code. For example, first scanning to view product info, then scanning again to verify authenticity until they have a definitive result. - Now, we track scans more accurately by linking them to the session. When a user scans a serialized code during the query and then authenticates, the system knows these are related scans and counts them as part of one session. - When a user scans a serialized code multiple times due to poor image quality issues, the system knows these are related scans as counts them as part of one session until the user gets a definitive authentication result. - Session count is the same as the scan count if the user does not perform any authentication scans or if the codes are serialized SID codes. #### 2. Tracking Based on Install ID: - Each app (including web apps) now sends a unique install ID when performing authentication, helping us track user sessions and ensuring accurate counts. ### What This Could Mean for Clients: #### No More Blackslisting Genuine codes due to Inflated Scan Counts: - Multiple scans by the same user in a user journey won’t be counted separately, making our automatic blacklisting and scan data more accurate. #### Better Counterfeit Detection: - By counting user sessions, we can more accurately detect potential counterfeit activity. ### How to Use This Feature: In the Campaign Options under the Alerts tab, select Session Count as the alert reason. This will activate the new scan counting method for your campaigns. This feature improves how we track and count scan sessions for automatic blacklisting, giving us more reliable data for detecting counterfeit activity and helping us provide better insights to our customers. The introduced feature for Automatic Blacklisting by Session Counts does not replace Automatic Blacklisting by Scan Count for customers that are using that old feature. You have to manually make the switch for each customer. --- // File: release-notes/high-level-notes/new-app-releases-august-23 ## Overview | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Code Ingestion | v1.0 | ----- | | Scantrust Backend | v4.10 | v4.9.0 | ## Individual Component Change List ### Code Ingestion [v1.0](/docs/release-notes/release-notes-code-ingestion-1.0) Added Code ingestion feature. This feature will be available to registered companies in the Scantrust system with code spaces enabled on the Work Orders page. We've introduced features within the portal: - Code Upload: the portal enables you to upload your custom codes conveniently using CSV or Excel formats. - Code Ingestion History. - Ingestion Status Tracking: Users can view the status in the ingestion history and will also receive an email with the updated information regarding successful ingestion or an error. - Error Visibility: Easily access information about any errors that occurred during code ingestion. - Enhanced (Meta)Data Integration: Responding to user demands, we've included the capability to embed additional metadata, such as SKU or batch numbers, directly into the extended_id. There are two modes available for SSC codes. 1) Pre-print: Codes will be uploaded to the WO by the BO before going to PP. In this case, the PP has not confirmed the WO when codes are uploaded and will only get notified to do so when the codes have been successfully ingested for this WO by the BO. 2) Post-print: In this case, a workorder is made with a couple of ST generated codes. The PP is notified as usual and gets the FP image and prints custom ID’s. These ID’s are later uploaded to this WO while it is in state ready-to-print/printed/completed. Code ingestion for SSC requires prior creation of a Workorder template and then the Workorder. ### Backend [v4.10](/docs/release-notes/release-notes-Backend-4.10) GS1 Extended IDs are now supported during all uploads, but should only be used for SIDs. Proper functioning SSCs will require changes to the apps, as well as code generation to allow larger QR codes. #### New Features * Code Ingestion v2.1. * Added support for uploading GS1 identifiers. * Added redirect simulation endpoint and tests. * Made salutation (Mr, Ms, etc) optional when registering. * Added QR length check when ingesting SSC codes for pre-print. * Added auth result condition (intelligent redirects). * Added cal-check-brands and cal-check-products API for STIS. * Added has_qa_scans flag on STE company detail. * Added Django session timeout and expire in 1800 seconds. #### Changes & Bug Fixes * [OPS] Added workorder_id to scans_csv. * [OPS] Improved STE Scans list. * [OPS] Improved STE UAT endpoint. * [OPS] Added improvements to the STE membership views. * Improved redirect engine and fix 'Undefined' issue. * Added ability to filter by 'no active plan' to the STE admin. * Added upload_eligible filter for WO (ingestion). * Renamed certain redirect condition variables. * Fixed issue with filtering on campaign SCM field route. * Allowed integer code ids in ingested json files. * Removed consumer_options.is_enabled restriction for STC. * Fixed spelling issue with filterset_fields. * Added rule_id in simulation endpoint for redirects. * Fixed filter_none function to correctly return tuple. * Fixed Paddle raw data save for Subscription Data. * Reformatted code using black. --- // File: release-notes/high-level-notes/new-app-releases-august-24 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | v1.13 | v1.12 | | Scantrust portal | v1.45.1 | v1.45.0 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## e-label Management Tool [v1.13](/docs/release-notes/release-notes-u-label-management-tool-1.13) #### Features: - Added “Use average energy value” in the energy calculator for the wine template. Users can select the sugar content and alcohol by volume range to get the average value, with pre-selection based on product information if available. If sugar content is not selected in the product information, default options are shown based on the product type. - Added a mass approve feature, allowing users to approve and publish translations when there are no custom values. If a user has no custom translations and no languages already published, a new dropdown allows them to select multiple languages for approval and publishing. Additionally, a new button opens the same menu available for users with multiple published languages. - Added basic triman and sustainable wineries logo for wine and aromatized wine templates. - Added ability to upload a GIF file - Added new operator options: - "Bottled for", - "Packaged by", - "Sold by", - "Produced and bottled by", - "Produced and packaged by", - "Packaged for". - Marked known allergens in bold: - Known allergens are now displayed in bold and cannot be modified by users. - Other ingredients cannot be marked as allergens. - Users can still mark custom ingredients as allergens. List of allergens: 1) Potassium bisulphite 2) Egg lysozyme 3) Milk casein 4) Egg albumin 5) Ammonium bisulphite 6) Wheat protein 7) Potassium metabisulphite 8) Sulphites 9) Sulphur dioxide - Replaced “cl” display with “ml” in the nutrition table for France/French. - Changed the first display option for the “contains… and/or” rule to include brackets for Acidity Regulators and Stabilising Agents. It now displays correctly as: - Category (contains Ingredient A and/or Ingredient B) - Corrected default values for polyols and organic acids in energy calculator. The updated values are now: - Organic acids: 6g/L - Polyols: 7g/L - Enhanced automatic calculation in the energy calculator, whhen a user inputs the sugar value: - The value is converted from g/L to g/100ml and displayed in the nutrition table. - The Carbohydrate value is automatically calculated in g/100ml (sugars + polyols). - Added automatic conversion of kJ to kcal in the energy calculator. - After obtaining the kJ result from the calculator or manual input, the kcal value is automatically calculated.. - If the user changes the kJ value, the kcal value will be recalculated automatically. - Changing the kcal value will not affect the kJ value. - Fixed font size for product and brand names. - Sort languages in alphabetical order in the translation tab. - Fixed an issue where the code space was always selected as a prefix instead of the custom domain for e-label codes. - Fixed an issue where changes were not saved after editing own labels. - Prevent user from saving negative values as net quantity. - Prevent user from saving negative values in the energy calculator. - Fixed an issue where users could not upload the same picture from their laptop after deleting their own label. - Fixed an issue where Impressum was shown for all countries after deletion. - Fixed an issue where searching with '-' did not work for product type. - Fixed issue where search for product type did not work when copying and pasting words or typing with spaces. - Fixed an issue where ingredients continued to display after changing categories, even though they did not exist in the new category. - Updated translations. ## Scantrust portal [v1.45.1](/docs/release-notes/release-notes-portal-1.45.1) #### Features: - Added organization feature. - Organization Level: Allows for easier management of users across different products, regions, and divisions within an organization. - Centralized User Management: Org Admins in the management company can manage users across all member companies within the organization without needing to switch between companies. How to Use This Feature: 1. Create an Organization: An STE Admin on the site-admin initiates the process by creating a new organization and adding the relevant companies under it. 2. Manage User Access: Once the organization is set up, Org Admins can manage user access through the Organization tab found on the Users & Teams page. Here, they can efficiently control user permissions across all companies within the organization. Key Details: 1) Each organization has one management company, which cannot be changed after creation. 2) Brand Admins in the management company automatically have Org Admin access. 3) Org Admins can manage users in all companies within the organization, even if they are not part of a specific company. 4) A new tab in the Users & Teams section is available for Org Admins to manage all users within the organization. - Added code ingesting templates feature. Additionally, to simplify the Code Ingestion process, we are introducing Ingestion Templates. To create Ingestion Templates, please navigate to the "Ingestion Templates" tab in the site admin area. - Added support for multiple custom prefixes in code ingestion. - Fixed CSV file with users. - Fixed the display of error messages related to using headers with spaces in code ingestion. - Added new tab icons to the STC editor. --- // File: release-notes/high-level-notes/new-app-releases-august-26 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :---------------------- | :------ | :------- | | e-label Management Tool | v1.22.0 | v1.21.4 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### e-label Management Tool v 1.22.0 This release brings new packaging information fields in preparation for PPWR, clearer translation status indicators, a regulation-aligned nutrition display, and an expanded base product selection for aromatised wine. #### PPWR preparation **Packaging information and business operator contacts** In preparation for PPWR (Packaging and Packaging Waste Regulation), e-labels now support packaging manufacturer details: - New "Packaging information" subsection in Sustainability, alongside Recyclability and Organic — with a translatable "Manufactured by" label, company name, and contact. - Contact field for business operators — each business operator type now has a Contact field, and a type is only displayed if at least the company name or address is filled in. Packaging information subsection and business operator contact fields Packaging information subsection and business operator contact fields #### Translation status **Clearer translation status for e-labels** - The language list now shows "xx languages are not fully translated" instead of the previous "xx languages published" message. - A yellow dot appears on the Translation tab and next to each language with missing translations, with a "Not fully translated" tooltip on hover. The dot disappears once all fields for that language are translated. - Fields with missing translations keep the yellow highlight. Yellow dot indicators for languages that are not fully translated #### Nutrition declaration **Regulation-aligned nutrition display** - kJ/kcal display — energy in the per 100g/100ml column now follows the regulation layout. When a per-portion or %RI column is shown (Food and Beverage templates), the stacked layout is kept for clarity. - Sub-nutrients formatting — a long dash (—) is now shown in front of sub-nutrients (e.g. "of which — saturates", "of which — sugars") in all templates. Regulation-aligned nutrition declaration with kJ/kcal display and sub-nutrient dashes #### Aromatised wine **Expanded base product selection for aromatised wine** Previously, aromatised wine templates defaulted to "still wine" as the only base product. A different base, such as de-alcoholised or sparkling wine, had to be added manually, which skipped the regulatory translations and required manual translation review for every language. - The field "Aromatised Wine Type" has been renamed to "Base grapevine product" to better reflect what it actually selects. - The dropdown now includes the full list of base grapevine products — wine, sparkling and semi-sparkling variants, grape must variants, liqueur wine, and more — each with its de-alcoholised and partially de-alcoholised versions, all with regulatory translations included. ### QR Manager v 1.15.5 #### Download CSV files for created codes From the QR codes list, the Download menu now offers two options: QR code images and URLs in CSV — a CSV file containing the QR URLs of the selected codes. QR codes list Download menu showing QR code images and URLs in CSV options --- // File: release-notes/high-level-notes/new-app-releases-december-20 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :---------------- | :------ | :------- | | scantrust portal | v1.25.3 | v1.25.2 | | scantrust backend | v3.3.0 | v3.2.0 | _The Scantrust Platform is updated continuously. Release notes are created when there is a substantial workflow for feature change that is not backward compatible or when a sufficient number of small changes exist that can be summarized. These changes are accompanied by a major or minor version number change. App updates are bundled with these releases, but also have their own release notes when released separately._ ## Notable Features & Updates This list includes important and interesting changes or features. More detail change lists about feature changes and updates can be found in the individual component change list appendix. ### Workorder Templates - Adds Extended Id Style & URL prefix Scantrust Engineers can add a "Custom Prefix" to the WO template. Brand owners can then create the workorder with the custom prefix by selecting that workorder template. Downloaded workorder files will have the following changes: - manifest.json has the adjusted field “url_prefix” - codes.csv column “full_url” is updated with the url_prefix The templates now also support **ID Style**. The default is set as **Legacy** which means codes in a workorder will be created with the extended_id as it was before (24-32) characters alphanumeric uppercase depending on the code type) [0-9A-Z] Set it as **Compact**: codes in a workorder will be created with a new shorter extended-id format is used (12 characters), alphanumeric upper AND lower case with the addition of the URL-safe “-” and “\*” characters [0-9A-Za-z_-] ### Update Products via CSV A CSV upload tool is integrated into the portal to enable the product information update. ### New User roles: Portal Lite and IT Admin #### Lite User - Weekly-digest - View/Edit products - STC-Lite - Picked up by AppCues to show tailored content #### IT Admin - Edit Users - Teams - Campaigns ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Frontend v1.25.3 - Add custom URL prefix and new extended id styles - Adds New User roles: Portal Lite and IT Admin - Adds option to update the products info via CSV upload - Improved code T&T page with scm data available in the sidebar - Updates System roles and permissions - Able to open certain links within the portal like filtered scans and code tracking into new tabs - Product can autocomplete on workorder creation page - UI update on work order creation page - while adding the code quantity, auto show spaces every 3 digits. - Adds in WO summary to show if workorder has serialized SG or not - Adds download CSV option in the product card #### Fixes - FP serialised = TRUE can only be set for serialized SG workorder and not for static SG and hybrid SG workorder types - Scans are updated/refreshed immediately as they occur, on the Code tracking details page - Fixes UI scroll issue at the end of the current page in the product list. - Fixes issue with the intended market not marked on the map - Fixes issue with Campaign: Alert tab - Fixes issues on Activity Log --- // File: release-notes/high-level-notes/new-app-releases-december-21 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | scantrust backend | v4.0.0 | v3.9.2 | | scantrust portal | v1.30.0 | v1.29.5 | | Authentication | v2.23.0 | ------ | | Scantrust Enterprise (Android) | v2.2.5 | v2.2.4 | | Scantrust Enterprise (iOS) | v3.4.0 | v3.3.0 | | Scantrust (Android) | v1.12.6 | v1.12.5 | | Scantrust (iOS) | v3.6.0 | v3.5.0 | | Scantrust Printer (Android) | v1.3.0 | v1.2.3 | | Photo Authentication | v1.0.0 | - - - | _The Scantrust Platform is updated continuously. Release notes are created when there is a substantial workflow for feature change that is not backward compatible or when a sufficient number of small changes exist that can be summarized. These changes are accompanied by a major or minor version number change. App updates are bundled with these releases, but also have their own release notes when released separately._ ## Notable Features & Updates This list includes important and interesting changes or features. More detail change lists about feature changes and updates can be found in the individual component change list appendix. ### Code Spaces "Code Spaces" introduces a unique scantrust managed domain name for every company. This domain will be a subdomain of st4.ch (or qr1.ch, etc), such as https://cust.st4.ch/ Using a different domain for each company, - Allows us to know who owns a code at the time of scanning by the public endpoints (/q/, the ST app) - Faster access to check codes that belong to the company - Scan endpoints can now return only that company's codes - Increases scalability - Codes are now unique inside the company only **With this new feature deployment, following changes will come into effect:** - All newly created companies after the deployment will have this feature enabled by default - Manual updating is required for existing companies, but may be possible - Prefixes are automatically generated when a company is created - 4 characters, first character is always a letter - Patterned after the company name, "Ferrero Rocher" might become "fr9t" - It is possible, with admin assistance, to change this value (not desired) if the company has not created any work orders. - Transfer of codes between companies is not possible. - https://st4.ch/q/{id} will continue to work for existing codes & companies ### Code Spaces - [Scantrust Portal v1.30.0](/docs/release-notes/release-notes-portal-1.30.0) In the Work order templates, the creation screen shows the correct url & allowed formats as per the company settings on the backend. By default all new companies will have this feature enabled. - When code space is enabled :true - Default URL prefix is: \{company.code_spaces_prefix\}.st4.ch Or qr1.ch, or qr2.ch - Legacy format is not allowed - Users will have a choice when creating a work order template between a default URL and custom prefix. - Default URL prefix cannot be edited unless using a custom prefix which can be customized. - If the feature is set to be disabled: false - Default url prefix is unchanged - Legacy format is allowed ### QR Manager - logo and template support ##### For ST Portal QR Manager and QR Pro: - Logo can be added to the center of the SID QR codes - Color customization possible for the codes - It can be saved as a template. QR code template allows users to create identical QR codes as previously generated. This is to avoid potential confusion with multiple users generating codes for the same company as well as making it easier to generate more QR codes. ### STE NFC Lookup Task In some new projects, there are products with an NFC chip embedded in the product, but without a QR code. For these projects we would be able to provide NFC scanning capabilities to the consumer. STE Lookup tasks allow users to scan NFC chips, fetch details from our system and show the scan result screen. Existing result screen can be used to show customised scan results. NFC scans will just be regular scans in the system with the flag set as nfc when lookup is based on NFC. Dashboard and Tableau will then be able to filter on the flag “nfc”. For the current release scope, scm field nfc_uid should be set in the campaign SCM T&T for creating lookup tasks based on NFC. ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Frontend [v1.30.0](/docs/release-notes/release-notes-portal-1.30.0) - Adds support for code space - Adds work order template duplication feature - Resend confirmation email for inactive users - [EPAC] STE Company creation - Fixes issue with brand getting disappeared on Edit product - Fixes incorrect filter result on codes created page - Adds QR Manager - logo and template support For ST Portal QR Manager and QR Pro: - Logo can be added to the center of the SID QR codes - Color customization possible for the codes - It can be saved as a template. QR code template allows users to create identical QR codes as previously generated. This is to avoid potential confusion with multiple users generating codes for the same company as well as making it easier to generate more QR codes. ### Mobile #### Android Scantrust Enterprise - Updates to SDK v4.1.2 - Adds support for code space feature - Adds NFC lookup feature. - Fixes issue with tasks related to team renaming - Adds search bar in campaigns list - Bug fixes #### iOS Scantrust Enterprise - Updates SDK to v3.2.0 - Adds support for code space feature - Adds NFC lookup feature - Fixes issue with tasks related to team renaming - Bug fixes #### Android Scantrust - SDK updated to v4.1.2 - Adds support for code space feature - Fixes minor issues from crash logs #### iOS Scantrust - SDK updated to v3.2.0 - Adds support for code space feature #### Android Scantrust Printer - SDK v4.1.2 - Adds support for code space feature - Bug fixes --- // File: release-notes/high-level-notes/new-app-releases-december-23 ## Overview | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | v1.7 | v1.6.2 | | scantrust backend | v4.15.0 | v4.14.0 | | scantrust portal | v1.42.0 | v1.41.3 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## e-label Management Tool [v1.7](/docs/release-notes/release-notes-e-label-management-tool-1.7) - Added ‘Upgrade now’ button that appears when there are new sections or updates available for your landing page. - Added Impressum information section. If users want this field translated for other countries, they will need to input it in the respective country using the official language. - Added a free text field for ingredients. - Fixed issue with logo removal in Global Settings. - Updated translation for wine sweetness in wine and aromatized wine templates. - Changed 'and/or' to 'bzw.' for the German language on landing pages. - Disabled the ability to click the brand image URL in the Brand Information section for landing pages. ## Backend [v4.15.0](/docs/release-notes/release-notes-Backend-4.15.0.md) **New Features** - Added command to add default SCM fields to all e-label companies. - Allowed product SKU in async upload scm_data.product field. - Ordered GS1 AIs according to spec. - Optimized workorder zip file generation. **Fixes** - Fixed crash in mobile/code-info/ when duplicate codes exist (code spaces). - Added script for resubmitting failed SCM transactions. - Fixed bug with 0 quantity in workorder-from-template. - Combined Code Info - Return blank for product.image if not present. **Others** - Removed e-label trial views. - Updated all core enums to use new naming style. ## Scantrust Portal [v1.42.0](/docs/release-notes/release-notes-portal-1.42.0) - Added Scan History Report. The dashboard allows users to track and analyze scans, codes, campaigns, and products with detailed breakdowns segmented by date, geolocation, app, and device brand. Gain valuable insights into scan performance, including status, and failure reasons analysis, to fine-tune your strategies and campaign management. Scan History Report is available on the dashboard page. The Scan History Report is now accessible on the dashboard page. It's important to note that this report does not have the same limitations as the current dashboard, removing the 2000 scan limit for maps. To obtain the report, you need to navigate to the Dashboard in the menu and then select the Scan History Report tab. - Added new e-label registration page. Redesigned the registration page for e-label users: - Added Amplitude events to the registration page. - Passed UTM parameters to Amplitude events. - Updated SaaS T&C and Privacy Policy pages. - Added an error message for file generation exceeding 1 GB on Codes Created page. - Added Directory sync field to create SSO on the admin page. - Fixed code transaction details. - Added workorder creation using workorder template endpoint. --- // File: release-notes/high-level-notes/new-app-releases-december-24 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Portal QR manager | v1.9.0 | v1.7.0 | | e-label Management Tool | v1.14.0 | v1.13.5 | | e-label SaaS portal | v1.9.5 | v1.9.3 | | Scantrust Backend | v4.22.0 | v4.20.0 | | Android Scantrust | v1.14.4 | v1.14.3 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## Portal QR manager [v1.9.0](/docs/release-notes/release-notes-portal-QRManager-1.9.0) #### Features - The Enhanced QR Code Customization feature in the QR Manager, offering more flexibility and options for tailoring QR codes to clients needs. This update improves the QR code customization feature previously available in U-label legacy. Users can now add text and the “ⓘ” icon around the QR code with enhanced type and positioning options. Features: 1. Customizable Text and Icon Around QR Code • Users can add text fields in 4 positions: Top, Bottom, Left, Right. • Options include SKU, GTIN, Energy (e.g., E(100ml)=xxkj/xxkcal), and free text. • Users can input custom values or select predefined fields from a dropdown. • The Unicode “ⓘ” icon can optionally be added before the text (e.g., “ⓘ Abcd1234”). • Text length is limited to ensure proper fit around the QR code. 2. Template Saving • Text configurations can be saved as templates for reuse in future QR code generations. 3. Fixed Text and Style Settings • Font size for QR code text is fixed and cannot be customized by the user, but the color can be changed. 4. Downloadable QR Code Formats • Text and QR codes can be downloaded in image formats (JPG, PNG, PDF, EPS, etc.). • Codes with the “ⓘ” icon not rendering in PDF and EPS formats. This update ensures compliance with regulatory requirements while offering greater flexibility for QR code customization. - Added the ability to unpublish elabels. - Added the ability to remove product image. - Removed the default "i" logo from QR code. - Updated translations. - Added fixes for the intelligent redirect feature: • Added a destination condition for specifying a blacklist reason. Updated “Live” to “Live now” for improved clarity. • Campaign names now display in a single row, separated by commas. • Adjusted text alignment and removed unnecessary elements to match the design specifications. • Resolved a bug where the block and connections did not disappear when deleting the last item in the block. • Fixed the issue where “OR” did not disappear after deletion. • Fixed a scrolling issue on the page listing rules. • Fixed a bug where the “Add destination” pop-up incorrectly appeared after the first edit of a destination. • Ensured that the system provides feedback if a date/time is not properly added. • Corrected behavior where clicking “Close without publishing” canceled the rule instead of saving it as paused. • Corrected text disappearance for actual conditions when too many items were selected. • Resolved an issue where page scrolling was not functional when a rule was open. • Prevented the system from looping and failing to redirect users to the landing pages section when no landing pages were created. • Resolved an issue where the second expression was deleted after ‘and/or’ changes. • Fixed an issue where the plus icon disappeared after ‘and/or’ changes if only two expressions were present. • Fixed an issue where users were unable to change “AND” to “OR.” ## e-label Management Tool [v1.14.0](/docs/release-notes/release-notes-e-label-management-tool-1.14.0) #### Features - Added an option to hide the nutrition table for the spirit template. - Added a switch to display sku in Product information section. - Added hyperlink to wine in moderation image. - Fixed an issue where the bottle icon did not disappear after deleting a number in the net quantity field. - Added Norway country to lists. - Added Norwagian translation. - Added support for Spain’s regulatory recycling information. ## e-label SaaS Portal [v1.9.5](/docs/release-notes/release-notes-e-label-saas-portal-1.9.5) #### Features - Added the ability to remove product image. - Added a fix to display an error message when downloading a QR code image with unusual SVG icons fails. ## Scantrust Backend [v4.22.0](/docs/release-notes/release-notes-Backend-4.22.0) #### Product Related Changes - Added external_id to workorder create, update and list APIs. - Added blacklist_reason as a redirect condition. - Product API now allows ordering by ID. - SSO login: Company value is now case insensitive. - Custom Hosted Domains: Fixed issue with some subdomains not validating. - QR Templates now support custom text fields (top, bottom, left, right). - Improved validation on API fields which accept both SKU and product ID. - Fixed issues on the Custom Dashboard. ## Android Scantrust [v1.14.4](/docs/release-notes/release-notes-android-scantrust-1.14.4) ### Containing changes - Ensured the app consistently stays in Light mode. - Fixed an image capture issue on Pixel devices. - Updated the UI and text for improved usability. --- // File: release-notes/high-level-notes/new-app-releases-february-23 ## Overview | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label SaaS Portal | v1.0 | ----- | | e-label Management Tool | v1.0 | ----- | | Scantrust portal | v1.38.0 | v1.37.0 | | Scantrust Backend | v4.5.1 | v4.5.0 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## e-label SaaS Portal [v1.0](/docs/release-notes/release-notes-e-label-saas-portal-1.0) e-label SaaS Portal is a lightweight portal to address the compliance needs for SME wine & spirit makers. It is also Scantrust's product-led growth initiative, in which the product is completely self-serve - customers register, use and purchase the product on their own. The product will act as a communication tool to capture leads for Sales or convert from free user to paid user.. Features Users sign up and automatically get 3 e-label Free Forever in their account. The user who signs up is assigned an e-label user role. All paid plans (Business 30/50/100 & Premium) are under Free Trial period until 31st March 2023. All paid plans (Business 30/50/100 & Premium) have the same set of features, only the number of e-labels differs. Free Forever plan customers are restricted to using machine translation and customizing e-label landing page (change logo, brand color, footer). Users who are interested in the Enterprise plan can contact Sales via an embedded Hubspot form. Product & e-label is a one-to-one relationship, which means you can generate only one e-label per product. There is no limitation in the number of brands & products that can be created, however, the number of e-labels that can be generated is based on the plan that you signed up for. The e-label QR codes are set to redirect to the e-label landing page. However, when the e-label is not published, the QR codes redirect to the company URL. The user has to complete the flow of editing e-label data and generating QR code before downloading the code. Download scan data feature and the number of scan users are not available for scan dashboard for the compliance with no tracking of user data. Newly designed notification email templates. ## e-label Management Tool [v1.0](/docs/release-notes/release-notes-e-label-management-tool-1.0) We are launching this feature to help our wine & spirit customers to meet their EU regulation needs for ingredients and nutrition declaration. This feature can be accessed from the Product page & QR Manager. This feature is available for all Enterprise customers. You will have to set up the Campaign redirection to E-label and assign your product to the campaign. User can fill in the information that is required for EU regulation on ingredient & nutrition declaration: Nutrition table is based on specification in this EU regulation; Ingredient list is based on specification in this EU regulation. The E-label information is by SKU, which means only one set of E-label information per SKU. E-label does not work for SKU that previously has Smartlabel information. Users can choose to fill in the E-label information from scratch or copy the information from other E-label (translations will be copied over as well). Brand name, product name & product image are automatically populated with the information from the Brand & Product page, thus the user shall always fill in the correct brand name, product name & product image. Users can fill in country-level information for the sections below: Serving size; Alcohol risk warning labels; Sustainability labels; Business operators. If users do not want to show certain sections to consumers, they can skip filling in the section, except for mandatory fields. Users can change templates while editing, however they will lose all previous edits and start from scratch on the new template. Users can customize the E-label landing page. We offer two option of displaying language on the landing page: Display in the scan country official language; Display in the device language. If a user scans from a country where the translation is not available, we display the reference language by default. If a user scans from non-EU countries, we show France content by default. The language display is French or device language, depending if the display in the scan country's official language is turned on. Users can preview the E-label landing page for language and country: Country preview is for country level information; If you turn on the pairing of country-official language, the language & country that you select for your preview may not represent the final presentation to the consumer. You will have to select the official language of the country to see the accurate preview. Users can translate and publish E-labels in 24 EU official languages. Users can also download and share the translations in a CSV file and re-upload translations by copy & paste into the portal. QR Manager: Users can access the E-label Management Tool from the QR Manager. Users can see the E-label publication status on the product. ### Scantrust Portal [v1.38.0](/docs/release-notes/release-notes-portal-1.38.0) - User have the option to redirect all the products in a campaign to E-label or set country level redirection to E-label (which means only redirect to E-label landing page for selected countries). ### Backend [v4.5.1](/docs/release-notes/release-notes-Backend-4.5.1) - Add E-label trial functionality - Rename Saas Registration to E-label Registration - Convert redirects from stc.scantrust.com to stc.scantrust.cn automatically - Add code_spaces_enabled to WorkOrderListView - Do not allow empty values for constraints in async SCM upload - Allow both status and activation_status in SCM upload fields --- // File: release-notes/high-level-notes/new-app-releases-january-19 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | API | v2.5.2 | v2.5.2 | | Authentication | v2.5.0 | v2.4.0 | | Portal | v1.18.1 | v1.18.0 | | Scantrust Enterprise (Android) | v1.4.0 | v1.3.0 | | Scantrust (Android) | v1.6.3 | v1.6.2 | _The Scantrust Platform is updated continuously. Release notes are created when there is a substantial workflow for feature change that is not backward compatible or when a sufficient number of small changes exist that can be summarized. These changes are accompanied by a major or minor version number change. App updates are bundled with these releases, but also have their own release notes when released separately._ ## Notable Features & Updates This list includes important and interesting changes or features. More detail change lists affecting feature changes and updates can be found in the individual component change list appendix. ### Tagging SCM by range scanning _Enabling range scanning for a campaign allows the user to tag SCM data to a group of codes by only scanning the beginning and end code with the Scantrust Enterprise app.In order to use this function, the labels delivered to the brand owner have to be sequential._ ![rangescan-portal](/doc-img/range_scan1.png) ### Camera V2 (Android) Allows a better control of the capture process and the capture quality. ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Frontend v1.18.1 - Updates the "Authentication Tab" to "APPS" tab with option to enable/disable Range Scan - Does not allow Printing partners from changing work order information: Code application and Generate serial number, while generating a Work Orde - Adds button for clear filter option for Activity Log and Work Orders. - Adds links on WorkOrder reference for listview in WorkOrder section - Updates text on User Activation Confirmation Pop-up - Updates code application type displayed for SID WorkOrder to "SIDs" from "No Authentication" - Fixes buttons on 'Help Page' to get to Help Center and to reach Contact Support Form - For a code in Campaign section fixes adding incorrect product via dropdown from 'Edit SCM data' window - Fixes display of Custom Region while adding Intended markets SCM field - Fixes display of archived Regions and Region groups - Fixes filter on Codes Created section to allow multiple filters to be applied - Removes archived products that were displayed in product list for codes Transfer Ownership - Fixes issues with STC Configurator: Promotion page, Slideshow page, Wechat follow page - Fixes UI bugs for Basic User Dashboard Learn More pop up - Displays hyphen "-" for Substrate field for "SID" code application Work Order - Fixes Cosmetic issue on Region Page (for German[DE]) - Adds Product SKU details on Work Order section - Fixes issue with archived products for ownership transfer - Fixes issues with Scan Data displayed for specific timeframe - Fixes text "Consumer" to "Redirect" in Redirect tab - Fixes 'No access' user to not allow access the portal - Fixes issue with icons on Product card when Product name is long - Fixes issue with date on Map in Overview section ### Mobile #### Android Scantrust Enterprise v1.4.0 - Adds new feature to tag SCM with Range scanning - Adds new UI for Ship Goods section. - Fixes crash when scan calibration codes from Authenticate/Quick Scan - Removes Consumer URL displayed on Scan Result page under Campaign section - Fixes display issue with "Done" button in " Manage LU" section for Logistic unit with long names _Pls note that Campaign Overview section lists Reels,Codes/Reels,Total Codes - as N/A at present and would be available in next deployment._ #### Android Scantrust v1.6.3 - Adds new phones to supported phones **Huawei Honor 10, Huawei P10, Oppo R9s** - Updates icon to adaptive for Android 8+ - Update urls from st4.ch to api.scantrust.com and qr1.ch to api.staging.scantrust.io - Adds permission to access IMEI number - Adds pop ups instead of tap to white screen to allow permissions on fresh install of app. - Adds back option to return to Authenticate screen from How to use page - Fixes message bubble on scan screen when QR code is no longer read - Fixes authentication timing after internet connection was available - Fixes issue to resolve phone cannot exit from power saving when scanning from close - distance - Fixes layout issue on scan result for regular code scan - Fixes issue for How to use page to not show Hamburger menu on fresh install of app ### Backend v2.5.2 - Add "Workorder Cancelled" option to reasons for blacklisting a code - Tighter permissions on products endpoints - STE: Add sorting to bundles endpoint ### Core Tech v2.5.0 - Improve marker detection for QA scans on hybrid codes --- // File: release-notes/high-level-notes/new-app-releases-january-20 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | API | v2.10.1 | v2.9.0 | | Portal | v1.21.1 | v1.20.0 | | Scantrust Enterprise (Android) | v1.8.1 | v1.8.0 | | Scantrust (Android) | v1.10.1 | v1.10.0 | | Scantrust Enterprise (iOS) | v1.7.0 | v1.6.0 | | Scantrust (iOS) | v2.5.2 | v2.5.0 | _The Scantrust Platform is updated continuously. Release notes are created when there is a substantial workflow for feature change that is not backward compatible or when a sufficient number of small changes exist that can be summarized. These changes are accompanied by a major or minor version number change. App updates are bundled with these releases, but also have their own release notes when released separately._ ## Notable Features & Updates This list includes important and interesting changes or features. More detail change lists affecting feature changes and updates can be found in the individual component change list appendix. ### Scan Count Alert and Auto-Blacklist - A Brand Owner (Admin) can set up and receive alerts if a unique code gets scanned for n number of times (can be adjusted) in the market over the lifetime of the product. - Once this number has been reached, you can also prevent further scans from giving a "Verified"/"Active Code" response by Blacklisting the code. ### Duplicate a Campaign A brand owner can now duplicate a campaign with its settings into a newly created campaign. Products required for that campaign can be added later as they will not be copied while duplicating the campaign. #### Update on Small codes _Small codes support for Authentication and in Printing Production QA is available in ST app and STE app_ ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Frontend v1.21.1 - Adds feature to Duplicate a Work Order - Adds feature to Duplicate a Campaign with its settings - Adds campaign name in Code info section of Code tracking details - Map view on zooming out - Displays "None" for a Product that has no campaign - Fixes scan data (filtered by product) that included scans from other product - UI issue when WO is being cancelled - Removes arrows for sorting on Campaign - Codes Page - Fixes issue with displaying archiving substrates for a Printing Partner - Cosmetic issues ### Mobile #### Android Scantrust Enterprise v1.8.1 - Regular Expression validation also available when using Manage Logistic Unit - Fixes Crash on Android v5.1 - Fixes issue with switching to other languages - Upload log: Fixes incorrect child codes quantity #### Android Scantrust v1.10.1 - Fixes issue to synchronize full QR image at the backend #### iOS Scantrust Enterprise v1.7.0 - Adds Upload Log to log SCM uploads. After user scan and submits SCM data, SCM async tasks start running in background.The user can later check the status of uploads from “Upload Log”. _Range scan works same as before but SCM upload logs with it will not be available in the Upload Log at the moment_ - Updates Mobile API version #### iOS Scantrust v2.5.2 - Updates Mobile API version ### Backend v2.10.1 - Mobile API v105(minimum) - STE Tasks v2 - JSON Schema - Max scan count alert & auto blacklisting - Mobile version 108 (workorder list has blur_threshold) --- // File: release-notes/high-level-notes/new-app-releases-january-22 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | scantrust backend | v4.1.0 | v4.0.0 | | scantrust portal | v1.31.0 | v1.30.0 | | Authentication | v2.23.0 | ------ | | Scantrust Enterprise (Android) | v2.2.6 | v2.2.5 | | Scantrust Enterprise (iOS) | v3.5.0 | v3.4.0 | | Scantrust (Android) | v1.12.6 | v1.12.5 | | Scantrust (iOS) | v3.6.0 | v3.5.0 | | Scantrust Printer (Android) | v1.3.1 | v1.3.0 | | Photo Authentication | v1.0.0 | - - - | _The Scantrust Platform is updated continuously. Release notes are created when there is a substantial workflow for feature change that is not backward compatible or when a sufficient number of small changes exist that can be summarized. These changes are accompanied by a major or minor version number change. App updates are bundled with these releases, but also have their own release notes when released separately._ ## Notable Features & Updates This list includes important and interesting changes or features. More detail change lists about feature changes and updates can be found in the individual component change list appendix. #### Multiple companies per user feature Many of our clients have requested a feature where they could use one account for multiple companies in our system. For example, some clients want to have “super-users” to audit the setup of various companies, or they want an IT user who controls the integrations for multiple companies. Brand Admins can invite users to their company just as normal. However if the user (email) already exists, that User will receive an email invitation to “Join A New Company”. When they open the link and view Profile page in the ST Portal, users will have options to `Accept` or `Decline` the invitation. Once accepted, users can then switch among the companies they’ve joined, either from the side menu or from their Profile page. When a user becomes a member of a company that requires 2FA to be enabled, 2FA will be required upon login. When a company admin creates a new user, invitations are sent. The user will receive an email notification and will then be visible in the company user list just as a regular user. Users can’t create a second company for themselves. Only an ST Engineer can do it. There will be no impact on the STE mobile app functionality. A user should be able to see the campaigns from the company the user is currently switched to. #### Scan Result Rules Result rules are a set of predefined conditions which can be applied to the task's scan result field. Conditions compare two or more values and the result should be binary, either True or False - which forms basis for customization of results. Below are some possible customizations for a single field: - Text String: to display different text based on condition. - Color: to change the background color of the field or the icon color. - Same color will be used for background color and icon color - Background color will automatically use a opacity - Icon color will have 100% opacity - Icon: to display an icon on the right side of the field. - ST task Editor provides a set of four predefined icons to select from. - Font: to control the font size of the result. - Can be predefined set like 16,24 - Only size can be changed, not the font type #### Grouped Field (Regex Named Capture Groups ) STE Tasks JSON now supports regex and capture groups. Regex does support more than one capture group and allows us to name each group. When the user enters or scans a code, using a regular expression we can extract the groups. - Each group name considered as SCM Field key - Matched group values can be SCM field values. Example for STE app users: Scan a code that contains the following alphanumeric information: _90027279DV03DV00001901F3M_ After scanning/entering above number in an SCM field that supports regex group capture, the content can be sent to 3 different SCM fields: - _90027279DV_ = Material Number - _03DV0000190_ = Serial Number - _1F3M_ = batch number ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Frontend [v1.31.0](/docs/release-notes/release-notes-portal-1.31.0) - Adds support for multiple companies per user feature - Adds product sku to code info card - Fixes issue with clear filter button on admin page - Add photo auth icon on Dashboard - Fixes region list UI issue - Fixes issue with create WO button when no template is available - Fixes grammar issue on Register page ### Backend [v4.1.0](/docs/release-notes/release-notes-Backend-4.1.0) - Add STE tasks V5 - Fix crash in file handling when uploading large files - Add membership filter to UAT view - Multi company Users - Fixes bug which allowed token= auth via querystring to all views - Fixes QueryCodeSpaceView header name for 'custom_key' - Small email / device profile admin fixes - Fixes crash creating code space prefix for company names starting with 0 - Update generation library to v3.10.0 - Add is_default_member param to users API - Make legacy codes the default for old style companies - Fixes missing fingerprint_image and blur_score in auth scans - Resend token, ignore last_login ### Mobile #### Android Scantrust Enterprise v2.2.6 - Adds support for Grouped Field (Regex Named Capture Groups) - Adds support for scan result rules customization - Adds support for alphabetically sorted lists in SCM input fields. - Full country name to be displayed for intended market and region based SCM fields - Adds support for production descriptions to be displayed in the scan result field #### Android Scantrust Printer v1.3.1 - Fixes the deprecated GPS API crash - Fixed edge cases where users click UI elements before the processing is finished. - No longer allows the user to click on UI elements while a progressbar is shown. #### iOS Scantrust Enterprise v3.5.0 - Adds support for Grouped Field (Regex Named Capture Groups) - Adds support for scan result rules customization - Adds support for alphabetically sorted lists in SCM input fields. - Full country name to be displayed for intended market and region based SCM fields - Adds support for production descriptions to be displayed in the scan result field --- // File: release-notes/high-level-notes/new-app-releases-january-24 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | v1.8 | v1.7 | | e-label SaaS Portal | v1.7 | v1.6 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## e-label Management Tool [v1.8](/docs/release-notes/release-notes-e-label-management-tool-1.8) #### Features: ### e-label Management Tool v 1.8 - Added GS1 DL support. Users can choose to generate GS1 Digital Link codes when creating codes on the e-label SaaS portal. To do this, you need to navigate to the QR Code tab in the e-label management tool and select the appropriate code type from the dropdown menu. After filling in the GTIN, LOT, and CPV fields, you will be able to generate the GS1 DL code. Products with GS1 codes now have corresponding labels for better visibility. ## e-label SaaS Portal [v1.7](/docs/release-notes/release-notes-e-label-saas-portal-1.7) #### Features: - Added GS1 label for products that have GS1 Digital Link. - Fixed total e-labels for premium user. - Fixed issue with e-label usage bar. --- // File: release-notes/high-level-notes/new-app-releases-january-26 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | v1.21.0 | v1.20.4 | | e-label SaaS Portal | v1.12.3 | v1.12.2 | | QR manager | v1.15.0 | v1.14.1 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## e-label Management Tool [v1.21.0](/docs/release-notes/release-notes-e-label-management-tool-1.21.0) #### Features: - Added a new e-label template. - Added “(01)” before the GTIN in the text displayed around the QR code. - Added an inactive code warning for all blacklisted code reasons. - Fixed an issue where the wine color in the Product Information section did not update after being changed in the Consumption Unit. - Fixed a UI issue that occurred when the SKU was too long. #### Updates to E-label template: **Expanded Units & Customization** The scope of product data has been expanded to support more categories and provide greater control over how information is presented. - New Measurement Units: Support for ml, cl, L, g, and kg has been added to accommodate various product types. - Translatable Custom Fields: Within the Editor, you can now add custom labels and values. These are fully translatable, ensuring your product data is localized for every market. **Nutrition Declaration (EU Standards)** Displaying nutritional information is now more precise and compliant with European food and beverage requirements: - Standardized Tables: Implementation of the official European nutrition information table format. - Reference Intake (RI) Toggle: A new landing page toggle allows you to display RI values. When enabled, the mandatory disclaimer “%RI: Reference intake of an average adult (8400 kJ/2000 kcal)” will automatically appear. - Vitamins & Minerals: Added support for Vitamins & Minerals in the nutrition declaration. **Enhanced "Free Section" in Editor** The Free Section has been upgraded to allow more region-specific content. ## e-label Saas Portal [v1.12.3](/docs/release-notes/release-notes-e-label-saas-portal-1.12.3) #### Features: - Added the ability to duplicate a product including its e-label data. - Added “(01)” before the GTIN in the text displayed around the QR code. - Fixed a UI issue that occurred when the SKU was too long. - Fixed an issue when changing the first and last names to longer values. ## QR manager [v1.15.0](/docs/release-notes/release-notes-portal-QRManager-1.15.0) #### Features - Added the ability to duplicate a product including its e-label data. - Added “(01)” before the GTIN in the text displayed around the QR code. - Updated the Excel bulk upload template: - Added a new template. - Added missing translation fields for all templates (product_origin_expression, responsible_consumption_message, recyclability_message, organic_message, certifications_message). - Added missing fields from the Product Information section (product_type, production_method, wine_colour, traditional_terms). - Updated the Tutorial sheet to reflect all these changes. - Fixed a UI issue that occurred when the SKU was too long. - Updated translations. --- // File: release-notes/high-level-notes/new-app-releases-july-22 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | scantrust backend | v4.3.1 | v4.3.0 | | scantrust portal | v1.35.0 | v1.34.0 | | Scantrust Enterprise (Android) | v2.3.0 | v2.2.9 | | Scantrust Enterprise (iOS) | v4.1.0 | v4.0.0 | _The Scantrust Platform is updated continuously. Release notes are created when there is a substantial workflow for feature change that is not backward compatible or when a sufficient number of small changes exist that can be summarized. These changes are accompanied by a major or minor version number change. App updates are bundled with these releases, but also have their own release notes when released separately._ ## Notable Features & Updates This list includes important and interesting changes or features. More detail change lists about feature changes and updates can be found in the individual component change list appendix. #### History Look up feature With this update in the STE app, - Scans made from lookup tasks (both quick scan and auth scans) are logged into the History list - Scan result can be viewed moving away from the result screen at a later point of time - Can easily report scan details, SCM data and other details which gets showed on scan result screen ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Frontend [v1.35.0](/docs/release-notes/release-notes-portal-1.35.0) - Fixes SSO login issues - CSV Upload improvements - Fixes extra space in header and warn user for an invalid key - Allows scm update by work order/product/status/blacklist reason - Small bug fixes - Shows sku in the work order product selection - Restricts serialized fingerprint work order quantity to 120k on portal - Updates error code handling to align with backend changes - Fixes “cancel work order” icon color to red ### Backend [v4.3.1](/docs/release-notes/release-notes-Backend-4.3.1) - Record last login date of company memberships - Use standard api errors to communicate login failures - Limit code quantity allowed when creating serialized fingerprints - Update all requirements (django 4.0.5, ...) - Add epac multi-company user support - Improve SCM bulk update by serial_number - Raise correct error when an archived user tries to log in - Add login option to prevent switching to the previous company - Process "current company" when logging in - Fix issue with user roles in UserViewSet - Fix the scan on create task which sometimes fails - Increase speed of serial number de-duplication - Fix issue with AlertSubscribers and multi-company users - Fix django scan admin slow query ### Mobile #### Android Scantrust Enterprise v2.3.0 - Adds History for lookup tasks - Updates SDK v4.1.3 - Fixes login issues when switch to SSO company #### iOS Scantrust Enterprise v4.1.0 - Adds History for lookup tasks --- // File: release-notes/high-level-notes/new-app-releases-july-24 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Portal QR manager | v1.6 | v1.5.1 | | e-label SaaS Portal | v1.9.2 | v1.9.1 | | Scantrust (Android) | v1.14.1 | v1.14.1 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## Portal QR manager [v1.6](/docs/release-notes/release-notes-portal-QRManager-1.6) #### Features: - Added wine colour in bulk upload. - Added product method in bulk upload. - Added an option to mark as organic in bulk upload. - Added Country-specific support in bulk upload: - Impressum - Business operators - Updated Tartaric acid to Tartaric acid (L(+)-) and Malic acid to Malic acid (D,L-; L-) in bulk upload. ## e-label SaaS Portal [v1.9.2](/docs/release-notes/release-notes-e-label-saas-portal-1.9.2) #### Features: - Updated profile summary. - Updated plan confirmation pop-up. - Moved the '€' symbol to the right of the price. - Disabled the ability to purchase any plans after cancelling a plan. - Updated the messaging on the cancellation pop-up for users who have downgraded their plan. - Removed the start date of the subscription from the profile summary. Now displaying 'Valid until YYYY-MM-DD. - Changed 'Subscription period' to 'Valid until YYYY-MM-DD' in My Subscription. - Fixed an issue where the cancel subscription button appeared after cancellation on the subscription page.' - Fixed an issue where, after users canceled their subscription, the 'Update Card Details' button still existed, resulting in a 'Page Not Found' error when clicked. - Fixed an issue with differing VAT and discounts between the Saas portal and Paddle invoices. - Fixed an issue where the upgrade pop-up was not displaying the correct subscription end date. - Fixed an issue where, after an unsuccessful payment, users were advised to contact the support team. Subsequently, the payment button on the Update page was not functioning properly. ## Scantrust (Android) [v1.14.1](/docs/release-notes/release-notes-android-scantrust-1.14.1) #### Containing changes - Added support for 24-character extended IDs for supported phones. --- // File: release-notes/high-level-notes/new-app-releases-july-25 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust portal | [1.54.1](/docs/release-notes/release-notes-portal-1.54.1) | [1.54.0](/docs/release-notes/release-notes-portal-1.54.0) | ## Individual Component Change List The Transparency by Amazon feature is now available in production. You can access it directly through [this link](https://portal.scantrust.com/#/amazon-transparency). This release introduces the ability to integrate your company's products with Amazon's Transparency program, ensuring that items are properly registered and traceable according to Amazon's requirements. Please contact support@scantrust.com to enable the feature. Once the integration is enabled, users can manage their products within the Products section. This page displays a list of all connected products, along with details such as product name, SKU, GTIN-14, connection status, auto-upload availability, number of connected codes, and creation date. This provides full visibility into which products are successfully registered with Transparency by Amazon. Adding new products is handled through the Connect Product flow. Users must select an existing product from Scantrust, enter the GTIN-14 that has already been registered in Amazon's Transparency program, and may optionally add remarks. After completing the process, the product will appear in the product list with its details and connection status. In order to automatically upload active codes to Amazon, the Enable auto-upload feature must be turned on. After this step, you can create new work orders or perform code injection. Twice a day, at 12:00 noon and 12:00 midnight GMT, an automated SWEEP operation is executed, which will upload all active codes to Amazon. Finally, to review both successful and unsuccessful transactions, you can use the Transactions tab. Please note: GS1 SGTINs are supported, and the length of extended IDs must be ≤ 20 characters. --- // File: release-notes/high-level-notes/new-app-releases-july-26 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :---------------------- | :------ | :------- | | Landing Page Editor | v3.8.0 | v3.7.2 | | Scantrust portal | v1.64.0 | v1.63.0 | | Scantrust Pro | v1.4.0 | v1.3.0 | | e-label SaaS Portal | v1.14.0 | v1.13.0 | | Portal QR manager | v1.15.4 | v1.15.3 | | Video Auth | v3.7.2 | v3.5.2 | | Code Ingestion | v1.5.2 | v1.5.1 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### DPP templates for textile and batteries Two new Digital Product Passport (DPP) templates are now available in the Landing Page Editor: - Textile DPP - Battery DPP Example: Textile DPP Textile DPP landing page template — example view 1 Textile DPP landing page template — example view 2
Example: Battery DPP Battery DPP landing page template — example view 1 Battery DPP landing page template — example view 2
### New e-label widgets Five dedicated e-label widgets are now available for wine, spirits, and food products, making it easy to add compliant sections in one click: - e-label Business Operator - e-label Ingredients - e-label Nutrition - e-label Responsible Consumption - e-label Sustainability The five e-label widgets available in the Landing Page Editor ### Editor improvements - **Font control per landing page** — a new dropdown lets users change the font for the entire landing page, with the option to override the global font for specific languages. - **Authentication Result Widget formatting** — customise text, colours, and alignment for Genuine, Active Code, and Unable To Verify states. - **Unsaved-changes warning** — users are now warned when leaving the editor with unpublished changes. Editor improvements — font control and Authentication Result Widget formatting Editor improvements — unsaved-changes warning ### Sign up with Google - Available on both Scantrust Pro and the e-label portal sign-up pages. - One-click account creation — no password to set or remember. - Users who signed up with Google can also log in with Google going forward. Sign up with Google on the Scantrust Pro and e-label sign-up pages ### Revamped Scan destination page The Scan destination tab has a new, clearer layout. Users choose where to send consumers when they scan the QR code: - **Custom landing page** — build a product showcase or Digital Product Passport. - **Use an existing landing page** — link the product to an existing landing page. - **Redirect to URL** — send scans straight to an existing web address. The revamped Scan destination page with landing page and redirect options ### DPP templates are now available in Scantrust Pro The Digital Product Passport templates for **textile** and **batteries**, previously available only in the Enterprise portal, can now be used in Scantrust Pro. When creating a custom landing page, users can start from the **Digital product passport** layout with materials, origin, and compliance documents for their product. --- // File: release-notes/high-level-notes/new-app-releases-june-19 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :-------- | :------- | | API | No Change | v2.7.0 | | Authentication | v2.9.0 | v2.5.0 | | Portal | v1.18.4 | v1.18.3 | | Scantrust (Android) | v1.8.0 | v1.7.0 | | Scantrust Enterprise (Android) | v1.5.3 | v1.5.1 | | Scantrust (iOS) | v2.5.0 | v2.4.0 | _The Scantrust Platform is updated continuously. Release notes are created when there is a substantial workflow for feature change that is not backward compatible or when a sufficient number of small changes exist that can be summarized. These changes are accompanied by a major or minor version number change. App updates are bundled with these releases, but also have their own release notes when released separately._ ## Notable Features & Updates This list includes important and interesting changes or features. More detail change lists affecting feature changes and updates can be found in the individual component change list appendix. #### Teams Teams map between campaigns and users. The company admin can create new teams. There can be two kinds of user **Access** on a campaign : - Default - All users in the Company can access the campaign and - Limited - Limited access to the user teams in the campaign **Rules of Teams** - One user can be part of multiple teams - One team can be associated with multiple campaigns - Only Brand Companies have teams. Printing partners do not. - Only admins have access to Users & Teams feature. #### Double Ping A server call is made as soon as possible in order to get info on the code that is being scanned and its potential custom settings. If the code has been blacklisted, is inactive or untrained, the scanning process will stop and the user will be shown the result screen. It can also be used to adjust the quality constraints for tricky work-orders (messed-up QA, special substrate, etc) on a case by case basis depending on core team analysis. ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Mobile #### Android Scantrust Enterprise v1.5.3 - Updates to mobile SDK v3.2.6 - Adds new supported phones **Samsung S10/S10+/S105g/S10Edge and Samsung Note 8** - Fixes issue on Authenticate/Quick Scan when printer resolution is a floating point - Updates Product field not to be pre-selected while updating SCM tags - Bug Fixes #### Android Scantrust v1.8.0 - Updates to new SDK v3.2.6 - Adds new phones to supported phones **Huawei Honor 10, Huawei P10, Oppo R9s,Samsung Galaxy S10/ S10e/S10+/S10 5g and the Samsung Note 8** - Adds **Double ping mechanism** to scan flow. #### iOS Scantrust v2.5.0 - Adds new supported phones **iphone XS, iphone XS Max and iphone XR** ### Core Authentication - Move from Python 2.7 to Python 3.6.6 - Support authentication of secure code version 9: - small codes (with SG inside / outside), - serialized FP. - Improve synchronization of hybrid codes. - Improve admin interface. - Improve Kagi3 training process: - Better evaluation of the sharpness that reduce the false alarm rate. --- // File: release-notes/high-level-notes/new-app-releases-june-20 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :------------------ | :------ | :------- | | scantrust portal | v1.24.0 | v1.23.2 | | Scantrust (Android) | v2.0.0 | v1.9.1 | | Scantrust (iOS) | v2.0.0 | v1.7.0 | _The Scantrust Platform is updated continuously. Release notes are created when there is a substantial workflow for feature change that is not backward compatible or when a sufficient number of small changes exist that can be summarized. These changes are accompanied by a major or minor version number change. App updates are bundled with these releases, but also have their own release notes when released separately._ ## Notable Features & Updates This list includes important and interesting changes or features. More detail change lists about feature changes and updates can be found in the individual component change list appendix. ### STE TASKS The STE Tasks feature helps to streamline operations, especially those with many different users in different roles associating data to QR codes via the Scantrust Enterprise (STE) App. This new feature allows clients to manage their specific tasks that different users on different teams (i.e. warehouse operators, inspectors, etc.) see and need to complete when they login to the STE App. For example, when a warehouse operator signs into the app, they will only see the tasks which are available for them to perform (e.g. unit-to-case aggregation), whereas an inspector may only see an authentication task when s/he signs in. The STE Tasks feature will remove complexity for Enterprise app users by only showing them the actions they are allowed to perform based on their team and campaign assignment. (Please see screenshots below for a comparison of the new and old login screens.) The STE tasks feature will also speed up implementation time without the need to customize individual screens for the customer and without needing multiple app upgrades. The tasks are created and managed at a campaign level in the Scantrust portal with the help of Scantrust Engineers. New tasks for each campaign can be added easily, without having to release and install a new app, as access to campaigns and tasks is based on assignment via the [Teams](https://devportal.scantrust.com/docs/release-notes/high-level-notes/new-app-releases-june-19/#teams) feature. #### STE APP Screens for campaigns using tasks feature #### STE APP Screens for existing campaigns (No tasks) Scanning options (Authenticate/Quick Scan) were in the side menu before. Now available inside the campaign ### THE FANTASTIC STE TASK EDITOR Account admins can add/update STE tasks using the Task Editor, available on the Scantrust Portal. Task access can be easily updated from the editor The STE Tasks Editor also helps to configure the type of upload data [aggregate items to cases, ship cases, etc) and type of code [QR code, barcode..etc] _To Note:_ - Users must be assigned to a specific Team in the company in order to access campaign tasks - Users can be in multiple teams and multiple teams can have access to each campaign - The existing campaigns will now show “My tasks” instead of “Ship Goods” with campaigns listed and functioning as before the update. ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Mobile #### Android Scantrust Enterprise v2.0.0 - Adds support for STE tasks feature #### iOS Scantrust Enterprise v2.0.0 - Adds support for STE tasks feature --- // File: release-notes/high-level-notes/new-app-releases-june-24 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust (iOS) | v4.2.0 | v4.1.1 | | Android Scantrust Printer | v1.5.7 | v1.5.5 | | Scantrust (Android) | v1.13.4 | v1.13.3 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Scantrust (iOS) [v4.2.0](/docs/release-notes/release-notes-ios-scantrust-4.2.0) #### Containing changes - Updated to new SDK v3.4.5. - Added GS1 support. - Added support for 24-character extended IDs. - Fixed on-frame processing and glare check. - Fixed issue with the app being stuck on the previous results screen when launching from WeChat. ### Android Scantrust Printer [v1.5.7](/docs/release-notes/release-notes-android-scantrust-printer-1.5.7) #### Containing changes - Fixed the issue causing auto logout and the QA process reset. ### Scantrust (Android) [v1.13.4](/docs/release-notes/release-notes-android-scantrust-1.13.4) #### Containing changes - Added support for 24-character extended IDs for supported phones. --- // File: release-notes/high-level-notes/new-app-releases-march-19 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :-------- | :------- | | API | v2.6.0 | v2.5.5 | | Authentication | v2.5.0 | v2.4.0 | | Portal | No Change | v1.18.2 | | Scantrust Enterprise (Android) | v1.5.0 | v1.4.0 | | Scantrust Enterprise (iOS) | v1.3.0 | v1.2.0 | _The Scantrust Platform is updated continuously. Release notes are created when there is a substantial workflow for feature change that is not backward compatible or when a sufficient number of small changes exist that can be summarized. These changes are accompanied by a major or minor version number change. App updates are bundled with these releases, but also have their own release notes when released separately._ ## Notable Features & Updates This list includes important and interesting changes or features. More detail change lists affecting feature changes and updates can be found in the individual component change list appendix. #### Based on configuration done in ST portal(via JSON format) at the product level following new features will be available #### Apply to Remaining With this feature only first code scan is required to associate the whole reel of codes to one Logistic Unit from Ship goods #### Auto submission and quantity check i. After user scans the first code for the range on 'Apply to remaining' STE will auto submit the range without going through scan result summary page to 'submit' the codes ii. With quantity check feature it enforces quantity check for number of items scanned in the range _Pls note above configuration can be done by an ST Engineer only_ ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Mobile #### Android Scantrust Enterprise v1.5.0 - Based on configuration done in ST portal via JSON format at the product level - Adds feature 'Apply to Remaining' - where only one code scan is required to associate the whole reel codes to one Logistic unit from Ship goods - Adds feature for 'Auto submission' - after user scanned the first code for the range, STE will auto submit the range without going through scan result summary page to 'submit' the codes - Adds feature to enforce quantity check for number of items scanned in the range - Adds support to allow an SCM text field input via scanning a barcode or QR code - Fixes app timeout dialogue - Fixes scanning of logistic unit after cancelling to enter manually #### iOS Scantrust Enterprise v1.3.0 - New UI for scan results, which includes replacement of the current VERIFIED result to ACTIVE CODE - Crash on trying to scan proofsheet codes from Ship goods in SCM tagging - Fixes Quick scan for archived campaign codes - Makes consumer URL disabled on scan result page under campaign section ### Backend #### v2.6.0 - Enable app performance monitoring only when requested - Add bundle quantity to Apps code-info endpoint - Update sentry (error reporting) sdk and usage - Replace awesome-slugify lib with python-slugify - Add blur threshold adjustment to site admin - Add sorting capability to various endpoints - Upgrade Django and Rest Framework to latest versions - Update product STC data to allow numbers & booleans - Fix endpoints returning 500 when user is not logged in - Fix crash in apps code-info endpoint with sdk < v104 - Fix crash in error handling filter - Fix crash when calling campaigns with new SDK version - Fix crash in mobile bundles endpoint - Range update now supports updating 1 code --- // File: release-notes/high-level-notes/new-app-releases-march-23 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label SaaS Portal | v1.2 | v1.1 | | e-label Management Tool | v1.2 | v1.1 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## e-label SaaS Portal [v1.2](/docs/release-notes/release-notes-e-label-saas-portal-1.2) #### Features: #### End of trial - Free users can purchase any plan by the end of the trial period. - Paid users on trial have a 7 days grace period (until 7 April 2023) to pay for the paid plan that they have signed up for during the trial. If they do not pay by 7 April 2023, they will be downgraded to Free and get to keep 3 recently created e-labels. - Paid users on trial can pay for the paid plan that they have signed up for, however, they cannot change the plan. They can change the plan by the end of the grace period. With that, they only see the checkout button for the plan that they have trial on. - Only paid users on trial will see a yellow banner that runs across the entire portal. #### Added subscription flow (upgrade, downgrade, cancellation) - Users can upgrade, downgrade or cancel their subscription anytime. - The upgrade happens immediately. Downgrade & cancellation will only be effective by the end of the subscription period. - Subscription mechanism, please refer to this [flow](https://drive.google.com/file/d/1RYoaGko-Eunw5V-TZh2dCidjw3MvRNrM/view?pli=1). - Users will be charged automatically by the end of the subscription. The users can cancel the subscription if they do not wish to be charged automatically. #### Added payment gateway (Paddle) - Users are able to pay and purchase plans directly on the SaaS portal. - Users can purchase via credit card. We charge only EUR for payment. - There are 2 steps for payment: (1) Input your email, country and postal code; (2) Input your credit card information. - For details, please refer to [Payment FAQ](https://docs.google.com/document/d/1OEDPMYwLCQ0JYSXx0ehn_DHcpOP16TlAbZTH5iNCxnI/). ## e-label Management Tool [v1.2](/docs/release-notes/release-notes-e-label-management-tool-1.2) #### Features: Added a disclaimer on the inaccuracies of translation Added a reminder to show allergies and intolerances on the physical label Added a help pop-up for importing translations from a CSV Added a warning message when a user tries to create a code while being at the limit (only for e-label portal) This warning will be shown on the template selection page and on the QR code section of the editor Added a way to collapse preview’s language and country selector Added error page for inactive e-label Added a mechanism for saving the language used during the registration as the user language --- // File: release-notes/high-level-notes/new-app-releases-march-24 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | v1.10 | v1.9 | | e-label SaaS Portal | v1.9 | v1.8 | | Scantrust portal | v1.43.2 | v1.42.3 | | Scantrust backend | v4.16.0 | v4.15.0 | | Scantrust Enterprise (iOS) | v4.6.0 | v4.5.3 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## e-label Management Tool [v1.10](/docs/release-notes/release-notes-e-label-management-tool-1.10) #### Features: - Rebranded e-label landing page to U-label. - Added Scantrust privacy policy on the e-label landing page. - Added a section where users can add producer privacy policy. - Changed Impressum behavior: The Impressum link is now available in the footer of the e-label landing page. Clicking on the Impressum link will display a preview of the Impressum. - Added brand link for spirit template. - Fixed an issue where multiple volumes (net quantity) added without a specified consumption unit resulted in the different bottle volumes not appearing anywhere in the system. ## e-label SaaS Portal [v1.9](/docs/release-notes/release-notes-e-label-saas-portal-1.9) #### Features: - Rebranded e-label SaaS portal to U-label. - Updated plan prices. - Allowed users to archive and unarchive products - Added a warning message when users didn't complete GS1 code generation. ## Scantrust portal [v1.43.2](/docs/release-notes/release-notes-portal-1.43.2) #### Features: - Rebranded e-label registration page to U-label. - Added the removal feature for product and brand images after upload. - Added change role option for memberships (site-admin). - Added yellow banner on login page. - Fixed an issue when users see Download SSC icon and don't have permission for this action. ## Backend [v4.16.0](/docs/release-notes/release-notes-Backend-4.16.0.md) #### Features: - Added Code Ingestion Templates. - Rebranded e-label emails to U-label. - Allowed legacy companies access to scm/run/code/update/. - Marked inactive IngestionRecord stuck for more than 24 hours as cancelled. - Added an STC File admin. - Allowed STE users to set membership roles including elabel. - Updated SCM async range. - First SAML login for a company is admin overriding default role. **Fixes** - Increased max length of mobile app version. - Filtered by company when getting list of codes for workorder download. - Allowed ingestion mode for SID workorder templates. - Allowed product archiving for e-label role. - Mobile code lookup: Added extended ID and removed “exists” field. - Fixed a crash in mobile code lookup when code has no product. - Added mobile API v112 - new fields for mobile/code-lookup/ endpoint. - Added a remarks field to WO from template serializer. - Added SCM admin action for re-queue SCM transactions. - Allowed scm/run/code/update/ to set serial_number. - Fixed sample QR ordering. - Mobile code lookup: Added scan info to response. - Removed % sign support from GS1. - Removed control character restriction from SCM product values in bulk updater. - Allowed GS1 code paths in scm/set/code/ path. - Added a script to fix Remy failed code updates. - Allowed the removal of product and brand images. - Replaced the product dropdown list with a single link in workorder admin page. ## Scantrust Enterprise (iOS) [v4.6.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.6.0) #### Features: - Added a new SDK with GS1 support. - Updated the mobile API version to 112 (from 111). - Updated tasks lookup scan to use the new code-lookup endpoint (previously used verify & code-info). --- // File: release-notes/high-level-notes/new-app-releases-march-25 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust portal | v1.50.1 | v1.50.0 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## Anti-Counterfeiting Dashboard #### Features: We are introducing the Anti-Counterfeiting Dashboard to help our customers gain valuable insights into how their products and end consumers are being protected from counterfeits. This new tool provides a high-level overview of authentication activity and counterfeit detection, as well as investigative capabilities to analyze specific SKUs, codes, and counterfeit locations. #### Key Features: - Counterfeit Detection Overview – See how many of your SKUs are affected by counterfeits and track the number of counterfeit scans. - Data Filtering – Filter authentication and counterfeit scan data based on various important factors. - Scan Distribution Over Time – Analyze how authentication scans and counterfeit detections trend over time. - Product-Level Insights – Understand how many counterfeits are being scanned at the product level. - Serialized Code Monitoring – Track changes in the counterfeit scan ratio over time, particularly for serialized codes. - Blacklist Code Analysis – See details on how often blacklisted codes are still being scanned. - Counterfeit Location Insights – Identify where most counterfeits are being scanned, with options to filter by location accuracy and specific locations. This dashboard empowers customers to prove the value of their anti-counterfeiting solution, enabling better decision-making and proactive action against counterfeiting threats. --- // File: release-notes/high-level-notes/new-app-releases-may-18 ## Overview Major Upgrades are highlighted here: | Component | Current | Previous | | :---------------------- | :------ | :------- | | API | v2.3.3 | v2.3.1 | | Authentication | v2.3.1 | v2.3.1 | | Portal | v1.16.5 | v1.16.3 | | ST Enterprise (iOS) | v1.1.0 | v1.0.0 | | ST Enterprise (Android) | v1.0.1 | v1.0.0 |
*The Scantrust Platform is updated continuously. Release notes are created when there is a substantial workflow for feature change that is not backward compatible or when a sufficient number of small changes exist that can be summarized. These changes are accompanied by a major or minor version number change. App updates are bundled with these releases, but also have their own release notes when released separately.* ## Individual Component Change List This a detailed list of the substantive changes affecting each component. ### Frontend #### Features - Added a "custom region" or "country list" label for type of the region group - Site Admin:For Scan Details section-extended_id added to the scan details - (first 8 characters and simplified scan uuid(first 8 characters) - with a copy icon (copies full uuid). - Site Admin:Two views added Users List and User Detail #### Fixes - Scan RESULT shown in STE and Dashboard-Scan Data, Code Tracking aligned with definition Scan Results Organization. - Download CSV with Serial Numbers fixed - Profile information fixed with long title - Pop up modified for registering a product without having any brand - Archive region groups - Display opened Region Group name - Display “DEFINE YOUR REGION GROUPS” in header for Region group section - Ability to restore archived regions fixed - System message fixed on recover user - Fixed long SKU text display when added new product - Long user names wrapping fixed in sidebar - Long email id display fixed - Site Admin:Administer button available when scale 100% ### Mobile ##### Android Scantrust Enterprise (STE 1.0.1) #### Features - New Authentication Result UI - Added flash light indicator on SCM scan screen #### Fixes - Results summary for scanning the same code in STE Android and STE iOS aligned. - Scan RESULT shown in STE and Dashboard-Scan Data, Code Tracking aligned with definition Scan Results Organization. - Scans required in Make Ready stage for static code type: - Code impositions less than 10- scans required 10. - Code impositions greater than 10- scans required is number of code impositions entered. - Space after comma in Scan result - Cosmetic bugs - keyboard retract when not needed and “record updated” message display time fixed for Galaxy S6. ##### iOS Scantrust Enterprise (STE) #### Features - Added flash light indicator on SCM scan screen ### STC #### Fixes - Order of SCM tags on STC after scan is fixed as per SCM T&T set. ### Backend API #### Features - Add inline scan support, endpoints and scan types. - Updated dependencies for increased security and features. - Added extra searches and filters in multiple endpoints. - Updated ghost scan processing. - Add datadog logging features. - Add device compatibility endpoint. - Improved admin pages for substrates. - Equipment made optional for SID workorders. - Remove unused Demo user role. #### Fixes - Increase security by optimizing various permissions and access roles. - Fix HTML escaping in email subjects. - Optimized certain queries that took too long. - Fix proofsheet layout (technology field overlap). - Fixes related to IP lookups. --- // File: release-notes/high-level-notes/new-app-releases-may-19 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :-------- | :------- | | API | v2.7.0 | v2.6.0 | | Authentication | -- | v2.5.0 | | Portal | No Change | v1.18.3 | | Scantrust Enterprise (Android) | v1.5.1 | v1.5.0 | _The Scantrust Platform is updated continuously. Release notes are created when there is a substantial workflow for feature change that is not backward compatible or when a sufficient number of small changes exist that can be summarized. These changes are accompanied by a major or minor version number change. App updates are bundled with these releases, but also have their own release notes when released separately._ ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Frontend - Fixes issue with upload SCM via CSV for many codes by changing upload speeds to - Per 100 codes for extended id/serial number as unique identifier - Per 10 codes for any other fields as unique identifier ### Mobile #### Android Scantrust Enterprise v1.5.1 - Fixes Network Timeout issue while uploading SCM data for more number of codes ### Backend #### v2.7.0 - With updated GeoIP2 fixes location by IP lookup - Migrates Celery to Django RQ leading to Better job queues allowing small jobs not to be blocked by big generation jobs - Adds support for new CoreAPI version - Adds Teams feature - Increases WO max generated images from 100K to 120K --- // File: release-notes/high-level-notes/new-app-releases-may-24 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust Enterprise (Android) | v2.3.8 | v2.3.7 | | Portal QR manager | v1.5.1 | v1.5 | | e-label Management Tool | v1.12 | v1.11 | | Scantrust portal | v1.45.0 | v1.44.0 | | Scantrust (iOS) | v4.1.0 | v4.0.5 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Android Scantrust Enterprise [v2.3.8](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.8) - Added a new SDK with GS1 support. - Added support for guest mode. ### QR manager [v1.5.1](/docs/release-notes/release-notes-portal-QRManager-1.5.1) #### Features - Updated the drop-down list based on the updated ingredient category, ingredient list and wine product list. ### e-label Management Tool [v1.12](/docs/release-notes/release-notes-e-label-management-tool-1.12) #### Features: - Added product picture section. - Added new fields: production method, wine colour, traditional terms.This change affects only Wine template. - Removed the below wine product types from drop-down list: 1. Rectified concentrated grape must 2. Wine vinegar 3. Partially fermented grape must extracted from raisined grapes If users previously select these types on the e-label, they can remove by changing to other product types. - Added a new wine product type 1. Partially fermented grape must - Added new ingredient categories: 1. Alcohol 2. Substances for enrichment 3. Processing aids These 3 categories do not show up with the ingredients. E.g. when “Alcohol of vine origin” are being selected under “Alcohol”, show only “Alcohol of vine origin” without the category in the ingredient list. - Changed the behavior to hide the category when ingredients are selected, showing only the ingredients for the Sweeteners category. - Updated ingredient lists for wine and aromatized wine templates. - Added a new indicator to allow users to mark ingredients as organic in the editor. On the landing page ingredient list, ingredients designated as organic will now display an asterisk (*). Additionally, below the ingredient, the legend "(*) Organic" will appear. - Implemented the option to select 'Contains...and/or...' for the categories 'Acidity Regulators' and 'Stabilizing Agents'. 1. When choosing to use 'Contains...and/or...', the ingredient list will be formatted as follows: a) Acidity regulators (contains Ingredient A and/or Ingredient B) b) Acidity regulators: Contains Ingredient 1 and/or Ingredient 2 (Deutsche) 2. If 'Contains...and/or...' is not selected, the ingredient list will appear as follows: a) Acidity regulators (Ingredient A, Ingredient B) b) Acidity regulators: Ingredient A, Ingredient B (Deutsche) 3. Note that if only one ingredient is selected, the 'Contains...and/or...' option will not be available for selection. a) Acidity regulators (Ingredient A) b) Acidity regulators: Ingredient A (Deutsche) - Set “Main Ingredients” to the top of the ingredient category list. - Fixed an issue with consistent display size across both preview and mobile views. The size will now vary based on the length of the product name and brand name. ### Portal Enterprise [v1.45.0](/docs/release-notes/release-notes-portal-1.45.0) ## Containing changes - Added iframe reload mechanism for e-label management tool and SaaS portal. - Disabled product CSV download if there were more than 2000 SKUs. - Removed full list product load from campaign and codes created pages. - Fixed the display issue with the active calibration session list. - Showed "50+" products when there were more than 50 in campaign list. - Removed product count from brand list. ### Scantrust (iOS) [v4.1.0](/docs/release-notes/release-notes-ios-scantrust-4.1.0) ## Containing changes - Added new URLs for app clip. --- // File: release-notes/high-level-notes/new-app-releases-may-25 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust Pro | v1.0.0 | ---- | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. #### Scantrust Pro [v1.0.0](/docs/release-notes/release-notes-scantrust-pro-1.0.0) #### We are excited to introduce the new Scantrust Pro Portal! This marks a significant step towards expanding our reach in the Self-Serve market, making our platform more accessible and user-friendly. With this release, Scantrust aims to accelerate growth and streamline onboarding, enabling more businesses to independently manage their QR code solution #### New Features: ## 1. Self-Serve Registration: - New users can now register and create accounts without human intervention, streamlining the onboarding process and reducing the need for manual setup. - Website updates allow users to easily discover the registration page and create an account directly from the main site. ## 2. Simplified QR Code Creation: - Users can now create GS1 Digital Link-enabled QR codes without the need to first create a brand, product, or work order. - Non-GS1 QR codes can also be generated seamlessly. ## 3. Landing Page Management: - Landing pages can now be created independently from campaigns, simplifying the setup process. - Links to landing pages are easily accessible for quick assignment to QR codes. ## 4. Product Management Enhancements: - Products can now be created without requiring brand setup, and SKU fields are optional with auto-generation if not specified. - A new product list view provides quick access to product details, QR codes, and scan redirection URLs. ## 5. Code Download: - Separate download buttons are now available for QR codes. ## 6. User Experience Improvements: - Enhanced navigation with a clear top navigation bar. - Added flagging for pending edits with warnings for incomplete fields before finalizing. This release represents our commitment to empowering businesses of all sizes with seamless, efficient access to QR code management and landing page creation. With the new Scantrust Pro Portal, we are setting the foundation for scalable growth, stronger user autonomy, and reduced dependency on manual support—paving the way for a more connected and self-sufficient customer experience. --- // File: release-notes/high-level-notes/new-app-releases-november-18 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :------------------ | :-------- | :------- | | API | v2.5.2 | v2.5.0 | | Authentication | No change | v2.4.0 | | Portal | v1.18.0 | v1.17.2 | | ST Enterprise (iOS) | No change | v1.2.0 | | Scantrust (Android) | v1.6.2 | v1.5.1 | | Scantrust (iOS) | No change | v2.4.1 | _The Scantrust Platform is updated continuously. Release notes are created when there is a substantial workflow for feature change that is not backward compatible or when a sufficient number of small changes exist that can be summarized. These changes are accompanied by a major or minor version number change. App updates are bundled with these releases, but also have their own release notes when released separately._ ## Notable Features & Updates This list includes important and interesting changes or features. More detail change lists affecting feature changes and updates can be found in the individual component change list appendix. ### Transfer of Ownership by Reel _This feature facilitates a Scantrust Engineer to perform transfer of codes from one company to another._ ![ownership_transfer](/doc-img/ownership-transfer.png) ### Camera V2 (Android) Allows a better control of the capture process and the capture quality. ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Frontend v1.18.0 - [Site Admin]Adds Transfer of Ownership by Reel feature under Bundles section - [Site Admin]Adds filter to search bundles with Serial Number of the label on the reel under Bundles section - Adds new system user role Basic Dashboard User who can have access only to Dashboard Overview section - Adds new system user role Dashboard User who can access all sections of Dashboard:Overview,Maps and Scan Data - Add links to products in list view of campaigns - Option to create a Basic (default) STC for all new campaigns - Allow customization of the wechat follow page & slide show page - Changes the layout of the redirect options - User friendly mobile portal - Updated translations for Chinese, Dutch, German and French - Add link to Google Play and HuaWei app store for STE app - Adds redirect to Define Region group after creating region group - Renames "Consumer" tab to "Redirect" tab - Removes Google Analytics and GeoLocation option under Authentication tab for Campaign settings - Updates Portal Help Desk (Zendesk) link - Fixes discrepancies in User system Roles and Permissions - Fixes incorrect error message for adding user with already registered email - Fixes case sensitive codes lookup of a code under campaigns via serial or via extended id - Fixes validation error messages on ADD USER - Fixes open work order record under Products - Fixes Alerts page with very long names or email - Fixes some icons in WO's history - Fixes change of region name to be updated soon without refreshing page - Fixes Save on adding few categories to SmartLabel - Fixes Filters on Intended markets and clear filter - Fixes issues with saving filters when navigate back from Code tracking details - For scans from ST app ,scan details card on dashboard maps for SID code displays as ”Authentication” instead of "3rd Party lookup" - Fixes product reference when user add product before brand. - Fixes redirection on return to the same page after code tracking - Fixes number of scans is not displayed properly on the training page - Fixes issues for Wechat Follow Page and Slideshow Page - Fixes URL for parts of pages that show not secure warning message on browser - Fixes double scans on Dashboard when scanning codes using Facebook app - Fixes alignment of text in the table on Production Report - Fixes Top Country List in Dashboard Overview - Fixes pagination issues with “Go to Page’ on Codes Created, Dashboard and Bundles. - Fixes Incorrect country names - Fixes Production Report Issues - Fixes UI issues on Maps and Code Tracking details - [Site Admin] Fixes STC Lookup and SMS copy icon - [Site Admin] Adds copy icon for "Extended id" on Scan details tab - [Site Admin] For Codes Created tab, filter lists for product contains product name and SKU details - [Scantrust SITE] Fixes Request a demo Form ### Mobile #### Android Scantrust Enterprise - Adds Spanish language - Camera API V2 Update and Fixes - Improved UI design for Work Orders section - Adaptive icons for Android 8+ - Removes "Shipping Center" feature - Flashlight function for Authenticate and Quick scan. - Fixes discrepancies in system roles and permissions - SCM screen improvements - Fixes UI issues #### Android Scantrust - New UI for scan results, which includes replacement of the current VERIFIED result to ACTIVE CODE - Camera API V2 Update and Fixes - Added support for Samsung S9/S9+ phones - Fixes camera preview on supported and unsupported phones - Removes 'Warning' title in pop up message for quit app - Fixes 'Maximum history size reached' pop up for more than 50 scans received in History section. - Remove 'Warning' title in quit app pop up dialog box. - 404 request logic - Updated for languages: Chinese /Spanish /French /German /Dutch(nl) - Minor UI issues _Pls note that apps on phones Samsung Galaxy Note 5,S6,S7,OnePlus5 perform better with Cam V1 API compared to V2 and hence they are enforced to use old camera API version._ --- // File: release-notes/high-level-notes/new-app-releases-november-19 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------------- | :------- | | API | 2.8.0.AEB69B87 | v2.8.0 | | Authentication | _No change_ | v2.13.0 | | Portal | v1.20.0 | v1.19.0 | | Scantrust Enterprise (Android) | v1.7.0 | v1.6.2 | | Scantrust Enterprise (iOS) | v1.6.0 | v1.5.0 | _The Scantrust Platform is updated continuously. Release notes are created when there is a substantial workflow for feature change that is not backward compatible or when a sufficient number of small changes exist that can be summarized. These changes are accompanied by a major or minor version number change. App updates are bundled with these releases, but also have their own release notes when released separately._ ## Notable Features & Updates This list includes important and interesting changes or features. More detail change lists affecting feature changes and updates can be found in the individual component change list appendix. #### Two Factor Authentication (2FA) - Two Factor Authentication is an additional security layer to address the vulnerabilities of a standard password-only approach. - It adds another layer of security, supplementing the username and password model with a code that only a specific user has access to (typically their mobile phone). - Once a company enforces 2FA for its users, login to both Portal and STEnterprise app will require the use of time-based token generation apps (Google Authenticator, Authy etc.) - Unless a company has enforced 2FA, its upto user to use 2FA or not. #### Upload Log - In order to improve usability and efficiency of SCM-updates, new Async service was designed and implemented. After user scans codes and submits SCM data, SCM async tasks start running in background.The user can later check the status of uploads from “Upload Log”. ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Frontend v1.20.0 #### Features - Adds Two Factor Authentication(2FA) - [Site Admin] Allows STE admin to add notes while Approving or Rejecting Calibration sessions **Fixes** - Dislocated `Maps` in Dashboard Map tab - Fixed countries displayed in heat map on Dashboard Overview page - Fixes error message on archiving user - Fixes staus when recover a user - Highlights specific field if enter incorrect value while user registration or adding new Printer ### Mobile #### Android Scantrust Enterprise v1.7.0 **Features** - Adds Two Factor Authentication(2FA) - Adds [Upload Log](#Upload-Log) to log SCM uploads. _Range scan works same as before but SCM upload logs with it will not be available in the Upload Log at the moment_ - Adds support for Two factor Authentication(2FA) - Barcodes can be scanned as logistic unit while associating them to item codes **Fixes** - Fixes issue with some phones (OnePlus 6T) not able to scan in SCM Ship goods and Quick Scan #### iOS Scantrust Enterprise v1.6.0 **Features** - Adds support for Two Factor Authentication(2FA) --- // File: release-notes/high-level-notes/new-app-releases-november-23 ## Overview | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | v1.6.2 | v1.6.1 | | QR Manager | v1.3 | v1.2 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## e-label Management Tool [v1.6.2](/docs/release-notes/release-notes-e-label-management-tool-1.6.2) **- Fixed translation issues.** **- Changed "Former Yugoslav Republic of Macedonia" to "North Macedonia".** **- Changed all ingredient category to plural (except “Tirage liqueur” and “Expedition liqueur”).** **- Changed “Others” to “Other practices”.** **- Added new ingredients to the category “Preservatives”:** 1. Dimethyldicarbonate (DMDC) 2. Potassium bisulphite 3. Potassium metabisulphite 4. Sulphur dioxide 5. Sulphites **- Added new ingredients to the aromatised wine template:** 1. Other ingredients - Main ingredients - Rectified concentrated grape must 2. Other ingredients - Main ingredients - Concentrated grape must 3. Other ingredients - Main ingredients - Lemon juice concentrate 4. Other ingredients - Main ingredients - Colouring concentrate from carrot 5. Other ingredients - Main ingredients - Sugar **- Changed ingredient names in the aromatised wine template:** 1. Wine ingredients - Acidity regulators - changed “Tartaric acid” to “Tartaric acid (L(+)-)” 2. Other ingredients - Acidity regulators - changed “Tartaric acid” to “Tartaric acid (L(+)-)” 3. Wine ingredients - Acidity regulators - changed “Malic acid” to “Malic acid (D,L-; L-)” 4. Other ingredients - Acidity regulators - changed “Malic acid” to “Malic acid (D,L-; L-)” **- Added new ingredients to the wine template:** 1. Main ingredients - added “Alcohol of vine origin”. 2. Added additional wine sweetness “Medium”. **- Changed ingredient names in the wine template:** 1. Acidity regulators - changed “Malic acid” to “Malic acid (D,L-; L-)”. 2. Acidity regulators - changed “Tartaric acid” to “Tartaric acid (L(+)-)”. 3. Antioxidants - changed “Ascorbic acid” to “L ascorbic acid”. **- Added new ingredients & aromatised to the wine template:** 1. Added “Flavouring” and “Natural flavouring” to the list of ingredients. 2. The user can add custom ingredient. **- Updated the formatting for 'Flavouring(s) (...)' or 'Flavouring(s): ....' to match the style of Main Ingredients, eliminating the use of brackets and colons.** ## QR Manager [v1.3](/docs/release-notes/release-notes-portal-QRManager-1.3) #### Features 1. Updated Excel template file for bulk upload. 2. Product Information tab 2.1. Renamed columns to standardize the name on the editor and Excel: - “product” to “sku”; - “type” to “product_type”; - “bottle_size” to “net_quantity_ml”; - “sweetness” to “sugar_content”; - “vine_variety” to “grape_variety”. 2.2. Added new columns: - “name” - equivalent to the ‘Product display name’ on the editor. It is a free text field; - “bottled_in_protected_atmosphere_msg” - a dropdown selector for these 2 options: - Bottled in a protective atmosphere; - Bottling may happen in a protective atmosphere - don’t use this for aromatised wine; 2.3. Added new product types:** - Wine: - Grape must - Partially fermented grape must - Partially fermented grape must extracted from raisined grapes - Concentrated grape must - Rectified concentrated grape must - Wine vinegar - Aerated sparkling wine - obtained by adding carbon dioxide - Aerated sparkling wine - obtained by adding carbon anhydride - Aerated semi-sparkling wine - obtained by adding carbon dioxide - Aerated semi-sparkling wine - obtained by adding carbon anhydride - Aromatised wine - Aromatised wine - Wino ziolowe - Spirit - Fruit spirit 2.4. Removed product types: - Aerated sparkling wine - Aerated semi-sparkling wine 3. Ingredients tab Add a new column, 'aromatised_base_wine_name,' to declare the ingredients of the aromatized wine base. This column includes two selections. **- “Wine”** - ‘Wine’ will be filled in the Aromatised Wine Type in the editor. It indicates that the ingredients in the same row are aromatized base wine ingredients, and these ingredients will be filled in the '1. Base grapevine product ingredients' section in the editor in the aromatized wine template. **- “Not an aromatised wine”** - It indicates that the ingredients of the same row are NOT aromatized base wine ingredients, so the ingredient will be filled in the '2. Other Ingredients' section in the aromatized wine template. - This is also the selection for wine ingredients. When you upload for the wine template, you should select this value or leave the column empty. This column allows the insertion of custom values. If a custom value is entered, it will be treated similarly to 'Wine.' This value will be machine-translated. If this column is left empty, it behaves similarly to 'Not an aromatized wine,' which means the ingredients of the same row will be treated as (a) '2. Other Ingredients' in the aromatized wine template and (b) ingredients in the wine template. - Added support for entering a custom category and ingredient in the format of 'Custom category | Custom ingredient (NOTE: Custom category is not machine translatable now, so it won’t show up in the machine translation tab; Custom ingredient is translatable). 4. Nutrition tab - The user can now input values using the '\<' sign, which will be reflected as the '\<' sign in the editor. - Changed column names to show the measurement unit: - “fat” to “fat_g” - “saturated fat” to “saturates_g” - “carbohydrate” to carbohydrate_g” - “sugar” to “sugar_g” - “protein” to “protein_g” - “salt” to “salt_g” - Added a new column “show_zero_values_as_negligible”. TRUE activates the toggle on the editor, while FALSE deactivates it. 5. Added a new sheet Pictograms This sheet allows the selection of standard pictograms from our library. The mechanism for filling in value is similar to ingredients, one icon per row per SKU. - NOTE: the preview may be displayed abnormally in Excel. Implemented an upload behavior: if a value exists in the editor but is absent in the Excel sheet, the value will be removed from the e-label editor. This ensures that values and empty fields in the Excel sheet will replace corresponding entries in the editor. --- // File: release-notes/high-level-notes/new-app-releases-november-25 ## Overview | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Video Auth | v3.0.1 | v2.9.2 | | e-label Management Tool | v1.20.2 | v1.20.1 | | e-label SaaS Portal | v1.12.2 | v1.12.1 | | Android Scantrust Printer | v1.11.0 | v1.10.1 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## Video Auth [v3.0.1](/docs/release-notes/release-notes-scantrust-videoauth-3.0.1) #### Containing changes - Implemented a new unified UI: a unified scanning screen in the video authentication flow. The new design simplifies the process and provides a smoother, more consistent user experience across all devices. ## e-label Management Tool [v1.20.2](/docs/release-notes/release-notes-e-label-management-tool-1.20.2) #### Features: - Added an option to use images from the Gallery for Product. ## e-label SaaS Portal [v1.12.2](/docs/release-notes/release-notes-e-label-saas-portal-1.12.2) #### Features: - Added an option to use images from the Gallery for Product. - Fixed the background image after first product creating. - Fixed UI issue for long product name. - Fixed an issue where scans from Malta were not displayed on the Dashboard Map. - Fixed unclear display of the filter label after entering text and pressing Enter in the filter field. ## Android Scantrust Printer [v1.11.0](/docs/release-notes/release-notes-android-scantrust-printer-1.11.0) #### Features - Added Emergency QA feature An update is released to the Printer App that adds an emergency fallback workflow to ensure QA and production continuity during app outages. The new “Emergency QA” mode allows operators to scan and record QR codes when the standard QA process is unavailable, minimizing downtime and maintaining production flow. All data from emergency sessions is sent to the Authentication Team for manual review and confirmation before shipment --- // File: release-notes/high-level-notes/new-app-releases-october-19 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | API | v2.8.0 | v2.7.0 | | Authentication | v2.13.0 | v2.5.0 | | Portal | v1.19.0 | v1.18.4 | | Scantrust Enterprise (Android) | v1.6.2 | v1.6.1 | | Scantrust Enterprise (iOS) | v1.4.0 | v1.3.0 | _The Scantrust Platform is updated continuously. Release notes are created when there is a substantial workflow for feature change that is not backward compatible or when a sufficient number of small changes exist that can be summarized. These changes are accompanied by a major or minor version number change. App updates are bundled with these releases, but also have their own release notes when released separately._ ## Notable Features & Updates This list includes important and interesting changes or features. More detail change lists affecting feature changes and updates can be found in the individual component change list appendix. ### Async SCM Upload _In order to improve usability and efficiency of SCM-updates new async service was designed and implemented. It is doing all the heavy calculations in the background and allows to track the progress and results._ _The user can later check the status of CSV uploads from “CSV processing queue”._ ### SCM field Validations with Regular Expression check _For SCM uploads with STE Android app ,SCM fields will have Regular Expression validation when non-valid data is input, a warning message is prompted to remind user that there is an error, and the data is not accepted for upload._ _This feature is set up on a per-campaign basis from ST portal. In order to configure this, ST engineers need to liaise with brands to fully understand the pattern for all SCM fields set up in the campaign._ ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Frontend v1.19.0 #### Features - Portal now supports Async SCM Upload - Adds warning msg prevent update or extended_id or serial number if present in CSV file - Adds description for SCM on T&T sidebar - Adds WO id column to production report page - Adds SCM data & code data to track and trace sidebar - Adds a message when can't find the calibrated printer while creating a work order - Add countries filter on the dashboard sidebar - Cannot download work orders which have state "Completed" #### Fixes - Sorting on work order, users and admin page - Fixed filter on Codes Created to have option "All campaigns" - Possible to remove value from SCM details while editing code SCM detail from portal - Fixes issue with extended id and serial number filter on codes created page - Download for substrate specific proofsheet will be unavailable if substrate is archived - Adds lowercase to filter SKU on dashboard scan data tab - Fixes issues with graphs on the dashboard for Total Scans - Fix UI issue when adding a new substrate on Printing Equipment - [Admin]Removed clear button for Filter on session tab - [Admin]Add filters (company, equipment, status) to admin sessions tab ### Mobile #### Android Scantrust Enterprise - Added Regular Expression checks on SCM fields for SCM upload #### iOS Scantrust Enterprise #### Features - Added phone support for **iphone XR,iphone XS and iphone XS Max** - Adds new feature to upload SCM with **Range scanning** - Adds new UI for Ship Goods section #### Fixes - Issue with SCM upload of child codes not being associated to their Parent code - Only association can be done as well while doing SCM upload without selecting any SCM details - Incase of Regular scan SCM upload ,pop-up will be displayed for existing upload scans that user did not submit ### Backend API #### Features - Add Async SCM Upload Capability - 2FA device support via TOTP - STE Tasks (Customizable STE Workflow Screens) v1 - Allow STC redirect to use SCM fields - Mobile API v106: Add ste_tasks to mobile campaign details --- // File: release-notes/high-level-notes/new-app-releases-october-24 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | v1.13.2 | v1.13.1 | | Scantrust portal | v1.47.0 | v1.46.0 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## e-label Management Tool [v1.13.2](/docs/release-notes/release-notes-e-label-management-tool-1.13.2) #### Features: - Added new spirit product types: - Raisin Brandy - Topinambur spirit - Jerusalem Artichoke spirit - Caraway-flavoured spirit drink - Akvavit - Advocat - Added new ingredient categories for the spirit template: - Emulsifiers - Thickeners - Added new ingredients for the spirit template : - **Main ingredients:** Beer lees distillate, Distillate, Fresh beer distillate, Fruit distillate, Fruit lees distillate, Marc spirit distillate, Topinambur distillate, Wine lees distillate, Alcohol distillate of agricultural origin, Distilled alcohol of agricultural origin, Alcohol distillate, Distilled alcohol - **Colours:** Plain caramel - **Sweeteners:** Honey nectar, Mead nectar - **Flavouring(s):** Flavouring, Natural flavouring - Updated “Producing Year” to “Years old” for the spirit template. - Added new fields for spirit template: - Ageing/Production methods (Prodcut information section) - Company Responsible Drinking URL (Responsible Consumption section) - Brand name is hidden on landing page when it equals ‘Default Brand’. ## Scantrust portal [v1.47.0](/docs/release-notes/release-notes-portal-1.47.0) #### Features: - Added a new UI for the Custom Domain page. - Added a new code_export type on the Codes Created page, which is visible only to STE admin users. - Added support for .xls files for product CSV uploads on the Enterprise portal. - Removed features that should not be available to users on the Enterprise Basic plan. - Restricted regular users from creating SCM fields with the ‘scantrust_’ prefix. - Revamp of the Frontend Authentication Model. - Fixed the display of the SSO icon next to the user’s name in the Organization tab if their default company is SSO-enabled. - Fixed Calibration Sessions filters. --- // File: release-notes/high-level-notes/new-app-releases-september-22 ## Overview Major Upgrades highlighted here: | Component | Current | Previous | | :----------------------------- | :------ | :------- | | scantrust backend | v4.4.3 | v4.4.0 | | scantrust portal | v1.36.0 | v1.35.0 | | Scantrust Enterprise (Android) | v2.3.1 | v2.3.0 | | STE Task Editor | v1.5.0 | ------ | _The Scantrust Platform is updated continuously. Release notes are created when there is a substantial workflow for feature change that is not backward compatible or when a sufficient number of small changes exist that can be summarized. These changes are accompanied by a major or minor version number change. App updates are bundled with these releases, but also have their own release notes when released separately._ ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ### Frontend [v1.36.0](/docs/release-notes/release-notes-portal-1.36.0) - Adds template id to WO info card - Fixes product multi level JSON data - Fixes Code ID Style in WO template duplication - Fixes Back button on product CSV upload - Fixes code space URL in company info - Removes the extra slash in company info - Adds an indicator and validation for title field on registration page - Changes default http to https on all URL fields - Fixes header in product download CSV template - Fixes duplicate worlds on regions page - Fixes error message on registration page - Loads scan app name dynamically on the dashboard - Changes min zoom on regions map and dashboard map - Adds new errors to upload products by CSV - Adds default icon to scan application on dashboard page - Fixes SKU filter on dashboard ### Backend [v4.4.3](/docs/release-notes/release-notes-Backend-4.4.3) - Sends email to company owners when a SSO user first login - Adds IdP initiated SAML workflow - Pontoon translations - Adds Apple device sync feature ### Android Scantrust Enterprise [v2.3.1](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.1) - Enhances the filter feature by date on history page - Fixes UI issues on history list/details page - Fixes checking if product is existed for SCM upload feature - Updates libs: sdk 4.2.1, lib 0.0.16 - Fixes login issue which is related to switch company with SSO - Fixes URL for privacy policy page - Adds gray background to items in the history details page ### STE Task Editor [v1.5.0](/docs/release-notes/release-notes-portal-STETaskEditor-1.5.0) - Fixes rule duplicating after editing. - Adds UA language code. - Fixes widget for SCM activation status. - Allows for user to select any SCM fields --- // File: release-notes/high-level-notes/new-app-releases-september-23 ## Overview | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label SaaS Portal | v1.6 | v4.9.0 | | e-label Management Tool | v1.6.1 | v1.6 | | Scantrust portal | v1.41.2 | v4.9.0 | | Scantrust Backend | v4.11.2-r4 | v4.9.0 | | Code Ingestion | v1.1 | v4.9.0 | | Scantrust (iOS) | v4.0.2 | v3.9.0 | ## Individual Component Change List A more detailed list of the substantive changes affecting each component. ## e-label SaaS Portal [v1.6](/docs/release-notes/release-notes-e-label-saas-portal-1.6) - Added a new profile page. Sidebar navigation includes 3 tabs. The “Profile” section contains information that the user provided during registration, the company's website, password change feature, and a dropdown for changing the portal's language. The “My subscription” section includes information about the plan, its period, and e-label usage. The “Billing and history” section is accessible exclusively for paid plans. Currently, only the feature for updating card details is available. - Added a new menu with brief user information, their plan, the ability to navigate to the Profile page, change language preferences, and access the Help Center. - Added support for redirection to the company URL. If turned off, the product will still redirect to the company URL. - Fixed the end date for plans. ## e-label Management Tool [v1.6.1](/docs/release-notes/release-notes-e-label-management-tool-1.6.1) - Changed the section title 'Recommended Serving' on the landing page and 'Serving Information' on the editor to 'Consumption Unit.' - Changed 'Per Serving Size' to 'Per Portion' in the nutrition table in the editor. - Changed 'Serving(s)' to 'Portion(s)' on the landing page and in the editor. - Changed e-label logo in the footer of the landing page. - Fixed punctuation in the list of ingredients on the landing page. - Fixed translations for some terms. ## Portal Enterprise [v1.41.2](/docs/release-notes/release-notes-portal-1.41.2) - Fixed an issue with kcal and kJ updates via bulk upload. - Added intelligent redirect feature. ### Intelligent Redirect **Intelligent Redirect** is going to take Scantrust solution to the next level, which one QR code can meet many different purposes. With Intelligent Redirect, customers have unimaginable flexibility to set the QR code redirection, such as running time-limited marketing campaigns, implementing more refined redirection based on code status and authentication results, and having redirection at a per-code level, among other possibilities. **Company-Level Transition:** The Intelligent Redirect feature is moving from the campaign level to the company level. For existing companies, the rules set within the Campaign will continue to function as before. **Enabling Intelligent Redirect:** By default, Intelligent Redirect is disabled for all companies. To use this feature, it must be enabled by a STE-admin. They can also migrate redirection rules from the older version. **User roles:** Access to the Intelligent Redirect feature is limited to users with the role of Brand Admin. **Flexible Rule Application:** With this update, a rule can now be applied to one, more, or all campaigns, offering greater flexibility in rule management. Similarly, a campaign can be applied to multiple rules. **Default Redirection Rules:** The default redirection rules will remain in place, following this hierarchy: Product → Brand → Company. **Active Period Settings:** Users can set active periods for redirection rules based on the scan date. Time zones can be selected for evaluation, noting that the BE timezone is always in UTC. The portal's timezone is determined based on the user's browser settings. **App Clip/Instant App Trigger:** Rules can now include a setting that triggers the App Clip or Instant App redirect before evaluating the destinations defined in that rule. **Rule Matching Criteria:** When a rule is evaluated, it will match based on the conditions of the rule and the conditions of the destination. If both sets of conditions are met, the redirection destination specified in the rule will be used. Rule conditions include the campaign to which the rule is applied, the rule's active period, and the rule's status. **Adjustable Rule Sequence:** To fine-tune rule execution, users can adjust the sequence of rules by moving them up or down. This allows for precise control over the order in which rules are evaluated. ### App Clip **Scantrust authentication is moving towards appless!** **App Clip** is a snippet of our Scantrust Consumer app, with the authentication functionality. With App Clip available, consumers using an iPhone and Safari browser can scan Scantrust secure codes without downloading the full mobile app. Consumers can access App Clip right now if brand owners activate it in Intelligent Redirect. App Clip may also be available outside of Intelligent Redirect. The Product team should reach out to the team once the user flow is clear **Seamless Access to App Clip:** Users simply need to click "Open" on the App Clip card. **App Launch Behavior:** - If Scantrust App Installed: Clicking "Open" will directly launch the Scantrust app if it's already installed on the device. - If App Clip Installed (No Scantrust App): Clicking "Open" will open the App Clip if it's already installed on the device. - If Neither App Clip Nor Scantrust App Installed: In this scenario, clicking "Open" will initiate the download and launch of the App Clip. There are two important restrictions: - This feature requires the code to be of the SSC code type. - The scan is not an authentication scan. Please note that App Clip and banner functionality does not extend to third-party browsers or Safari Private mode. ### Billing reports Billing reports were migrated from Tableau to icCube, ushering in a host of benefits for our users. This transition brings about faster data processing and improved data visualization. Users can now access a comprehensive view of the activated code count with breakdowns by date, work order, product, and campaign. This switch enhances data representation and ensures better support for future report customizations. Billing report is available on the 'Codes Created' page. These reports are accessible to companies that have been added to the list by our Data team. ### Scan Destination Simulator Scan Destination Simulator, a powerful feature now available on the Redirection Rules page. Interactive Testing: Easily enter the QR code Extended ID and configure scanning parameters to discover precisely where your codes are redirecting. Customized Options: Users can choose additional parameters, including code status and scan location, tailoring their testing experience according to specific requirements. This feature provides a seamless and efficient way to test and optimize QR code destinations. Scan Destination Simulator [Video](https://drive.google.com/file/d/1PsD2bYuUV7GrBRFDPSB7ONkEwl4khNxy/view?pli=1) ## Scantrust Backend [v4.11.2-r4](/docs/release-notes/release-notes-Backend-4.11.2-r4) - Allowed SSO companies to archive users. ## Code Ingestion [v1.1](/docs/release-notes/release-notes-code-ingestion-1.1) Code Ingestion now supports GS1 "Digital Link" codes, offering enhanced capabilities for our users. Here are the key details: - This feature is exclusively available to companies that have enabled code spaces. - GS1 'Digital Link' code support works exclusively with SID codes. Additionally, in this release, we have added support for Override Column Names. If your file contains columns with new SCM keys that don't exist in the system, you can now easily redefine these columns. Simply enter the corresponding SCM keys to override and customize your column names according to your needs. ## Scantrust (iOS) [v4.0.2](/docs/release-notes/release-notes-ios-scantrust-4.0.2) - Enabled App Clip --- // File: release-notes/high-level-notes/new-app-releases ## August 2026 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | [1.22.1](/docs/release-notes/release-notes-e-label-management-tool-1.22.1) | [1.22.0](/docs/release-notes/release-notes-e-label-management-tool-1.22.0) | | Landing Page Editor | [3.8.1](/docs/release-notes/release-notes-landing-page-editor-3.8.1) | [3.8.0](/docs/release-notes/release-notes-landing-page-editor-3.8.0) | | Scantrust portal | [1.65.0](/docs/release-notes/release-notes-portal-1.65.0) | [1.64.0](/docs/release-notes/release-notes-portal-1.64.0) | | Portal QR manager | [1.15.5](/docs/release-notes/release-notes-portal-QRManager-1.15.5) | [1.15.4](/docs/release-notes/release-notes-portal-QRManager-1.15.4) | | Video Auth | [3.9.0](/docs/release-notes/release-notes-scantrust-videoauth-3.9.0) | [3.7.2](/docs/release-notes/release-notes-scantrust-videoauth-3.7.2) | | Photo Auth | [3.13.0](/docs/release-notes/release-notes-scantrust-photoauth-3.13.0) | [3.11.1](/docs/release-notes/release-notes-scantrust-photoauth-3.11.1) | ## July 2026 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Landing Page Editor | [3.8.0](/docs/release-notes/release-notes-landing-page-editor-3.8.0) | [3.7.2](/docs/release-notes/release-notes-scantrust-consumer-3.7.2) | | Scantrust portal | [1.64.0](/docs/release-notes/release-notes-portal-1.64.0) | [1.63.0](/docs/release-notes/release-notes-portal-1.63.0) | | Scantrust Pro | [1.4.0](/docs/release-notes/release-notes-scantrust-pro-1.4.0) | [1.3.0](/docs/release-notes/release-notes-scantrust-pro-1.3.0) | | e-label SaaS Portal | [1.14.0](/docs/release-notes/release-notes-e-label-saas-portal-1.14.0) | [1.13.0](/docs/release-notes/release-notes-e-label-saas-portal-1.13.0) | | Portal QR manager | [1.15.4](/docs/release-notes/release-notes-portal-QRManager-1.15.4) | [1.15.3](/docs/release-notes/release-notes-portal-QRManager-1.15.3) | | Video Auth | [3.7.2](/docs/release-notes/release-notes-scantrust-videoauth-3.7.2) | [3.5.2](/docs/release-notes/release-notes-scantrust-videoauth-3.5.2) | | Code Ingestion | [1.5.2](/docs/release-notes/release-notes-code-ingestion-1.5.2) | [1.5.1](/docs/release-notes/release-notes-code-ingestion-1.5.1) | ## June 2026 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust portal | [1.63.0](/docs/release-notes/release-notes-portal-1.63.0) | [1.62.2](/docs/release-notes/release-notes-portal-1.62.2) | | Scantrust Backend | [5.4.0](/docs/release-notes/release-notes-Backend-5.4.0) | [5.2.0](/docs/release-notes/release-notes-Backend-5.2.0) | | Scantrust Pro | [1.3.0](/docs/release-notes/release-notes-scantrust-pro-1.3.0) | [1.2.2](/docs/release-notes/release-notes-scantrust-pro-1.2.2) | | e-label SaaS Portal | [1.13.0](/docs/release-notes/release-notes-e-label-saas-portal-1.13.0) | [1.12.4](/docs/release-notes/release-notes-e-label-saas-portal-1.12.4) | | e-label Management Tool | [1.21.4](/docs/release-notes/release-notes-e-label-management-tool-1.21.4) | [1.21.3](/docs/release-notes/release-notes-e-label-management-tool-1.21.3) | | Portal QR manager | [1.15.3](/docs/release-notes/release-notes-portal-QRManager-1.15.3) | [1.15.2](/docs/release-notes/release-notes-portal-QRManager-1.15.2) | | Video Auth | [3.5.2](/docs/release-notes/release-notes-scantrust-videoauth-3.5.2) | [3.4.0](/docs/release-notes/release-notes-scantrust-videoauth-3.4.0) | | Android Scantrust Printer | [1.12.1](/docs/release-notes/release-notes-android-scantrust-printer-1.12.1) | [1.12.0](/docs/release-notes/release-notes-android-scantrust-printer-1.12.0) | ## May 2026 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust portal | [1.62.2](/docs/release-notes/release-notes-portal-1.62.2) | [1.62.1](/docs/release-notes/release-notes-portal-1.62.1) | | Scantrust Enterprise (Android) | [2.3.15](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.15) | [2.3.14](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.14) | | Video Auth | [3.4.0](/docs/release-notes/release-notes-scantrust-videoauth-3.4.0) | [3.3.2](/docs/release-notes/release-notes-scantrust-videoauth-3.3.2) | | Scantrust (iOS) | [5.4.0](/docs/release-notes/release-notes-ios-scantrust-5.4.0) | [5.3.0](/docs/release-notes/release-notes-ios-scantrust-5.3.0) | | Android Scantrust Printer | [1.12.0](/docs/release-notes/release-notes-android-scantrust-printer-1.12.0.md) | [1.11.0](/docs/release-notes/release-notes-android-scantrust-printer-1.11.0.md) | ## April 2026 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust portal | [1.62.1](/docs/release-notes/release-notes-portal-1.62.1) | [1.61.0](/docs/release-notes/release-notes-portal-1.61.0) | | Scantrust Backend | [5.2.0](/docs/release-notes/release-notes-Backend-5.2.0) | [5.1.2](/docs/release-notes/release-notes-Backend-5.1.2) | | Scantrust Enterprise (Android) | [2.3.14](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.14) | [2.3.13](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.13) | | Video Auth | [3.3.2](/docs/release-notes/release-notes-scantrust-videoauth-3.3.2) | [3.3.1](/docs/release-notes/release-notes-scantrust-videoauth-3.3.1) | | Photo Auth | [3.11.1](/docs/release-notes/release-notes-scantrust-photoauth-3.11.1) | [3.10.0](/docs/release-notes/release-notes-scantrust-photoauth-3.10.0) | ## March 2026 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Video Auth | [3.3.1](/docs/release-notes/release-notes-scantrust-videoauth-3.3.1) | [3.1.0](/docs/release-notes/release-notes-scantrust-videoauth-3.1.0) | | e-label Management Tool | [1.21.3](/docs/release-notes/release-notes-e-label-management-tool-1.21.3) | [1.21.2](/docs/release-notes/release-notes-e-label-management-tool-1.21.2) | | e-label SaaS Portal | [1.12.4](/docs/release-notes/release-notes-e-label-saas-portal-1.12.4) | [1.12.3](/docs/release-notes/release-notes-e-label-saas-portal-1.12.3) | | Portal QR manager | [1.15.2](/docs/release-notes/release-notes-portal-QRManager-1.15.2) | [1.15.1](/docs/release-notes/release-notes-portal-QRManager-1.15.1) | ## February 2026 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | [1.21.2](/docs/release-notes/release-notes-e-label-management-tool-1.21.2) | [1.21.1](/docs/release-notes/release-notes-e-label-management-tool-1.21.1) | | Scantrust Pro | [1.2.2](/docs/release-notes/release-notes-scantrust-pro-1.2.2) | [1.2.1](/docs/release-notes/release-notes-scantrust-pro-1.2.1) | | Android Scantrust Printer | [1.11.2](/docs/release-notes/release-notes-android-scantrust-printer-1.11.2.md) | [1.11.1](/docs/release-notes/release-notes-android-scantrust-printer-1.11.1.md) | | Video Auth | [3.1.0](/docs/release-notes/release-notes-scantrust-videoauth-3.1.0) | [3.0.4](/docs/release-notes/release-notes-scantrust-videoauth-3.0.4) | | Photo Auth | [3.10.0](/docs/release-notes/release-notes-scantrust-photoauth-3.10.0) | [3.9.1](/docs/release-notes/release-notes-scantrust-photoauth-3.9.1) | | Scantrust Enterprise (Android) | [2.3.13](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.13) | [2.3.12](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.12) | | Portal QR manager | [1.15.1](/docs/release-notes/release-notes-portal-QRManager-1.15.1) | [1.15.0](/docs/release-notes/release-notes-portal-QRManager-1.15.0) | | Scantrust portal | [1.61.0](/docs/release-notes/release-notes-portal-1.61.0) | [1.57.0](/docs/release-notes/release-notes-portal-1.57.0) | | Scantrust Consumer (STC) | [3.7.2](/docs/release-notes/release-notes-scantrust-consumer-3.7.2) | [3.7.1](/docs/release-notes/release-notes-scantrust-consumer-3.7.1) | ## January 2026 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust Consumer (STC) | [3.7.1](/docs/release-notes/release-notes-scantrust-consumer-3.7.1) | [3.7.0](/docs/release-notes/release-notes-scantrust-consumer-3.7.0) | | Scantrust (Android) | [1.16.3](/docs/release-notes/release-notes-android-scantrust-1.16.3) | [1.15.0](/docs/release-notes/release-notes-android-scantrust-1.15.0) | | Scantrust (iOS) | [5.3.0](/docs/release-notes/release-notes-ios-scantrust-5.3.0) | [5.2.0](/docs/release-notes/release-notes-ios-scantrust-5.2.0) | | Scantrust portal | [1.59.0](/docs/release-notes/release-notes-portal-1.59.0) | [1.58.0](/docs/release-notes/release-notes-portal-1.58.0) | | e-label Management Tool | [1.21.0](/docs/release-notes/release-notes-e-label-management-tool-1.21.0) | [1.20.4](/docs/release-notes/release-notes-e-label-management-tool-1.20.4) | | Video Auth | [3.0.4](/docs/release-notes/release-notes-scantrust-videoauth-3.0.4) | [3.0.3](/docs/release-notes/release-notes-scantrust-videoauth-3.0.3) | | Photo Auth | [3.9.1](/docs/release-notes/release-notes-scantrust-photoauth-3.9.1) | [3.7.0](/docs/release-notes/release-notes-scantrust-photoauth-3.7.0) | | Scantrust Enterprise (Android) | [2.3.12](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.12) | [2.3.11](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.11) | | e-label SaaS Portal | [1.12.3](/docs/release-notes/release-notes-e-label-saas-portal-1.12.3) | [1.12.2](/docs/release-notes/release-notes-e-label-saas-portal-1.12.2) | | Portal QR manager | [1.15.0](/docs/release-notes/release-notes-portal-QRManager-1.15.0) | [1.14.1](/docs/release-notes/release-notes-portal-QRManager-1.14.1) | | Scantrust Pro | [1.2.1](/docs/release-notes/release-notes-scantrust-pro-1.2.1) | [1.2.0](/docs/release-notes/release-notes-scantrust-pro-1.2.0) | ## December 2025 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | [1.20.3](/docs/release-notes/release-notes-e-label-management-tool-1.20.3) | [1.20.2](/docs/release-notes/release-notes-e-label-management-tool-1.20.2) | | Video Auth | [3.0.3](/docs/release-notes/release-notes-scantrust-videoauth-3.0.3) | [3.0.2](/docs/release-notes/release-notes-scantrust-videoauth-3.0.2) | | Scantrust Pro | [1.2.0](/docs/release-notes/release-notes-scantrust-pro-1.2.0) | [1.1.0](/docs/release-notes/release-notes-scantrust-pro-1.1.0) | | Scantrust portal | [1.57.0](/docs/release-notes/release-notes-portal-1.57.0) | [1.56.0](/docs/release-notes/release-notes-portal-1.56.0) | | Scantrust Backend | [5.1.2](/docs/release-notes/release-notes-Backend-5.1.2) | [5.0.0](/docs/release-notes/release-notes-Backend-5.0.0) | | Portal QR manager | [1.14.1](/docs/release-notes/release-notes-portal-QRManager-1.14.1) | [1.14.0](/docs/release-notes/release-notes-portal-QRManager-1.14.0) | | Scantrust Consumer (STC) | [3.6.7](/docs/release-notes/release-notes-scantrust-consumer-3.6.7) | [3.6.6](/docs/release-notes/release-notes-scantrust-consumer-3.6.6) | | Code Ingestion | [1.5.1](/docs/release-notes/release-notes-code-ingestion-1.5.1) | [1.5.0](/docs/release-notes/release-notes-code-ingestion-1.5.0) | | Scantrust (iOS) | [5.2.0](/docs/release-notes/release-notes-ios-scantrust-5.2.0) | [5.1.0](/docs/release-notes/release-notes-ios-scantrust-5.1.0) | ## November 2025 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | [1.20.2](/docs/release-notes/release-notes-e-label-management-tool-1.20.2) | [1.20.1](/docs/release-notes/release-notes-e-label-management-tool-1.20.1) | | e-label SaaS Portal | [1.12.2](/docs/release-notes/release-notes-e-label-saas-portal-1.12.2) | [1.12.1](/docs/release-notes/release-notes-e-label-saas-portal-1.12.1) | | Video Auth | [3.0.1](/docs/release-notes/release-notes-scantrust-videoauth-3.0.1) | [2.9.2](/docs/release-notes/release-notes-scantrust-videoauth-2.9.2) | | Android Scantrust Printer | [1.11.0](/docs/release-notes/release-notes-android-scantrust-printer-1.11.0.md) | [1.10.1](/docs/release-notes/release-notes-android-scantrust-printer-1.10.1.md) | ## October 2025 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Photo Auth | [3.7.0](/docs/release-notes/release-notes-scantrust-photoauth-3.7.0) | [3.6.2](/docs/release-notes/release-notes-scantrust-photoauth-3.6.2) | | Video Auth | [2.9.2](/docs/release-notes/release-notes-scantrust-videoauth-2.9.2) | [2.9.1](/docs/release-notes/release-notes-scantrust-videoauth-2.9.1) | | Scantrust (iOS) | [5.1.0](/docs/release-notes/release-notes-ios-scantrust-5.1.0) | [5.0.0](/docs/release-notes/release-notes-ios-scantrust-5.0.0) | | Scantrust portal | [1.56.0](/docs/release-notes/release-notes-portal-1.56.0) | [1.55.0](/docs/release-notes/release-notes-portal-1.55.0) | | Portal QR manager | [1.14.0](/docs/release-notes/release-notes-portal-QRManager-1.14.0) | [1.13.0](/docs/release-notes/release-notes-portal-QRManager-1.13.0) | | Scantrust Consumer (STC) | [3.6.6](/docs/release-notes/release-notes-scantrust-consumer-3.6.6) | [3.6.5](/docs/release-notes/release-notes-scantrust-consumer-3.6.5) | ## September 2025 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust Enterprise (Android) | [2.3.11](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.11) | [2.3.10](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.10) | | Scantrust Pro | [1.1.0](/docs/release-notes/release-notes-scantrust-pro-1.1.0) | [1.0.0](/docs/release-notes/release-notes-scantrust-pro-1.0.0) | | Scantrust Consumer (STC) | [3.6.5](/docs/release-notes/release-notes-scantrust-consumer-3.6.5) | [3.6.4](/docs/release-notes/release-notes-scantrust-consumer-3.6.4) | | Scantrust portal | [1.55.0](/docs/release-notes/release-notes-portal-1.55.0) | [1.54.1](/docs/release-notes/release-notes-portal-1.54.1) | | Photo Auth | [3.6.2](/docs/release-notes/release-notes-scantrust-photoauth-3.6.2) | [3.6.0](/docs/release-notes/release-notes-scantrust-photoauth-3.6.0) | | Video Auth | [2.9.1](/docs/release-notes/release-notes-scantrust-videoauth-2.9.1) | [2.9.0](/docs/release-notes/release-notes-scantrust-videoauth-2.9.0) | | e-label Management Tool | [1.20.0](/docs/release-notes/release-notes-e-label-management-tool-1.20.0) | [1.19.2](/docs/release-notes/release-notes-e-label-management-tool-1.19.2) | | e-label SaaS Portal | [1.12.0](/docs/release-notes/release-notes-e-label-saas-portal-1.12.0) | [1.11.2](/docs/release-notes/release-notes-e-label-saas-portal-1.11.2) | | Portal QR manager | [1.13.0](/docs/release-notes/release-notes-portal-QRManager-1.13.0) | [1.12.1](/docs/release-notes/release-notes-portal-QRManager-1.12.1) | ## August 2025 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Android Scantrust Printer | [1.10.1](/docs/release-notes/release-notes-android-scantrust-printer-1.10.1.md) | [1.9.1](/docs/release-notes/release-notes-android-scantrust-printer-1.9.1.md) | | Scantrust Backend | [5.0.0](/docs/release-notes/release-notes-Backend-5.0.0) | [4.28.0](/docs/release-notes/release-notes-Backend-4.28.0) | ## July 2025 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Android Scantrust Printer | [1.9.1](/docs/release-notes/release-notes-android-scantrust-printer-1.9.1.md) | [1.9.0](/docs/release-notes/release-notes-android-scantrust-printer-1.9.0.md) | | Photo Auth | [3.6.0](/docs/release-notes/release-notes-scantrust-photoauth-3.6.0) | [3.5.1](/docs/release-notes/release-notes-scantrust-photoauth-3.5.1) | | Video Auth | [2.8.1](/docs/release-notes/release-notes-scantrust-videoauth-2.8.1) | [2.7.1](/docs/release-notes/release-notes-scantrust-videoauth-2.7.1) | | Portal QR manager | [1.12.1](/docs/release-notes/release-notes-portal-QRManager-1.12.1) | [1.12.0](/docs/release-notes/release-notes-portal-QRManager-1.12.0) | | e-label Management Tool | [1.19.2](/docs/release-notes/release-notes-e-label-management-tool-1.19.2) | [1.19.1](/docs/release-notes/release-notes-e-label-management-tool-1.19.1) | | Scantrust Consumer (STC) | [3.6.4](/docs/release-notes/release-notes-scantrust-consumer-3.6.4) | [3.6.3](/docs/release-notes/release-notes-scantrust-consumer-3.6.3) | | Scantrust Backend | [4.28.0](/docs/release-notes/release-notes-Backend-4.28.0) | [4.27.0](/docs/release-notes/release-notes-Backend-4.27.0) | | e-label SaaS Portal | [1.11.2](/docs/release-notes/release-notes-e-label-saas-portal-1.11.2) | [1.11.1](/docs/release-notes/release-notes-e-label-saas-portal-1.11.1) | | Code Ingestion | [1.5.0](/docs/release-notes/release-notes-code-ingestion-1.5.0) | [1.4.0](/docs/release-notes/release-notes-code-ingestion-1.4.0) | | Scantrust portal | [1.54.1](/docs/release-notes/release-notes-portal-1.54.1) | [1.54.0](/docs/release-notes/release-notes-portal-1.54.0) | ## June 2025 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust Consumer (STC) | [3.6.3](/docs/release-notes/release-notes-scantrust-consumer-3.6.3) | [3.6.2](/docs/release-notes/release-notes-scantrust-consumer-3.6.2) | | Video Auth | [2.7.1](/docs/release-notes/release-notes-scantrust-videoauth-2.7.1) | [2.7.0](/docs/release-notes/release-notes-scantrust-videoauth-2.7.0) | | Photo Auth | [3.5.1](/docs/release-notes/release-notes-scantrust-photoauth-3.5.1) | [3.3.0](/docs/release-notes/release-notes-scantrust-photoauth-3.3.0) | | Scantrust portal | [1.54.0](/docs/release-notes/release-notes-portal-1.54.0) | [1.53.0](/docs/release-notes/release-notes-portal-1.53.0) | | e-label SaaS Portal | [1.11.1](/docs/release-notes/release-notes-e-label-saas-portal-1.11.1) | [1.11.0](/docs/release-notes/release-notes-e-label-saas-portal-1.11.0) | | e-label Management Tool | [1.19.0](/docs/release-notes/release-notes-e-label-management-tool-1.19.0) | [1.18.0](/docs/release-notes/release-notes-e-label-management-tool-1.18.0) | ## May 2025 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Android Scantrust Printer | [1.9.0](/docs/release-notes/release-notes-android-scantrust-printer-1.9.0.md) | [1.8.0](/docs/release-notes/release-notes-android-scantrust-printer-1.8.0.md) | | Video Auth | [2.6.0](/docs/release-notes/release-notes-scantrust-videoauth-2.6.0) | [2.5.5](/docs/release-notes/release-notes-scantrust-videoauth-2.5.5) | | e-label Management Tool | [1.18.0](/docs/release-notes/release-notes-e-label-management-tool-1.18.0) | [1.17.0](/docs/release-notes/release-notes-e-label-management-tool-1.17.0) | | Portal QR manager | [1.11.1](/docs/release-notes/release-notes-portal-QRManager-1.11.1) | [1.11.0](/docs/release-notes/release-notes-portal-QRManager-1.11.0) | | Scantrust (iOS) | [4.8.0](/docs/release-notes/release-notes-ios-scantrust-4.8.0) | [4.7.0](/docs/release-notes/release-notes-ios-scantrust-4.7.0) | | Scantrust Backend | [4.27.0](/docs/release-notes/release-notes-Backend-4.27.0) | [4.26.0](/docs/release-notes/release-notes-Backend-4.26.0) | | Scantrust portal | [1.52.0](/docs/release-notes/release-notes-portal-1.52.0) | [1.51.0](/docs/release-notes/release-notes-portal-1.51.0) | | Scantrust Pro | [1.0.0](/docs/release-notes/release-notes-scantrust-pro-1.0.0) | ---- | ## April 2025 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Android Scantrust Printer | [1.7.0](/docs/release-notes/release-notes-android-scantrust-printer-1.7.0.md) | [1.6.1](/docs/release-notes/release-notes-android-scantrust-printer-1.6.1.md) | | Scantrust (iOS) | [4.7.0](/docs/release-notes/release-notes-ios-scantrust-4.7.0) | [4.6.2](/docs/release-notes/release-notes-ios-scantrust-4.6.2) | | Scantrust (Android) | [1.16.1](/docs/release-notes/release-notes-android-scantrust-1.16.1) | [1.15.0](/docs/release-notes/release-notes-android-scantrust-1.15.0) | | Video Auth | [2.5.2](/docs/release-notes/release-notes-scantrust-videoauth-2.5.2) | [2.4.0](/docs/release-notes/release-notes-scantrust-videoauth-2.4.0) | | Photo Auth | [3.3.0](/docs/release-notes/release-notes-scantrust-photoauth-3.3.0) | [3.2.0](/docs/release-notes/release-notes-scantrust-photoauth-3.2.0) | | Scantrust portal | [1.51.0](/docs/release-notes/release-notes-portal-1.51.0) | [1.50.1](/docs/release-notes/release-notes-portal-1.50.1) | | Portal QR manager | [1.11.0](/docs/release-notes/release-notes-portal-QRManager-1.11.0) | [1.10.0](/docs/release-notes/release-notes-portal-QRManager-1.10.0) | | Scantrust Consumer (STC) | [3.6.0](/docs/release-notes/release-notes-scantrust-consumer-3.6.0) | [3.5.0](/docs/release-notes/release-notes-scantrust-consumer-9) | | e-label SaaS Portal | [1.11.0](/docs/release-notes/release-notes-e-label-saas-portal-1.11.0) | [1.10.1](/docs/release-notes/release-notes-e-label-saas-portal-1.10.1) | | e-label Management Tool | [1.17.0](/docs/release-notes/release-notes-e-label-management-tool-1.17.0) | [1.16.1](/docs/release-notes/release-notes-e-label-management-tool-1.16.1) | ## March 2025 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust (Android) | [1.15.0](/docs/release-notes/release-notes-android-scantrust-1.15.0) | [1.14.5](/docs/release-notes/release-notes-android-scantrust-1.14.5) | | Scantrust (iOS) | [4.6.1](/docs/release-notes/release-notes-ios-scantrust-4.6.1) | [4.6.0](/docs/release-notes/release-notes-ios-scantrust-4.6.0) | | e-label Management Tool | [1.16.1](/docs/release-notes/release-notes-e-label-management-tool-1.16.1) | [1.16.0](/docs/release-notes/release-notes-e-label-management-tool-1.16.0) | | Video Auth | [2.3.2](/docs/release-notes/release-notes-scantrust-videoauth-2.3.2) | [2.3.1](/docs/release-notes/release-notes-scantrust-videoauth-2.3.1) | | Scantrust Backend | [4.26.0](/docs/release-notes/release-notes-Backend-4.26.0) | [4.25.0](/docs/release-notes/release-notes-Backend-4.25.0) | | Photo Auth | [3.1.0](/docs/release-notes/release-notes-scantrust-photoauth-3.1.0) | [2.1.1-b](/docs/release-notes/release-notes-scantrust-photoauth-2.2.1-b) | | Scantrust portal | [1.50.1](/docs/release-notes/release-notes-portal-1.50.1) | [1.50.0](/docs/release-notes/release-notes-portal-1.50.0) | ## February 2025 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust portal | [1.50.0](/docs/release-notes/release-notes-portal-1.50.0) | [1.49.0](/docs/release-notes/release-notes-portal-1.49.0) | | Code Ingestion | [1.4.0](/docs/release-notes/release-notes-code-ingestion-1.4.0) | [1.3.0](/docs/release-notes/release-notes-code-ingestion-1.3.0) | | e-label SaaS Portal | [1.10.1](/docs/release-notes/release-notes-e-label-saas-portal-1.10.1) | [1.10.0](/docs/release-notes/release-notes-e-label-saas-portal-1.10.0) | | e-label Management Tool | [1.16.0](/docs/release-notes/release-notes-e-label-management-tool-1.16.0) | [1.15.2](/docs/release-notes/release-notes-e-label-management-tool-1.15.2) | | Video Auth | [2.0.0](/docs/release-notes/release-notes-scantrust-videoauth-2.0.0) | [1.5.0](/docs/release-notes/release-notes-scantrust-videoauth-1.5.0) | | Scantrust Backend | [4.24.0](/docs/release-notes/release-notes-Backend-4.24.0) | [4.22.0](/docs/release-notes/release-notes-Backend-4.22.0) | ## January 2025 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust (Android) | [1.14.5](/docs/release-notes/release-notes-android-scantrust-1.14.5) | [1.14.4](/docs/release-notes/release-notes-android-scantrust-1.14.4) | | Photo Auth | [2.2.1-b](/docs/release-notes/release-notes-scantrust-photoauth-2.2.1-b) | [2.2.1](/docs/release-notes/release-notes-scantrust-photoauth-2.2.1) | | Video Auth | [1.5.0](/docs/release-notes/release-notes-scantrust-videoauth-1.5.0) | ----- | | e-label Management Tool | [1.15.1](/docs/release-notes/release-notes-e-label-management-tool-1.15.1) | [1.15.0](/docs/release-notes/release-notes-e-label-management-tool-1.15.0) | | e-label SaaS Portal | [1.10.0](/docs/release-notes/release-notes-e-label-saas-portal-1.10.0) | [1.9.5](/docs/release-notes/release-notes-e-label-saas-portal-1.9.5) | | Scantrust portal | [1.49.0](/docs/release-notes/release-notes-portal-1.49.0) | [1.48.0](/docs/release-notes/release-notes-portal-1.48.0) | | Scantrust Enterprise (iOS) | [4.7.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.7.0) | [4.6.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.6.0) | | Portal QR manager | [1.10.0](/docs/release-notes/release-notes-portal-QRManager-1.10.0) | [1.9.1](/docs/release-notes/release-notes-portal-QRManager-1.9.1) | ## December 2024 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Portal QR manager | [1.9.1](/docs/release-notes/release-notes-portal-QRManager-1.9.1) | [1.9.0](/docs/release-notes/release-notes-portal-QRManager-1.9.0) | | e-label Management Tool | [1.14.0](/docs/release-notes/release-notes-e-label-management-tool-1.14.0) | [1.13.5](/docs/release-notes/release-notes-e-label-management-tool-1.13.5) | | e-label SaaS Portal | [1.9.5](/docs/release-notes/release-notes-e-label-saas-portal-1.9.5) | [1.9.4](/docs/release-notes/release-notes-e-label-saas-portal-1.9.4) | | Scantrust Backend | [4.22.0](/docs/release-notes/release-notes-Backend-4.22.0) | [4.20.0](/docs/release-notes/release-notes-Backend-4.20.0) | | Scantrust (Android) | [1.14.4](/docs/release-notes/release-notes-android-scantrust-1.14.4) | [1.14.3](/docs/release-notes/release-notes-android-scantrust-1.14.3) | | Android Scantrust Printer | [1.6.1](/docs/release-notes/release-notes-android-scantrust-printer-1.6.1.md) | [1.6.0](/docs/release-notes/release-notes-android-scantrust-printer-1.6.0.md) | | Scantrust (iOS) | [4.5.1](/docs/release-notes/release-notes-ios-scantrust-4.5.1) | [4.5.0](/docs/release-notes/release-notes-ios-scantrust-4.5.0) | | Photo Auth | [2.2.1](/docs/release-notes/release-notes-scantrust-photoauth-2.2.1) | [2.1.1](/docs/release-notes/release-notes-scantrust-photoauth-2.1.1) | ## November 2024 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | [1.13.4](/docs/release-notes/release-notes-e-label-management-tool-1.13.4) | [1.13.3](/docs/release-notes/release-notes-e-label-management-tool-1.13.3) | | Photo Auth | [2.1.1](/docs/release-notes/release-notes-scantrust-photoauth-2.1.1) | [2.1.0](/docs/release-notes/release-notes-scantrust-photoauth-2.1.0) | | Scantrust portal | [1.48.0](/docs/release-notes/release-notes-portal-1.48.0) | [1.47.0](/docs/release-notes/release-notes-portal-1.47.0) | | Portal QR manager | [1.7](/docs/release-notes/release-notes-portal-QRManager-1.7) | [1.6](/docs/release-notes/release-notes-portal-QRManager-1.6) | | Scantrust Consumer (STC) | [3.5.0](/docs/release-notes/release-notes-scantrust-consumer-9) | [3.4.2](/docs/release-notes/release-notes-scantrust-consumer-3.4.2) | | Scantrust Enterprise (Android) | [2.3.10](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.10) | [2.3.8](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.8) | | Scantrust (Android) | [1.14.3](/docs/release-notes/release-notes-android-scantrust-1.14.3) | [1.14.2](/docs/release-notes/release-notes-android-scantrust-1.14.2) | | Scantrust (iOS) | [4.4.0](/docs/release-notes/release-notes-ios-scantrust-4.4.0) | [4.3.0](/docs/release-notes/release-notes-ios-scantrust-4.3.0) | | e-label SaaS Portal | [1.9.4](/docs/release-notes/release-notes-e-label-saas-portal-1.9.4) | [1.9.3](/docs/release-notes/release-notes-e-label-saas-portal-1.9.3) | ## October 2024 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | [1.13.2](/docs/release-notes/release-notes-e-label-management-tool-1.13.2) | [1.13.1](/docs/release-notes/release-notes-e-label-management-tool-1.13.1) | | Scantrust portal | [1.47.0](/docs/release-notes/release-notes-portal-1.47.0) | [1.46.0](/docs/release-notes/release-notes-portal-1.46.0) | | Android Scantrust Printer | [1.6.0](/docs/release-notes/release-notes-android-scantrust-printer-1.6.0.md) | [1.5.7](/docs/release-notes/release-notes-android-scantrust-printer-1.5.7.md) | | Scantrust Backend | [4.20.0](/docs/release-notes/release-notes-Backend-4.20.0) | [4.16.0-r5](/docs/release-notes/release-notes-Backend-4.16.0-r5) | ## September 2024 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | [1.13.1](/docs/release-notes/release-notes-e-label-management-tool-1.13.1) | [1.13](/docs/release-notes/release-notes-u-label-management-tool-1.13) | | Scantrust portal | [1.46.0](/docs/release-notes/release-notes-portal-1.46.0) | [1.45.1](/docs/release-notes/release-notes-portal-1.45.1) | | e-label SaaS Portal | [1.9.3](/docs/release-notes/release-notes-e-label-saas-portal-1.9.3) | [1.9.2](/docs/release-notes/release-notes-e-label-saas-portal-1.9.2) | ## August 2024 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | [1.13](/docs/release-notes/release-notes-u-label-management-tool-1.13) | [1.12](/docs/release-notes/release-notes-e-label-management-tool-1.12) | | Scantrust portal | [1.45.1](/docs/release-notes/release-notes-portal-1.45.1) | [1.45.0](/docs/release-notes/release-notes-portal-1.45.0) | ## July 2024 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Portal QR manager | [1.6](/docs/release-notes/release-notes-portal-QRManager-1.6) | [1.5.1](/docs/release-notes/release-notes-portal-QRManager-1.5.1) | | e-label SaaS Portal | [1.9.2](/docs/release-notes/release-notes-e-label-saas-portal-1.9.2) | [1.9.1](/docs/release-notes/release-notes-e-label-saas-portal-1.9.1) | | Scantrust (Android) | [1.14.1](/docs/release-notes/release-notes-android-scantrust-1.14.1) | [1.13.4](/docs/release-notes/release-notes-android-scantrust-1.13.4) | ## June 2024 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust (iOS) | [4.1.1](/docs/release-notes/release-notes-ios-scantrust-4.1.1) | [4.1.0](/docs/release-notes/release-notes-ios-scantrust-4.1.0) | | Android Scantrust Printer | [1.5.7](/docs/release-notes/release-notes-android-scantrust-printer-1.5.7.md) | [1.5.5](/docs/release-notes/release-notes-android-scantrust-printer-1.5.5.md) | | Scantrust (Android) | [1.13.4](/docs/release-notes/release-notes-android-scantrust-1.13.4) | [1.13.3](/docs/release-notes/release-notes-android-scantrust-1.13.3) | ## May 2024 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust Enterprise (Android) | [2.3.8](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.8) | [2.3.7](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.7) | | Portal QR manager | [1.5.1](/docs/release-notes/release-notes-portal-QRManager-1.5.1) | [1.5](/docs/release-notes/release-notes-portal-QRManager-1.5) | | e-label Management Tool | [1.12](/docs/release-notes/release-notes-e-label-management-tool-1.12) | [1.11](/docs/release-notes/release-notes-u-label-management-tool-1.11) | | Scantrust portal | [1.45.0](/docs/release-notes/release-notes-portal-1.45.0) | [1.44.0](/docs/release-notes/release-notes-portal-1.44.0) | | Scantrust (iOS) | [4.1.0](/docs/release-notes/release-notes-ios-scantrust-4.1.0) | [4.0.5](/docs/release-notes/release-notes-ios-scantrust-4.0.5) | ## April 2024 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust portal | [1.44.0](/docs/release-notes/release-notes-portal-1.44.0) | [1.43.2](/docs/release-notes/release-notes-portal-1.43.2) | | Portal QR manager | [1.5](/docs/release-notes/release-notes-portal-QRManager-1.5) | [1.4](/docs/release-notes/release-notes-portal-QRManager-1.4) | | e-label Management Tool | [1.11](/docs/release-notes/release-notes-u-label-management-tool-1.11) | [1.10.1](/docs/release-notes/release-notes-e-label-management-tool-1.10.1) | | Scantrust Backend | [4.16.0-r5](/docs/release-notes/release-notes-Backend-4.16.0-r5) | [4.16.0](/docs/release-notes/release-notes-Backend-4.16.0) | | Android Scantrust Printer | [1.5.5](/docs/release-notes/release-notes-android-scantrust-printer-1.5.5.md) | [1.5.4](/docs/release-notes/release-notes-android-scantrust-printer-1.5.4.md) | ## March 2024 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | [1.10.1](/docs/release-notes/release-notes-e-label-management-tool-1.10.1) | [1.10](/docs/release-notes/release-notes-e-label-management-tool-1.10) | | e-label SaaS Portal | [1.9.1](/docs/release-notes/release-notes-e-label-saas-portal-1.9.1) | [1.9](/docs/release-notes/release-notes-e-label-saas-portal-1.9) | | Scantrust portal | [1.43.2](/docs/release-notes/release-notes-portal-1.43.2) | [1.42.3](/docs/release-notes/release-notes-portal-1.42.3) | | Scantrust Backend | [4.16.0](/docs/release-notes/release-notes-Backend-4.16.0) | [4.15.0](/docs/release-notes/release-notes-Backend-4.15.0) | | Scantrust Enterprise (iOS) | [4.6.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.6.0) | [4.5.3](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.5.3) | ## February 2024 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | [1.9](/docs/release-notes/release-notes-e-label-management-tool-1.9) | [1.8](/docs/release-notes/release-notes-e-label-management-tool-1.8) | | e-label SaaS Portal | [1.8](/docs/release-notes/release-notes-e-label-saas-portal-1.8) | [1.7](/docs/release-notes/release-notes-e-label-saas-portal-1.7) | | Portal QR manager | [1.4](/docs/release-notes/release-notes-portal-QRManager-1.4) | [1.3](/docs/release-notes/release-notes-portal-QRManager-1.3) | | Scantrust portal | [1.42.3](/docs/release-notes/release-notes-portal-1.42.3) | [1.42.1](/docs/release-notes/release-notes-portal-1.42.1) | ## January 2024 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | [1.8](/docs/release-notes/release-notes-e-label-management-tool-1.8) | [1.7](/docs/release-notes/release-notes-e-label-management-tool-1.7) | | Scantrust Enterprise (iOS) | [4.5.3](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.5.3) | [4.5.2](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.5.2) | | e-label SaaS Portal | [1.7](/docs/release-notes/release-notes-e-label-saas-portal-1.7) | [1.6](/docs/release-notes/release-notes-e-label-saas-portal-1.6) | | Scantrust (iOS) | [4.0.5](/docs/release-notes/release-notes-ios-scantrust-4.0.5) | [4.0.3](/docs/release-notes/release-notes-ios-scantrust-4.0.3) | ## December 2023 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust portal | [1.42.1](/docs/release-notes/release-notes-portal-1.42.1) | [1.42.0](/docs/release-notes/release-notes-portal-1.42.0) | | e-label Management Tool | [1.7](/docs/release-notes/release-notes-e-label-management-tool-1.7) | [1.6.2](/docs/release-notes/release-notes-e-label-management-tool-1.6.2) | | Scantrust Backend | [4.15.0](/docs/release-notes/release-notes-Backend-4.15.0) | [4.14.0](/docs/release-notes/release-notes-Backend-4.14.0) | | Scantrust Enterprise (iOS) | [4.5.2](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.5.2) | [4.5.1](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.5.1) | | Scantrust Enterprise (Android) | [2.3.7](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.7) | [2.3.6](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.6) | ## November 2023 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust portal | [1.41.3](/docs/release-notes/release-notes-portal-1.41.3) | [1.41.2](/docs/release-notes/release-notes-portal-1.41.2) | | e-label Management Tool | [1.6.2](/docs/release-notes/release-notes-e-label-management-tool-1.6.2) | [1.6.1](/docs/release-notes/release-notes-e-label-management-tool-1.6.1) | | Portal QR manager | [1.3](/docs/release-notes/release-notes-portal-QRManager-1.3) | [1.2](/docs/release-notes/release-notes-portal-QRManager-1.2) | | Scantrust Task Editor | [1.6.1](/docs/release-notes/release-notes-portal-STETaskEditor-1.6.1) | [1.6.0](/docs/release-notes/release-notes-portal-STETaskEditor-1.6.0) | | Scantrust Backend | [4.13.0](/docs/release-notes/release-notes-Backend-4.13.0) | [4.11.2-r4](/docs/release-notes/release-notes-Backend-4.11.2-r4) | | Scantrust Enterprise (Android) | [2.3.6](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.6) | [2.3.5](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.5) | | Scantrust Printer (Android) | [1.5.4](/docs/release-notes/release-notes-android-scantrust-printer-1.5.4) | [1.5.3](/docs/release-notes/release-notes-android-scantrust-printer-1.5.3) | | Scantrust (Android) | [1.13.3](/docs/release-notes/release-notes-android-scantrust-1.13.3) | [1.13.2](/docs/release-notes/release-notes-android-scantrust-1.13.2) | ## October 2023 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust (iOS) | [4.0.3](/docs/release-notes/release-notes-ios-scantrust-4.0.3) | [4.0.2](/docs/release-notes/release-notes-ios-scantrust-4.0.2) | | Scantrust (Android) | [1.13.2](/docs/release-notes/release-notes-android-scantrust-1.13.2) | [1.13.1](/docs/release-notes/release-notes-android-scantrust-1.13.1) | | Code Ingestion | [1.2](/docs/release-notes/release-notes-code-ingestion-1.2) | [1.1](/docs/release-notes/release-notes-code-ingestion-1.1) | | Scantrust Enterprise (iOS) | [4.5.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.5.0) | [4.4.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.4.0) | ## September 2023 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | [1.6.1](/docs/release-notes/release-notes-e-label-management-tool-1.6.1) | [1.6](/docs/release-notes/release-notes-e-label-management-tool-1.6) | | e-label SaaS Portal | [1.6](/docs/release-notes/release-notes-e-label-saas-portal-1.6) | [1.5](/docs/release-notes/release-notes-e-label-saas-portal-1.5) | | Scantrust portal | [1.41.2](/docs/release-notes/release-notes-portal-1.41.2) | [1.41.1](/docs/release-notes/release-notes-portal-1.41.1) | | Scantrust Backend | [4.11.2-r4](/docs/release-notes/release-notes-Backend-4.11.2-r4) | [4.10](/docs/release-notes/release-notes-Backend-4.10) | | Code Ingestion | [1.1](/docs/release-notes/release-notes-code-ingestion-1.1) | [1.0](/docs/release-notes/release-notes-code-ingestion-1.0) | | Scantrust (iOS) | [4.0.2](/docs/release-notes/release-notes-ios-scantrust-4.0.2) | [3.9.0](/docs/release-notes/release-notes-ios-scantrust-3.9.0) | ## August 2023 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Code Ingestion | [1.0](/docs/release-notes/release-notes-code-ingestion-1.0) | ----- | | Scantrust Backend | [4.10](/docs/release-notes/release-notes-Backend-4.10) | [4.9.0](/docs/release-notes/release-notes-Backend-4.9.0) | ## June 2023 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label Management Tool | [1.4](/docs/release-notes/release-notes-e-label-management-tool-1.4) | [1.3.2](/docs/release-notes/release-notes-e-label-management-tool-1.3.2) | | e-label SaaS Portal | [1.4](/docs/release-notes/release-notes-e-label-saas-portal-1.4) | [1.3.1](/docs/release-notes/release-notes-e-label-saas-portal-1.3.1) | | Scantrust portal | [1.40.0](/docs/release-notes/release-notes-portal-1.40.0) | [1.39.10](/docs/release-notes/release-notes-portal-1.39.10) | | Scantrust Backend | [4.9.0](/docs/release-notes/release-notes-Backend-4.9.0) | [4.7.0-r3](/docs/release-notes/release-notes-Backend-4.7.0-r3) | | Portal QR manager | [1.1](/docs/release-notes/release-notes-portal-QRManager-1.1) | [1.0](/docs/release-notes/release-notes-portal-QRManager-1.0) | ## May 2023 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust portal | [1.39.10](/docs/release-notes/release-notes-portal-1.39.10) | [1.39.9](/docs/release-notes/release-notes-portal-1.39.9) | | Scantrust Backend | [4.7.0-r3](/docs/release-notes/release-notes-Backend-4.7.0-r3) | [4.7.0-r2](/docs/release-notes/release-notes-Backend-4.7.0-r2) | | Scantrust (iOS) | [3.9.0](/docs/release-notes/release-notes-ios-scantrust-3.9.0) | [3.8.0](/docs/release-notes/release-notes-ios-scantrust-3.8.0) | | Scantrust (Android) | [1.13.1](/docs/release-notes/release-notes-android-scantrust-1.13.1) | [1.12.14](/docs/release-notes/release-notes-android-scantrust-1.12.14) | | Scantrust Enterprise (iOS) | [4.3.1](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.3.1) | [4.3.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.3.0) | | Scantrust Enterprise (Android) | [2.3.5](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.5) | [2.3.4](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.4) | | e-label SaaS Portal | [1.3.1](/docs/release-notes/release-notes-e-label-saas-portal-1.3.1) | [1.3](/docs/release-notes/release-notes-e-label-saas-portal-1.3) | | e-label Management Tool | [1.3.2](/docs/release-notes/release-notes-e-label-management-tool-1.3.2) | [1.3.1](/docs/release-notes/release-notes-e-label-management-tool-1.3.1) | ## March 2023 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label SaaS Portal | [1.2](/docs/release-notes/release-notes-e-label-saas-portal-1.2) | [1.1](/docs/release-notes/release-notes-e-label-saas-portal-1.1) | | e-label Management Tool | [1.2](/docs/release-notes/release-notes-e-label-management-tool-1.2) | [1.1](/docs/release-notes/release-notes-e-label-management-tool-1.1) | ## February 2023 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | e-label SaaS Portal | [1.0](/docs/release-notes/release-notes-e-label-saas-portal-1.0) | ----- | | e-label Management Tool | [1.0](/docs/release-notes/release-notes-e-label-management-tool-1.0) | ----- | | Scantrust portal | [1.38.0](/docs/release-notes/release-notes-portal-1.38.0) | [1.37.0](/docs/release-notes/release-notes-portal-1.37.0) | | Scantrust Backend | [4.5.1](/docs/release-notes/release-notes-Backend-4.5.1) | [4.5.0](/docs/release-notes/release-notes-Backend-4.5.0) | ## December 2022 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust Task Editor | [1.6.0](/docs/release-notes/release-notes-portal-STETaskEditor-1.6.0) | [1.5.0](/docs/release-notes/release-notes-portal-STETaskEditor-1.5.0) | | Scantrust Backend | [4.5.0](/docs/release-notes/release-notes-Backend-4.5.0) | [4.4.5](/docs/release-notes/release-notes-Backend-4.4.5) | | Scantrust Enterprise (iOS) | [4.3.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.3.0) | [4.2.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.2.0) | | Scantrust Enterprise (Android) | [2.3.4](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.4) | [2.3.3](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.3) | ## November 2022 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust portal | [1.37.0](/docs/release-notes/release-notes-portal-1.37.0) | [1.36.0](/docs/release-notes/release-notes-portal-1.36.0) | | Scantrust Backend | [4.4.5](/docs/release-notes/release-notes-Backend-4.4.5) | [4.4.4](/docs/release-notes/release-notes-Backend-4.4.4) | | Scantrust (iOS) | [3.8.0](/docs/release-notes/release-notes-ios-scantrust-3.8.0) | [3.6.0](/docs/release-notes/release-notes-ios-scantrust-3.6.0) | | Scantrust (Android) | [1.12.14](/docs/release-notes/release-notes-android-scantrust-1.12.6) | [1.12.13](/docs/release-notes/release-notes-android-scantrust-1.12.13) | ## October 2022 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust Backend | [4.4.4](/docs/release-notes/release-notes-Backend-4.4.4) | [4.4.3](/docs/release-notes/release-notes-Backend-4.4.3) | | Scantrust Enterprise (Android) | [2.3.3](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.3) | [2.3.1](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.1) | ## September 2022 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust Backend | [4.4.3](/docs/release-notes/release-notes-Backend-4.4.3) | [4.4.0](/docs/release-notes/release-notes-Backend-4.4.0) | | Scantrust portal | [1.36.0](/docs/release-notes/release-notes-portal-1.36.0) | [1.35.0](/docs/release-notes/release-notes-portal-1.35.0) | | Scantrust Enterprise (Android) | [2.3.1](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.1) | [2.3.0](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.0) | ## July 2022 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust Backend | [4.3.1](/docs/release-notes/release-notes-Backend-4.3.1) | [4.3.0](/docs/release-notes/release-notes-Backend-4.3.0) | | Scantrust portal | [1.35.0](/docs/release-notes/release-notes-portal-1.35.0) | [1.34.0](/docs/release-notes/release-notes-portal-1.34.0) | | Scantrust Enterprise (Android) | [2.3.0](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.0) | [2.2.6](/docs/release-notes/release-notes-android-scantrust-enterprise-2.2.6) | | Scantrust Enterprise (iOS) | [4.1.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.1.0) | [3.5.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.5.0) | ## January 2022 Release | Component | Current | Previous | | :----------------------------- | :---------------------------------------------------------------------------- | :---------------------------------------------------------------------------- | | scantrust backend | [4.1.0](/docs/release-notes/release-notes-Backend-4.1.0) | [4.0.0](/docs/release-notes/release-notes-Backend-4.0.0) | | scantrust portal | [1.31.0](/docs/release-notes/release-notes-portal-1.31.0) | [1.30.0](/docs/release-notes/release-notes-portal-1.30.0) | | Authentication | 2.23.0 | ----- | | Scantrust Enterprise (Android) | [2.2.6](/docs/release-notes/release-notes-android-scantrust-enterprise-2.2.6) | [2.2.5](/docs/release-notes/release-notes-android-scantrust-enterprise-2.2.5) | | Scantrust Enterprise (iOS) | [3.5.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.5.0) | [3.4.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.4.0) | | Scantrust (Android) | [1.12.6](/docs/release-notes/release-notes-android-scantrust-1.12.6) | [1.12.5](/docs/release-notes/release-notes-android-scantrust-1.12.5) | | Scantrust (iOS) | [3.6.0](/docs/release-notes/release-notes-ios-scantrust-3.6.0) | [3.6.0](/docs/release-notes/release-notes-ios-scantrust-3.6.0) | | Scantrust Printer (Android) | [1.3.1](/docs/release-notes/release-notes-android-scantrust-printer-1.3.1) | [1.3.0](/docs/release-notes/release-notes-android-scantrust-printer-1.3.0) | | Photo Authentication | [1.0.0](/docs/release-notes/release-notes-scantrust-photoauth-1.0.0) | - - - - | ## December 2021 Release | Component | Current | Previous | | :----------------------------- | :---------------------------------------------------------------------------- | :---------------------------------------------------------------------------- | | scantrust backend | 4.0.0 | [3.9.2](/docs/release-notes/release-notes-Backend-3.9.2) | | scantrust portal | [1.30.0](/docs/release-notes/release-notes-portal-1.30.0) | [1.29.5](/docs/release-notes/release-notes-portal-1.29.5) | | Authentication | 2.23.0 | ----- | | Scantrust Enterprise (Android) | [2.2.5](/docs/release-notes/release-notes-android-scantrust-enterprise-2.2.5) | [2.2.4](/docs/release-notes/release-notes-android-scantrust-enterprise-2.2.4) | | Scantrust Enterprise (iOS) | [3.4.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.4.0) | [3.3.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.3.0) | | Scantrust (Android) | [1.12.6](/docs/release-notes/release-notes-android-scantrust-1.12.6) | [1.12.5](/docs/release-notes/release-notes-android-scantrust-1.12.5) | | Scantrust (iOS) | [3.6.0](/docs/release-notes/release-notes-ios-scantrust-3.6.0) | [3.5.0](/docs/release-notes/release-notes-ios-scantrust-3.5.0) | | Scantrust Printer (Android) | [1.3.0](/docs/release-notes/release-notes-android-scantrust-printer-1.3.0) | [1.2.3](/docs/release-notes/release-notes-android-scantrust-printer-1.2.3) | | Photo Authentication | [1.0.0](/docs/release-notes/release-notes-scantrust-photoauth-1.0.0) | - - - - | ## December 2021 Release | Component | Current | Previous | | :----------------------------- | :---------------------------------------------------------------------------- | :---------------------------------------------------------------------------- | | scantrust backend | 4.0.0 | [3.9.2](/docs/release-notes/release-notes-Backend-3.9.2) | | scantrust portal | [1.30.0](/docs/release-notes/release-notes-portal-1.30.0) | [1.29.5](/docs/release-notes/release-notes-portal-1.29.5) | | Authentication | 2.23.0 | ----- | | Scantrust Enterprise (Android) | [2.2.5](/docs/release-notes/release-notes-android-scantrust-enterprise-2.2.5) | [2.2.4](/docs/release-notes/release-notes-android-scantrust-enterprise-2.2.4) | | Scantrust Enterprise (iOS) | [3.4.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.4.0) | [3.3.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.3.0) | | Scantrust (Android) | [1.12.6](/docs/release-notes/release-notes-android-scantrust-1.12.6) | [1.12.5](/docs/release-notes/release-notes-android-scantrust-1.12.5) | | Scantrust (iOS) | [3.6.0](/docs/release-notes/release-notes-ios-scantrust-3.6.0) | [3.5.0](/docs/release-notes/release-notes-ios-scantrust-3.5.0) | | Scantrust Printer (Android) | [1.3.0](/docs/release-notes/release-notes-android-scantrust-printer-1.3.0) | [1.2.3](/docs/release-notes/release-notes-android-scantrust-printer-1.2.3) | | Photo Authentication | [1.0.0](/docs/release-notes/release-notes-scantrust-photoauth-1.0.0) | - - - - | ## August 2021 Release | Component | Current | Previous | | :----------------------------- | :---------------------------------------------------------------------------- | :---------------------------------------------------------------------------- | | Backend | [3.9.0](/docs/release-notes/release-notes-Backend-3.9.0) | [3.8.0](/docs/release-notes/release-notes-Backend-3.8.0) | | Portal | [1.29.1](/docs/release-notes/release-notes-portal-1.29.1) | [1.28.0](/docs/release-notes/release-notes-portal-1.28.0) | | Scantrust (Android) | _No change_ | [1.12.2](/docs/release-notes/release-notes-android-scantrust-1.12.2) | | Scantrust Enterprise (Android) | [2.2.2](/docs/release-notes/release-notes-android-scantrust-enterprise-2.2.2) | [2.2.1](/docs/release-notes/release-notes-android-scantrust-enterprise-2.2.1) | | Scantrust Printer (Android) | _No change_ | [1.2.0](/docs/release-notes/release-notes-android-scantrust-printer-1.2.0) | | Scantrust (iOS) | _No change_ | [3.3.0](/docs/release-notes/release-notes-ios-scantrust-3.3.0) | | Scantrust Enterprise (iOS) | [3.2.1](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.2.0) | [3.2.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.2.0) | ## July 2021 Release | Component | Current | Previous | | :----------------------------- | :---------------------------------------------------------------------------- | :---------------------------------------------------------------------------- | | Backend | [3.8.0](/docs/release-notes/release-notes-Backend-3.8.0) | [3.7.0](/docs/release-notes/release-notes-Backend-3.7.0) | | Portal | [1.28.0](/docs/release-notes/release-notes-portal-1.28.0) | [1.27.0](/docs/release-notes/release-notes-portal-1.27.0) | | Scantrust (Android) | _No change_ | [1.12.2](/docs/release-notes/release-notes-android-scantrust-1.12.2) | | Scantrust Enterprise (Android) | [2.2.1](/docs/release-notes/release-notes-android-scantrust-enterprise-2.2.1) | [2.1.4](/docs/release-notes/release-notes-android-scantrust-enterprise-2.1.4) | | Scantrust Printer (Android) | _No change_ | [1.2.0](/docs/release-notes/release-notes-android-scantrust-printer-1.2.0) | | Scantrust (iOS) | _No change_ | [3.3.0](/docs/release-notes/release-notes-ios-scantrust-3.3.0) | | Scantrust Enterprise (iOS) | [3.2.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.2.0) | [3.1.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.1.0) | ## June 2021 Release | Component | Current | Previous | | :----------------------------- | :---------------------------------------------------------------------------- | :---------------------------------------------------------------------------- | | Backend | [3.7.0](/docs/release-notes/release-notes-Backend-3.7.0) | 3.6.1 | | Portal | [1.27.0](/docs/release-notes/release-notes-portal-1.27.0) | 1.26.3 | | Scantrust (Android) | _No change_ | [1.12.2](/docs/release-notes/release-notes-android-scantrust-1.12.2) | | Scantrust Enterprise (Android) | [2.1.4](/docs/release-notes/release-notes-android-scantrust-enterprise-2.1.4) | [2.1.3](/docs/release-notes/release-notes-android-scantrust-enterprise-2.1.3) | | Scantrust Printer (Android) | [1.2.0](/docs/release-notes/release-notes-android-scantrust-printer-1.2.0) | [1.1.0](/docs/release-notes/release-notes-android-scantrust-printer-1.1.0) | | Scantrust (iOS) | _No change_ | [3.3.0](/docs/release-notes/release-notes-ios-scantrust-3.3.0) | | Scantrust Enterprise (iOS) | _No change_ | [3.1.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.1.0) | ## May 2021 Release | Component | Current | Previous | | :----------------------------- | :---------------------------------------------------------------------------- | :---------------------------------------------------------------------------- | | Backend | [3.5.1](/docs/release-notes/release-notes-Backend-3.5.1) | 3.5.0 | | Portal | [1.26.2](/docs/release-notes/release-notes-portal-1.26.2) | 1.26.1 | | Scantrust (Android) | [1.12.2](/docs/release-notes/release-notes-android-scantrust-1.12.2) | 1.12.1 | | Scantrust Enterprise (Android) | [2.1.1](/docs/release-notes/release-notes-android-scantrust-enterprise-2.1.1) | [2.1.0](/docs/release-notes/release-notes-android-scantrust-enterprise-2.1.0) | | Scantrust (iOS) | [3.2.0](/docs/release-notes/release-notes-ios-scantrust-3.2.0) | [3.1.0](/docs/release-notes/release-notes-ios-scantrust-3.1.0) | | Scantrust Enterprise (iOS) | [3.1.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.1.0) | [3.0.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.0.0) | ## January 2021 Release | Component | Current | Previous | | :----------------------------- | :------ | :------- | | Scantrust Enterprise (Android) | 2.0.9 | 2.0.8 | | Scantrust Enterprise (iOS) | 2.3.1 | 2.1.1 | | Scantrust portal | 1.25.5 | 1.25.3 | ## [December 2020 Release](/docs/release-notes/high-level-notes/new-app-releases-december-20) | Component | Current | Previous | | :---------------- | :------ | :------- | | scantrust portal | 1.25.3 | 1.25.2 | | scantrust backend | 3.3.0 | 3.2.0 | ## [June 2020 Release](/docs/release-notes/high-level-notes/new-app-releases-june-20) | Component | Current | Previous | | :------------------ | :------ | :------- | | scantrust portal | 1.24.0 | 1.23.2 | | Scantrust (Android) | 2.0.0 | 1.9.1 | | Scantrust (iOS) | 2.0.0 | 1.7.0 | ## [April 2020 Release](/docs/release-notes/high-level-notes/new-app-releases-april-20) | Component | Current | Previous | | :------------------ | :------ | :------- | | API | 3.0.2 | 2.10.1 | | Portal | 1.23.2 | 1.21.1 | | Scantrust (Android) | 1.10.2 | 1.10.1 | ## [January 2020 Release](/docs/release-notes/high-level-notes/new-app-releases-january-20) | Component | Current | Previous | | :----------------------------- | :------ | :------- | | API | 2.10.1 | 2.9.0 | | Portal | 1.21.1 | 1.20.0 | | Scantrust Enterprise (Android) | 1.8.1 | 1.8.0 | | Scantrust (Android) | 1.10.1 | 1.10.0 | | Scantrust Enterprise (iOS) | 1.7.0 | 1.6.0 | | Scantrust (iOS) | 2.5.2 | 2.5.0 | ## [November 2019 Release](/docs/release-notes/high-level-notes/new-app-releases-november-19) | Component | Current | Previous | | :----------------------------- | :------------- | :------- | | API | 2.8.0.AEB69B87 | 2.8.0 | | Authentication | _No change_ | 2.13.0 | | Portal | 1.20.0 | 1.19.0 | | Scantrust Enterprise (Android) | 1.7.0 | 1.6.2 | | Scantrust Enterprise (iOS) | 1.6.0 | 1.5.0 | ## [October 2019 Release](/docs/release-notes/high-level-notes/new-app-releases-october-19) | Component | Current | Previous | | :----------------------------- | :------ | :------- | | API | 2.8.0 | 2.7.0 | | Authentication | 2.13.0 | 2.5.0 | | Portal | 1.19.0 | 1.18.4 | | Scantrust Enterprise (Android) | 1.6.2 | 1.6.1 | | Scantrust Enterprise (iOS) | 1.4.0 | 1.3.0 | ## [June 2019 Release](/docs/release-notes/high-level-notes/new-app-releases-june-19) | Component | Current | Previous | | :----------------------------- | :-------- | :------- | | API | No Change | v2.7.0 | | Authentication | 2.9.0 | 2.5.0 | | Portal | 1.18.4 | 1.18.3 | | Scantrust (Android) | 1.8.0 | 1.7.0 | | Scantrust Enterprise (Android) | 1.5.3 | 1.5.1 | | Scantrust (iOS) | 2.5.0 | 2.4.0 | ## [May 2019 Release](/docs/release-notes/high-level-notes/new-app-releases-may-19) | Component | Current | Previous | | :----------------------------- | :-------- | :------- | | API | 2.7.0 | 2.6.0 | | Authentication | -- | 2.5.0 | | Portal | No change | 1.18.3 | | Scantrust Enterprise (Android) | 1.5.1 | 1.5.0 | ## [March 2019 Release](/docs/release-notes/high-level-notes/new-app-releases-march-19) | Component | Current | Previous | | :----------------------------- | :-------- | :------- | | API | 2.6.0 | 2.5.6 | | Authentication | No change | 2.5.0 | | Portal | No change | 1.18.2 | | Scantrust Enterprise (Android) | 1.5.0 | 1.4.1 | | Scantrust Enterprise (iOS) | 1.3.0 | 1.2.0 | ## February 2019 Release | Component | Current | Previous | | :----------------------------- | :-------- | :------- | | API | 2.5.6 | 2.5.2 | | Authentication | No change | 2.5.0 | | Portal | 1.18.2 | 1.18.1 | | Scantrust Enterprise (Android) | 1.4.1 | 1.4.0 | ## [January 2019 Release](/docs/release-notes/high-level-notes/new-app-releases-january-19) | Component | Current | Previous | | :----------------------------- | :------ | :------- | | API | 2.5.2 | 2.5.2 | | Authentication | 2.5.0 | 2.4.0 | | Portal | 1.18.1 | 1.18.0 | | Scantrust Enterprise (Android) | 1.4.0 | 1.3.0 | ## [November 2018 Release](/docs/release-notes/high-level-notes/new-app-releases-november-18) | Component | Current | Previous | | :------------------ | :-------- | :------- | | API | 2.5.2 | 2.5.0 | | Authentication | No change | 2.4.0 | | Portal | 1.18.0 | 1.17.2 | | ST Enterprise (iOS) | No change | 1.2.0 | | Scantrust (Android) | 1.6.2 | 1.5.1 | | Scantrust (iOS) | No change | 2.4.1 | ## [May 2018 Release](/docs/release-notes/high-level-notes/new-app-releases-may-18) | Component | Current | Previous | | :---------------------- | :------ | :------- | | API | 2.3.3 | 2.3.1 | | Authentication | 2.3.1 | 2.3.1 | | Portal | 1.16.5 | 1.16.3 | | ST Enterprise (iOS) | 1.1.0 | 1.0.0 | | ST Enterprise (Android) | 1.0.1 | 1.0.0 | --- // File: release-notes/release-notes-Backend-2.10.1 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 2.10.1 | 17-01-2020 | ## Containing Changes - Mobile API v105(minimum) - STE Tasks v2 - JSON Schema - Max scan count alert & auto blacklisting - Mobile version 108 (workorder list has blur_threshold) --- // File: release-notes/release-notes-Backend-2.3.3 | Platform | Version | Date | | :------- | :------ | :------- | | Backend | 2.3.3 | 5-3-2018 | ## Containing changes - Add inline scan support, endpoints and scan types. - Updated dependencies for increased security and features - Added extra searches and filters in multiple endpoints - Updated ghost scan processing - Add datadog logging features - Add device compatibility endpoint - Improved admin pages for substrates - Equipment made optional for SID workorders - Remove unused Demo user role - Increase security by optimizing various permissions and access roles - Fix HTML escaping in email subjects - Optimized certain queries that took too long - Fix proofsheet layout (technology field overlap) - Fixes related to IP lookups --- // File: release-notes/release-notes-Backend-2.5.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 2.5.0 | 25-09-2018 | ## Containing changes - Add SCM Update By Bundle (#1035) - Add SCM Update By Code Range/sequence (#1035) - Track changes to SCM data for all SCM updating endpoints (#1035, #1042) - Fix BI views to use new SDK App tables (#1039) - Remove legacy authentication (Java JAR based). Unused for 2 years. (#1038) - Tighten security on admin pages and on staging environments - Fix PY3 compatibility issue with urllib (#1041) --- // File: release-notes/release-notes-Backend-2.5.2 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 2.5.2 | 17-01-2019 | ## Containing changes - Add "Workorder Cancelled" option to reasons for blacklisting a code - Tighter permissions on products endpoints - STE: Add sorting to bundles endpoint --- // File: release-notes/release-notes-Backend-2.5.5 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 2.5.5 | 31-01-2019 | ## Containing changes - Improved roles and permissions - Added document download feature (for codes-created page) - Update SCM upload API (better error messages) - Added `double ping` feature - Added various filters to endpoints - Updated to Python v3 only --- // File: release-notes/release-notes-Backend-2.6.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 2.6.0 | 11-03-2019 | ## Features - Enable app performance monitoring only when requested - Add bundle quantity to Apps code-info endpoint - Update sentry (error reporting) sdk and usage - Replace awesome-slugify lib with python-slugify - Add blur threshold adjustment to site admin - Add sorting capability to various endpoints - Upgrade Django and Rest Framework to latest versions - Update product STC data to allow numbers & booleans ## Fixes - Fix endpoints returning 500 when user is not logged in - Fix crash in apps code-info endpoint with sdk < v104 - Fix crash in error handling filter - Fix crash when calling campaigns with new SDK version - Fix crash in mobile bundles endpoint - Range update now supports updating 1 code --- // File: release-notes/release-notes-Backend-2.7.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 2.7.0 | 14-05-2019 | ## Containing Changes - With updated GeoIP2 fixes location by IP lookup - Migrates Celery to Django RQ leading to Better job queues allowing small jobs not to be blocked by big generation jobs - Adds support for new CoreAPI version - Adds Teams feature - Increases WO max generated images from 100K to 120K --- // File: release-notes/release-notes-Backend-2.8.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 2.8.0 | 08-10-2019 | ## Notable Changes - 2FA device support via TOTP - STE Tasks (Customizable STE Workflow Screens) v1 - Add Async SCM Upload Capability - Allow STC redirect to use SCM fields - Mobile API v106: Add ste_tasks to mobile campaign details --- // File: release-notes/release-notes-Backend-2.9.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 2.9.0 | 06-12-2019 | ## Containing Changes - New location service - Update dependencies - Added filters & fixes --- // File: release-notes/release-notes-Backend-2 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 2.4.0 | 10-07-2018 | ## Containing changes - Bugfix for workorder generation --- // File: release-notes/release-notes-Backend-3.3.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 3.3.0 | 29-12-2020 | #### New Features - Remove bundle stats calculations - Allow product id or sku when creating a workorder - add option to filter WOs by state - Update 51degrees device detection and add is_crawler to Device - Update bot classifier to include iMessage, Whatsapp, Skype - Add blacklist_reason & workorder_id to codes download - Add custom 1bit tiff generator to work around pillow issues - Add secure_graphic.tiff to more downloads - Upgrade to django 3.1.3 - Add url prefix to mobile workorder endpoint - Add declined state for Calibration Sessions and update email #### Changes & Bug Fixes - Require workorder quantity greater than 0, less than 5M - Standardize code prefix & style handling - Upgrade django-otp to work with django 3 - Fix issue with QR message always being converted to uppercase - Add missing roles to constants - Fix roles and permissions - Update auto-documenation library to support new drf & django - Wrap encoded parameters in except block - Remove unnecessary future imports and -\*-coding directives - Use functools.partial instead of django helper (removed in v3) - Add missing expired verb for document cleanup task - Fix invalid error logging command in stc tasks - fix missing authentication_data on offline scans on scan review endpoint - Enable auth tokens for WO editor role - Set cookies to be https only where possible, utid is lax - Make codegen status editable in django admin --- // File: release-notes/release-notes-Backend-3.3.2 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 3.3.2 | 09-02-2021 | #### New Features - Add UAT token view/create permission to various roles - Add STE blacklist route and additional scan list fields - Add document detail view - Company Plans & Contracts - Add template fields to code_info endpoint (v110) - Remove old scans, location and device endpoints - feature/scan-review-and-slack-add-blacklist-reason - Add nested device to STE CalibrationSessionView - Allow multiple partners when adding a company in STE - Allow STE users to create companies and partnerships #### Changes & Bug Fixes - Fix company update endpoint - Fix crash when getting scm data for code - Misc code sanity fixes --- // File: release-notes/release-notes-Backend-3.3.3 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 3.3.3 | 05-03-2021 | #### New Features - Add QaSessions/ID/Scans endpoint - Remove blue links in registration emails + add buttons - Update async constraints to include bundle/workorder/product - Remove legacy QA endpoints - Add contact_email to company - Add STE code activate endpoint - Add device filter to STE Calibration Sessions #### Changes & Bug Fixes - Add old UUID and ID to migrated QaScans - Fix crash in workorder emails when no printing partner - Fix scan admin search for code/serial not working - Fix None issue with contact_email - Commands to manage BI views and schema --- // File: release-notes/release-notes-Backend-3.4.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 3.4.0 | 14-04-2021 | #### New Features - Add EPAC integration endpoint - Add extra filters to code/workorder endpoints - Update SCM transaction views to meet new reqirements - Improve geotag view - Remove qa_state from Scans & remove /train/ endpoints - Remove separate scan count email and add to generic alerts #### Changes & Bug Fixes - Remove static_unique_codes_quantity, add total_impressions - Only copy code fields on scan creation - Fix user email broken link - Improve bulk upload validation and consistency - Remove empty files from role_permission - Make core auth tolerances call inline, not async - Force QA Session Scans to be returned in ID DESC order - Add vw_batch back to bi views --- // File: release-notes/release-notes-Backend-3.5.1 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 3.5.1 | 06-05-2021 | #### New Features - When  UAT tokens expire, an expiry email is sent to the user. - Speed improvements to async scm upload when using bundle/workorder - Remove legacy support for DOW apps from scan apis - Add EPAC integration endpoint - Add extra filters to code/workorder endpoints - Update SCM transaction views to meet new reqirements - Improve accuracy of the geotag view - Remove qa_state from Scans - Remove /train/ endpoints - Remove separate scan count email and add to generic alerts - Fix reset issue on JsonAttributeField #### Changes & Bug Fixes - Fix random failure in test case due to database ordering - Misc fixes & updates - May 2021 - Change email wording a little bit - Override dark mode in our custom Django admin CSS - Fix JSON data attribute field on partial updates - Update dependencies - April 2021 - use custom IP grab method in anon throttle - Fix scan status in auto-blacklist mechanism - Remove static_unique_codes_quantity, add total_impressions - Only copy code fields on scan creation - Fix user email broken link - Improve bulk upload validation and consistency - Remove empty files from role_permission - Make core auth tolerances call inline, not async - Force QA Session Scans to be returned in ID DESC order - Add vw_batch back to bi views --- // File: release-notes/release-notes-Backend-3.7.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 3.7.0 | 15-06-2021 | #### New Features - Allow a large number of scm fields (1K) and length (5k) - Search for all uses of uses of a constraint/key when no value given - Set SID workorders to status 'trained' by default - Add EPAC prefix and alert STE email - Update dependencies, add boto3-stubs - Return a success response to the api root instead of a 404 - Only show ios/android/other in dashboard summary OS rollup - Allow editing of quantity by printing partners - Add list of codes to scm transaction routes - Add timeframe filter to scm transaction list #### Changes & Bug Fixes - Handle device detection issues due to vendor api changes - Add additional fields to scm transaction views, for use by UI - Remove unused mobile/scm-transactions/ endpoints - Fix STE throttle limit --- // File: release-notes/release-notes-Backend-3.8.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 3.8.0 | 12-07-2021 | #### New Features - Add new SaaS registration views, emails and role - Add mobile v111 with support for "skipped" training status - Add default cache headers (disabling caching) to all requests by default - Add endpoint to skip QA & Training for SSC workorders - Add "application_name" to connections for easier debugging - Update base template (404,500,etc) to remove old libraries - Async Update : Support Workorder ID or Reference as a constraint - Add request logging with Logstash - Dashboard users can view products, Scm Manager can view codes - Add 'untrained' scan flag and STE scans 'reason' filter - Products - allow brand.reference, remove old fields, standarize /sync/ - Add additional filtering to brand endpoints - Remove Device IMEI #### Changes & Bug Fixes - Fix STE training endpoint links to include necessary url parameters - Restore api method `brand/:id/archive-all-products/` - Improve auto-documentation for workorder creation - Allow `brand_id` as an alias for `brand` when editing a product - Fix typo error when calling 51 degrees - Remove deprecated method brand/:id/archive-all-products/ - Fix potential crashes when handling old (v1) code types - Disable throttling on the /alive/ endpoint --- // File: release-notes/release-notes-Backend-3.9.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 3.9.0 | 19-08-2021 | #### New Features - Add workorder deletion task + django admin action - Rename all occurances of client to company - Add interface properties to plan & contracts - Add content-security-policy to responses - Improve user tokens, limit usage to 1 and max_age - Remove unused / undertilized roles & permissions - Improve forgot password view - Photo Scan & Authentication - Add STE tasks v3 #### Changes & Bug Fixes - Fix display issue with "fixedwidth" admin text helper - Update default content policy to work with our admin - Return 204 - no content on forgot password requests - Require that photoscan images are JPEG format - Consolidate all public scaning functionality into scan module - Fix typo in photoscan settings - Check scopes (api vs 2fa setup) for tokens in querystring (P2.6.2) - Fix admin permissions check on ste/users/ endpoint (P2.6.1) --- // File: release-notes/release-notes-Backend-3.9.2 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 3.9.2 | 16-09-2021 | #### Containing changes - Removes WO completed email [WO.CMP] that is replaced by WO trained email - There will be no email when a workorder completed using “skip-qa” feature - Modify permissions for scm manager & it admin - Adds support for company plans and contracts. (Frontend implementation under development) --- // File: release-notes/release-notes-Backend-3 | Platform | Version | Date | | :------- | :------ | :-------- | | Backend | 2.4.2 | 3-08-2018 | ## Containing changes - Fix unsupported phone endpoint (add serial number) - Add `is_sid` to STC endpoint (frontend already deployed) - Hide Facebook Bot Scans --- // File: release-notes/release-notes-Backend-4.0.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.0.0 | 29-11-2021 | #### Containing changes - Adds dpi field to QR Templates - Adds token resend endpoint - Adds field name to error in bulk updater - Updates generation library - Transition to core quality check - Mobile code lookup endpoint, including NFC/quickscan/serial - Fixes issue when scanning code with no product assigned - Update generation lib to 3.8 - Adds STE tasks v4 - Allows plan to be set in STE company create - Updates dependencies and add outdated checker - Adds code domains - Calculate UTID on request instead of storing in cookies - Increase the max upload size to 10mb by default, add environment setting - Raise ValidationError on XSS present in CharField - Fixes crash in codes api when product is null - Fixes wrong phases being closed on new phase creation - Adds company info to STC scan details endpoint - Adds missing info about photo-scan in scan review API - Adds scm-data to the mobile code lookup endpoint - Ensure code default prefix is always lower case - Unify scan creation - Fixes crash in product url generator when falling back on company --- // File: release-notes/release-notes-Backend-4.1.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.1.0 | 17-01-2022 | #### Containing changes - Add STE tasks V5 - Fix crash in file handling when uploading large files - Add membership filter to UAT view - Multi company Users - Fixes bug which allowed token= auth via querystring to all views - Fixes QueryCodeSpaceView header name for 'custom_key' - Small email / device profile admin fixes - Fixes crash creating code space prefix for company names starting with 0 - Update generation library to v3.10.0 - Add is_default_member param to users API - Make legacy codes the default for old style companies - Fixes missing fingerprint_image and blur_score in auth scans - Resend token, ignore last_login --- // File: release-notes/release-notes-Backend-4.10 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.10 | 09-08-2023 | #### Product Related Changes GS1 Extended IDs are now supported during all uploads, but should only be used for SIDs. Proper functioning SSCs will require changes to the apps, as well as code generation to allow larger QR codes. #### New Features * Code Ingestion v2.1. * Added support for uploading GS1 identifiers. * Added redirect simulation endpoint and tests. * Made salutation (Mr, Ms, etc) optional when registering. * Added QR length check when ingesting SSC codes for pre-print. * Added auth result condition (intelligent redirects). * Added cal-check-brands and cal-check-products API for STIS. * Added has_qa_scans flag on STE company detail. * Added Django session timeout and expire in 1800 seconds. #### Changes & Bug Fixes * [OPS] Added workorder_id to scans_csv. * [OPS] Improved STE Scans list. * [OPS] Improved STE UAT endpoint. * [OPS] Added improvements to the STE membership views. * Improved redirect engine and fix 'Undefined' issue. * Added ability to filter by 'no active plan' to the STE admin. * Added upload_eligible filter for WO (ingestion). * Renamed certain redirect condition variables. * Fixed issue with filtering on campaign SCM field route. * Allowed integer code ids in ingested json files. * Removed consumer_options.is_enabled restriction for STC. * Fixed spelling issue with filterset_fields. * Added rule_id in simulation endpoint for redirects. * Fixed filter_none function to correctly return tuple. * Fixed Paddle raw data save for Subscription Data. * Reformatted code using black. --- // File: release-notes/release-notes-Backend-4.11.2-r4 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.11.2-r4 | 15-09-2023 | #### Features & Fixes - Allowed SSO companies to archive users. --- // File: release-notes/release-notes-Backend-4.13.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.13.0 | 15-11-2023 | #### New Features - Improved code download generation. - Allowed SVG files to be used with QR Templates. - Added a base filter to more easily limit queries by company. - Collect auth code from various apps into authid. - Added WO Create from Template endpoints. - Improved RQ job failure handling. - Store known errors for Documents in doc.error_data. - Added SCM Rename Code API. - Added paddle event company fallback methods. - Use action-auto-release for the release. - Added Directory Sync Support. - Correctly set role when creating user from SSO. #### Changes & Bug Fixes - Fixed device crashing on long headers & make columns not null. - Fixed crash in device creation with too long UA data. - Code search download - validate query string parameters. - (SSO) When checking login method, always lowercase company slug. - Added page_mode cursor to codes API. - Fixed authid module migrations to use correct table names. - Updated "ve" helper to take either kwargs or args, not both. - Allowed previously generated batches to be re-queued (but skipped). - Removed Secure Workflow. - Fixed cal-list-codes API slow query. - Allowed continuous-qa when creating secure workorders. - Added support for SSO and UAT tokens to data plans. - Added Integration API for Calzedonia: cal-list-codes. - Added "x-scantrust-device" in CORS allowed headers. --- // File: release-notes/release-notes-Backend-4.14.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.14.0 | 01-12-2023 | #### Product Related Changes **New Features** - Create workorder from template. **Fixes** - Added Directory Sync field to STE API call. - Updated contract.valid_to on Paddle update event. - GS1 DL too long for SCM Transaction Log. - Skip updating activation status when unchanged. - Removed unused mobile workorder action endpoints. - Avoid cancelling a contract twice. --- // File: release-notes/release-notes-Backend-4.15.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.15.0 | 14-12-2023 | #### Product Related Changes **New Features** - Added command to add default SCM fields to all e-label companies. - Allowed product SKU in async upload scm_data.product field. - Ordered GS1 AIs according to spec. - Optimized workorder zip file generation. **Fixes** - Fixed crash in mobile/code-info/ when duplicate codes exist (code spaces). - Added script for resubmitting failed SCM transactions. - Fixed bug with 0 quantity in workorder-from-template. - Combined Code Info - Return blank for product.image if not present. **Others** - Removed e-label trial views. - Updated all core enums to use new naming style. --- // File: release-notes/release-notes-Backend-4.16.0-r5 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.16.0-r5 | 25-04-2024 | #### Features & Fixes #### Backend v 4.16.0-r5 - Added support for legacy compatible codes (upper-24). - Added upper-24 style for SID codes in STE Work Order Templates at Code Spaces companies. --- // File: release-notes/release-notes-Backend-4.16.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.16.0 | 07-03-2024 | #### Product Related Changes **Features** - Added Code Ingestion Templates. - Rebranded e-label emails to U-label. - Allowed legacy companies access to scm/run/code/update/. - Marked inactive IngestionRecord stuck for more than 24 hours as cancelled. - Added an STC File admin. - Allowed STE users to set membership roles including elabel. - Updated SCM async range. - First SAML login for a company is admin overriding default role. **Fixes** - Increased max length of mobile app version. - Filtered by company when getting list of codes for workorder download. - Allowed ingestion mode for SID workorder templates. - Allowed product archiving for e-label role. - Mobile code lookup: Added extended ID and removed “exists” field. - Fixed a crash in mobile code lookup when code has no product. - Added mobile API v112 - new fields for mobile/code-lookup/ endpoint. - Added a remarks field to WO from template serializer. - Added SCM admin action for re-queue SCM transactions. - Allowed scm/run/code/update/ to set serial_number. - Fixed sample QR ordering. - Mobile code lookup: Added scan info to response. - Removed % sign support from GS1. - Removed control character restriction from SCM product values in bulk updater. - Allowed GS1 code paths in scm/set/code/ path. - Added a script to fix Remy failed code updates. - Allowed the removal of product and brand images. - Replaced the product dropdown list with a single link in workorder admin page. --- // File: release-notes/release-notes-Backend-4.20.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.20.0 | 22-10-2024 | #### Product Related Changes - Added sending a confirmation email after resetting the password. - Allowed longer values for salutation, such as “Doctor”. - Added an alert for untrained scans. - Fixed performance issues on STC sites for campaigns with many products. - Allowed deactivation of inactive users after N days (contact support). - Enabled upgrading and downgrading from Elabel Enterprise. - Implemented various bug fixes and performance improvements. --- // File: release-notes/release-notes-Backend-4.22.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.22.0 | 16-12-2024 | #### Product Related Changes - Added external_id to workorder create, update and list APIs. - Added blacklist_reason as a redirect condition. - Product API now allows ordering by ID. - SSO login: Company value is now case insensitive. - Custom Hosted Domains: Fixed issue with some subdomains not validating. - QR Templates now support custom text fields (top, bottom, left, right). - Improved validation on API fields which accept both SKU and product ID. - Fixed issues on the Custom Dashboard. --- // File: release-notes/release-notes-Backend-4.24.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.24.0 | 23-02-2025 | #### Product Related Changes - Added the contact_email to the partnership API. - Added the ability to return un-escaped value via ! and set HTTPS as default for consumer redirection. - Added e-label is_published and GTIN serial_number. - Added the ability to generate code in activated status for ULBS. - Prevented code subtraction when upgrading from “freemium” for UBLS. - Added product description in ULBS. - Allowed workorder product update. - Converted ULL CSV Integration to a new integration system. - Denied archived WO lookup for printer partners when permission is set. - Added Company Integrations. - Added new token auth & system user. - Added API to get all e-labels per company. - Added Integration user endpoints. - Converted Calzedonia integration. - Upgraded all upgradeable dependencies. - Implemented system user for Paddle/Ulabel. - Added Auth integration data route. --- // File: release-notes/release-notes-Backend-4.26.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.26.0 | 31-03-2025 | #### Product Related Changes - Added Scan Sessions. - Added a new flexible reverse geocoding endpoint. - Added gallery read/write permissions. - Renamed the scan "session id" header to "session hint". - Fixed an issue with GS1 style filenames in WO download. - Added Mobile QA sessions and STE continuous QA sessions. - Removed legacy views for ULBS. --- // File: release-notes/release-notes-Backend-4.27.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.27.0 | 29-05-2025 | #### Product Related Changes - Added the Scantrust Pro registration process and related URLs. - Added support for the more characters in the Serial Number AI (21) and others which share the same character set such as CPV. - Added support for On-Demand Work Orders – a simplified way to create new SID codes without requiring templates. Codes are added to a hidden work order, and its quantity is automatically adjusted. --- // File: release-notes/release-notes-Backend-4.28.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.28.0 | 17-07-2025 | #### Product Related Changes - Enabled On-Demand codes for all companies with code spaces, supporting single code ingestion or compact-12 generation, and apply quota limits through plan settings. - Added support for a filename query parameter when downloading workorder codes, allowing dynamic fields and Unicode characters with a fallback for unsupported browsers. - Introduced `{qr_url}` variable in consumer redirect URLs, resolving to the full link defined in the work order’s url_prefix. --- // File: release-notes/release-notes-Backend-4.3.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.3.0 | 05-09-2022 | #### Containing changes - Sends email to company owners when a SSO user first login - Adds IdP initiated SAML workflow - Pontoon translations - Adds Apple device sync feature --- // File: release-notes/release-notes-Backend-4.3.1 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.3.1 | 26-07-2022 | #### Containing changes - Record last login date of company memberships - Use standard api errors to communicate login failures - Limit code quantity allowed when creating serialized fingerprints - Update all requirements (django 4.0.5, ...) - Add epac multi-company user support - Improve SCM bulk update by serial_number - Raise correct error when an archived user tries to log in - Add login option to prevent switching to the previous company - Process "current company" when logging in - Fix issue with user roles in UserViewSet - Fix the scan on create task which sometimes fails - Increase speed of serial number de-duplication - Fix issue with AlertSubscribers and multi-company users - Fix django scan admin slow query --- // File: release-notes/release-notes-Backend-4.4.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.4.0 | 13-09-2022 | #### Containing changes - Removes archived SCM fields in CSV download. - Allows epac duplicate company names. - Adds company tags field and migrate epac. - Adds optional session_id to photo-scan endpoint. - Fixes scan task scheduling. - Merges resend token and forgot password functionality. - Removes the deprecated workflow survey. - Fixes cache issue. - Fixes recovery token incorrectly removed when new password not validated. - Adds device and location data for Unsupported Phone scans. - Do not change company if STE users is logging in with password. --- // File: release-notes/release-notes-Backend-4.4.3 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.4.3 | 13-09-2022 | #### Containing changes - Send email to company owners when a SSO user first login - Added IdP initiated SAML workflow - Pontoon translations - Added Apple device sync feature --- // File: release-notes/release-notes-Backend-4.4.4 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.4.4 | 27-10-2022 | #### Containing changes - Rate limits increased for ISDIN - SKU can now be used in URL builder for campaigns - Replaced SmartLabel with eLabel --- // File: release-notes/release-notes-Backend-4.4.5 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.4.5 | 24-11-2022 | #### Containing changes - Added company membership admin page - Increased rate limit 10x for ISDN - Renamed transaction type bundle-range to range - Added serial_dedupe_slow Redis queue - Updated new SSO email --- // File: release-notes/release-notes-Backend-4.5.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.5.0 | 14-12-2022 | #### Features & Fixes - Removed duplicate permission from certain roles. - Fixed logging for Work Orders activities. - Added a new serial number deduplication method to speed up the process. --- // File: release-notes/release-notes-Backend-4.5.1 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.5.1 | 10-02-2023 | #### Features & Fixes - Add E-label trial functionality - Rename Saas Registration to E-label Registration - Convert redirects from stc.scantrust.com to stc.scantrust.cn automatically - Add code_spaces_enabled to WorkOrderListView - Do not allow empty values for constraints in async SCM upload - Allow both status and activation_status in SCM upload fields --- // File: release-notes/release-notes-Backend-4.7.0-r2 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.7.0-r2 | 04-05-2023 | #### Features & Fixes - Added brand reference to the product card; - Added a brand field in the product edit/creation; - Added brand reference to work order card & list. --- // File: release-notes/release-notes-Backend-4.7.0-r3 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.7.0-r3 | 04-05-2023 | #### Features & Fixes - Fixed a bug for code image generation for the QR generator. --- // File: release-notes/release-notes-Backend-4.9.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.9.0 | 13-06-2023 | #### Product Related Changes - Allow sharing of custom SDK apps between companies (STE assistance required). - Allow SCM fields to be used as redirect targets. - Max Scan Count alert should ignore scans before code.activated_at. - Set the activated_at date when activating a work order on completion. - Added support for IPv6 when determining scan location. #### Useful Updates - Updated e-label email translations. - Workorder API: Added product.brand.reference field. - Products API: Added the brand.reference field. - Dashboard API: Show "other" scans - last scan was 2015, should be no issue. - Dashboard API: Added location method (gps/ip/etc) to dashboard api. - Combined Scan Info API (STC): Added UTID field to help detect returning users. #### Internal but Interesting - Enabled setting app version via headers (for video auth a/b testing). - Fixed generation of QR with content that reach the capacity limit. - Fixed the dash summary app to 'other' for unknown sdk apps. #### Bug Fixes - Cut user agent string to max length. - Updated Locatioin.ip max_length=50 for IPv6. - Fixed broken processing of company ids in paddle alerts. - Added validated json field to prevent null values. - Fixed paddle alert processing of multipart/form-data posts. --- // File: release-notes/release-notes-Backend-5.0.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 5.0.0 | 28-08-2025 | #### Product Related Changes - Enabled Paddle Billing to provide enhanced pricing, expanded billing, and improved subscription management in Scantrust Pro. - Enabled Hybrid Codespaces to allow simultaneous use of st4.ch and custom code space URLs, easing transition from Legacy to Code Spaces. - Prioritized generation of workorders under 120K to prevent delays behind larger tasks. - Updated Amazon Transparency integration to support GS1 digital link identifiers (SGTINs) and additional allowed AIs. --- // File: release-notes/release-notes-Backend-5.1.2 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 5.1.2 | 16-12-2025 | #### Product Related Changes - Added Partnership V2. - Added support for wire transfers. --- // File: release-notes/release-notes-Backend-5.2.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 5.2.0 | 16-04-2026 | #### Product Related Changes - Added code search across all companies within an organization for organization admins. - Added translations module for product and brand name and description, with controlled access via permissions. - Added support for GS1 SGTIN codes in standard work orders. --- // File: release-notes/release-notes-Backend-5.4.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 5.4.0 | 08-06-2026 | #### Product Related Changes - Added e-label trial lifecycle emails. - Added a GTIN field to Product. - Added an internal ST Pro trial feature. - Added a U-Label sign-up discount upon email verification. - Fixed an issue when searching for non-word characters in SCM transactions. - Fixed missing archive activity logs and work order external ID overwrite in code generation. - Added on-demand permission for the e-label Enterprise role. --- // File: release-notes/release-notes-android-scantrust-1.10.0 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.10.0 | 26-11-2019 | ## Containing changes #### With updated SDK version 3.4.0 - Adds new phones to supported phones list **Samsung Galaxy Note 9** --- // File: release-notes/release-notes-android-scantrust-1.10.1 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.10.1 | 14-01-2020 | ## Containing changes - Fixes issue to synchronize full QR image at the backend --- // File: release-notes/release-notes-android-scantrust-1.10.2 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.10.2 | 30-04-2020 | ## Containing changes - Updated SDK v3.6.2 - Adds TERMS & Conditions warning dialog for CN - Tencent app store compliance. --- // File: release-notes/release-notes-android-scantrust-1.11.0 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.11.0 | 04-06-2020 | ## Containing changes - Adds Russian language localization --- // File: release-notes/release-notes-android-scantrust-1.12.0 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.12.0 | 29-03-2021 | ## Containing changes - All-new look refreshed and rebranded as part of our revised visual identity - Adds support for Custom prefix URL - Adds support for Compact (12letter) extended ID style ![standroid](/doc-img/standroid.png) --- // File: release-notes/release-notes-android-scantrust-1.12.1 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.12.1 | 20-04-2021 | ## Containing changes - Fixed issues from v1.12.0 with the modelSettingManager - Add support email address on Error dialogue when app encounter any server issue - Use flavor to handle the devInfo dialog. --- // File: release-notes/release-notes-android-scantrust-1.12.11 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.12.11 | 09-08-2022 | ## Containing changes - Update API to 2.20.0 - Fixes crash issue when scan zippo codes - Fixes issue related to codespace --- // File: release-notes/release-notes-android-scantrust-1.12.13 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.12.13 | 16-11-2022 | ## Containing changes - Added proper support for AGFA codes via SDK update v 4.2.2 and API 2.21.1 --- // File: release-notes/release-notes-android-scantrust-1.12.14 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.12.14 | 18-11-2022 | ## Containing changes - Fixed crash issues for Android 12, 13 --- // File: release-notes/release-notes-android-scantrust-1.12.2 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.12.2 | 03-05-2021 | ## Containing changes - Adds support for Arabic language --- // File: release-notes/release-notes-android-scantrust-1.12.3 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.12.3 | 30-08-2021 | ## Containing changes In the ST app, when a user scans a ”regular QR Code”, we stop offering the possibility to be redirected to an external Web site. We define ”regular QR Code” as one of the below cases: - Codes with unrecognized prefix - Code with correct ST prefix but malformed extended_id - Code with correct ST prefix, correct extended_id format but extended_id does not exist (404) When the ST app scans one of these non-scantrust codes - A user receives below scan result response: NOT a trusted code! This item was NOT recognised and could be a fake or lead to a malicious website. If you suspect a counterfeit, please provide more details using the report link below. - This event will also be logged with the URL and other user details to the Amplitude System to determine the frequency and as storage for future reporting. - With the “REPORT” button, users can share this information to the Scantrust support team with a typeform questionnaire that includes - 3 Essential question (QR image upload, Product Name, Purchase location) - 3 voluntary additional questions (uploading pictures of the product front and back, any additional information the user wants to supply) - Voluntary contact information (Name and email address) - The following information will be passed to the typeform via hidden fields - Country - Language - Latitude - Longitude - Source (if the location was based on IP or on GPS) - URL (that was scanned) - User ID - This information will be redirected to Zendesk for the Support team to review. - Any completed typeform submission will be sent to slack: #fake-url-reporting - Typeform is currently supported in 10 Languages: - English - Arabic (Typeform doesn’t support right to left, so it may be a bit messy with the questions - hopefully people will still get the gist) - Ukrainian - German - Spanish - French - Dutch - Chinese - Vietnamese - Russian NOTE: Additional Languages can be added if clients provide the translations [Demo video](https://drive.google.com/file/d/1uO0HAtOR_v-_bZteUBfg73MHiC-vju12/view?usp=sharing) --- // File: release-notes/release-notes-android-scantrust-1.12.4 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.12.4 | 25-10-2021 | ## Containing changes - Updated strings for Non - ST code scan result --- // File: release-notes/release-notes-android-scantrust-1.12.5 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.12.5 | 17-11-2021 | ## Containing changes Photo auth is launching in Android under an A/B test so we can slowly ramp up to all new qualifying installs as we observe data and gain more confidence in the feature. This is the first time we are getting real-world user data at this scale, and from such a broad number of work orders which the photo auth algorithm has not been directly optimized for. Users who have phones compatible with the existing ST app authentication will not be a part of the experiment. For users who do not have compatible phones, and who thus might benefit from photo auth and it’s more relaxed compatibility requirements, we will slowly ramp-up photo auth to them, starting with a small percent of new installs (~5%). For the A/B test we are using Google Firebase, which allows us to control what percent of new users will see which UX experience, as well as monitor other experiment data. To be a part of this experiment of photoauth integration with the ST app, following criteria applies for a new Android install (user) to view new feature: - Must be a new user - Device is not compatible with current ST app Users not under this experiment: - If device is supported by current auth, they will see current authentication module --- // File: release-notes/release-notes-android-scantrust-1.12.6 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.12.6 | 30-11-2021 | ## Containing changes - SDK updated to v4.1.2 - Adds support for code space feature - Fixes minor issues from crash logs --- // File: release-notes/release-notes-android-scantrust-1.13.1 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.13.1 | 30-05-2023 | ## Containing changes - Enabled AB test for Photo Auth v2.0. --- // File: release-notes/release-notes-android-scantrust-1.13.2 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.13.2 | 11-10-2023 | ## Containing changes - Updated target SDK to 33. --- // File: release-notes/release-notes-android-scantrust-1.13.3 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.13.3 | 23-11-2023 | ## Containing changes - Added a beta banner for video authentication on unsupported phones. --- // File: release-notes/release-notes-android-scantrust-1.13.4 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.13.4 | 27-06-2024 | ## Containing changes - Added support for GS1 for supported phones. --- // File: release-notes/release-notes-android-scantrust-1.14.1 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.14.1 | 30-07-2024 | ## Containing changes - Added support for 24-character extended IDs for supported phones. --- // File: release-notes/release-notes-android-scantrust-1.14.2 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.14.2 | 09-10-2024 | ## Containing changes - Added correct photo-auth URL with app slug. - Updated targetSDK to 34. --- // File: release-notes/release-notes-android-scantrust-1.14.3 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.14.3 | 18-11-2024 | ## Containing changes - Added app_name to the 3rd party code params. - Updated logic to send Typeform even when location details are unavailable. - Migrated IP lookup service to Free IP API. - Fixed an issue of passing incorrect information to Typeform for unsupported phones. - Added an event to Amplitude for supported devices. --- // File: release-notes/release-notes-android-scantrust-1.14.4 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.14.4 | 09-12-2024 | ### Containing changes - Ensured the app consistently stays in Light mode. - Fixed an image capture issue on Pixel devices. - Updated the UI and text for improved usability. --- // File: release-notes/release-notes-android-scantrust-1.14.5 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.14.5 | 02-01-2025 | ### Containing changes - Fixed an issue causing the app to crash after the phone was idle for a few minutes. - Fixed an issue with custom prefixes. --- // File: release-notes/release-notes-android-scantrust-1.15.0 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.15.0 | 17-03-2025 | ## Containing changes - Replaced photo-auth with video-auth as a backup for unsupported phones. --- // File: release-notes/release-notes-android-scantrust-1.16.1 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.16.1 | 29-04-2025 | ## Containing changes - Added session hints for the auth scans. - Fixed missing user ID in fake reports. --- // File: release-notes/release-notes-android-scantrust-1.16.3 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.16.3 | 08-01-2026 | ## Containing changes - Implemented an in-app survey. - Updated to SDK version 35. --- // File: release-notes/release-notes-android-scantrust-1.5.0 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.5.0 | 28-03-2018 | ## Containing changes - Added support for Samsung galaxy A5 --- // File: release-notes/release-notes-android-scantrust-1.5.1 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.5.1 | 25-06-2018 | ## Containing changes - Adds Spanish(es) language translations - Fixes stuck issues on scanning with Samsung S6 - Fix logic for blurry scan(Unreadable retries) --- // File: release-notes/release-notes-android-scantrust-1.6.2 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.6.2 | 19-11-2018 | ## Containing changes - New UI for scan results, which includes replacement of the current VERIFIED result to ACTIVE CODE - Camera API V2 Update and Fixes - Added support for Samsung S9/S9+ phones - Fixes camera preview on supported and unsupported phones - Removes 'Warning' title in pop up message for quit app - Fixes 'Maximum history size reached' pop up for more than 50 scans received in History section. - Remove 'Warning' title in quit app pop up dialog box. - 404 request logic - Updated for languages: Chinese /Spanish /French /German /Dutch(nl) - Minor UI issues --- // File: release-notes/release-notes-android-scantrust-1.6.3 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.6.3 | 24-01-2019 | ## Containing changes - Adds new phones to supported phones **Huawei Honor 10, Huawei P10, Oppo R9s** - Updates icon to adaptive for Android 8+ - Update urls from st4.ch to api.scantrust.com and qr1.ch to api.staging.scantrust.io - Adds permission to access IMEI number - Adds pop ups instead of tap to white screen to allow permissions on fresh install of app. - Adds back option to return to Authenticate screen from How to use page - Fixes message bubble on scan screen when QR code is no longer read - Fixes authentication timing after internet connection was available - Fixes issue to resolve phone cannot exit from power saving when scanning from close - distance - Fixes layout issue on scan result for regular code scan - Fixes issue for How to use page to not show Hamburger menu on fresh install of app --- // File: release-notes/release-notes-android-scantrust-1.7.0 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.7.0 | 16-04-2019 | ## Containing changes - Improved scan experience with scan timeout changed to 5secs, ( timeout = when the user has zoomed in and is at the right distance from the target. ) - Bettered scan experience for phones S8/S8+, S9/S9+ - Supports all scan images to be saved at the server - Changes text color for scan result message `Unable to Verify(..blurry scan..)` to grey - Fix issues related to switching to scanResult page. - Fix crash on some phones, if OS version >= android O(>=8.0) --- // File: release-notes/release-notes-android-scantrust-1.8.0 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.8.0 | 11-06-2019 | ## Containing changes #### With updated SDK version 3.2.6 - Adds new phones to supported phones **Huawei Honor 10, Huawei P10, Oppo R9s,Samsung Galaxy S10/ S10e/S10+/S10 5g and the Samsung Note 8** - Adds **Double ping mechanism** to scan flow. A server call is made as soon as possible in order to get info on the code that is being scanned and its potential custom settings. If the code has been blacklisted, is inactive or untrained, the scanning process will stop and the user will be shown the result screen.There will be no changes in the scan result with this new mechanism, it just provides faster scan results. --- // File: release-notes/release-notes-android-scantrust-1.9.0 | Platform | Version | Date | | :---------------- | :------ | :--------- | | android scantrust | 1.9.0 | 11-09-2019 | ## Containing changes #### With updated SDK version 3.3.2 - Adds new phones to supported phones list **HUAWEI Mate20/ Mate20 Pro, HUAWEI P30/ P30 Pro, OnePlus 6** --- // File: release-notes/release-notes-android-scantrust-enterprise-1.0.1 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 1.0.1 | 05-03-2018 | ## Containing changes - New Auth Result UI - Added flash light indicator on SCM (Shipping goods) scan screen - Results summary for scanning the same code in STE Android and STE iOS aligned. - Scan RESULT shown in STE and Dashboard-Scan Data, Code Tracking aligned with definition Scan - Results Organization. - Cosmetic bug fixes --- // File: release-notes/release-notes-android-scantrust-enterprise-1.1.0 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 1.1.0 | 13-07-2018 | ## Containing changes - Quick Scan feature that allows to quickly scan without authentication - On unsupported phones ONLY the quickscan menu item will be available - Settings to change language in app. - SCM data in Auth result aligned with order as set on Portal - "Warning" STE App Users of un-submitted scans - App crash on Inspector login - Error on scanning code from Shipping Center as Printing Partner - Crash when scanning a code from proofsheet via AUTHENTICATE of QUICK SCAN --- // File: release-notes/release-notes-android-scantrust-enterprise-1.3.0 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 1.3.0 | 13-11-2018 | ## Containing changes - Adds Spanish language - Camera API V2 Update and Fixes - Improved UI design for Work Orders section - Adaptive icons for Android 8+ - Removes "Shipping Center" feature - Flashlight function for Authenticate and Quick scan. - Fixes discrepancies in system roles and permissions - SCM screen improvements - Fixes UI issues - Adds Spanish language - Camera API V2 Update and Fixes - Improved UI design for Work Orders section - Adaptive icons for Android 8+ - Removes "Shipping Center" feature - Flashlight function for Authenticate and Quick scan. - Fixes discrepancies in system roles and permissions - SCM screen improvements - Fixes UI issues --- // File: release-notes/release-notes-android-scantrust-enterprise-1.4.0 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 1.4.0 | 17-01-2019 | ## Containing changes - Adds new feature to tag SCM with **Range scanning** - Adds new UI for Ship Goods section - Fixes crash when scan calibration codes from Authenticate/Quick Scan - Removes Consumer URL displayed on Scan Result page under Campaign section - Fixes display issue with "Done" button in “ Manage LU” section for Logistic unit with long names _Pls note that Campaign Overview section lists Reels,Codes/Reels,Total Codes - as N/A at present and would be available in next deployment._ --- // File: release-notes/release-notes-android-scantrust-enterprise-1.4.1 | Platform | Version | Date | | :--------------------------- | :------ | :-------- | | android scantrust enterprise | 1.4.1 | 1-03-2019 | ## Features - Adds support for new phones **Huawei Honor 10, Huawei P10, Oppo R9s** - Adds dialogue to be displayed when an update of the app is available - Adds Warning if any codes part of the Range scan was already activated before - Adds Reset Password confirmation dialogue - Displays blacklist reason on Authenticate scan result page - Auto logout from app if there is no active activity within a timeframe and ask to re-login ## Fixes - Improved and User friendly error message handling for cases below: - Invalid login details - Network issue - Code scanned does not belong to campaign while uploading SCM via Range Scan - UI issue with long product names - Crash on Oppo phone - UI issue with Scan window on Samsung J5 - Issue with scanning of Logistic unit when cancel to enter it manually - Issue with deleting a scan on SCM scan summary page - Display of extended id on scan list --- // File: release-notes/release-notes-android-scantrust-enterprise-1.5.0 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 1.5.0 | 13-03-2019 | ## Features - Based on configuration done in ST portal via JSON format at the product level - Adds feature 'Apply to Remaining' - where only one code scan is required to associate the whole reel codes to one Logistic unit from Ship goods - Adds feature for 'Auto submission' - after user scanned the first code for the range, STE will auto submit the range without going through scan result summary page to 'submit' the codes - Adds feature to enforce quantity check for number of items scanned in the range - Adds support to allow an SCM text field input via scanning a barcode or QR code ## Fixes - App Timeout dialogue - Scanning of logistic unit after cancelling to enter it manually --- // File: release-notes/release-notes-android-scantrust-enterprise-1.5.1 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 1.5.1 | 14-05-2019 | ## Containing Changes - Fixes Network Timeout issue while uploading SCM data for more number of codes --- // File: release-notes/release-notes-android-scantrust-enterprise-1.5.3 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 1.5.3 | 21-06-2019 | ## Containing changes - Updates to mobile SDK v3.2.6 - Adds new supported phones **Samsung S10/S10+/S105g/S10Edge and Samsung Note 8** - Fixes issue on Authenticate/Quick Scan when printer resolution is a floating point - Updates Product field not to be pre-selected while updating SCM tags - Bug Fixes --- // File: release-notes/release-notes-android-scantrust-enterprise-1.6.0 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 1.6.0 | 15-08-2019 | ## Containing changes #### Adds new feature to set SCM field-values via QR-code - With this feature aka **Quick Tag**, the warehouse SCM operator only needs to scan the QR codes prepared beforehand by the account admin, and the required SCM fields are all then preset. - This minimizes the chance of human errors and reduces the operator’s workload. Quick Tag QR codes are generated from a special URL , these codes can then be used in warehouse operations to set SCM fields.To learn more about the process and enabling this feature please connect with our Customer Success representative. --- // File: release-notes/release-notes-android-scantrust-enterprise-1.6.1 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 1.6.1 | 02-09-2019 | ## Containing changes - Barcodes and 3rd party QR scans have been disabled for - **Item to Pallet association:** for Pallet , first code and last code scans - ONLY allows scanning the QR code type, not Barcode type - **Item to Case association:** for Case , first code and last code scans - ONLY allows scanning the QR code type, not Barcode type - **Manage LU:** ONLY allows scanning the QR code type, not Barcode type - For All SCM text field values: all code types (QR code, barcode) can be scanned, no changes --- // File: release-notes/release-notes-android-scantrust-enterprise-1.6.2 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 1.6.2 | 07-10-2019 | ## Containing changes - For SCM field upload from the app, SCM fields will have Regular Expression validation meaning when non-valid data is input, a warning message is prompted to remind user that there is an error, and the data is not accepted for upload. - This feature is set up on a per-campaign basis from ST portal. In order to configure this, ST engineers need to liaise with brands to fully understand the pattern for all scm fields set up in the campaign. --- // File: release-notes/release-notes-android-scantrust-enterprise-1.7.0 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 1.7.0 | 14-11-2019 | ## Features #### With updated SDK version 3.4.0 - Adds Two Factor Authentication(2FA) - Adds [Upload Log](#Upload-Log) to log SCM uploads. _Range scan works same as before but SCM upload logs with it will not be available in the Upload Log at the moment_ - Adds support for Two factor Authentication(2FA) - Barcodes can be scanned as logistic unit while associating them to item codes _STE Admin can configure restriction for LU codes to be scanned for SCM in Regular Expression settings from portal_ **Fixes** - Fixes issue with some phones (OnePlus 6T) not able to scan in SCM Ship goods and Quick Scan --- // File: release-notes/release-notes-android-scantrust-enterprise-1.8.0 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 1.8.0 | 11-12-2019 | #### Features - Adds support of the phone Samsung Galaxy S9 with optics for Printer Proofsheet calibration and Production QA process. Notes: - The Galaxy S9 can only be used with substrates which have been calibrated and QA'd with the optics. - The Galaxy S9 is supported with the use of an additional case and lens. - After completing Production QA it will be sent to core tech team training app for training #### Fixes - Fixes constant app update notification --- // File: release-notes/release-notes-android-scantrust-enterprise-1.8.1 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 1.8.1 | 13-01-2020 | #### Features - Regular Expression validation also available when using Manage Logistic Unit #### Fixes - Crash on Android v5.1 - Issue with switching to other languages - Upload log: Incorrect child codes quantity --- // File: release-notes/release-notes-android-scantrust-enterprise-1.9.0 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 1.9.0 | 12-03-2020 | #### Features and Fixes - Upgrades the ST libraries - Adds adjustable blur threshold management in the QA module --- // File: release-notes/release-notes-android-scantrust-enterprise-1.9.1 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 1.9.1 | 31-03-2020 | #### Features and Fixes #### Additional retries in Press Printing - Production QA - When a printing issue occurs, user has 4 more retries before it being considered a Failure - User can choose to confirm the issue in which case it's considered a failure --- // File: release-notes/release-notes-android-scantrust-enterprise-2.0.0 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.0.0 | 28-06-2020 | #### Features and Fixes - Adds support for STE tasks feature _For more details on STE tasks pls refer the feature description [here](/docs/release-notes/high-level-notes/new-app-releases-june-20)_ --- // File: release-notes/release-notes-android-scantrust-enterprise-2.0.1 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.0.1 | 22-06-2020 | #### Features and Fixes - Scan result share feature for campaign with tasks - Added support for multiple language localization: Vietnamese, Lao, Burmese, Indonesian, Cambodia(Khmer) --- // File: release-notes/release-notes-android-scantrust-enterprise-2.0.10 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.0.10 | 22-02-2021 | #### Features and Fixes - Hotfix for the dependency issue with Android11 phones --- // File: release-notes/release-notes-android-scantrust-enterprise-2.0.2 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.0.2 | 20-07-2020 | #### Features and Fixes - Fixes issue for multi-language support - Fixes issue with SCM task upload - Displays privacy policy dialog on new download of the app in CN localization for Tencent store compliance --- // File: release-notes/release-notes-android-scantrust-enterprise-2.0.7 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.0.7 | 05-01-2021 | #### Features and Fixes - Hotfix for Production printing QA stages. Status is now saved so a user can resume scanning with the device they used in the last session. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.0.8 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.0.8 | 15-01-2021 | #### Features and Fixes - Adds support for SCM input field as List - Fixes minor issues --- // File: release-notes/release-notes-android-scantrust-enterprise-2.0.9 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.0.9 | 21-01-2021 | #### Features and Fixes - Fixes issue with Samsung S5 unable to open a work order. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.1.0 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.1.0 | 07-04-2021 | #### Features and Fixes - Adds support for Custom prefix URL - Adds support for Compact (12letter) extended ID style --- // File: release-notes/release-notes-android-scantrust-enterprise-2.1.1 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.1.1 | 29-04-2021 | #### Features and Fixes - Fixes samsung S9 optics toggle issue on Authenticate scan screen --- // File: release-notes/release-notes-android-scantrust-enterprise-2.1.2 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.1.2 | 17-05-2021 | #### Features and Fixes - Fixes scm same code scanning issue - For inspector role, ste app tags scan.app in Dashboard CSV as st-inspect - Updates to rebranded app logo. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.1.3 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.1.3 | 14-06-2021 | #### Features and Fixes - Adds pop-up alert for Printing Partner users to move to new Scantrust Printer app - Blocks access to use android STE app for all Printing partners roles - Update STE’s default request env to `api.scantrust.com` - Fixes issue with sentry to add Login module errors --- // File: release-notes/release-notes-android-scantrust-enterprise-2.1.4 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.1.4 | 17-06-2021 | #### Features and Fixes - Change button text on privacy dialog(CN) to meet Tencent store compliance - Removes IMEI logic - If you deny the required permission, it prompts a reason dialog with the button to navigate to App settings. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.2.1 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.2.1 | 21-07-2021 | #### Features and Fixes - All-new refreshed look as a part of our revised visual identity. - Removes Printing Partner features from the app. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.2.2 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.2.2 | 16-08-2021 | #### Features and Fixes - Allows the app to show country name instead of country code for intended market scm field on tasks scan result screen. - Adds a button "BACK TO SCAN" at the bottom of Quick Scan/ Authentication Result - Adds Product Image URL to the scan result. The link can be opened or copied. - Shows colored scan results for authentication/ quick scan (green / red / blue) - Red - all type of failures - Blue - Active Code or Query - Green - Genuine - Stores on demand scm upload history per user to Sentry. A popup triggers on the history screen by shaking the phone to let the user upload history. - Fixes crash due to KH (cambodia) language - Adds android bundle support for Google Playstore compliance - Adds Amplitude tracking - Updates minSdkVersion from 21 to 23, hence the minimum Android version required for the app is now 6.0. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.2.4 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.2.4 | 06-09-2021 | #### Features and Fixes - Adds proxy support for sentry logging in China - Fixes issue related to sound settings in SCM tasks - Fixes issue on authenticating SID codes - Fixes issue with auth SCM upload task that blocks blacklist/inactive codes - Update ste app tag to st-inspect - Fixes issue on the history page. - Fix issue related to Login UI - Fix app style issue - Fix issue related to status for non-extended id scm uploads --- // File: release-notes/release-notes-android-scantrust-enterprise-2.2.5 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.2.5 | 03-12-2021 | #### Features and Fixes - Updates to SDK v4.1.2 - Adds support for code space feature - Adds NFC lookup feature. [ Check the December release notes for more details on this feature](/docs/release-notes/high-level-notes/new-app-releases-december-2021) - Fixes issue with tasks related to team renaming - Adds search bar in campaigns list - Bug fixes --- // File: release-notes/release-notes-android-scantrust-enterprise-2.2.6 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.2.6 | 27-01-2022 | #### Features and Fixes - Adds support for Grouped Field (Regex Named Capture Groups) - Adds support for scan result rules customization - Adds support for alphabetically sorted lists in SCM input fields. - Full country name to be displayed for intended market and region based SCM fields - Adds support for production descriptions to be displayed in the scan result field --- // File: release-notes/release-notes-android-scantrust-enterprise-2.3.0 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.3.0 | 26-07-2022 | #### Features and Fixes - Adds History for lookup tasks - Updates SDK v4.1.3 - Fixes login issues when switch to SSO company --- // File: release-notes/release-notes-android-scantrust-enterprise-2.3.1 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.3.1 | 13-09-2022 | #### Features and Fixes - Enhances the filter feature by date on history page. - Fixes UI issues on history list/details page. - Fixes checking if product is existed for SCM upload feature. - Updates libs: sdk 4.2.1, lib 0.0.16. - Fixes login issue which is related to switch company with SSO. - Fixes URL for privacy policy page. - Adds gray background to items in the history details page. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.3.10 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.3.10 | 17-11-2024 | #### Features and Fixes - Updated the target SDK to 34. - Updated regex checking to support [0-9]{9}$. - Updated the belonging-to-ST logic: changed to be based on input type instead of scanned code format (e.g., if st-qr, st-qr-auth, or st-qr-range, then it will check). --- // File: release-notes/release-notes-android-scantrust-enterprise-2.3.11 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.3.11 | 02-09-2025 | #### Features and Fixes - Fixed background auto-submission to trigger once every 10 scans when count = 0. - Fixed type-and-search behavior for product in lookup widget. - Changed the IP lookup provider. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.3.12 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.3.12 | 21-01-2026 | #### Features and Fixes - Added support for scanning code format from portal settings for ‘Look Up’ scanning pages. - Added support for scanning code format from portal settings for ‘Task Scan’ scanning page. - Fixed a crash when returning from the foreground. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.3.13 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.3.13 | 23-02-2026 | #### Features and Fixes - Improved error handling to prevent login issues in certain cases. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.3.14 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.3.14 | 08-04-2026 | #### Features and Fixes - Fixed an issue related to retrieving the IP address. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.3.15 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.3.15 | 18-05-2026 | #### Features and Fixes - Improved token handling to prevent token expiration during scanning. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.3.3 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.3.3 | 10-10-2022 | #### Features and Fixes - Fixed code not found issue for customer prefixes. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.3.4 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.3.4 | 20-12-2022 | #### Features and Fixes - Updated format of version string. - Added Range Scan feature, which: Supports v6 JSON schema with backward compatibility; Shows range scan tasks in the task list screen and allows users to enter SCM fields; Shows continuous two scanning screens for scan by range; For association with range scan, first allow the app to scan a parent code, then scan first and last child codes; Range scans uploads are stored in app side locally and available in history screen on “upload tasks” tab. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.3.5 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.3.5 | 17-05-2023 | #### Features and Fixes - Fixed an issue related to NFC UID; - Fixed an issue related to updating the target SDK to 31; - Fixed UI issues related to NFC scan results. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.3.6 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.3.6 | 06-11-2023 | #### Features and Fixes - Updated target SDK to 33. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.3.7 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.3.7 | 18-12-2023 | #### Features and Fixes - Fixed overchecking for non-range task uploading. - Fixed an issue with 1D barcode scanning. --- // File: release-notes/release-notes-android-scantrust-enterprise-2.3.8 | Platform | Version | Date | | :--------------------------- | :------ | :--------- | | android scantrust enterprise | 2.3.8 | 12-05-2024 | #### Features and Fixes - Added a new SDK with GS1 support. - Added support for guest mode. --- // File: release-notes/release-notes-android-scantrust-printer-1.0.0 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.0.0 | 10-02-2021 | ## Features Scantrust Printer provides the printing operator tools for the integration of the Scantrust Secure Codes on your products. Use this app to calibrate a new printing equipment and/or a new substrate, and to perform quality control during and after a production. Require Scantrust credentials to log into the app. #### Compatible Phones: - Samsung S5 - Samsung S6 - Samsung S9/S9+ with optics - Samsung S10/S10+ with optics - Samsung S20 with optics --- // File: release-notes/release-notes-android-scantrust-printer-1.1.0 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.1.0 | 29-03-2021 | ## Features - Adds Production statistics - App name in CN - Minor bug fixes --- // File: release-notes/release-notes-android-scantrust-printer-1.10.1 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.10.1 | 07-08-2025 | ### Features - Added support for GS1 codes in the Authentication feature. - Added support of GS1 Digital Link with 21 serial numbers and special characters. - Added scanned code information to the success dialog. - Updated the message for non-Scantrust code. - Fixed the layout of Reset buttons. - Fixed the substrate list display when there are 10 or more substrates. - Fixed an issue inconsistent due date for ingestion work orders. - Fixed quantity values for work orders. --- // File: release-notes/release-notes-android-scantrust-printer-1.11.0 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.11.0 | 10-11-2025 | ### Features - Added Emergency QA feature An update is released to the Printer App that adds an emergency fallback workflow to ensure QA and production continuity during app outages. The new “Emergency QA” mode allows operators to scan and record QR codes when the standard QA process is unavailable, minimizing downtime and maintaining production flow. All data from emergency sessions is sent to the Authentication Team for manual review and confirmation before shipment --- // File: release-notes/release-notes-android-scantrust-printer-1.11.1 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.11.1 | 04-02-2026 | ### Features - Added a confirmation pop-up when setting a phone as the primary device. --- // File: release-notes/release-notes-android-scantrust-printer-1.11.2 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.11.2 | 05-02-2026 | ### Features - Fixed an issue caused by token expiration. --- // File: release-notes/release-notes-android-scantrust-printer-1.12.0 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.12.0 | 14-05-2026 | ### Features - Added support for Pixel 9 Pro and Pixel 10 Pro phones. --- // File: release-notes/release-notes-android-scantrust-printer-1.12.1 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.12.1 | 19-06-2026 | ### Features - Added external_id to Workorder list title. --- // File: release-notes/release-notes-android-scantrust-printer-1.2.0 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.2.0 | 09-06-2021 | ## Features - Fixes an overlay issue in the scanning screens - Tentative fix of a crash that happen when coming back to the app after a few days - Tentative fix for a dependency issue - Updates the quantity info - Fixes the issue with SID codes coming up as "untrained" - Renames "production qty" to quantity - Adds translations - Fixes a limit case issue in the scanning --- // File: release-notes/release-notes-android-scantrust-printer-1.2.2 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.2.2 | 25-10-2021 | ## Features - Fixes dependency bug in login module - Fixes typo that caused crash in Authenticate module --- // File: release-notes/release-notes-android-scantrust-printer-1.2.3 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.2.3 | 04-11-2021 | ## Contaning changes Adds debugging info --- // File: release-notes/release-notes-android-scantrust-printer-1.3.0 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.3.0 | 03-12-2021 | ## Features - SDK v4.1.2 - Adds support for code space feature - Bug fixes --- // File: release-notes/release-notes-android-scantrust-printer-1.3.1 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.3.1 | 17-01-2022 | ## Features - Fixes the deprecated GPS API crash - Fixed edge cases where users click UI elements before the processing is finished. - No longer allows the user to click on UI elements while a progressbar is shown. --- // File: release-notes/release-notes-android-scantrust-printer-1.5.2 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.5.2 | 06-07-2023 | ## Features - Added Chinese name of the app. --- // File: release-notes/release-notes-android-scantrust-printer-1.5.3 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.5.3 | 06-08-2023 | ## Features - Enabled login functionality on unsupported phones, allowing access to basic features while restricting authentication and other advanced actions. --- // File: release-notes/release-notes-android-scantrust-printer-1.5.4 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.5.4 | 06-11-2023 | ## Features - Updated target SDK to 33. --- // File: release-notes/release-notes-android-scantrust-printer-1.5.5 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.5.5 | 29-04-2023 | ## Features - Added support for guest mode. --- // File: release-notes/release-notes-android-scantrust-printer-1.5.7 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.5.7 | 13-06-2024 | ## Features - Fixed the issue causing auto logout and the QA process reset. --- // File: release-notes/release-notes-android-scantrust-printer-1.6.0 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.6.0 | 23-10-2024 | ### Features - Added “Customize Threshold” feature for QA process. - Added support for Czech and Polish. --- // File: release-notes/release-notes-android-scantrust-printer-1.6.1 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.6.1 | 18-12-2024 | ### Features - Updated target SDK to 34. - Added a search feature on the Work Order list page. - Added a “Verify Work order” feature. --- // File: release-notes/release-notes-android-scantrust-printer-1.7.0 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.7.0 | 06-04-2025 | ### Features - Added support for multiple QA devices per scan session. --- // File: release-notes/release-notes-android-scantrust-printer-1.8.0 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.8.0 | 11-05-2025 | ### Features - Added more information to the blocked issue pop-up. - Fixed refresh token issue. - Fixed an issue with company syncing in the menu after switching companies. - Fixed an issue when the app logs out users every 30 minutes. --- // File: release-notes/release-notes-android-scantrust-printer-1.9.0 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.9.0 | 26-05-2025 | ### Features - Added support for GS1 codes in the QA process. - Fixed an issue where the work order search did not work when there were more than 100 work orders in the list. - Fixed unexpected crashes during scanning at the finishing stage. - Fixed an issue causing an 'invalid token' message. --- // File: release-notes/release-notes-android-scantrust-printer-1.9.1 | Platform | Version | Date | | :------------------------ | :------ | :--------- | | android scantrust printer | 1.9.1 | 02-07-2025 | ### Features - Added the ability to search work orders when there are more than 1,000 work orders. --- // File: release-notes/release-notes-backend-4.25.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Backend | 4.25.0 | 12-03-2025 | #### Product Related Changes - Added reveal functionality for Integration Auth Tokens. - Allowed a secondary device to add QA finishing phase scans. - Removed archiving for Redirect Destinations. - Adding LOT number to SCM data. - Added API to batch get ULBS data from a list of ref_ids. - Added a bump version workflow. - Added best_practises.md. - Updated Swagger UI to v5.20.0 in the static API doc generator. - Fixed product DJ admin loading issue and added general improvements. - Added workorder update actlog. - Fixed version bump action to use the local environment variable. - Fixed version bump pip server (round 2). - Stopped logging errors on Apple touch icons. - Filter only trade items belonging to a company. - Return response from get by ref id API even if there is no XML. --- // File: release-notes/release-notes-code-ingestion-1.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Code Ingestion Tool | 1.0.0 | 11-08-2023 | ### Code Ingestion This feature will be available to registered companies in the Scantrust system with code spaces enabled on the Work Orders page. We've introduced features within the portal: - Code Upload: the portal enables you to upload your custom codes conveniently using CSV or Excel formats. - Code Ingestion History. - Ingestion Status Tracking: Users can view the status in the ingestion history and will also receive an email with the updated information regarding successful ingestion or an error. - Error Visibility: Easily access information about any errors that occurred during code ingestion. - Enhanced (Meta)Data Integration: Responding to user demands, we've included the capability to embed additional metadata, such as SKU or batch numbers, directly into the extended_id. There are two modes available for SSC codes. 1) Pre-print: Codes will be uploaded to the WO by the BO before going to PP. In this case, the PP has not confirmed the WO when codes are uploaded and will only get notified to do so when the codes have been successfully ingested for this WO by the BO. 2) Post-print: In this case, a workorder is made with a couple of ST generated codes. The PP is notified as usual and gets the FP image and prints custom ID’s. These ID’s are later uploaded to this WO while it is in state ready-to-print/printed/completed. Code ingestion for SSC requires prior creation of a Workorder template and then the Workorder. --- // File: release-notes/release-notes-code-ingestion-1.1 | Platform | Version | Date | | :------- | :------ | :--------- | | Code Ingestion Tool | 1.1.0 | 28-09-2023 | ### Changes - Added GS1 ‘Digital Link’ codes support. - Added Override Column Names support. ### Code Ingestion Code Ingestion now supports GS1 "Digital Link" codes, offering enhanced capabilities for our users. Here are the key details: - This feature is exclusively available to companies that have enabled code spaces. - GS1 'Digital Link' code support works exclusively with SID codes. Additionally, in this release, we have added support for Override Column Names. If your file contains columns with new SCM keys that don't exist in the system, you can now easily redefine these columns. Simply enter the corresponding SCM keys to override and customize your column names according to your needs. --- // File: release-notes/release-notes-code-ingestion-1.2 | Platform | Version | Date | | :------- | :------ | :--------- | | Code Ingestion Tool | 1.2.0 | 26-10-2023 | ### Changes - Added drag and drop feature for uploading files. - SCM update checkbox is now unchecked by default. --- // File: release-notes/release-notes-code-ingestion-1.3.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Code Ingestion Tool | 1.3.0 | 16-08-2024 | ### Changes ### Code ingestion tool v 1.3.0 - Added support for multiple custom prefixes in code ingestion. - Fixed the display of error messages related to using headers with spaces in code ingestion. --- // File: release-notes/release-notes-code-ingestion-1.4.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Code Ingestion Tool | 1.4.0 | 10-02-2025 | ### Changes ### Code ingestion tool v 1.4.0 - Added support for GS1 DL with /21. --- // File: release-notes/release-notes-code-ingestion-1.5.0 | Platform | Version | Date | | :------- | :------ | :--------- | | Code Ingestion Tool | 1.5.0 | 28-07-2025 | ### Changes ### Code ingestion tool v 1.5.0 - Added support for special characters. - Added an option to set printing partner when submitting an ingestion. - Made error messages for uploaded file more user-friendly. --- // File: release-notes/release-notes-code-ingestion-1.5.1 | Platform | Version | Date | | :------- | :------ | :--------- | | Code Ingestion Tool | 1.5.1 | 18-12-2025 | ### Changes ### Code ingestion tool v 1.5.1 - Fixed the ID column not being correctly selected during file upload when it wasn’t the first column. - Fixed the column override feature not working correctly when column names contained uppercase characters. - Fixed an issue where uploaded files were opening in a new window instead of being downloaded as CSV. --- // File: release-notes/release-notes-code-ingestion-1.5.2 | Platform | Version | Date | | :------- | :------ | :--------- | | Code Ingestion Tool | 1.5.2 | 23-07-2026 | ### Changes ### Code ingestion tool v 1.5.2 - Improved the error message for the GS1 codes template. - Fixed an issue where previous errors persisted after uploading a corrected file. --- // File: release-notes/release-notes-e-label-management-tool-1.0 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.0 | 10-02-2023 | #### Features We are launching this feature to help our wine & spirit customers to meet their EU regulation needs for ingredients and nutrition declaration. This feature can be accessed from the Product page & QR Manager. This feature is available for all Enterprise customers. You will have to set up the Campaign redirection to E-label and assign your product to the campaign. User can fill in the information that is required for EU regulation on ingredient & nutrition declaration: 1) Nutrition table is based on specification in this EU regulation; 2) Ingredient list is based on specification in this EU regulation. The E-label information is by SKU, which means only one set of E-label information per SKU. E-label does not work for SKU that previously has Smartlabel information. Users can choose to fill in the E-label information from scratch or copy the information from other E-label (translations will be copied over as well). Brand name, product name & product image are automatically populated with the information from the Brand & Product page, thus the user shall always fill in the correct brand name, product name & product image. Users can fill in country-level information for the sections below: - Serving size; - Alcohol risk warning labels; - Sustainability labels; - Business operators. If users do not want to show certain sections to consumers, they can skip filling in the section, except for mandatory fields. Users can change templates while editing, however they will lose all previous edits and start from scratch on the new template. Users can customize the E-label landing page. We offer two option of displaying language on the landing page: - Display in the scan country official language; - Display in the device language. If a user scans from a country where the translation is not available, we display the reference language by default. If a user scans from non-EU countries, we show France content by default. The language display is French or device language, depending if the display in the scan country's official language is turned on. Users can preview the E-label landing page for language and country: - Country preview is for country level information; - If you turn on the pairing of country-official language, the language & country that you select for your preview may not represent the final presentation to the consumer. You will have to select the official language of the country to see the accurate preview. Users can translate and publish E-labels in 24 EU official languages. Users can also download and share the translations in a CSV file and re-upload translations by copy & paste into the portal. QR Manager: - Users can access the E-label Management Tool from the QR Manager. - Users can see the E-label publication status on the product. --- // File: release-notes/release-notes-e-label-management-tool-1.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.1 | 15-03-2023 | #### Containing changes - Allowed only one entry for geographical indication name; - The geographical indication name has to be in one line (mobile preview & e-label landing page); - Moved PDO/PGI label on top of the GI name; - Removed the user-typed characters after a user selects an origin country. --- // File: release-notes/release-notes-e-label-management-tool-1.10.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.10.1 | 21-03-2024 | ### e-label Management Tool v 1.10.1 #### Features: - Fixed a bug where product images appeared compressed on the landing page on iPhones. --- // File: release-notes/release-notes-e-label-management-tool-1.10 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.10 | 07-03-2024 | ### e-label Management Tool v 1.10 #### Features: - Rebranded e-label landing page to U-label. - Added Scantrust privacy policy on the e-label landing page. - Added a section where users can add producer privacy policy. - Changed Impressum behavior: The Impressum link is now available in the footer of the e-label landing page. Clicking on the Impressum link will display a preview of the Impressum. - Added brand link for spirit template. - Fixed an issue where multiple volumes (net quantity) added without a specified consumption unit resulted in the different bottle volumes not appearing anywhere in the system. --- // File: release-notes/release-notes-e-label-management-tool-1.12 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.12 | 28-05-2024 | ### e-label Management Tool v 1.12 #### Features: - Added product picture section. - Added new fields: production method, wine colour, traditional terms.This change affects only Wine template. - Removed the below wine product types from drop-down list: 1. Rectified concentrated grape must 2. Wine vinegar 3. Partially fermented grape must extracted from raisined grapes If users previously select these types on the e-label, they can remove by changing to other product types. - Added a new wine product type 1. Partially fermented grape must - Added new ingredient categories: 1. Alcohol 2. Substances for enrichment 3. Processing aids These 3 categories do not show up with the ingredients. E.g. when “Alcohol of vine origin” are being selected under “Alcohol”, show only “Alcohol of vine origin” without the category in the ingredient list. - Changed the behavior to hide the category when ingredients are selected, showing only the ingredients for the Sweeteners category. - Updated ingredient lists for wine and aromatized wine templates. - Added a new indicator to allow users to mark ingredients as organic in the editor. On the landing page ingredient list, ingredients designated as organic will now display an asterisk (*). Additionally, below the ingredient, the legend "(*) Organic" will appear. - Implemented the option to select 'Contains...and/or...' for the categories 'Acidity Regulators' and 'Stabilizing Agents'. 1. When choosing to use 'Contains...and/or...', the ingredient list will be formatted as follows: a) Acidity regulators (contains Ingredient A and/or Ingredient B) b) Acidity regulators: Contains Ingredient 1 and/or Ingredient 2 (Deutsche) 2. If 'Contains...and/or...' is not selected, the ingredient list will appear as follows: a) Acidity regulators (Ingredient A, Ingredient B) b) Acidity regulators: Ingredient A, Ingredient B (Deutsche) 3. Note that if only one ingredient is selected, the 'Contains...and/or...' option will not be available for selection. a) Acidity regulators (Ingredient A) b) Acidity regulators: Ingredient A (Deutsche) - Set “Main Ingredients” to the top of the ingredient category list. - Fixed an issue with consistent display size across both preview and mobile views. The size will now vary based on the length of the product name and brand name. --- // File: release-notes/release-notes-e-label-management-tool-1.13.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.13.1 | 04-09-2024 | ### e-label Management Tool v 1.13.1 #### Features: - Added allergen pictograms. - Added a colon (:) to ‘Contains negligible amount of’. - Added two new fields to the product information section for the aromatised wine template: 1) Complement Category 1 - De-alcoholised - Partially de-alcoholised 2) Complement Category 2 - Sparkling - Added new types of packaging, materials, and material families to the Italian recycling section. --- // File: release-notes/release-notes-e-label-management-tool-1.13.2 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.13.2 | 14-10-2024 | ### e-label Management Tool v 1.13.2 #### Features: - Added new spirit product types: - Raisin Brandy - Topinambur spirit - Jerusalem Artichoke spirit - Caraway-flavoured spirit drink - Akvavit - Advocat - Added new ingredient categories for the spirit template: - Emulsifiers - Thickeners - Added new ingredients for the spirit template: - **Main ingredients:** Beer lees distillate, Distillate, Fresh beer distillate, Fruit distillate, Fruit lees distillate, Marc spirit distillate, Topinambur distillate, Wine lees distillate, Alcohol distillate of agricultural origin, Distilled alcohol of agricultural origin, Alcohol distillate, Distilled alcohol - **Colours:** Plain caramel - **Sweeteners:** Honey nectar, Mead nectar - **Flavouring(s):** Flavouring, Natural flavouring - Updated “Producing Year” to “Years old” for the spirit template. - Added new fields for spirit template: - Ageing/Production methods (Prodcut information section) - Company Responsible Drinking URL (Responsible Consumption section) - Brand name is hidden on landing page when it equals ‘Default Brand’. --- // File: release-notes/release-notes-e-label-management-tool-1.13.3 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.13.3 | 07-11-2024 | ### e-label Management Tool v 1.13.3 #### Features: - Added new bottle and glass shapes icons. - Removed "contains" if there is only one ingredient in the category. - Fixed an issue where the brand image background appeared black, which didn’t look good when the image didn’t fill the entire frame. - The nutritional table now supports only one decimal place on the landing page. - Removed colon for ingredients for German (Deutsch). - Changed category name from ‘Flavouring(s)’ to "Flavourings". - Removed the header "Type" on landing page for Nutrition table. - Added a tooltip for company responsible drinking URL in the spirit tempalte. - Added a ‘Highly recommended by the sector’ label near product image in the spirit tempalte. - Add Norwegian as a language option (NOTE: translation is not ready). - Updated translations. --- // File: release-notes/release-notes-e-label-management-tool-1.13.4 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.13.4 | 28-11-2024 | ### e-label Management Tool v 1.13.4 #### Features: - Updated the header display logic to hide headers for sections with no data filled. - Added a ‘Highly recommended by the sector’ label near product image in the wine and aromatized wine templates. - Updated the “alcohol volume” label text on landing page. - Fixed an issue where the “average calculator” button did not work when the product type was set to 'liqueur wine'. - Fixed an issue where the selected color would change to a different color after e-label updating. --- // File: release-notes/release-notes-e-label-management-tool-1.13.5 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.13.5 | 16-12-2024 | ### e-label Management Tool v 1.13.5 #### Features: - Added an option to hide the nutrition table for the spirit template. - Added a switch to display sku in Product information section. - Added hyperlink to wine in moderation image. - Fixed an issue where the bottle icon did not disappear after deleting a number in the net quantity field. - Added Norway country to lists. - Added Norwagian translation. --- // File: release-notes/release-notes-e-label-management-tool-1.14.0 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.14.0 | 27-12-2024 | ### e-label Management Tool v 1.14.0 #### Features: - Added support for Spain’s regulatory recycling information. --- // File: release-notes/release-notes-e-label-management-tool-1.15.0 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.15.0 | 13-01-2025 | ### e-label Management Tool v 1.15.0 #### Features: - Enhanced QR Code Customization. - Added new ingredients for the aromatized wine and spirit templates: - Infusion of aromatic herbs (Category “Other practices”). - Extracts of aromatic herbs (Category “Other practices”). - Added new ingredients for the spirit template : - Cognac spirit (Category “Main ingredients”). - Distilled wine (Category “Main ingredients”). - Split the “Origin” field into two separate fields: 1. Origin Provenance - Expression. 2. Origin Provenance - Country. - Moved “Europe” to the top of the country list and renamed it to “European Union.” - Prevented cropping of the landing page preview QR code. --- // File: release-notes/release-notes-e-label-management-tool-1.15.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.15.1 | 27-01-2025 | ### e-label Management Tool v 1.15.1 #### Features: - Added a space between number and unit. - Added decimal restrictions in the nutrition table. - Fixed a UI issue with saturated fat on the landing page. --- // File: release-notes/release-notes-e-label-management-tool-1.15.2 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.15.2 | 19-02-2025 | ### e-label Management Tool v 1.15.2 #### Features: - Added Portuguese translations. - Added "Cork stopper" and "Screw cap" to the list of packaging types. - Fixed an issue where clicking the update button incorrectly published approved translations. - Fixed display issue when the portion size is 1 liter. - Fixed an issue where ‘Contains’ appeared only when a single ingredient was added to the Stabilising agent. --- // File: release-notes/release-notes-e-label-management-tool-1.16.0 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.16.0 | 27-02-2025 | ### e-label Management Tool v 1.16.0 #### Features: - Added an option to hide the nutrition table. - Added an option to display GTIN on landing pages. --- // File: release-notes/release-notes-e-label-management-tool-1.16.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.16.1 | 05-03-2025 | ### e-label Management Tool v 1.16.1 #### Features: - Updated translations for ‘per XX ml’. --- // File: release-notes/release-notes-e-label-management-tool-1.17.0 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.17.0 | 17-04-2025 | ### e-label Management Tool v 1.17.0 #### Features: - Added support for selecting pictures from the gallery. - Added support for "&" and Unicode characters in the PDF format. - Allowed free text input for sugar content. - Added two new options in the packaging gases message dropdown: - Packaging may happen in a protective atmosphere - Packaged in a protective atmosphere - Added a new "packaging gases" category for the wine and aromatized wine templates. - Added toolstips for: - product display name, - product type, - energy calculator, - generate GS1 DL section. - Uncapitalized the first letters of category names and ingredients (except in German). - Fixed an issue where searching for recycling rules didn’t work in non-English languages. - Fixed an issue where users couldn’t scroll to the first value on the left on some Android devices when more than three values of net quantity were added. - Fixed an issue when images are compressed on landing pages. - Updated translations. --- // File: release-notes/release-notes-e-label-management-tool-1.18.0 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.18.0 | 20-05-2025 | ### e-label Management Tool v 1.18.0 #### Features: - Added check digit validation for GTIN. - Added GS1 data attributes field. - Allowed users to edit per portion values in nutritional tables. - Added validation to "Copy from template" when no product is selected. - Added "Distributed by" under business operators. - Added Sugar to the main ingredients dropdown list for the Spirit template. - Added additional help text when “contains and/or” option is available in Acidity regulators and Stabilising agent. - Allowed free text in the Wine color field. - Set Lot field to be empty by default. - Prevented users from deleting the default language. - Fixed an issue with recycling rules search not working for Bulgarian. - Fixed alphabetical order for components in recycling regulations for Bulgarian and Czech. --- // File: release-notes/release-notes-e-label-management-tool-1.19.0 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.19.0 | 18-06-2025 | ### e-label Management Tool v 1.19.0 #### Features: - Added an option to select the display unit (ml, cl, L) for the Consumption Unit. - Added field (21) Serial Number as the primary key for GS1 Digital URL QR Code. - Implemented automatic reset of nutrition values when the average value is used. - Changed “Brand information” to “Additional information”. - Added an option to include additional links (up to 3). - Prevented selection of the same country multiple times for the Consumption Unit. - Removed ingredient categories for the wine template: - acids; - emulsifiers; - flavour enhancers; - flavourings; - raising agents; - thickeners; - Removed ingredient categories for the aromatized wine template: - expedition liqueur; - preservatives and antioxidants; - substances for enrichment; - tirage liqueur; - stabilising agents; - Added new ingredient categories for the aromatized wine template: - stabilisers (dropdown list); - acidity regulator (dropdown list); - Remove ingredient categories for the spirit template: - acidity regulator; - acids; - alcohol; - antioxidants; - expedition liqueur; - flavour enhancers; - packaging gases; - preservatives and antioxidants; - processing aids; - raising agents; - stabilising agents; - substances for enrichment; - tirage liqueur; - Changed input type for the following categories from dropdown to free text field for the spirit template:: - preservatives; - other practices; - Added a new ingredient category for the spirit template: - stabilisers (free text field). - Updated translations. --- // File: release-notes/release-notes-e-label-management-tool-1.19.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.19.1 | 10-07-2025 | ### e-label Management Tool v 1.19.1 #### Features: - Added a toggle (enabled by default) that shows additional links only in countries where they are allowed, for wine and aromatized wine templates. - Added default display of the “Learn more” button on landing pages when an additional link is added without text. - Added an option to hide the “Learn more“ button. - Added Norway to the country dropdown on landing pages. - Added support to treat scans from the following islands and territories as originating within the EU. - Finland - Åland Islands - France - Guadeloupe - Martinique - Reunion - Mayotte - Saint Martin (French part) - Added an error message when loading codes time out. --- // File: release-notes/release-notes-e-label-management-tool-1.19.2 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.19.2 | 31-07-2025 | ### e-label Management Tool v 1.19.2 #### Features: - Added default fallback content and language for scans from non-EU countries. - Updated QR codes generation to comply with GS1 standards. - Removed “Brand” from labels for the Image Gallery. - Fixed a UI issue on the QR Codes creation page in French. --- // File: release-notes/release-notes-e-label-management-tool-1.2 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.2 | 31-03-2023 | ### e-label Management Tool v 1.2 #### Features: - Added a disclaimer on the inaccuracies of translation - Added a reminder to show allergies and intolerances on the physical label - Added a help pop-up for importing translations from a CSV - Added a warning message when a user tries to create a code while being at the limit (only for e-label portal) - This warning will be shown on the template selection page and on the QR code section of the editor - Added a way to collapse preview’s language and country selector - Added error page for inactive e-label - Added a mechanism for saving the language used during the registration as the user language --- // File: release-notes/release-notes-e-label-management-tool-1.20.0 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.20.0 | 18-09-2025 | ### e-label Management Tool v 1.20.0 #### Features: - Added a QR code template naming feature. Expanded the quiet zone around the QR code, enabling users to add two lines of text on each side and to choose different sizes for both the QR code and the text. Note: Please use ‘\’ if you need to break the text into two lines, e.g. ‘NUTRITIONAL \ & INGREDIENTS’. - Added an article link for Italian recycle section. - Added a check to ensure background color codes have the correct number of characters. - Updated the PDI and PGO logos. - Updated sulphite ingredients. - Removed "Packaging may happen..." option from the Aromatised wine template. --- // File: release-notes/release-notes-e-label-management-tool-1.20.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.20.1 | 04-11-2025 | ### e-label Management Tool v 1.20.1 #### Features: - Added an option to use images from the Gallery for Product. --- // File: release-notes/release-notes-e-label-management-tool-1.20.2 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.20.2 | 17-11-2025 | ### e-label Management Tool v 1.20.2 #### Features: - Added a custom identifier option when generating a Standard QR code. - Added a warning text on the landing page preview when the product is not added to a campaign. - Fixed an issue where “All countries” was not displayed at the top for non-English languages. - Fixed an issue where, after approving translations, the languages were not sorted in alphabetical order on the landing page preview. --- // File: release-notes/release-notes-e-label-management-tool-1.20.3 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.20.3 | 08-12-2025 | ### e-label Management Tool v 1.20.3 #### Features: - Fixed the u-label logo in dark mode. - Updated translations. --- // File: release-notes/release-notes-e-label-management-tool-1.20.4 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.20.4 | 16-01-2026 | ### e-label Management Tool v 1.20.4 #### Features: - Prevented a bug that allowed to users to assign more than 1 code to a product while editing a QR code URL --- // File: release-notes/release-notes-e-label-management-tool-1.21.0 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.21.0 | 29-01-2026 | ### e-label Management Tool v 1.21.0 Updates to E-label template: **Expanded Units & Customization** The scope of product data has been expanded to support more categories and provide greater control over how information is presented. - New Measurement Units: Support for ml, cl, L, g, and kg has been added to accommodate various product types. - Translatable Custom Fields: Within the Editor, you can now add custom labels and values. These are fully translatable, ensuring your product data is localized for every market. **Nutrition Declaration (EU Standards)** Displaying nutritional information is now more precise and compliant with European food and beverage requirements: - Standardized Tables: Implementation of the official European nutrition information table format. - Reference Intake (RI) Toggle: A new landing page toggle allows you to display RI values. When enabled, the mandatory disclaimer “%RI: Reference intake of an average adult (8400 kJ/2000 kcal)” will automatically appear. - Vitamins & Minerals: Added support for Vitamins & Minerals in the nutrition declaration. **Enhanced "Free Section" in Editor** The Free Section has been upgraded to allow more region-specific content. #### Features: - Added a new e-label template. - Added “(01)” before the GTIN in the text displayed around the QR code. - Added an inactive code warning for all blacklisted code reasons. - Fixed an issue where the wine color in the Product Information section did not update after being changed in the Consumption Unit. - Fixed a UI issue that occurred when the SKU was too long. --- // File: release-notes/release-notes-e-label-management-tool-1.21.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.21.1 | 03-02-2026 | ### e-label Management Tool v 1.21.1 #### Features: - Updated units of measurement in accordance with SI standards. - Fixed an issue related to the serving unit that caused problems when editing e-labels in certain cases. --- // File: release-notes/release-notes-e-label-management-tool-1.21.2 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.21.2 | 25-02-2026 | ### e-label Management Tool v 1.21.2 #### Features: - Added the ability to change the reference language. --- // File: release-notes/release-notes-e-label-management-tool-1.21.3 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.21.3 | 25-03-2026 | ### e-label Management Tool v 1.21.3 #### Features: - Added support text for product name and product type. - Changed the display of the "Ageing/Production Methods" field to show in full line. - Fixed an issue where allergens were not bolded for all languages after refreshing translations. - Updated translations. - Fixed an issue in the “Upload Image” popup to prevent an internal error when selecting and cropping images. --- // File: release-notes/release-notes-e-label-management-tool-1.21.4 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.21.4 | 08-06-2026 | ### e-label Management Tool v 1.21.4 #### Features: - Updated the sugar content order for aromatized wine templates. - Added a warning when leaving the editor with unpublished changes. - Standardized section spacing, alignment, and footer sizing for landing pages. - Fixed an issue with uploading and saving 2 MB product images. - Added the ability to update keys in the Image Gallery. - Fixed an issue where the image counter did not display the correct number of images after upload. - Fixed an issue where archived images were incorrectly re-archived together with active images in the Image Gallery. - Improved visibility and placement of error messages when uploading invalid image files. - Fixed an issue where archived images disappeared from the Gallery after being archived. --- // File: release-notes/release-notes-e-label-management-tool-1.22.0 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.22.0 | 11-08-2026 | ### e-label Management Tool v 1.22.0 #### Features: - Added a "Packaging information" subsection to Sustainability in preparation for PPWR. - Added a Contact field for each business operator type. - Improved translation status visibility for e-labels: updated the language list message, added yellow indicators for languages with missing translations, and simplified the translation fields panel. - Adjusted the kJ/kcal display in the nutrition declaration to match the regulation layout. - Added a long dash (—) in front of sub-nutrients in all templates. - Renamed "Aromatised Wine Type" to "Base grapevine product" and expanded the dropdown to include all base grapevine products with their de-alcoholised and partially de-alcoholised versions. - Renamed the "Other" template to "Other (food & beverage)". - Added "https://" as a prefix when entering URLs in the Company Responsible Drinking URL field of the Spirit template. - Fixed an issue where the allergen pictogram was not displayed on the landing page when the ingredients list was empty. - Fixed an issue where the landing page preview language reset to Bulgarian when editing. - Fixed an issue where the "Complement category 2" dropdown in the Aromatised Wine template did not update after changing the reference language. --- // File: release-notes/release-notes-e-label-management-tool-1.22.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.22.1 | 18-08-2026 | ### e-label Management Tool v 1.22.1 #### Features: - Fixed an issue where https:// was duplicated when pasting a URL in the Responsible Consumption section. - Fixed an issue where image name validation (minimum 5 characters) was not triggered if the name field was not manually focused before saving. - Fixed an issue where view mode icons were displayed when the gallery was empty. --- // File: release-notes/release-notes-e-label-management-tool-1.3.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.3.1 | 10-05-2023 | ### e-label Management Tool v 1.3.1 - Fixed a bug with product description not showing up in translations when reference language is not English. --- // File: release-notes/release-notes-e-label-management-tool-1.3.2 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.3.2 | 11-05-2023 | ### e-label Management Tool v 1.3.2 - Added a delete button for the brand image; - Fixed an issue with displaying business operators in the order. --- // File: release-notes/release-notes-e-label-management-tool-1.3 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.3 | 25-04-2023 | ### e-label Management Tool v 1.3 - Translation added: Dutch, Spanish, Italian, French, German (please note that some strings are not translated. This is a known issue); - Added aromatized wine product template; - Updated the wine & spirits category list with all translations; - Added an ingredient drop-down list with the official translation; - Sorted all of those lists alphabetically based on the selected language; - Added support for uploading and enlarging the Italian recycling information table image under “Recallability”; - Added a method for deleting sustainability & responsible drinking labels without having to open the pop-up. --- // File: release-notes/release-notes-e-label-management-tool-1.4 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.4 | 16-06-2023 | ### e-label Management Tool v 1.4 - Added new icons: champagne bottle, flute glass, coupe glass, wine glass. - Removed the allergies section (not required by the declaration). - Moved "Ingredients," "Recommended serving," and "Nutrition declaration" after product information. Moved "Geographical Indication" after the "Sustainability" section. Note: This change cannot be applied to existing products, and users will need to reselect the template. - Made "Recommended serving" optional. - Removed some alcohol risk icons. - The "per portion" column will only be displayed when the serving size is filled. - The nutrition table now displays the actual value of the portion instead of "per portion." For example, if the user fills the serving portion as "65ml," it will now be shown as "per 65ml." - Fields that are now marked as mandatory include: Ingredient list and Nutritional facts per 100 ml. While these mandatory fields do not prevent users from proceeding to the next step, they are clearly indicated on the UI. - Removed the highlighting of "This field is required" for other non-mandatory items. - Removed the "% vol." and blue dot from the landing page. They will only appear when alcohol per volume is filled in. If it is not filled in, they will disappear from the landing page and the preview. - Updated ingredient categories based on the delegated acts (please refer to "202306 Combined List" Scantrust Ingredient List). - In accordance with the delegated act, an option has been added to select and display either of the following two messages: 1) Bottled in a protective atmosphere 2) Bottling may happen in a protective atmosphere - In accordance with the delegated act, the presentation format for 'Acidity Regulator' and 'Stabiliser' in the ingredient list has been updated as follows: 1) 'Acidity Regulator' now includes Ingredient 1, Ingredient 2, and/or Ingredient 3. 2) 'Stabiliser' now includes Ingredient 1, Ingredient 2, and/or Ingredient 3. - The terms 'Triage liqueur' and 'Expedition liqueur' can now appear independently on the list or together with a list of ingredients enclosed in brackets. --- // File: release-notes/release-notes-e-label-management-tool-1.5.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.5.1 | 09-08-2023 | ### e-label Management Tool v 1.5.1 - Added a comma as a separator for multiple countries. - Added alphabetical sorting of the country list in various languages. - Updated the recycling Triman icon to a clear version. - Changed text box for “Produced by”, “Bottled by” and “Imported by” to paragraph. - Added a space between the abbreviation and number for the material code (E.g. “GL 70” instead of “GL70”). - Added the material code to the material drop-down list, placing it within brackets after the material's name. For example, “Plastic - High density polyethylene (HDPE 2)”. This enhancement aims to assist users in selecting the appropriate material, leveraging their familiarity with the material codes. - Removed the “(material code)” for plastic composites, as users are required to provide their own abbreviation. --- // File: release-notes/release-notes-e-label-management-tool-1.5 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.5 | 10-07-2023 | ### e-label Management Tool v 1.5 - Added support for providing recycling information mandated by the Italian recycling law. - Implemented a pop-up on the page to notify users if they are using an older e-label version. Users can click a button to update the landing page to the latest version. - Enhanced language consistency: When a user selects a reference language that is also a supported portal language, both the drop-down list and field names will be automatically updated to match the reference language selection, ensuring a consistent language experience throughout the portal. - However, if the user selects a reference language that is not supported as a portal language, only the drop-down list will be updated to reflect the reference language, while the field names will remain in English since the language is not supported by the portal language. This allows users to work comfortably in their preferred language while maintaining clarity in field identification. - Updated terminology: Replaced "Vine variety" with "Grape variety." - Allow entering grape varieties as multiple line. - Removed the default text that overlay on the brand image in the “brand information section”. The text only appears when they fill in the text. - The font size of product/brand information will adjust to always display on a single line, except in cases where the text is excessively long. - Fixed an issue where the header was cropping the product image, ensuring that the image is fully visible and not obstructed by the header. --- // File: release-notes/release-notes-e-label-management-tool-1.6.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.6.1 | 21-09-2023 | ### e-label Management Tool v 1.6.1 - Changed the section title 'Recommended Serving' on the landing page and 'Serving Information' on the editor to 'Consumption Unit.' - Changed 'Per Serving Size' to 'Per Portion' in the nutrition table in the editor. - Changed 'Serving(s)' to 'Portion(s)' on the landing page and in the editor. - Changed e-label logo in the footer of the landing page. - Fixed punctuation in the list of ingredients on the landing page. - Fixed translations for some terms. --- // File: release-notes/release-notes-e-label-management-tool-1.6.2 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.6.2 | 16-11-2023 | ### e-label Management Tool v 1.6.2 **- Fixed translation issues.** **- Changed "Former Yugoslav Republic of Macedonia" to "North Macedonia".** **- Changed all ingredient category to plural (except “Tirage liqueur” and “Expedition liqueur”).** **- Changed “Others” to “Other practices”.** **- Added new ingredients to the category “Preservatives”:** 1. Dimethyldicarbonate (DMDC) 2. Potassium bisulphite 3. Potassium metabisulphite 4. Sulphur dioxide 5. Sulphites **- Added new ingredients to the aromatised wine template:** 1. Other ingredients - Main ingredients - Rectified concentrated grape must 2. Other ingredients - Main ingredients - Concentrated grape must 3. Other ingredients - Main ingredients - Lemon juice concentrate 4. Other ingredients - Main ingredients - Colouring concentrate from carrot 5. Other ingredients - Main ingredients - Sugar **- Changed ingredient names in the aromatised wine template:** 1. Wine ingredients - Acidity regulators - changed “Tartaric acid” to “Tartaric acid (L(+)-)” 2. Other ingredients - Acidity regulators - changed “Tartaric acid” to “Tartaric acid (L(+)-)” 3. Wine ingredients - Acidity regulators - changed “Malic acid” to “Malic acid (D,L-; L-)” 4. Other ingredients - Acidity regulators - changed “Malic acid” to “Malic acid (D,L-; L-)” **- Added new ingredients to the wine template:** 1. Main ingredients - added “Alcohol of vine origin”. 2. Added additional wine sweetness “Medium”. **- Changed ingredient names in the wine template:** 1. Acidity regulators - changed “Malic acid” to “Malic acid (D,L-; L-)”. 2. Acidity regulators - changed “Tartaric acid” to “Tartaric acid (L(+)-)”. 3. Antioxidants - changed “Ascorbic acid” to “L ascorbic acid”. **- Added new ingredients & aromatised to the wine template:** 1. Added “Flavouring” and “Natural flavouring” to the list of ingredients. 2. The user can add custom ingredient. **- Updated the formatting for 'Flavouring(s) (...)' or 'Flavouring(s): ....' to match the style of Main Ingredients, eliminating the use of brackets and colons.** --- // File: release-notes/release-notes-e-label-management-tool-1.6 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.6 | 21-09-2023 | ### e-label Management Tool v 1.6 **- Added new wine categories:** 1) Grape must 2) Partially fermented grape must 3) Partially fermented grape must extracted from raisined grapes 4) Concentrated grape must 5) Rectified concentrated grape must 6) Wine vinegar **- Added new aromatized wine categories:** 1) Aromatised wine 2) Wino ziolowe **- Added a new spirit category:** 1) Fruit spirit **- Added four new product type:** 1) Aerated sparking wine - obtained by adding carbon dioxide 2) Aerated sparking wine - obtained by adding carbon anhydride 3) Aerated semi-sparkling wine - obtained by adding carbon dioxide 4) Aerated semi-sparkling wine - obtained by adding carbon anhydride **- Removed two product type:** 1) Aerated sparking wine 2) Aerated semi-sparkling wine **- Origin country is displayed in any of the below formats:** 1) Produced in 'country1, country2' for multiple origins. 3) Product of 'country' for single origin. **- Changed text** “Recommended serving size (ml)” to “Portion (ml)” (only for e-label editor). **- Changed text** “Add country specific serving size” to “Add country-specific portion” (only for e-label editor). **- Changed text** on the nutrition table “Sugar” to “Sugars”. **- Changed the message** within the field of Geographical Indication to “PDO and/or PGI, Protected designation of origin…etc” (only for e-label editor). **- Allowed users to show nutrition of 0 value as a sentence “Contains negligible amounts of protein, …”.** **- Allowed ‘< sign in the nutrition table.** **- Added a ‘How to declare’ FAQ to the tool.** **- Added an option for other materials.** **- Added ‘Required fields to comply with the regulation’ labels.** **- Added reminder tooltips** for vintage year, business operators, product description and brand information. **- Allowed dragging** to change the order within the same category when there is more than one ingredient. **- Allowed changing the order of categories** when there is more than one (excluding the main ingredient). **- Updated icons** for "Delete" and "Add" for health risk, sustainability and ingredients. **- Hidden the 'per serving size' column in the nutrition table when the user enters 100 ml as the portion.** **- Added a new section to add the ingredients for the base grapevine product in the Aromatised wine template.** Declaration format: Wine (Grapes, Preservatives & antioxidants contains Sulphur dioxide), Category 1 (Ingredient A, Ingredient B), Stabilising agents (Ingredient C) **- Retained only one option for packaging gas: 'Bottled in a protective atmosphere' for the Aromatized wine template.** **- Fixed an issue with the Estonian language.** **- Added two ingredient categories:** 1) Preservatives 2) Antioxidants **- Removed the required alert for ingredient input for “Expedition liqueur” and “Tirage liqueur”.** **Changed the bracket to “:” in the list of ingredients on the landing page** (for the German language only). Current format -> Ingredient category (Ingredient 1, Ingredient 2). New format -> Ingredient category : Ingredient 1, Ingredient 2. **- Added ‘:’ to ‘Stabilising agents’ and ‘Acidity regulators’** (for German the language only), which means the new format becomes: Stabilising agents : contains Ingredient 1 and/or Ingredient 2. **- Added an ‘e-label product name’ field in the e-label editor, and pre-filled the product name.** The ‘e-label product name’ is translatable. **- Added SKU to the product drop-down list on the select template page.** **- Updated the type of packaging ‘Cork stopper’ to ‘Stopper’ for Italian recycling law.** **- Added two options to the ingredient category ‘Antioxidants’** - Sulphites, Ascorbic acid. **- Hid the product picture area on the landing page if there is neither a product picture nor a brand picture.** --- // File: release-notes/release-notes-e-label-management-tool-1.7 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.7 | 07-12-2023 | ### e-label Management Tool v 1.7 - Added ‘Upgrade now’ button that appears when there are new sections or updates available for your landing page. - Added Impressum information section. If users want this field translated for other countries, they will need to input it in the respective country using the official language. - Added a free text field for ingredients. - Fixed issue with logo removal in Global Settings. - Updated translation for wine sweetness in wine and aromatized wine templates. - Changed 'and/or' to 'bzw.' for the German language on landing pages. - Disabled the ability to click the brand image URL in the Brand Information section for landing pages. --- // File: release-notes/release-notes-e-label-management-tool-1.8 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.8 | 15-01-2024 | ### e-label Management Tool v 1.8 - Added GS1 DL support. Users can choose to generate GS1 Digital Link codes when creating codes on the e-label SaaS portal. To do this, you need to navigate to the QR Code tab in the e-label management tool and select the appropriate code type from the dropdown menu. After filling in the GTIN, LOT, and CPV fields, you will be able to generate the GS1 DL code. Products with GS1 codes now have corresponding labels for better visibility. --- // File: release-notes/release-notes-e-label-management-tool-1.9 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.9 | 01-02-2024 | ### e-label Management Tool v 1.9 #### Features: - Added a message for the Italian recycling regulation section when the preview country is not set to “Italy”. - Added a message "Check your local municipal guidelines" for the Italian recycling regulation section. - Changed the behavior of the translation table when users delete original text. The translation list will always show the items if there are translations for them. Users can then decide to remove that translation if it’s no longer needed. - Allowed line breaks for the impressum section. - Standardized the size of sustainability logos. - Fixed the translation for sweetness. - Updated the translation for the Nutrition table. - Fixed a bug when the list of ingredients was not visible. --- // File: release-notes/release-notes-e-label-saas-portal-1.0 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.0 | 28-02-2023 | ### e-label SaaS Portal e-label SaaS Portal is a lightweight portal to address the compliance needs for SME wine & spirit makers. It is also Scantrust's product-led growth initiative, in which the product is completely self-serve - customers register, use and purchase the product on their own. The product will act as a communication tool to capture leads for Sales or convert from free user to paid user.. ##### Features - Users sign up and automatically get 3 e-label Free Forever in their account. - The user who signs up is assigned an e-label user role. - All paid plans (Business 30/50/100 & Premium) are under Free Trial period until 31st March 2023. - All paid plans (Business 30/50/100 & Premium) have the same set of features, only the number of e-labels differs. - Free Forever plan customers are restricted to using machine translation and customizing e-label landing page (change logo, brand color, footer). - Users who are interested in the Enterprise plan can contact Sales via an embedded Hubspot form. - Product & e-label is a one-to-one relationship, which means you can generate only one e-label per product. - There is no limitation in the number of brands & products that can be created, however, the number of e-labels that can be generated is based on the plan that you signed up for. - The e-label QR codes are set to redirect to the e-label landing page. However, when the e-label is not published, the QR codes redirect to the company URL. - The user has to complete the flow of editing e-label data and generating QR code before downloading the code. - Download scan data feature and the number of scan users are not available for scan dashboard for the compliance with no tracking of user data. - Newly designed notification email templates. --- // File: release-notes/release-notes-e-label-saas-portal-1.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.1 | 15-03-2023 | #### Containing changes - Added cookie consent; - Added improvements for plan page start trial flow (banner text, CTA); - Added Amplitude event tracking for product analysis; - Plausible installed; - Appcues installed; - Added company plan info prefill for Zendesk contact support widget. --- // File: release-notes/release-notes-e-label-saas-portal-1.10.0 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.10.0 | 13-01-2025 | ### e-label SaaS Portal v 1.10.0 #### Features: - Enhanced QR Code Customization. - Added the display of GS1 IDs in the code list for migrated companies. --- // File: release-notes/release-notes-e-label-saas-portal-1.10.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.10.1 | 19-02-2025 | ### e-label SaaS Portal v 1.10.1 #### Features: - Added Portuguese translations. --- // File: release-notes/release-notes-e-label-saas-portal-1.11.0 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.11.0 | 17-04-2025 | ### e-label SaaS Portal v 1.11.0 #### Features: - Added Image Gallery feature. - Added support for "&" and Unicode characters in PDF format. --- // File: release-notes/release-notes-e-label-saas-portal-1.11.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.11.1 | 18-06-2025 | ### e-label SaaS Portal v 1.11.1 #### Features: - Updated translations. --- // File: release-notes/release-notes-e-label-saas-portal-1.11.2 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.11.2 | 31-07-2025 | ### e-label SaaS Portal v 1.11.2 #### Features: - Added help text about VAT to the checkout pop-up. - Updated QR code generation to comply with GS1 standards. - Fixed the 'Archived Products' button size for some languages. - Fixed an issue when the ‘Archived Products’ button disappeared after refreshing the page. - Fixed an issue where products disappeared from the list after searching. - Fixed an issue where the additional link appeared in restricted coutries in the preview. - Updated the post-cancellation survey to open in a new tab. --- // File: release-notes/release-notes-e-label-saas-portal-1.12.0 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.12.0 | 18-09-2025 | ### e-label SaaS Portal v 1.12.0 #### Features: - Added a QR code template naming feature. - Expanded the quiet zone around the QR code, enabling users to add two lines of text on each side and to choose different sizes for both the QR code and the text.. --- // File: release-notes/release-notes-e-label-saas-portal-1.12.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.12.1 | 04-11-2025 | ### e-label SaaS Portal v 1.12.1 #### Features: - Added an option to use images from the Gallery for Product. - Fixed the background image after first product creating. - Fixed UI issue for long product name. - Fixed an issue where scans from Malta were not displayed on the Dashboard Map. - Fixed unclear display of the filter label after entering text and pressing Enter in the filter field. --- // File: release-notes/release-notes-e-label-saas-portal-1.12.2 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.12.2 | 17-11-2025 | ### e-label SaaS Portal v 1.12.2 #### Features: - Added a custom identifier option when generating a Standard QR code. - Fixed an issue where the Delete option was missing for products with maximum-length names in the filter in the Dashboard Scan Report. --- // File: release-notes/release-notes-e-label-saas-portal-1.12.3 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.12.3 | 29-01-2026 | ### e-label SaaS Portal v 1.12.3 #### Features: - Added the ability to duplicate a product including its e-label data. - Added “(01)” before the GTIN in the text displayed around the QR code. - Fixed a UI issue that occurred when the SKU was too long. - Fixed an issue when changing the first and last names to longer values. --- // File: release-notes/release-notes-e-label-saas-portal-1.12.4 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.12.4 | 26-03-2026 | ### e-label SaaS Portal v 1.12.4 #### Features: - Added ability to archive brands - Fixed an issue in the “Upload Image” popup to prevent an internal error when selecting and cropping images. --- // File: release-notes/release-notes-e-label-saas-portal-1.13.0 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.13.0 | 08-06-2026 | ### e-label SaaS Portal v 1.13.0 #### Features: - Added a 90-day free trial with 30 e-labels — no credit card required. - Improved "My subscription" page with plan details, billing info, cancel, and resume options. - Updated checkout flow to support online payments and wire transfer with invoicing. - Added six lifecycle banners and emails to guide users through trial, expiration, payment, and renewal. - Changed brand sorting in the side menu to alphabetical order. - Fixed an issue with uploading and saving 2 MB product images. - Added the ability to update keys in the Image Gallery. - Fixed an issue where the image counter did not display the correct number of images after upload. - Fixed an issue where archived images were incorrectly re-archived together with active images in the Image Gallery. - Improved visibility and placement of error messages when uploading invalid image files. - Fixed an issue where archived images disappeared from the Gallery after being archived. --- // File: release-notes/release-notes-e-label-saas-portal-1.14.0 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.14.0 | 16-07-2026 | ### e-label SaaS Portal v 1.14.0 #### Features: - Added Google Sign-Up. --- // File: release-notes/release-notes-e-label-saas-portal-1.2 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.2 | 31-03-2023 | ### e-label SaaS Portal v 1.2 #### Features: #### End of trial - Free users can purchase any plan by the end of the trial period. - Paid users on trial have a 7 days grace period (until 7 April 2023) to pay for the paid plan that they have signed up for during the trial. If they do not pay by 7 April 2023, they will be downgraded to Free and get to keep 3 recently created e-labels. - Paid users on trial can pay for the paid plan that they have signed up for, however, they cannot change the plan. They can change the plan by the end of the grace period. With that, they only see the checkout button for the plan that they have trial on. - Only paid users on trial will see a yellow banner that runs across the entire portal. #### Added subscription flow (upgrade, downgrade, cancellation) - Users can upgrade, downgrade or cancel their subscription anytime. - The upgrade happens immediately. Downgrade & cancellation will only be effective by the end of the subscription period. - Subscription mechanism, please refer to this [flow](https://drive.google.com/file/d/1RYoaGko-Eunw5V-TZh2dCidjw3MvRNrM/view?pli=1). - Users will be charged automatically by the end of the subscription. The users can cancel the subscription if they do not wish to be charged automatically. #### Added payment gateway (Paddle) - Users are able to pay and purchase plans directly on the SaaS portal. - Users can purchase via credit card. We charge only EUR for payment. - There are 2 steps for payment: (1) Input your email, country and postal code; (2) Input your credit card information. - For details, please refer to [Payment FAQ](https://docs.google.com/document/d/1OEDPMYwLCQ0JYSXx0ehn_DHcpOP16TlAbZTH5iNCxnI/) --- // File: release-notes/release-notes-e-label-saas-portal-1.3.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.3.1 | 10-05-2023 | ### e-label SaaS Portal v 1.3.1 - Fixed missing German language in the drop-down menu; - Fixed a grammar mistake in Deutsch. --- // File: release-notes/release-notes-e-label-saas-portal-1.3 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.3 | 25-04-2023 | ### e-label SaaS Portal v 1.3 - Translation added: Dutch, Spanish, Italian, French, German (please note that some strings are not translated. This is a known issue); - PayPal enabled; - Swapped “E-labels” and “Dashboard" on the menu tab; - Added fancy upgrade button when user is on a free plan and not on the Upgrade page; - Fixed checkout modal window; - Added default e-label information logo on download QR code pop-up. --- // File: release-notes/release-notes-e-label-saas-portal-1.4 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.4 | 02-06-2023 | ### e-label SaaS Portal v 1.4 - Enabled Amplitude event tracking. --- // File: release-notes/release-notes-e-label-saas-portal-1.5 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.5 | 10-07-2023 | ### e-label SaaS Portal v 1.5 - Allow the user to change brand on the product after product created. --- // File: release-notes/release-notes-e-label-saas-portal-1.6 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.6 | 22-08-2023 | ### e-label SaaS Portal v 1.6 - Added a new profile page. Sidebar navigation includes 3 tabs. The “Profile” section contains information that the user provided during registration, the company's website, password change feature, and a dropdown for changing the portal's language. The “My subscription” section includes information about the plan, its period, and e-label usage. The “Billing and history” section is accessible exclusively for paid plans. Currently, only the feature for updating card details is available. - Added a new menu with brief user information, their plan, the ability to navigate to the Profile page, change language preferences, and access the Help Center. - Added support for redirection to the company URL. If turned off, the product will still redirect to the company URL. - Fixed the end date for plans. --- // File: release-notes/release-notes-e-label-saas-portal-1.7 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.7 | 16-01-2024 | ### e-label SaaS Portal v 1.7 - Added GS1 label for products that have GS1 Digital Link. - Fixed total e-labels for premium user. - Fixed issue with e-label usage bar. --- // File: release-notes/release-notes-e-label-saas-portal-1.8 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.8 | 01-02-2024 | ### e-label SaaS Portal v 1.8 #### Features: - Removed "i" logo as the default from the QR code. - Enabled product URL. If e-label is unpublished, it will redirect to product URL. - Added a survey after plan cancellation. - Fixed the help center widget. - Fixed the yellow banner. - Fixed the Cancel button on My subscription page. - Fixed scrolling on My subscription page. --- // File: release-notes/release-notes-e-label-saas-portal-1.9.1 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.9.1 | 21-03-2024 | ### e-label SaaS Portal v 1.9.1 #### Features: - Added a display of discount value when applying a coupon code. - Fixed a bug with GS1 generation when all company codes have already been assigned. --- // File: release-notes/release-notes-e-label-saas-portal-1.9.2 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.9.2 | 12-07-2024 | ### e-label SaaS Portal v 1.9.2 #### Features: - Updated profile summary. - Updated plan confirmation pop-up. - Moved the '€' symbol to the right of the price. - Disabled the ability to purchase any plans after cancelling a plan. - Updated the messaging on the cancellation pop-up for users who have downgraded their plan. - Removed the start date of the subscription from the profile summary. Now displaying 'Valid until YYYY-MM-DD. - Changed 'Subscription period' to 'Valid until YYYY-MM-DD' in My Subscription. - Fixed an issue where the cancel subscription button appeared after cancellation on the subscription page.' - Fixed an issue where, after users canceled their subscription, the 'Update Card Details' button still existed, resulting in a 'Page Not Found' error when clicked. - Fixed an issue with differing VAT and discounts between the Saas portal and Paddle invoices. - Fixed an issue where the upgrade pop-up was not displaying the correct subscription end date. - Fixed an issue where, after an unsuccessful payment, users were advised to contact the support team. Subsequently, the payment button on the Update page was not functioning properly. --- // File: release-notes/release-notes-e-label-saas-portal-1.9.3 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.9.3 | 27-08-2024 | ### e-label SaaS Portal v 1.9.3 #### Features: - Added intermediate plan for migrated users. --- // File: release-notes/release-notes-e-label-saas-portal-1.9.4 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.9.4 | 28-11-2024 | ### e-label SaaS Portal v 1.9.4 #### Features: - Added a feature to display full URL for each e-label. - Updated translations. --- // File: release-notes/release-notes-e-label-saas-portal-1.9.5 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.9.5 | 16-12-2024 | ### e-label SaaS Portal v 1.9.5 #### Features: - Added the ability to remove product image. - Added a fix to display an error message when downloading a QR code image with unusual SVG icons fails. --- // File: release-notes/release-notes-e-label-saas-portal-1.9 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.9 | 07-03-2024 | ### e-label SaaS Portal v 1.9 #### Features: - Rebranded e-label SaaS portal to U-label. - Updated plan prices. - Allowed users to archive and unarchive products - Added a warning message when users didn't complete GS1 code generation. --- // File: release-notes/release-notes-ios-scantrust-2.0.1 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 2.0.1 | 28-03-2018 | ## Containing changes - Fixes crashes when tapping done button from browser to rescan - Fixes overexposure issues on some cases by delaying processing once LED turned on --- // File: release-notes/release-notes-ios-scantrust-2.2.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 2.2.0 | 25-06-2018 | ## Containing changes - Adds Spanish(es) language translations - Fixes crash when camera permission is disabled and try to access scan screen --- // File: release-notes/release-notes-ios-scantrust-2.3.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 2.3.0 | 13-07-2018 | ## Containing changes - Added Small codes support --- // File: release-notes/release-notes-ios-scantrust-2.4.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 2.4.0 | 15-08-2018 | ## Containing changes - New UI for scan results, which includes replacement of the current VERIFIED result to ACTIVE CODE - Application crash when clicking 'torch' icon if camera permission is not allowed. - Updated for languages: Chinese /Spanish /French /German /Dutch(nl) --- // File: release-notes/release-notes-ios-scantrust-2.5.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 2.5.0 | 12-06-2019 | ## Containing changes - Added phone support for **iphone XR,iphone XS and iphone XS Max** --- // File: release-notes/release-notes-ios-scantrust-2.5.2 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 2.5.2 | 15-01-2020 | ## Containing changes - Updates Mobile API version --- // File: release-notes/release-notes-ios-scantrust-2.5.3 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 2.5.3 | 21-03-2020 | ## Containing changes - Adds iphone 11 series to compatible phones - iPhone 11 - iPhone 11 Pro - iPhone 11 Pro max --- // File: release-notes/release-notes-ios-scantrust-2.6.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 2.6.0 | 06-05-2020 | ## Containing changes - Bug fixes and scanning improvements --- // File: release-notes/release-notes-ios-scantrust-2.7.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 2.7.0 | 04-06-2020 | ## Containing changes - Adds new iPhone SE(2nd generation) to ST compatible phone list - Optimized and improved scan experience - Adds Russian language localization --- // File: release-notes/release-notes-ios-scantrust-2.8.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 2.8.0 | 14-06-2020 | ## Containing changes - Scan result improvements (bypass scan result) and blank in app browser fix - Minor bug Fixes --- // File: release-notes/release-notes-ios-scantrust-3.0.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 3.0.0 | 22-03-2021 | ## Containing changes - All-new look refreshed and rebranded as part of our revised visual identity - Adds support for Custom prefix URL - Adds support for Compact (12letter) extended ID style - Adds iPhone 12 series as supported phones --- // File: release-notes/release-notes-ios-scantrust-3.1.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 3.1.0 | 20-04-2021 | ## Containing changes - Fixes custom prefix scanning experience and an adjusted overlay on stage 2. - Fixes image crop issue after successful scan - Fixes general code reader speed from SDK - Scan results bypass to STC and bug fixes --- // File: release-notes/release-notes-ios-scantrust-3.2.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 3.2.0 | 30-04-2021 | ## Containing changes - Fixes iPhone 12 showing not supported on compatible phone/splash screen --- // File: release-notes/release-notes-ios-scantrust-3.3.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 3.3.0 | 18-05-2021 | ## Containing changes - Adds Arabic language support --- // File: release-notes/release-notes-ios-scantrust-3.4.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 3.4.0 | 30-08-2021 | ## Containing changes In the ST app, when a user scans a ”regular QR Code”, we stop offering the possibility to be redirected to an external Web site. We define ”regular QR Code” as one of the below cases: - Codes with unrecognized prefix - Code with correct ST prefix but malformed extended_id - Code with correct ST prefix, correct extended_id format but extended_id does not exist (404) When the ST app scans one of these non-scantrust codes - A user receives below scan result response: NOT a trusted code! This item was NOT recognised and could be a fake or lead to a malicious website. If you suspect a counterfeit, please provide more details using the report link below. - This event will also be logged with the URL and other user details to the Amplitude System to determine the frequency and as storage for future reporting. - With the “REPORT” button, users can share this information to the Scantrust support team with a typeform questionnaire that includes - 3 Essential question (QR image upload, Product Name, Purchase location) - 3 voluntary additional questions (uploading pictures of the product front and back, any additional information the user wants to supply) - Voluntary contact information (Name and email address) - The following information will be passed to the typeform via hidden fields - Country - Language - Latitude - Longitude - Source (if the location was based on IP or on GPS) - URL (that was scanned) - User ID - This information will be redirected to Zendesk for the Support team to review. - Any completed typeform submission will be sent to slack: #fake-url-reporting - Typeform is currently supported in 10 Languages: - English - Arabic (Typeform doesn’t support right to left, so it may be a bit messy with the questions - hopefully people will still get the gist) - Ukrainian - German - Spanish - French - Dutch - Chinese - Vietnamese - Russian NOTE: Additional Languages can be added if clients provide the translations [Demo video](https://drive.google.com/file/d/1uO0HAtOR_v-_bZteUBfg73MHiC-vju12/view?usp=sharing) --- // File: release-notes/release-notes-ios-scantrust-3.5.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 3.5.0 | 25-10-2021 | ## Containing changes - Updates SDK to v3.1.1, fix for storing remote device and prefix files correctly - Updated strings for Non - ST code scan result --- // File: release-notes/release-notes-ios-scantrust-3.6.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 3.6.0 | 30-11-2021 | ## Containing changes - SDK updated to v3.2.0 - Adds support for code space feature --- // File: release-notes/release-notes-ios-scantrust-3.8.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 3.8.0 | 30-11-2022 | ## Containing changes - Added proper support for AGFA codes via SDK update v 3.4.2 - Fixed crash for AGFA codes --- // File: release-notes/release-notes-ios-scantrust-3.9.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 3.9.0 | 29-05-2023 | ## Containing changes - Enabled AB test for Photo Auth v2.0. --- // File: release-notes/release-notes-ios-scantrust-4.0.2 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 4.0.2 | 21-08-2023 | ## Containing changes - Enabled App Clip --- // File: release-notes/release-notes-ios-scantrust-4.0.3 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 4.0.3 | 03-10-2023 | ## Containing changes - Added new SDK v3.4.3 (which has mobile API version update). --- // File: release-notes/release-notes-ios-scantrust-4.0.5 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 4.0.5 | 24-01-2024 | ## Containing changes - Fixed App Clip getting stuck on the result page after being opened from the second time onwards on unsupported phones. --- // File: release-notes/release-notes-ios-scantrust-4.1.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 4.1.0 | 22-05-2024 | ## Containing changes - Added new URLs for app clip. --- // File: release-notes/release-notes-ios-scantrust-4.1.1 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 4.1.1 | 28-05-2024 | ## Containing changes - Added support for new China-specific app clip URL. --- // File: release-notes/release-notes-ios-scantrust-4.2.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 4.2.0 | 18-06-2024 | ## Containing changes - Updated to new SDK v3.4.5. - Added GS1 support. - Added support for 24-character extended IDs. - Fixed on-frame processing and glare check. - Fixed issue with the app being stuck on the previous results screen when launching from WeChat. --- // File: release-notes/release-notes-ios-scantrust-4.3.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 4.3.0 | 30-09-2024 | ## Containing changes - Added correct photo-auth URL with app slug. --- // File: release-notes/release-notes-ios-scantrust-4.4.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 4.4.0 | 20-11-2024 | ## Containing changes - Added app_name to the 3rd party code params. - Updated logic to send Typeform even when location details are unavailable. - Migrated IP lookup service to Free IP API. - Fixed an issue of passing incorrect information to Typeform for unsupported phones. - Added an event to Amplitude for supported devices. - Fixed an issue where users were unable to proceed with Typeform on unsupported phones. --- // File: release-notes/release-notes-ios-scantrust-4.5.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 4.5.0 | 23-12-2024 | ## Containing changes - Fixed several auth scanning issues on iPhones - Updated the Privacy Policy URL. - Updated the UI and text for improved usability. - Increased Amplitude tracking. --- // File: release-notes/release-notes-ios-scantrust-4.5.1 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 4.5.1 | 29-12-2024 | ## Containing changes - Allowed inline media playback. --- // File: release-notes/release-notes-ios-scantrust-4.6.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 4.6.0 | 10-03-2025 | ## Containing changes - Replaced photo-auth with video-auth as a backup for unsupported phones. --- // File: release-notes/release-notes-ios-scantrust-4.6.1 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 4.6.1 | 25-03-2025 | ## Containing changes - Fixed a crash on some phones when loading video-auth. --- // File: release-notes/release-notes-ios-scantrust-4.6.2 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 4.6.2 | 09-04-2025 | ## Containing changes - Fixed App clip crash on launch on some phones where the camera permission was missing. --- // File: release-notes/release-notes-ios-scantrust-4.7.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 4.7.0 | 29-04-2025 | ## Containing changes - Added session hints for the auth scans. --- // File: release-notes/release-notes-ios-scantrust-4.8.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 4.8.0 | 25-05-2025 | ## Containing changes - Fixed an issue where the mini-app wouldn’t open in Spanish. --- // File: release-notes/release-notes-ios-scantrust-5.0.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 5.0.0 | 13-10-2025 | ## Containing changes - Added a completely new user interface. A new design has been added in ST iOS App v5.0.0. This update brings a refreshed, modern look and improved user experience across the app. What’s new: - Complete UI redesign for a cleaner and more intuitive experience. - Updated color palette and typography. - Enhanced accessibility. Please take a look at the new design below: --- // File: release-notes/release-notes-ios-scantrust-5.1.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 5.1.0 | 23-10-2025 | ## Containing changes - Updated to SDK version 3.5.4, which includes a crash fix for Hybrid Codes. --- // File: release-notes/release-notes-ios-scantrust-5.2.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 5.2.0 | 22-12-2025 | ## Containing changes - Implemented an in-app survey. - Fixed flickering instructions issue. --- // File: release-notes/release-notes-ios-scantrust-5.3.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 5.3.0 | 27-01-2026 | ## Containing changes - Added support for third-party non-ST URL scan pages. --- // File: release-notes/release-notes-ios-scantrust-5.4.0 | Platform | Version | Date | | :------------ | :------ | :--------- | | ios scantrust | 5.4.0 | 22-05-2026 | ## Containing changes - Added a unified experience for unsupported phones, including full menu access and Video Auth scans in History. - Improved the History screen with a new icon for whitelisted third-party codes, QR code content copy, and a hand symbol icon for blacklisted third-party URLs and untrained codes. --- // File: release-notes/release-notes-ios-scantrust-enterprise-1.1.0 | Platform | Version | Date | | :----------------------- | :------ | :------- | | ios scantrust enterprise | 1.1.0 | 5-3-2018 | ## Containing changes - Added flash light indicator on SCM scan screen --- // File: release-notes/release-notes-ios-scantrust-enterprise-1.2.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 1.2.0 | 13-07-2018 | ## Containing changes - Quick Scan feature that allows to quickly scan without authentication - On unsupported phones ONLY the quickscan menu item will be available - Settings to change language in app. - App crash while scanning codes from SCM scanning screen from unsupported phone --- // File: release-notes/release-notes-ios-scantrust-enterprise-1.3.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 1.3.0 | 13-03-2019 | ## Features - New UI for scan results, which includes replacement of the current VERIFIED result to ACTIVE CODE ## Fixes - Crash on trying to scan proofsheet codes from Ship goods in SCM tagging - Quick scan for archived campaign codes - Makes consumer URL disabled on scan result page under campaign section --- // File: release-notes/release-notes-ios-scantrust-enterprise-1.4.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 1.4.0 | 07-10-2019 | ## Features - Added phone support for **iphone XR,iphone XS and iphone XS Max** - Adds new feature to upload SCM with **Range scanning** - Adds new UI for Ship Goods section ## Fixes - Issue with SCM upload of child codes not being associated to their Parent code - Only association can be done as well while doing SCM upload without selecting any SCM details - Incase of Regular scan SCM upload ,pop-up will be displayed for existing upload scans that user did not submit --- // File: release-notes/release-notes-ios-scantrust-enterprise-1.5.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 1.5.0 | 30-10-2019 | ## Containing changes - Fixes issues related to few user roles login - Fixes issue with "App Update" pop up - Substrate for SID(no-auth codes) is removed from scan result page --- // File: release-notes/release-notes-ios-scantrust-enterprise-1.6.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 1.6.0 | 13-11-2019 | ## Containing changes - Adds support for Two Factor Authentication(2FA) --- // File: release-notes/release-notes-ios-scantrust-enterprise-1.7.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 1.7.0 | 15-01-2020 | ## Containing changes - Adds Upload Log to log SCM uploads. After user scan and submits SCM data, SCM async tasks start running in background.The user can later check the status of uploads from “Upload Log”. _Range scan works same as before but SCM upload logs with it will not be available in the Upload Log at the moment_ --- // File: release-notes/release-notes-ios-scantrust-enterprise-2.0.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 2.0.0 | 28-06-2020 | #### Features and Fixes - Adds support for STE tasks feature _For more details on STE tasks pls refer the feature description [here](/docs/release-notes/high-level-notes/new-app-releases-june-20)_ --- // File: release-notes/release-notes-ios-scantrust-enterprise-2.1.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 2.1.0 | 23-07-2020 | ## Containing changes - Adds scan result `share` feature for campaign with tasks - Added support for multiple language localization: Vietnamese, Lao, Burmese, Indonesian, Cambodia(Khmer) --- // File: release-notes/release-notes-ios-scantrust-enterprise-2.1.1 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 2.1.1 | 24-09-2020 | ## Containing changes - Fixes issue with Product : SKU not found --- // File: release-notes/release-notes-ios-scantrust-enterprise-2.3.1 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 2.3.1 | 21-01-2021 | ## Containing changes - Adds support for SCM input field as List - Hotfix for the issue related to scanning staging codes --- // File: release-notes/release-notes-ios-scantrust-enterprise-3.0.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 3.0.0 | 29-03-2021 | ## Containing changes - All-new look refreshed and rebranded as part of our revised visual identity - Adds support for Custom prefix URL - Adds support for Compact (12letter) extended ID style - Adds support for suffix codes - Adds iPhone 12 series as supported phones --- // File: release-notes/release-notes-ios-scantrust-enterprise-3.1.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 3.1.0 | 06-05-2021 | ## Containing changes - Allow scanner to use native reader from iOS along with zxing to improve scanning speed for barcodes - Fixes issue in SCM tasks scan which allowed re-scanning items after 10 codes - Fixed issues with `scan.install_id`, `scan.unique_user` and `user.email` fields in Dashboard csv --- // File: release-notes/release-notes-ios-scantrust-enterprise-3.2.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 3.2.0 | 26-07-2021 | ## Containing changes - Enables sound settings for ste tasks scan screens - Country name to be displayed instead of code for intended market SCM field - Ability to store SCM upload history per user to Sentry - shake the phone on "History" screen. - Add text color for scan result in task lookup result - Adds product image URL as clickable link on task lookup results screen - Adds "Back to scan" button on task lookup results screen - Adds analytics tracking for Amplitude - Fixes crash when lookup tasks don't have scan screen - Fixes legacy range scan camera preview flickering - Fixes SCM update for list type fields when no selection - Fixes white screen issue related to camera access if user deny permissions --- // File: release-notes/release-notes-ios-scantrust-enterprise-3.2.1 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 3.2.1 | 10-08-2021 | ## Containing changes - Fixes issue with Authenticate tasks on iPhone 12 - Fixes error “doesn’t belong to company” on scanning custom prefix codes - Adds sentry relay servers to work across china --- // File: release-notes/release-notes-ios-scantrust-enterprise-3.3.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 3.3.0 | 16-09-2021 | ## Containing changes - Fixes issue with SCM association task --- // File: release-notes/release-notes-ios-scantrust-enterprise-3.4.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 3.4.0 | 03-12-2021 | ## Containing changes - Updates SDK to v3.2.0 - Adds support for code space feature - Adds NFC lookup feature [ Check the December release notes for more details on this feature](/docs/release-notes/high-level-notes/new-app-releases-december-21) - Fixes issue with tasks related to team renaming - Bug fixes --- // File: release-notes/release-notes-ios-scantrust-enterprise-3.5.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 3.5.0 | 27-01-2022 | ## Containing changes - Adds support for Grouped Field (Regex Named Capture Groups) - Adds support for scan result rules customization - Adds support for alphabetically sorted lists in SCM input fields. - Full country name to be displayed for intended market and region based SCM fields - Adds support for production descriptions to be displayed in the scan result field --- // File: release-notes/release-notes-ios-scantrust-enterprise-4.1.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 4.1.0 | 28-06-2022 | ## Containing changes - Adds History for lookup tasks --- // File: release-notes/release-notes-ios-scantrust-enterprise-4.1.1 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 4.1.1 | 01-08-2022 | ## Containing changes - Hotfix for NFC scan crash --- // File: release-notes/release-notes-ios-scantrust-enterprise-4.2.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 4.2.0 | 08-08-2022 | ## Containing changes - Fixes issue for SSO company login to remember previously focused normal company - Updates SDK from v3.2.0 to v3.4.1 with better support for codespaces - Updates library used for toast messages with new look and feel - Fixes quick scan showing in upload scan on history page - Fixes login errors from backend API - Adds predefined SCM field value shown for widgets data (from operations) --- // File: release-notes/release-notes-ios-scantrust-enterprise-4.3.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 4.3.0 | 20-12-2022 | ## Containing changes Added Range Scan feature, which: - Supports v6 JSON schema with backward compatibility; - Shows range scan tasks in the task list screen and allows users to enter SCM fields; - Shows continuous two scanning screens for scan by range; - For association with range scan, first allow the app to scan a parent code, then scan first and last child codes; - Range scans uploads are stored in app side locally and available in history screen on “upload tasks” tab. --- // File: release-notes/release-notes-ios-scantrust-enterprise-4.3.1 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 4.3.1 | 6-05-2023 | ## Containing changes - Fixed device widget for NFC scans related to China firewall; - Fixed an issue with NFC UID reading and conversion from STE app. --- // File: release-notes/release-notes-ios-scantrust-enterprise-4.4.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 4.4.0 | 14-09-2023 | ## Containing changes New Features: - Added date validation for history filter view. - Added pop-up message for task completion. - Added an error message when a user tries to switch to a printer-related role. - Added an error message when a non-ST code is scanned for ST-QR input type. - Fixed regex issues on the Fill SCM Data screen. - Fixed missing campaigns from my task screen. - Updated the mobile API version to 111. - Added a new setting for the task scanner. Changes & Bug Fixes: - Fixed login error popup mistakes. - Cleared all preferences when displaying a login error. - Fixed issues with the regex validator failing to validate. - Fixed issue of the missing back button on the settings view. - Fixed mistakes in the login error pop-up. --- // File: release-notes/release-notes-ios-scantrust-enterprise-4.5.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 4.5.0 | 23-10-2023 | ## Containing changes New Features: - Added Scanner settings page. To provide users with more control and flexibility, we've introduced a dedicated settings page specifically tailored to Scanner-related settings. ## Scanner Settings Page: We've implemented a Scanner Settings page where users can customize their scanning experience. This page offers two key options designed to optimize scan speed according to individual preferences. **Option 1:** Faster Scan for Tasks (Default: Off): This is a boolean switch allowing users to enable or disable faster scanning for tasks. When turned on, it reduces the scan delay between each scan, ensuring a quicker scanning process. **Option 2:** Scan Delay (Default: 1.5 seconds): Users can now adjust the scan delay according to their needs. The scan delay is represented as a dropdown list with values ranging from 0.0 to 2.0 seconds. Setting the delay to 0.0 means there will be no pause between scans, resulting in near-instantaneous scanning. Increasing the delay to 2.0 seconds means users will experience a 2-second pause between scans, allowing for a more controlled scanning pace. --- // File: release-notes/release-notes-ios-scantrust-enterprise-4.5.1 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 4.5.1 | 29-11-2023 | ## Containing changes - Fixed error displayed for scan tasks with incorrect input types. - Added support for barcode scanning in upload task scanner. --- // File: release-notes/release-notes-ios-scantrust-enterprise-4.5.2 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 4.5.2 | 18-12-2023 | ## Containing changes - Added force load of SDK configuration for each login (to ensure that custom prefix codes are recognized as ST codes). - Modified the auto-submit limit from 100 to 10 (to prevent codes from being missed during continuous scans). --- // File: release-notes/release-notes-ios-scantrust-enterprise-4.5.3 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 4.5.3 | 15-01-2024 | ## Containing changes - Fixed the issue of phone overheating and crashing after some time of usage. - Updated the Sentry library to the latest version. --- // File: release-notes/release-notes-ios-scantrust-enterprise-4.6.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 4.6.0 | 26-03-2024 | ## Containing changes - Added a new SDK with GS1 support. - Updated the mobile API version to 112 (from 111). - Updated tasks lookup scan to use the new code-lookup endpoint (previously used verify & code-info). --- // File: release-notes/release-notes-ios-scantrust-enterprise-4.7.0 | Platform | Version | Date | | :----------------------- | :------ | :--------- | | ios scantrust enterprise | 4.7.0 | 21-01-2025 | ## Containing changes #### ST Enterprise iOS v 4.7.0 - Fixed an issue where extended ID was not displayed correctly on the task results screen. - Changed the IP lookup provider. - Updated the SDK to v3.5.0. - Added support for the latest version of iOS. --- // File: release-notes/release-notes-landing-page-editor-3.8.0 | Platform | Version | Date | | :------------------ | :------ | :--------- | | Landing Page Editor | 3.8.0 | 09-07-2026 | ## Containing changes ### Landing Page Editor v 3.8.0 - Added DPP templates for textile and batteries. - Added formatting for Authentication Result Widget. - Added dropdown to change font for the whole landing page. - Added e-label widgets. - Added a warning when a user makes changes in the editor and leaves without publishing. - Fixed an issue where the area where the product is selected for preview was cut off. - Fixed an issue where the close button was "invisible" on the Landing page Type form pop-up because it was white. - Prevented timeout when translating many languages. --- // File: release-notes/release-notes-landing-page-editor-3.8.1 | Platform | Version | Date | | :------------------ | :------ | :--------- | | Landing Page Editor | 3.8.1 | 19-08-2026 | ## Containing changes ### Landing Page Editor v 3.8.1 - Fixed an issue where the link input enforced https://, breaking mailto: links and @product_url. - Fixed an issue where image name validation (minimum 5 characters) was not triggered if the name field was not manually focused before saving. - Fixed an issue where view mode icons were displayed when the gallery was empty. --- // File: release-notes/release-notes-portal-1.16.5 | Platform | Version | Date | | :--------------- | :------ | :------- | | scantrust portal | 1.16.5 | 5-3-2018 | ## Containing changes - "custom region" or "country list" label for type of the region group - Site Admin:For Scan Details section-extended_id added to the scan details (first 8 characters and simplified scan uuid(first 8 characters)with a copy icon (copies full uuid). - Site Admin:Two views added Users List and User Detail - Scan RESULT shown in STE and Dashboard-Scan Data, Code Tracking aligned with definition Scan Results Organization. - Download CSV with Serial Numbers fixed - Profile information fixed with long title - Pop up modified for registering a product without having any brand - Archive region groups - Display opened Region Group name - Display “DEFINE YOUR REGION GROUPS” in header for Region group section - Ability to restore archived regions fixed - System message fixed on recover user - Fixed long SKU text display when added new product - Long user names wrapping fixed in sidebar - Long email id display fixed - Site Admin:Administer button available when scale 100% --- // File: release-notes/release-notes-portal-1.17.2 | Platform | Version | Date | | :--------------- | :------ | :------- | | scantrust portal | 1.17.2 | 15-08-18 | ## Containing changes - Default STC - STC Customization - Responsive design improvements - Regions improvements - Zendesk Single Sign on --- // File: release-notes/release-notes-portal-1.18.0 | Platform | Version | Date | | :--------------- | :------- | :------- | | scantrust portal | v.1.18.0 | 13-11-18 | ## Containing changes - Adds Transfer of Ownership by Reel feature - Adds new system user role Basic Dashboard User who can have access only to Dashboard Overview section - Adds new system user role Dashboard User who can access all sections of Dashboard:Overview,Maps and Scan Data - Add links to products in list view of campaigns - Option to create a Basic (default) STC for all new campaigns - Allow customization of the wechat follow page & slide show page - Changes the layout of the redirect options - User friendly mobile portal - Updated translations for Chinese, Dutch, German and French - Add link to Google Play and HuaWei app store for STE app - Adds redirect to Define Region group after creating region group - Renames "Consumer" tab to "Redirect" tab - Removes Google Analytics and GeoLocation option under Authentication tab for Campaign settings - Updates Portal Help Desk (Zendesk) link - Fixes discrepancies in User system Roles and Permissions - Fixes incorrect error message for adding user with already registered email - Fixes case sensitive codes lookup of a code under campaigns via serial or via extended id - Fixes validation error messages on ADD USER - Fixes open work order record under Products - Fixes Alerts page with very long names or email - Fixes some icons in WO's history - Fixes change of region name to be updated soon without refreshing page - Fixes Save on adding few categories to SmartLabel - Fixes Filters on Intended markets and clear filter - Fixes issues with saving filters when navigate back from Code tracking details - For scans from ST app ,scan details card on dashboard maps for SID code displays as ”Authentication” instead of "3rd Party lookup" - Fixes product reference when user add product before brand. - Fixes redirection on return to the same page after code tracking - Fixes number of scans is not displayed properly on the training page - Fixes issues for Wechat Follow Page and Slideshow Page - Fixes URL for parts of pages that show not secure warning message on browser - Fixes double scans on Dashboard when scanning codes using Facebook app - Fixes alignment of text in the table on Production Report - Fixes Top Country List in Dashboard Overview - Fixes pagination issues with “Go to Page’ on Codes Created, Dashboard and Bundles. - Fixes Incorrect country names - Fixes Production Report Issues - Fixes UI issues on Maps and Code Tracking details - [Site Admin] Fixes STC Lookup and SMS copy icon - [Site Admin] Adds copy icon for "Extended id" on Scan details tab - [Site Admin] For Codes Created tab, filter lists for product contains product name and SKU details - [ScanTrust SITE] Fixes Request a demo Form --- // File: release-notes/release-notes-portal-1.18.1 | Platform | Version | Date | | :--------------- | :------ | :------- | | scantrust portal | v1.18.1 | 17-01-19 | ## Containing changes - Updates the "Authentication Tab" to “APPS” tab with option to enable/disable Range Scan - Does not allow Printing partners from changing work order information: Code application and Generate serial number, while generating a Work Order - Adds button for clear filter option for Activity Log and Work Orders. - Adds links on WorkOrder reference for listview in WorkOrder section - Updates text on User Activation Confirmation Pop-up - Updates code application type displayed for SID WorkOrder to “SIDs” from “No Authentication” - Fixes buttons on ‘Help Page’ to get to Help Center and to reach Contact Support Form - For a code in Campaign section fixes adding incorrect product via dropdown from 'Edit SCM data' window - Fixes display of Custom Region while adding Intended markets SCM field - Fixes display of archived Regions and Region groups - Fixes filter on Codes Created section to allow multiple filters to be applied - Removes archived products that were displayed in product list for codes Transfer Ownership - Fixes issues with STC Configurator: Promotion page, Slideshow page, Wechat follow page - Fixes UI bugs for Basic User Dashboard Learn More pop up - Displays hyphen "-" for Substrate field for "SID" code application Work Order - Fixes Cosmetic issue on Region Page (for German[DE]) - Adds Product SKU details on Work Order section - Fixes issue with archived products for ownership transfer - Fixes issues with Scan Data displayed for specific timeframe - Fixes text “Consumer” to “Redirect” in Redirect tab - Fixes ‘No access’ user to not allow access the portal - Fixes issue with icons on Product card when Product name is long - Fixes issue with date on Map in Overview section --- // File: release-notes/release-notes-portal-1.18.2 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.18.2 | 31-01-2019 | ## Containing changes ![codescreated-portal](/doc-img/codes_created1.png) - Adds very fine-grained filtering on activity filters, SCM fields for Codes Created - Adds bulk-download of codes (for re-upload with changed info via SCM upload) for Codes created page as Brand Admin - Adds feature to copy an existing product SmartLabel data - Updates error messages while uploading SCM using CSV - Fixed issues with System roles and permissions --- // File: release-notes/release-notes-portal-1.18.3 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.18.3 | 07-05-2019 | ## Features - Static code type now referred as "non-serialized" - Printing Partner can no longer edit remarks for Work Order - Updates to new Scantrust Download Page ## Fixes - Fixes download button UI issue for WorkOrder when logged in as Print Admin - Fixes User search - Fixes issue with filter results based on Branch in Dashboard-Overview section - Fixes issue with filter results when applied filter has less than N page of scan - Fixes UI for Users page on Mozilla Firefox browser - Fixes notification displayed to the user account on Company info Page if their account has not been verified yet - Fixes New Invitation notification to be clickable - Links on Product available in Work Order page to edit a product - Design alignment for Company Info Page for Brand Owner and Printing Partner - Fixes issue with the download Work Order blinking icon - Intended markets now display Region name - Fixes number of entries on all pages for substrate section - For a Product with no campaign , disables redirection on tap `NONE` --- // File: release-notes/release-notes-portal-1.18.4 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.18.4 | 28-06-2019 | ## Features - Adds Teams Feature - Refer to details on `Teams` [here](/docs/release-notes/high-level-notes/new-app-releases-june-19) ## Fixes - To open Help center in a new tab --- // File: release-notes/release-notes-portal-1.19.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.19.0 | 09-10-2019 | ## Features & Changes - Portal now supports Async SCM Upload - Adds warning msg prevent update or extended_id or serial number if present in CSV file - Adds description for SCM on T&T sidebar - Adds WO id column to production report page - Adds SCM data & code data to track and trace sidebar - Adds a message when can't find the calibrated printer while creating a work order - Add countries filter on the dashboard sidebar - Cannot download work orders which have state "Completed" ## Fixes - Sorting on work order, users and admin page - Fixed filter on Codes Created to have option "All campaigns" - Possible to remove value from SCM details while editing code SCM detail from portal - Fixes issue with extended id and serial number filter on codes created page - Download for substrate specific proofsheet will be unavailable if substrate is archived - Adds lowercase to filter SKU on dashboard scan data tab - Fixes issues with graphs on the dashboard for Total Scans - Fix UI issue when adding a new substrate on Printing Equipment - [Admin]Removed clear button for Filter on session tab - [Admin]Add filters (company, equipment, status) to admin sessions tab --- // File: release-notes/release-notes-portal-1.20.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.20.0 | 14-11-2019 | ## Features & Changes - Adds Two Factor Authentication (2FA) please click [here](/docs/release-notes/high-level-notes/new-app-releases-november-19) to know more details about 2FA - [STE Admin]Allows STE admin to add notes while Approving or Rejecting Calibration session ## Fixes - Dislocated `Maps` in Dashboard Map tab - Fixed countries displayed in heat map on Dashboard Overview page - Fixes error message on archiving user - Fixes status when recover a user - Highlights specific field if enter incorrect value while user registration or adding new Printer --- // File: release-notes/release-notes-portal-1.21.1 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.21.1 | 17-01-2020 | #### Features & Changes - Adds feature to Duplicate a Work Order - Adds feature to Duplicate a Campaign with its settings - Adds campaign name in Code info section of Code tracking details #### Fixes - Map view on zooming out - Displays "None" for a Product that has no campaign - Fixes scan data (filtered by product) that included scans from other product - UI issue when WO is being cancelled - Removes arrows for sorting on Campaign - Codes Page - Fixes issue with displaying archiving substrates for a Printing Partner - Cosmetic issues --- // File: release-notes/release-notes-portal-1.22.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.22.0 | 21-02-2020 | #### Features & Changes - Add UAT permissions to SCM user role - Adds alerts to scan hover info popup - Fixes SCM name in the Track and Trace sidebar - Fixes issue with recovering archived products with the same name - User-friendly error message for changes in Additional Campaign Data - Fixes UI issue with mobile responsive portal - Updates product selection to autocomplete and hides archived campaign for filters on Codes created page. - Fixes issue with drop down while generating codes when all substrates for an equipment are archived. - Fixes status issue for `printed` Work Order - Enables `Enter` to perform "Verify" for 2FA - Fixes issue with redirect to company Home page after register and sign in - Fix style on track and trace page - Fixes reload after edit user language preferred on profile page - Hide N/A from code info sidebar on track and trace page - Fixes card loading on brand, product and printing equipment pages - Fixes scan info update to be instant in 'Code Tracking Details' screen - Fixes brand and printing partner selector on work order duplicate page --- // File: release-notes/release-notes-portal-1.23.1 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.23.1 | 20-04-2020 | #### Features - Adds new work order template _tap to know more about [WO template](/docs/release-notes/high-level-notes/new-app-releases-april-20###wo-template)_ - [Site Admin]STE UAT - allows STE users to create UAT tokens for common users - [Site Admin]Adds company & search filters to Work Order template and codes layout tabs - Adds alert message to printing partner select on wo blank page - Updates UI on Dashboard when no Campaigns are available #### Fixes - Fixes table style on Production report page - Fixes cosmetic issue with scm fields displayed on code track and trace page - Fix endpoint wo download serials - Fixes issue with dashboard - scan data update - Fixes back button on the code transfer page - Changed token key to id for profile - Changed requested_quantity to quantity for WO and Report page - Fixes issues with country as intended market on Map - Updates full country name for Intended markets - Fixes issue with values on the dashboard overview graph - Fixes cosmetic issue with filter on Site admin Calibration page - Updates portal mobile version --- // File: release-notes/release-notes-portal-1.23.2 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.23.2 | 22-05-2020 | #### Features - Adds new role Work Order Editor as a part of Brand Owner user roles - Adds option to edit team name on users & teams page - Adds archive switch on admin page custom layout tab - Fixes permission issue with SCM manager role being unable to upload csv - Fixes permissions for several Brand Owner and Printing Partner user roles - Fixes issues with login on safari - Updates product and sku filters on dashboard - Update user roles & permission - Work order template fixes --- // File: release-notes/release-notes-portal-1.24.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.24.0 | 05-06-2020 | #### Features #### STC 3.0 Editor integration Scantrust’s own Content Management System (CMS) - designed for users to roll out content quickly without needing support from ST developers. With the new STC configurator, a Brand Admin can create and easily customize the consumer landing pages that anyone scanning their QR codes will be redirected to. The previous version of the basic consumer landing pages had minimum customization available, and even small changes required development team resources to attend to. Brands can now also use the “Track & Trace” tab in the Configurator to set up a visualization of their supply chain journey, and can easily promote their products via the “Promotion” tab, also found in the Configurator. Other elements that Brand Admins will now be able to do themselves include: - Adding brand image(s) - Adding Call-to-Action buttons - Adding social media icons and links - Editing the terminology seen after each scan result (i.e.: “Genuine”, “Suspected Counterfeit,” etc.) - Setting up tabs/modules on the landing page - Adjusting colors and languages to be shown Users will be able to preview their edits in the portal directly. - Also adds **[STE Task Editor](/docs/release-notes/high-level-notes/new-app-releases-june-20)** to portal #### Fixes - Fixes dashboard user not seeing pagination on the dashboard scan list page. - Fixes issue where a printing partner could edit a SID work order --- // File: release-notes/release-notes-portal-1.25.3 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.25.3 | 29-12-2020 | #### Features - Add custom URL prefix and new extended id styles - Adds New User roles: Portal Lite and IT Admin - Adds option to update the products info via CSV upload - Improved code T&T page with scm data available in the sidebar - Updates System roles and permissions - Able to open certain links within the portal like filtered scans and code tracking into new tabs - Product can autocomplete on workorder creation page - UI update on work order creation page - while adding the code quantity, auto show spaces every 3 digits. - Adds in WO summary to show if workorder has serialized SG or not - Adds download CSV option in the product card #### Fixes - FP serialised = TRUE can only be set for serialized SG workorder and not for static SG and hybrid SG workorder types - Scans are updated/refreshed immediately as they occur, on the Code tracking details page - Fixes UI scroll issue at the end of the current page in the product list. - Fixes issue with the intended market not marked on the map - Fixes issue with Campaign: Alert tab - Fixes issues on Activity Log --- // File: release-notes/release-notes-portal-1.25.5 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.25.5 | 28-01-2021 | #### Features - prevent redirect to sales portal if full version - Epac V1 #### Changes & Bug Fixes - fix verifying code length for 2fa - fix message text on activity log page - fix code url format on wo infos card - fix code url status on wo template - remove uppercase from search filter on campaign settings codes tab - update activity log - fix pagination on campaign settings codes tab - change campaign list limit on dashboard page --- // File: release-notes/release-notes-portal-1.26.2 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.26.2 | 06-05-2021 | #### Features - Adds new workorder & code type filters on codes created page - Include blacklist reason and WO ID in the FE report as well as the download CSV #### Fixes - Removes “bypass scan result” feature for campaign. Bypass is ON by default and  only STE (Scantrust Engineer) has rights to toggle this feature. - Fixes maximum number of ticks and gridlines to show - Adds buffer to line chart on dashboard Fixes filter by user on dashboard - Fixes the calibration session view filter for the existing accepted session based on the substrate. - Fixes recipients list on the campaign alert tab Fix issues with approve calibration session - Fixes search feature on Code Tracking Details page Fixes notes in calibration sessions - Fixes copy button on Scan detail page and Code Tracking Details page - Updates warning message for Product csv upload - Fixes search feature issues on Code Tracking Details page - Cosmetic fixes for Dashboard track and trace --- // File: release-notes/release-notes-portal-1.27.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.27.0 | 08-06-2021 | #### Features Scantrust QR Manager can generate QR codes for you quickly.The current mechanism on our platform to create codes was intended for serialized codes and requires a complicated set of steps for non-serialized codes. With the QR manager feature, Brand Owners and ST Support Engineers can easily create and download non-serialized SID(Scantrust identifier) QR codes. These can then be integrated into their packaging in a user-friendly way without the need for a lot of training or operational support. #### Functions: - Configuration page on portal "QR Manager" - Supports CSV upload with product information in it - Not intended for more than 1000 codes - Designing a code with a preview on the page As a brand manager: - Log in to the portal and easily navigate to QR Manager from side menu (Based on a Company's Enterprise plan, this feature will be enabled) - Select products available in the company or more new products by “Add new Product” on the spot. - Bulk selection/Selection via CSV upload possible - Shows the non-serialized SID codes under each product with the associated information (date created, Analytics , Redirection settings and Hierarchy parameters) - Tap “Get QR codes” to generate codes from active codes available in the company - Codes can also be transferred to another product - Download the files - Choose the file format: - JPG, PNG, TIF, SVG, EPS, PDF - Choose DPI (SVG/TIFF/EPS/PDF only) - Naming convention: default + a way to include some of the fields in the naming convention, example: \{brand\}-\{sku\}-\{name\}-\{extended_id\}-\{version\}-\{error_correction\}-\{encoding\}-\{scale\}-\{dpi\}-\{quiet_zone\}.\{image_format\} - A zip file with the images is downloaded and it contains the files with the right naming convention - This feature is intended for non-serialized SID codes only and does NOT replace the current workorder template / workorder process for serialized and/or SSC codes - This is an enterprise plan feature and can only be enabled by a Scantrust Engineer. #### Other Changes/Bug Fixes : - Adds scan id to scan info pop-up dialogue on Maps - Removes train fingerprint button (function) from the portal as the endpoint /api/v2/ste/train/ has been removed from the backend. Core tech uses separate tools and endpoints. The fingerprint page for admin is still available. - Adds workorder ID column and its filter on Dashboard scan data - Fix issue with number of codes while generating a static workorder - Fixes issue with pagination on available downloads in Codes Created page - Fixes issue with work order info for SID codes to set activated codes when completed - Fixes grammar for Quantity in workorder info section - Fixes UI issue with Region header on Regions page - Fixes UI issue with the top countries list on Dashboard - Updates DOW to Dupont on Dashboard - Updates Heatmap to display scan count on dashboard - Fixes issue with error on campaigns - Fixes issue with Product filter on Dashboard --- // File: release-notes/release-notes-portal-1.28.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.28.0 | 12-07-2021 | #### Features #### SCM TRANSACTION HISTORY A simple UI accessible to the users of the company from the hamburger menu under the name “Code Transactions”, allowing viewing of the SCM transaction history. Following are the SCM transactions that a user can view: - Codes updated by STE app - Codes updated by an SCM upload (or manual “code edit”) from portal - Codes updated by an integration script running at the client calling our REST API. As a Brand Owner user with the permission to view codes, the history of any given code in the company will be shown in these logs. This includes type, Status, Codes affected, reference, user email and the timeframe fields for each entry available in the transaction history. Users can also see a particular transaction “Detail” with more details available like Full Parameters Json. #### Other Changes/Bug Fixes : - Update & adds new permissions for Codes created, SCM Transactions, User & Team - Updates delete permission for brand, product, printer and substrate - Adds the IDs for product/campaign/user/brand into the list view of the respective summary page - Displays QR Verified [Untrained] in dashboard on scans of Active untrained codes - Adds column for 'campaign name' if searched by 'serial number' or 'extended ID' on CODES CREATED page - Adds Serial Number search on Code tracking page - Fixes issue with navigating back to Apps page - Fixes UI issue with PP filter on Production Report - [STE] Adds Scan reason filter on Scan details page - [STE] Updated scan list items to 100 per page on Scan details page - [STE] Removes Dashboard icon on Bundles page --- // File: release-notes/release-notes-portal-1.29.1 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.29.1 | 19-08-2021 | #### Features - Updates new UI for Login, Forgot Password, User activation, welcome page as a part of the Freemium Saas feature. - Adds scan application “photo app” on Dashboard for scans from Photo Auth app - Fixes brand name and product name on filters in Codes created - Fixes product count on Brands page - Fixes issue with campaign on the Products card - Fixes issue with editing a product - Fixes scroll issue for scm fields on codes created page - Fixes SKU filter on Dashboard - Upgrade dependencies --- // File: release-notes/release-notes-portal-1.29.2 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.29.2 | 23-08-2021 | #### Features - Hotfix for calibration page --- // File: release-notes/release-notes-portal-1.29.3 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.29.3 | 16-09-2021 | #### Features - Feature/company plan filter - add pagination inside transaction detail card - add equipment id to printing equipment list - Feature/plans and contract migration - Improve Admin portal loading speed #### Changes & Bug Fixes - fix admin tabs pagination - remove fastMode from csv upload products --- // File: release-notes/release-notes-portal-1.29.4 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.29.4 | 16-09-2021 | #### Features - fix next button when in transaction list only one transaction - fix transation details card style - fix transaction details pagination --- // File: release-notes/release-notes-portal-1.29.5 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.29.5 | 08-10-2021 | #### Features - Add sort alphabetically by name on region page #### Changes & Bug Fixes - Fix email error message - Fix pagination on admin scan tab - Fix pagination on admin page companies tab - Fix report filter for printing partner - Fixes issue and does not allow serial number to be editable for ste users - Fix print equipment info - Transaction details fixes --- // File: release-notes/release-notes-portal-1.30.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.30.0 | 30-11-2021 | #### Features - Adds support for code space - Adds work order template duplication feature - Resend confirmation email for inactive users - [EPAC] STE Company creation - Fixes issue with brand getting disappeared on Edit product - Fixes incorrect filter result on codes created page - Adds QR Manager - logo and template support For ST Portal QR Manager and QR Pro: - Logo can be added to the center of the SID QR codes - Color customization possible for the codes - It can be saved as a template. QR code template allows users to create identical QR codes as previously generated. This is to avoid potential confusion with multiple users generating codes for the same company as well as making it easier to generate more QR codes. --- // File: release-notes/release-notes-portal-1.31.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.31.0 | 17-01-2022 | #### Features - Adds support for [multiple companies per user feature](/docs/release-notes/high-level-notes/new-app-releases-january-22) - Adds product sku to code info card - Fixes issue with clear filter button on admin page - Add photo auth icon on Dashboard - Fixes region list UI issue - Fixes issue with create WO button when no template is available - Fixes grammar issue on Register page --- // File: release-notes/release-notes-portal-1.34.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.34.0 | 23-05-2022 | #### Features - Adds Single Sign On - Adds async upload opt-in - Fixes model name on admin page - Fixes dashboard model name --- // File: release-notes/release-notes-portal-1.34.1 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.34.1 | 23-06-2022 | #### Features - Add a search company filter on the switch company page. --- // File: release-notes/release-notes-portal-1.35.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.35.0 | 26-07-2022 | #### Features - Fixes SSO login issues - CSV Upload improvements - Fixes extra space in header and warn user for an invalid key - Allows scm update by work order/product/status/blacklist reason - Small bug fixes - Shows sku in the work order product selection - Restricts serialized fingerprint work order quantity to 120k on portal - Updates error code handling to align with backend changes - Fixes “cancel work order” icon color to red --- // File: release-notes/release-notes-portal-1.35.1 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.35.1 | 29-07-2022 | #### Features - Hotfix for CSV upload header that allows status and activation_status as valid options for both async and sync upload --- // File: release-notes/release-notes-portal-1.36.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.36.0 | 13-09-2022 | #### Features - Adds template id to WO info card - Fixes product multi level JSON data - Fixes Code ID Style in WO template duplication - Fixes Back button on product CSV upload - Fixes code space URL in company info - Removes the extra slash in company info - Adds an indicator and validation for title field on registration page - Changes default http to https on all URL fields - Fixes header in product download CSV template - Fixes duplicate worlds on regions page - Fixes error message on registration page - Loads scan app name dynamically on the dashboard - Changes min zoom on regions map and dashboard map - Adds new errors to upload products by CSV - Adds default icon to scan application on dashboard page - Fixes SKU filter on dashboard --- // File: release-notes/release-notes-portal-1.37.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.37.0 | 11-11-2022 | #### Features - Added scan_id, country, scan_result in the dropdown list of adding dynamic fields to URLs. - Added total scan count on the code T&T page - Added dynamic app name to admin scan tab page and admin T&T page. - Updated instruction text in products CSV upload. - Added company id on partnerships page. - Updated Registration & Password Reset Messages on the portal. - Hided no_access role on Users & teams page. - Fixed Help center for Inspector user. - Aligned columns on User page. - Renamed "Bundle Range Update" to "Range Scan Update" on Transaction Details page. - Removed https for custom URL field. - Fixed UAT token creation for STE & normal users. - Fixed product filter on dashboard to search beyond the 100 limit. - Fixed product selection on the workorder form. - Removed bypass section & range scan switcher on campaign settings app tab. - Fixed grammar mistake on create work order page. --- // File: release-notes/release-notes-portal-1.38.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.38.0 | 10-02-2023 | #### Features - User have the option to redirect all the products in a campaign to E-label or set country level redirection to E-label (which means only redirect to E-label landing page for selected countries). --- // File: release-notes/release-notes-portal-1.39.10 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.39.10 | 12-05-2023 | #### Changes - Added brand reference to create work order interface. --- // File: release-notes/release-notes-portal-1.39.2 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.39.2 | 15-03-2023 | #### Changes Added link to register for e-label on Enterprise registration page. --- // File: release-notes/release-notes-portal-1.39.3 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.39.3 | 15-03-2023 | #### Changes Fixed a bug that related to Amplitude when blocking the cookie. --- // File: release-notes/release-notes-portal-1.39.4 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.39.4 | 16-03-2023 | #### Changes Fixed a bug on the registration page. --- // File: release-notes/release-notes-portal-1.39.5 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.39.5 | 21-03-2023 | #### Changes - Removed iubenda widget that blocks the language selectors and supports; - Plausible installed. - New URL for registration successful page and pass UTM parameters to registration successful page; - Switch registration page languages based on the user browser language. --- // File: release-notes/release-notes-portal-1.39.8 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.39.8 | 10-04-2023 | #### Changes - Removed cookie consent. --- // File: release-notes/release-notes-portal-1.39.9 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.39.9 | 04-05-2023 | #### Changes - Added brand reference to the product card; - Added a brand field in the product edit/creation; - Added brand reference to work order card & list. --- // File: release-notes/release-notes-portal-1.40.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.40.0 | 02-06-2023 | #### Changes ### Portal Enterprise v 1.40.0 - Added a new registration page for e-label SaaS portal and Enterprise portal With the goal of increasing the conversion rate of visits to registrations, we have updated the SaaS portal registration page. We have incorporated key selling points of our e-label solution based on feedback from our customers. Please note that this is not the final version; we plan to continue iterating on the page to make the registration process quick and seamless for our users. We have also revamped our Enterprise registration page to provide a clearer distinction between registering for e-label and Enterprise. Additionally, we now offer a way for leads who have not been in contact with Sales to easily get in touch. We have also clarified the distinction between the roles of a printing partner and a brand owner. These improvements aim to address the issues where prospects were registering instead of contacting Sales, users were confused about which role to select during registration, and it was difficult for visitors to return to the homepage after landing on this page. We also addressed the problem of e-label customers accidentally registering for Enterprise. - Added translations (French, Italian, Spanish, German, Dutch) for this page. --- // File: release-notes/release-notes-portal-1.41.1 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.41.1 | 11-08-2023 | #### Changes ### Portal Enterprise v 1.41.1 - Added Code Ingestion feature. --- // File: release-notes/release-notes-portal-1.41.2 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.41.2 | 06-09-2023 | #### Changes ### Portal Enterprise v 1.41.2 - Fixed an issue with kcal and kJ updates via bulk upload. - Added intelligent redirect feature. ### Intelligent Redirect **Intelligent Redirect** is going to take Scantrust solution to the next level, which one QR code can meet many different purposes. With Intelligent Redirect, customers have unimaginable flexibility to set the QR code redirection, such as running time-limited marketing campaigns, implementing more refined redirection based on code status and authentication results, and having redirection at a per-code level, among other possibilities. **Company-Level Transition:** The Intelligent Redirect feature is moving from the campaign level to the company level. For existing companies, the rules set within the Campaign will continue to function as before. **Enabling Intelligent Redirect:** By default, Intelligent Redirect is disabled for all companies. To use this feature, it must be enabled by a STE-admin. They can also migrate redirection rules from the older version. **User roles:** Access to the Intelligent Redirect feature is limited to users with the role of Brand Admin. **Flexible Rule Application:** With this update, a rule can now be applied to one, more, or all campaigns, offering greater flexibility in rule management. Similarly, a campaign can be applied to multiple rules. **Default Redirection Rules:** The default redirection rules will remain in place, following this hierarchy: Product → Brand → Company. **Active Period Settings:** Users can set active periods for redirection rules based on the scan date. Time zones can be selected for evaluation, noting that the BE timezone is always in UTC. The portal's timezone is determined based on the user's browser settings. **App Clip/Instant App Trigger:** Rules can now include a setting that triggers the App Clip or Instant App redirect before evaluating the destinations defined in that rule. **Rule Matching Criteria:** When a rule is evaluated, it will match based on the conditions of the rule and the conditions of the destination. If both sets of conditions are met, the redirection destination specified in the rule will be used. Rule conditions include the campaign to which the rule is applied, the rule's active period, and the rule's status. **Adjustable Rule Sequence:** To fine-tune rule execution, users can adjust the sequence of rules by moving them up or down. This allows for precise control over the order in which rules are evaluated. ### App Clip **Scantrust authentication is moving towards appless!** **App Clip** is a snippet of our Scantrust Consumer app, with the authentication functionality. With App Clip available, consumers using an iPhone and Safari browser can scan Scantrust secure codes without downloading the full mobile app. Consumers can access App Clip right now if brand owners activate it in Intelligent Redirect. App Clip may also be available outside of Intelligent Redirect. The Product team should reach out to the team once the user flow is clear **Seamless Access to App Clip:** Users simply need to click "Open" on the App Clip card. **App Launch Behavior:** - If Scantrust App Installed: Clicking "Open" will directly launch the Scantrust app if it's already installed on the device. - If App Clip Installed (No Scantrust App): Clicking "Open" will open the App Clip if it's already installed on the device. - If Neither App Clip Nor Scantrust App Installed: In this scenario, clicking "Open" will initiate the download and launch of the App Clip. There are two important restrictions: - This feature requires the code to be of the SSC code type. - The scan is not an authentication scan. Please note that App Clip and banner functionality does not extend to third-party browsers or Safari Private mode. ### Billing reports Billing reports were migrated from Tableau to icCube, ushering in a host of benefits for our users. This transition brings about faster data processing and improved data visualization. Users can now access a comprehensive view of the activated code count with breakdowns by date, work order, product, and campaign. This switch enhances data representation and ensures better support for future report customizations. Billing report is available on the 'Codes Created' page. These reports are accessible to companies that have been added to the list by our Data team. ### Scan Destination Simulator Scan Destination Simulator, a powerful feature now available on the Redirection Rules page. Interactive Testing: Easily enter the QR code Extended ID and configure scanning parameters to discover precisely where your codes are redirecting. Customized Options: Users can choose additional parameters, including code status and scan location, tailoring their testing experience according to specific requirements. This feature provides a seamless and efficient way to test and optimize QR code destinations. Scan Destination Simulator [Video](https://drive.google.com/file/d/1PsD2bYuUV7GrBRFDPSB7ONkEwl4khNxy/view?pli=1) --- // File: release-notes/release-notes-portal-1.41.3 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.41.3 | 01-11-2023 | #### Changes ### Portal Enterprise v 1.41.3 - Added the ability for a user to change the default company (Site Admin). - Included company name and campaign name in the Scan Details (Site Admin). - Included workorder ID in Scan Data CSV file. - Added the ability to check if a printer has conducted production scans for workorders, even if the session was not submitted (Site Admin). - Removed the blue banner from the Company Overview page. - Replaced the T&S and DPA links on the current e-label SaaS registration page. - Removed the word 'Beta' on the Billing report tab. --- // File: release-notes/release-notes-portal-1.42.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.42.0 | 14-12-2023 | #### Changes ### Portal Enterprise v 1.42.0 - Added Scan History Report. The dashboard allows users to track and analyze scans, codes, campaigns, and products with detailed breakdowns segmented by date, geolocation, app, and device brand. Gain valuable insights into scan performance, including status, and failure reasons analysis, to fine-tune your strategies and campaign management. Scan History Report is available on the dashboard page. The Scan History Report is now accessible on the dashboard page. It's important to note that this report does not have the same limitations as the current dashboard, removing the 2000 scan limit for maps. To obtain the report, you need to navigate to the Dashboard in the menu and then select the Scan History Report tab. - Added new e-label registration page. Redesigned the registration page for e-label users: - Added Amplitude events to the registration page. - Passed UTM parameters to Amplitude events. - Updated SaaS T&C and Privacy Policy pages. - Added an error message for file generation exceeding 1 GB on Codes Created page. - Added Directory sync field to create SSO on the admin page. - Fixed code transaction details. - Added workorder creation using workorder template endpoint. --- // File: release-notes/release-notes-portal-1.42.1 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.42.1 | 18-12-2023 | #### Changes ### Portal Enterprise v 1.42.1 - Fixed issue with work order creation. --- // File: release-notes/release-notes-portal-1.42.3 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.42.3 | 01-02-2024 | #### Changes ### Portal Enterprise v 1.42.3 - Made brand URL available in the Remy editor. - Removed "Secure Workflow". - Updated translation for the e-label registration page. --- // File: release-notes/release-notes-portal-1.43.2 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.43.2 | 07-03-2024 | #### Changes ### Portal Enterprise v 1.43.2 - Rebranded e-label registration page to U-label. - Added the removal feature for product and brand images after upload. - Added change role option for memberships (site-admin). - Added yellow banner on login page. - Fixed an issue when users see Download SSC icon and don't have permission for this action. --- // File: release-notes/release-notes-portal-1.44.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.44.0 | 12-04-2024 | #### Changes ### Portal Enterprise v 1.44.0 - Added e-label Enterprise Basic plan. - Fixed search feature for list with landing pages. - Fixed landing page search functionality on destination pop-up for Intelligence Redirection setup. - Changed Twitter logo for STC pages. --- // File: release-notes/release-notes-portal-1.45.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.45.0 | 27-05-2024 | #### Changes ### Portal Enterprise v 1.45.0 - Added iframe reload mechanism for e-label management tool and SaaS portal. - Disabled product CSV download if there were more than 2000 SKUs. - Removed full list product load from campaign and codes created pages. - Fixed the display issue with the active calibration session list. - Showed "50+" products when there were more than 50 in campaign list. - Removed product count from brand list. --- // File: release-notes/release-notes-portal-1.45.1 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.45.1 | 16-08-2024 | #### Changes ### Portal Enterprise v 1.45.1 - Added organization feature. - Organization Level: Allows for easier management of users across different products, regions, and divisions within an organization. - Centralized User Management: Org Admins in the management company can manage users across all member companies within the organization without needing to switch between companies. How to Use This Feature: 1. Create an Organization: An STE Admin on the site-admin initiates the process by creating a new organization and adding the relevant companies under it. 2. Manage User Access: Once the organization is set up, Org Admins can manage user access through the Organization tab found on the Users & Teams page. Here, they can efficiently control user permissions across all companies within the organization. Key Details: 1) Each organization has one management company, which cannot be changed after creation. 2) Brand Admins in the management company automatically have Org Admin access. 3) Org Admins can manage users in all companies within the organization, even if they are not part of a specific company. 4) A new tab in the Users & Teams section is available for Org Admins to manage all users within the organization. - Added code ingesting templates feature. Additionally, to simplify the Code Ingestion process, we are introducing Ingestion Templates. To create Ingestion Templates, please navigate to the "Ingestion Templates" tab in the site admin area. - Added support for multiple custom prefixes in code ingestion. - Fixed CSV file with users. - Fixed the display of error messages related to using headers with spaces in code ingestion. - Added new tab icons to the STC editor. --- // File: release-notes/release-notes-portal-1.46.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.46.0 | 10-09-2024 | #### Changes ### Portal Enterprise v 1.46.0 - Updated the sign-up page for e-label companies. - Added a banner for U-label migrated users on the login page. - Added e-label company association STE feature. - Added Enterprise basic view. - Restricted access to the admin page for certain user roles. - Added an ‘access’ icon to show the status of campaigns on Teams tab. - Added an ‘access’ field to show the status of campaigns on Campaigns list. - Added printing partner in the code ingestion form. - Updated translations. --- // File: release-notes/release-notes-portal-1.47.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.47.0 | 14-10-2024 | #### Changes ### Portal Enterprise v 1.47.0 - Added a new UI for the Custom Domain page. - Added a new code_export type on the Codes Created page, which is visible only to STE admin users. - Added support for .xls files for product CSV uploads on the Enterprise portal. - Removed features that should not be available to users on the Enterprise Basic plan. - Restricted regular users from creating SCM fields with the ‘scantrust_’ prefix. - Revamp of the Frontend Authentication Model. - Fixed the display of the SSO icon next to the user’s name in the Organization tab if their default company is SSO-enabled. - Fixed Calibration Sessions filters. --- // File: release-notes/release-notes-portal-1.48.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.48.0 | 15-11-2024 | #### Changes ### Portal Enterprise v 1.48.0 - Added external dashboard feature. - Added ‘is_archived’ column to products, users, and workorders download CSV file. - Added ‘campaign_id’ in header in the Create/Update products template file. - Fixed access rules pagination display. --- // File: release-notes/release-notes-portal-1.49.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.49.0 | 24-01-2025 | #### Changes ### Portal Enterprise v 1.49.0 - Added Portuguese and Greek to the e-label sign up page. - Updated the language switcher in the sidebar and the footer. - Added support to find a workorder by typing WO external ID. - Added External_id in workorder list view. - Included an External ID column in workorder CSV download. - Added a Partner Permission field in the STE WO template creation. - Enabled displaying partner permissions during template selection. - Added an ‘Activate Codes’ button when allowed on the printer partner side. - Added an 'Untrained' alert. - Added a scheduled maintenance banner. - Renamed "CSV upload" buttons for clarity. - Prevented workorder form from loading all WOs. - Fixed an issue with product creation. - Fixed UI issues on the workorder page. --- // File: release-notes/release-notes-portal-1.50.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.50.0 | 17-02-2025 | #### Changes ### Portal Enterprise v 1.50.0 - Fixed .xlsx to .csv conversion. - Updated permissions required for intelligent redirect and code ingestion features entry points. - Calibration session now opens in a new tab. - Fixed back button on calibration session page to redirect to the correct admin tab. - Added Amplitude events to custom dashboards. --- // File: release-notes/release-notes-portal-1.50.1 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.50.1 | 27-03-2025 | #### Changes ## Anti-Counterfeiting Dashboard We are introducing the Anti-Counterfeiting Dashboard to help our customers gain valuable insights into how their products and end consumers are being protected from counterfeits. This new tool provides a high-level overview of authentication activity and counterfeit detection, as well as investigative capabilities to analyze specific SKUs, codes, and counterfeit locations. #### Key Features: - Counterfeit Detection Overview – See how many of your SKUs are affected by counterfeits and track the number of counterfeit scans. - Data Filtering – Filter authentication and counterfeit scan data based on various important factors. - Scan Distribution Over Time – Analyze how authentication scans and counterfeit detections trend over time. - Product-Level Insights – Understand how many counterfeits are being scanned at the product level. - Serialized Code Monitoring – Track changes in the counterfeit scan ratio over time, particularly for serialized codes. - Blacklist Code Analysis – See details on how often blacklisted codes are still being scanned. - Counterfeit Location Insights – Identify where most counterfeits are being scanned, with options to filter by location accuracy and specific locations. This dashboard empowers customers to prove the value of their anti-counterfeiting solution, enabling better decision-making and proactive action against counterfeiting threats. --- // File: release-notes/release-notes-portal-1.51.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.51.0 | 10-04-2025 | #### Changes ### Portal Enterprise v 1.51.0 - Added ‘Location Method’ as a filter for scans. - Added deny_archived_lookup to the list of available partner permissions on the Work Order template creation form. - Added a button linked to the activate_codes partner permission in the Work Orders list view. - Fixed ‘Download product CSV’ button. --- // File: release-notes/release-notes-portal-1.52.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.52.0 | 29-05-2025 | #### Changes ### Portal Enterprise v 1.52.0 - Added a new registration page. - Removed the yellow banner on the login page. - Improved the landing page editor for authentication branding when using intelligent redirection. - Improved the landing page editor for authentication branding when using redirection rules. - Added ‘Europian union’ to the country group in campaign redirection. - Add ‘Europian union’ to the country group in intelligent redirection (Please note that the EU option will only appear if the operator is “is in”). - Fixed an issue when campaign duplication did not work with redirection rules. - Added Italian translation. --- // File: release-notes/release-notes-portal-1.52.1 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.52.1 | 13-06-2025 | #### Changes ### Portal Enterprise v 1.52.1 - Added a section to show suspected counterfeit scan images: - clicking on a row selects the corresponding location on the map below; - clicking on an extended ID in the “Statistics by Extended ID” table filters the table to show only scans of copies with that specific extended ID. - Added a link in the “Statistics by Extended ID” table that opens the corresponding code’s tracking page. - Updated the weekly stats to show monthly stats by extended ID. --- // File: release-notes/release-notes-portal-1.53.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.53.0 | 25-06-2025 | #### Changes ### Portal Enterprise v 1.53.0 - Added a Calibration Session History page for printer users. - Added an option to close and re-open the Support button. - Added company contact e-mail for partner in Partner List. - Fixed user permissions for the QR Manager. - Fixed redirection to alternative URLs when no landing page is set. - Fixed layout issue with long Work Order headers. --- // File: release-notes/release-notes-portal-1.54.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.54.0 | 30-06-2025 | #### Changes ### Portal Enterprise v 1.54.0 - Prevented e-label URL from being replaced by landing page URL when e-label is selected in campaign settings. - Updated the calibration session menu logic to improve visibility based on user permissions. --- // File: release-notes/release-notes-portal-1.54.1 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.54.1 | 18-07-2025 | #### Changes ### Portal Enterprise v 1.54.1 The Transparency by Amazon feature is now available in production. You can access it directly through [this link](https://portal.scantrust.com/#/amazon-transparency). This release introduces the ability to integrate your company's products with Amazon's Transparency program, ensuring that items are properly registered and traceable according to Amazon's requirements. Please contact support@scantrust.com to enable the feature. Once the integration is enabled, users can manage their products within the Products section. This page displays a list of all connected products, along with details such as product name, SKU, GTIN-14, connection status, auto-upload availability, number of connected codes, and creation date. This provides full visibility into which products are successfully registered with Transparency by Amazon. Adding new products is handled through the Connect Product flow. Users must select an existing product from Scantrust, enter the GTIN-14 that has already been registered in Amazon's Transparency program, and may optionally add remarks. After completing the process, the product will appear in the product list with its details and connection status. In order to automatically upload active codes to Amazon, the Enable auto-upload feature must be turned on. After this step, you can create new work orders or perform code injection. Twice a day, at 12:00 noon and 12:00 midnight GMT, an automated SWEEP operation is executed, which will upload all active codes to Amazon. Finally, to review both successful and unsuccessful transactions, you can use the Transactions tab. Please note: GS1 SGTINs are supported, and the length of extended IDs must be ≤ 20 characters. --- // File: release-notes/release-notes-portal-1.55.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.55.0 | 11-09-2025 | #### Changes ### Portal Enterprise v 1.55.0 - Added NPS survey. - Added display of renewal date for the e-label enterprise basic plan. - Added UI improvements on the registration page. - Added a code ingestion template key to the form. - Fixed available actions for Work ordes in Grid View vs List View. - Fixed an issue where the ‘Create’ button was disabled even when all required fields were filled for code ingestion templates. - Fixed an issue where an archived work order was displayed in the WOs list when creating an ingestion WO. - Fixed an issue where only the result of the first calibration scan was shown in the Calibration session history. - Fixed an issue where the calibration page displayed automatic tolerances instead of the validated ones. - Fixed an issue where, after selecting a printer equipment and navigating back, the printer list did not load. - Fixed an issue with template duplication when there is an image. - Fixed an issue where an archived template could not be found or restored in code ingestion templates. --- // File: release-notes/release-notes-portal-1.56.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.56.0 | 31-10-2025 | #### Changes ### Portal Enterprise v 1.56.0 - Updated UI for the Inteligent redirection tab in the Campaign’s optional panel. - Added an option to use images from the Gallery for Brand and Product. - Added extended ID to the Scan Detail Card on the Dashboard. --- // File: release-notes/release-notes-portal-1.57.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.57.0 | 16-12-2025 | #### Changes ### Portal Enterprise v 1.57.0 - Added Partnership V2. - Added a statistics-by-country table to the Anti-Counterfeit Dashboard. - Added a message about the week with the highest counterfeit-to-original scan ratio to the Anti-Counterfeit Dashboard. - Added an e-label status column to the product CSV/XLMS export. - Added UAT token search to STE Users Admin. - Adjusted the regexp in the product URL to allow mailto: and tel:. - Changed the date format on the Map widget. - Added latitude, longitude, and location method to the Map widget. - Fixed a text issue on buttons on the Codes Created Page. - Fixed archived campaigns being selectable for product creation. - Fixed some countries not displaying on the Regions map. - Fixed an issue with the SCM field when no region is selected. - Fixed an issue with Y/N-type of SCM fields. - Fixed access to the Code Tracking tab for Dashboard users. - Fixed the Code Tracking page to show only scans for the selected Extended ID. - Fixed a UI issue on the OS diagram. --- // File: release-notes/release-notes-portal-1.58.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.58.0 | 12-01-2026 | #### Changes ### Portal Enterprise v 1.58.0 - Hid campaign redirection settings when intelligent redirect was enabled. - Fixed the dropdown list to display all printer partners with an active partnership with the brand owner during work order template creation. - Fixed issues with the gallery on the product list. --- // File: release-notes/release-notes-portal-1.59.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.59.0 | 28-01-2026 | #### Changes ### Portal Enterprise v 1.59.0 - Added the ability to search Workorder templates by ID in site-admin. - Fixed an issue where the button width on the WO page was too small. - Fixed an issue where the campaign dropdown didn’t handle companies with over 1,000 campaigns when creating a new product - Fixed an issue with the custom domain dropdown during WO template creation. --- // File: release-notes/release-notes-portal-1.61.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.61.0 | 25-02-2026 | #### Changes ### Portal Enterprise v 1.61.0 - Improved the campaign search field in the product creation pop-up. - Added spacing in numbers during Work Order creation. --- // File: release-notes/release-notes-portal-1.62.1 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.62.1 | 17-04-2026 | #### Changes ### Portal Enterprise v 1.62.1 - Added translations feature for product and brand name and description. - Added user emails to team lists. - Added search tab for organization codes. - Added company plan column to User list and Company list in site admin. - Added calibration session ID to the calibration session. #### Brand & Product Translation The following fields can be translated: - Brand name - Product name - Product description All translations live alongside the original content and can be reused across the platform — including in your consumer-facing landing pages. 1. Set up company languages Before translating, a brand admin needs to configure which languages the company works with and pick a default reference language for machine translation. Navigate to Company Info → Languages and Translations to: - Select the languages you want to localize into (Chinese, Japanese, Thai, Dutch, etc.) - Set the company reference language — this is the source language used for machine translation and the default for brand/product names 2. Translate a brand or product There are two entry points for translation: a) From the edit screen A new translation icon appears next to each translatable field. Click it to open the translation modal for that specific field. b) From the brand/product card A translation button is now available directly on the brand/product card header, which opens the full translation modal covering all translatable fields at once. 3. The translation modal The translation modal is where the magic happens. From here you can: - View and edit translations for every language configured in company settings - Update the list of languages without leaving the modal (quick link back to company settings) - Use machine translation — either for a single language or for all languages at once with one click 4. Translations in the Landing Page Editor This is where translations really pay off. - New landing pages will automatically use the company's configured languages by default — no extra setup needed. - The following widgets and placeholders will now pull the correct translation based on the viewer's language: - Product name widget - @product name - @product description - @brand name That means one landing page, many languages — and the content updates itself based on what's been translated --- // File: release-notes/release-notes-portal-1.62.2 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.62.2 | 18-05-2026 | #### Changes ### Portal Enterprise v 1.62.2 ## Fake URLs in the AC Dashboard Fraudulent URL scans are now tracked as counterfeit scans and visible across the AC Dashboard, with a new dedicated campaign and updated widgets and filters. 1. Fake URL scans are now counted Each company's dashboard now shows the total number of unique fraudulent URLs disrupted. These scans are counted as: - Counterfeit scans - Authentication app scans — not engagement scans, since only authentication apps can recognize fake URLs 2. New "Fraudulent URLs" campaign A phantom campaign called Fraudulent URLs has been added. When selected, the dashboard shows only fake URL scans, making it easy to drill down into fraudulent activity alone. --- // File: release-notes/release-notes-portal-1.63.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.63.0 | 08-06-2026 | #### Changes ### Portal Enterprise v 1.63.0 - Added SGTIN work order and template creation. - Added Continuous QA status on the Workorder list page. - Updated translations. --- // File: release-notes/release-notes-portal-1.64.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.64.0 | 16-07-2026 | #### Changes ### Portal Enterprise v 1.64.0 - Added Google Sign-Up. - Standardized "Sign in" copy across login and registration pages. - Improved error messages for SCM data uploads via CSV with clearer, user-friendly descriptions and accurate row numbering. - Fixed an issue where users could upload codes via CSV for a product that did not exist in the company. - Fixed an issue where product CSV upload errors in campaigns were displayed one at a time instead of all at once. - Fixed inconsistent header height on registration pages. - Fixed duplicate team creation on rapid double-click. - Fixed incorrect row numbers in product upload error messages. - Fixed UI issues on the Partnership page. - Fixed an issue where the Region/Country autocomplete did not automatically select matching results. - Fixed region key validation error showing a generic message instead of a field-specific one. - Fixed an issue with saving printing equipment when the name was too long. - Fixed an issue where a long company name overlapped other elements. - Fixed the old favicon for Safari. - \[site-admin\] Added a change email button for users in e-label and ST Pro companies. - \[site-admin\] Fixed an issue where the "Back to admin" button did not work on the Calibration tab. - \[site-admin\] Replaced different fonts in column headers with a sorting icon in site-admin. --- // File: release-notes/release-notes-portal-1.65.0 | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.65.0 | 31-08-2026 | #### Changes ### Portal Enterprise v 1.65.0 - Added Portuguese. - Fixed an issue with the API key on the Dashboard. - Fixed an issue where the character counter for the product description stopped at 0, making it unclear how much text needed to be removed. - Fixed an issue where the company website field on Step 2 automatically prepended an incomplete protocol (https:/) when characters were deleted after the protocol. - Fixed an issue where the WO creation form sent empty strings for cleared optional fields. - Fixed an issue where image name validation (minimum 5 characters) was not triggered if the name field was not manually focused before saving. - Fixed an issue where view mode icons were displayed when the gallery was empty. - \[site-admin\] Fixed an issue where the layout selection remained visible after switching from SG code back to SID code. --- // File: release-notes/release-notes-portal-QRManager-1.0 | Platform | Version | Date | | :------- | :------ | :--------- | | QR Manager | 1.0 | 08-06-2021 | #### Features Scantrust QR Manager can generate QR codes for you quickly.The current mechanism on our platform to create codes was intended for serialized codes and requires a complicated set of steps for non-serialized codes. With the QR manager feature, Brand Owners and ST Support Engineers can easily create and download non-serialized SID(Scantrust identifier) QR codes. These can then be integrated into their packaging in a user-friendly way without the need for a lot of training or operational support. #### Functions: - Configuration page on portal "QR Manager" - Supports CSV upload with product information in it - Not intended for more than 1000 codes - Designing a code with a preview on the page As a brand manager: - Log in to the portal and easily navigate to QR Manager from side menu (Based on a Company's Enterprise plan, this feature will be enabled) - Select products available in the company or more new products by “Add new Product” on the spot. - Bulk selection/Selection via CSV upload possible - Shows the non-serialized SID codes under each product with the associated information (date created, Analytics , Redirection settings and Hierarchy parameters) - Tap “Get QR codes” to generate codes from active codes available in the company - Codes can also be transferred to another product - Download the files - Choose the file format: - JPG, PNG, TIF, SVG, EPS, PDF - Choose DPI (SVG/TIFF/EPS/PDF only) - Naming convention: default + a way to include some of the fields in the naming convention, example: \{brand\}-\{sku\}-\{name\}-\{extended_id\}-\{version\}-\{error_correction\}-\{encoding\}-\{scale\}-\{dpi\}-\{quiet_zone\}.\{image_format\} - A zip file with the images is downloaded and it contains the files with the right naming convention - This feature is intended for non-serialized SID codes only and does NOT replace the current workorder template / workorder process for serialized and/or SSC codes - This is an enterprise plan feature and can only be enabled by a Scantrust Engineer. #### Other Changes/Bug Fixes : - Adds scan id to scan info pop-up dialogue on Maps - Removes train fingerprint button (function) from the portal as the endpoint /api/v2/ste/train/ has been removed from the backend. Core tech uses separate tools and endpoints. The fingerprint page for admin is still available. - Adds workorder ID column and its filter on Dashboard scan data - Fix issue with number of codes while generating a static workorder - Fixes issue with pagination on available downloads in Codes Created page - Fixes issue with work order info for SID codes to set activated codes when completed - Fixes grammar for Quantity in workorder info section - Fixes UI issue with Region header on Regions page - Fixes UI issue with the top countries list on Dashboard - Updates DOW to Dupont on Dashboard - Updates Heatmap to display scan count on dashboard - Fixes issue with error on campaigns - Fixes issue with Product filter on Dashboard --- // File: release-notes/release-notes-portal-QRManager-1.1 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.1 | 21-06-2023 | #### QR manager v 1.1 #### Features e-label bulk upload feature is one of the most-wanted features requested by Enterprise customers. It is a feature that sets us apart strategically from our competitors since none of them have it! In this version of the feature, customers can upload two key pieces of information required by regulations: ingredient lists and nutrition information. They can do so by using Excel, a file format that most of our customers are familiar with. One notable highlight is that we have provided a user-friendly drop-down list for standard regulation values, which users can select from. This version of the feature is currently offered only in QR Manager, exclusively for e-label Enterprise customers, and it is available only in the English version. For more details about the feature, you can refer to the information provided here. - Added e-label bulk upload feature. - Fixed an issue with product creating/editing. --- // File: release-notes/release-notes-portal-QRManager-1.10.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.10.0 | 27-01-2025 | ## QR manager v 1.10.0 #### Features - QR manager v 1.10.0 - Updated e-label bulk upload template. - Updated the ingredient list for bulk upload. - Updated the Italian recycling law packaging/material list for bulk upload. - Added the European Union to the country list for bulk upload. - Added Spanish recycling information for bulk upload. --- // File: release-notes/release-notes-portal-QRManager-1.11.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.11.0 | 10-04-2025 | ## QR manager v 1.11.0 #### Features - Added Image Gallery feature. - Added support for "&" and Unicode characters in PDF format. - Fixed the display of the custom prefix for companies with a single custom prefix. --- // File: release-notes/release-notes-portal-QRManager-1.11.1 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.11.1 | 21-05-2025 | ## QR manager v 1.11.1 #### Features - Added check digit validation for GTIN. - Added GS1 data attributes field. - Fixed an issue where adding tags via bulk actions removed all previously added tags in the image gallery. --- // File: release-notes/release-notes-portal-QRManager-1.12.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.12.0 | 08-07-2025 | #### QR manager v 1.12.0 #### Features - Added a brand filter. - Added the ability to change a code from regular to GS1. - Added field (21) Serial Number as the primary key for GS1 Digital URL QR Code. - Fixed a UI issue when GS1 Link input reached the maximum character limit. --- // File: release-notes/release-notes-portal-QRManager-1.12.1 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.12.1 | 18-07-2025 | #### QR manager v 1.12.1 #### Features - Added user-friendly messages when image tag format is incorrect for the Image Gallery. --- // File: release-notes/release-notes-portal-QRManager-1.13.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.13.0 | 18-09-2025 | #### QR manager v 1.13.0 #### Features - Added a QR code template naming feature. - Expanded the quiet zone around the QR code, enabling users to add two lines of text on each side and to choose different sizes for both the QR code and the text. --- // File: release-notes/release-notes-portal-QRManager-1.14.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.14.0 | 31-10-2025 | #### QR manager v 1.14.0 #### Features - Updated the Excel bulk upload template: - Updated the Tutorial sheet. - Added new sheets: - Additional Information, - Settings. - Updated the Free Text Fields sheet: - Changed sheet name to Translatable fields. - Added the following fields to the dropdown: - Product display name, - Product description, - Ageing/Production methods (Spirit), - Additional info link text. - Added Norwegian column. - Updated the Country-specific sheet: - Added the prefix “Business operator” for existing options, - Added “Impressum” in the field dropdown, - Added Norway column. - Added an option to use images from the Gallery for Product. - Added a custom identifier option when generating a Standard QR code. - Added a message to increase the ʼCreate a New QR Code’ link when there is 0 code quota. - Fixed an issue when selected campaign reset to the top campaign after loading. - Fixed an issue when QR Codes were not displayed after clicking “Get QR codes”. --- // File: release-notes/release-notes-portal-QRManager-1.14.1 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.14.1 | 26-11-2025 | #### QR manager v 1.14.1 #### Features - Added UX improvements in the code list. - Added a link to the Help Center in the Upload e-label data section. - Changed the quota total number to ‘Unlimited’ for E-label enterprise and Enterprise basic plans. - Fixed an issue with adding a new tag. - Fixed the display of Norwegian in the list of languages in the Upload e-label data section. - Fixed the display of the QR Code tab. --- // File: release-notes/release-notes-portal-QRManager-1.15.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.15.0 | 29-01-2026 | #### QR manager v 1.15.0 #### Features - Added the ability to duplicate a product including its e-label data. - Added “(01)” before the GTIN in the text displayed around the QR code. - Updated the Excel bulk upload template: - Added a new template. - Added missing translation fields for all templates (product_origin_expression, responsible_consumption_message, recyclability_message, organic_message, certifications_message). - Added missing fields from the Product Information section (product_type, production_method, wine_colour, traditional_terms). - Updated the Tutorial sheet to reflect all these changes. - Fixed a UI issue that occurred when the SKU was too long. - Updated translations. --- // File: release-notes/release-notes-portal-QRManager-1.15.1 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.15.1 | 25-02-2026 | #### QR manager v 1.15.1 #### Features - Added the ability to use the file name as the key when uploading multiple images. - Added an error message for when the scan destination name is too long. - Added a message on the Redirection Rules page indicating that it is not enabled. - Updated translations. --- // File: release-notes/release-notes-portal-QRManager-1.15.2 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.15.2 | 26-03-2026 | #### QR manager v 1.15.2 #### Features - Updated the Excel bulk upload template: - Added template selection in the Excel file. - Columns that do not apply to the selected template are now grayed out. - The “ingredient” column dropdown now shows only the ingredients relevant to the selected template type. Exception: for aromatised wine templates, the dropdown includes ingredients for both aromatised wine and wine. - Fixed an issue in the “Upload Image” popup to prevent an internal error when selecting and cropping images. --- // File: release-notes/release-notes-portal-QRManager-1.15.3 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.15.3 | 08-06-2026 | #### QR manager v 1.15.3 #### Features - Added support for unlimited code quotas. - Fixed an issue where translations in translatable fields were not reflected in the editor after bulk upload. - Fixed an issue with uploading and saving 2 MB product images. - Added the ability to update keys in the Image Gallery. - Fixed an issue where the image counter did not display the correct number of images after upload. - Fixed an issue where archived images were incorrectly re-archived together with active images in the Image Gallery. - Improved visibility and placement of error messages when uploading invalid image files. - Fixed an issue where archived images disappeared from the Gallery after being archived. --- // File: release-notes/release-notes-portal-QRManager-1.15.4 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.15.4 | 16-07-2026 | #### QR manager v 1.15.4 #### Features - Added the ability to archive a brand in QR manager. - Fixed an issue where QR Manager displayed incorrect landing page redirections for companies using Intelligent Redirections 2.0. - Fixed an issue where the "is in" operator in Redirection Rules did not work for Code Activation Status. - Fixed an issue where the publish button was available when an e-label had not been created. - Fixed an issue with inconsistent search results for images with custom tags. --- // File: release-notes/release-notes-portal-QRManager-1.15.5 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.15.5 | 26-08-2026 | #### QR manager v 1.15.5 #### Features - Added the ability to download a CSV file containing QR URLs for created codes. - Updated the e-label Excel template: - Renamed the "Other" template to "Other (food & beverage)" in the tutorial sheet. - Updated the Base grapevine product list in the aromatised wine template. - Added a new Contact field in Business operator (all templates). - Added Manufactured by, company name, and contact fields in Sustainability — Packaging information (all templates). - Added the new packaging operator type to Translatable fields (all templates). - Updated the tooltip to include the QR and barcode placement guide. - Fixed an issue where image name validation (minimum 5 characters) was not triggered if the name field was not manually focused before saving. - Fixed an issue where view mode icons were displayed when the gallery was empty. #### Download CSV files for created codes From the QR codes list, the Download menu now offers two options: QR code images and URLs in CSV — a CSV file containing the QR URLs of the selected codes. QR codes list Download menu showing QR code images and URLs in CSV options --- // File: release-notes/release-notes-portal-QRManager-1.2 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.2 | 14-11-2023 | #### QR manager v 1.2 #### Features Fixed the display of the number of codes that are blacklisted as 'blacklisted'. Changed the 'i' logo into a vector format. Added the ability to resize QR codes in millimeters. --- // File: release-notes/release-notes-portal-QRManager-1.3 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.3 | 16-11-2023 | #### QR manager v 1.3 #### Features 1. Updated Excel template file for bulk upload. 2. Product Information tab 2.1. Renamed columns to standardize the name on the editor and Excel: - “product” to “sku”; - “type” to “product_type”; - “bottle_size” to “net_quantity_ml”; - “sweetness” to “sugar_content”; - “vine_variety” to “grape_variety”. 2.2. Added new columns: - “name” - equivalent to the ‘Product display name’ on the editor. It is a free text field; - “bottled_in_protected_atmosphere_msg” - a dropdown selector for these 2 options: - Bottled in a protective atmosphere; - Bottling may happen in a protective atmosphere - don’t use this for aromatised wine; 2.3. Added new product types:** - Wine: - Grape must - Partially fermented grape must - Partially fermented grape must extracted from raisined grapes - Concentrated grape must - Rectified concentrated grape must - Wine vinegar - Aerated sparkling wine - obtained by adding carbon dioxide - Aerated sparkling wine - obtained by adding carbon anhydride - Aerated semi-sparkling wine - obtained by adding carbon dioxide - Aerated semi-sparkling wine - obtained by adding carbon anhydride - Aromatised wine - Aromatised wine - Wino ziolowe - Spirit - Fruit spirit 2.4. Removed product types: - Aerated sparkling wine - Aerated semi-sparkling wine 3. Ingredients tab Add a new column, 'aromatised_base_wine_name,' to declare the ingredients of the aromatized wine base. This column includes two selections. **- “Wine”** - ‘Wine’ will be filled in the Aromatised Wine Type in the editor. It indicates that the ingredients in the same row are aromatized base wine ingredients, and these ingredients will be filled in the '1. Base grapevine product ingredients' section in the editor in the aromatized wine template. **- “Not an aromatised wine”** - It indicates that the ingredients of the same row are NOT aromatized base wine ingredients, so the ingredient will be filled in the '2. Other Ingredients' section in the aromatized wine template. - This is also the selection for wine ingredients. When you upload for the wine template, you should select this value or leave the column empty. This column allows the insertion of custom values. If a custom value is entered, it will be treated similarly to 'Wine.' This value will be machine-translated. If this column is left empty, it behaves similarly to 'Not an aromatized wine,' which means the ingredients of the same row will be treated as (a) '2. Other Ingredients' in the aromatized wine template and (b) ingredients in the wine template. - Added support for entering a custom category and ingredient in the format of 'Custom category | Custom ingredient (NOTE: Custom category is not machine translatable now, so it won’t show up in the machine translation tab; Custom ingredient is translatable). 4. Nutrition tab - The user can now input values using the '\<' sign, which will be reflected as the '\<' sign in the editor. - Changed column names to show the measurement unit: - “fat” to “fat_g” - “saturated fat” to “saturates_g” - “carbohydrate” to carbohydrate_g” - “sugar” to “sugar_g” - “protein” to “protein_g” - “salt” to “salt_g” - Added a new column “show_zero_values_as_negligible”. TRUE activates the toggle on the editor, while FALSE deactivates it. 5. Added a new sheet Pictograms This sheet allows the selection of standard pictograms from our library. The mechanism for filling in value is similar to ingredients, one icon per row per SKU. - NOTE: the preview may be displayed abnormally in Excel. Implemented an upload behavior: if a value exists in the editor but is absent in the Excel sheet, the value will be removed from the e-label editor. This ensures that values and empty fields in the Excel sheet will replace corresponding entries in the editor. --- // File: release-notes/release-notes-portal-QRManager-1.4 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.4 | 01-02-2024 | #### QR manager v 1.4 #### Features - Added support for uploading the free text field for ingredient in bulk upload. - Added support for uploading Italian recycling regulation in bulk upload. - Hidden redirection setting when the QR code is linked to e-label landing page. - Changed a warning message that asks users to upgrade their plan. - Fixed a bug when fields become empty after bulk upload. --- // File: release-notes/release-notes-portal-QRManager-1.5.1 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.5.1 | 28-05-2024 | #### QR manager v 1.5.1 #### Features - Updated the drop-down list based on the updated ingredient category, ingredient list and wine product list. --- // File: release-notes/release-notes-portal-QRManager-1.5 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.5 | 12-04-2024 | #### QR manager v 1.5 #### Features - Added GS1 flow. --- // File: release-notes/release-notes-portal-QRManager-1.6 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.6 | 12-07-2024 | #### QR manager v 1.6 #### Features - Added wine colour in bulk upload. - Added product method in bulk upload. - Added an option to mark as organic in bulk upload. - Added Country-specific support in bulk upload: - Impressum - Business operators - Updated Tartaric acid to Tartaric acid (L(+)-) and Malic acid to Malic acid (D,L-; L-) in bulk upload. --- // File: release-notes/release-notes-portal-QRManager-1.7 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.7 | 15-11-2024 | #### QR manager v 1.7 #### Features - Added support for multiple custom prefixes. - Added .xlsx uploading support for the ‘create multiple products’ feature. - Fixed an issue where scantrust_url appeared when setting a custom domain or self-hosted domain. --- // File: release-notes/release-notes-portal-QRManager-1.9.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.9.0 | 16-12-2024 | #### QR manager v 1.9.0 #### Features The Enhanced QR Code Customization feature in the QR Manager, offering more flexibility and options for tailoring QR codes to clients needs. This update improves the QR code customization feature previously available in U-label legacy. Users can now add text and the “ⓘ” icon around the QR code with enhanced type and positioning options. Features: 1. Customizable Text and Icon Around QR Code - Users can add text fields in 4 positions: Top, Bottom, Left, Right. - Options include SKU, GTIN, Energy (e.g., E(100ml)=xxkj/xxkcal), and free text. - Users can input custom values or select predefined fields from a dropdown. - The Unicode “ⓘ” icon can optionally be added before the text (e.g., “ⓘ Abcd1234”). - Text length is limited to ensure proper fit around the QR code. 2. Template Saving - Text configurations can be saved as templates for reuse in future QR code generations. 3. Fixed Text and Style Settings - Font size for QR code text is fixed and cannot be customized by the user, but the color can be changed. 4. Downloadable QR Code Formats - Text and QR codes can be downloaded in image formats (JPG, PNG, PDF, EPS, etc.). - Codes with the “ⓘ” icon not rendering in PDF and EPS formats. This update ensures compliance with regulatory requirements while offering greater flexibility for QR code customization. - Added the ability to unpublish elabels. - Added the ability to remove product image. - Removed the default "i" logo from QR code. - Updated translations. - Added fixes for the intelligent redirect feature: • Added a destination condition for specifying a blacklist reason. Updated “Live” to “Live now” for improved clarity. • Campaign names now display in a single row, separated by commas. • Adjusted text alignment and removed unnecessary elements to match the design specifications. • Resolved a bug where the block and connections did not disappear when deleting the last item in the block. • Fixed the issue where “OR” did not disappear after deletion. • Fixed a scrolling issue on the page listing rules. • Fixed a bug where the “Add destination” pop-up incorrectly appeared after the first edit of a destination. • Ensured that the system provides feedback if a date/time is not properly added. • Corrected behavior where clicking “Close without publishing” canceled the rule instead of saving it as paused. • Corrected text disappearance for actual conditions when too many items were selected. • Resolved an issue where page scrolling was not functional when a rule was open. • Prevented the system from looping and failing to redirect users to the landing pages section when no landing pages were created. • Resolved an issue where the second expression was deleted after ‘and/or’ changes. • Fixed an issue where the plus icon disappeared after ‘and/or’ changes if only two expressions were present. • Fixed an issue where users were unable to change “AND” to “OR.” --- // File: release-notes/release-notes-portal-QRManager-1.9.1 | Platform | Version | Date | | :-------------- | :------ | :--------- | | QR Manager | 1.9.1 | 18-12-2024 | #### QR manager v 1.9.1 #### Features - Fixed an issue where e-label status showed “Not Created” after editing and clicking “Upgrade”. --- // File: release-notes/release-notes-portal-STETaskEditor-1.1.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | STE TASK EDITOR | 1.1.0 | 30-04-2021 | #### Features - Adds support for compact codes in RegEx validation - Fixes issue with “@” symbol in widgets --- // File: release-notes/release-notes-portal-STETaskEditor-1.2.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | STE TASK EDITOR | 1.2.0 | 18-08-2021 | #### Features - Updated to JSON version: 3 - Allows the STE Task editor to control the sound settings for STE lookup and upload task scan screens. By default it will be off (enabled: false) - Adds support for scm data field `@device.date_time` to get scan date and time. --- // File: release-notes/release-notes-portal-STETaskEditor-1.3.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | STE TASK EDITOR | 1.3.0 | 18-08-2021 | #### Features - Upgrades to JSON v4 schema - Fixes issue with editing team names - Adds support for NFC look up in the tasks Note: Currently v4 JSON is not mandatory to upgrade but in order to use above features it is required to upgrade. --- // File: release-notes/release-notes-portal-STETaskEditor-1.5.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | STE TASK EDITOR | 1.5.0 | 13-09-2022 | #### Features - Fixes rule duplicating after editing. - Adds UA language code. - Fixes widget for SCM activation status. - Allows for user to select any SCM fields --- // File: release-notes/release-notes-portal-STETaskEditor-1.6.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | STE TASK EDITOR | 1.6.0 | 15-12-2022 | #### Features - Added support v6 JSON schema with backward compatibility. - Added ability to choose scan by range (two scan) or associate scan by range (with parent child association along with range scan). - Added Range scan switcher on Upload task editing page (Range scan option isn’t available for lookup tasks). --- // File: release-notes/release-notes-portal-STETaskEditor-1.6.1 | Platform | Version | Date | | :-------------- | :------ | :--------- | | STE TASK EDITOR | 1.6.1 | 13-11-2023 | #### Features - Fixed UI issues that arose after upgrading from JSON v.2. --- // File: release-notes/release-notes-portal-wo-generator | Platform | Version | Date | | :--------------- | :------ | :--------- | | scantrust portal | 1.24.1 | 13-10-2020 | #### Features #### Offline Work Order generator Adds offline work order generator to the zip folder when the code quantity to be generated is more than 120K. Before it required input from the ST team to generate large work orders, now printers can generate the codes locally on their own. - To generate the code images a user has to run the executable file (.exe) available in the work order zip downloaded. - A “generator.txt” with instructions will also be available in the same zip file. - There will appear a new folder called 'codes' once the code generation starts - it will contain all the image files (.tiff files). - A "files.csv" is also created which maps the generated codes to their serial numbers. --- // File: release-notes/release-notes-scantrust-consumer-1 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 1.0.0 | 5-3-2018 | ## Containing changes - Order of SCM tags on STC after scan as per SCM T&T set is fixed --- // File: release-notes/release-notes-scantrust-consumer-2.0.0 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 2.0.0 | 15-08-2018 | ## Containing changes - Default STC - STC Customization --- // File: release-notes/release-notes-scantrust-consumer-2.0.1 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 2.0.1 | 13-11-2018 | ## Containing changes ### STC editor - Option to create a Basic (default) STC for all new campaigns - Fixes STC Lookup --- // File: release-notes/release-notes-scantrust-consumer-2.0.2 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 2.0.2 | 17-01-2019 | ## Containing changes ### STC editor - Fixes issues with STC Configurator: Promotion page, Slideshow page, Wechat follow page --- // File: release-notes/release-notes-scantrust-consumer-2 | Platform | Version | Date | | :------- | :----------- | :--------- | | STC | 2.1.0 | 07-05-2019 | ## Containing changes - Updated Typeform Integration with STC Configurator from `Support & Report Page` - Fix UI issue on Product description page - Fixes issue with displaying SCM information for many SCM tags - Fixes issues with line breaks on STC pages --- // File: release-notes/release-notes-scantrust-consumer-3.0.0 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.0.0 | 05-06-2020 | ## Containing changes #### STC 3.0 Editor integration Scantrust’s own Content Management System (CMS) - designed for users to roll out content quickly without needing support from ST developers. With the new STC configurator, a Brand Admin can create and easily customize the consumer landing pages that anyone scanning their QR codes will be redirected to. The previous version of the basic consumer landing pages had minimum customization available, and even small changes required development team resources to attend to. Brands can now also use the “Track & Trace” tab in the Configurator to set up a visualization of their supply chain journey, and can easily promote their products via the “Promotion” tab, also found in the Configurator. Other elements that Brand Admins will now be able to do themselves include: - Adding brand image(s) - Adding Call-to-Action buttons - Adding social media icons and links - Editing the terminology seen after each scan result (i.e.: “Genuine”, “Suspected Counterfeit,” etc.) - Setting up tabs/modules on the landing page - Adjusting colors and languages to be shown Users will be able to preview their edits in the portal directly. --- // File: release-notes/release-notes-scantrust-consumer-3.4.1 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.4.1 | 12-04-2024 | ## Containing changes ### STC editor - Changed Twitter logo for STC pages. --- // File: release-notes/release-notes-scantrust-consumer-3.4.2 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.4.2 | 16-08-2024 | ## Containing changes ### STC editor - Added new tab icons to the STC editor. --- // File: release-notes/release-notes-scantrust-consumer-3.6.0 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.6.0 | 10-04-2025 | #### Changes ## Image Gallery, Translation Management, and Authentication Styling Customization We are excited to introduce three new features in our latest release: Image Gallery, Translation Management, and Authentication Styling Customization. Here’s an overview of each feature and how they enhance the platform. ## 1. Image Gallery Feature The new Image Gallery streamlines media management, making it easier to select and manage images within the platform. #### - Currently available in the Landing Page Editor. Coming soon to the SaaS Portal and e-label Management Tool. #### - User Benefits: - Easily select custom labels to reduce repetitive work. - Download previously uploaded images from Scantrust if local files are lost. - Archive images instead of deleting them to prevent accidental removals. #### - Key Functionalities: - Upload Images: Upload single or multiple images with system-generated unique keys and tagging support. - Image Viewing Options: Choose between Grid View (larger images) or List View (detailed metadata). - Search & Filtering: Search images by name, key, or tags, with an option to include archived items. - Image Selection: Directly choose images from the gallery within the Landing Page Editor. #### Example Screenshots: - Image Gallery main view - Upload image pop-up - Image selection in Landing Page Editor ## 2. Translation Management A new Translation Management ensures a smoother localization process when editing landing pages. #### What’s New? - Default Language Selection: Set a fallback language when creating landing pages. - Language Tab: Follows the same UI as the e-label translator with machine translation, review, and publishing workflows. - Enhanced Editing: Add and remove languages, edit linked images, and apply text formatting for translations. - Real-Time Preview: Instantly view translations with an improved language dropdown. #### Example Screenshots: - Selecting Default and Translation Languages - Language tab with translations and real-time preview with language switcher ## 3. Authentication Styling Customization We’ve enhanced authentication styling to allow more branding control for authentication applications. #### - New Customization Options: - Logo Upload: Display branded logos on the authentication app’s splash and scanning screens. - Color Themes: Configure background, primary, and secondary colors to match brand identity. - Advanced Setup for STE Users: Additional settings for language enforcement and torch control. #### Example Screenshots: - Auth app branding editor - Themed authentication screen To use this feature in photo-auth or video-auth, you need to configure the CTA button on the landing page or set up a redirect in the company settings using the following URLs: #### 1. video-auth - Landing page: https://verify.scantrust.com/video/?uid=@scan_id&api_key=@api_key - Redirect: https://verify.scantrust.com/video/?uid={id}&api_key={api_key} #### 2. photo-auth - Landing page: https://verify.scantrust.com/photo/?uid=@scan_id&api_key=@api_key - Redirect: https://verify.scantrust.com/photo/?uid={id}&api_key={api_key} These updates provide greater flexibility and a more personalized user experience. ## Containing changes ### STC editor v 3.6.0 - Added Image Gallery feature. - Added Translation Management. - Added support for all languages. - Added Authentication styling feature. - Added e-label widget. - Added redirection in the authentication widget to the CN lobby when scanned in China. - Updated STC to pass scan UIDs and api_key to the lobby. --- // File: release-notes/release-notes-scantrust-consumer-3.6.1 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.6.1 | 03-06-2025 | #### Changes - Added a landing page key to the Auth App Branding tab (Advansed settings). - Added support to always display the preview in the STC landing page editor. --- // File: release-notes/release-notes-scantrust-consumer-3.6.2 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.6.2 | 11-06-2025 | #### Changes - Adjusted the footer position to always stay at the bottom of the page. --- // File: release-notes/release-notes-scantrust-consumer-3.6.3 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.6.3 | 25-06-2025 | #### Changes - Fixed branding authentication tab for non-st email addresses. --- // File: release-notes/release-notes-scantrust-consumer-3.6.4 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.6.4 | 15-07-2025 | ## Containing changes ### STC editor - Updated the footer design. --- // File: release-notes/release-notes-scantrust-consumer-3.6.5 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.6.5 | 09-09-2025 | ## Containing changes ### STC editor - Updated the Auth App widget to take users directly to Video Auth. --- // File: release-notes/release-notes-scantrust-consumer-3.6.6 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.6.6 | 22-10-2025 | ## Containing changes ### STC editor - Added the ability to update links in translated rich text fields. - Fixed UI issues with adding and updating URLs. --- // File: release-notes/release-notes-scantrust-consumer-3.6.7 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.6.7 | 26-11-2025 | ## Containing changes ### STC editor v3.6.7 - Updated the auth app branding preview to match the new Unified UI. - Changed Twitter to X. - Fixed social media logos in dark mode. - Fixed paragraphs merging into a single hyperlink in the translation when the following paragraph contains no link. --- // File: release-notes/release-notes-scantrust-consumer-3.7.0 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.7.0 | 08-01-2026 | ## Containing changes ### STC editor v3.7.0 - Implemented a new UI. - Added reference language display. --- // File: release-notes/release-notes-scantrust-consumer-3.7.1 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.7.1 | 28-01-2026 | ## Containing changes ### STC editor v3.7.1 - Added the ability to paste links while editing translations. - Added support for clickable social media links on landing pages even without display text. --- // File: release-notes/release-notes-scantrust-consumer-3.7.2 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.7.2 | 25-02-2026 | ## Containing changes ### STC editor v3.7.2 - Fixed an issue where the @scan_count placeholder was incorrectly translated. - Added the ability to change the reference language. --- // File: release-notes/release-notes-scantrust-consumer-3 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.1.0 | 02-08-2023 | ## Containing changes ### STC editor and Landing page Added a new functionality that allows users to choose the type of instruction they want to display on the PA widget. Users can now select between two options: SG-inside or SG-outside. --- // File: release-notes/release-notes-scantrust-consumer-4 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.2.0 | 14-09-2023 | ## Containing changes ### STC editor - Added Georgian language support to the STC Editor. --- // File: release-notes/release-notes-scantrust-consumer-5 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.3.0 | 11-01-2024 | ## Containing changes ### STC editor Changed the language behavior for the photo-auth widget: if the user's phone is set to any of the translated languages for PA, the widget will now automatically display in the phone's language. --- // File: release-notes/release-notes-scantrust-consumer-6 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.3.1 | 16-01-2024 | ## Containing changes ### STC editor - Fixed tab icon on landing page. --- // File: release-notes/release-notes-scantrust-consumer-7 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.3.2 | 25-01-2024 | ## Containing changes ### STC editor - Added an option to the landing page editor to enable or disable the video-auth beta. --- // File: release-notes/release-notes-scantrust-consumer-8 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.4.0 | 07-02-2024 | ## Containing changes ### STC editor - Increased the top tab height to prevent the tab text from getting cropped when it spans two lines. - Improved the view on tablet and desktop screens for STC landing pages. --- // File: release-notes/release-notes-scantrust-consumer-9 | Platform | Version | Date | | :------- | :----------- | :------- | | STC | 3.5.0 | 31-10-2024 | ## Containing changes ### STC editor - Added API key as a variable in the STC editor. - Added languages to the STC editor - Estonian, Irish, Latvian, Lithuanian, Maltese, Slovak, Icelandic, Turkish. - Added Persian language and right-to-left support to the STC editor. --- // File: release-notes/release-notes-scantrust-photoauth-1.0.0 | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 1.0.0 | 27-08-2021 | ## Containing changes More and more smartphone manufacturers now restrict access to the camera API, negatively impacting how many phones the ST app is compatible with. The new web app - Photo Authentication - leverages the camera app to directly capture images and send them for authentication. Photo Auth uses machine learning with scan review and good UX design to help users capture high-quality scans, guiding them when the QR code is too dark, too small, etc. This web app can be opened from any phone QR scanner via our STC page or from WeChat. Below simple steps give an authenticated scan result for our SSC QR codes: - User sees QR code on their product - User scans the ST code from any QR scanner they want - The code redirects them to the Scantrust Consumer landing page (a.k.a. STC) - The user will be guided to - Hold phone close enough - Zoom in - Avoid blur and glare - Directly take a photo with the camera - This photo is then uploaded via the browser - In case of a good picture of a genuine code, the User is shown the “Genuine” authentication result - In case of a good picture of a counterfeit code, the User is shown the “Suspected Counterfeit” authentication result - In case of a bad picture, the User receives a suggestion to improve it - End result: SG authentication is completed thereafter without the need to download or install an app - We have also added a demo for Wechat MiniProgram integration for our users in China. The above works on all modern and popular smartphones (Android & iOS) and in common environments (lighting, distance, etc.). Scantrust has performed a test on the top-100 smartphones in circulation with a very high success rate of nearly 90% --- // File: release-notes/release-notes-scantrust-photoauth-2.1.0 | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 2.1.0 | 02-08-2023 | ## Containing changes - Splitted the new version of Photo Auth into two "versions": one with SG-inside gif and another with SG-outside gif. The SG-outside version now includes a parameter “?sg_outside=true" at the end of the URL. The production version for your reference: [SG-inside](https://stc.scantrust.com/a/); [SG-outside](https://stc.scantrust.com/a/?sg_outside=true). - Added two versions of the full instructions: one with SG-inside images and another with SG-outside images. - When the user submits a photo and the scan results in an indeterminate outcome, the application will now display the relevant example code for the corresponding scenario. For SG-outside scans, the example code of SG-outside will be presented, while for SG-inside scans, the example code of SG-inside will be shown. --- // File: release-notes/release-notes-scantrust-photoauth-2.1.1 | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 2.1.1 | 13-11-2023 | ## Containing changes - Added Camera and Location Permissions pop-ups. - Removed ‘Grant Permission’ button when camera is loading. - Fixed Report button for 3rd party scans. - Fixed an issue of passing incorrect information to Typeform. - Added app_name to the 3rd party code params. - Added 3rd party scans into the fake company that show up on dashboard. - Added new events in Amplitude. - Added Amplitude tracking for China. - Moved the newly added properties as user properties. - Replaced the “QR code not found” distorted image with an image of correct aspect ratio. --- // File: release-notes/release-notes-scantrust-photoauth-2.2.1-b | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 2.2.1-b | 08-01-2025 | ## Containing changes - Implemented new photo authentication instructions. --- // File: release-notes/release-notes-scantrust-photoauth-2.2.1 | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 2.2.1 | 24-12-2024 | ## Containing changes - Added support for Farsi and RTL text. - Added an option to load locale using URL param. - Refactored PA to improve page loading and webview detection. --- // File: release-notes/release-notes-scantrust-photoauth-3.1.0 | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 3.1.0 | 26-03-2025 | ## Containing changes - Added support for Vietnamese, Japanese, Hindi, and Chinese Traditional languages. - Updated video instructions for Farsi. - Removed the requirement for camera permissions. - Changed the color of the Retake Photo button to gray during the waiting time after a bad scan. - Added install ID to requests in Auth. --- // File: release-notes/release-notes-scantrust-photoauth-3.10.0 | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 3.10.0 | 25-02-2026 | ### Containing changes - Added support for third-party non-ST URL scan pages. --- // File: release-notes/release-notes-scantrust-photoauth-3.11.1 | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 3.11.1 | 30-04-2026 | ### Containing changes - Fixed an issue where location and phone models were not detected during scanning. - Restricted landscape mode and added a “Rotate back” pop-up. - Fixed an issue where the “Take photo” button was sometimes displayed in the wrong position. --- // File: release-notes/release-notes-scantrust-photoauth-3.13.0 | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 3.13.0 | 31-08-2026 | ### Containing changes - Added Romanian, Polish, Hungarian, Bulgarian, and Ukrainian languages. --- // File: release-notes/release-notes-scantrust-photoauth-3.2.0 | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 3.2.0 | 10-04-2025 | ## Containing changes - Added support for branded authentication. - Added globe icon for language selection. - Added splash screen. --- // File: release-notes/release-notes-scantrust-photoauth-3.3.0 | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 3.3.0 | 24-04-2025 | ## Containing changes Added session hints for the auth scans. --- // File: release-notes/release-notes-scantrust-photoauth-3.5.1 | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 3.5.1 | 11-06-2025 | ### Containing changes - Fetched STC data for branding only, without scan context. - Added option to hide header based on URL parameter. - Fixed build process for China deployment. - Fixed device detection. --- // File: release-notes/release-notes-scantrust-photoauth-3.6.0 | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 3.6.0 | 07-07-2025 | ### Containing changes - Added support for Dutch. - Added support for branded authentication on mpweb.scantrust.cn domain. - Fixed an issue when the Report button kept loading on the mpweb.scantrust.cn. - Fixed an issue when no picture was displayed for WeChat. --- // File: release-notes/release-notes-scantrust-photoauth-3.6.2 | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 3.6.2 | 26-09-2025 | ### Containing changes - Fixed missing fields in fake reports. --- // File: release-notes/release-notes-scantrust-photoauth-3.7.0 | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 3.7.0 | 08-10-2025 | ### Containing changes - Added Thai and Korean languages. --- // File: release-notes/release-notes-scantrust-photoauth-3.9.1 | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 3.9.1 | 20-01-2026 | ### Containing changes - Fixed UI issues. --- // File: release-notes/release-notes-scantrust-photoauth-3.9.2 | Platform | Version | Date | | :------- | :------ | :--------- | | photo-auth | 3.9.2 | 21-01-2026 | ### Containing changes - Fixed misaligned Take Photo button text in Hindi. --- // File: release-notes/release-notes-scantrust-pro-1.0.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | Scantrust Pro | 1.0.0 | 29-05-2025 | #### Scantrust Pro v 1.0.0 #### Features - InInitial release of the product. #### We are excited to introduce the new Scantrust Pro Portal! This marks a significant step towards expanding our reach in the Self-Serve market, making our platform more accessible and user-friendly. With this release, Scantrust aims to accelerate growth and streamline onboarding, enabling more businesses to independently manage their QR code solution #### New Features: ## 1. Self-Serve Registration: - New users can now register and create accounts without human intervention, streamlining the onboarding process and reducing the need for manual setup. - Website updates allow users to easily discover the registration page and create an account directly from the main site. ## 2. Simplified QR Code Creation: - Users can now create GS1 Digital Link-enabled QR codes without the need to first create a brand, product, or work order. - Non-GS1 QR codes can also be generated seamlessly. ## 3. Landing Page Management: - Landing pages can now be created independently from campaigns, simplifying the setup process. - Links to landing pages are easily accessible for quick assignment to QR codes. ## 4. Product Management Enhancements: - Products can now be created without requiring brand setup, and SKU fields are optional with auto-generation if not specified. - A new product list view provides quick access to product details, QR codes, and scan redirection URLs. ## 5. Code Download: - Separate download buttons are now available for QR codes. ## 6. User Experience Improvements: - Enhanced navigation with a clear top navigation bar. - Added flagging for pending edits with warnings for incomplete fields before finalizing. This release represents our commitment to empowering businesses of all sizes with seamless, efficient access to QR code management and landing page creation. With the new Scantrust Pro Portal, we are setting the foundation for scalable growth, stronger user autonomy, and reduced dependency on manual support—paving the way for a more connected and self-sufficient customer experience. --- // File: release-notes/release-notes-scantrust-pro-1.1.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | Scantrust Pro | 1.1.0 | 11-09-2025 | #### Scantrust Pro v 1.1.0 #### Features - Added payment system integration. - Added UI/UX improvements. --- // File: release-notes/release-notes-scantrust-pro-1.2.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | Scantrust Pro | 1.2.0 | 16-12-2025 | #### Scantrust Pro v 1.2.0 #### Features - Added UI/UX improvements. - Added wire transfer payments. - Added a Billing Information tab to the Profile Page. - Added an option to use images from the Gallery for products. - Added a GS1 serial number field. - Added GS1 data attributes fields. --- // File: release-notes/release-notes-scantrust-pro-1.2.1 | Platform | Version | Date | | :-------------- | :------ | :--------- | | Scantrust Pro | 1.2.1 | 28-01-2026 | #### Scantrust Pro v 1.2.1 #### Features - Added Italian and Dutch translations. --- // File: release-notes/release-notes-scantrust-pro-1.2.2 | Platform | Version | Date | | :-------------- | :------ | :--------- | | Scantrust Pro | 1.2.2 | 04-03-2026 | #### Scantrust Pro v 1.2.2 #### Features - Added translations for Spanish, French, Portuguese, German, and Chinese. - Updated the Wire Transfer payment option for subscription plans. --- // File: release-notes/release-notes-scantrust-pro-1.3.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | Scantrust Pro | 1.3.0 | 08-06-2026 | #### Scantrust Pro v 1.3.0 #### Features - Removed the pay gate from the Scantrust Pro onboarding flow — users can now start their 14-day trial without entering payment details. - Added six lifecycle banners and emails to guide users through trial, expiration, payment, and renewal. --- // File: release-notes/release-notes-scantrust-pro-1.4.0 | Platform | Version | Date | | :-------------- | :------ | :--------- | | Scantrust Pro | 1.4.0 | 16-07-2026 | #### Scantrust Pro v 1.4.0 #### Features - Added Google Sign-Up. - Revamped the scan destination page. --- // File: release-notes/release-notes-scantrust-videoauth-1.5.0 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 1.5.0 | 16-01-2025 | ## Containing changes #### Video auth v 1.5.0 - Selected the correct camera on iPhone for supported languages. - Added Hindi as a supported language. - Redirected from VA to PA when there was an error setting up the camera. - Fixed orientation detection on certain older phones. --- // File: release-notes/release-notes-scantrust-videoauth-2.0.0 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 2.0.0 | 19-02-2025 | ## Containing changes #### Video auth v 2.0.0 - Added WeChat browser support. - Added an option to turn off torch by default when URL contains search param ?no-torch. - Updated how incompatible Chromium-based and iOS browsers are handled. - Removed torch and change camera buttons when analyzing scans on iPhones. - Removed camera and location-enabled status from the loading screen. - Removed an unnecessary step i.e. 'Tap to Start'. - Fixed an issue where the torch would turn on for 3rd party code scans when it was previously off. - Fixed text alignment issues in French and Italian UI. - Fixed camera constraints for loading video stream. --- // File: release-notes/release-notes-scantrust-videoauth-2.1.0 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 2.1.0 | 04-03-2025 | ## Containing changes #### Video auth v 2.1.0 - Added support for Video-Auth on more Android browsers --- // File: release-notes/release-notes-scantrust-videoauth-2.10.0 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 2.10.0 | 08-10-2025 | ## Containing changes - Added Thai and Korean languages. --- // File: release-notes/release-notes-scantrust-videoauth-2.3.0 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 2.3.0 | 13-03-2025 | ## Containing changes #### Video auth v 2.3.0 - Added Vietnamese and Japanese. - Added install ID to requests in Auth. - Increased the minimum required Chrome version to 92 (previously 89) and minimun required iOS version to 15.4 (previously 15.2). --- // File: release-notes/release-notes-scantrust-videoauth-2.3.1 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 2.3.1 | 18-03-2025 | ## Containing changes #### Video auth v 2.3.1 - Fixed translations not updating after changing the language. - Fixed an issue when video-auth gets stuck on the scanning step in WeChat on iPhone for the first time. --- // File: release-notes/release-notes-scantrust-videoauth-2.3.2 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 2.3.2 | 20-03-2025 | ## Containing changes #### Video auth v 2.3.2 - Fixed an issue where web video authentication used a cached camera list, causing problems in WebView --- // File: release-notes/release-notes-scantrust-videoauth-2.4.0 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 2.4.0 | 10-04-2025 | ## Containing changes #### Video auth v 2.4.0 - Added supports for branded authentication. - Added globe icon for language selection. - Moved footeer style to the bottom with a smaller font. --- // File: release-notes/release-notes-scantrust-videoauth-2.5.2 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 2.5.2 | 24-04-2025 | ## Containing changes #### Video auth v 2.5.2 - Added session hints for the auth scans. --- // File: release-notes/release-notes-scantrust-videoauth-2.5.5 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 2.5.5 | 13-05-2025 | ## Containing changes #### Video auth v 2.5.5 - Added a 30-second timeout If the camera cannot focus. - Fixed an issue when helper buttons are not visible after unreadable scan. --- // File: release-notes/release-notes-scantrust-videoauth-2.6.0 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 2.6.0 | 20-05-2025 | ## Containing changes #### Video auth v 2.6.0 - Added dynamic QR code update to open the app on mobile. - Removed the option to go to photo-auth when users open video-auth on desktop. --- // File: release-notes/release-notes-scantrust-videoauth-2.7.0 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 2.7.0 | 11-06-2025 | ## Containing changes - Hid header based on URL parameter. - Fetched STC data for branding only, without scan context. --- // File: release-notes/release-notes-scantrust-videoauth-2.7.1 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 2.7.1 | 30-06-2025 | ## Containing changes - Added support for branded authentication on mpweb.scantrust.cn domain. - Fixed an issue when non-ST code page displayed a transparent gap without header. --- // File: release-notes/release-notes-scantrust-videoauth-2.8.1 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 2.8.1 | 07-07-2025 | ## Containing changes - Added support for Dutch. - Updated redirection logic to retain the same custom domain when redirectin to photo-auth. --- // File: release-notes/release-notes-scantrust-videoauth-2.9.0 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 2.9.0 | 18-09-2025 | ## Containing changes - Added iPhone model selection. --- // File: release-notes/release-notes-scantrust-videoauth-2.9.1 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 2.9.1 | 25-09-2025 | ## Containing changes - Fixed missing fields in fake reports. --- // File: release-notes/release-notes-scantrust-videoauth-2.9.2 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 2.9.2 | 02-10-2025 | ## Containing changes - Switched to the triple camera as the default camera for iPhone 13 and above Pro models. --- // File: release-notes/release-notes-scantrust-videoauth-3.0.1 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 3.0.1 | 06-11-2025 | ## Containing changes - Implemented a new unified UI: a unified scanning screen in the video authentication flow. The new design simplifies the process and provides a smoother, more consistent user experience across all devices. --- // File: release-notes/release-notes-scantrust-videoauth-3.0.2 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 3.0.2 | 20-11-2025 | ## Containing changes - Fixed an issue where the ‘Analysing Secure Graphic’ scanning frame remained displayed after returning from the result window. --- // File: release-notes/release-notes-scantrust-videoauth-3.0.3 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 3.0.3 | 15-12-2025 | ## Containing changes - Fixed the logo display on the splash screen. --- // File: release-notes/release-notes-scantrust-videoauth-3.0.4 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 3.0.4 | 20-01-2026 | ## Containing changes - Fixed UI issues. --- // File: release-notes/release-notes-scantrust-videoauth-3.1.0 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 3.1.0 | 09-02-2026 | ## Containing changes - Added support for third-party non-ST URL scan pages. - Fixed missing fields in fake reports. --- // File: release-notes/release-notes-scantrust-videoauth-3.3.1 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 3.3.1 | 16-03-2026 | ## Containing changes - Changed the behavior so that unreadable scans on blacklisted, inactive, or untrained codes no longer display the “blurry scan” page. --- // File: release-notes/release-notes-scantrust-videoauth-3.3.2 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 3.3.2 | 27-04-2026 | ## Containing changes - Fixed camera detection on iPhone for Traditional Chinese. --- // File: release-notes/release-notes-scantrust-videoauth-3.4.0 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 3.4.0 | 14-05-2026 | ## Containing changes - Fixed an issue where the result page could not be opened when scanning a SID QR code in the mini program. --- // File: release-notes/release-notes-scantrust-videoauth-3.5.2 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 3.5.2 | 09-06-2026 | ## Containing changes - Fixed camera selection. --- // File: release-notes/release-notes-scantrust-videoauth-3.6.0 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 3.6.0 | 09-07-2026 | ## Containing changes - Improved the camera access screen instructions to make the required steps clearer. - Added iPhone 17e to the device model picker. - Updated the "Continue" button in the iPhone model picker to use the brand color. - Fixed an issue where scanning a code with a custom prefix / custom domain a second time could return a non-secure code. --- // File: release-notes/release-notes-scantrust-videoauth-3.7.1 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 3.7.1 | 14-07-2026 | ## Containing changes - Updated the phone selection and added the "How to Scan" icon. - Added the missing logo and language switcher icon on the camera permission page. - Aligned the report page elements according to the design for a more consistent UI. - Fixed the flashlight not turning off during code analysis. - Fixed a scanning screen UI issue on the iPhone 12. --- // File: release-notes/release-notes-scantrust-videoauth-3.7.2 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 3.7.2 | 14-07-2026 | ## Containing changes - Resolved duplicate prefix registration errors caused by prefixes being registered more than once within a single scan session. --- // File: release-notes/release-notes-scantrust-videoauth-3.9.0 | Platform | Version | Date | | :------- | :------ | :--------- | | video-auth | 3.9.0 | 31-08-2026 | ## Containing changes - Added Romanian, Polish, Hungarian, Bulgarian, and Ukrainian languages. --- // File: release-notes/release-notes-u-label-management-tool-1.11 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.11 | 29-04-2024 | ### e-label Management Tool v 1.11 #### Features: - Added default enabling of allergens with the option for users to disable them. - Added default values for organic acid and polyols in the energy calculator section. Users can now remove or replace these values as necessary. The default values are 6 grams per liter for polyols and 7 grams per liter for organic acid. This enhancement applies specifically to Wine and Aromatized Wine templates. - Added default selection of all three pictograms (Drink & Drive, Underage, Pregnancy), with the option for users to deselect them. These new pictograms will be applied to all e-labels, excluding Remy Cointreau. However, this default selection is only applicable to new e-labels; for existing e-labels, the pictograms will not be turned on automatically. This change specifically affects Wine and Aromatized wine templates. - Replaced the 'responsibledrinking.eu' label with the 'Wine in Moderation' logo. The 'Wine in Moderation' logo is now pre-selected by default and can be deselected by users. This change is specific to Wine and Aromatized wine templates, impacting both new and existing e-labels. The 'responsibledrinking.eu' label remains unchanged on the Spirits template. - Added new messages on risk and responsible consumption: 1) Message on alcohol risk: 'Alcohol abuse is dangerous to your health'. This message is selected by default but can be deselected by users. 2) Message on responsible consumption: 'Always drink in moderation'. This message will appear in all e-label responsible consumption sections and cannot be deselected by users. Both new and old e-labels will be affected by these changes. These two messages are only applicable to Wine & Aromatized wine templates. - Removed the free text field for responsible consumption from the editor and landing page for all new e-labels. For existing e-labels, the field will remain if there is existing text. However, once the text is removed, the field and its translations will be deleted entirely. This change applies exclusively to the Wine & Aromatized wine template. - Added a '20-' logo specifically for the Spirit template. - Changed milligrams to lowercase instead of uppercase in the nutrition table on landing pages. --- // File: release-notes/release-notes-u-label-management-tool-1.13 | Platform | Version | Date | | :------- | :------ | :--------- | | scantrust portal | 1.13 | 08-05-2024 | ### e-label Management Tool v 1.13 #### Features: - Added “Use average energy value” in the energy calculator for the wine template. Users can select the sugar content and alcohol by volume range to get the average value, with pre-selection based on product information if available. If sugar content is not selected in the product information, default options are shown based on the product type. - Added a mass approve feature, allowing users to approve and publish translations when there are no custom values. If a user has no custom translations and no languages already published, a new dropdown allows them to select multiple languages for approval and publishing. Additionally, a new button opens the same menu available for users with multiple published languages. - Added basic triman and sustainable wineries logo for wine and aromatized wine templates. - Added ability to upload a GIF file - Added new operator options: - "Bottled for", - "Packaged by", - "Sold by", - "Produced and bottled by", - "Produced and packaged by", - "Packaged for". - Marked known allergens in bold: - Known allergens are now displayed in bold and cannot be modified by users. - Other ingredients cannot be marked as allergens. - Users can still mark custom ingredients as allergens. List of allergens: 1) Potassium bisulphite 2) Egg lysozyme 3) Milk casein 4) Egg albumin 5) Ammonium bisulphite 6) Wheat protein 7) Potassium metabisulphite 8) Sulphites 9) Sulphur dioxide - Replaced “cl” display with “ml” in the nutrition table for France/French. - Changed the first display option for the “contains… and/or” rule to include brackets for Acidity Regulators and Stabilising Agents. It now displays correctly as: - Category (contains Ingredient A and/or Ingredient B) - Corrected default values for polyols and organic acids in energy calculator. The updated values are now: - Organic acids: 6g/L - Polyols: 7g/L - Enhanced automatic calculation in the energy calculator, whhen a user inputs the sugar value: - The value is converted from g/L to g/100ml and displayed in the nutrition table. - The Carbohydrate value is automatically calculated in g/100ml (sugars + polyols). - Added automatic conversion of kJ to kcal in the energy calculator. - After obtaining the kJ result from the calculator or manual input, the kcal value is automatically calculated.. - If the user changes the kJ value, the kcal value will be recalculated automatically. - Changing the kcal value will not affect the kJ value. - Fixed font size for product and brand names. - Sort languages in alphabetical order in the translation tab. - Fixed an issue where the code space was always selected as a prefix instead of the custom domain for e-label codes. - Fixed an issue where changes were not saved after editing own labels. - Prevent user from saving negative values as net quantity. - Prevent user from saving negative values in the energy calculator. - Fixed an issue where users could not upload the same picture from their laptop after deleting their own label. - Fixed an issue where Impressum was shown for all countries after deletion. - Fixed an issue where searching with '-' did not work for product type. - Fixed issue where search for product type did not work when copying and pasting words or typing with spaces. - Fixed an issue where ingredients continued to display after changing categories, even though they did not exist in the new category. - Updated translations. --- // File: release-notes/release-notes ## Portal Enterprise - By version: [1.65.0](/docs/release-notes/release-notes-portal-1.65.0), [1.64.0](/docs/release-notes/release-notes-portal-1.64.0), [1.63.0](/docs/release-notes/release-notes-portal-1.63.0), [1.62.2](/docs/release-notes/release-notes-portal-1.62.2), [1.62.1](/docs/release-notes/release-notes-portal-1.62.1), [1.61.0](/docs/release-notes/release-notes-portal-1.61.0), [1.59.0](/docs/release-notes/release-notes-portal-1.59.0), [1.58.0](/docs/release-notes/release-notes-portal-1.58.0), [1.57.0](/docs/release-notes/release-notes-portal-1.57.0), [1.56.0](/docs/release-notes/release-notes-portal-1.56.0), [1.55.0](/docs/release-notes/release-notes-portal-1.55.0), [1.54.1](/docs/release-notes/release-notes-portal-1.54.1), [1.54.0](/docs/release-notes/release-notes-portal-1.54.0), [1.53.0](/docs/release-notes/release-notes-portal-1.53.0), [1.52.1](/docs/release-notes/release-notes-portal-1.52.1), [1.52.0](/docs/release-notes/release-notes-portal-1.52.0), [1.51.0](/docs/release-notes/release-notes-portal-1.51.0), [1.50.1](/docs/release-notes/release-notes-portal-1.50.1), [1.50.0](/docs/release-notes/release-notes-portal-1.50.0), [1.49.0](/docs/release-notes/release-notes-portal-1.49.0), [1.48.0](/docs/release-notes/release-notes-portal-1.48.0), [1.47.0](/docs/release-notes/release-notes-portal-1.47.0), [1.46.0](/docs/release-notes/release-notes-portal-1.46.0), [1.45.1](/docs/release-notes/release-notes-portal-1.45.1), [1.45.0](/docs/release-notes/release-notes-portal-1.45.0), [1.44.0](/docs/release-notes/release-notes-portal-1.44.0), [1.43.2](/docs/release-notes/release-notes-portal-1.43.2), [1.42.3](/docs/release-notes/release-notes-portal-1.42.3), [1.42.1](/docs/release-notes/release-notes-portal-1.42.1), [1.42.0](/docs/release-notes/release-notes-portal-1.42.0), [1.41.3](/docs/release-notes/release-notes-portal-1.41.3), [1.41.2](/docs/release-notes/release-notes-portal-1.41.2), [1.41.1](/docs/release-notes/release-notes-portal-1.41.1), [1.40.0](/docs/release-notes/release-notes-portal-1.40.0), [1.39.10](/docs/release-notes/release-notes-portal-1.39.10), [1.39.9](/docs/release-notes/release-notes-portal-1.39.9), [1.39.8](/docs/release-notes/release-notes-portal-1.39.8), [1.39.5](/docs/release-notes/release-notes-portal-1.39.5), [1.39.4](/docs/release-notes/release-notes-portal-1.39.4), [1.39.3](/docs/release-notes/release-notes-portal-1.39.3), [1.39.2](/docs/release-notes/release-notes-portal-1.39.2), [1.38.0](/docs/release-notes/release-notes-portal-1.38.0), [1.37.0](/docs/release-notes/release-notes-portal-1.37.0), [1.36.0](/docs/release-notes/release-notes-portal-1.36.0), [1.35.0](/docs/release-notes/release-notes-portal-1.35.0), [1.34.1](/docs/release-notes/release-notes-portal-1.34.1), [1.34.0](/docs/release-notes/release-notes-portal-1.34.0), [1.31.0](/docs/release-notes/release-notes-portal-1.31.0), [1.30.0](/docs/release-notes/release-notes-portal-1.30.0), [1.29.5](/docs/release-notes/release-notes-portal-1.29.5), [1.29.4](/docs/release-notes/release-notes-portal-1.29.4), [1.29.3](/docs/release-notes/release-notes-portal-1.29.3), [1.29.2](/docs/release-notes/release-notes-portal-1.29.2), [1.29.1](/docs/release-notes/release-notes-portal-1.29.1), [1.28.0](/docs/release-notes/release-notes-portal-1.28.0), [1.27.0](/docs/release-notes/release-notes-portal-1.27.0), [1.26.2](/docs/release-notes/release-notes-portal-1.26.2), [1.25.5](/docs/release-notes/release-notes-portal-1.25.5), [1.25.3](/docs/release-notes/release-notes-portal-1.25.3), [1.24.0](/docs/release-notes/release-notes-portal-1.24.0), [1.23.2](/docs/release-notes/release-notes-portal-1.23.2), [1.23.1](/docs/release-notes/release-notes-portal-1.23.1), [1.22.0](/docs/release-notes/release-notes-portal-1.22.0), [1.21.1](/docs/release-notes/release-notes-portal-1.21.1), [1.20.0](/docs/release-notes/release-notes-portal-1.20.0), [1.19.0](/docs/release-notes/release-notes-portal-1.19.0), [1.18.4](/docs/release-notes/release-notes-portal-1.18.4), [1.18.3](/docs/release-notes/release-notes-portal-1.18.3), [1.18.2](/docs/release-notes/release-notes-portal-1.18.2), [1.18.1](/docs/release-notes/release-notes-portal-1.18.1), [1.18.0](/docs/release-notes/release-notes-portal-1.18.0), [1.17.2](/docs/release-notes/release-notes-portal-1.17.2), [1.16.5](/docs/release-notes/release-notes-portal-1.16.5), [Offline WO generator](/docs/release-notes/release-notes-portal-wo-generator) ## Portal QR Manager - By version: [1.15.5](release-notes-portal-QRManager-1.15.5), [1.15.4](release-notes-portal-QRManager-1.15.4), [1.15.3](release-notes-portal-QRManager-1.15.3), [1.15.2](release-notes-portal-QRManager-1.15.2), [1.15.1](release-notes-portal-QRManager-1.15.1), [1.15.0](release-notes-portal-QRManager-1.15.0), [1.14.1](release-notes-portal-QRManager-1.14.1), [1.14.0](release-notes-portal-QRManager-1.14.0), [1.13.0](release-notes-portal-QRManager-1.13.0), [1.12.1](release-notes-portal-QRManager-1.12.1), [1.12.0](release-notes-portal-QRManager-1.12.0), [1.11.1](release-notes-portal-QRManager-1.11.1), [1.11.0](release-notes-portal-QRManager-1.11.0), [1.10.0](release-notes-portal-QRManager-1.10.0), [1.9.1](release-notes-portal-QRManager-1.9.1), [1.9.0](release-notes-portal-QRManager-1.9.0), [1.7](release-notes-portal-QRManager-1.7), [1.6](release-notes-portal-QRManager-1.6), [1.5.1](release-notes-portal-QRManager-1.5.1), [1.5](release-notes-portal-QRManager-1.5), [1.4](release-notes-portal-QRManager-1.4), [1.3](release-notes-portal-QRManager-1.3), [1.2](release-notes-portal-QRManager-1.2), [1.1](release-notes-portal-QRManager-1.1), [1.0](release-notes-portal-QRManager-1.0) ## Portal STE Task Editor - By version: [1.6.1](release-notes-portal-STETaskEditor-1.6.1), [1.6.0](release-notes-portal-STETaskEditor-1.6.0), [1.5.0](release-notes-portal-STETaskEditor-1.5.0), [1.3.0](release-notes-portal-STETaskEditor-1.3.0), [1.2.0](release-notes-portal-STETaskEditor-1.2.0), [1.1.0](release-notes-portal-STETaskEditor-1.1.0) ## Code Ingestion Tool - By version: [1.5.2](release-notes-code-ingestion-1.5.2.md), [1.5.1](release-notes-code-ingestion-1.5.1.md), [1.5.0](release-notes-code-ingestion-1.5.0.md), [1.4.0](release-notes-code-ingestion-1.4.0.md), [1.3.0](release-notes-code-ingestion-1.3.0.md), [1.2.0](release-notes-code-ingestion-1.2.md), [1.1.0](release-notes-code-ingestion-1.1.md), [1.0.0](release-notes-code-ingestion-1.0.md) ## Backend - By version: [5.4.0](/docs/release-notes/release-notes-Backend-5.4.0), [5.2.0](/docs/release-notes/release-notes-Backend-5.2.0), [5.1.2](/docs/release-notes/release-notes-Backend-5.1.2), [5.0.0](/docs/release-notes/release-notes-Backend-5.0.0), [4.28.0](/docs/release-notes/release-notes-Backend-4.28.0), [4.27.0](/docs/release-notes/release-notes-Backend-4.27.0), [4.26.0](/docs/release-notes/release-notes-Backend-4.26.0), [4.25.0](/docs/release-notes/release-notes-Backend-4.25.0), [4.24.0](/docs/release-notes/release-notes-Backend-4.24.0), [4.22.0](/docs/release-notes/release-notes-Backend-4.22.0), [4.20.0](/docs/release-notes/release-notes-Backend-4.20.0), [4.16.0-r5](/docs/release-notes/release-notes-Backend-4.16.0-r5), [4.16.0](/docs/release-notes/release-notes-Backend-4.16.0), [4.15.0](/docs/release-notes/release-notes-Backend-4.15.0), [4.14.0](/docs/release-notes/release-notes-Backend-4.14.0), [4.13.0](/docs/release-notes/release-notes-Backend-4.13.0), [4.11.2-r4](/docs/release-notes/release-notes-Backend-4.11.2-r4), [4.10](/docs/release-notes/release-notes-Backend-4.10), [4.9.0](/docs/release-notes/release-notes-Backend-4.9.0), [4.7.0-r3](/docs/release-notes/release-notes-Backend-4.7.0-r3), [4.7.0-r2](/docs/release-notes/release-notes-Backend-4.7.0-r2), [4.5.1](/docs/release-notes/release-notes-Backend-4.5.1), [4.5.0](/docs/release-notes/release-notes-Backend-4.5.0), [4.4.5](/docs/release-notes/release-notes-Backend-4.4.5), [4.4.4](/docs/release-notes/release-notes-Backend-4.4.4), [4.4.3](/docs/release-notes/release-notes-Backend-4.4.3), [4.4.0](/docs/release-notes/release-notes-Backend-4.4.0), [4.3.1](/docs/release-notes/release-notes-Backend-4.3.1), [4.3.0](/docs/release-notes/release-notes-Backend-4.3.0), [4.1.0](/docs/release-notes/release-notes-Backend-4.1.0), [4.0.0](/docs/release-notes/release-notes-Backend-4.0.0), [3.9.2](/docs/release-notes/release-notes-Backend-3.9.2), [3.9.0](/docs/release-notes/release-notes-Backend-3.9.0), [3.8.0](/docs/release-notes/release-notes-Backend-3.8.0), [3.7.1](/docs/release-notes/release-notes-Backend-3.7.0), [3.5.1](/docs/release-notes/release-notes-Backend-3.5.1), [3.4.0](/docs/release-notes/release-notes-Backend-3.4.0), [3.3.3](/docs/release-notes/release-notes-Backend-3.3.3), [3.3.2](/docs/release-notes/release-notes-Backend-3.3.2), [3.3.0](/docs/release-notes/release-notes-Backend-3.3.0), [2.10.1](/docs/release-notes/release-notes-Backend-2.10.1), [2.9.0](/docs/release-notes/release-notes-Backend-2.9.0), [2.8.0](/docs/release-notes/release-notes-Backend-2.8.0), [2.7.0](/docs/release-notes/release-notes-Backend-2.7.0), [2.6.0](/docs/release-notes/release-notes-Backend-2.6.0), [2.5.5](/docs/release-notes/release-notes-Backend-2.5.5), [2.5.2](/docs/release-notes/release-notes-Backend-2.5.2), [2.5.0](/docs/release-notes/release-notes-Backend-2.5.0), [2.4.2](/docs/release-notes/release-notes-Backend-2.4.2), [2.4.0](/docs/release-notes/release-notes-Backend-2.4.0), [2.3.3](/docs/release-notes/release-notes-Backend-2.3.3) ## e-label ### e-label SaaS Portal - By version: [1.14.0](/docs/release-notes/release-notes-e-label-saas-portal-1.14.0), [1.13.0](/docs/release-notes/release-notes-e-label-saas-portal-1.13.0), [1.12.4](/docs/release-notes/release-notes-e-label-saas-portal-1.12.4), [1.12.3](/docs/release-notes/release-notes-e-label-saas-portal-1.12.3), [1.12.2](/docs/release-notes/release-notes-e-label-saas-portal-1.12.2), [1.12.1](/docs/release-notes/release-notes-e-label-saas-portal-1.12.1), [1.12.0](/docs/release-notes/release-notes-e-label-saas-portal-1.12.0), [1.11.2](/docs/release-notes/release-notes-e-label-saas-portal-1.11.2), [1.11.1](/docs/release-notes/release-notes-e-label-saas-portal-1.11.1), [1.11.0](/docs/release-notes/release-notes-e-label-saas-portal-1.11.0), [1.10.1](/docs/release-notes/release-notes-e-label-saas-portal-1.10.1), [1.10.0](/docs/release-notes/release-notes-e-label-saas-portal-1.10.0), [1.9.5](/docs/release-notes/release-notes-e-label-saas-portal-1.9.5), [1.9.4](/docs/release-notes/release-notes-e-label-saas-portal-1.9.4), [1.9.3](/docs/release-notes/release-notes-e-label-saas-portal-1.9.3), [1.9.2](/docs/release-notes/release-notes-e-label-saas-portal-1.9.2), [1.9.1](/docs/release-notes/release-notes-e-label-saas-portal-1.9.1), [1.9](/docs/release-notes/release-notes-e-label-saas-portal-1.9), [1.8](/docs/release-notes/release-notes-e-label-saas-portal-1.8), [1.7](/docs/release-notes/release-notes-e-label-saas-portal-1.7), [1.6](/docs/release-notes/release-notes-e-label-saas-portal-1.6), [1.5](/docs/release-notes/release-notes-e-label-saas-portal-1.5), [1.4](/docs/release-notes/release-notes-e-label-saas-portal-1.4), [1.3.1](/docs/release-notes/release-notes-e-label-saas-portal-1.3.1), [1.3](/docs/release-notes/release-notes-e-label-saas-portal-1.3), [1.2](/docs/release-notes/release-notes-e-label-saas-portal-1.2), [1.1](/docs/release-notes/release-notes-e-label-saas-portal-1.1), [1.0](/docs/release-notes/release-notes-e-label-saas-portal-1.0) ### e-label Management Tool - By version: [1.22.1](/docs/release-notes/release-notes-e-label-management-tool-1.22.1), [1.22.0](/docs/release-notes/release-notes-e-label-management-tool-1.22.0), [1.21.4](/docs/release-notes/release-notes-e-label-management-tool-1.21.4), [1.21.3](/docs/release-notes/release-notes-e-label-management-tool-1.21.3), [1.21.2](/docs/release-notes/release-notes-e-label-management-tool-1.21.2), [1.21.1](/docs/release-notes/release-notes-e-label-management-tool-1.21.1), [1.21.0](/docs/release-notes/release-notes-e-label-management-tool-1.21.0), [1.20.4](/docs/release-notes/release-notes-e-label-management-tool-1.20.4), [1.20.3](/docs/release-notes/release-notes-e-label-management-tool-1.20.3), [1.20.2](/docs/release-notes/release-notes-e-label-management-tool-1.20.2), [1.20.1](/docs/release-notes/release-notes-e-label-management-tool-1.20.1), [1.20.0](/docs/release-notes/release-notes-e-label-management-tool-1.20.0), [1.19.2](/docs/release-notes/release-notes-e-label-management-tool-1.19.2), [1.19.1](/docs/release-notes/release-notes-e-label-management-tool-1.19.1), [1.19.0](/docs/release-notes/release-notes-e-label-management-tool-1.19.0), [1.18.0](/docs/release-notes/release-notes-e-label-management-tool-1.18.0), [1.17.0](/docs/release-notes/release-notes-e-label-management-tool-1.17.0), [1.16.1](/docs/release-notes/release-notes-e-label-management-tool-1.16.1), [1.16.0](/docs/release-notes/release-notes-e-label-management-tool-1.16.0), [1.15.2](/docs/release-notes/release-notes-e-label-management-tool-1.15.2), [1.15.1](/docs/release-notes/release-notes-e-label-management-tool-1.15.1), [1.15.0](/docs/release-notes/release-notes-e-label-management-tool-1.15.0), [1.14.0](/docs/release-notes/release-notes-e-label-management-tool-1.14.0), [1.13.5](/docs/release-notes/release-notes-e-label-management-tool-1.13.5), [1.13.4](/docs/release-notes/release-notes-e-label-management-tool-1.13.4), [1.13.3](/docs/release-notes/release-notes-e-label-management-tool-1.13.3), [1.13.2](/docs/release-notes/release-notes-e-label-management-tool-1.13.2), [1.13.1](/docs/release-notes/release-notes-e-label-management-tool-1.13.1), [1.13](/docs/release-notes/release-notes-u-label-management-tool-1.13), [1.12](/docs/release-notes/release-notes-e-label-management-tool-1.12), [1.11](/docs/release-notes/release-notes-u-label-management-tool-1.11), [1.10.1](/docs/release-notes/release-notes-e-label-management-tool-1.10.1), [1.9](/docs/release-notes/release-notes-e-label-management-tool-1.9), [1.8](/docs/release-notes/release-notes-e-label-management-tool-1.8), [1.7](/docs/release-notes/release-notes-e-label-management-tool-1.7), [1.6.2](/docs/release-notes/release-notes-e-label-management-tool-1.6.2), [1.6.1](/docs/release-notes/release-notes-e-label-management-tool-1.6.1), [1.6](/docs/release-notes/release-notes-e-label-management-tool-1.6), [1.5.1](/docs/release-notes/release-notes-e-label-management-tool-1.5.1), [1.5](/docs/release-notes/release-notes-e-label-management-tool-1.5), [1.4](/docs/release-notes/release-notes-e-label-management-tool-1.4), [1.3.2](/docs/release-notes/release-notes-e-label-management-tool-1.3.2), [1.3.1](/docs/release-notes/release-notes-e-label-management-tool-1.3.1), [1.3](/docs/release-notes/release-notes-e-label-management-tool-1.3), [1.2](/docs/release-notes/release-notes-e-label-management-tool-1.2), [1.1](/docs/release-notes/release-notes-e-label-management-tool-1.1), [1.0](/docs/release-notes/release-notes-e-label-management-tool-1.0) ## Scantrust Pro - By version: [1.4.0](/docs/release-notes/release-notes-scantrust-pro-1.4.0), [1.3.0](/docs/release-notes/release-notes-scantrust-pro-1.3.0), [1.2.2](/docs/release-notes/release-notes-scantrust-pro-1.2.2), [1.2.1](/docs/release-notes/release-notes-scantrust-pro-1.2.1), [1.2.0](/docs/release-notes/release-notes-scantrust-pro-1.2.0), [1.1.0](/docs/release-notes/release-notes-scantrust-pro-1.1.0), [1.0.0](/docs/release-notes/release-notes-scantrust-pro-1.0.0) ## Landing Page Editor - By version: [3.8.1](/docs/release-notes/release-notes-landing-page-editor-3.8.1), [3.8.0](/docs/release-notes/release-notes-landing-page-editor-3.8.0), [3.7.2](/docs/release-notes/release-notes-scantrust-consumer-3.7.2), [3.7.1](/docs/release-notes/release-notes-scantrust-consumer-3.7.1), [3.7.0](/docs/release-notes/release-notes-scantrust-consumer-3.7.0), [3.6.7](/docs/release-notes/release-notes-scantrust-consumer-3.6.7), [3.6.6](/docs/release-notes/release-notes-scantrust-consumer-3.6.6), [3.6.5](/docs/release-notes/release-notes-scantrust-consumer-3.6.5), [3.6.4](/docs/release-notes/release-notes-scantrust-consumer-3.6.4), [3.6.3](/docs/release-notes/release-notes-scantrust-consumer-3.6.3), [3.6.2](/docs/release-notes/release-notes-scantrust-consumer-3.6.2), [3.6.1](/docs/release-notes/release-notes-scantrust-consumer-3.6.1), [3.6.0](/docs/release-notes/release-notes-scantrust-consumer-3.6.0), [3.5.0](/docs/release-notes/release-notes-scantrust-consumer-9), [3.4.2](/docs/release-notes/release-notes-scantrust-consumer-3.4.2), [3.4.1](/docs/release-notes/release-notes-scantrust-consumer-3.4.1), [3.4.0](/docs/release-notes/release-notes-scantrust-consumer-8), [3.3.2](/docs/release-notes/release-notes-scantrust-consumer-7), [3.3.1](/docs/release-notes/release-notes-scantrust-consumer-6), [3.3.0](/docs/release-notes/release-notes-scantrust-consumer-5), [3.2.0](/docs/release-notes/release-notes-scantrust-consumer-4), [3.1.0](/docs/release-notes/release-notes-scantrust-consumer-3), [3.0.0](/docs/release-notes/release-notes-scantrust-consumer-3.0.0), [2.1.0](/docs/release-notes/release-notes-scantrust-consumer-2), [2.0.2](/docs/release-notes/release-notes-scantrust-consumer-2.0.2), [2.0.1](/docs/release-notes/release-notes-scantrust-consumer-2.0.1), [2.0.0](/docs/release-notes/release-notes-scantrust-consumer-2.0.0), [1.0.0](/docs/release-notes/release-notes-scantrust-consumer-1), ## Photo Auth - By version: [3.13.0](/docs/release-notes/release-notes-scantrust-photoauth-3.13.0), [3.11.1](/docs/release-notes/release-notes-scantrust-photoauth-3.11.1), [3.10.0](/docs/release-notes/release-notes-scantrust-photoauth-3.10.0), [3.9.2](/docs/release-notes/release-notes-scantrust-photoauth-3.9.2), [3.9.1](/docs/release-notes/release-notes-scantrust-photoauth-3.9.1), [3.7.0](/docs/release-notes/release-notes-scantrust-photoauth-3.7.0), [3.6.2](/docs/release-notes/release-notes-scantrust-photoauth-3.6.2), [3.6.0](/docs/release-notes/release-notes-scantrust-photoauth-3.6.0), [3.5.1](/docs/release-notes/release-notes-scantrust-photoauth-3.5.1), [3.3.0](/docs/release-notes/release-notes-scantrust-photoauth-3.3.0), [3.2.0](/docs/release-notes/release-notes-scantrust-photoauth-3.2.0), [3.1.0](/docs/release-notes/release-notes-scantrust-photoauth-3.1.0), [2.2.1-b](/docs/release-notes/release-notes-scantrust-photoauth-2.2.1-b), [2.2.1](/docs/release-notes/release-notes-scantrust-photoauth-2.2.1), [2.1.1](/docs/release-notes/release-notes-scantrust-photoauth-2.1.1), [2.1.0](/docs/release-notes/release-notes-scantrust-photoauth-2.1.0), [1.0.0](/docs/release-notes/release-notes-scantrust-photoauth-1.0.0) ## Video Auth - By version: [3.9.0](/docs/release-notes/release-notes-scantrust-videoauth-3.9.0), [3.7.2](/docs/release-notes/release-notes-scantrust-videoauth-3.7.2), [3.7.1](/docs/release-notes/release-notes-scantrust-videoauth-3.7.1), [3.6.0](/docs/release-notes/release-notes-scantrust-videoauth-3.6.0), [3.5.2](/docs/release-notes/release-notes-scantrust-videoauth-3.5.2), [3.4.0](/docs/release-notes/release-notes-scantrust-videoauth-3.4.0), [3.3.2](/docs/release-notes/release-notes-scantrust-videoauth-3.3.2), [3.3.1](/docs/release-notes/release-notes-scantrust-videoauth-3.3.1), [3.1.0](/docs/release-notes/release-notes-scantrust-videoauth-3.1.0), [3.0.4](/docs/release-notes/release-notes-scantrust-videoauth-3.0.4), [3.0.3](/docs/release-notes/release-notes-scantrust-videoauth-3.0.3), [3.0.2](/docs/release-notes/release-notes-scantrust-videoauth-3.0.2), [3.0.1](/docs/release-notes/release-notes-scantrust-videoauth-3.0.1), [2.10.0](/docs/release-notes/release-notes-scantrust-videoauth-2.10.0), [2.9.2](/docs/release-notes/release-notes-scantrust-videoauth-2.9.2), [2.9.1](/docs/release-notes/release-notes-scantrust-videoauth-2.9.1), [2.9.0](/docs/release-notes/release-notes-scantrust-videoauth-2.9.0), [2.8.1](/docs/release-notes/release-notes-scantrust-videoauth-2.8.1), [2.7.1](/docs/release-notes/release-notes-scantrust-videoauth-2.7.1), [2.7.0](/docs/release-notes/release-notes-scantrust-videoauth-2.7.0), [2.6.0](/docs/release-notes/release-notes-scantrust-videoauth-2.6.0), [2.5.5](/docs/release-notes/release-notes-scantrust-videoauth-2.5.5), [2.5.2](/docs/release-notes/release-notes-scantrust-videoauth-2.5.2), [2.4.0](/docs/release-notes/release-notes-scantrust-videoauth-2.4.0), [2.3.2](/docs/release-notes/release-notes-scantrust-videoauth-2.3.2), [2.3.1](/docs/release-notes/release-notes-scantrust-videoauth-2.3.1), [2.3.0](/docs/release-notes/release-notes-scantrust-videoauth-2.3.0), [2.1.0](/docs/release-notes/release-notes-scantrust-videoauth-2.1.0), [2.0.0](/docs/release-notes/release-notes-scantrust-videoauth-2.0.0), [1.5.0](/docs/release-notes/release-notes-scantrust-videoauth-1.5.0) ## Scantrust (ST) ### Android - By version: [1.16.3](/docs/release-notes/release-notes-android-scantrust-1.16.3), [1.16.1](/docs/release-notes/release-notes-android-scantrust-1.16.1), [1.15.0](/docs/release-notes/release-notes-android-scantrust-1.15.0), [1.14.5](/docs/release-notes/release-notes-android-scantrust-1.14.5), [1.14.4](/docs/release-notes/release-notes-android-scantrust-1.14.4), [1.14.3](/docs/release-notes/release-notes-android-scantrust-1.14.3), [1.14.2](/docs/release-notes/release-notes-android-scantrust-1.14.2), [1.14.1](/docs/release-notes/release-notes-android-scantrust-1.14.1), [1.13.4](/docs/release-notes/release-notes-android-scantrust-1.13.4), [1.13.3](/docs/release-notes/release-notes-android-scantrust-1.13.3), [1.13.2](/docs/release-notes/release-notes-android-scantrust-1.13.2), [1.13.1](/docs/release-notes/release-notes-android-scantrust-1.13.1), [1.12.14](/docs/release-notes/release-notes-android-scantrust-1.12.14), [1.12.13](/docs/release-notes/release-notes-android-scantrust-1.12.13), [1.12.11](/docs/release-notes/release-notes-android-scantrust-1.12.11), [1.12.6](/docs/release-notes/release-notes-android-scantrust-1.12.6), [1.12.5](/docs/release-notes/release-notes-android-scantrust-1.12.5), [1.12.4](/docs/release-notes/release-notes-android-scantrust-1.12.4), [1.12.3](/docs/release-notes/release-notes-android-scantrust-1.12.3), [1.12.2](/docs/release-notes/release-notes-android-scantrust-1.12.2), [1.12.1](/docs/release-notes/release-notes-android-scantrust-1.12.1), [1.12.0](/docs/release-notes/release-notes-android-scantrust-1.12.0), [1.11.0](/docs/release-notes/release-notes-android-scantrust-1.11.0), [1.10.2](/docs/release-notes/release-notes-android-scantrust-1.10.2), [1.10.1](/docs/release-notes/release-notes-android-scantrust-1.10.1), [1.10.0](/docs/release-notes/release-notes-android-scantrust-1.10.0), [1.9.0](/docs/release-notes/release-notes-android-scantrust-1.9.0), [1.8.0](/docs/release-notes/release-notes-android-scantrust-1.8.0), [1.7.0](/docs/release-notes/release-notes-android-scantrust-1.7.0), [1.6.3](/docs/release-notes/release-notes-android-scantrust-1.6.3), [1.6.2](/docs/release-notes/release-notes-android-scantrust-1.6.2), [1.5.1](/docs/release-notes/release-notes-android-scantrust-1.5.1), [1.5.0](/docs/release-notes/release-notes-android-scantrust-1.5.0) ### iOS - By version: [5.4.0](/docs/release-notes/release-notes-ios-scantrust-5.4.0), [5.3.0](/docs/release-notes/release-notes-ios-scantrust-5.3.0), [5.2.0](/docs/release-notes/release-notes-ios-scantrust-5.2.0), [5.1.0](/docs/release-notes/release-notes-ios-scantrust-5.1.0), [5.0.0](/docs/release-notes/release-notes-ios-scantrust-5.0.0), [4.8.0](/docs/release-notes/release-notes-ios-scantrust-4.8.0), [4.7.0](/docs/release-notes/release-notes-ios-scantrust-4.7.0), [4.6.2](/docs/release-notes/release-notes-ios-scantrust-4.6.2), [4.6.1](/docs/release-notes/release-notes-ios-scantrust-4.6.1), [4.6.0](/docs/release-notes/release-notes-ios-scantrust-4.6.0), [4.5.1](/docs/release-notes/release-notes-ios-scantrust-4.5.1), [4.5.0](/docs/release-notes/release-notes-ios-scantrust-4.5.0), [4.4.0](/docs/release-notes/release-notes-ios-scantrust-4.4.0), [4.3.0](/docs/release-notes/release-notes-ios-scantrust-4.3.0), [4.2.0](/docs/release-notes/release-notes-ios-scantrust-4.2.0), [4.1.1](/docs/release-notes/release-notes-ios-scantrust-4.1.1), [4.1.0](/docs/release-notes/release-notes-ios-scantrust-4.1.0), [4.0.5](/docs/release-notes/release-notes-ios-scantrust-4.0.5), [4.0.3](/docs/release-notes/release-notes-ios-scantrust-4.0.3), [4.0.2](/docs/release-notes/release-notes-ios-scantrust-4.0.2), [3.9.0](/docs/release-notes/release-notes-ios-scantrust-3.9.0), [3.8.0](/docs/release-notes/release-notes-ios-scantrust-3.8.0), [3.6.0](/docs/release-notes/release-notes-ios-scantrust-3.6.0), [3.5.0](/docs/release-notes/release-notes-ios-scantrust-3.5.0), [3.4.0](/docs/release-notes/release-notes-ios-scantrust-3.4.0), [3.3.0](/docs/release-notes/release-notes-ios-scantrust-3.3.0), [3.2.0](/docs/release-notes/release-notes-ios-scantrust-3.2.0), [3.1.0](/docs/release-notes/release-notes-ios-scantrust-3.1.0), [3.0.0](/docs/release-notes/release-notes-ios-scantrust-3.0.0), [2.8.0](/docs/release-notes/release-notes-ios-scantrust-2.8.0), [2.7.0](/docs/release-notes/release-notes-ios-scantrust-2.7.0), [2.6.0](/docs/release-notes/release-notes-ios-scantrust-2.6.0), [2.5.3](/docs/release-notes/release-notes-ios-scantrust-2.5.3), [2.5.2](/docs/release-notes/release-notes-ios-scantrust-2.5.2), [2.5.0](/docs/release-notes/release-notes-ios-scantrust-2.5.0), [2.4.0](/docs/release-notes/release-notes-ios-scantrust-2.4.0), [2.3.0](/docs/release-notes/release-notes-ios-scantrust-2.3.0), [2.2.0](/docs/release-notes/release-notes-ios-scantrust-2.2.0), [2.0.1](/docs/release-notes/release-notes-ios-scantrust-2.0.1) ## Scantrust Enterprise (STE) ### Android - By version: [2.3.15](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.15), [2.3.14](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.14), [2.3.13](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.13), [2.3.12](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.12), [2.3.11](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.11), [2.3.10](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.10), [2.3.8](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.8), [2.3.7](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.7), [2.3.6](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.6), [2.3.5](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.5), [2.3.4](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.4), [2.3.3](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.3), [2.3.1](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.1), [2.3.0](/docs/release-notes/release-notes-android-scantrust-enterprise-2.3.0), [2.2.6](/docs/release-notes/release-notes-android-scantrust-enterprise-2.2.6), [2.2.5](/docs/release-notes/release-notes-android-scantrust-enterprise-2.2.5), [2.2.4](/docs/release-notes/release-notes-android-scantrust-enterprise-2.2.4), [2.2.2](/docs/release-notes/release-notes-android-scantrust-enterprise-2.2.2), [2.2.1](/docs/release-notes/release-notes-android-scantrust-enterprise-2.2.1), [2.1.4](/docs/release-notes/release-notes-android-scantrust-enterprise-2.1.4), [2.1.3](/docs/release-notes/release-notes-android-scantrust-enterprise-2.1.3), [2.1.2](/docs/release-notes/release-notes-android-scantrust-enterprise-2.1.2), [2.1.1](/docs/release-notes/release-notes-android-scantrust-enterprise-2.1.1), [2.1.0](/docs/release-notes/release-notes-android-scantrust-enterprise-2.1.0), [2.0.10](/docs/release-notes/release-notes-android-scantrust-enterprise-2.0.10), [2.0.9](/docs/release-notes/release-notes-android-scantrust-enterprise-2.0.9), [2.0.8](/docs/release-notes/release-notes-android-scantrust-enterprise-2.0.8), [2.0.7](/docs/release-notes/release-notes-android-scantrust-enterprise-2.0.7), [2.0.2](/docs/release-notes/release-notes-android-scantrust-enterprise-2.0.2), [2.0.1](/docs/release-notes/release-notes-android-scantrust-enterprise-2.0.1), [2.0.0](/docs/release-notes/release-notes-android-scantrust-enterprise-2.0.0), [1.9.1](/docs/release-notes/release-notes-android-scantrust-enterprise-1.9.1), [1.9.0](/docs/release-notes/release-notes-android-scantrust-enterprise-1.9.0), [1.8.1](/docs/release-notes/release-notes-android-scantrust-enterprise-1.8.1), [1.8.0](/docs/release-notes/release-notes-android-scantrust-enterprise-1.8.0), [1.7.0](/docs/release-notes/release-notes-android-scantrust-enterprise-1.7.0), [1.6.2](/docs/release-notes/release-notes-android-scantrust-enterprise-1.6.2), [1.6.1](/docs/release-notes/release-notes-android-scantrust-enterprise-1.6.1), [1.6.0](/docs/release-notes/release-notes-android-scantrust-enterprise-1.6.0), [1.5.3](/docs/release-notes/release-notes-android-scantrust-enterprise-1.5.3), [1.5.1](/docs/release-notes/release-notes-android-scantrust-enterprise-1.5.1), [1.5.0](/docs/release-notes/release-notes-android-scantrust-enterprise-1.5.0), [1.4.1](/docs/release-notes/release-notes-android-scantrust-enterprise-1.4.1), [1.4.0](/docs/release-notes/release-notes-android-scantrust-enterprise-1.4.0), [1.3.0](/docs/release-notes/release-notes-android-scantrust-enterprise-1.3.0), [1.1.0](/docs/release-notes/release-notes-android-scantrust-enterprise-1.1.0), [1.0.1](/docs/release-notes/release-notes-android-scantrust-enterprise-1.0.1) ### iOS - By version: [4.7.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.7.0), [4.6.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.6.0), [4.5.3](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.5.3), [4.5.2](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.5.2), [4.5.1](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.5.1), [4.5.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.5.0), [4.4.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.4.0), [4.3.1](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.3.1), [4.3.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.3.0), [4.2.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.2.0), [4.1.1](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.1.1), [4.1.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-4.1.0), [3.5.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.5.0), [3.4.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.4.0), [3.3.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.3.0), [3.2.1](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.2.1), [3.2.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.2.0), [3.1.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.1.0), [3.0.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-3.0.0), [2.3.1](/docs/release-notes/release-notes-ios-scantrust-enterprise-2.3.1), [2.1.1](/docs/release-notes/release-notes-ios-scantrust-enterprise-2.1.1), [2.1.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-2.1.0), [2.0.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-2.0.0), [1.7.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-1.7.0), [1.6.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-1.6.0), [1.5.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-1.5.0), [1.4.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-1.4.0), [1.3.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-1.3.0), [1.2.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-1.2.0), [1.1.0](/docs/release-notes/release-notes-ios-scantrust-enterprise-1.1.0) ## Scantrust Printer (Android) - By version: [1.12.1](/docs/release-notes/release-notes-android-scantrust-printer-1.12.1), [1.12.0](/docs/release-notes/release-notes-android-scantrust-printer-1.12.0), [1.11.1](/docs/release-notes/release-notes-android-scantrust-printer-1.11.1), [1.11.0](/docs/release-notes/release-notes-android-scantrust-printer-1.11.0), [1.10.1](/docs/release-notes/release-notes-android-scantrust-printer-1.10.1), [1.9.1](/docs/release-notes/release-notes-android-scantrust-printer-1.9.1), [1.9.0](/docs/release-notes/release-notes-android-scantrust-printer-1.9.0), [1.8.0](/docs/release-notes/release-notes-android-scantrust-printer-1.8.0), [1.7.0](/docs/release-notes/release-notes-android-scantrust-printer-1.7.0), [1.6.1](/docs/release-notes/release-notes-android-scantrust-printer-1.6.1), [1.6.0](/docs/release-notes/release-notes-android-scantrust-printer-1.6.0), [1.5.7](/docs/release-notes/release-notes-android-scantrust-printer-1.5.7), [1.5.5](/docs/release-notes/release-notes-android-scantrust-printer-1.5.5), [1.5.4](/docs/release-notes/release-notes-android-scantrust-printer-1.5.4), [1.5.3](/docs/release-notes/release-notes-android-scantrust-printer-1.5.3), [1.5.2](/docs/release-notes/release-notes-android-scantrust-printer-1.5.2), [1.3.1](/docs/release-notes/release-notes-android-scantrust-printer-1.3.1), [1.3.0](/docs/release-notes/release-notes-android-scantrust-printer-1.3.0), [1.2.2](/docs/release-notes/release-notes-android-scantrust-printer-1.2.3), [1.2.0](/docs/release-notes/release-notes-android-scantrust-printer-1.2.2), [1.2.0](/docs/release-notes/release-notes-android-scantrust-printer-1.2.0), [1.1.0](/docs/release-notes/release-notes-android-scantrust-printer-1.1.0), [1.0.0](/docs/release-notes/release-notes-android-scantrust-printer-1.0.0) ## Compatible Phones List [Android and iOS phones](https://sites.scantrust.com/scantrust/compatible-devices-app/) --- // File: scantrust/getting-started-applications At Scanrust we provide many applications to our clients so they can get the most out of the codes they put on their products. Some of these applications are external-facing and are aimed at the users who scan our codes (B2B2C). Other apps are there to support the operations around managing the codes (creating, activating, etc.). Apart from our mobile apps, most of this software is hosted as "software-as-a-service" (SaaS). However, should you have the technical abilities and desire to do so, all our consumer-facing landing pages can be self-hosted if preferred. This developer portal should provide you with enough technical resources to make that happen - and point you in the right direction if you get stuck. ## Useful links To get you started, you might find some of these links relevant: - **New to Scantrust?** Get some codes and download the [Scantrust App](/docs/scantrust/st). - **No account yet?** Check in with your account manager and ask him to sign you up with a user-account in our [Scantrust Enterprise Portal](/docs/scantrust/portal). There is a staging-system to which you will also get access (once requested). Once you have an account, you can configure your products, create codes, set up your campaign, define scm fields etc. - Then download the **[Scantrust Enterprise App](/docs/scantrust/ste)** and use your account to start adding some data to your codes. - You can also upload SCM data with [our SCM Uploader Tool](/docs/scantrust/tools-and-integrations/csv-uploader-script), or [write your own script](/docs/build-with-scantrust/rest-api/samples) if you're feeling brave. - Check out the [Scantrust Consumer Landing Pages](/docs/scantrust/stc) which can be easily customized with some basic knowledge of [AngularJS and CS](/docs/build-with-scantrust/consumer/introduction-stc) - Last but not least: [get the mobile SDK](/docs/mobile-sdk/getting-started-mobile-sdk) and start coding your own scanning apps in iOS or Android. Having **troubles connecting** to our services? Or just curious about our uptime? - Check our System Status. ## Join our Community - **Stuck?** Our support team have compiled some great Zendesk resources for you. - Want an SDK for a language we don’t yet support? Let us know! - Also have a look at our Github org. --- // File: scantrust/portal ## Introduction The Scantrust Enterprise Portal is the main interface to set up and configure the Scantrust system. It is used for: 1. Requesting, printing and activating ***`codes`*** 1. Configure company information such as brands, products, and ***`users`*** (with roles) 1. Configure ***`API keys`*** for use with automated tools, [see SCM Uploader Tool](/docs/scantrust/tools-and-integrations/csv-uploader-script) 1. Configuring ***`Campaigns`*** with all the required options such as scanning behaviour, SCM fields track&trace etc. 1. View incoming ***`scans`*** in real-time with our dashboard 1. Configuring ***`alerts`*** based on anomalies 1. Perform ***`maintenance`*** on codes (reels) To register on the Scantrust Portal, go to the ***[registration page](https://portal.scantrust.com)*** For more extensive information about the Enterprise Portal, please **Contact Support**. --- // File: scantrust/st ## Introduction The Scantrust Scanning App is the mobile app intended for consumers who want to authenticate and verify scantrust codes. The app is available for free from Google Play and Apple Appstore. For the latest version, visit our **[download page](https://www.scantrust.com/download/)** ## Secure Graphic Support The secure graphic which is present on most Scantrust codes can be scanned with supported devices. - to see if your phone can scan the secure graphic, check the **[supported devices list](https://scantrust.com/compatible-devices-app/)** for a detailed list of all supported devices. - if your phone is not supported, the app functions as a regular QR code reader. ## Branded Versions The ST App also serves as the reference implementation for the Scantrust Software Development Kit (SDK). There are already a number of branded ST Apps out there which have been customized in many different ways to suit the different needs of brand owners. Examples of customizations are: - enhanced security (blocking other codes) - augmented reality (overlaying the scan-results with additional information) - loyalty programs (linking each code to points and rewards) etc. For more information about the SDK, visit our **[SDK Documentation](/docs/mobile-sdk/getting-started-mobile-sdk)**. The app calls the Scantrust Scan Endpoint API, which then redirects the user to the **[Consumer Landing Pages](/docs/build-with-scantrust/consumer/introduction-stc)** The portal has campaign settings which decide on the behaviour of the app after the endpoint returns the result. ## For Pro-users For professional use within the supply-chain, Scantrust offers the Scantrust Enterprise App, which requires a username and password before it can be used. For more information see the **[Scantrust Enterprise App](/docs/scantrust/ste)** --- // File: scantrust/stc ## Introduction The Scantrust Consumer (STC) landing pages are what the user sees after they scan a code. Whether it's the ST App, STE App or a 3rd party QR code reader, all scans eventually redirect to a landing page. There are 3 ways to redirect after a scan: 1. Redirect to a (static) product landing page (as set up in the portal) 2. Redirect to the default STC, with optional changes by the configurator, hosted by Scantrust. 3. Redirect to a customized STC, with customizations made to the STC codebase and potentially hosted the brandowner on any hosting location. For description of the product redirect and the default STC with the options provided to you by the portal configurator, see our ***[Portal Documentation](/docs/scantrust/portal)*** --- // File: scantrust/ste ## Introduction The Scantrust Enterprise App (STE) is the mobile app intended for professional users and as such requires a named user to log in. These users are created on the Scantrust Enterprise Portal, [see documentation here](/docs/scantrust/portal). There are three primary user-roles for the STE app: 1. (Brand Owner Supply Chain User) to assign codes to products, aggregate codes to logistical units, activate/blacklist codes and set supply chain management fields such as production date, distributor, intended market etc. 2. (Brand Owner Inspector User) who want to authenticate and verify scantrust codes out in the market and view product, activation status, aggregation and other data etc. 3. (Printing Operators) perform equipment calibration, quality assurance during and after the printing of codes The STE app is available for free from Google Play and Apple Appstore. For the latest version, visit our **_[download page](https://www.scantrust.com/download/)_** ## Secure Graphic Support All Scantrust Secure Codes (SSC) have a secure graphic which can be scanned with supported devices. - to see if your phone can scan the secure graphic, check the **_[supported devices list](https://scantrust.com/compatible-devices-app/)_** for a detailed list of all supported devices. - if your phone is not supported, the STE app functions as a regular QR code reader. The STE has an **_`Authenticate`_** menu item for this, as well as a **_`Quick Scan`_** feature for faster (non-secure graphic) scanning. To scan the secure graphic, the STE uses the mobile SDK. For more information, read our **_[SDK Documentation](/docs/mobile-sdk/getting-started-mobile-sdk)_**. ## SCM API The portal has campaign settings which define the SCM fields for all codes in a campaign, as well as the aggregation options (logistical units). The STE app then calls the Scantrust Scan API and the SCM data Upload API. For more information about these APIs, visit our **_[SCM API Documentation](/docs/build-with-scantrust/rest-api/scm-data-upload)_**. Firewall rules need to be setup to be able to access our REST API, For more information see the section about **[Network Access](/docs/build-with-scantrust/rest-api/network-access)**. ## For Consumers For consumer use we recommend the regular Scantrust App. For more information see the **_[Scantrust App](/docs/scantrust/st)_** --- // File: scantrust/tools-and-integrations/QR-generator ## Introduction The Scantrust Offline QR Generator is used by Printing Partners to generate QR codes for high-volume work-orders. For quantities over 120,000 codes, the codes download does not contain images. Clients must generate their codes using the QR code generator. ## How it Works The QR generator is a command line application included with each large workorder. By default, the Windows generator is included, but others are available below. The QR Generator will generate ALL codes into the `codes/` directory, separated into sub-folders. It will also generate `files.csv` which maps the generated codes to their serial numbers. ### Download Links Download Code Generator for your Operating System (`.zip` file): - [Mac](https://dl.scantrust.com/st/workorder-autogen/generate-mac.zip) - [Linux](https://dl.scantrust.com/st/workorder-autogen/generate-linux.zip) - [Windows](https://dl.scantrust.com/st/workorder-autogen/generate-win.zip) ## Steps to Run 1. Download codes from **Work Order** page on **Scantrust Portal**. 2. Unzip the downloaded codes archive 3. *If you are not on windows, download the generator for your platform and place in the folder* 4. Double-click `generator` to run, **or** run it from a terminal (see [Command-Line Parameters](#command-line-parameters) below) ## Command-Line Parameters When running the generator from a terminal, the following parameters are available: | Parameter | Type | Default | Description | |----------------------|---------|---------|----------------------------------------------------------------------------| | `--codes-per-folder` | integer | `0` | Override the # of codes in each output folder. Must be `1000` to `100000`. | **Example:** ```sh ./generator --codes-per-folder 5000 ``` This is useful when your printing workflow requires a specific number of files per folder, regardless of default batch size. --- // File: scantrust/tools-and-integrations/csv-uploader-script ## Introduction The SCM Uploader Tool is a tool for brand owners to upload product, code, serial number and SCM data. It will validate the CSV before splitting it in batches and uploading the batches as JSON to the API. When the extended_id is chosen as the key, it will split up the CSV in batches of 1000, when another SCM field is chosen, it will split it up in batches of 100. The tool is built in Python and runs on Windows, Mac and Linux. Download SCM Uploader for your Operating System: - [Windows 7+ 64-bit](https://dl.scantrust.com/st/scm-upload/win/scm_upload-latest.zip) - [MacOS 10+ 64-bit](https://dl.scantrust.com/st/scm-upload/mac/scm_upload-latest.zip) - [Linux Debian 64-bit](https://dl.scantrust.com/st/scm-upload/linux/scm_upload-latest.zip) ## SCM API The portal has campaign settings which define the SCM fields for all codes in a campaign, as well as the aggregation options (logistical units). The SCM Uploader Tool then calls the Scantrust SCM data Upload API. For more information about this APIs, visit our **_[SCM API Documentation](/docs/build-with-scantrust/rest-api/scm-data-upload)_**. ## Two-Factor Authentication Users with 2FA are required to use an authorization token to login to the Scantrust portal. Because of this, they need to use an UAT token to run this tool. ## Example csv | activation_status | rfid | extended_id | | ----------------- | -------- | ------------------------------- | | 1 | dfs54789 | 86D35CD76A0410MRP041078044CF8C2 | | 1 | | 86D35CD76A0410MRP041078044CF8C3 | | 1 | dfs54789 | 86D35CD76A0410MRP041078044CF8C4 | | 1 | dfs54789 | 86D35CD76A0410MRP041078044CF8C5 | ## Usage ```bash $ ./scm_upload --csv csv_file.csv [--user your_st_user@scantrust.com --password your_pwd --token your_uat_token --server api.scantrust.com --key data_key --verbose -m field1 -m field2 -m field3 ...] ``` ### Parameters #### --csv The CSV file for uploading e.g. my_data.csv #### [OPTIONAL] --server The Scantrust server domain. Defaults to api.scantrust.com #### [OPTIONAL] --user Your Scantrust account email #### [OPTIONAL] --password Your Scantrust password. If not specified you will be asked for input when running the script. #### [OPTIONAL] --token UAT token to login from the Scantrust portal. This token will take precedence over user/pass authentication. **NOTE**: Required for 2FA users. #### [OPTIONAL] --key The header value you want to use as data_key. This key will determine which codes the other values apply to. If left blank, extended_id will be used (code message). #### [OPTIONAL] --mandatory or -m A field to specify header values that need to be mandatory. This option can be passed multiple times. The tool will validate and error before uploading if any value for the specified fields are missing in the CSV. #### [OPTIONAL] --verbose Run the tool with extra output, handy to debug errors. #### [OPTIONAL] --logfile Custom logfile. Defaults to ``.log --- // File: scantrust/tools-and-integrations/image-sync This tool is used to synchronize product images to the Scantrust system. The tool will upload local images to the server based on a CSV file. ## Requirements **Use a pre-compiled version:** Download Image Sync for your Operating System: - [Windows 7+ 64-bit](https://dl.scantrust.com/st/image-sync/win/image_sync-0.0.2.zip) - [MacOS 10+ 64-bit](https://dl.scantrust.com/st/image-sync/mac/image_sync-0.0.2.zip) - [Linux Debian 64-bit](https://dl.scantrust.com/st/image-sync/linux/image_sync-0.0.2.zip) **Scantrust system requirements:** - An active user/UAT with sufficient rights to alter products - CSV with products and images in the right format to upload ## CSV Format Required CSV headers are: - `sku` The SKU of the product - `image` The image to upload for the product (assumes the images are in the current directory) sku,image SKU1,my_img.jpeg SKU2,my_img_2.jpeg **Note:** Max image size = 10MB All additional fields will be ignored by the API. ## Usage Run this tool in your terminal/cmd with sufficient rights. For optimal usage, add the tool to your user path variables. $ ./image_sync my_products.csv --token your_uat_token This tool can be ran using a UAT token (**recommended**) which is obtained from the Scantrust portal under you user settings. The tool also supports regular user/password authentication and will prompt for this if no token is given. **Optional Parameters** **--server** The Scantrust server domain. Defaults to `api.scantrust.com` **--user** Your Scantrust account email **--password** Your Scantrust password. If not specified you will be asked for input when running the script. **--token** UAT token to login from the Scantrust portal. This token will take precedence over user/pass authentication. **--verbose** Run the tool with extra output, handy to debug errors. **--logfile** Custom logfile. Defaults to `.log` **--prefix** Prefix to use for image files e.g. `images/` on mac or `images\\` on windows. Used when images are in a different directory. --- // File: scantrust/tools-and-integrations/product-uploader This tool is used to bulk create products on the Scantrust system using a CSV source file. The script will validate the CSV and attempt to create the products using the Scantrust API. ## Requirements **Use a pre-compiled version:** Download Product Uploader for your Operating System: - [Windows 7+ 64-bit](https://dl.scantrust.com/st/product-upload/win/product_upload-latest.zip) - [MacOS 10+ 64-bit](https://dl.scantrust.com/st/product-upload/mac/product_upload-latest.zip) - [Linux Debian 64-bit](https://dl.scantrust.com/st/product-upload/linux/product_upload-latest.zip) **Scantrust system requirements:** - An active user/UAT with sufficient rights to create products - CSV with products in the right format to upload ## Two-Factor Authentication Users with 2FA are required to use an authorization token to login to the Scantrust portal. Because of this, they need to use an UAT token to run this tool. ## CSV Format Required CSV headers are: - `sku`: The desired SKU for the product - `name`: The product name Optional headers are - `brand`: The ID or reference of the associated brand on the Scantrust system - `client_url`: Associated product URL - `description`: product description - `campaign`: ID of a Scantrust campaign to associate the product with - `stc:key[:key]`: STC additional fields to add to the product data (see info below) **STC fields** STC Fields are additional fields the contain information specific to a STC website. They can be posted in the following format: `stc:field1` will translate to `{"field1": "Value specified in CSV"}` `stc:field2:en` will translate to `{"field2": [{"en": "Value specified in CSV"}]}` `stc:field2:cn` will translate to `{"field2": [{"en": "Value specified in CSV"}, {"cn": "Second value specified"}]}` sku,name,brand,stc:description:en,stc:description:nl SKU1,Product One,12,This is Product One,Dit is Product One All additional fields will be ignored by the API. ## Usage Run this tool in your terminal/cmd with sufficient rights. For optimal usage,add the tool to your user path variables. $ ./product_upload my_products.csv --token your_uat_token This tool can be ran using a UAT token (**recommended**) which is obtained from the Scantrust portal under you user settings. The tool also supports regular user/password authentication and will prompt for this if no token is given. **Optional Parameters** **--server** The Scantrust server domain. Defaults to `api.scantrust.com` **--user** Your Scantrust account email **--password** Your Scantrust password. If not specified you will be asked for input when running the script. **--token** UAT token to login from the Scantrust portal. This token will take precedence over user/pass authentication. **NOTE**: Required for 2FA users. **--verbose** Run the tool with extra output, handy to debug errors. **--logfile** Custom logfile. Defaults to `.log` --- // File: scantrust/tools-and-integrations/rails ## Introduction **RAILS (Real-time Inline Verification System)** is the Inline QA System used for Printing Partners to perform 100% Inline Quality Assurance on digital printing. It consists of: 1. A high-resolution line-camera setup on the printing line 2. A Windows Application which monitors the quality of the printing 3. A (secured) internet connection to upload the scans to the Scantrust servers for training of the secure graphic The setup is provided turn-key by our integration partner ***[Lake Image](https://www.lakeimage.com/)*** For a video of the system in action, please ***[watch the video](https://youtu.be/DtnUCH6bslM)*** For more information or a quotation, please ***[contact sales](https://scantrust.com/#request-demo)*** ## Advantages The advantages of this system over the Scantrust mobile phone QA solution are: - Scans with the mobile phone are no longer needed - A more stable scan quality due to controlled camera parameters - Scans from the actual production are used for the training (this was not possible with the mobile phone QA app) - Every single code is checked locally for QR Code readability and secure graphic ink coverage. A log of the scans can therefore be used to activate the acceptable codes. - A uniformly distributed subset of codes is checked on the Scantrust server, which, coupled with the previous points, results in a significantly higher reliability of the authentication process. ## MultiScan3 **MultiScan3** is a software to scan, decode and assess the quality, in real time, of a variety of barcode types. A special version of MultiScan3 was developed to work together with RAILS. This special version allows to run a local, real-time check on the secure graphic present in the Scantrust code and to provide the relevant data to RAILS. **RAILS** receives in real-time the result of the local check and can access every QR Code scan. It selects a subset of the scans to periodically send to Scantrust’s remote server, where a more thorough check is made. Both the results of the local check and of the remote check are displayed in graphs in RAILS. Both the local and remote checks’ scores are expected to fit within certain tolerances. The workflow is simplified compared to the Scantrust mobile phone QA app, there are only two stages: - “Make Ready” - “Production” A single scan error will not necessarily force the system to go into a specific mode to investigate the errors, each scan is logged and in case an individual scan fails, it is possible to “blacklist” or deactivate the code without impacting the whole production. However in case of **repeated errors** the print operator will need to **contact support** and may have to start the production over again. ## Workflow These are the steps the printer operator should follow to enable the inline QA during production: 1. Start RAILS 2. Select a work order 3. Log in with the Scantrust printer operator credentials 4. Proceed to the inline QA “Make Ready” stage in RAILS 5. Start MultiScan3 6. Load a job configuration file 7. Start the printer 8. Adjust/configure the MultiScan3 job and save the settings 9. In RAILS, when notified (after 20 valid scans in a row), proceed to the “Production” stage 10. During production, no specific action is expected from the print operator, except in the case of a significant number of failures. In that case, the print operator should: - **Stop** the production. - **Contact support** to define a course of action (e.g. discard faulty codes or entire production). - Come back to **Make Ready stage** and start over. 11. When the production is over, submit it(this will notify Scantrust that the printed codes are ready to be trained and activated). ## RAILS Setup Open the RAILS Windows application to see this welcome screen. ![aurora-screen](/doc-img/aurora.png) Click **‘Open’** to open the work order zip file (or ‘manifest.json’ file included in the zipfile). This will load a work order. Files can also be dragged to this screen to load them. The work order preview screen will be displayed. To perform inline QA, you must be logged in. Click **“Login”** to go to next step. ![aurora-login](/doc-img/aurora-login.png) The starting ink coverage and deviation can be set on this screen. **Do not modify these values unless you have been instructed to by the Scantrust support.** ![aurora-login2](/doc-img/aurora-login2.png) You should use your printer account login. Your user account can be set up from the printer partner account (user role must be “print administrator” or “print operator”) Once logged in, you will see your account at the bottom of the application. Click **'Next'** to proceed to the QA Session page. ![aurora-sessions](/doc-img/aurora-sessions.png) On this page you can create a new QA Session for the workorder or resume an existing session. Note that any existing open session will be canceled whenever a new one is created. Once a session is canceled, it can not be resumed! Click a session to resume it or 'Create new QA session' to proceed to the monitoring page. Make sure the current status is Make Ready Mode. If the PC is not connected to the Internet, QA cannot be done with Scantrust RAILS. You should now proceed to start and [setup MultiScan3](#using-multiscan-3). **VERY IMPORTANT:** - You will not be able proceed to next step before MultiScan3 is set up. - You must not start MultiScan3 before having launched RAILS, being logged in and having selected a work order. ![make-ready](/doc-img/make-ready.png) Once the scans start coming in, the Make Ready count will be incremented. You will be able to proceed with production once 20 consecutive valid scans (sent and checked remotely by Scantrust server) have been found. The goal of this phase is to reach a stable printing quality that matches the quality obtained when calibrating the equipment. ![make-ready2](/doc-img/make-ready2.png) When the stability condition is reached, a pop-up will be shown. Press Close and then click on **Start Production** once your production codes are running on the printing line. ![start-production](/doc-img/start-production.png) Production is now running. ![production-running](/doc-img/production-running.png) Once you are ready to finish your production, click the Submit button that appeared in the right corner of the screen. ![production-submit](/doc-img/production-submit.png) Fill in the printed quantity and click “Submit QA Session”. ![submit-session](/doc-img/submit-session.png) If the upload fails for some reason, you will be put in Offline Mode automatically. Please try to manually toggle the upload switch again to proceed with the production. If toggling the switch is not working, contact Scantrust support. **Note:** In Offline Mode, inline QA cannot be performed. Contact the Scantrust support and proceed with the QA on a **phone** if switching the toggle does not work. ![offline-mode](/doc-img/offline-mode.png) ## Using MultiScan 3 Open MultiScan 3 and proceed as ‘Operator’. You will see an initial window that contains jobs. Note that both MultiScan3 and RAILS screens can be viewed simultaneously as two adjacent windows. Select the pre-configured job or create a new one. ![mode-selection](/doc-img/mode-selection.png) You will now usually see a black screen, because the camera will only take pictures when triggered by the label sensor. **If needed, set the label sensor to the right spot** on the web and click “Setup” to configure your job. ![label-sensor](/doc-img/label-sensor.png) **The sensor (in blue) may need to be re-positionned depending on the position of the element that triggers it.** **Note**: Configuring MultiScan 3 is only needed when running a new job template or when the label sensor needs to be adjusted. Click **'start'** if everything is configured correctly. ![multiscan3-setup](/doc-img/multiscan3-setup.png) ### Configuring MultiScan 3 #### Label Sensor trigger delay You can adjust the trigger delay by selecting the camera and clicking modify. ![modify-delay](/doc-img/modify-delay.png) Set the **“Trigger delay”** to a value that allows you to see the Scantrust codes of **one** row in the middle of the output image. If necessary, adjust the **“Image length”** to obtain a long enough image. ![trigger-delay](/doc-img/trigger-delay.png) #### QR Code capture areas A barcode reader object must be added for each Scantrust QR code in a row of the web. **“BarcodeLite tool”** objects can be added by selecting **“Add”** whilst the Camera001 object is selected. **E.g.** A label design that’s printed in 3 columns on the web requires 3 BarcodeLite tools. ![barcode-tool](/doc-img/barcode-tool.png) Each BarcodeLite tool must be modified to capture the correct capture area for its code. Click the BarcodeLite tool to configure it and then click **“Modify”**. ![barcode-setup](/doc-img/barcode-setup.png) 1. Select **“QR Code”** as the Barcode Type 2. Draw a rectangle around the code, allowing for enough padding. Bear in mind that the line might shift a bit, so the area of interest should be big enough to compensate for this shift. 3. Make sure the **“Result”** displays a URL. If not then the tool is not detecting the code and additional manipulations are required. 4. Adjust the **“Threshold”** so that it sits in the middle of the readable QR Code range. (if the QR is readable between 70 and 180 then the threshold should be ~125) 5. Click **'OK'** to save 6. Configure any other BarcodeLite tool instances. ### Preparing and saving a job file This is required whenever a new print job needs to be configured and saved for future productions ## Troubleshooting | Issue | Action | | ----- | ------ | | I am not able to load the work order | **Contact support**, include the work order information (reference and ID) in your request. | | I am not able to log in | Verify the Internet connection. Verify with your Scantrust account administrator that you have the credentials to log in (i.e. a login for a print operator or print account administrator). **Contact support** if that does not resolve the issue. | | I do not see scans on MultiScan3 | Make sure the label sensor is correctly adjusted, and that the printer running. | | I do not see all the graph bars and/or any activity on RAILS | Check that MultiScan3 is successfully reading the codes. If only one or the graph is missing, check that BarcodeLite tool instances have been correctly set up. | | I am not able to get out of Make Ready and go to Production Run | The codes’ quality/statistic likely do not match with the quality/statistics established during the equipment calibration. Make sure the printer is printing according to calibration (you may want to check the parameters that affect dot gain). **Contact support** if you do not manage to adjust printing quality. | | I am in offline mode and cannot switch back | You might be uploading scans from another work order. Try to click the online mode toggle. If that does not work, it is likely that there is no Internet connexion or that the work order is wrong. Please reach out to your system administrator/load another work order. **Contact support** if that does not resolve the issue. | | I still cannot resolve the issues and production cannot be further delayed | Exceptionally, you may use the standard Scantrust mobile phone app to proceed with quality assurance by statistical sampling. Please follow the guidelines for performing the QA scans with the mobile phone. | | I have a “significant” number of failed scans during production (based on an agreed upon tolerance on failed scans) | **Contact support** | --- // File: scantrust/tools-and-integrations/workorder-create-tool This tool is used to automatically create workorders on behalf of a brand owner based on a CSV file. ## Requirements **Use a pre-compiled version:** Download Create Workorder tool for your Operating System: ## Binary files - [MacOs 64-bit](https://dl.scantrust.com/st/wo-create/wo_create_v1.1-macos.zip) - [Windows x86](https://dl.scantrust.com/st/wo-create/wo_create_v1.1.zip) ## steps to run 1. get the UAT token for your company. UAT token must have access to: - product_view - workorder_create - workorder_view 2. get the file with your workorders in it. By default it checks for the file `workorders.csv` but you can pass in any file with the `--source` option. This file MUST have a header which includes: - `wo_template_id` : ST to provide - `wo_reference` : BO_PO_Number-SKU(s) - `sku` : Product SKU which is used to assign to this WO - `code_quantity` : Number_of_label \* (1 + wastage %). Number of codes needed in order to deliver the number of labels required. - `remarks` : Optional remarks to be included in the WO 3. Run the script with `wo_create.exe --source "WO CSV.csv" --server api.scantrust.com --token ` 4. example output: ```txt ======================== 5 WOs in the CSV. 5 WOs have been created: ======================== ``` 5. If you're stuck, run `wo_create.exe --help` ## How the script works 1. Creates a workorder for each line in the CSV file 2. Checks all the **products** in the wo file. If any of the products cannot be found, the script is aborted and NO workorders are created 3. Checks all the **wo_template_id** in the wo file. If any of the templates cannot be found, or if any template doesnt have a printing partner, the script is aborted and NO workorders are created ## CSV example ``` wo_template_id,sku,wo_reference,code_quantity,remarks 1,CH-01,reference ch-01,10,remarks 1 ... ``` **Optional Parameters** **--server** The Scantrust server domain. Defaults to `api.scantrust.com` **--token** UAT token to login from the Scantrust portal. This token will take precedence over user/pass authentication. **--verbose** Run the tool with extra output, handy to debug errors. **--help** There's no shame in needing help!