Coin API
API overview
The Coin API provides information of the integrations known as tasks and workitems which refer to single VM or agent. See response of each endpoint for more details of returned data.
Endpoints
Tasks
URL: /coin/api/tasks
Description: Returns list of tasks filtered by query parameters.
Parameters |
Description |
|---|---|
project |
Comma separated list of projects. By default all projects are returned. |
branch |
Comma separated list of branches. By default all branches are returned. |
max |
Number speficying how many tasks are returned. [1-1000] default=100 |
start |
Specifies index from which task collection starts. Used to get all tasks when query contains more tasks than specified max value. Returned index value can be used to access next set of tasks. |
type |
Comma separated list of types, see response below for the types By default all types are returned. |
before |
ISO 8601 formatted time specifying end of time range. |
after |
ISO 8601 formatted time specifying start of time range. |
state |
Comma separated list of states, see response below for the states By default all states are returned. |
searchText |
Free form string which is matched to fields of task |
Response:
{
"tasks": [
{
"id": "1650435526",
"project": "qt/qtbase",
"branch": "dev",
"type": "StatusCheck", # possible types [Integration, StatusCheck, EarlyWarning, CreateDebugVm, HealthCheck]
"started_on": "2022-04-20 06:18:46 +0000 UTC",
"state": "Cancelled", # Possible states [Running, Passed, Failed, Cancelled, Insignificant, Initializing]
"sha": "d7799056fcc39012303d88e352aae763e1d29f38", # Represents all changes included in an integration, but may not be representative of the final branch state after gerrit merges changes
"tested_shas": [
"e5a1cc2964d931892dbfb55b2f21c3e4d8b71d9c"
], # List of tested sha's, if any
"self_url": "http://testresults.qt.io/cilogs/qt/qtbase/d7799056fcc3212303d88e352aae763e1d29f38",
"is_public": false,
"completed_on": "2022-04-20 07:18:46 +0000 UTC", # Included only if task has finished
"final_sha": "16905ad804bf156e6a1f790c277b17775cd5afbb" # SHA after merge to target branch. Only present on passed integration tasks
}
],
"more": true, # True if more results than the requested max count exist
"index": "/coin/api/tasks?max=1&start=37" # URL-encoded query string to GET next set if more results are available
}
TaskDetail
URL: /coin/api/taskDetail
Description: Returns list of detailed task information for given task IDs.
Parameters |
Description |
|---|---|
id |
Comma separated list of task IDs. |
Response:
{
"tasks": [
{
"id": "1661152685",
"project": "qt/qtdoc",
"branch": "dev",
"type": "Integration",
"started_on": "2022-04-20 06:18:46 +0000 UTC",
"state": "Passed",
"verbose_status": "Status message", # Returned if detailed reason has been given
"self_url": "http://testresults.qt.io/cilogs/qt/qtbase/1660bc199a6f12daa509cdbf4425f09d22b91751",
"is_public": true,
"completed_on": "2022-04-20 06:20:04 +0000 UTC", # null if task has not finished
"sha": "d7799056fcc39065c03d88e352aae763e1d29f38",
"tested_changes": [
{
"sha": "1660bc199a6f12daa509cdbf4425f09d22b91751",
"project": "qt/qtpositioning",
"subject": "Update dependencies on '6.4' in qt/qtpositioning\n",
"change_number": "428051"
}
],
"workitem_ids": [ # List of work item IDs
"provisioning/qtci-linux-Ubuntu-20.04-x86_64-50-d72535/provision_1650435372",
"qt/qtbase/eea9e7e2022596a0fa3a96a60381ad2ee2472122/LinuxUbuntu_20_04x86_64LinuxUbuntu_20_04x86_64GCCqtci-linux-Ubuntu-20.04-x86_64-50-d72535DisableTests/dd649dc0f7872b25b71c773af5cf554e5c37de91/build_1650435529"
],
"source_ref": "refs/builds/qtci/6.4/1661150881"
},
{
"id": ....,
"project": ....
}
]
}
TaskTestedChanges
URL: /coin/api/taskTestedChanges
Description: Returns list of tested changes for the given task ID.
Parameters |
Description |
|---|---|
id |
Comma separated list of task IDs. |
Response:
{
"tasks_with_tested_changes": [
{
"task_id": "web_qt_gitlabrunner_16777426339744752",
"tested_changes": [
{
"sha": "d7799056fcc39065c03d88e352aae763e1d29f38",
"project": "qt/qtbase",
"ref": "",
"subject": "foo change",
"change_number": "324489",
"change_id": ""
"links": [
{
"web_url": "foo_url",
"rest_url": "bar_url"
}
]
}...
]
}...
]
}
TaskWorkitems
URL: /coin/api/taskWorkItems
Description: Returns list of workitems for the given task ID.
Duration of build in seconds. Calculated from started_on and completed_on for conveniance
Parameters |
Description |
|---|---|
id |
Comma separated list of task IDs. |
Response:
{
"tasks_with_workitems": [
{
"task_id": "1677074343_restarted",
"workitems": [
{
"task_action": "Test",
"build_key": "qt/qtbase/62c7dabf10de4b84ac2d7052824aca85aab2fa54/LinuxRHEL_8_4x86_64LinuxRHEL_8_4x86_64GCCqtci-linux-RHEL-8.4-x86_64-50-d98dfeSccache/6bfb18a37ed58ea56f6bf2b97e81670fdca42c09/Test",
"workitem_id": "qt/qtbase/62c7dabf10de4b84ac2d7052824aca85aab2fa54/LinuxRHEL_8_4x86_64LinuxRHEL_8_4x86_64GCCqtci-linux-RHEL-8.4-x86_64-50-d98dfeSccache/6bfb18a37ed58ea56f6bf2b97e81670fdca42c09/test_1649936069", # Unique workitem ID, matches the workitem_id value in taskDetail output
"state": "Done",
"coin_features": [
"Packaging",
"Sccache"
],
"configure_arguments": [
"-DQT_BUILD_EXAMPLES=OFF",
"-DCMAKE_BUILD_TYPE=RelWithDebInfo"
],
"environment": [
"CONAN_PROFILE=coin/conan/profiles/ci-linux-x86_64-gcc"
],
"started_on": "2022-06-30 13:24:59 +0000 UTC",
"completed_on": "2022-06-30 13:35:57 +0000 UTC", # null if task has not finished
"storage_paths": {
"log_web": "/coin/logview/qt/qtbase/62c7dabf10de4b84ac2d7052824aca85aab2fa54/LinuxRHEL_8_4x86_64LinuxRHEL_8_4x86_64GCCqtci-linux-RHEL-8.4-x86_64-50-d98dfeSccache/6bfb18a37ed58ea56f6bf2b97e81670fdca42c09/test_1649936069",
"log_raw": "/coin/api/results/qt/qtbase/62c7dabf10de4b84ac2d7052824aca85aab2fa54/LinuxRHEL_8_4x86_64LinuxRHEL_8_4x86_64GCCqtci-linux-RHEL-8.4-x86_64-50-d98dfeSccache/6bfb18a37ed58ea56f6bf2b97e81670fdca42c09/test_1649936069/log.txt.gz",
"artifacts":["/coin/api/results/qt/qtbase/62c7dabf10de4b84ac2d7052824aca85aab2fa54/LinuxRHEL_8_4x86_64LinuxRHEL_8_4x86_64GCCqtci-linux-RHEL-8.4-x86_64-50-d98dfeSccache/6bfb18a37ed58ea56f6bf2b97e81670fdca42c09/test_1649936069/testresults.tar.zst"]
},
"project": "qt/qtbase",
"branch": "dev",
"duration": 658, # Duration in seconds. null if task has not finished
"platform": {
"target": {
"os": "Linux",
"os_version": "RHEL_8_4",
"arch": "X86_64",
"compiler": "GCC"
},
"host": {
"os": "Linux",
"os_version": "RHEL_8_4",
"arch": "X86_64",
"compiler": "GCC"
}
},
"identifier": "rhel-xyz-static", # Optional
"dependencies": [ # Optional. Included only if dependencies are defined
"windows-10_22h2-msvc2019-developer-build"
]
}...
]
}
}
WorkItems
URL: /coin/api/workItems
Description: Returns list of workItems filtered by query parameters.
Parameters |
Description |
|---|---|
id |
Comma separated list of work item ID’s. If parameter is provided, all other search parameters are ignored. |
project |
Comma separated list of projects. By default all projects are returned. |
branch |
Comma separated list of branches. By default all branches are returned. |
max |
Number specifying how many tasks are returned. [1-1000] default=100 |
start |
Specifies index from which workItem collection starts. Used to get all workItems when query contains more items than specified max value. Returned index value can be used to access next set of workItems. |
type |
Comma separated list of types. Possible types: Build, Test, Provision, Final, Jenkins |
before |
ISO 8601 formatted time specifying end of time range. |
after |
ISO 8601 formatted time specifying start of time range. |
state |
Comma separated list of states. Supported states: New, WaitingForSourceArchive, WaitingForDependencies, WaitingForHardware, WaitingForAgent, Running, Done, Failed, Timeout, Cancelled and Insignificant. By default all states are returned. |
Response:
{
"workitems": [
{
"task_action": "Test",
"build_key": "qt/qtinterfaceframework/2a2f8a3b8b9a909917652f7ba99e10cf7baf558f/MacOSMacOS_12x86_64MacOSMacOS_12x86_64Clangqtci-macos-12-x86_64-102-f3eb2fSccache_TestOnly/6c448f9027165e997d59df10f6641c45c6f00a51/Test",
"state": "Done",
"coin_features": [
"Sccache",
"TestOnly",
"Packaging",
"AbortTestingOnFirstFailure"
],
"started_on": "2022-08-25 11:08:34 +0000 UTC",
"completed_on": "2022-08-25 11:11:18 +0000 UTC", # null if workItem has not finished
"storage_paths": {
"log_web": "/coin/logview/qt/qtinterfaceframework/2a2f8a3b8b9a909917652f7ba99e10cf7baf558f/MacOSMacOS_12x86_64MacOSMacOS_12x86_64Clangqtci-macos-12-x86_64-102-f3eb2fSccache_TestOnly/6c448f9027165e997d59df10f6641c45c6f00a51/test_1661416401",
"log_raw": "/coin/api/results/qt/qtinterfaceframework/2a2f8a3b8b9a909917652f7ba99e10cf7baf558f/MacOSMacOS_12x86_64MacOSMacOS_12x86_64Clangqtci-macos-12-x86_64-102-f3eb2fSccache_TestOnly/6c448f9027165e997d59df10f6641c45c6f00a51/test_1661416401/log.txt.gz",
"artifacts":["/coin/api/results/qt/qtinterfaceframework/2a2f8a3b8b9a909917652f7ba99e10cf7baf558f/MacOSMacOS_12x86_64MacOSMacOS_12x86_64Clangqtci-macos-12-x86_64-102-f3eb2fSccache_TestOnly/6c448f9027165e997d59df10f6641c45c6f00a51/test_1661416401/testresults.tar.zst"]
},
"project": "qt/qtinterfaceframework",
"duration": 164,
"branch": "dev",
"platform": {
"target": {
"os": "Linux",
"os_version": "RHEL_8_4",
"arch": "X86_64",
"compiler": "GCC"
},
"host": {
"os": "Linux",
"os_version": "RHEL_8_4",
"arch": "X86_64",
"compiler": "GCC"
}
},
"identifier": "rhel-xyz-static", # Optional
"dependencies": [ # Optional. Included only if dependencies are defined
"windows-10_22h2-msvc2019-developer-build"
]
},...
]
}
Job
URL: /coin/api/job
Method: POST
Description: Creates a coin job from given inputs
Parameters |
Description |
|---|---|
repository.gitSource |
Source for the repository. qt-project for gerrit. Otherwise base URL e.g. git.qt.io. |
repository.name |
Repo in the git source e.g. qt/qtbase or qt-for-mcus/qul. |
repository.ref |
Sha1 or some git fetchable ref or tag. |
product |
Optional: Same fields as repository but for product. These will be used instead for resolving the “product” from which the configurations are resolved. All 3 sub-fields must be provided together or not at all. |
id |
ID that will be assigned for the job in Coin. |
username |
Username displayed in Coin for the job. |
configs |
Optional: List of config objects to run. If omitted, all configurations are used. |
configs[].id |
ID of the configuration to run. |
configs[].environmentVars |
Optional: List of environment variables appended to this configuration. |
Example:
{
"repository": {
"gitSource": "git.qt.io",
"name": "foo/bar",
"ref": "90543982cf5a6aafaafb22a4a3b427f47295e31f"
},
"product": {
"gitSource": "git.qt.io",
"name": "foo/bar",
"ref": "90543982cf5a6aafaafb22a4a3b427f47295e31f"
},
"username": "jdoe",
"id": "1234",
"configs": [
{
"id": "config1",
"environmentVariables": ["JOB_ID=1"]
}
]
}
Response:
{
"id": "1234523423" # TaskDetail compatible id for the job.
}