Skip to main content

Request an app installation

POST/v2/projects/{projectId}/app-installations
API version
v2
Request method
POST
Operation ID
app-request-appinstallation

This API operation requests a new app installation.

Usage notes​

Determining the appVersionId​

Both the app that should be installed and the specific version are identified by the appVersionId body parameter.

To determine available apps, use the GET/v2/apps‍ API operation. To determine available versions for a given app, use the app ID (as returned by the app-list-apps operation) as input parameter for the GET/v2/apps/{appId}/versions‍ operation.

On user inputs​

Pay attention to the userInputs parameter in the request body. This parameter is a list of objects, each with a name and value property.

The allowed values for name are dependent on the app version being installed. To determine the required inputs for a given app version, inspect the userInputs property of the app version object returned by the GET/v2/apps/{appId}/versions‍ operation.

Determining when the installation is complete​

Note that this operation does not block until the installation is complete. To determine the status of the installation, use the GET/v2/app-installations/{appInstallationId}‍ operation. When the operation is complete, the .appVersion.current property will be equal to .appVersion.desired.

Request​

  • projectIdstringrequired

Responses​

Format
application/json
Description

The AppInstallation has been requested.

  • idstring (uuid)required
Content-Type: application/json

{
"id": "f0f86186-0a5a-45b2-aa33-502777496347"
}
{
"properties": {
"id": {
"format": "uuid",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
}

Usage examples​

$ curl \
--fail \
--location \
-X POST \
-d '{"appVersionId":"f0f86186-0a5a-45b2-aa33-502777496347","description":"string","installationPath":"string","systemSoftware":{"string":{"systemSoftwareVersion":"string","updatePolicy":"none"}},"updatePolicy":"none","userInputs":[{"name":"string","value":"string"}]}' \
-H "Authorization: Bearer $MITTWALD_API_TOKEN" \
-H 'Content-Type: application/json' \
https://api.mittwald.de/v2/projects/string/app-installations
import { MittwaldAPIV2Client } from "@mittwald/api-client";
import { assertStatus } from "@mittwald/api-client-commons";

const client = MittwaldAPIClient.newWithToken(process.env.MITTWALD_API_TOKEN);
const response = await client.app.requestAppinstallation({
"projectId": "string",
"data": {
"appVersionId": "f0f86186-0a5a-45b2-aa33-502777496347",
"description": "string",
"installationPath": "string",
"systemSoftware": {
"string": {
"systemSoftwareVersion": "string",
"updatePolicy": "none"
}
},
"updatePolicy": "none",
"userInputs": [
{
"name": "string",
"value": "string"
}
]
}
});

assertStatus(response, 201);

use \Mittwald\ApiClient\Generated\V2\Clients\App\RequestAppinstallation\RequestAppinstallationRequest;
use \Mittwald\ApiClient\Generated\V2\Clients\App\RequestAppinstallation\RequestAppinstallationRequestBody;

$client = MittwaldAPIClient::newWithToken(getenv('MITTWALD_API_TOKEN'));

// TODO: Please consult the properties and constructor signature of
// RequestAppinstallationRequestBody to learn how to construct a valid instance
$body = new RequestAppinstallationRequestBody(/* TODO: ... */);

$request = (new RequestAppinstallationRequest(
projectId: "string",
body: $body
));
$response = $client->app()->requestAppinstallation($request);

var_dump($response->getBody();

$ mw app create php \
--project-id $PROJECT_ID \
--site-title "My TYPO3 site"

$ mw app install typo3 \
--version 12.4.16 \
--install-mode composer \
--project-id $PROJECT_ID \
--admin-email admin@typo3.example \
--admin-pass securepassword \
--admin-user admin \
--site-title "My TYPO3 site"

On this page