1. General
This document describes the RESTful API for appNGizer, a tool for remote managing appNG installations.
All operations that require a request body must use the HTTP Header Content-Type application/xml. The only exception is the POST-request used for authentication (see Authenticate), where text/plain must be used.
1.1. HTTP methods and return codes
1.1.1. GET
Retrieves a resource/ a list of resources.
Return codes:
-
200 (OK) - if the resource has been successfully retrieved
-
404 (Not found) - if such a resource does not exist
-
500 (Internal Server error) - if an error occurred
1.1.2. POST
Creates a new resources.
Return codes:
-
201 (Created) - if everthing went well
-
409 (Conflict) - if such a resource already exists
-
500 (Internal Server error) - if an error occurred
1.1.3. PUT
Updates an existing resources.
Return codes:
-
200 (OK) - if the resource has been updated
-
303 (See Other) - if the location of the resource has changed due to the update
-
404 (Not found) - if such a resource does not exist
-
409 (Conflict) - if such a resource already exists
-
500 (Internal Server error) - if an error occurred
1.2. Schema and namespace
The XSD schema for appNGizer is available at
The namespace to be used is http://www.appng.org/schema/appngizer
.
2. Home
2.1. Show appNGizer Home
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<appngizer version="0.12.0" self="http://localhost:8080/appNGizer/" xmlns="http://www.appng.org/schema/appngizer">
<links>
<link name="site" self="http://localhost:8080/appNGizer/site" />
<link name="application" self="http://localhost:8080/appNGizer/application" />
<link name="subject" self="http://localhost:8080/appNGizer/subject" />
<link name="group" self="http://localhost:8080/appNGizer/group" />
<link name="repository" self="http://localhost:8080/appNGizer/repository" />
<link name="platform" self="http://localhost:8080/appNGizer/platform" />
</links>
</appngizer>
2.2. Authenticate
The appNG platform property sharedSecret
is needed to login into appNGizer. The client needs to accept cookies to proceed after login.
Method: POST
Request Body: (plain text format!)
<sharedSecret>
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<appngizer version="0.12.0" self="http://localhost:8080/appNGizer/" xmlns="http://www.appng.org/schema/appngizer">
<links>
<link name="site" self="http://localhost:8080/appNGizer/site" />
<link name="application" self="http://localhost:8080/appNGizer/application" />
<link name="subject" self="http://localhost:8080/appNGizer/subject" />
<link name="group" self="http://localhost:8080/appNGizer/group" />
<link name="repository" self="http://localhost:8080/appNGizer/repository" />
<link name="platform" self="http://localhost:8080/appNGizer/platform" />
</links>
</appngizer>
3. Platform
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<platform xmlns="http://www.appng.org/schema/appngizer" self="http://localhost:8080/appNGizer/platform">
<links>
<link name="database" self="http://localhost:8080/appNGizer/platform/database"/>
<link name="property" self="http://localhost:8080/appNGizer/platform/property"/>
<link name="reload" self="http://localhost:8080/appNGizer/platform/reload"/>
<link name="system" self="http://localhost:8080/appNGizer/platform/system"/>
<link name="environment" self="http://localhost:8080/appNGizer/platform/environment"/>
</links>
</platform>
3.1. Database
3.1.1. Show database status
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<database xmlns="http://www.appng.org/schema/appngizer" self="http://localhost:8080/appNGizer/platform/database">
<links>
<link name="initialize" self="http://localhost:8080/appNGizer/platform/database/initialize"/>
</links>
<type>MYSQL</type>
<dbVersion>MySQL 5.6.29-76.2-log</dbVersion>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://localhost:3306/appng</url>
<ok>true</ok>
<versions>
<version version="2.8.2" state="Success" description="alter sites granted" checksum="-2124797671" installed="2016-08-01T11:54:08.000+02:00"/>
<version version="2.8.1" state="Success" description="add repository strict" checksum="-637161553" installed="2016-08-01T11:54:07.000+02:00"/>
<version version="2.8" state="Success" description="add template" checksum="1443237131" installed="2016-08-01T11:54:07.000+02:00"/>
<version version="2.7.1" state="Success" description="modify datetime" checksum="-238501285" installed="2016-08-01T11:54:07.000+02:00"/>
<version version="2.7" state="Success" description="modify resource name" checksum="-410225045" installed="2016-08-01T11:54:05.000+02:00"/>
<version version="2.6" state="Success" description="drop-site-parentId" checksum="-628397585" installed="2016-08-01T11:54:05.000+02:00"/>
<version version="2.5" state="Success" description="add quartz sched time" checksum="-1887151531" installed="2016-08-01T11:54:04.000+02:00"/>
<version version="2.4" state="Success" description="migrate to platform" checksum="-356840062" installed="2016-08-01T11:54:04.000+02:00"/>
<version version="2.3" state="Success" description="add sites granted" checksum="562840097" installed="2016-08-01T11:54:00.000+02:00"/>
<version version="2.2" state="Success" description="Add validation query column" checksum="-406328953" installed="2016-08-01T11:54:00.000+02:00"/>
<version version="2.1" state="Success" description="Add active column" checksum="2085895145" installed="2016-08-01T11:54:00.000+02:00"/>
<version version="2.0" state="Success" description="set subject email nullable" checksum="-200093527" installed="2016-08-01T11:53:59.000+02:00"/>
<version version="1.9" state="Success" description="Add remote repository name" checksum="-1230423146" installed="2016-08-01T11:53:59.000+02:00"/>
<version version="1.8" state="Success" description="Add managed column" checksum="1109092965" installed="2016-08-01T11:53:59.000+02:00"/>
<version version="1.7" state="Success" description="modify property description" checksum="-242497654" installed="2016-08-01T11:53:58.000+02:00"/>
<version version="1.6" state="Success" description="Add Min and MaxConnections" checksum="-1788286290" installed="2016-08-01T11:53:58.000+02:00"/>
<version version="1.5" state="Success" description="Add plugin timestamp appngversion" checksum="1676943241" installed="2016-08-01T11:53:58.000+02:00"/>
<version version="1.4" state="Success" description="Add DatabaseConnection" checksum="318992837" installed="2016-08-01T11:53:57.000+02:00"/>
<version version="1.3" state="Success" description="Set site folder" checksum="2024773474" installed="2016-08-01T11:53:57.000+02:00"/>
<version version="1.2" state="Success" description="Let PluginRepository name be unique" checksum="-743274501" installed="2016-08-01T11:53:56.000+02:00"/>
<version version="1.1" state="Success" description="Quartz initial setup" checksum="1726445701" installed="2016-08-01T11:53:56.000+02:00"/>
<version version="1.0" state="Success" description="appNG initial setup" checksum="-644756127" installed="2016-08-01T11:53:55.000+02:00"/>
</versions>
</database>
3.1.2. Initialize database
Method: POST
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<database xmlns="http://www.appng.org/schema/appngizer" self="http://localhost:8080/appNGizer/platform/database">
<links>
<link name="initialize" self="http://localhost:8080/appNGizer/platform/database/initialize"/>
</links>
<type>MYSQL</type>
<dbVersion>MySQL 5.6.29-76.2-log</dbVersion>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://localhost:3306/appng</url>
<ok>true</ok>
<versions>
<version version="2.8.2" state="Success" description="alter sites granted" checksum="-2124797671" installed="2016-08-01T11:54:08.000+02:00"/>
<version version="2.8.1" state="Success" description="add repository strict" checksum="-637161553" installed="2016-08-01T11:54:07.000+02:00"/>
<version version="2.8" state="Success" description="add template" checksum="1443237131" installed="2016-08-01T11:54:07.000+02:00"/>
<version version="2.7.1" state="Success" description="modify datetime" checksum="-238501285" installed="2016-08-01T11:54:07.000+02:00"/>
<version version="2.7" state="Success" description="modify resource name" checksum="-410225045" installed="2016-08-01T11:54:05.000+02:00"/>
<version version="2.6" state="Success" description="drop-site-parentId" checksum="-628397585" installed="2016-08-01T11:54:05.000+02:00"/>
<version version="2.5" state="Success" description="add quartz sched time" checksum="-1887151531" installed="2016-08-01T11:54:04.000+02:00"/>
<version version="2.4" state="Success" description="migrate to platform" checksum="-356840062" installed="2016-08-01T11:54:04.000+02:00"/>
<version version="2.3" state="Success" description="add sites granted" checksum="562840097" installed="2016-08-01T11:54:00.000+02:00"/>
<version version="2.2" state="Success" description="Add validation query column" checksum="-406328953" installed="2016-08-01T11:54:00.000+02:00"/>
<version version="2.1" state="Success" description="Add active column" checksum="2085895145" installed="2016-08-01T11:54:00.000+02:00"/>
<version version="2.0" state="Success" description="set subject email nullable" checksum="-200093527" installed="2016-08-01T11:53:59.000+02:00"/>
<version version="1.9" state="Success" description="Add remote repository name" checksum="-1230423146" installed="2016-08-01T11:53:59.000+02:00"/>
<version version="1.8" state="Success" description="Add managed column" checksum="1109092965" installed="2016-08-01T11:53:59.000+02:00"/>
<version version="1.7" state="Success" description="modify property description" checksum="-242497654" installed="2016-08-01T11:53:58.000+02:00"/>
<version version="1.6" state="Success" description="Add Min and MaxConnections" checksum="-1788286290" installed="2016-08-01T11:53:58.000+02:00"/>
<version version="1.5" state="Success" description="Add plugin timestamp appngversion" checksum="1676943241" installed="2016-08-01T11:53:58.000+02:00"/>
<version version="1.4" state="Success" description="Add DatabaseConnection" checksum="318992837" installed="2016-08-01T11:53:57.000+02:00"/>
<version version="1.3" state="Success" description="Set site folder" checksum="2024773474" installed="2016-08-01T11:53:57.000+02:00"/>
<version version="1.2" state="Success" description="Let PluginRepository name be unique" checksum="-743274501" installed="2016-08-01T11:53:56.000+02:00"/>
<version version="1.1" state="Success" description="Quartz initial setup" checksum="1726445701" installed="2016-08-01T11:53:56.000+02:00"/>
<version version="1.0" state="Success" description="appNG initial setup" checksum="-644756127" installed="2016-08-01T11:53:55.000+02:00"/>
</versions>
</database>
3.2. Reload platform
This action is only available if appNGizer is running in the same Tomcat as appNG itself. |
Method: POST
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<platform xmlns="http://www.appng.org/schema/appngizer" self="http://localhost:8080/appNGizer/platform">
<links>
<link name="database" self="http://localhost:8080/appNGizer/platform/database"/>
<link name="property" self="http://localhost:8080/appNGizer/platform/property"/>
<link name="reload" self="http://localhost:8080/appNGizer/platform/reload"/>
<link name="system" self="http://localhost:8080/appNGizer/platform/system"/>
<link name="environment" self="http://localhost:8080/appNGizer/platform/environment"/>
</links>
</platform>
3.3. System environment
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<properties xmlns="http://www.appng.org/schema/appngizer" self="/platform/environment">
<property name="HOME">
<value>/home/johndoe</value>
</property>
<property name="LANG">
<value>de_DE.UTF-8</value>
</property>
</properties>
3.4. System properties
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<properties xmlns="http://www.appng.org/schema/appngizer" self="/platform/system">
<property name="appng.node.id">
<value>appNG-001</value>
</property>
<property name="file.encoding">
<value>UTF-8</value>
</property>
<property name="file.separator">
<value>/</value>
</property>
<property name="java.home">
<value>/usr/lib/jvm/java-8-openjdk-amd64/jre</value>
</property>
</properties>
3.5. Properties
3.5.1. List Properties
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<properties self="http://localhost:8080/appNGizer/platform/property" xmlns="http://www.appng.org/schema/appngizer">
<property name="applicationDir" self="http://localhost:8080/appNGizer/platform/property/applicationDir">
<value>/applications</value>
<defaultValue>/applications</defaultValue>
<description>The folder used for installing file-based-applications, relative to the webapp-root</description>
</property>
<property name="cacheApplicationFolder" self="http://localhost:8080/appNGizer/platform/property/cacheApplicationFolder">
<value>application</value>
<defaultValue>application</defaultValue>
<description>The folder for the application-cache, relative to platform.cacheFolder. Applications might use this
folder to cache temporary data.</description>
</property>
<property name="cacheFolder" self="http://localhost:8080/appNGizer/platform/property/cacheFolder">
<value>cache</value>
<defaultValue>cache</defaultValue>
<description>The cache folder, relative to WEB-INF. Contains the platform.cacheFolder and the
platform.cacheApplicationFolder.</description>
</property>
<property name="cacheImageFolder" self="http://localhost:8080/appNGizer/platform/property/cacheImageFolder">
<value>image</value>
<defaultValue>image</defaultValue>
<description>The folder used for caching images, within the application-cache</description>
</property>
<property name="cachePlatformFolder" self="http://localhost:8080/appNGizer/platform/property/cachePlatformFolder">
<value>platform</value>
<defaultValue>platform</defaultValue>
<description>The folder for the platform-cache, relative to platform.cacheFolder. The platform cache is used by appNG
to cache application resources.</description>
</property>
</properties>
3.5.2. Create Property
Method: POST
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<property name="myCustomProperty" xmlns="http://www.appng.org/schema/appngizer">
<defaultValue>42</defaultValue>
<description>The answer to life, the universe and everything</description>
</property>
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- TODO insert example -->
3.5.3. Update Property
Method: PUT
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<property name="myCustomProperty" xmlns="http://www.appng.org/schema/appngizer">
<value>57</value>
<defaultValue>42</defaultValue>
<description>The real answer to life, the universe and everything</description>
</property>
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<property name="myCustomProperty" self="http://localhost:8080/appNGizer/platform/property/myCustomProperty" xmlns="http://www.appng.org/schema/appngizer">
<value>57</value>
<defaultValue>42</defaultValue>
<description>The real answer to life, the universe and everything</description>
</property>
3.5.4. Delete Property
Method: DELETE
Request Body: -none-
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<property name="myCustomProperty" self="http://localhost:8080/appNGizer/platform/property/myCustomProperty" xmlns="http://www.appng.org/schema/appngizer">
<value>57</value>
<defaultValue>42</defaultValue>
<description>The real answer to life, the universe and everything</description>
</property>
4. Applications
4.1. List applications
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<applications self="http://localhost:8080/appNGizer/application" xmlns="http://www.appng.org/schema/appngizer">
<application name="appng-manager" self="http://localhost:8080/appNGizer/application/appng-manager">
<displayName>Manager</displayName>
<core>true</core>
<fileBased>false</fileBased>
<hidden>false</hidden>
<version>0.12.1</version>
</application>
<application name="appng-authentication" self="http://localhost:8080/appNGizer/application/appng-authentication">
<displayName>Authentication</displayName>
<core>true</core>
<fileBased>false</fileBased>
<hidden>true</hidden>
<version>0.11.0</version>
</application>
<application name="appng-scheduler" self="http://localhost:8080/appNGizer/application/appng-scheduler">
<displayName>Scheduler</displayName>
<core>true</core>
<fileBased>false</fileBased>
<hidden>false</hidden>
<version>0.11.2</version>
</application>
<application name="appng-webutils" self="http://localhost:8080/appNGizer/application/appng-webutils">
<displayName>Webutils</displayName>
<core>false</core>
<fileBased>true</fileBased>
<hidden>false</hidden>
<version>0.11.0</version>
</application>
</applications>
4.2. Show application
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application name="appng-manager" self="http://localhost:8080/appNGizer/application/appng-manager" xmlns="http://www.appng.org/schema/appngizer">
<links>
<link name="role" self="http://localhost:8080/appNGizer/application/appng-manager/role"/>
<link name="permission" self="http://localhost:8080/appNGizer/application/appng-manager/permission"/>
<link name="property" self="http://localhost:8080/appNGizer/application/appng-manager/property"/>
</links>
<displayName>Manager</displayName>
<core>true</core>
<fileBased>false</fileBased>
<hidden>false</hidden>
<version>0.12.1</version>
</application>
4.3. Update application
Method: PUT
Request-Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application name="appng-manager" xmlns="http://www.appng.org/schema/appngizer">
<displayName>appNG Manager</displayName>
<core>false</core>
<fileBased>true</fileBased>
<hidden>true</hidden>
<version>0.12.1</version>
</application>
4.5. Roles
4.5.1. List roles
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<roles self="http://localhost:8080/appNGizer/application/appng-manager/role" xmlns="http://www.appng.org/schema/appngizer">
<role name="Platform Administrator" self="http://localhost:8080/appNGizer/application/appng-manager/role/Platform%20Administrator">
<application>appng-manager</application>
<description>Administrator with all permissions</description>
</role>
<role name="User Manager" self="http://localhost:8080/appNGizer/application/appng-manager/role/User%20Manager">
<application>appng-manager</application>
<description>A role for managing groups,users and roles with their permissions</description>
</role>
<role name="Site Manager" self="http://localhost:8080/appNGizer/application/appng-manager/role/Site%20Manager">
<application>appng-manager</application>
<description></description>
</role>
<role name="Debugger" self="http://localhost:8080/appNGizer/application/appng-manager/role/Debugger">
<application>appng-manager</application>
<description>Enables debugging output</description>
</role>
</roles>
4.5.2. Show role
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<role name="Platform Administrator" self="http://localhost:8080/appNGizer/application/appng-manager/role/Platform%20Administrator" xmlns="http://www.appng.org/schema/appngizer">
<application>appng-manager</application>
<description>Administrator with all permissions</description>
<permissions>
<permission name="site.databases">
<application>appng-manager</application>
<description>Show the site's databases</description>
</permission>
<permission name="application.property.edit">
<application>appng-manager</application>
<description>Edit a application property</description>
</permission>
<permission name="site.application.property.delete">
<application>appng-manager</application>
<description>Delete a property for a site's application</description>
</permission>
</permissions>
</role>
4.5.3. Create role
Method: POST
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<role name="Editor" xmlns="http://www.appng.org/schema/appngizer">
<application>appng-manager</application>
<description>Editor role</description>
<permissions>
<permission name="site.databases" />
<permission name="subject.list" />
<permission name="page.subjects" />
</permissions>
</role>
4.5.4. Update role
Method: PUT
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<role name="Editor" xmlns="http://www.appng.org/schema/appngizer">
<application>appng-manager</application>
<description>Editor role</description>
<permissions>
<permission name="site.databases" />
<permission name="application.property.edit" />
<permission name="site.application.property.delete" />
</permissions>
</role>
4.6. Permissions
4.6.1. List permissions
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<permissions self="http://localhost:8080/appNGizer/application/appng-manager/permission" xmlns="http://www.appng.org/schema/appngizer">
<permission name="application.delete">
<application>appng-manager</application>
<description>Delete a application</description>
</permission>
<permission name="application.dictionary">
<application>appng-manager</application>
<description>Show a application's dictionary</description>
</permission>
<permission name="application.edit">
<application>appng-manager</application>
<description>Edit a application</description>
</permission>
<permission name="application.list">
<application>appng-manager</application>
<description>List all applications</description>
</permission>
<permission name="application.properties">
<application>appng-manager</application>
<description>Show a application's properties</description>
</permission>
</permissions>
4.7. Properties
See [Create Role] ==== List properties ==== Create property ==== Update property ==== Delete property
5. Site
5.1. List sites
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sites self="http://localhost:8080/appNGizer/site" xmlns="http://www.appng.org/schema/appngizer">
<site name="appng" self="http://localhost:8080/appNGizer/site/appng">
<active>true</active>
<host>localhost</host>
<domain>http://localhost:8080</domain>
</site>
<site name="localhost" self="http://localhost:8080/appNGizer/site/localhost">
<active>true</active>
<host>127.0.0.1</host>
<domain>http://127.0.0.1:8080</domain>
<description>I am local!</description>
</site>
</sites>
5.2. Show site
URL-Scheme: http://localhost:8080/appNGizer/site/{site-name}
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<site name="localhost" self="http://localhost:8080/appNGizer/site/localhost" xmlns="http://www.appng.org/schema/appngizer">
<active>true</active>
<host>localhost</host>
<domain>http://localhost:8080</domain>
<properties self="http://localhost:8080/appNGizer/site/localhost/property"/>
<applications self="http://localhost:8080/appNGizer/site/localhost/application"/>
</site>
5.3. Create site
Method: POST
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<site name="localhost" xmlns="http://www.appng.org/schema/appngizer">
<active>true</active>
<host>127.0.0.1</host>
<domain>http://127.0.0.1:8080</domain>
<description>I am local!</description>
</site>
Response Body: -none-
5.4. Update site
URL-Scheme: http://localhost:8080/appNGizer/site/{site-name}
Method: PUT
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<site name="localhost" xmlns="http://www.appng.org/schema/appngizer">
<active>true</active>
<host>127.0.0.2</host>
<domain>http://127.0.0.2:8081</domain>
<description>I am local, man!</description>
</site>
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<site name="localhost" self="http://localhost:8080/appNGizer/site/localhost" xmlns="http://www.appng.org/schema/appngizer">
<active>true</active>
<host>127.0.0.2</host>
<domain>http://127.0.0.2:8081</domain>
<description>I am local, man!</description>
</site>
5.5. Delete site
URL-Scheme: http://localhost:8080/appNGizer/site/{site-name}
Method: DELETE
Request Body: -none-
Response Body: -none-
5.7. Properties
5.7.1. List properties
Method: GET
Request Body: -none-
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<properties xmlns="http://www.appng.org/schema/appngizer" self="http://localhost:8080/appNGizer/site/manager/property">
<property name="appendTabId" self="http://localhost:8080/appNGizer/site/manager/property/appendTabId">
<value>false</value>
<defaultValue>false</defaultValue>
<description>If set to true, the name of the currently selected tab is being appended to the URL as a get-parameter. Addresses the issue that IE loses the anchor on a redirect.</description>
</property>
<property name="assetsDir" self="http://localhost:8080/appNGizer/site/manager/property/assetsDir">
<value>/assets</value>
<defaultValue>/assets</defaultValue>
<description>A semicolon-separated list of folder-names (relative to 'wwwDir') containing static resources such as images or pdfs</description>
</property>
<property name="authApplication" self="http://localhost:8080/appNGizer/site/manager/property/authApplication">
<value>appng-authentication</value>
<defaultValue>appng-authentication</defaultValue>
<description>The name of the application which is responsible for the authentication</description>
</property>
<property name="authLoginPage" self="http://localhost:8080/appNGizer/site/manager/property/authLoginPage">
<value>webform, digestlogin</value>
<defaultValue>webform</defaultValue>
<description>The names of the login-pages (comma-separated) within the application defined in 'authApplication'. The number of comma-separated pages must be the same as in 'authLoginRef', because 'authLoginRef[n]' refers to 'authLoginPage[n]'!</description>
</property>
<property name="authLoginRef" self="http://localhost:8080/appNGizer/site/manager/property/authLoginRef">
<value>webform, login</value>
<defaultValue>webform</defaultValue>
<description>The action names (comma-separated) for the pages defined in {@link #AUTH_LOGIN_PAGE}. The number of comma-separated names must be the same as in 'authLoginPage', because 'authLoginRef[n]' refers to 'authLoginPage[n]'!</description>
</property>
</properties>
5.7.2. Create Property
Method: POST
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<property name="myCustomProperty" xmlns="http://www.appng.org/schema/appngizer">
<defaultValue>42</defaultValue>
<description>The answer to life, the universe and everything</description>
</property>
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<property xmlns="http://www.appng.org/schema/appngizer" name="myCustomProperty" self="http://localhost:8080/appNGizer/site/localhost/property/myCustomProperty">
<value>42</value>
<defaultValue>42</defaultValue>
<description>The answer to life, the universe and everything</description>
</property>
5.7.3. Update Property
Method: PUT
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<property name="myCustomProperty" xmlns="http://www.appng.org/schema/appngizer">
<value>57</value>
<defaultValue>42</defaultValue>
<description>The real answer to life, the universe and everything</description>
</property>
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<property xmlns="http://www.appng.org/schema/appngizer" name="myCustomProperty" self="http://localhost:8080/appNGizer/site/localhost/property/myCustomProperty">
<value>57</value>
<defaultValue>42</defaultValue>
<description>The real answer to life, the universe and everything</description>
</property>
5.8. Applications
5.8.1. List applications
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<applications self="http://localhost:8080/appNGizer/site/appng/application" xmlns="http://www.appng.org/schema/appngizer">
<application name="appng-authentication" self="http://localhost:8080/appNGizer/site/appng/application/appng-authentication">
<displayName>Authentication</displayName>
<core>true</core>
<fileBased>false</fileBased>
<hidden>true</hidden>
<version>0.11.0</version>
</application>
<application name="appng-manager" self="http://localhost:8080/appNGizer/site/appng/application/appng-manager">
<displayName>Manager</displayName>
<core>true</core>
<fileBased>false</fileBased>
<hidden>false</hidden>
<version>0.12.1</version>
</application>
<application name="appng-scheduler" self="http://localhost:8080/appNGizer/site/appng/application/appng-scheduler">
<displayName>Scheduler</displayName>
<core>true</core>
<fileBased>false</fileBased>
<hidden>false</hidden>
<version>0.11.2</version>
</application>
</applications>
5.8.2. Show application
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application name="appng-authentication" self="http://localhost:8080/appNGizer/site/appng/application/appng-authentication" xmlns="http://www.appng.org/schema/appngizer">
<displayName>Authentication</displayName>
<core>true</core>
<fileBased>false</fileBased>
<hidden>true</hidden>
<version>0.11.0</version>
</application>
5.8.3. Application properties
List application properties
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<properties self="http://localhost:8080/appNGizer/site/appng/application/appng-authentication/property" xmlns="http://www.appng.org/schema/appngizer">
<property name="digestMaxValidity"
self="http://localhost:8080/appNGizer/site/appng/application/appng-authentication/property/digestMaxValidity">
<value>3</value>
<defaultValue>3</defaultValue>
<description>the maximum validity of a login digest in minutes</description>
</property>
<property name="enableDeeplinks"
self="http://localhost:8080/appNGizer/site/appng/application/appng-authentication/property/enableDeeplinks">
<value>true</value>
<defaultValue>true</defaultValue>
<description>set to true to forward the user to the originally requested page</description>
</property>
<property name="mailFrom" self="http://localhost:8080/appNGizer/site/appng/application/appng-authentication/property/mailFrom">
<value>support@aiticon.de</value>
<defaultValue>support@aiticon.de</defaultValue>
<description>the sender address for emails send during passwort retrieval</description>
</property>
<property name="successPage"
self="http://localhost:8080/appNGizer/site/appng/application/appng-authentication/property/successPage">
<value>/appng-manager</value>
<defaultValue>/appng-manager</defaultValue>
<description>The path the user is forwarded to after successfull login</description>
</property>
</properties>
Create application property
Method: POST
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<property name="myCustomProperty" xmlns="http://www.appng.org/schema/appngizer">
<defaultValue>42</defaultValue>
<description>The answer to life, the universe and everything</description>
</property>
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<property xmlns="http://www.appng.org/schema/appngizer" name="myCustomProperty" self="http://localhost:8080/appNGizer/site/appng/application/appng-authentication/property/myCustomProperty">
<value>42</value>
<defaultValue>42</defaultValue>
<description>The answer to life, the universe and everything</description>
</property>
Update application property
URL-Scheme: http://localhost:8080/appNGizer/site/{site-name}/application/{app-name}/property/{property-name}
Method: PUT
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<property name="myCustomProperty" xmlns="http://www.appng.org/schema/appngizer">
<value>57</value>
<defaultValue>42</defaultValue>
<description>The real answer to life, the universe and everything</description>
</property>
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<property xmlns="http://www.appng.org/schema/appngizer" name="myCustomProperty" self="http://localhost:8080/appNGizer/site/appng/application/appng-authentication/property/myCustomProperty">
<value>57</value>
<defaultValue>42</defaultValue>
<description>The real answer to life, the universe and everything</description>
</property>
Delete application property
URL-Scheme: http://localhost:8080/appNGizer/site/{site-name}/application/{app-name}/property/{property-name}
Method: DELETE
Request Body: -none-
Response Body: -none-
6. Repository
6.1. List Repositories
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<repositories self="http://localhost:8080/appNGizer/repository" xmlns="http://www.appng.org/schema/appngizer">
<repository name="Remote" self="http://localhost:8080/appNGizer/repository/Remote">
<remoteName>pdev0-all</remoteName>
<uri>http://appng.s-ait-p-dev0.aitintra.de/service/appng/appng-manager/soap/repositoryService</uri>
<enabled>true</enabled>
<strict>false</strict>
<published>false</published>
<type>REMOTE</type>
<mode>ALL</mode>
</repository>
<repository name="Local" self="http://localhost:8080/appNGizer/repository/Local">
<remoteName></remoteName>
<uri>file:///local/repo/path</uri>
<enabled>true</enabled>
<strict>false</strict>
<published>false</published>
<type>LOCAL</type>
<mode>ALL</mode>
</repository>
</repositories>
6.2. Create repository
Method: POST
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<repository name="Local" xmlns="http://www.appng.org/schema/appngizer">
<remoteName></remoteName>
<uri>file:///local/repo/path</uri>
<enabled>true</enabled>
<strict>false</strict>
<published>false</published>
<type>LOCAL</type>
<mode>ALL</mode>
</repository>
Response Body: -none-
6.3. Update repository
Method: PUT
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<repository name="Local" xmlns="http://www.appng.org/schema/appngizer">
<remoteName></remoteName>
<uri>file:///local/path</uri>
<enabled>false</enabled>
<strict>true</strict>
<published>false</published>
<type>LOCAL</type>
<mode>STABLE</mode>
</repository>
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<repository name="Local" self="http://localhost:8080/appNGizer/repository/Local" xmlns="http://www.appng.org/schema/appngizer">
<remoteName></remoteName>
<uri>file:///local/path</uri>
<enabled>false</enabled>
<strict>true</strict>
<published>false</published>
<type>LOCAL</type>
<mode>STABLE</mode>
</repository>
6.5. Show repository with available packages
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<repository name="Remote" self="http://localhost:8080/appNGizer/repository/Remote" xmlns="http://www.appng.org/schema/appngizer">
<remoteName>pdev0-all</remoteName>
<uri>http://appng.s-ait-p-dev0.aitintra.de/service/appng/appng-manager/soap/repositoryService</uri>
<enabled>true</enabled>
<strict>false</strict>
<published>false</published>
<type>REMOTE</type>
<mode>ALL</mode>
<packages>
<package self="http://localhost:8080/appNGizer/repository/Remote/appng-authentication">
<name>appng-authentication</name>
<displayName>Authentication</displayName>
<installed>true</installed>
<release>0.11.0</release>
<type>application</type>
</package>
<package self="http://localhost:8080/appNGizer/repository/Remote/appng-manager">
<name>appng-manager</name>
<displayName>Manager</displayName>
<installed>true</installed>
<snapshot>0.12.2-SNAPSHOT</snapshot>
<release>0.12.1</release>
<type>application</type>
</package>
<package self="http://localhost:8080/appNGizer/repository/Remote/appng-scheduler">
<name>appng-scheduler</name>
<displayName>Scheduler</displayName>
<installed>true</installed>
<snapshot>0.11.3-SNAPSHOT</snapshot>
<release>0.11.2</release>
<type>application</type>
</package>
<package self="http://localhost:8080/appNGizer/repository/Remote/appng-template">
<name>appng-template</name>
<displayName>appng</displayName>
<installed>false</installed>
<snapshot>0.14.3-SNAPSHOT</snapshot>
<release>0.14.2</release>
<type>template</type>
</package>
</packages>
</repository>
6.6. Install package
Method: PUT
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<package xmlns="http://www.appng.org/schema/appngizer">
<name>appng-authentication</name>
<displayName>Authentication</displayName>
<version>0.11.0</version>
<timestamp>20170601-0751</timestamp>
</package>
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<package xmlns="http://www.appng.org/schema/appngizer" name="appng-authentication" self="http://localhost:8080/appNGizer/repository/Local/appng-authentication/0.9.3">
<name>appng-authentication</name>
<displayName>Authentication</displayName>
<installed>true</installed>
<release>0.11.0</release>
<type>application</type>
</package>
6.7. Upload package
Method: POST
Request
A multipart/form-data
encoded request with a parameter named file
that contains the package archive.
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<package xmlns="http://www.appng.org/schema/appngizer" name="appng-authentication" self="http://localhost:8080/appNGizer/repository/Local/appng-authentication/0.9.3">
<name>appng-authentication</name>
<displayName>Authentication</displayName>
<installed>false</installed>
<release>0.11.0</release>
<type>application</type>
</package>
Response Code:
-
405 (method not allowed) - if the repository is not a local repository
-
400 (bad request) - if the file is not a valid archive
7. Groups
7.1. List Groups
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<groups self="http://localhost:8080/appNGizer/groups" xmlns="http://www.appng.org/schema/appngizer">
<group name="Administrator" self="http://localhost:8080/appNGizer/group/Administrator">
<description>appNG administrator group</description>
</group>
<group name="Editor" self="http://localhost:8080/appNGizer/group/Editor">
<description>group for editors</description>
</group>
</groups>
7.2. Show group
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<group name="Administrator" self="http://localhost:8080/appNGizer/group/Administrator" xmlns="http://www.appng.org/schema/appngizer">
<description>appNG administrator group</description>
<roles>
<role name="Platform Administrator" self="http://localhost:8080/appNGizer/application/appng-manager/role/Platform%20Administrator">
<application>appng-manager</application>
<description>Administrator with all permissions</description>
</role>
<role name="Users" self="http://localhost:8080/appNGizer/application/appng-authentication/role/Users">
<application>appng-authentication</application>
<description>General role for all users</description>
</role>
<role name="Scheduler Admin" self="http://localhost:8080/appNGizer/application/appng-scheduler/role/Scheduler%20Admin">
<application>appng-scheduler</application>
<description>a super administrator with all permissions</description>
</role>
</roles>
</group>
7.3. Create group
Method: POST
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<group name="Editor" xmlns="http://www.appng.org/schema/appngizer">
<description>group for editors</description>
<roles>
<role name="Platform Administrator" >
<application>appng-manager</application>
</role>
<role name="Users">
<application>appng-authentication</application>
</role>
<role name="Scheduler Admin">
<application>appng-scheduler</application>
</role>
</roles>
</group>
Response Body: -none-
8. Subjects
8.1. List subjects
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<subjects self="http://localhost:8080/appNGizer/subjects" xmlns="http://www.appng.org/schema/appngizer">
<subject name="admin" self="http://localhost:8080/appNGizer/subject/admin">
<realName>appNG Administrator</realName>
<email>admin@appng.org</email>
<description>foo!</description>
<timeZone>Europe/Berlin</timeZone>
<language>en</language>
<type>LOCAL_USER</type>
</subject>
<subject name="editor" self="http://localhost:8080/appNGizer/subject/editor">
<realName>appNG Editor</realName>
<email>editor@appng.org</email>
<description>bar!</description>
<timeZone>Europe/Berlin</timeZone>
<language>de</language>
<type>LOCAL_USER</type>
</subject>
</subjects>
8.2. Show subject
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<subject name="editor" xmlns="http://www.appng.org/schema/appngizer">
<realName>appNG Editor</realName>
<email>editor@appng.org</email>
<description>bar!</description>
<digest>$2a$13$GkdFoQDajx73NJMUoyb4mOWKQ7XtIbPnioVXHeJTn3oMPuaJX1iCu</digest>
<timeZone>Europe/Berlin</timeZone>
<language>de</language>
<type>LOCAL_USER</type>
<groups>
<group name="Administrator" />
</groups>
</subject>
8.3. Create subject
Method: POST
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<subject name="editor" xmlns="http://www.appng.org/schema/appngizer">
<realName>appNG Editor</realName>
<email>editor@appng.org</email>
<description>bar!</description>
<digest>$2a$13$GkdFoQDajx73NJMUoyb4mOWKQ7XtIbPnioVXHeJTn3oMPuaJX1iCu</digest>
<timeZone>Europe/Berlin</timeZone>
<language>de</language>
<type>LOCAL_USER</type>
<groups>
<group name="Administrator" />
</groups>
</subject>
The |
If the digest starts with the Bcrypt-prefix |
Response Body: -none-
8.4. Update subject
Method: PUT
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<subject name="admin" xmlns="http://www.appng.org/schema/appngizer">
<realName>appNG Admin</realName>
<email>admin@appng.org</email>
<description>bar!</description>
<digest>$2a$13$GkdFoQDajx73NJMUoyb4mOWKQ7XtIbPnioVXHeJTn3oMPuaJX1iCu</digest>
<timeZone>Europe/Madrid</timeZone>
<language>es</language>
<type>LOCAL_USER</type>
<groups>
<group name="Administrator" />
<group name="Editor" />
</groups>
</subject>
The same rules for the |
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<subject name="admin" self="http://localhost:8080/appNGizer/subject/admin" xmlns="http://www.appng.org/schema/appngizer">
<realName>appNG Admin</realName>
<email>admin@appng.org</email>
<description>bar!</description>
<digest>$2a$13$GkdFoQDajx73NJMUoyb4mOWKQ7XtIbPnioVXHeJTn3oMPuaJX1iCu</digest>
<timeZone>Europe/Madrid</timeZone>
<language>es</language>
<type>LOCAL_USER</type>
<groups>
<group name="Administrator" self="http://localhost:8080/appNGizer/group/Administrator">
<description>appNG administrator group</description>
</group>
<group name="Editor" self="http://localhost:8080/appNGizer/group/Editor">
<description>group for editors</description>
</group>
</groups>
</subject>