The APS controller keeps track of all imported APS packages. You can both list and find packages, and access any file in a package. The package library is available through the /aps/2/packages collection on the APS controller.
In this document:
To get a list of packages imported to the APS controller, the GET request must be sent to the package collection as in the following example:
GET /aps/2/packages
Content-Type: application/json
Sample response:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Range: items 0-99/100
[
{
"aps": {
"id": "b096f82a-a83f-44f5-8599-1e61173e9f72",
"href": "/aps/2/packages/b096f82a-a83f-44f5-8599-1e61173e9f72"
},
"apsVersion": "2.0",
"id": "http://aps-standard.org/samples/suwizard1p",
"name": "User Management Demo",
"version": "1.0",
"release": "0",
"services": {
"clouds": {...},
"contexts": {...},
"vpses": {...},
"offers": {...}
}
},
...
]
Getting all package details in the list of packages is often unnecessary. The list of package IDs is generally enough, as it allows the application or the system to request extra details from certain packages. This saves time and increases overall performance. The following Resource Query Language (RQL) functions help you achieve this goal.
The select(aps.id) function allows you to request only package APS IDs.
Note
In case of packages, no other input arguments except for aps.id
are accepted as the latter is
the only mandatory property in all packages.
The active()
RQL function applicable to the packages
collection selects only active packages.
For example, the following is a request for APS IDs of all active packages:
GET /aps/2/packages?active(),select(aps.id)
It is possible to get package {package-id} data by sending a GET request to /aps/2/packages/{package-id} using one of content types, either application/json (default) or application/aps. The required content type is specified in the Accept header.
When using the default Accept: application/json header, the APS controller returns the JSON representation of the requested package.
Sample request:
GET /aps/2/packages/d3ad0a6b-69f1-476f-8aba-cfa72c385978
Accept: application/json
Sample response:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
{
"aps":
{
"id": "d3ad0a6b-69f1-476f-8aba-cfa72c385978",
"href": "/aps/2/packages/d3ad0a6b-69f1-476f-8aba-cfa72c385978"
},
"apsVersion": "2.0",
"id": "http://event-mgmt.demo.apsdemo.org/vpsclouds",
"name": "VPS Cloud Event Processing",
"version": "1.0",
"release": "1",
"services":
{
"clouds":
{
"type": "http://event-mgmt.demo.apsdemo.org/vpsclouds/clouds/1.0",
"schema": "/aps/2/packages/d3ad0a6b-69f1-476f-8aba-cfa72c385978/schemas/clouds.schema.gen",
"name": "clouds",
"summary": "VPS cloud application global service"
},
"offers":
{
"type": "http://event-mgmt.demo.apsdemo.org/vpsclouds/offers/1.0",
"schema": "/aps/2/packages/d3ad0a6b-69f1-476f-8aba-cfa72c385978/schemas/offers.schema.gen",
"name": "offers",
"summary": "Set of VPS parameters"
},
"contexts":
{
"type": "http://event-mgmt.demo.apsdemo.org/vpsclouds/contexts/1.0",
"schema": "/aps/2/packages/d3ad0a6b-69f1-476f-8aba-cfa72c385978/schemas/contexts.schema.gen",
"name": "contexts",
"summary": "VPS management environment"
},
"vpses":
{
"type": "http://event-mgmt.demo.apsdemo.org/vpsclouds/vpses/1.0",
"schema": "/aps/2/packages/d3ad0a6b-69f1-476f-8aba-cfa72c385978/schemas/vpses.schema.gen",
"name": "vpses",
"summary": "Cloud virtual private server"
},
"events":
{
"type": "http://event-mgmt.demo.apsdemo.org/vpsclouds/events/1.0",
"schema": "/aps/2/packages/d3ad0a6b-69f1-476f-8aba-cfa72c385978/schemas/events.schema.gen",
"name": "events",
"summary": "Processing event notifications"
}
}
}
When using the Accept: application/aps header, the APS controller returns the zipped APS package.
Sample request:
GET /aps/2/packages/d3ad0a6b-69f1-476f-8aba-cfa72c385978
Accept: application/aps
Sample response:
HTTP/1.1 200 OK
Content-Length: 350401
Content-Type: application/aps
Content-Disposition: attachment; filename="VPS Cloud Event Processing-1.0-1.aps"
... /* binary data */ ...
If the APS controller receives a GET request addressed to /aps/2/packages/{id}/APP-META.xml, it returns
the APP-META.xml
file contents.
Sample request:
GET /aps/2/packages/6e3c3164-d36e-4c63-9b43-d758c1a0acb6/APP-META.xml
Accept: application/xml
Sample response:
HTTP/1.1 200 OK
Content-Type: application/xml
<application xmlns="http://aps-standard.org/ns/2" packaged="2012-11-15T13:11:37" version="2.0">
<id>http://wordpress.org/2.0</id>
<name>WordPress</name>
<version>3.4.2</version>
<release>2.0.6</release>
<homepage>http://wordpress.org/</homepage>
...
</application>
You can get the contents of any file from a package by the package ID using a request similar to the following:
Sample request:
GET /aps/2/packages/b096f82a-a83f-44f5-8599-1e61173e9f72/schemas/vpses.schema.gen
Accept: application/json
Sample response:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
// This file is generated by 'aps build' from 'scripts/vpses.php' script
// It will be regenerated next time 'aps build' command is executed
{
"apsVersion": "2.0",
"name": "vps",
"id": "http://aps-standard.org/samples/suwizard1p/vps/1.0",
"implements": [
"http://aps-standard.org/types/core/user/service/1.0"
],
...
}