diff --git a/docs/app-directory/spec.md b/docs/app-directory/spec.md index b2c7ccf4f..70edf81a8 100644 --- a/docs/app-directory/spec.md +++ b/docs/app-directory/spec.md @@ -11,6 +11,9 @@ View the [full specification](/schemas/next/app-directory) in [OpenAPI v3.0](htt Endpoint | Method | Description ------------------ | ------ | ----------- - `/v1/apps` | POST | Create a new application definition - `/v1/apps/{appId}` | GET | Retrieve an application defintion - `/v1/apps/search` | GET | Retrieve a list of applications + `/v2/apps` | POST | Create a new application definition + `/v2/apps/{appId}` | GET | Retrieve an application defintion + `/v2/apps/search` | GET | Retrieve a list of applications + `/v1/apps` | POST | (deprecated v1 API version) Create a new application definition + `/v1/apps/{appId}` | GET | (deprecated v1 API version) Retrieve an application defintion + `/v1/apps/search` | GET | (deprecated v1 API version) Retrieve a list of applications diff --git a/src/app-directory/README.md b/src/app-directory/README.md index 1e002229c..5e1db685b 100644 --- a/src/app-directory/README.md +++ b/src/app-directory/README.md @@ -12,8 +12,8 @@ The purpose of the Application Directory specification within FDC3 is to: ## Specification -* [View the OpenAPI Specification in Swagger](https://editor.swagger.io/?url=https://fdc3.finos.org/schemas/1.1/app-directory.yaml) -* [More about the Specification on the FDC3 Website](https://fdc3.finos.org/docs/1.1/app-directory/overview) +* [View the OpenAPI Specification in Swagger](https://editor.swagger.io/?url=https://fdc3.finos.org/schemas/1.2/app-directory.yaml) +* [More about the Specification on the FDC3 Website](https://fdc3.finos.org/docs/1.2/app-directory/overview) ## Directory structure diff --git a/src/app-directory/specification/appd.yaml b/src/app-directory/specification/appd.yaml index bece799ed..dd6540f29 100644 --- a/src/app-directory/specification/appd.yaml +++ b/src/app-directory/specification/appd.yaml @@ -1,7 +1,7 @@ openapi: 3.0.0 info: title: FDC3 Application Directory - version: next + version: 'next' description: > Application Directory specification providing both interface definition and objects necessary to construct an application directory @@ -12,9 +12,9 @@ info: security: - bearerAuth: [] paths: - '/v1/apps/{appId}': + '/v2/apps/{appId}': get: - summary: Retrieve an application defintion + summary: Retrieve an application definition parameters: - name: appId in: path @@ -53,7 +53,7 @@ paths: $ref: '#/components/schemas/ErrorDTO' tags: - Application - /v1/apps: + /v2/apps: post: summary: Create a new application definition responses: @@ -97,7 +97,7 @@ paths: FDC3WorkbenchAppDefinition: $ref: '#/components/examples/FDC3WorkbenchAppDefinition' required: true - /v1/apps/search: + /v2/apps/search: get: summary: Retrieve a list of applications based on parameters provided. Depending on implementation, parameter values should self describe search format and type (e.g. Regex) @@ -205,6 +205,187 @@ paths: $ref: '#/components/schemas/ErrorDTO' tags: - Application + '/v1/apps/{appId}': + get: + summary: (Deprecated v1 API version) Retrieve an application definition + parameters: + - name: appId + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationV1' + '400': + description: Bad request. + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorDTO' + '403': + description: >- + Forbidden: Certificate authentication is not allowed for the + requested user. + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorDTO' + '500': + description: 'Server error, see response body for further details.' + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorDTO' + tags: + - Application + /v1/apps: + post: + summary: (Deprecated v1 API version) Create a new application definition + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSearchResponseV1' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorDTO' + '403': + description: >- + Forbidden: Certificate authentication is not allowed for the + requested user. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorDTO' + '500': + description: 'Server error, see response body for further details.' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorDTO' + tags: + - Application + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationV1' + required: true + /v1/apps/search: + get: + summary: (Deprecated v1 API version) Retrieve a list of applications based on parameters provided. Depending on implementation, parameter + values should self describe search format and type (e.g. Regex) + parameters: + - in: query + name: appId + schema: + type: string + required: false + description: > + The unique application identifier located within a specific + application directory instance. + - in: query + name: name + schema: + type: string + required: false + description: > + The name of the application. + + The name should be unique within an FDC3 App Directory instance. The + exception to the uniqueness constraint is that an App Directory can + hold definitions for multiple versions of the same app. + + The same appName could occur in other directories. We are not + currently specifying app name conventions in the document. + - in: query + name: version + schema: + type: string + required: false + description: >- + Version of the application. This allows multiple app versions to be + defined using the same app name. This can be a triplet but can also + include things like 1.2.5 (BETA) + - in: query + name: title + schema: + type: string + required: false + description: >- + Optional title for the application, if missing use appName, + typically used in a launcher UI. + - in: query + name: tooltip + schema: + type: string + required: false + description: Optional tooltip description e.g. for a launcher + - in: query + name: description + schema: + type: string + required: false + description: >- + Description of the application. This will typically be a 1-2 + paragraph style blurb about the application. Allow mark up language + - in: query + name: intent_name + schema: + type: string + required: false + description: name of intent + - in: query + name: intent_displayName + schema: + type: string + required: false + description: displayName of intent + - in: query + name: intent_context + schema: + type: string + required: false + description: search contexts list + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSearchResponseV1' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorDTO' + '403': + description: >- + Forbidden: Certificate authentication is not allowed for the + requested user. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorDTO' + '500': + description: 'Server error, see response body for further details.' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorDTO' + tags: + - Application servers: - url: /appd @@ -320,6 +501,103 @@ components: $ref: '#/components/schemas/Intent' hostManifests: $ref: '#/components/schemas/HostManifests' + ApplicationV1: + description: > + (Deprecated v1 API version) Defines an application retrieved from an FDC3 App Directory, which can + then be launched. + Launching typically means running for a user on a desktop. + The details around 'launching' including who or what might do it, and how the launch action is initiated are + discussed elsewhere in the FDC3 App Directory spec. + required: + - appId + - name + - manifest + - manifestType + properties: + appId: + type: string + description: > + The unique application identifier located within a specific + application directory instance. + name: + type: string + description: > + The name of the application. + The name should be unique within an FDC3 App Directory instance. The + exception to the uniqueness constraint is that an App Directory can + hold definitions for multiple versions of the same app. + The same appName could occur in other directories. We are not + currently specifying app name conventions in the document. + manifest: + type: string + description: > + URI or full JSON of the application manifest providing all details related to launch + and use requirements as described by the vendor. + The format of this manifest is vendor specific, but can be identified by + the manifestType attribute. + manifestType: + type: string + description: > + The manifest type which relates to the format and structure of the manifest content. + The definition is based on the vendor specific format and definition outside of this specification. + version: + type: string + description: >- + Version of the application. This allows multiple app versions to be + defined using the same app name. This can be a triplet but can also + include things like 1.2.5 (BETA) + title: + type: string + description: >- + Optional title for the application, if missing use appName, + typically used in a launcher UI. + tooltip: + type: string + description: Optional tooltip description e.g. for a launcher + description: + type: string + description: >- + Description of the application. This will typically be a 1-2 + paragraph style blurb about the application. Allow mark up language + images: + type: array + description: >- + Array of images to show the user when they are looking at app + description. Each image can have an optional description/tooltip + items: + $ref: '#/components/schemas/AppImage' + contactEmail: + type: string + description: Optional e-mail to receive queries about the application + supportEmail: + type: string + description: Optional e-mail to receive support requests for the application + publisher: + type: string + description: >- + The name of the company that owns the application. The publisher has + control over their namespace/app/signature. + icons: + type: array + description: >- + Holds Icons used for the application, a Launcher may be able to use + multiple Icon sizes or there may be a 'button' Icon + items: + $ref: '#/components/schemas/IconV1' + customConfig: + type: array + description: >- + An optional set of name value pairs that can be used to deliver + custom data from an App Directory to a launcher. + items: + $ref: '#/components/schemas/NameValuePair' + intents: + type: array + description: > + The list of intents implemented by the Application as defined by + https://github.com/FDC3/Intents/blob/master/src/Intent.yaml + items: + $ref: '#/components/schemas/IntentV1' ApplicationSearchResponse: properties: applications: @@ -332,6 +610,18 @@ components: type: string description: | Response message providing status of query + ApplicationSearchResponseV1: + properties: + applications: + type: array + description: | + List of applications + items: + $ref: '#/components/schemas/ApplicationV1' + message: + type: string + description: | + Response message providing status of query NameValuePair: description: Simple name value pair properties: @@ -353,6 +643,12 @@ components: type: type: string description: Image media type. If not present the Desktop Agent may use the src file extension + IconV1: + description: (Deprecated v1 API version) Icon holder + properties: + icon: + type: string + description: Icon URL AppImage: description: App Image holder properties: @@ -391,6 +687,31 @@ components: description: >- Custom configuration for the intent that may be required for a particular desktop agent. + IntentV1: + description: >- + (Deprecated v1 API version) An intent definition as defined by spec + https://github.com/FDC3/Intents/blob/master/src/Intent.yaml + required: + - name + properties: + name: + type: string + description: The name of the intent to 'launch'. In this case the name of an Intent supported by an Application. + displayName: + type: string + description: An optional display name for the intent that may be used in UI instead of the name. + contexts: + type: array + items: + type: string + description: >- + A comma sepaarted list of the types of contexts the intent offered by the application can process. + where the first part of the context type is the namespace e.g."fdc3.contact, org.symphony.contact" + customConfig: + type: object + description: >- + Custom configuration for the intent that may be required for a + particular desktop agent. Type: type: string description: >- diff --git a/website/pages/schemas/1.1/app-directory.html b/website/pages/schemas/1.1/app-directory.html index a149a1725..f9ebbf171 100644 --- a/website/pages/schemas/1.1/app-directory.html +++ b/website/pages/schemas/1.1/app-directory.html @@ -1,24 +1,9 @@ - - - - ReDoc - - - - - - - - - - - - - \ No newline at end of file + + + + diff --git a/website/pages/schemas/1.2/app-directory.html b/website/pages/schemas/1.2/app-directory.html index a149a1725..7ff93048f 100644 --- a/website/pages/schemas/1.2/app-directory.html +++ b/website/pages/schemas/1.2/app-directory.html @@ -1,24 +1,9 @@ - - - - ReDoc - - - - - - - - - - - - - \ No newline at end of file + + + + diff --git a/website/pages/schemas/next/app-directory.html b/website/pages/schemas/next/app-directory.html index a149a1725..faebf3691 100644 --- a/website/pages/schemas/next/app-directory.html +++ b/website/pages/schemas/next/app-directory.html @@ -1,24 +1,9 @@ - - - - ReDoc - - - - - - - - - - - - - \ No newline at end of file + + + + \ No newline at end of file diff --git a/website/static/schemas/1.1/app-directory.yaml b/website/static/schemas/1.1/app-directory.yaml index e1ccdacfd..ac034f4c2 100644 --- a/website/static/schemas/1.1/app-directory.yaml +++ b/website/static/schemas/1.1/app-directory.yaml @@ -1,7 +1,7 @@ openapi: 3.0.0 info: title: FDC3 Application Directory - version: 1.1 + version: '1.1' description: > Application Directory specification providing both interface definition and objects necessary to construct an application directory diff --git a/website/static/schemas/1.2/app-directory.yaml b/website/static/schemas/1.2/app-directory.yaml index 762f275e9..7d06b2692 100644 --- a/website/static/schemas/1.2/app-directory.yaml +++ b/website/static/schemas/1.2/app-directory.yaml @@ -1,7 +1,7 @@ openapi: 3.0.0 info: title: FDC3 Application Directory - version: 1.2 + version: '1.2' description: > Application Directory specification providing both interface definition and objects necessary to construct an application directory diff --git a/website/static/schemas/next/app-directory.yaml b/website/static/schemas/next/app-directory.yaml index 104f5bca5..dd6540f29 100644 --- a/website/static/schemas/next/app-directory.yaml +++ b/website/static/schemas/next/app-directory.yaml @@ -1,7 +1,7 @@ openapi: 3.0.0 info: title: FDC3 Application Directory - version: next + version: 'next' description: > Application Directory specification providing both interface definition and objects necessary to construct an application directory @@ -12,9 +12,9 @@ info: security: - bearerAuth: [] paths: - '/v1/apps/{appId}': + '/v2/apps/{appId}': get: - summary: Retrieve an application defintion + summary: Retrieve an application definition parameters: - name: appId in: path @@ -53,7 +53,7 @@ paths: $ref: '#/components/schemas/ErrorDTO' tags: - Application - /v1/apps: + /v2/apps: post: summary: Create a new application definition responses: @@ -97,7 +97,7 @@ paths: FDC3WorkbenchAppDefinition: $ref: '#/components/examples/FDC3WorkbenchAppDefinition' required: true - /v1/apps/search: + /v2/apps/search: get: summary: Retrieve a list of applications based on parameters provided. Depending on implementation, parameter values should self describe search format and type (e.g. Regex) @@ -205,6 +205,187 @@ paths: $ref: '#/components/schemas/ErrorDTO' tags: - Application + '/v1/apps/{appId}': + get: + summary: (Deprecated v1 API version) Retrieve an application definition + parameters: + - name: appId + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationV1' + '400': + description: Bad request. + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorDTO' + '403': + description: >- + Forbidden: Certificate authentication is not allowed for the + requested user. + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorDTO' + '500': + description: 'Server error, see response body for further details.' + content: + '*/*': + schema: + $ref: '#/components/schemas/ErrorDTO' + tags: + - Application + /v1/apps: + post: + summary: (Deprecated v1 API version) Create a new application definition + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSearchResponseV1' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorDTO' + '403': + description: >- + Forbidden: Certificate authentication is not allowed for the + requested user. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorDTO' + '500': + description: 'Server error, see response body for further details.' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorDTO' + tags: + - Application + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationV1' + required: true + /v1/apps/search: + get: + summary: (Deprecated v1 API version) Retrieve a list of applications based on parameters provided. Depending on implementation, parameter + values should self describe search format and type (e.g. Regex) + parameters: + - in: query + name: appId + schema: + type: string + required: false + description: > + The unique application identifier located within a specific + application directory instance. + - in: query + name: name + schema: + type: string + required: false + description: > + The name of the application. + + The name should be unique within an FDC3 App Directory instance. The + exception to the uniqueness constraint is that an App Directory can + hold definitions for multiple versions of the same app. + + The same appName could occur in other directories. We are not + currently specifying app name conventions in the document. + - in: query + name: version + schema: + type: string + required: false + description: >- + Version of the application. This allows multiple app versions to be + defined using the same app name. This can be a triplet but can also + include things like 1.2.5 (BETA) + - in: query + name: title + schema: + type: string + required: false + description: >- + Optional title for the application, if missing use appName, + typically used in a launcher UI. + - in: query + name: tooltip + schema: + type: string + required: false + description: Optional tooltip description e.g. for a launcher + - in: query + name: description + schema: + type: string + required: false + description: >- + Description of the application. This will typically be a 1-2 + paragraph style blurb about the application. Allow mark up language + - in: query + name: intent_name + schema: + type: string + required: false + description: name of intent + - in: query + name: intent_displayName + schema: + type: string + required: false + description: displayName of intent + - in: query + name: intent_context + schema: + type: string + required: false + description: search contexts list + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSearchResponseV1' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorDTO' + '403': + description: >- + Forbidden: Certificate authentication is not allowed for the + requested user. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorDTO' + '500': + description: 'Server error, see response body for further details.' + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorDTO' + tags: + - Application servers: - url: /appd @@ -320,6 +501,103 @@ components: $ref: '#/components/schemas/Intent' hostManifests: $ref: '#/components/schemas/HostManifests' + ApplicationV1: + description: > + (Deprecated v1 API version) Defines an application retrieved from an FDC3 App Directory, which can + then be launched. + Launching typically means running for a user on a desktop. + The details around 'launching' including who or what might do it, and how the launch action is initiated are + discussed elsewhere in the FDC3 App Directory spec. + required: + - appId + - name + - manifest + - manifestType + properties: + appId: + type: string + description: > + The unique application identifier located within a specific + application directory instance. + name: + type: string + description: > + The name of the application. + The name should be unique within an FDC3 App Directory instance. The + exception to the uniqueness constraint is that an App Directory can + hold definitions for multiple versions of the same app. + The same appName could occur in other directories. We are not + currently specifying app name conventions in the document. + manifest: + type: string + description: > + URI or full JSON of the application manifest providing all details related to launch + and use requirements as described by the vendor. + The format of this manifest is vendor specific, but can be identified by + the manifestType attribute. + manifestType: + type: string + description: > + The manifest type which relates to the format and structure of the manifest content. + The definition is based on the vendor specific format and definition outside of this specification. + version: + type: string + description: >- + Version of the application. This allows multiple app versions to be + defined using the same app name. This can be a triplet but can also + include things like 1.2.5 (BETA) + title: + type: string + description: >- + Optional title for the application, if missing use appName, + typically used in a launcher UI. + tooltip: + type: string + description: Optional tooltip description e.g. for a launcher + description: + type: string + description: >- + Description of the application. This will typically be a 1-2 + paragraph style blurb about the application. Allow mark up language + images: + type: array + description: >- + Array of images to show the user when they are looking at app + description. Each image can have an optional description/tooltip + items: + $ref: '#/components/schemas/AppImage' + contactEmail: + type: string + description: Optional e-mail to receive queries about the application + supportEmail: + type: string + description: Optional e-mail to receive support requests for the application + publisher: + type: string + description: >- + The name of the company that owns the application. The publisher has + control over their namespace/app/signature. + icons: + type: array + description: >- + Holds Icons used for the application, a Launcher may be able to use + multiple Icon sizes or there may be a 'button' Icon + items: + $ref: '#/components/schemas/IconV1' + customConfig: + type: array + description: >- + An optional set of name value pairs that can be used to deliver + custom data from an App Directory to a launcher. + items: + $ref: '#/components/schemas/NameValuePair' + intents: + type: array + description: > + The list of intents implemented by the Application as defined by + https://github.com/FDC3/Intents/blob/master/src/Intent.yaml + items: + $ref: '#/components/schemas/IntentV1' ApplicationSearchResponse: properties: applications: @@ -332,6 +610,18 @@ components: type: string description: | Response message providing status of query + ApplicationSearchResponseV1: + properties: + applications: + type: array + description: | + List of applications + items: + $ref: '#/components/schemas/ApplicationV1' + message: + type: string + description: | + Response message providing status of query NameValuePair: description: Simple name value pair properties: @@ -353,6 +643,12 @@ components: type: type: string description: Image media type. If not present the Desktop Agent may use the src file extension + IconV1: + description: (Deprecated v1 API version) Icon holder + properties: + icon: + type: string + description: Icon URL AppImage: description: App Image holder properties: @@ -377,12 +673,40 @@ components: items: type: string description: >- - A comma separated list of the types of contexts the intent offered by the application can process, + A comma separated list of the types of contexts the intent offered by the application can process, where the first part of the context type is the namespace e.g."fdc3.contact, org.symphony.contact" - resultContext: + resultType: + type: string + description: >- + An optional type for output returned by the application, if any, when resolving this intent. + May indicate a context type by type name (e.g. "fdc3.instrument"), a channel (e.g. "channel") + or a combination that indicates a channel that returns a particular context type + (e.g. "channel"). + customConfig: + type: object + description: >- + Custom configuration for the intent that may be required for a + particular desktop agent. + IntentV1: + description: >- + (Deprecated v1 API version) An intent definition as defined by spec + https://github.com/FDC3/Intents/blob/master/src/Intent.yaml + required: + - name + properties: + name: type: string + description: The name of the intent to 'launch'. In this case the name of an Intent supported by an Application. + displayName: + type: string + description: An optional display name for the intent that may be used in UI instead of the name. + contexts: + type: array + items: + type: string description: >- - The type of context return by the application when resolving this intent. E.g. "fdc3.instrument" + A comma sepaarted list of the types of contexts the intent offered by the application can process. + where the first part of the context type is the namespace e.g."fdc3.contact, org.symphony.contact" customConfig: type: object description: >-