glance-specs/specs/api/v2/lists-image-api-v2.rst
Mike Fedosin 7ba3e12b62 Glance sorting API specification
This spec describes new sorting standard for image output
in Glance and defines the system behavior in different cases.

Also information about sorting and some examples were added to
the existing api listing spec.

Change-Id: Ic1181d9d581492ce34e75b7e78a1a56813c0aaaf
2015-03-11 17:02:22 +03:00

115 lines
4.1 KiB
ReStructuredText

Image API v2 listing
====================
**Pagination**
This call is designed to return a subset of the larger collection of
images while providing a link that can be used to retrieve the next. You
should always check for the presence of a 'next' link and use it as the
URI in a subsequent HTTP GET request. You should follow this pattern
until there a 'next' link is no longer provided. The next link will
preserve any query parameters you send in your initial request. The
'first' link can be used to jump back to the first page of the
collection.
If you prefer to paginate through images manually, the API provides two
query parameters: 'limit' and 'marker'. The limit parameter is used to
request a specific page size. Expect a response to a limited request to
return between zero and *limit* items. The marker parameter is used to
indicate the id of the last-seen image. The typical pattern of limit and
marker is to make an initial limited request then to use the id of the
last image from the response as the marker parameter in a subsequent
limited request.
**Filtering**
The list operation accepts several types of query parameters intended to
filter the results of the returned collection.
A client can provide direct comparison filters using *most* image
attributes (i.e. name=Ubuntu, visibility=public, etc). A client cannot
filter on tags or anything defined as a 'link' in the json-schema (i.e.
self, file, schema).
The 'size\_min' and 'size\_max' query parameters can be used to do
greater-than and less-than filtering of images based on their 'size'
attribute ('size' is measured in bytes and refers to the size of an
image when stored on disk). For example, sending a size\_min filter of
1048576 and size\_max of 4194304 would filter the container to include
only images that are between one and four megabytes in size.
**Sorting**
The results of this operation can be ordered by using classic and new
sorting syntaxes. Classic syntax uses multiple 'sort\_key' and
'sort\_dir' parameters, and new one accepts a single 'sort' string with
comma separated sort keys with optional sort direction after ':'.
Both syntaxes provide an ability to sort output with multiple keys and
directions but with some differences.
The classic syntax takes a list of keys and either exactly the same
number of directions for each key, or only one that specifies the
default value for all keys.
The new syntax applies a default direction to all keys where it's
missing.
The API uses the natural sorting of whatever image attribute is
provided as the sort key. List of image attributes can be used as the
sort key: 'name', 'status', 'container\_format', 'disk\_format',
'size', 'id', 'created\_at', 'updated\_at'. The sort dir parameter
indicates in which direction to sort. Acceptable values are 'asc'
(ascending) and 'desc' (descending). Default values for sort key and
sort direction are 'created\_at' and 'desc'.
Examples of sorting:
#. New syntax with specified direction for keys::
sort=name:asc,status:asc
Sort: by name with asc order, then by status with asc order.
#. New syntax with missing direction::
sort=name,status:asc
Sort: by name with desc order, then by status with asc order.
#. New syntax without directions::
sort=name,status
Sort: by name with desc order, then by status with desc order.
#. Classic syntax with specified default direction::
sort_key=name&sort_key=status&sort_dir=asc
Sort: by name with asc order, then by status with asc order.
#. Classic syntax with missing direction::
sort_key=name&sort_key=status
Sort: by name with desc order, then by status with desc order.
#. Classic syntax with missing key and specified default direction::
sort_dir=asc
Sort: by created_at with asc order.
#. Classic syntax with specified direction for keys::
sort_key=name&sort_dir=desc&sort_key=status&sort_dir=asc
Sort: by name with desc order, then by status with asc order.
#. Classic syntax with different number of keys and directions::
sort_key=name&sort_dir=asc&sort_key=status&sort_dir=asc&sort_key=id
Will be an error.