1. General
This guide describes how to manage an already installed appNG platform with appNGizer.
1.1. appNGizer setup
1.1.1. Shared secret
REST clients that use appNGizer must establish a session. This is done by sending a sharedSecret
via POST request to the login URL. A successful login response will contain a session cookie, that the client must accept and provide in all subsequent requests.
The sharedSecret
will be preset to a default value during the first start of the appNG platform. If the manager application is installed, administrators can look up the value in the Platform properties
tab.
In headless installations an individual value can be set with the appNG CLI.
% ./appng update-property -n platform.sharedSecret -v <sharedSecret>
1.1.2. Login
Method: POST
The tailing slash is mandatory otherwise the request gets redirected as GET request to that location and the authentication procedure is not performed! |
The login request is the only one, that must be sent with the header Content-Type=text/plain . All other PUT and POST requests have to use the header Content-Type=text/xml .
|
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>
1.2. HTTP methods and return codes
1.2.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.2.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.2.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.3. 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>
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 will asynchronously restart the whole web-application, making also appNGizer temporarily unavailable! |
Method: POST
Response Headers: 303 (See other)
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">
<links>
<link name="role" self="http://localhost:8080/appNGizer/application/appng-authentication/role" />
<link name="permission" self="http://localhost:8080/appNGizer/application/appng-authentication/permission" />
<link name="property" self="http://localhost:8080/appNGizer/site/localhost/application/appng-authentication/property" />
<link name="grants" self="http://localhost:8080/appNGizer/site/localhost/application/appng-authentication/grants" />
</links>
<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-
5.8.4. Showing grants for a site
Method: GET
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<grants xmlns="http://www.appng.org/schema/appngizer" self="http://localhost:8080/appNGizer/site/appng/application/appng-authentication/grants">
<grant site="site-a">false</grant>
<grant site="site-b">true</grant>
<grant site="site-c">true</grant>
</grants>
5.8.5. Granting an application for other sites
Method: PUT
Request Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<grants xmlns="http://www.appng.org/schema/appngizer" self="http://localhost:8080/appNGizer/site/appng/application/appng-authentication/grants">
<grant site="site-a">false</grant>
<grant site="site-b">true</grant>
<grant site="site-c">true</grant>
</grants>
Response Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<grants xmlns="http://www.appng.org/schema/appngizer" self="http://localhost:8080/appNGizer/site/appng/application/appng-authentication/grants">
<grant site="site-a">false</grant>
<grant site="site-b">true</grant>
<grant site="site-c">true</grant>
</grants>
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>