Analysis REST API Contracts

From Yocto Project
Jump to navigationJump to search


This page gives you information on the Toaster Analysis REST API. This is a read-only API which provides information about a build that was recorded by Toaster.

It documents the search operation endpoints, parameters, and responses. You might also be interested in the Toaster installation and running instructions.

Toaster is accessible through REST APIs, which make the backend available to any client. The data collected during the build is available via an unrestricted, anonymous, read-only API running on the local host machine.

General

The data interface is available as a search query returning a list of typed objects. The request method must be GET. The answers are always returned as JSON.

API version

The REST API is versioned as to allow further upgrades without having to maintain backward compatibility through changing the major version number. Minor version numbers are intended to signify a capability level while maintaining compatibility.

This is the API version 1.0. All API requests are grouped under URL:

GET /api/1.0/

Object types

The API can return Build, Target, Target installed packages, Layer, Layer version, Task, Task dependencies, Recipe, Recipe dependencies, Build packages, Package dependencies, Package files, Variables and Log messages. Each object is described below.

Search operation

The primary operation of the API is to retrieve a set of objects from the backend based on a search operation. The result will also contain all the data for the objects being returned, as to avoid separate connections to further bring the objects of the type queried.

The search operation can also specify the ordering of the results by key.

The search parameters are the same for all object types.

URI

All the search endpoints follow the same URI pattern

GET /api/1.0/{on}s/?{parameters}

  • The on is the object name, one the endpoints described below.
  • The parameters are described in the next section, and are the same for all search queries

Parameters

Name Type Description Comments
limit number The number of objects to be returned -
offset number Offset into the search result index. -
search string Search string for all fields The argument is the string to be searched in the database. The backend MUST return only records that match the string.
filter string String used to specify result filter function The general form: "<FIELD>:<VALUE>[,<FIELD>:<VALUE>]*". The backend MUST only return records that have FIELD matching to the VALUE specified. The <FIELD> names for each object type are the property names of the object.
orderby string The name of the field that determines the sorting of the results. "<FIELD>:<ORDER_DIRECTION>". The results are ordered by the <FIELD> values in the <ORDER_DIRECTION> order. <ORDER_DIRECTION> values may be "asc" or "desc".

Response

All the responses are in JSON format. The response contains a set of fields describing the content of the data, and an array with the object data inside it.


Build

Returns information about the builds recorded by Toaster.

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/builds JSON Returns page size-limited and search criteria-filtered builds from the database -

Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of builds to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.bitbake_version string - YES - BitBake version -
[Object Root].list[].fields.build_name string - YES - Build name Known issues: 5187
[Object Root].list[].fields.completed_on date - YES - Marks the moment the process is completed
[Object Root].list[].fields.cooker_log_path string - YES - Path to log file Known issues: 5187
[Object Root].list[].fields.distro string - YES - Distro name -
[Object Root].list[].fields.distro_version string - YES - Distro version -
[Object Root].list[].fields.errors_no number - YES 0 Number of errors thrown by the build Known issues: 5642
[Object Root].list[].fields.machine string - YES - The selected hardware -
[Object Root].list[].fields.outcome number 3 YES 2 Signals successful or failed build 0 Failed build
1 Successful build
2 Build in progress
[Object Root].list[].fields.started_on date - YES - Marks the moment the process is started
[Object Root].list[].fields.timespent number - YES 0 How long it took to complete the build in seconds
[Object Root].list[].fields.warnings_no number - YES 0 Number of warnings thrown by the build Known issues: 5642

Target

Returns information about a build target(s).

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/targets JSON Returns page size-limited and search criteria-filtered targets from the database -

Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of targets to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.build number - YES - The ID of the build that created this target -
[Object Root].list[].fields.image_size number - YES 0 To be removed Known issues: 6062
[Object Root].list[].fields.is_image boolean - YES False True if one of the build targets is an image recipe -
[Object Root].list[].fields.license_manifest_path string - NO - The path to the target license manifest file Known issues: 6051
[Object Root].list[].fields.target string - YES - The name of the build target -

Target Files

Returns the directory structure of a target.

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/target_files JSON Returns page size-limited and search criteria-filtered targets from the database -

Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of entries to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.directory number - NO - The ID of the directory -
[Object Root].list[].fields.group string - YES - The group of the entry owner -
[Object Root].list[].fields.inodetype number 7 YES - Entry type 1 - Regular
2 - Directory
3 - Symlink
4 - Socket
5 - Fifo
6 - Character
7 - Block
[Object Root].list[].fields.owner string - YES - The entry owner
[Object Root].list[].fields.path string - YES - The entry path -
[Object Root].list[].fields.permission string - YES - The entry permissions -
[Object Root].list[].fields.size number - YES - The entry size -
[Object Root].list[].fields.sym_target number - NO - The ID of the symlink target -
[Object Root].list[].fields.target number - YES - The target ID -

Target Image Files

Returns the list of root file system files for each build target.

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/target_image_file JSON Returns page size-limited and search criteria-filtered targets from the database -

Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of entries to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.file_name string - YES - The path to the rootfs file -
[Object Root].list[].fields.file_size number - YES - The size of the rootfs file -
[Object Root].list[].fields.target number - YES - The ID of the target that generates the rootfs file -

Target installed packages

Returns information about the packages installed in a target, when such target is an image recipe.

NOTE: Build history must be enabled to collect this information.

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/target_packages JSON Returns page size-limited and search criteria-filtered installed packages from the database -

Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of packages to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.package number - YES - The pk of the package installed in the above target
[Object Root].list[].fields.target number - YES - The pk of the target that has this package -

Layer

Returns information about the layers used in the builds recorded by Toaster.

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/layers JSON Returns page size-limited and search criteria-filtered layers from the database -


Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of layers to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.layer_index_url URL - NO - URL to the layer index application Possibly not available. Known issues: 5192
[Object Root].list[].fields.local_path string - YES - Path to the layer on local machine -
[Object Root].list[].fields.name string - YES - The local name under which the layer is known -

Layer version

Returns information about the version (branch:commit in Git) of a layer used in a certain build.

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/layerversions JSON Returns page size-limited and search criteria-filtered layers from the database -


Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of layers to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.branch string - YES - The branch name of the layer -
[Object Root].list[].fields.build number - YES - PK of the build including the layer
[Object Root].list[].fields.commit string - YES - The current commit of the layer -
[Object Root].list[].fields.layer number - YES - PK of the layer object -
[Object Root].list[].fields.priority number - YES - Priority of the layer

Task

Each build consists of a series of tasks. This is the endpoint for searching the task table.

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/tasks JSON Returns page size-limited and search criteria-filtered tasks from the database -

Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of tasks to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.build number - YES - Identifies the build in which the task occurred -
[Object Root].list[].fields.cpu_usage number - NO - Percent of the CPU used during the task
[Object Root].list[].fields.disk_io number - NO - Time spent by the task in I/O operations (in ms)
[Object Root].list[].message.elapsed_time number - NO - Time taken by the task to complete (in seconds)
[Object Root].list[].fields.line_number number - NO 0 Not in use and probably will be removed Known issues: 5255
[Object Root].list[].fields.logfile string - NO - Path to log file -
[Object Root].list[].message.message string - NO - Any message from the system regarding the task -
[Object Root].list[].fields.outcome number 7 YES -1 -1 Not available
0 Succeeded
1 Covered
2 Cached
3 Prebuilt
4 Failed
5 Empty
[Object Root].list[].fields.path_to_sstate_obj string - NO - The path to the sstate file, if applicable Known issues: 5252
[Object Root].list[].fields.recipe number - YES - ID of the recipe generating the task -
[Object Root].list[].fields.script_type number 3 NO 0 See if we executed a shell or python script, or no script was executed 0 Not applicable
2 python
3 shell
[Object Root].list[].fields.source_url string - NO - It was created to provide access to the task executable output. Currently not in use Known issues: 5255
[Object Root].list[].fields.sstate_checksum string - NO - Sstate checksum of the task -
[Object Root].list[].fields.sstate_result number 4 YES 0 Outcome of an sstate attempt 0 Not applicable
1 Missing
2 Failed
3 Restored successfully
[Object Root].list[].fields.task_executed boolean - YES False True if task actually executed -
[Object Root].list[].fields.task_name string - YES - Name of the task e.g. "do_fetch"
[Object Root].list[].fields.work_directory string - NO - Not in use and probably will be removed Known issues: 5253

Task dependencies

Returns the tasks dependency data.

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/task_dependencies JSON Returns page size-limited and search criteria-filtered tasks from the database -

Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of tasks to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.task number - YES - The PK of the target task -
[Object Root].list[].fields.depends_on number - YES - The PK of the task that the target task depends on -

Recipe

Returns information about recipes in a certain build.

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/recipes JSON Returns page size-limited and search criteria-filtered recipes from the database -

Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of recipes to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.bugtracker string - NO - The bug tracking website for the software provided by the recipe -
[Object Root].list[].fields.description string - NO - The content of the DESCRIPTION variable -
[Object Root].list[].fields.file_path string - YES - Path to the recipe .bb file -
[Object Root].list[].fields.homepage string - NO - The website for the software provided by the recipe -
[Object Root].list[].fields.layer_version number - YES - The version of the layer in which the recipe existed at the task building time -
[Object Root].list[].fields.license string - NO - The license of the recipe -
[Object Root].list[].fields.name string - YES - The recipe name -
[Object Root].list[].fields.section string - YES - The section to which the recipe belongs -
[Object Root].list[].fields.summary string - NO - The content of the SUMMARY variable -
[Object Root].list[].fields.version string - YES - The recipe version

Recipe dependencies

Returns the recipe dependency data.

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/recipe_dependencies JSON Returns page size-limited and search criteria-filtered recipes from the database -

Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of recipes to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.recipe number - YES - The PK of the target recipe -
[Object Root].list[].fields.depends_on number - YES - The PK of the recipe that the target recipe depends on -
[Object Root].list[].fields.dep_type number 2 YES - Dependency type 0 DEPENDS
1 RDEPENDS

Packages

Returns data about packages built. This information is collected at build time, while target installed packages information is collected from build history.

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/packages JSON Returns page size-limited and search criteria-filtered packages from the database -

Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of packages to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.build number - YES - The PK of the build that generated this package -
[Object Root].list[].fields.description string - YES - The content of the recipe DESCRIPTION -
[Object Root].list[].fields.installed_name string - NO - The name of an installed package at packaging time -
[Object Root].list[].fields.installed_size number - NO 0 The size of an installed package -
[Object Root].list[].fields.license string - YES - The license of the package -
[Object Root].list[].fields.name string - YES - The package name at build time -
[Object Root].list[].fields.recipe number - NO - The PK of the recipe that generated this package -
[Object Root].list[].fields.revision string - YES - The package revision -
[Object Root].list[].fields.section string - YES - The section to which this package belongs -
[Object Root].list[].fields.size number - YES - The size of the package at build time
[Object Root].list[].fields.summary string - YES - The content of the recipe SUMMARY -
[Object Root].list[].fields.version string - YES - The package version -

Package dependencies

Returns the package dependency data.

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/package_dependencies JSON Returns page size-limited and search criteria-filtered packages from the database -


Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of packages to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.package number - YES - The PK of the target package -
[Object Root].list[].fields.depends_on number - YES - The PK of the package that the target package depends on
[Object Root].list[].fields.dep_type number 8 YES - Dependency type (TRDEPENDS and TRECOMMENDS are not BitBake variables. They collect RDEPENDS and RRECOMMENDS information for a specific target). 0 RDEPENDS
1 TRDEPENDS
2 RRECOMMENDS
3 TRECOMMENDS
4 RSUGGESTS
5 RPROVIDES
6 RREPLACES
7 RCONFLICTS
[Object Root].list[].fields.target number - NO - For TRDEPENDS and TRCOMMENDS above, the applicable target

Package files

Returns data about package-generated files.

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/package_files JSON Returns page size-limited and search criteria-filtered files for a package from the database -


Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of files to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.package number - YES - The PK of the package generating the file -
[Object Root].list[].fields.path String - YES - Full file path -
[Object Root].list[].fields.size number - YES - File size, in bytes -

Variables

Returns data about key-value pairs applied to a certain build.

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/variables JSON Returns page size-limited and search criteria-filtered variables from the database -

Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of variables to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.build number - YES - The PK of the build that generated this variable -
[Object Root].list[].fields.variable_name string - YES - The key in a key-value pair -
[Object Root].list[].fields.variable_value string - YES - The value in a key-value pair -
[Object Root].list[].fields.changed boolean - YES False Not defined Not currently available
[Object Root].list[].fields.human_readable_name string - YES - Not defined Not currently available
[Object Root].list[].fields.description string - NO - Variable description in documentation.conf -

Variable History

Returns information on how the variable reached its current value.

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/variablehistory JSON Returns page size-limited and search criteria-filtered variables from the database -

Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of entries to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.file_name string - YES - The file name where the variable value change was specified -
[Object Root].list[].fields.line_number integer - YES - The line number in the file where the variable value change was specified -
[Object Root].list[].fields.operation string - YES - The change that took place, uninterpreted value -
[Object Root].list[].fields.value string - YES - The value of the variable after the operation Known issues: 5811
[Object Root].list[].fields.variable number - YES - The PK of the variable this operation changed -

Log messages

Returns data about errors / warnings thrown by the build.

Endpoints

Method Endpoint Body Description Comments
GET /api/1.0/logmessages JSON Returns page size-limited and search criteria-filtered messages from the database -


Response

Name Type Dimension Required Default value(s) Description Comments
[Object Root] object - YES - - -
[Object Root].count number - YES - Total amount of messages to be displayed (according to filter parameter) -
[Object Root].list object array - YES - - To describe a generic object element of the array, the reference to its root is "list[]"
[Object Root].list[].pk number - YES - - -
[Object Root].list[].model string - YES - - -
[Object Root].list[].fields object - YES - - -
[Object Root].list[].fields.build number - YES - The PK of the build that generated this message -
[Object Root].list[].fields.level number 3 YES 0 Message type 0 - INFO
1 - WARNING
2 - ERROR
[Object Root].list[].fields.message string - YES - The message content -
[Object Root].list[].fields.pathname string - YES - Path to the file generating the message -
[Object Root].list[].fields.lineno number - YES - Line number generating the message -