MecServiceMgmtApi.json 90.4 KB
Newer Older
      },
      "ProblemDetails": {
        "title": "ProblemDetails",
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "A URI reference according to IETF RFC 3986 that identifies the problem type"
            "type": "string",
            "description": "A short, human-readable summary of the problem type"
            "type": "integer",
            "description": "The HTTP status code for this occurrence of the problem",
            "contentEncoding": "int32"
            "type": "string",
            "description": "A human-readable explanation specific to this occurrence of the problem"
            "type": "string",
            "description": "A URI reference that identifies the specific occurrence of the problem"
kharimza's avatar
kharimza committed
      "SecurityInfo.OAuth2Info.GrantType": {
        "title": "SecurityInfo.OAuth2Info.GrantType",
        "enum": [
          "OAUTH2_AUTHORIZATION_CODE",
          "OAUTH2_IMPLICIT_GRANT",
          "OAUTH2_RESOURCE_OWNER",
          "OAUTH2_CLIENT_CREDENTIALS"
        ],
        "type": "string",
        "description": "OAuth 2.0 grant type",
        "examples": ["OAUTH2_CLIENT_CREDENTIALS"]
      },
      "SecurityInfo.OAuth2Info": {
        "title": "SecurityInfo.OAuth2Info",
        "required": ["grantTypes", "tokenEndpoint"],
        "type": "object",
        "properties": {
          "grantTypes": {
            "maxItems": 4,
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SecurityInfo.OAuth2Info.GrantType"
            },
            "description": "List of supported OAuth 2.0 grant types."
            "type": "string",
            "description": "The token endpoint",
            "examples": ["/mecSerMgmtApi/security/TokenEndPoint"]
        "description": "Parameters related to use of OAuth 2.0"
        "title": "SecurityInfo",
        "type": "object",
        "properties": {
          "oAuth2Info": {
            "$ref": "#/components/schemas/SecurityInfo.OAuth2Info"
          }
        },
        "description": "This type represents security information related to a transport"
        "title": "Self",
        "required": ["self"],
        "type": "object",
        "properties": {
          "self": {
            "$ref": "#/components/schemas/LinkType"
          }
        },
        "description": "Self-referring URI."
      },
      "SerAvailabilityNotificationSubscription": {
        "title": "SerAvailabilityNotificationSubscription",
        "required": ["subscriptionType", "callbackReference", "_links"],
        "type": "object",
        "properties": {
          "subscriptionType": {
            "type": "string",
            "description": "Shall be set to SerAvailabilityNotificationSubscription.",
            "examples": ["SerAvailabilityNotificationSubscription"]
          },
          "callbackReference": {
            "type": "string",
            "description": "URI selected by the MEC application instance to receive notifications on the subscribed MEC service availability information. This shall be included in both the request and the response."
          },
          "_links": {
            "$ref": "#/components/schemas/Self"
          },
          "filteringCriteria": {
kharimza's avatar
kharimza committed
            "$ref": "#/components/schemas/SerAvailabilityNotificationSubscription.FilteringCriteria"
          }
        },
        "x-etsi-notes": "NOTE:\tThe attributes \"serInstanceIds\", \"serNames\" and \"serCategories\" provide mutually-exclusive alternatives to define a set of services. Only one of them may be present."
kharimza's avatar
kharimza committed
      },
      "SerAvailabilityNotificationSubscription.FilteringCriteria": {
        "title": "SerAvailabilityNotificationSubscription.FilteringCriteria",
kharimza's avatar
kharimza committed
        "type": "object",
        "properties": {
          "serInstanceIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Identifiers of service instances about which to report events."
kharimza's avatar
kharimza committed
          },
          "serNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Names of services about which to report events."
kharimza's avatar
kharimza committed
          },
          "serCategories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CategoryRef"
            },
            "description": "Categories of services about which to report events."
kharimza's avatar
kharimza committed
          },
          "states": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceState"
            },
            "description": "States of the services about which to report events. If the event is  a state change, this filter represents the state after the change."
kharimza's avatar
kharimza committed
          },
          "isLocal": {
            "type": "boolean",
            "description": "Indicate whether the service is located in the same locality (as defined by scopeOfLocality) as the consuming MEC application.",
            "examples": [true]
        },
        "description": "Filtering criteria to match services for which events are requested to be reported. If absent, matches all services. All child attributes are combined with the logical  \"AND\" operation."
      },
      "ServiceAvailabilityNotification": {
        "title": "ServiceAvailabilityNotification",
        "required": ["notificationType", "serviceReferences", "_links"],
        "type": "object",
        "properties": {
          "notificationType": {
            "type": "string",
            "description": "Shall be set to SerAvailabilityNotificationSubscription.",
            "examples": ["SerAvailabilityNotificationSubscription"]
kharimza's avatar
kharimza committed
          "serviceReferences": {
            "type": "array",
            "items": {
kharimza's avatar
kharimza committed
              "$ref": "#/components/schemas/ServiceAvailabilityNotification.ServiceReferences"
            },
            "description": ""
          },
          "_links": {
            "$ref": "#/components/schemas/Subscription"
          }
        },
        "description": "This type represents the service availability information."
kharimza's avatar
kharimza committed
      "ServiceAvailabilityNotification.ServiceReferences": {
        "title": "ServiceAvailabilityNotification.ServiceReferences",
        "required": ["serName", "serInstanceId", "state", "changeType"],
        "type": "object",
kharimza's avatar
kharimza committed
        "properties": {
          "link": {
            "$ref": "#/components/schemas/LinkType"
          },
          "serName": {
            "type": "string",
            "description": "The name of the service. This is how the service producing MEC application identifies the service instance it produces.",
            "examples": ["ExampleService"]
kharimza's avatar
kharimza committed
          },
          "serInstanceId": {
            "type": "string",
            "description": "Identifier of the service instance assigned by the MEC platform.",
            "examples": ["ServiceInstance123"]
kharimza's avatar
kharimza committed
          },
          "state": {
            "$ref": "#/components/schemas/ServiceState"
          },
          "changeType": {
            "$ref": "#/components/schemas/ServiceAvailabilityNotification.ChangeType"
          }
        },
        "description": "List of links to services whose availability has changed."
kharimza's avatar
kharimza committed
      },
      "ServiceAvailabilityNotification.ChangeType": {
        "title": "ServiceAvailabilityNotification.ChangeType",
        "enum": ["ADDED", "REMOVED", "STATE_CHANGED", "ATTRIBUTES_CHANGED"],
        "type": "string",
        "description": "Type of the change. Valid values:\n  1. ADDED: The service was newly added.\n  2. REMOVED: The service was removed.\n  3. STATE_CHANGED: Only the state of the service was changed. \n  4. ATTRIBUTES_CHANGED: At least one attribute of the service other than state was changed. The change may or may not include changing the state.",
        "examples": ["ADDED"]
kharimza's avatar
kharimza committed
      },
      "SerializerType": {
        "title": "SerializerType",
        "enum": ["JSON", "XML", "PROTOBUF3"],
        "type": "string",
        "description": "The enumeration  represents types of serializers",
        "examples": ["JSON"]
kharimza's avatar
kharimza committed
      "LocalityType": {
        "title": "LocalityType",
        "enum": [
          "MEC_SYSTEM",
          "MEC_HOST",
          "NFVI_POP",
          "ZONE",
          "ZONE_GROUP",
          "NFVI_NODE"
        ],
        "type": "string",
        "description": "The scope of locality as expressed by \"consumedLocalOnly\" and \"isLocal\". If absent, defaults to MEC_HOST",
        "examples": ["MEC_SYSTEM"]
kharimza's avatar
kharimza committed
      "ServiceState": {
        "title": "ServiceState",
        "enum": ["ACTIVE", "INACTIVE", "SUSPENDED"],
        "type": "string",
        "description": "This enumeration defines the possible states of a service.",
        "examples": ["ACTIVE"]
        "title": "ServiceInfo",
        "required": [
          "serName",
          "version",
          "state",
          "transportInfo",
          "serializer"
        ],
        "type": "object",
        "properties": {
          "serInstanceId": {
            "type": "string",
            "description": "Identifier of the service instance assigned by the MEC platform.",
            "examples": ["ServiceInstance123"]
            "type": "string",
            "description": "The name of the service. This is how the service producing MEC application identifies the service instance it produces.",
            "examples": ["ExampleService"]
          },
          "serCategory": {
            "$ref": "#/components/schemas/CategoryRef"
          },
          "version": {
            "type": "string",
            "description": "Service version",
            "examples": ["ServiceVersion1"]
kharimza's avatar
kharimza committed
            "$ref": "#/components/schemas/ServiceState"
          "transportId": {
            "type": "string",
            "description": "Identifier of the platform-provided transport to be used by the service.  Valid identifiers may be obtained using the \"Transport information query\"  procedure. May be present in POST requests to signal the use of a platform-provided  transport for the service, and shall be absent otherwise. See note 2.",
            "examples": ["transportId1"]
          "transportInfo": {
            "$ref": "#/components/schemas/TransportInfo"
          },
          "serializer": {
kharimza's avatar
kharimza committed
            "$ref": "#/components/schemas/SerializerType"
          },
          "scopeOfLocality": {
kharimza's avatar
kharimza committed
            "$ref": "#/components/schemas/LocalityType"
          },
          "consumedLocalOnly": {
            "type": "boolean",
            "description": "Indicate whether the service can only be consumed by the MEC applications located in the same locality (as defined by scopeOfLocality) as this  service instance.",
            "examples": [false]
            "type": "boolean",
            "description": "Indicate whether the service is located in the same locality (as defined by scopeOfLocality) as the consuming MEC application.",
            "examples": [true]
          },
          "livenessInterval": {
            "type": "integer",
            "description": "Interval (in seconds) between two consecutive \"heartbeat\" messages (see clause 8.2.10.3.3). If the service-producing application supports sending \"heartbeat\" messages, it shall include this attribute in the registration request. In this case, the application shall either set the value of this attribute to zero or shall use this attribute to propose a non-zero positive value for the liveness interval. If the application has provided this attribute in the request and the MEC platform requires \"heartbeat\" messages, the MEC platform shall return this attribute value in the HTTP responses. The MEC platform may use the value proposed in the request or may choose a different value. If the MEC platform does not require \"heartbeat\" messages for this service instance it shall omit the attribute in responses."
          },
          "_links": {
            "type": "object",
            "required": ["self"],
            "properties": {
              "self": {
                "$ref": "#/components/schemas/LinkType"
              },
              "liveness": {
                "$ref": "#/components/schemas/LinkType"
              }
            }
        "description": "This type represents the general information of a MEC service.",
        "x-etsi-notes": "NOTE 1:\tThe service category may be included in the application descriptor. It may be allocated by the operator or by the application developer.\nNOTE 2:\tEither transportId or transportInfo but not both shall be present in POST requests.\nNOTE 3:\tValues NFVI_POP, ZONE and NFVI_NODE are used when the service instance is deployed as a VNF.\nNOTE 4:\tThe isLocal is used only in service availability query response and service availability subscription/notification messages.\nNOTE 5:\tValue ZONE_GROUP can be used when the service instance is deployed as a VNF.\nNOTE 6:\tRegarding the value MEC_SYSTEM, if the service is running on the same MEC system as the MEC app, then it will be local to it."
      "ServiceLivenessInfo": {
        "type": "object",
        "required": ["state", "timeStamp", "interval"],
        "properties": {
          "state": {
            "$ref": "#/components/schemas/ServiceState"
          },
          "timeStamp": {
            "type": "object",
            "description": "The time when the last \"heartbeat\" message was received by MEC platform",
            "required": ["seconds", "nanoSeconds"],
            "properties": {
              "seconds": {
                "type": "integer"
              },
              "nanoSeconds": {
                "type": "integer"
              }
            }
          },
          "interval": {
            "type": "integer",
            "description": "The interval (in seconds) between two consecutive \"heartbeat\" messages (see clause 8.2.10.3.3) that MEC platform has determined."
          }
        }
      },
      "ServiceLivenessUpdate": {
        "type": "object",
        "required": ["state"],
        "properties": {
          "state": {
            "$ref": "#/components/schemas/ServiceState"
          }
        }
      },
      "Subscription": {
        "title": "Subscription",
        "required": ["subscription"],
        "type": "object",
        "properties": {
          "subscription": {
            "$ref": "#/components/schemas/LinkType"
          }
        },
        "description": "A link to the related subscription"
        "title": "TransportInfo",
        "required": [
          "id",
          "name",
          "type",
          "protocol",
          "version",
          "endpoint",
          "security"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The identifier of this transport",
            "examples": ["TransId12345"]
            "type": "string",
            "description": "The name of this transport",
            "examples": ["REST"]
            "type": "string",
            "description": "Human-readable description of this transport",
            "examples": ["REST API"]
kharimza's avatar
kharimza committed
            "$ref": "#/components/schemas/TransportType"
            "type": "string",
            "description": "The name of the protocol used. Shall be set to HTTP for a REST API.",
            "examples": ["HTTP"]
            "type": "string",
            "description": "The version of the protocol used",
            "examples": ["2.0"]
          },
          "endpoint": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/EndPointInfo.Uris"
              },
              {
                "$ref": "#/components/schemas/EndPointInfo.Fqdn"
              },
              {
                "$ref": "#/components/schemas/EndPointInfo.Addresses"
              },
              {
                "$ref": "#/components/schemas/EndPointInfo.Alternative"
              }
            "description": "This type represents information about a transport endpoint",
            "x-etsi-notes": "NOTE:\tExactly one of \"uris\", \"fqdn\", \"addresses\" or \"alternative\" shall be present."
          },
          "security": {
            "$ref": "#/components/schemas/SecurityInfo"
          },
          "implSpecificInfo": {
            "type": "object",
            "description": "Additional implementation specific details of the transport"
        },
        "description": "This type represents the general information of a MEC service."
kharimza's avatar
kharimza committed
      "TransportType": {
        "title": "TransportType",
        "enum": [
          "REST_HTTP",
          "MB_TOPIC_BASED",
          "MB_ROUTING",
          "MB_PUBSUB",
          "RPC",
          "RPC_STREAMING",
          "WEBSOCKET"
        ],
        "type": "string",
        "description": "The enumeration TransportType represents types of transports",
        "examples": ["REST_HTTP"]
      }
    },
    "requestBodies": {
      "ServiceAvailabilityNotification": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ServiceAvailabilityNotification"
            }
          }
        },
        "required": true
      }
    }