From afd8a4b37bba079777a64f3748f0d9eb098dc999 Mon Sep 17 00:00:00 2001 From: Timo Ley Date: Mon, 26 Sep 2022 10:17:50 +0200 Subject: [PATCH] env builder API now parts of repositories --- docs/api/features/env.md | 14 ++++++++++---- docs/concepts/flags.md | 3 ++- docs/schema/manifest.md | 11 +++-------- docs/schema/repository.md | 7 ++++++- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/docs/api/features/env.md b/docs/api/features/env.md index 6d224cc..d475e3a 100644 --- a/docs/api/features/env.md +++ b/docs/api/features/env.md @@ -10,7 +10,8 @@ This endpoint can be used to build the launch environment for an [instance addon If an [instance addon](../../concepts/instance.md), which has to provide a launch configuration, has the `env` [manifest flag](../../concepts/flags.md#manifest-flags), AddonScript will send a request to this -endpoint if the API instance [specified in the manifest](../../schema/manifest.md#envapi) of that addon. +endpoint of an API instance, on which the [repository](../../schema/repository.md) of the +[namespace](../../schema/manifest.md#namespace) of this addon can be found. This request contains information about the AddonScript [schema version](../../schema/api_env_request.md#addonscript), which will be used in the request and about which [addon](../../schema/api_env_request.md#addon) this request is for. Moreover it contains for both sides a list of addons, including their version, which will be part of the @@ -19,7 +20,7 @@ of this [addon](../../schema/api_env_request.md#addon) uses the `env` [relation to tell AddonScript, which [related addons](../../schema/relation.md) MAY and which MUST be requested on this endpoint and which [versions](../../schema/relation.md#version) of them are valid. Which exact version of them and which optional addons will be requested is either decided by the user, if the instance addon is installed manually, or by another -[instance addon](../../concepts/instance.md), which delegates the launch configuration to this addon. In latetr case, +[instance addon](../../concepts/instance.md), which delegates the launch configuration to this addon. In later case, that [instance addon](../../concepts/instance.md) uses the `env` [relation flag](../../concepts/flags.md#relational-flags) to specify an exact version for each addon, that will be requested. Each required `env` addon MUST be covered this way while only those optional `env` addons will be requested, which are covered this way. Lastly the request also contains @@ -46,6 +47,11 @@ The request body MUST be an [Environment Builder Request Object](../../schema/ap - `200 OK`: The launch environment was successfully build. The response body MUST be an [Environment Builder Response Object](../../schema/api_env_response.md). - `400 Bad Request`: The server was not able to build the launch environment because of -invalid information sned by the client. +invalid information send by the client. The client SHOULD NOT try this request on +another API instance, since the request is invalid. +- `404 Not Found`: The launch environment can't be build for this addon, because no information +about it was found on this API instance. The client SHOULD try to use another API instance +to build the environment. - `500 Internal Server Error`: The server was not able to build the launch environment -because of an internal error. \ No newline at end of file +because of an internal error. The client MAY try to request the environment on another +API instance. \ No newline at end of file diff --git a/docs/concepts/flags.md b/docs/concepts/flags.md index c1f639b..8c4adda 100644 --- a/docs/concepts/flags.md +++ b/docs/concepts/flags.md @@ -19,7 +19,8 @@ addon manifest, including for which side it is available and for which side it i - `instance` This flag specifies, that this is a manifest of an [instance addon](instance.md). - `env` This flag is only valid for [instance addons](instance.md). It specifies, that the [environment builder API](../api/features/env.md) will be used to get the launch files for this addon. - An addon with this flag MUST have the [env_api](../schema/manifest.md#envapi) property. + An addon with this flag MUST have a [repository](../schema/repository.md) for it's + [canonical namespace](../schema/manifest.md#namespace). ## Relational flags diff --git a/docs/schema/manifest.md b/docs/schema/manifest.md index 9e4b95c..adcf124 100644 --- a/docs/schema/manifest.md +++ b/docs/schema/manifest.md @@ -10,7 +10,6 @@ "relations": [], "flags": {}, "repositories": [], - "env_api": "https://example.com", "meta": {} } ``` @@ -53,13 +52,9 @@ This is an array of [relation objects](relation.md) which represent addons in re This is an array of [repository objects](repository.md). Each repository object defines one repository from which files or addons can be retrieved. Each AddonScript manifest SHOULD have a repository for the [canonical namespace](#namespace) of -that manifest, from which AddonScript implementations MAY check for updates for this addon. - -### env_api - -This is the base URL of an [AddonScript API](../api) instance, which has the `env` feature and will be used to -build the launch environment for this addon. This property will only be used if this addon has the `env` -[manifest flag](../concepts/flags.md#manifest-flags). +that manifest, from which AddonScript implementations MAY check for updates for this addon. If this addon has the `env` +[manifest flag](../concepts/flags.md#manifest-flags), it MUST have such a repository to provide API instances, which can +be used to request the [launch environment](../api/features/env.md#build-launch-environment). ### meta diff --git a/docs/schema/repository.md b/docs/schema/repository.md index c8d59d5..4111c80 100644 --- a/docs/schema/repository.md +++ b/docs/schema/repository.md @@ -18,4 +18,9 @@ This is the [namespace](../concepts/namespaces.md), which describes this reposit This is an array of base URLs of [AddonScript API](../api) instances, on which this repository can be found. To get an addon from this repository, AddonScript will try to get it from the [addon endpoint](../api/features/addons.md#get-addon) -of these API instances in the order, in which they are specified in this array. \ No newline at end of file +of these API instances in the order, in which they are specified in this array. +Instances in this array with the `env` [feature](../api/features/env.md) will +be used by AddonScript, to request the launch environment for an addon with a +[canonical namespace](../concepts/namespaces.md#canonical-namespaces) equal +to the [namespace](#namespace) of this repository. The first API instance with +the `env` feature will be used in this case with the others as fallback. \ No newline at end of file