Introduction
Welcome to the REST API of the Digitalwerk Store. You can use this API to access the Digitalwerk Store without user interaction. This API is the right thing for you if you want to automate worflows e.g. publish your ADTF plugins using a deployment script or you want to search and download ADTF components programmatically.
You can view code examples for all API methods in the dark area to the right. The examples are CURL commands executed in a Windows command line interpreter but should also run on any unix systems with CURL installed.
Authentication
Set the HTTP Authorization header with a
Bearer
prefix before the access token.
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>"
In order to access the API you need a Digitalwerk account (sign up). After signing up go to the Digitalwerk Store, log in and open your user profile (a link in the top right area), there you will find your access token which you need to supply on all API requests. The API enpoint expects an HTTP header with the name Authorization
and a value of Bearer <YOUR ACCESS TOKEN>
Platform
Identifies the combination of operating system and hardware architecture ADTF is compiled for. When searching for Components you need to specify the ID of the platform you want to run your ADTF system on.
Listing
Request (Windows):
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" ^
"https://digitalwerk.store/api/v1/platforms.json"
Request (Linux):
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" \
"https://digitalwerk.store/api/v1/platforms.json"
Response:
{
"data":
[
{
"id": 1,
"name": "windows_x86_64"
},
{
"id": 2,
"name": "linux_x86_64"
},
{
"id": 3,
"name": "linux_aarch64"
}
]
}
In order to find out which platforms are available you can use this API method.
HTTP Request
GET https://digitalwerk.store/api/v1/platforms.json
This endpoint retrieves all platforms.
ADTF Version
Released ADTF versions, plugins may have been created with. Supplying the ID of an ADTF version as a search parameter returns only Components which are compatible with the given ADTF version.
Listing
Request (Windows):
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" ^
"https://digitalwerk.store/api/v1/adtf_versions.json"
Request (Linux):
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" \
"https://digitalwerk.store/api/v1/adtf_versions.json"
Response:
{
"data":
[
{
"id": 1,
"major": 3,
"minor": 9,
"patch": 0
},
{
"id": 2,
"major": 3,
"minor": 9,
"patch": 1
}
]
}
If you want to find out which ADTF version are available you can use this API method.
HTTP Request
GET https://digitalwerk.store/api/v1/adtf_versions.json
This endpoint retrieves all ADTF versions.
Create
Request (Windows):
# You can also specify a file containing the JSON object using the `-d @/tmp/file.json` syntax.
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" ^
-H "Content-Type: application/json" ^
-d "{\"adtf_version\": {\"major\": \"4\", \"minor\": \"0\", \"patch\": \"0\"}}" ^
https://digitalwerk.store/api/v1/adtf_versions.json
Request (Linux):
# You can also specify a file containing the JSON object using the `-d @/tmp/file.json` syntax.
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" \
-H "Content-Type: application/json" \
-d '{"adtf_version": {"major": "4", "minor": "0", "patch": "0"}}' \
https://digitalwerk.store/api/v1/adtf_versions.json
Response:
{
"data":
{
"id": 26,
"major": 4,
"minor": 0,
"patch": 0
}
}
If you are entitled to create a new ADTF version you can use this API method.
HTTP Request
POST https://digitalwerk.store/api/v1/adtf_versions.json
The payload of the POST request must be a JSON object. Please make sure to set the Content-Type
header to: application/json
otherwise the request won't be accepted.
Parameters
Parameter | Type | Mandatory | Description |
---|---|---|---|
major | Integer | Yes | The first part of the version |
minor | Integer | Yes | The second part of the version |
patch | Integer | Yes | The third part of the version |
Component Type
Each Component has a certain type which can be one of these: Filter, Service, Streaming-Source or Streaming-Sink. For more details have a look at the ADTF Guides especially the section Master the SDK. If you know in advance what component type you are looking for, you can supply the ID of the component type as a search parameter.
Listing
Request (Windows):
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" ^
"https://digitalwerk.store/api/v1/component_types.json"
Request (Linux):
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" \
"https://digitalwerk.store/api/v1/component_types.json"
Response:
{
"data":
[
{
"id": 1,
"name": "Filter"
},
{
"id": 2,
"name": "Service"
},
{
"id": 3,
"name": "Streaming-Source"
},
{
"id": 4,
"name": "Streaming-Sink"
}
]
}
If you want to find out which component types are available you can use this API method.
HTTP Request
GET https://digitalwerk.store/api/v1/component_types.json
This endpoint retrieves all component types.
Component
Components are what you can search for inside the Digitalwerk Store. A Component in the sense of ADTF is either a Streaming-Source, a Filter, a Streaming-Sink or a Service. They represent the basic building blocks of a session inside the ADTF Configuration Editor. Components are always part of a Plugin.
List
Request (Windows):
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" ^
"https://digitalwerk.store/api/v1/components.json?platform_id=1&search_term=Qt3D"
Request (Linux):
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" \
"https://digitalwerk.store/api/v1/components.json?platform_id=1&search_term=Qt3D"
Response:
{
"data":
[
{
"id": 2,
"name": "Qt3D Billboard",
"class_id": "billboard.qt3d.cid",
"description": "This streaming source helps to...",
"component_type_id": 1,
"plugin_id": 42,
"plugin_name": "3DDisplay Plugin",
"plugin_version": "0.0.2"
},
{
"id": 1,
"name": "Qt3D Display",
"class_id": "qt3d_display.qt3d.cid",
"description": "The Qt3DDisplay class loads the corresponding main QML file...",
"component_type_id": 1,
"plugin_id": 42,
"plugin_name": "3DDisplay Plugin",
"plugin_version": "0.0.2"
}
],
"links":
{
"first":"https://digitalwerk.store/api/v1/components.json?platform_id=1&search_term=Qt3D&page=1",
"last":"https://digitalwerk.store/api/v1/components.json?platform_id=1&search_term=Qt3D&page=5",
"prev":"https://digitalwerk.store/api/v1/components.json?platform_id=1&search_term=Qt3D&page=1",
"next":"https://digitalwerk.store/api/v1/components.json?platform_id=1&search_term=Qt3D&page=3"
}
}
List all components for the given platform. Filter by component type if desired and show only compatible components when an ADTF version is given. A search term can be matched against the components name. Twenty items are displayed per page. Use the next link to get the next page. The list contains only the newest version of every component. The list will be sorted by name in ascedning order.
HTTP Request
GET https://digitalwerk.store/api/v1/components.json?platform_id=<ID>
URL Parameters
Parameter | Mandatory | Description |
---|---|---|
platform_id | Yes | The ID of the platform to narrow the search |
search_term | No | The pattern to search for, the search in case insensitive |
adtf_version_id | No | Return only components compatible with the chosen ADTF version |
component_type_id | No | Return components of this type only |
page | No | Generated by the server if paging is required (see JSON links object). The specific page of the search result you want to receive |
Plugin
Plugins contain one or more components. Once downloaded and extracted you can use these new components within the ADTF Configuration Editor.
Show
Request (Windows):
# Make sure to use -L to follow redirects
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" ^
"https://digitalwerk.store/api/v1/plugins/1.json"
Request (Linux):
# Make sure to use -L to follow redirects
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" \
"https://digitalwerk.store/api/v1/plugins/1.json"
Response:
{
"data":
{
"name": "3DDisplay Plugin",
"version_major": 0,
"version_minor": 0,
"version_patch": 1,
"downloads": 23,
"state": "verified",
"project_url": "",
"issue_tracker_url": "",
"support_email": "",
"contains_debug_binary": true,
"sha256": "0d86b9872714c0e2aef425432764cf0594d9b3d670f2a7e8cb0e92ae2d274e51",
"company_id": null,
"adtf_version_id": 10,
"platform_id": 1,
"created_at": "2020-10-06T13:10:31.265Z"
}
}
Show details for the given plugin ID.
HTTP Request
GET https://digitalwerk.store/api/v1/plugins/<ID>.json
Download
Request (Windows):
# Make sure to use -L to follow redirects
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" ^
-L -o "C:/tmp/adtf_plugin.zip" ^
"https://digitalwerk.store/api/v1/plugins/1/download.json"
Request (Linux):
# Make sure to use -L to follow redirects
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" \
-L -o "C:/tmp/adtf_plugin.zip" \
"https://digitalwerk.store/api/v1/plugins/1/download.json"
Response:
the plugin as a Zip file
Downloads the plugin with the given ID.
HTTP Request
GET https://digitalwerk.store/api/v1/plugins/<ID>/download.json
Make sure that the request follows redirects and the result is saved to a file which has a .zip
ending.
Upload
Request (Windows):
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" ^
-F "plugin[zip_file]=@C:/path/to/plugin.zip" ^
-F "plugin[group_id]=<GROUP ID>" ^
"https://digitalwerk.store/api/v1/plugins.json"
Request (Linux):
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" \
-F "plugin[zip_file]=@/path/to/plugin.zip" \
-F "plugin[group_id]=<GROUP ID>" \
"https://digitalwerk.store/api/v1/plugins.json"
Response:
the JSON representaion of the created ADTF plugin
Upload a ZIP file representing an ADTF plugin.
HTTP Request
POST https://digitalwerk.store/api/v1/plugins.json
Parameters
Parameter | Type | Mandatory | Description |
---|---|---|---|
plugin[zip_file] | String | Yes | The path to the ZIP file |
plugin[group_id] | Integer | Yes | The group to be assigned |
Remote Files
The Digitalwerk Store offers also a general download section where you can get the lastest ADTF releases.
Listing
Request (Windows):
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" ^
"https://digitalwerk.store/api/v1/remote_files.json"
Request (Linux):
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" \
"https://digitalwerk.store/api/v1/remote_files.json"
Response:
{
"data":
[
{
"checksum": "be9dcbcc2441ee249d122fdf7b9139c14516ea4c8623b9446b7957f17a0edda1",
"download_link": "https://artifactory.digitalwerk.net:443/artifactory/Product-Releases/ADTF/3.9.0/Linux/armv8/gcc/5.4/ADTF-3.9.0.tgz",
"id": 14,
"platform": "Linux ARM",
"product_name": "ADTF",
"release_date": "2021-01-28T09:11:00.000Z",
"size": 1503237784,
"version": "3.9.0"
}
]
}
If you want to find out which downloads are available you can use this API method.
HTTP Request
GET https://digitalwerk.store/api/v1/remote_files.json
This endpoint retrieves all downloads.
Create
If you are entitled to create a new download you can use this API method.
Request (Windows):
# You can also specify a file containing the JSON object using the `-d @/tmp/file.json` syntax.
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" ^
-H "Content-Type: application/json" ^
-d "{\"remote_file\": {\"product_name\": \"ADTF\", \"version\": \"3.10.0\", \"platform\": \"Windows x64\", \"release_date\": \"2021-01-28T10:05:00.000Z\", \"download_link\": \"https://artifactory.digitalwerk.net:443/artifactory/Product-Releases/ADTF/3.10.0/Windows/x86_64/VisualStudio/15/ADTF-3.10.0.zip\", \"size\": \"1964946532\", \"checksum\": \"652c08883aec8926b67b71d4e3d709b78d1a8a74a586d08e9cd1ad2642ab09b2\"}}" ^
https://digitalwerk.store/api/v1/remote_files.json
Request (Linux):
# You can also specify a file containing the JSON object using the `-d @/tmp/file.json` syntax.
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" \
-H "Content-Type: application/json" \
-d '{"remote_file": {"product_name": "ADTF", "version": "3.10.0", "platform": "Windows x64", "release_date": "2021-01-28T10:05:00.000Z", "download_link": "https://artifactory.digitalwerk.net:443/artifactory/Product-Releases/ADTF/3.10.0/Windows/x86_64/VisualStudio/15/ADTF-3.10.0.zip", "size": "1964946532", "checksum": "652c08883aec8926b67b71d4e3d709b78d1a8a74a586d08e9cd1ad2642ab09b2"}}' \
https://digitalwerk.store/api/v1/remote_files.json
Response:
{
"data":
{
"id": 30,
"product_name": "ADTF",
"version": "3.6.10",
"platform": "Linux x64",
"download_link": "https://artifactory.digitalwerk.net:443/artifactory/Product-Releases/ADTF/3.10.0/Windows/x86_64/VisualStudio/15/ADTF-3.10.0.zip",
"release_date": "2021-01-28T10:05:00.000Z",
"size": 1964946532,
"checksum": "652c08883aec8926b67b71d4e3d709b78d1a8a74a586d08e9cd1ad2642ab09b2"
}
}
HTTP Request
POST https://digitalwerk.store/api/v1/remote_files.json
The payload of the POST request must be a JSON object. Please make sure to set the Content-Type
header to: application/json
otherwise the request won't be accepted.
Parameters
Parameter | Type | Mandatory | Description |
---|---|---|---|
product_name | String | Yes | |
version | String | Yes | |
platform | String | Yes | |
download_link | String | Yes | |
release_date | DateTime | Yes | |
size | Integer | Yes | The size of the file in bytes |
checksum | String | Yes | SHA-256 checksum |
User
This endpoint gives you more information about your user.
Groups
Request (Windows):
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" ^
"https://digitalwerk.store/api/v1/users/groups.json"
Request (Linux):
curl -H "Authorization: Bearer <YOUR ACCESS TOKEN>" \
"https://digitalwerk.store/api/v1/users/groups.json"
Response:
{
"data":
[
{
"id": 1,
"name": "Public"
},
{
"id": 2,
"name": "Company Members"
},
{
"id": 3,
"name": "AADC"
}
]
}
This endpoint retrieves all groups of the current user. When you upload a plugin you have to choose who can see your plugin. This is accomplished by assigning a certain group to your plugin. To do so you must know the available group IDs which you can retrieve with this query.
HTTP Request
GET https://digitalwerk.store/api/v1/users/groups.json
Errors
The Digitalwerk Store API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Bad Request -- Your request is invalid. |
401 | Unauthorized -- Your access key is wrong. |
403 | Forbidden -- You are not allowed to access this resource. |
404 | Not Found -- The specified resource could not be found. |
405 | Method Not Allowed -- You tried to access a resource with an invalid method. |
406 | Not Acceptable -- You requested a format that isn't json. |
410 | Gone -- The resource requested has been removed from our servers. |
422 | Failed -- Unprocessable Entity response status code indicates it was unable to process the contained instruction |
429 | Too Many Requests -- You're requesting too many resource! Slow down! |
500 | Internal Server Error -- We had a problem with our server. Try again later. |
503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |