API
The JEDI team provides and maintains a Web API that allows for easily allocating, updating, and retrieving Tool Records.
The full list of available endpoints and how to use them can be found within the API documentation here.
Below, we provide several examples of common operations with the manufacturing APIs.
Tool Record Allocation Examples
This category of API covers the generation of data for the purposes of programming or re-programming a tool. We term this “allocation” as we are allocating a set of unique, per-tool data points for you to program into the tool. This is the start of all data we will eventually collect about a tool so it’s imperative this data is accurately applied to the tool.
For detailed documentation for this API, see POST /v1/tool/allocate
Manufacturing Facility Request/Response
In addition to the standard client details, specify the ID of the product, the number to tools, the customer’s purchase order number, and the job number for this batch to allocate the appropriate records.
Note: facility code follows ES 19-1 standard
Request
{
"productId": 65535,
"size": 1,
"customerPO": "1234ABCD",
"jobNumber": "ABC123",
"client": {
"timestamp": 1629479398,
"facility": "1",
"lineId": "1A",
"stationId": "2",
"name": "Quicklink-Mfg",
"user": "user1@milwaukeetool.com",
"version": "1.2.3"
}
}
Response
For the provided request, we will return a tool record.
For the quantity of tools requested, we will return that many devices with programming details for each. Such as MPBIDs, passwords, and other details based on the product.
{
"manufacturer": "MT",
"productId": 65535,
"createdDateTime": 1609459200,
"devices": [
{
"sequenceNumber": 0,
"mpbid": "FFFF000000",
"bod": "17A9BD1670C",
"metcoPassword": "FFFFFFFFFFFFFFFF",
"userPassword": "FFFFFFFFFFFFFFFF",
"servicePassword": "FFFFFFFFFFFFFFFF",
"adminPassword": "FFFFFFFFFFFFFFFF"
}
],
"currentSerialID": 1
}
Engineering Request/Response
During NPD processes, engineers too should leverage the Allocation API to provision themselves programming data. This is to ensure the data downloaded off the tool can be properly tagged and tracked as a non-production tool.
In this case, customer PO is not needed however, you can use the VPIN number for the Job Number field. Client details should still be provided.
Request
{
"productId": 114,
"size": 1,
"jobNumber": "77712",
"client": {
"timestamp": 1629479398,
"facility": "G",
"name": "QuickLink-Web",
"user": "user1@milwaukeetool.com",
"version": "1.2.3"
}
}
Response
For the quantity of tools requested, we will return that many devices with programming details for each. Such as MPBIDs, passwords, and other details based on the product.
{
"manufacturer": "NPD",
"productId": 114,
"createdDateTime": 1609459200,
"devices": [
{
"sequenceNumber": 0,
"mpbid": "0114000000",
"bod": "17A9BD1670C",
"metcoPassword": "FFFFFFFFFFFFFFFF",
"userPassword": "FFFFFFFFFFFFFFFF",
"servicePassword": "FFFFFFFFFFFFFFFF",
"adminPassword": "FFFFFFFFFFFFFFFF"
}
],
"currentSerialID": 1
}
Tool Record Updates Examples
The tool record update API was designed and built around the intent of providing greater flexibility in how a manufacturing line can be configured. The significant changes include supporting more than one tool record at a time and support for partial data updates. We’ve also organized the data structure to help provide greater clarity when viewing raw data structures.
Note, a successful tool record update will result in no body content being returned by the API. A standard 200 HTTP response will be returned.
For detailed documentation for this API, see POST /v2/tool/records
Associate data to multiple Tool Records simultaneously
The newest version of the tool update API now supports providing one or more tool updates at a single time. In this example, we are updating the serial numbers of two tools within a single API request.
{
"records": [
{
"id": {
"mpbid": "0000000000",
"serialNumber": "GA12340000000"
},
"client": {
// details hidden
}
},
{
"id": {
"mpbid": "0000000001",
"serialNumber": "GA12340000001"
},
"client": {
// details hidden
}
}
]
}
Associate a Serial Number to a Tool Record
This simplest example of updating a tool’s details is adding a serial number to a single tool record. To do so, you provide the unique ID for the tool, MPBID, provided during allocation, along with the new serial number and miscellaneous client detail.
{
"records": [
{
"id": {
"mpbid": "0000000000",
"serialNumber": "GA12340000000"
},
"client": {
"timestamp": 1629479398,
"facility": "Jacksonville",
"lineId": "1A",
"stationId": "2",
"name": "Quicklink-Mfg",
"user": "user1@milwaukeetool.com",
"version": "1.2.3"
}
}
]
}
Associate Firmware Details to a Tool Record
To update the details of which firmware versions and corresponding part numbers are on a tool or multiple tool, you can provide the firmware details and unique device ID in combination with the tool’s unique ID and client details in a single request.
{
"records": [
{
"id": {
"mpbid": "0000000000"
},
"firmware": {
"partNumber": "35866D65",
"version": "0E010602"
},
"uniqueDeviceId": "1234567890ABCDEFGHIJ",
"client": {
// details hidden
}
}
]
}
Associate Component Details to a Tool Record
This sample request demonstrates adding and removing the components of a tool. For each component, the corresponding QR code should be provided along with the action taken for that component. Actions can be either ADD, for any added components, or REMOVE if the component is taken off the tool.
{
"records": [
{
"id": {
"mpbid": "0000000000"
},
"components": [
{
"code": "123412341234adsfasdfasdf",
"action": "REMOVE"
},
{
"code": "123412341234adsfasdfasdfasdf",
"action": "ADD"
}
],
"client": {
// details hidden
}
}
]
}
Associate Multiple Fields to a Tool Record
In the event you have multiple data points about a tool or tools you want to update, you can send all of them in together as well. In this request we are updating firmware details, born on dates, and component information all at once.
{
"records": [
{
"id": {
"mpbid": "0000000000"
},
"firmware": {
"partNumber": "35866D65",
"version": "0E010602"
},
"uniqueDeviceId": "1234567890ABCDEFGHIJ",
"bornOnDate": "AC01DF",
"components": [
{
"code": "123412341234adsfasdfasdf",
"action": "REMOVE"
},
{
"code": "123412341234adsfasdfasdfasdf",
"action": "ADD"
}
],
"client": {
// details hidden
}
}
]
}
Associate ToolID to a Tool Record
When associating a Tool ID QR code to a tool, you simply need to provide the full contents of the QR code sticker URL along with the MPBID of the tool it is being associated with. Other processes should have been performed to define all the necessary product details along with sending the serial number and tool region for the given MPBID in order for the full Tool ID process to function as expected.
{
"records": [
{
"id": {
"mpbid": "0000000000",
"toolId": "https://mke.tl/M000004C3"
},
"client": {
// details hidden
}
}
]
}
Associate Outsourced VendorID to a Tool Record
These fields are ones which aid in traceability of an outsourced product. In these cases some additional data may be required in order to properly identify a tool across companies.
{
"records": [
{
"id": {
"mpbid": "0000000000",
"vendorId": "ABCD 1234"
},
"client": {
// details hidden
}
}
]
}
Associate PCBA Data Logger to a Tool Record
PCBA Data Loggers must be linked to a host tool in order to better analyze the source of the data and allow for aggregation by tool type. For this case, the link block’s pcbaTool field should be populate with the reference code.
{
"records": [
{
"id": {
"mpbid": "0000000000"
},
"link": {
"pcbaTool": "123412341234adsfasdfasdf"
},
"client": {
// details hidden
}
}
]
}
Audit Reports
During manufacturing, audits are performed on tools in order to ensure we are meeting the quality standards we set forth for our tools. Certain audit tests will generate spreadsheets of data which we are required to store and maintain for extended periods of time. To support this use case, we’ve created the Manufacturing Audit API.
For detailed documentation, see /v1/audit/{product_id}/{mpbid} here
Requesting Tool Records Examples
Version 1 of the manufacturing API supports requesting one or more tool records. It is designed to be a “single source of truth” for retrieving tool record information. This API can search for tool records by one of a tool’s unique identifiers – Tool Id, Serial Number, or MPBID. A maximum of 50 records can be searched at once by supplying a comma-separated list of values, provided they are values representing the same unique identifier.
Get Records By Tool ID Request
Example request:
GET /v1/tool/records?toolId=https://mke.tl/0000004HE,https://mke.tl/INVALID
Response
{
"records": [
{
"mfgProductionDate": 1642139011000,
"uniqueDeviceId": "3B0062000250315338363020",
"description": "Gen 4 M18 FUEL Drill",
"source": "Unknown",
"platform": "M18",
"mpbid": "01150002E2",
"bleModule": "UNKNOWN",
"createdAt": 1616164700000,
"toolId": "https://mke.tl/0000004HE",
"mfgLastUpdateDate": 1641796811000,
"model": "2903-20",
"firmwareVersion": "10010605",
"updatedAt": 1648830910000,
"image": "https://onekey-tool-images-na.s3.amazonaws.com/default-images/No%20Image%20Available.jpg",
"p_id_hex": "0115",
"default_p_id": "0115",
"partNumber": "35866D65",
"region": "US",
"p_id": 277,
"serialNumber": "M64AM220300048",
"bornOnDate": 1641796823000
}
],
"errors": [
{
"code": "ERR0001",
"message": "Item not found",
"context": "https://mke.tl/INVALID"
}
]
}
The above example illustrates a request made using the Tool ID unique identifier, along with two values provided – one valid and one invalid. In the case of valid values being provided, a “records” object is returned in the response, comprised of data properties written to the tool during the manufacturing process. In the case of invalid values being provided, an “errors” object is returned in the response, comprised of a “code” property, which is a custom error type identifier, which represents the type of error returned by the API, a “message” property, which represents an error message, and a “context” property, which represents which value provided caused the error to be returned.
For detailed documentation for this API, see GET /v1/tool/records
Reference Info
Defined Region Codes
The following table represents all possible “region” values and how they should be interpreted.
| Sub Region | Remark |
|---|---|
| EMEA | Europe, UK, Middle East, Africa |
| EU | Europe |
| UK | UK |
| ME | Middle East |
| DK | Denmark |
| FR | France |
| KSA | Saudi Arabia |
| ANZ | Australia & New Zealand |
| NZ | New Zealand |
| TAC | All TAC |
| KR | Korea |
| TW | Taiwan |
| CN | China |
| SA | Malaysia (ML), Singapore (SG), Hong Kong (HK), Indonesia (ID), Philippines (PH), Thailand (TH), Vietnam (VN) |
| AZN | Malaysia (ML), Singapore (SG), Hong Kong (HK), Indonesia (ID), Philippines (PH), Thailand (TH), Vietnam (VN) |
| MSH | Malaysia (ML), Singapore (SG), Hong Kong (HK) |
| SEA | Indonesia (ID), Philippines (PH), Thailand (TH), Vietnam (VN) |
| JP | Japan |
| ASIA | All TAC Regions (except Japan) |
| APJ | All TAC Regions (include Japan) |
| USA/UL/US | United States of America |
| CAN | Canada |
| LATAM | Latin America |