openapi: 3.1.0 info: title: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management' 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 url: https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api email: cti_support@etsi.org version: '2.1.1' jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema 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 tags: - name: app-pkgm description: App Package management - name: app-pkgm-notifications description: App Package management notifications servers: - url: https://localhost/app_pkgm/v1 variables: {} paths: /app_packages: post: tags: - app-pkgm summary: 'Create a resource for on-boarding an application package to a MEO' description: Create a resource for on-boarding an application package to a MEO operationId: app_packagesPOST parameters: [] requestBody: description: Resource to be created content: application/json: schema: $ref: '#/components/schemas/CreateAppPkg' required: true responses: '201': description: Successful response for resource creation headers: {} content: application/json: schema: type: array items: $ref: '#/components/schemas/AppPkgInfo' description: '' contentMediaType: application/json '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '401': description: 'Unauthorized : used when the client did not submit credentials.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: 'Forbidden : operation is not allowed given the current status of the resource.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '406': description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests : used when a rate limiter has triggered.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' deprecated: false get: tags: - app-pkgm 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: app_packagesGET parameters: - name: filter in: query description: Attribute-based filtering parameters according to ETSI GS MEC 009 style: form explode: true schema: type: string - name: all_fields in: query description: Include all complex attributes in the response. style: form explode: true schema: type: string - name: fields in: query description: Complex attributes of AppPkgInfo to be included into the response style: form explode: true schema: type: string - name: exclude_fields in: query description: Complex attributes of AppPkgInfo to be excluded from the response. style: form explode: true schema: type: string - name: exclude_default in: query description: Indicates to exclude the following complex attributes of AppPkgInfo from the response. style: form explode: true schema: type: string responses: '200': description: Contains a representation of the application package resource headers: {} content: application/json: schema: type: array items: $ref: '#/components/schemas/AppPkgInfo' description: '' contentMediaType: application/json '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '401': description: 'Unauthorized : used when the client did not submit credentials.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: 'Forbidden : operation is not allowed given the current status of the resource.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '406': description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests : used when a rate limiter has triggered.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] /app_packages/{appPkgId}: get: tags: - app-pkgm summary: 'Queries the information related to individual application package resources' description: Queries the information related to individual application package resources operationId: app_packageGET parameters: - name: appPkgId in: path description: Identifier of an individual application package resource required: true style: simple schema: type: string responses: '200': description: Contains a representation of the application package resource headers: {} content: application/json: schema: $ref: '#/components/schemas/AppPkgInfo' '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '401': description: 'Unauthorized : used when the client did not submit credentials.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: 'Forbidden : operation is not allowed given the current status of the resource.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '406': description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests : used when a rate limiter has triggered.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' deprecated: false delete: tags: - app-pkgm summary: 'Deletes an individual application package resources' description: Deletes an individual application package resources operationId: app_packageDELETE parameters: - name: appPkgId in: path description: Identifier of an individual application package resource required: true style: simple schema: type: string responses: '204': description: No Content headers: {} content: {} '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '401': description: 'Unauthorized : used when the client did not submit credentials.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: 'Forbidden : operation is not allowed given the current status of the resource.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '406': description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests : used when a rate limiter has triggered.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' deprecated: false patch: tags: - app-pkgm summary: 'Updates the operational state of an individual application package resource' description: Updates the operational state of an individual application package resources operationId: app_packagePATCH parameters: - name: appPkgId in: path description: Identifier of an individual application package resource required: true style: simple schema: type: string requestBody: description: Operational state to be set content: application/json: schema: $ref: '#/components/schemas/AppPkgInfoModifications' required: true responses: '200': description: Shows that the operation has been completed successfully headers: {} content: application/json: schema: $ref: '#/components/schemas/AppPkgInfoModifications' '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '401': description: 'Unauthorized : used when the client did not submit credentials.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: 'Forbidden : operation is not allowed given the current status of the resource.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '406': description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '409': description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests : used when a rate limiter has triggered.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] /subscriptions: post: tags: - app-pkgm summary: 'Subscribe to notifications about on-boarding an application package' description: Subscribe to notifications about on-boarding an application package operationId: subscriptionsPOST parameters: [] requestBody: description: The input parameters of subscribe operation to notifications content: application/json: schema: $ref: '#/components/schemas/AppPkgSubscription' required: true responses: '201': description: Successful response for created subscription headers: {} content: application/json: schema: $ref: '#/components/schemas/AppPkgSubscriptionInfo' '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '401': description: 'Unauthorized : used when the client did not submit credentials.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: 'Forbidden : operation is not allowed given the current status of the resource.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '406': description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests : used when a rate limiter has triggered.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' callbacks: notification: '{$request.body#/subscription.href}': post: summary: 'Callback POST used to send a notification' description: ' The notification is triggered when a new application package is onboarded' operationId: notificationPOST requestBody: description: Subscription notification required: true content: application/json: schema: $ref: '#/components/schemas/AppPkgNotification' responses: '204': description: "No content" get: tags: - app-pkgm summary: 'used to retrieve the information of subscriptions to individual application package resource in MEO' description: used to retrieve the information of subscriptions to individual application package resource in MEO package operationId: subscriptionsGET parameters: [] responses: '200': description: List of zero or more subscriptions headers: {} content: application/json: schema: $ref: '#/components/schemas/AppPkgSubscriptionLinkList' '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '401': description: 'Unauthorized : used when the client did not submit credentials.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: 'Forbidden : operation is not allowed given the current status of the resource.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '406': description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests : used when a rate limiter has triggered.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] /subscriptions/{subscriptionId}: get: tags: - app-pkgm 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: - name: subscriptionId in: path description: Identifier of an individual subscription to notifications about application package changes required: true style: simple schema: type: string responses: '200': description: Representation of the resource. headers: {} content: application/json: schema: $ref: '#/components/schemas/AppPkgSubscriptionInfo' '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '401': description: 'Unauthorized : used when the client did not submit credentials.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: 'Forbidden : operation is not allowed given the current status of the resource.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '406': description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests : used when a rate limiter has triggered.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' deprecated: false delete: tags: - app-pkgm 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 parameters: - name: subscriptionId in: path description: Identifier of an individual subscription to notifications about application package changes required: true style: simple schema: type: string responses: '204': description: No Content headers: {} content: {} '401': description: 'Unauthorized : used when the client did not submit credentials.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: 'Forbidden : operation is not allowed given the current status of the resource.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests : used when a rate limiter has triggered.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] /app_packages/{appPkgId}/appd: get: tags: - app-pkgm summary: 'Reads the content of the AppD of on-boarded individual application package resources.' description: Reads the content of the AppD of on-boarded individual application package resources. operationId: appPkgIdGET parameters: - name: appPkgId in: path description: Identifier of an on-boarded individual application package required: true style: simple schema: type: string - name: filter in: query description: Attribute-based filtering parameters according to ETSI GS MEC 009 style: form explode: true schema: type: string - name: all_fields in: query description: Include all complex attributes in the response. style: form explode: true schema: type: string - name: fields in: query description: Complex attributes of AppPkgInfo to be included into the response style: form explode: true schema: type: string - name: exclude_fields in: query description: Complex attributes of AppPkgInfo to be excluded from the response. style: form explode: true schema: type: string - name: exclude_default in: query description: Indicates to exclude the following complex attributes of AppPkgInfo from the response. style: form explode: true schema: type: string responses: '200': description: Content of the AppD is returned. headers: {} content: text/plain: schema: $ref: '#/components/schemas/AppD' application/zip: {} '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '401': description: 'Unauthorized : used when the client did not submit credentials.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: 'Forbidden : operation is not allowed given the current status of the resource.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '406': description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests : used when a rate limiter has triggered.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] /onboarded_app_packages/{appDId}/appd: get: tags: - app-pkgm summary: 'Reads the content of the AppD of on-boarded individual application package resources.' description: Reads the content of the AppD of on-boarded individual application package resources. operationId: appDGET parameters: - name: appDId in: path description: Identifier of an application descriptor required: true style: simple schema: type: string - name: filter in: query description: Attribute-based filtering parameters according to ETSI GS MEC 009 style: form explode: true schema: type: string - name: all_fields in: query description: Include all complex attributes in the response. style: form explode: true schema: type: string - name: fields in: query description: Complex attributes of AppPkgInfo to be included into the response style: form explode: true schema: type: string - name: exclude_fields in: query description: Complex attributes of AppPkgInfo to be excluded from the response. style: form explode: true schema: type: string - name: exclude_default in: query description: Indicates to exclude the following complex attributes of AppPkgInfo from the response. style: form explode: true schema: type: string responses: '200': description: Content of the AppD is returned. headers: {} content: text/plain: schema: $ref: '#/components/schemas/AppD' application/zip: {} '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '401': description: 'Unauthorized : used when the client did not submit credentials.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: 'Forbidden : operation is not allowed given the current status of the resource.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '406': description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests : used when a rate limiter has triggered.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] /app_packages/{appPkgId}/package_content: get: tags: - app-pkgm summary: 'Fetch the onboarded application package content identified by appPkgId or appDId.' description: Fetch the onboarded application package content identified by appPkgId or appDId. operationId: appPkgGET parameters: - name: appPkgId in: path description: Identifier of an on-boarded individual application package required: true style: simple schema: type: string responses: '200': description: The payload body shall contain a copy of the file representing the AppD or a ZIP file that contains the file or multiple files representing the AppD. headers: {} content: application/zip: {} '206': description: Partial content headers: {} content: application/zip: {} '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '401': description: 'Unauthorized : used when the client did not submit credentials.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: 'Forbidden : operation is not allowed given the current status of the resource.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '416': description: Range Not Satisfiable . headers: {} content: {} '406': description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests : used when a rate limiter has triggered.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' deprecated: false put: tags: - app-pkgm summary: 'Uploads the content of application package.' description: Uploads the content of application package. operationId: appPkgPUT parameters: - name: appPkgId in: path description: Identifier of an on-boarded individual application package required: true style: simple schema: type: string requestBody: description: '' content: application/zip: {} required: false responses: '202': description: The application package has been accepted for uploading, but the processing has not been completed. headers: {} content: {} '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '401': description: 'Unauthorized : used when the client did not submit credentials.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: 'Forbidden : operation is not allowed given the current status of the resource.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '406': description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '409': description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests : used when a rate limiter has triggered.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] /onboarded_app_packages/{appDId}/package_content: get: tags: - app-pkgm summary: 'Fetch the onboarded application package content identified by appPkgId or appDId.' description: Fetch the onboarded application package content identified by appPkgId or appDId. operationId: appDIdGET parameters: - name: appDId in: path description: Identifier of an application descriptor required: true style: simple schema: type: string responses: '200': description: The payload body shall contain a copy of the file representing the AppD or a ZIP file that contains the file or multiple files representing the AppD. headers: {} content: {} '206': description: Partial content headers: {} content: {} '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '401': description: 'Unauthorized : used when the client did not submit credentials.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: 'Forbidden : operation is not allowed given the current status of the resource.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '416': description: Range Not Satisfiable . headers: {} content: {} '406': description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests : used when a rate limiter has triggered.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' deprecated: false put: tags: - app-pkgm summary: 'Fetch the onboarded application package content identified by appPkgId or appDId.' description: Uploads the content of application package. operationId: appDIdPUT parameters: - name: appDId in: path description: Identifier of an application descriptor required: true style: simple schema: type: string requestBody: description: '' content: application/zip: {} required: false responses: '202': description: The application package has been accepted for uploading, but the processing has not been completed. headers: {} content: {} '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '401': description: 'Unauthorized : used when the client did not submit credentials.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: 'Forbidden : operation is not allowed given the current status of the resource.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '406': description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '409': description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests : used when a rate limiter has triggered.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] ############################################################################### # Notification endpoint AppPkgNotification # ############################################################################### /user_defined_notification: post: tags: - app-pkgm-notifications summary: 'Registers a notification endpoint to notify application package operations' description: Registers a notification endpoint to notify application package operations operationId: app_pkg_notificationPOST parameters: [] requestBody: description: Notification endpoint to be created content: application/json: schema: $ref: '#/components/schemas/AppPkgNotification' required: true responses: '204': description: No Content headers: {} content: {} '401': description: 'Unauthorized : used when the client did not submit credentials.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: 'Forbidden : operation is not allowed given the current status of the resource.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '429': description: 'Too Many Requests : used when a rate limiter has triggered.' headers: {} content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] components: schemas: AppD: title: AppD required: - appDId - appDVersion - appDescription - appName - appProvider - appSoftVersion - mecVersion - swImageDescriptor - virtualComputeDescriptor type: object properties: appDId: type: string description: Identifier of this MEC application descriptor. This attribute shall be globally unique. See note 1. appDNSRule: minItems: 0 type: array items: $ref: '#/components/schemas/DNSRuleDescriptor' description: Describes DNS rules the MEC application requires. appDVersion: type: string description: Identifies the version of the application descriptor. appDescription: type: string description: Human readable description of the MEC application. appExtCpd: minItems: 0 type: array items: $ref: '#/components/schemas/AppExternalCpd' description: Describes external interface(s) exposed by this MEC application. appFeatureOptional: minItems: 0 type: array items: $ref: '#/components/schemas/FeatureDependency' description: Describes features a MEC application may use if available. appFeatureRequired: minItems: 0 type: array items: $ref: '#/components/schemas/FeatureDependency' description: Describes features a MEC application requires to run. appInfoName: type: string description: Human readable name for the MEC application. appLatency: $ref: '#/components/schemas/LatencyDescriptor' appName: type: string description: Name to identify the MEC application. appProvider: type: string description: Provider of the application and of the AppD. appServiceOptional: minItems: 0 type: array items: $ref: '#/components/schemas/ServiceDependency' description: Describes services a MEC application may use if available. appServiceProduced: minItems: 0 type: array items: $ref: '#/components/schemas/ServiceDescriptor' description: Describes services a MEC application is able to produce to the platform or other MEC applications. Only relevant for service-producing apps. appServiceRequired: minItems: 0 type: array items: $ref: '#/components/schemas/ServiceDependency' description: Describes services a MEC application requires to run. appSoftVersion: type: string description: Identifies the version of software of the MEC application. appTrafficRule: minItems: 0 type: array items: $ref: '#/components/schemas/TrafficRuleDescriptor' description: Describes traffic rules the MEC application requires. changeAppInstanceStateOpConfig: type: string description: NFV mecVersion: minItems: 1 type: array items: type: string description: Identifies version(s) of MEC system compatible with the MEC application described in this version of the AppD. swImageDescriptor: type: string description: Ref NFV terminateAppInstanceOpConfig: type: string description: NFV transportDependencies: minItems: 0 type: array items: $ref: '#/components/schemas/TransportDependency' description: Transports, if any, that this application requires to be provided by the platform. These transports will be used by the application to deliver services provided by this application. Only relevant for service-producing apps. See note 2. virtualComputeDescriptor: type: string description: Ref NFV virtualStorageDescriptor: minItems: 0 type: array items: type: string description: Defines descriptors of virtual storage resources to be used by the MEC application. AppExternalCpd: title: AppExternalCpd required: - inherited_attributes type: object properties: inherited_attributes: type: object description: All attributes inherited from Cpd. virtualNetworkInterfaceRequirements: minItems: 0 type: array items: type: string description: Specifies requirements on a virtual network interface realizing the CPs instantiated from this CPD. AppPkgInfo: title: AppPkgInfo required: - id - appDId - appName - appSoftwareVersion - appDVersion - checksum - softwareImages - onboardingState - operationalState - usageState - _links type: object properties: id: type: string description: Identifier of the onboarded application package. appDId: type: string description: Identifier of this MEC application descriptor. This attribute shall be globally unique. appProvider: type: string description: Provider of the application and of the AppD. appName: type: string description: Name to identify the MEC application. appSoftwareVersion: type: string description: Software version of the application. This is updated when there is any change to the software in the onboarded application package. appDVersion: type: string description: Identifies the version of the application descriptor. checksum: $ref: '#/components/schemas/Checksum' softwareImages: type: object description: Information of application software image in application package. Type is TBD additionalArtifacts: type: object description: Additional information of application package artifacts that are not application software images. Type is TBD onboardingState: $ref: '#/components/schemas/OnboardingState' operationalState: $ref: '#/components/schemas/AppPkg.OperationalState' usageState: $ref: '#/components/schemas/UsageState' userDefinedData: type: object description: "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'" _links: $ref: '#/components/schemas/AppPkgInfo.links' description: "'The data type AppPkgInfo represents the parameters for an application package resource'" AppPkgInfoModifications: title: AppPkgInfoModifications required: - operationState type: object properties: operationState: $ref: '#/components/schemas/OperationState' description: "'The data type represents the operational state for an application package resource'" AppPkg.OperationalState: title: AppPkg.OperationalState enum: - ENABLED - DISABLED type: string description: 'Operational state of the onboarded application package: •ENABLED: the application package can be used for instantiation of new application instances. •DISABLED: the application package cannot be used for further application instantiation requests.' examples: - ENABLED OnboardingState: title: OnboardingState enum: - CREATED - UPLOADING - PROCESSING - ONBOARDED type: string description: Onboarding state of application package examples: - CREATED UsageState: title: UsageState enum: - IN_USE - NOT_IN_USE type: string description: Usage state of the onboarded instance of the application package examples: - IN_USE AppPkgInfo.links: title: AppPkgInfo.links required: - self - appD - appPkgContent type: object properties: self: $ref: '#/components/schemas/LinkType' appD: $ref: '#/components/schemas/LinkType' appPkgContent: $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. AppPkgNotification: title: AppPkgNotification required: - id - notificationType - subscriptionId - timeStamp - appPkgId - appDId - operationalState - _links type: object properties: id: type: string description: "''" notificationType: $ref: '#/components/schemas/AppPkg.NotificationType' subscriptionId: type: string description: Identifier of the subscription related to this notification. timeStamp: $ref: '#/components/schemas/TimeStamp' appPkgId: type: string description: Identifier of the onboarded application package. appDId: type: string description: Identifier of this MEC application descriptor. This attribute shall be globally unique. operationalState: $ref: '#/components/schemas/OperationalState' _links: $ref: '#/components/schemas/AppPkgNotification.links' description: "'This data type represents an application package management notification for informing the subscribers about onboarding application package resources. The notification is triggered when a new application package is onboarded'" AppPkg.NotificationType: title: AppPkg.NotificationType enum: - AppPackageOnBoarded - AppPacakgeEnabled - AppPacakgeDisabled - AppPackageDeleted type: string description: Discriminator for the different notification types examples: - AppPackageOnBoarded AppPkgNotification.links: title: AppPkgNotification.links required: - subscription type: object properties: subscription: $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. AppPkgSubscriptionInfo: title: AppPkgSubscriptionInfo required: - id - subscriptionType - callbackUri - _links type: object properties: id: type: string description: "''" subscriptionType: $ref: '#/components/schemas/AppPkg.SubscriptionType' callbackUri: type: string description: The URI of the endpoint for the notification to be sent to. _links: $ref: '#/components/schemas/AppPkgSubscriptionInfo.links' description: "'The data type represents a subscription to notification of application package management for the onboarding, or operational state change of application package'" AppPkg.SubscriptionType: title: AppPkg.SubscriptionType enum: - AppPackageOnBoarding - AppPacakgeOperationChange - AppPackageDeletion type: string description: Subscribed notification type. examples: - AppPackageOnBoarding AppPkgSubscriptionInfo.links: title: AppPkgSubscriptionInfo.links required: - self type: object properties: self: $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. AppPkgSubscriptionLinkList: title: AppPkgSubscriptionLinkList required: - _links type: object properties: _links: $ref: '#/components/schemas/AppPkgSubscriptionLinkList.links' description: "'The data type represents a subscription link list of notification on application package management'" AppPkgSubscriptionLinkList.links: title: AppPkgSubscriptionLinkList.links required: - self type: object properties: self: $ref: '#/components/schemas/LinkType' subscriptions: type: array items: $ref: '#/components/schemas/Subscriptions.AppPkgSubscription' description: '' description: Links to resources related to this resource. Subscriptions.AppPkgSubscription: title: Subscriptions.AppPkgSubscription required: - href - subsctiptionType type: object properties: href: type: string description: The URI referring to the subscription. subsctiptionType: $ref: '#/components/schemas/SubsctiptionType.AppPkg' description: "'The data type represents the input parameters of \"subscription operation\" to notification of application package management for the onboarding, or operational state change of application package.'" AppPkgSubscription: title: AppPkgSubscription required: - callbackUri - subsctiptionType type: object properties: callbackUri: type: string description: The URI of the endpoint for the notification to be sent to. subsctiptionType: $ref: '#/components/schemas/SubsctiptionType.AppPkg' appPkgFilter: type: array items: type: string description: '' description: "'The data type represents the input parameters of \"subscription operation\" to notification of application package management for the onboarding, or operational state change of application package.'" SubsctiptionType.AppPkg: title: SubsctiptionType.AppPkg enum: - AppPackageOnBoarding - AppPacakgeOperationChange - AppPackageDeletion type: string description: "'Subscribed notification type'" examples: - AppPackageOnBoarding Checksum: title: Checksum required: - algorithm - hash type: object properties: algorithm: type: string description: Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512. hash: type: string description: "'String 1 The hexadecimal value of the checksum'" CreateAppPkg: title: CreateAppPkg required: - appPkgName - appPkgPath - appPkgVersion - checksum type: object properties: appPkgName: type: string description: Name of the application package to be onboarded. appPkgPath: type: string appPkgVersion: type: string description: >- Version of the application package to be onboarded. The appPkgName with appPkgVersion can be used to uniquely identify the application package. appProvider: type: string description: The provider's name of the application package to be onboarded. checksum: $ref: '#/components/schemas/Checksum' userDefinedData: type: object description: "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'" DNSRuleDescriptor: title: DNSRuleDescriptor required: - dnsRuleId - domainName - ipAddress - ipAddressType type: object properties: dnsRuleId: type: string description: Identifies the DNS Rule domainName: type: string description: FQDN of the DNS rule ipAddress: type: string description: IP address given by the DNS rule ipAddressType: $ref: '#/components/schemas/IpAddressType' ttl: type: integer description: Time-to-live value contentEncoding: int32 IpAddressType: title: IpAddressType enum: - IP_V6 - IP_V4 type: string description: Specifies the IP address type examples: - IP_V6 FeatureDependency: title: FeatureDependency required: - featureName - version type: object properties: featureName: type: string description: The name of the feature, for example, UserApps, UEIdentity, etc. version: type: string description: The version of the feature. InterfaceDescriptor: title: InterfaceDescriptor required: - interfaceType type: object properties: dstIPAddress: type: string description: If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface. dstMACAddress: type: string description: If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface. interfaceType: $ref: '#/components/schemas/InterfaceType' srcMACAddress: type: string description: If the interface type is MAC, the source address identifies the MAC address of the interface. tunnelInfo: $ref: '#/components/schemas/TunnelInfo' InterfaceType: title: InterfaceType enum: - TUNNEL - MAC - IP type: string description: Type of interface. examples: - TUNNEL LatencyDescriptor: title: LatencyDescriptor required: - maxLatency type: object properties: maxLatency: type: integer description: The value of the maximum latency in nano seconds tolerated by the MEC application. See note. contentEncoding: int32 LinkType: title: LinkType required: - href type: object properties: href: type: string description: URI referring to a resource ProblemDetails: title: ProblemDetails type: object properties: detail: type: string description: A human-readable explanation specific to this occurrence of the problem instance: type: string description: A URI reference that identifies the specific occurrence of the problem status: type: integer description: The HTTP status code for this occurrence of the problem contentEncoding: int32 title: type: string description: A short, human-readable summary of the problem type type: type: string description: A URI reference according to IETF RFC 3986 that identifies the problem type ServiceDependency: title: ServiceDependency required: - serName - version type: object properties: requestedPermissions: minItems: 0 type: array items: type: string description: >- Requested permissions regarding the access of the application to the service. See clause 8.2 of ETSI GS MEC 009 [4]. The format of this attribute is left for the data model design stage. serCategory: type: object description: See MEC011 serName: type: string description: The name of the service, for example, RNIS, LocationService, etc. serTransportDependencies: minItems: 0 type: array items: $ref: '#/components/schemas/TransportDependency' description: Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note. version: type: string description: The version of the service. ServiceDescriptor: title: ServiceDescriptor required: - serName - version type: object properties: serName: type: string description: The name of the service, for example, RNIS, LocationService, etc. serCategory: type: object description: See MEC011 version: type: string description: The version of the service. transportsSupported: $ref: '#/components/schemas/TransportsSupported' description: "'The ServiceDescriptor data type describes a MEC service produced by a service-providing MEC application.'" TransportsSupported: title: TransportsSupported type: object properties: transport: $ref: '#/components/schemas/TransportDescriptor' serializers: minItems: 1 type: array items: type: string description: "'Information about the serializers in this binding, as defined in the SerializerTypes type in ETSI GS MEC 011 '" description: "'Indicates transports and serialization formats supported made available to the service-consuming application. Defaults to REST + JSON if absent.'" TimeStamp: title: TimeStamp required: - nanoSeconds - seconds type: object properties: nanoSeconds: type: integer description: The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. contentEncoding: int32 seconds: type: integer description: The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. contentEncoding: int32 TrafficFilter: title: TrafficFilter type: object properties: dSCP: type: integer description: Used to match all IPv4 packets that have the same DSCP. contentEncoding: int32 dstAddress: minItems: 0 type: array items: type: string description: A IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes. dstPort: minItems: 0 type: array items: type: string description: A port or a range of ports. dstTunnelPort: minItems: 0 type: array items: type: string description: Used for GTP tunnel based traffic rule. protocol: minItems: 0 type: array items: type: string description: Specify the protocol of the traffic filter. qCI: type: integer description: Used to match all packets that have the same QCI. contentEncoding: int32 srcAddress: minItems: 0 type: array items: type: string description: An IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes. srcPort: minItems: 0 type: array items: type: string description: A port or a range of ports. srcTunnelAddress: minItems: 0 type: array items: type: string description: Used for GTP tunnel based traffic rule. srcTunnelPort: minItems: 0 type: array items: type: string description: Used for GTP tunnel based traffic rule. tC: type: integer description: Used to match all IPv6 packets that have the same TC. contentEncoding: int32 tag: minItems: 0 type: array items: type: string description: Used for tag based traffic rule. tgtTunnelAddress: minItems: 0 type: array items: type: string description: Used for GTP tunnel based traffic rule. TrafficRuleDescriptor: title: TrafficRuleDescriptor required: - action - filterType - priority - trafficFilter - trafficRuleId type: object properties: action: $ref: '#/components/schemas/Action' dstInterface: maxItems: 2 minItems: 0 type: array items: $ref: '#/components/schemas/InterfaceDescriptor' description: '' filterType: $ref: '#/components/schemas/FilterType' priority: type: integer description: Priority of this traffic rule. If traffic rule conflicts, the one with higher priority take precedence. contentEncoding: int32 trafficFilter: minItems: 1 type: array items: $ref: '#/components/schemas/TrafficFilter' description: The filter used to identify specific flow/packets that need to be handled by the MEC host. trafficRuleId: type: string description: Identifies the traffic rule. Action: title: Action enum: - DROP - FORWARD_DECAPSULATED - FORWARD_AS_IS - PASSTHROUGH - DUPLICATED_DECAPSULATED - DUPLICATE_AS_IS type: string description: "'Identifies the action of the MEC host data plane, when a packet matches the trafficFilter.'" examples: - DROP FilterType: title: FilterType enum: - FLOW - PACKET type: string description: 'Definition of filter type: per FLOW or PACKET' examples: - FLOW TransportDependency: title: TransportDependency required: - labels - serializers - transport type: object properties: labels: minItems: 1 type: array items: type: string description: Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table. serializers: minItems: 1 type: array items: type: string description: Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport. transport: $ref: '#/components/schemas/TransportDescriptor' TransportDescriptor: title: TransportDescriptor required: - protocol - security - type - version type: object properties: protocol: type: string description: The name of the protocol used. Shall be set to HTTP for a REST API. security: type: object description: See MEC011 type: type: string version: type: string description: The version of the protocol used. TunnelInfo: title: TunnelInfo required: - tunnelDstAddress - tunnelSrcAddress - tunnelType type: object properties: tunnelDstAddress: type: string description: Destination address of the tunnel. tunnelSpecificData: type: string tunnelSrcAddress: type: string description: Source address of the tunnel. tunnelType: $ref: '#/components/schemas/TunnelType' TunnelType: title: TunnelType enum: - GTP-U - GRE type: string description: Type of tunnel. examples: - GTP-U OperationalState: title: OperationalState enum: - DISABLED - ENABLED type: string examples: - DISABLED OperationState: title: OperationState enum: - DISABLED - ENABLED type: string examples: - DISABLED security: - {}