MEC010-2_AppLcm.json 64.8 KB
Newer Older
  "info": {
    "title": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management",
    "version": "2.1.1",
    "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI.",
    "license": {
      "name": "BSD-3-Clause",
      "url": "https://forge.etsi.org/legal-matters"
    "contact": {
      "name": "ETSI Forge",
      "email": "cti_support@etsi.org",
      "url": "https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api"
    }
  },
  "externalDocs": {
    "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.1.1",
    "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.01.01_60/gs_MEC01002v020101p.pdf"
  },
  "servers": [
    {
      "url": "https://localhost/app_lcm/v1"
    }
  ],
  "openapi": "3.0.0",
  "tags": [
    {
      "name": "app-lcm",
      "description": "App lifecycle management"
Elian Kraja's avatar
Elian Kraja committed
    },
    {
      "name": "app-lcm-notifications",
      "description": "App lifecycle management notifications"
    }
  ],
  "paths": {
    "/app_instances": {
      "post": {
        "tags": [
          ""
        ],
        "summary": "Create an application instance resource",
        "description": "Create an application instance resource",
        "operationId": "appInstancePOST",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAppInstanceRequest"
Elian Kraja's avatar
Elian Kraja committed
        },
        "responses": {
          "201": {
            "description": "An application instance identifier and the related resource has been created successfully.",
            "content": {
              "application/zip": {
                "schema": {
                  "$ref": "#/components/schemas/AppInstanceInfo"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "406": {
            "$ref": "#/components/responses/406"
          },
          "429": {
            "$ref": "#/components/responses/429"
      "get": {
        "tags": [
          ""
        ],
        "summary": "Queries information relating to on-boarded application packages in the MEO",
        "description": "queries information relating to on-boarded application packages in the MEO",
        "operationId": "appInstanceGET",
Elian Kraja's avatar
Elian Kraja committed
        "parameters": [
            "in": "query",
            "name": "filter",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Attribute-based filtering parameters according to ETSI GS MEC 009"
          },
          {
            "in": "query",
            "name": "all_fields",
            "schema": {
              "type": "string"
Elian Kraja's avatar
Elian Kraja committed
            },
            "required": false,
            "description": "Include all complex attributes in the response."
          },
          {
            "in": "query",
            "name": "fields",
            "schema": {
              "type": "string"
Elian Kraja's avatar
Elian Kraja committed
            },
            "required": false,
            "description": "Complex attributes of AppPkgInfo to be included into the response"
          },
          {
            "in": "query",
            "name": "exclude_fields",
            "schema": {
              "type": "string"
Elian Kraja's avatar
Elian Kraja committed
            },
            "required": false,
            "description": "Complex attributes of AppPkgInfo to be excluded from the response."
          },
          {
            "in": "query",
            "name": "exclude_default",
            "schema": {
              "type": "string"
Elian Kraja's avatar
Elian Kraja committed
            },
            "required": false,
            "description": "Indicates to exclude the following complex attributes of AppPkgInfo from the response."
        ],
        "responses": {
          "200": {
            "description": "Array the representations of zero or more application instances",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AppInstanceInfo"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "406": {
            "$ref": "#/components/responses/406"
          },
          "429": {
            "$ref": "#/components/responses/429"
        }
      }
    },
    "/app_instances/{appInstanceId}": {
      "parameters": [
        {
          "in": "path",
          "name": "appInstanceId",
          "description": "Identifier of an individual application instance",
          "schema": {
            "type": "string"
          },
          "required": true
        }
      ],
      "get": {
        "tags": [
          ""
        ],
        "summary": "Retrieves the information of an individual application instance via reading an individual application instance.",
        "description": "Retrieves the information of an individual application instance via reading an individual application instance.",
        "operationId": "appInstanceIdGET",
        "responses": {
          "200": {
            "description": "Contains a representation of the read resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppInstanceInfo"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "406": {
            "$ref": "#/components/responses/406"
          },
          "429": {
            "$ref": "#/components/responses/429"
Elian Kraja's avatar
Elian Kraja committed
      },
      "delete": {
        "tags": [
          ""
        ],
        "summary": "Deletes an  individual application instance resource.",
        "description": "Deletes an  individual application instance resource.",
        "operationId": "appInstanceIdDELETE",
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "406": {
            "$ref": "#/components/responses/406"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        }
      }
    },
    "/subscriptions": {
      "post": {
        "tags": [
          ""
        ],
        "summary": "subscribe to the notification of application instance operational state change",
        "description": "subscribe to the notification of application instance operational state change",
        "operationId": "appLcmSubscriptionsPOST",
        "parameters": [
          {
            "in": "query",
            "name": "subscriptionType",
            "description": "\"Query parameter to filter on a specific subscription type. Permitted values:\n\"AppInstanceStateChange\"\n\"AppLcmOpOccStateChange\"\n\"",
              "oneOf": [
                {
                  "$ref": "#/components/schemas/AppInst.SubscriptionType"
                },
                {
                  "$ref": "#/components/schemas/AppLcmOpOcc.SubscriptionType"
                }
              ]
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/AppInstSubscriptionRequest"
                  },
                  {
                    "$ref": "#/components/schemas/AppLcmOpOccSubscriptionRequest"
        "responses": {
          "201": {
            "description": "a representation of the created SubscriptionInfo.",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/AppInstSubscriptionInfo"
                      "$ref": "#/components/schemas/AppLcmOpOccSubscriptionInfo"
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "406": {
            "$ref": "#/components/responses/406"
          },
          "429": {
            "$ref": "#/components/responses/429"
      "get": {
        "tags": [
          ""
        ],
        "summary": "Retrieves the information of multiple subscriptions to notifications related to an application instance.",
        "description": "Retrieves the information of multiple subscriptions to notifications related to an application instance.",
        "operationId": "appLcmSubscriptionsGET",
        "parameters": [
          {
            "in": "query",
            "name": "subscriptionType",
            "description": "Permitted values: AppInstanceStateChange or  AppLcmOpOccStateChange",
            "schema": {
              "type": "string"
            },
        "responses": {
          "200": {
            "description": " List of all subscriptions is returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionLinkList"
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "406": {
            "$ref": "#/components/responses/406"
          },
          "429": {
            "$ref": "#/components/responses/429"
      }
    },
    "/subscriptions/{subscriptionId}": {
      "parameters": [
        {
          "in": "path",
          "name": "subscriptionId",
          "description": "Represents an individual subscription to notification related to an application instance",
          "schema": {
            "type": "string"
          },
          "required": true
        }
      ],
      "get": {
        "tags": [
          ""
        ],
        "summary": "Used to represent an individual subscription to notifications about application package changes.",
        "description": "Used to represent an individual subscription to notifications about application package changes.",
        "operationId": "individualSubscriptionGET",
        "parameters": [
          {
            "in": "query",
            "name": "subscriptionType",
            "description": "Permitted values: AppInstanceStateChange or  AppLcmOpOccStateChange",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Representation of the resource.",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/AppInstSubscriptionInfo"
                    },
                    {
                      "$ref": "#/components/schemas/AppLcmOpOccSubscriptionInfo"
                    }
                  ]
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "406": {
            "$ref": "#/components/responses/406"
          },
          "429": {
            "$ref": "#/components/responses/429"
        "summary": "Deletes the individual subscription to notifications about application package changes in MEO.",
        "description": "Deletes the individual subscription to notifications about application package changes in MEO.",
        "operationId": "individualSubscriptionDELETE",
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
      }
    },
    "/user_defined_notification": {
      "post": {
        "tags": [
          ""
        ],
        "summary": "Delivers a notification from the application lifecycle management resource to the subscriber.",
        "description": "Delivers a notification from the application lifecycle management resource to the subscriber.",
        "operationId": "appInstNotificationPOST",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
Elian Kraja's avatar
Elian Kraja committed
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/AppInstNotification"
                  },
                  {
                    "$ref": "#/components/schemas/AppLcmOpOccNotification"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "406": {
            "$ref": "#/components/responses/406"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        }
      }
    },
    "/app_instances/{appInstanceId}/instantiate": {
      "parameters": [
        {
          "in": "path",
          "name": "appInstanceId",
          "description": "Identifier of an individual application instance",
          "schema": {
            "type": "string"
          },
          "required": true
        }
      ],
      "post": {
        "tags": [
          ""
        ],
        "summary": "task of instantiating an application instance.",
        "description": "task of instantiating an application instance.",
        "operationId": "appLcmInstanciatePOST",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
Elian Kraja's avatar
Elian Kraja committed
              "schema": {
                "$ref": "#/components/schemas/InstantiateAppRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "accepted for processing, but the processing has not yet been completed."
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "406": {
            "$ref": "#/components/responses/406"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        }
      }
    },
    "/app_instances/{appInstanceId}/terminate": {
      "parameters": [
        {
          "in": "path",
          "name": "appInstanceId",
          "description": "Identifier of an individual application instance",
          "schema": {
            "type": "string"
          },
          "required": true
        }
      ],
      "post": {
        "tags": [
          ""
        ],
        "summary": "terminate an application instance.",
        "description": "terminate an application instance.",
        "operationId": "appLcmTerminatePOST",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
Elian Kraja's avatar
Elian Kraja committed
              "schema": {
                "$ref": "#/components/schemas/TerminateAppRequest"
              }
          }
        },
        "responses": {
          "202": {
            "description": "accepted for processing, but the processing has not yet been completed."
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "406": {
            "$ref": "#/components/responses/406"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        }
      }
    },
    "/app_instances/{appInstanceId}/operate": {
      "parameters": [
        {
          "in": "path",
          "name": "appInstanceId",
          "description": "Identifier of an individual application instance",
          "schema": {
            "type": "string"
          },
          "required": true
        }
      ],
      "post": {
        "tags": [
          ""
        ],
        "summary": "change the operational state, i.e. start or stop, of the application instance",
        "description": "change the operational state, i.e. start or stop, of the application instance",
        "operationId": "appLcmOperatePOST",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OperateAppRequest"
        },
        "responses": {
          "202": {
            "description": "accepted for processing, but the processing has not yet been completed."
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "406": {
            "$ref": "#/components/responses/406"
          },
          "409": {
            "$ref": "#/components/responses/409"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
      }
    },
    "/app_lcm_op_occs": {
      "get": {
        "tags": [
          ""
        ],
        "summary": "retrieves information of operation status about multiple application instance lifecycle management operation occurrences",
        "description": "retrieves information of operation status about multiple application instance lifecycle management operation occurrences",
        "operationId": "appLcmOpOccsGET",
Elian Kraja's avatar
Elian Kraja committed
        "parameters": [
            "in": "query",
            "name": "filter",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Attribute-based filtering parameters according to ETSI GS MEC 009"
          },
          {
            "in": "query",
            "name": "all_fields",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Include all complex attributes in the response."
          },
          {
            "in": "query",
            "name": "fields",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Complex attributes of AppPkgInfo to be included into the response"
          },
          {
            "in": "query",
            "name": "exclude_fields",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Complex attributes of AppPkgInfo to be excluded from the response."
          },
          {
            "in": "query",
            "name": "exclude_default",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Indicates to exclude the following complex attributes of AppPkgInfo from the response."
        "responses": {
          "200": {
            "description": "Status information for zero or more application instance lifecycle management operation occurrences was queried successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AppInstanceLcmOpOcc"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "406": {
            "$ref": "#/components/responses/406"
          },
          "429": {
            "$ref": "#/components/responses/429"
    "/app_lcm_op_occs/{appLcmOpOccId}": {
      "parameters": [
        {
          "in": "path",
          "name": "appLcmOpOccId",
          "description": "Identifies an individual application LCM operation occurrence",
          "schema": {
            "type": "string"
          },
          "required": true
        }
      ],
      "get": {
        "tags": [
          ""
        ],
        "summary": "reads the status information of an individual application LCM operation occurrence",
        "description": "reads the status information of an individual application LCM operation occurrence",
        "operationId": "appLcmOpOccsbyIdGET",
        "responses": {
          "200": {
            "description": "Information about an application LCM operation occurrence was read successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppInstanceLcmOpOcc"
                }
              }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "406": {
            "$ref": "#/components/responses/406"
          },
          "429": {
            "$ref": "#/components/responses/429"
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AppInstanceLcmOpOcc": {
        "description": "'This data type represents an application lifecycle management operation occurrence'",
        "type": "object",
        "required": [
          "id",
          "operationState",
          "stateEnteredTime",
          "startTime",
          "lcmOperation",
          "_links"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/AppInstanceLcmOpOcc.Id"
          },
          "operationState": {
            "$ref": "#/components/schemas/OperationState"
          },
          "stateEnteredTime": {
            "$ref": "#/components/schemas/TimeStamp"
          },
          "startTime": {
            "$ref": "#/components/schemas/TimeStamp"
          },
          "lcmOperation": {
            "$ref": "#/components/schemas/LcmOperation"
          },
          "operationParams": {
            "$ref": "#/components/schemas/OperationParams"
          },
          "_links": {
            "$ref": "#/components/schemas/AppInstanceLcmOpOcc.links"
        }
      },
      "AppInstanceLcmOpOcc.Id": {
        "description": "'Identifier of the subscription to application LCM operation occurrence notification'",
        "type": "string"
      },
      "OperationParams": {
        "description": "'Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation.'",
        "type": "string",
        "enum": [
          "INSTANTIATE",
          "OPERATE",
          "TERMINATE"
        ]
      },
      "AppInstanceLcmOpOcc.links": {
        "description": "Links to resources related to this resource.",
        "type": "object",
        "required": [
          "self",
          "appInstance"
        ],
        "properties": {
          "self": {
            "$ref": "#/components/schemas/LinkType"
          },
          "appInstance": {
            "$ref": "#/components/schemas/LinkType"
        }
      },
      "SubscriptionLinkList": {
        "description": "'The data type represents a subscription link list of notification on application lifecycle management. '",
        "type": "object",
        "required": [
          "_links"
        ],
        "properties": {
          "_links": {
            "$ref": "#/components/schemas/SubscriptionLinkList.links"
        }
      },
      "SubscriptionLinkList.links": {
        "description": "Links to resources related to this resource.",
        "type": "object",
        "required": [
          "self"
        ],
        "properties": {
          "self": {
            "$ref": "#/components/schemas/LinkType"
          },
          "subscriptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionLinkList.links.subscriptions"
        }
      },
      "SubscriptionLinkList.links.subscriptions": {
        "description": "A link list to the subscriptions",
        "type": "object",
        "required": [
          "href",
          "subscriptionType"
        ],
        "properties": {
          "href": {
            "type": "string",
            "format": "uri"
          },
          "subscriptionType": {
            "type": "string",
            "format": "enum",
            "enum": [
              "AppInstanceStateChange",
              "AppLcmOpOccStateChange"
            ]
        }
      },
      "AppLcmOpOccSubscriptionInfo": {
        "description": "'This data type represents a subscription to notifications of application life cycle management operation occurrence'",
        "type": "object",
        "required": [
          "id",
          "subscriptionType",
          "callbackUri",
          "_links"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/AppLcmOpOccSubscriptionInfo.Id"
          },
          "subscriptionType": {
            "$ref": "#/components/schemas/AppLcmOpOcc.SubscriptionType"
          },
          "callbackUri": {
            "$ref": "#/components/schemas/CallbackUri"
          },
          "_links": {
            "$ref": "#/components/schemas/AppLcmOpOccSubscriptionInfo.links"
        }
      },
      "AppLcmOpOccSubscriptionInfo.Id": {
        "description": "''",
        "type": "string"
      },
      "AppLcmOpOcc.SubscriptionType": {
        "description": "Shall be set to AppLcmOpOccStateChange.",
        "type": "string",
        "enum": [
          "AppLcmOpOccStateChange"
        ]
      },
      "AppLcmOpOccSubscriptionInfo.links": {
        "description": "Links to resources related to this resource.",
        "type": "object",