ETSI MEC 040 MEC Federation Enablement API

The MEC Federation enablement API from ETSI GS MEC 040, which lets edge systems operated by different providers discover one another, exchange availability zone and system information, and federate so an application can run across operator boundaries.

OpenAPI Specification

MEC040_fedEnablement.yaml Raw ↑
openapi: 3.1.0
jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema
info:
  contact:
    url: https://forge.etsi.org/rep/mec/gs040-fed-enablement-api
  title: ETSI GS MEC 040 - MEC Federation enablement APIs
  description: 'The ETSI MEC ISG MEC040 Federation enablement API described using OpenAPI

    '
  license:
    name: BSD-3-Clause
    url: https://forge.etsi.org/legal-matters
  version: 3.1.1
servers:
- url: https://localhost/fed_enablement/v1
paths:
  /fed_resources/system_info:
    get:
      summary: Retrieve a list of system_info resources (see clause 6 for data model) of federation members.
      description: The GET method retrieves the information of a list of system_info resources of federation members. This method is typically used in the sequence of "MEC system discovery" as described in clause 5.2.2.2. The method shall comply with the URI query parameters, request and response data structures, and response codes, as specified in Tables 7.3.3.1-1 and 7.3.3.1-2.
      operationId: FedresourcesSysteminfoGET
      tags:
      - systemInfo
      parameters:
      - $ref: '#/components/parameters/Query.Systemid'
      - $ref: '#/components/parameters/Query.Systemname'
      - $ref: '#/components/parameters/Query.Systemprovider'
      responses:
        '200':
          description: It is used to indicate that the query for retrieving system_info resource(s) is successful. Response body containing one or multiple system_info resources shall be returned.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SystemInfo'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create new system_info resource for a given MEC system.
      description: "The POST method creates the information of system_info resources to the MEC federator. This method is typically used in the sequence of \"Registration of MEC system to the federation\" as described in clause 5.2.2.1. The method shall comply with the URI query parameters, request and response data structures, and response codes, as specified in Tables\_7.3.3.4-1 and 7.3.3.4-2."
      operationId: FedresourcesSysteminfoPOST
      tags:
      - systemInfo
      requestBody:
        description: Entity body in the request contains SystemInfo to be created. The attribute "systemId" shall be absent.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                SystemInfo:
                  $ref: '#/components/schemas/SystemInfo'
      responses:
        '201':
          description: 'It is used to indicate that the system_info resource is successfully created.


            The HTTP response includes a "Location" HTTP header that contains the URI of the created resource.'
          content:
            application/json:
              schema:
                type: object
                properties:
                  SystemInfo:
                    $ref: '#/components/schemas/SystemInfo'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      parameters: []
  /fed_resources/system_info/{systemId}:
    get:
      summary: Retrieve the system_info resource of the federation member with systemId as its system identifier.
      description: The GET method retrieves the system_info resource information. This method is typically used in the sequence of "MEC system discovery" as described in clause 5.2.2.2. The method shall comply with the URI query parameters, request and response data structures, and response codes, as specified in Tables 7.4.3.1-1 and 7.4.3.1-2.
      operationId: FedresourcesSysteminfoGETSystemid
      tags:
      - systemInfo
      responses:
        '200':
          description: It is used to indicate that the query for retrieving system_info resource is successful. Response body containing one system_info resource shall be returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  SystemInfo:
                    $ref: '#/components/schemas/SystemInfo'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      parameters:
      - name: systemId
        in: path
        required: true
        description: The unique identifier of the systemId.
        schema:
          type: string
    patch:
      summary: Update the system_info resource for a given MEC system.
      description: The PATCH method updates the information of system_info resources stored in the MEC federator through previous registration. This method is typically used in the sequence of "Update of MEC system to the federation" as described in clause 5.2.2.2. The method shall comply with the URI query parameters, request and response data structures, and response codes, as specified in Tables 7.4.3.3-1 and 7.4.3.3-2.
      operationId: FedresourcesSysteminfoPATCHSystemid
      tags:
      - systemInfo
      requestBody:
        description: It contains attributes to be update.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                SystemInfoUpdate:
                  $ref: '#/components/schemas/SystemInfoUpdate'
      responses:
        '200':
          description: It is used to indicate that the system_info resource is successfully updated.
          content:
            application/json:
              schema:
                type: object
                properties:
                  SystemInfo:
                    $ref: '#/components/schemas/SystemInfo'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      parameters:
      - name: systemId
        in: path
        required: true
        description: The unique identifier of the systemId.
        schema:
          type: string
    delete:
      summary: Delete the system_info resource for a given MEC system.
      description: The DELETE method deletes the information of system_info resources stored in the MEF. This method is typically used in the sequence of "Deregistration of MEC system to the federation" as described in clause 5.2.2.1.1. The method shall comply with the URI query parameters, request and response data structures, and response codes, as specified in Tables 7.4.3.5-1 and 7.4.3.5-2.
      operationId: FedresourcesSysteminfoDELETESystemid
      tags:
      - systemInfo
      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'
      parameters:
      - name: systemId
        in: path
        required: true
        description: The unique identifier of the systemId.
        schema:
          type: string
components:
  schemas:
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          format: uri
          description: A URI reference according to IETF RFC 3986 that identifies the problem type
        title:
          type: string
          description: A short, human-readable summary of the problem type
        status:
          type: integer
          format: uint32
          description: The HTTP status code for this occurrence of the problem
        detail:
          type: string
          description: A human-readable explanation specific to this occurrence of the problem
        instance:
          type: string
          format: uri
          description: A URI reference that identifies the specific occurrence of the problem
    Addresses:
      description: Entry point information of the service as one or more pairs of IP address and port. See note.
      type: object
      minItems: 0
      properties:
        host:
          description: Host portion of the address.
          type: string
        port:
          description: Port portion of the address.
          type: integer
      required:
      - host
      - port
    LinkType:
      type: object
      required:
      - href
      properties:
        href:
          type: string
          format: uri
          description: The hyperlink reference.
    EndPointInfo:
      x-etsi-ref: 8.1.5.3
      type: object
      properties:
        uris:
          description: Entry point information of the service as string, formatted according to URI syntax (see IETF RFC 3986 [8]). Shall be used for REST APIs. See note.
          type: array
          minItems: 0
          items:
            type: string
        fqdn:
          description: Fully Qualified Domain Name of the service. See note.
          type: array
          minItems: 0
          items:
            type: string
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/Addresses'
        alternative:
          description: "Entry point information of the service in a format defined by an implementation, or in an external specification. See\_note."
          type: object
      description: "|-\n  NOTE:\tExactly one of \"uris\", \"fqdn\", \"addresses\" or \"alternative\" shall be present."
    SystemInfo:
      x-etsi-ref: 6.2.2
      type: object
      properties:
        systemId:
          description: 'Identifier of the MEC system. For the uniqueness of the identifier across the federated MEC systems, UUID format [i.9] is recommended.


            Shall be absent in POST request, and present otherwise.'
          type: string
        systemName:
          description: The name of the MEC system. This is how the MEC system identifies other MEC systems
          type: string
        systemProvider:
          description: Provider of the MEC system.
          type: string
      required:
      - systemId
      - systemName
      - systemProvider
    SystemInfoUpdate:
      x-etsi-ref: 6.2.3
      type: object
      properties:
        systemName:
          description: The name of the MEC system. This is how the MEC system identifies other MEC systems.
          type: string
        endpoint:
          description: Endpoint information (e.g. URI, FQDN, IP address) of MEC federator.
          $ref: '#/components/schemas/EndPointInfo'
      description: "|-\n  NOTE:\tAt least one attribute shall exist."
    SystemUpdateNotificationSubscription:
      x-etsi-ref: 6.3.2
      type: object
      properties:
        subscriptionType:
          description: Shall be set to "SystemUpdateNotificationSubscription".
          type: string
        callbackReference:
          description: URI selected by the MEC orchestrator to receive notifications on the subscribed MEC system information updates in the MEC federation. This shall be included in both the request and the response.
          type: string
          format: uri
        _links:
          $ref: '#/components/schemas/_links'
        systemId:
          description: Identifier(s) to uniquely specify the target MEC system(s) for the subscription. If absent, the subscription should include all MEC systems in the MEC federation.
          type: array
          minItems: 0
          items:
            type: string
        expiryDeadline:
          description: The expiration time of the subscription determined by the MEC Federation Enablement Service.
          $ref: '#/components/schemas/TimeStamp'
      required:
      - subscriptionType
      - callbackReference
    SystemUpdateNotification:
      x-etsi-ref: 6.4.2
      type: object
      properties:
        notificationType:
          description: Shall be set to "SystemUpdateNotification".
          type: string
        updatedSystemInfo:
          description: Updated information of the MEC system(s) in the MEC federation.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/SystemInfo'
        _links:
          $ref: '#/components/schemas/_links1'
      required:
      - notificationType
      - updatedSystemInfo
      - _links
    TimeStamp:
      x-etsi-ref: 6.5.2
      type: object
      properties:
        seconds:
          description: The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.
          type: integer
          format: uint32
        nanoSeconds:
          description: The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.
          type: integer
          format: uint32
      required:
      - seconds
      - nanoSeconds
    _links:
      description: Object containing hyperlinks related to the resource. This shall only be included in the HTTP responses.
      type: object
      properties:
        self:
          description: Self-referring URI. The URI shall be unique within the MEC Federation Enablement API as it acts as an ID for the subscription (SubscriptionId).
          $ref: '#/components/schemas/LinkType'
      required:
      - self
    _links1:
      description: Object containing hyperlinks related to the resource.
      type: object
      properties:
        subscription:
          description: A link to the related subscription.
          $ref: '#/components/schemas/LinkType'
      required:
      - subscription
  responses:
    '200':
      description: OK
    '204':
      description: No Content
    '400':
      description: 'Bad Request: used to indicate that incorrect parameters were passed to the request.'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    '401':
      description: 'Unauthorized: used when the request is not authenticated, e.g. when the client did not submit credentials.'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    '403':
      description: 'Forbidden: operation is not allowed given the current status of the resource.'
      content:
        application/problem+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.'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    '412':
      description: 'Precondition failed: used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts when using PUT'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
  parameters:
    Query.Systemid:
      description: Identifier of the MEC system.
      name: systemid
      in: query
      required: false
      x-exportParamName: Query.Systemid
      schema:
        type: array
        items:
          type: string
    Query.Systemname:
      description: The name of the MEC system.
      name: systemname
      in: query
      required: false
      x-exportParamName: Query.Systemname
      schema:
        type: array
        items:
          type: string
    Query.Systemprovider:
      description: Provider of the MEC system.
      name: systemprovider
      in: query
      required: false
      x-exportParamName: Query.Systemprovider
      schema:
        type: array
        items:
          type: string