Please enable JavaScript to view this website.

Skip to main content

API

The JEDI team provides and maintains a Web API that allows for easily allocating, updating, and retrieving Tool Records.

Full API Docs

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 more details

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 MORE DETAILS

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 MORE DETAILS

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 RegionRemark
EMEAEurope, UK, Middle East, Africa
EUEurope
UKUK
MEMiddle East
DKDenmark
FRFrance
KSASaudi Arabia
ANZAustralia & New Zealand
NZNew Zealand
TACAll TAC
KRKorea
TWTaiwan
CNChina
SAMalaysia (ML), Singapore (SG), Hong Kong (HK), Indonesia (ID), Philippines (PH), Thailand (TH), Vietnam (VN)
AZNMalaysia (ML), Singapore (SG), Hong Kong (HK), Indonesia (ID), Philippines (PH), Thailand (TH), Vietnam (VN)
MSHMalaysia (ML), Singapore (SG), Hong Kong (HK)
SEAIndonesia (ID), Philippines (PH), Thailand (TH), Vietnam (VN)
JPJapan
ASIAAll TAC Regions (except Japan)
APJAll TAC Regions (include Japan)
USA/UL/USUnited States of America
CANCanada
LATAMLatin America