API
The full list of available endpoints and how to use them can be found within the API documentation here.
Artifactory API Documentation
This API functions as a proxy to the Artifactory API. It provides endpoints to query and download artifacts from Artifactory.
Base URL
https://quicklink-api.milwaukeetool.com/v1/artifactory
Endpoints
1. Get Artifacts
URL: /artifacts
Method: GET
Description: This endpoint uses the Artifactory API to query both the FW_Releases and cluster-releases repositories for all the released artifacts for a given Part Number and Product ID combination.
Query Parameters:
productId(string, required): The product ID to filter artifacts.partNumber(string, optional): The part number to filter artifacts.production(boolean, optional): Filter for production artifacts, useful if trying to search for non released artifacts.hardwareVersion(string, optional): Filter artifacts by bootloader hardware version.
Response:
200 OK: Returns a list of artifacts.400 Bad Request: Invalid request parameters.500 Internal Server Error: An error occurred while processing the request.
Example Request:
GET /v1/artifactory/artifacts?productId=0x00F7&partNumber=898002235&production=false
Example Response:
[
{
"repo": "FW_Releases",
"path": "898002294_0x00F7",
"name": "898002294_REV37_VER2_1_24_MTIW_Encrypted.zip",
"size": 124929,
"created": "2023-02-17T00:09:53.421Z",
"modified": "2023-02-17T00:09:53.196Z",
"version": "37.2.1.24",
"nodeId": 1,
"changeNoteSummary": "Bug fixes and performance improvements",
"firmwareMatchSet": [
{
"productId": "0x00F7",
"nodeId": 1,
"softwarePartNumber": 898002294,
"version": "39.2.2.3"
}
],
"compatibleProductIds": []
},
{
"repo": "FW_Releases",
"path": "898002294_0x00F7",
"name": "898002294_REV39_VER2_2_3_MTIW_Encrypted.zip",
"size": 126570,
"created": "2023-03-15T18:39:34.477Z",
"modified": "2023-03-15T18:39:34.283Z",
"version": "39.2.2.3",
"nodeId": 1,
"changeNoteSummary": "Bug fixes and performance improvements",
"firmwareMatchSet": [
{
"productId": "0x00F7",
"nodeId": 1,
"softwarePartNumber": 898002294,
"version": "39.2.2.3"
}
],
"compatibleProductIds": []
}
]
2. Download Artifact
URL: /artifact/download
Method: GET
Description: This endpoint uses the Artifactory API to query for the details of an artifact, downloads, unzips (if applicable), and returns the binary (*.bin) file in the bundle.
Query Parameters:
path(string, required): The path within the repository.artifact(string, required): The name of the artifact with the file extension same as name in the query.isBle(boolean, optional): When true, extracts BLE-specific firmware from the zip bundle instead of the standard .bin file.imageType(integer, required when isBle is true): 0 for apploader-signed-encrypted, 1 for application-signed-encrypted.repo(string, optional): Overrides the default repository (FW_Releases) used for the download.
BLE Mode: When
isBleis true, the endpoint extracts BLE-specific files from the zip bundle. UseimageType=0for the apploader-signed-encrypted file orimageType=1for the application-signed-encrypted file.
Note: Non-zip artifacts are returned as raw binary data without extraction.
Response:
200 OK: Returns the binary file.400 Bad Request: Invalid request parameters.404 Not Found: Artifact not found.500 Internal Server Error: An error occurred while processing the request.
Example Request:
GET /v1/artifactory/artifact/download?path=898002294_0x00F7&artifact=898002294_REV39_VER2_2_3_MTIW_Encrypted.zip
Example Response:
{
"type": "buffer",
"data": [....]
}
3. Get Most Recent Artifact
URL: /latest
Method: GET
Description:
This endpoint uses the Artifactory API to query the repository for the most recently released artifact for a given Part Number and Product ID combination. It only returns artifacts with release type "production candidate". The partNumber parameter is matched against the @firmware_part Artifactory property only (not @raw_firmware_part or @part_number).
Note: This endpoint uses a different environment-specific repository and connects via the Artifactory edge server.
Query Parameters:
productId(string, required): The product ID to filter artifacts.partNumber(string, required): The part number to filter artifacts.
Response:
200 OK: Returns a list of artifacts.400 Bad Request: Invalid request parameters.404 Not Found: No Artifactory found for productId/partNumber combo.500 Internal Server Error: An error occurred while processing the request.
Example Request:
GET /v1/artifactory/latest?productId=0x00F7&partNumber=898002235
Example Response:
{
"url": "https://{path-to-artifact}",
"size": 124929,
"created": "2023-02-17T00:09:53.421Z",
"modified": "2023-02-17T00:09:53.196Z",
"version": "37.2.1.24"
}
Error Handling
The API returns standard HTTP status codes to indicate the success or failure of an API request. The following are common status codes returned by the API:
200 OK: The request was successful.400 Bad Request: The request was invalid or cannot be otherwise served.404 Not Found: The requested resource could not be found.500 Internal Server Error: An error occurred on the server.
Authentication
- The
/artifactsand/artifact/downloadendpoints require Auth0 JWT authorization (pass a Bearer token in the Authorization header). - The
/latestendpoint is a public endpoint requiring no authentication.
Contact
For any inquiries or support, please contact the JEDI data engineering team at quicklinksupportg@milwaukeetool.com.