MecServiceMgmtApi.json 55.1 KB
Newer Older
{
  "openapi": "3.0.2",
  "servers": [
    {
      "url": "http://127.0.0.1:8081/mec_service_mgmt/v1"
    },
    {
      "url": "https://127.0.0.1:8081/mec_service_mgmt/v1"
    }
  ],
  "info": {
    "title": "MEC Service Management API",
    "version": "2.1.1",
    "description": "The ETSI MEC ISG MEC011 MEC Service Management API described using OpenAPI",
    "license": {
admin_forge's avatar
admin_forge committed
      "name": "BSD-3-Clause",
      "url": "https://forge.etsi.org/legal-matters"
    },
    "contact": {
      "email": "cti_support@etsi.org"
    }
  },
  "externalDocs": {
    "description": "ETSI GS MEC011 Application Enablement API, V2.1.1",
    "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/02.01.01_60/gs_MEC011v020101p.pdf"
  },
  "tags": [
    {
      "name": "appSubscriptions"
    },
    {
      "name": "appServices"
    },
    {
      "name": "services"
    },
    {
      "name": "transports"
    },
    {
      "name": "callbacks"
    }
  ],
  "paths": {
    "/services": {
      "get": {
        "description": "This method retrieves information about a list of mecService resources. This method is typically used in \"service availability query\" procedure",
        "operationId": "Services_GET",
        "tags": [
          "services"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Query.Ser_instance_id"
          },
          {
            "$ref": "#/components/parameters/Query.Ser_name"
          },
          {
            "$ref": "#/components/parameters/Query.Ser_category_id"
          },
          {
            "$ref": "#/components/parameters/Query.Consumed_local_only"
          },
          {
            "$ref": "#/components/parameters/Query.Is_local"
          },
          {
kharimza's avatar
kharimza committed
            "$ref": "#/components/parameters/Query.LocalityType"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Services.200"
          },
          "400": {
            "$ref": "#/components/responses/Error.400"
          },
          "403": {
            "$ref": "#/components/responses/Error.403"
          },
          "404": {
            "$ref": "#/components/responses/Error.404"
          },
          "414": {
            "$ref": "#/components/responses/Error.414"
          }
        }
      }
    },
    "/services/{serviceId}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/Path.ServiceId"
        }
      ],
      "get": {
        "description": "This method retrieves information about a mecService resource. This method is typically used in \"service availability query\" procedure",
        "operationId": "ServicesServiceId_GET",
        "tags": [
          "services"
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/ServicesServiceId.200"
          },
          "400": {
            "$ref": "#/components/responses/Error.400"
          },
          "403": {
            "$ref": "#/components/responses/Error.403"
          },
          "404": {
            "$ref": "#/components/responses/Error.404"
          }
        }
      }
    },
    "/applications/{appInstanceId}/services": {
      "parameters": [
        {
          "$ref": "#/components/parameters/Path.AppInstanceId"
        }
      ],
      "get": {
        "description": "This method retrieves information about a list of mecService resources. This method is typically used in \"service availability query\" procedure",
        "operationId": "AppServices_GET",
        "tags": [
          "appServices"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Query.Ser_instance_id"
          },
          {
            "$ref": "#/components/parameters/Query.Ser_name"
          },
          {
            "$ref": "#/components/parameters/Query.Ser_category_id"
          },
          {
            "$ref": "#/components/parameters/Query.Consumed_local_only"
          },
          {
            "$ref": "#/components/parameters/Query.Is_local"
          },
          {
kharimza's avatar
kharimza committed
            "$ref": "#/components/parameters/Query.LocalityType"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Services.200"
          },
          "400": {
            "$ref": "#/components/responses/Error.400"
          },
          "403": {
            "$ref": "#/components/responses/Error.403"
          },
          "404": {
            "$ref": "#/components/responses/Error.404"
          },
          "414": {
            "$ref": "#/components/responses/Error.414"
          }
        }
      },
      "post": {
        "description": "This method is used to create a mecService resource. This method is typically used in \"service availability update and new service registration\" procedure",
        "operationId": "AppServices_POST",
        "tags": [
          "appServices"
        ],
        "responses": {
          "201": {
            "$ref": "#/components/responses/Services.201"
          },
          "400": {
            "$ref": "#/components/responses/Error.400"
          },
          "403": {
            "$ref": "#/components/responses/Error.403"
          },
          "404": {
            "$ref": "#/components/responses/Error.404"
          }
        },
        "requestBody": {
          "$ref": "#/components/requestBodies/Services.Post"
        }
      }
    },
    "/applications/{appInstanceId}/services/{serviceId}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/Path.AppInstanceId"
        },
        {
          "$ref": "#/components/parameters/Path.ServiceId"
        }
      ],
      "get": {
        "description": "This method retrieves information about a mecService resource. This method is typically used in \"service availability query\" procedure",
        "operationId": "AppServicesServiceId_GET",
        "tags": [
          "appServices"
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/ServicesServiceId.200"
          },
          "400": {
            "$ref": "#/components/responses/Error.400"
          },
          "403": {
            "$ref": "#/components/responses/Error.403"
          },
          "404": {
            "$ref": "#/components/responses/Error.404"
          }
        }
      },
      "put": {
        "description": "This method updates the information about a mecService resource",
        "operationId": "AppServicesServiceId_PUT",
        "tags": [
          "appServices"
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/ServicesServiceId.200"
          },
          "400": {
            "$ref": "#/components/responses/Error.400"
          },
          "403": {
            "$ref": "#/components/responses/Error.403"
          },
          "404": {
            "$ref": "#/components/responses/Error.404"
          },
          "412": {
            "$ref": "#/components/responses/Error.412"
          }
        },
        "requestBody": {
          "$ref": "#/components/requestBodies/ServicesServiceId"
        }
      },
      "delete": {
        "description": "This method deletes a mecService resource. This method is typically used in the service deregistration procedure. ",
        "operationId": "AppServicesServiceId_DELETE",
        "tags": [
          "appServices"
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "403": {
            "$ref": "#/components/responses/Error.403"
          },
          "404": {
            "$ref": "#/components/responses/Error.404"
          }
        }
      }
    },
    "/applications/{appInstanceId}/subscriptions": {
      "parameters": [
        {
          "$ref": "#/components/parameters/Path.AppInstanceId"
        }
      ],
      "get": {
        "description": "The GET method may be used to request information about all subscriptions for this requestor. Upon success, the response contains entity body with all the subscriptions for the requestor.",
        "operationId": "ApplicationsSubscriptions_GET",
        "tags": [
          "appSubscriptions"
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/ApplicationsSubscriptions.200"
          },
          "400": {
            "$ref": "#/components/responses/Error.400"
          },
          "403": {
            "$ref": "#/components/responses/Error.403"
          },
          "404": {
            "$ref": "#/components/responses/Error.404"
          }
        }
      },
      "post": {
        "description": "The POST method may be used to create a new subscription. One example use case is to create a new subscription to the MEC service availability notifications. Upon success, the response contains entity body describing the created subscription.",
        "operationId": "ApplicationsSubscriptions_POST",
        "tags": [
          "appSubscriptions"
        ],
        "responses": {
          "201": {
            "$ref": "#/components/responses/ApplicationsSubscriptions.201"
          },
          "400": {
            "$ref": "#/components/responses/Error.400"
          },
          "403": {
            "$ref": "#/components/responses/Error.403"
          },
          "404": {
            "$ref": "#/components/responses/Error.404"
          }
        },
        "requestBody": {
          "$ref": "#/components/requestBodies/ApplicationsSubscriptions"
        },
        "callbacks": {
          "serviceAvailabilityNotification": {
            "$ref": "#/components/callbacks/ServiceAvailabilityNotification"
          }
        }
      }
    },
    "/applications/{appInstanceId}/subscriptions/{subscriptionId}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/Path.AppInstanceId"
        },
        {
          "$ref": "#/components/parameters/Path.SubscriptionId"
        }
      ],
      "get": {
        "description": "The GET method requests information about a subscription for this requestor. Upon success, the response contains entity body with the subscription for the requestor.",
        "operationId": "ApplicationsSubscription_GET",
        "tags": [
          "appSubscriptions"
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/ApplicationsSubscription.200"
          },
          "400": {
            "$ref": "#/components/responses/Error.400"
          },
          "403": {
            "$ref": "#/components/responses/Error.403"
          },
          "404": {
            "$ref": "#/components/responses/Error.404"
          }
        }
      },
      "delete": {
        "description": "This method deletes a mecSrvMgmtSubscription. This method is typically used in \"Unsubscribing from service availability event notifications\" procedure.",
        "operationId": "ApplicationsSubscription_DELETE",
        "tags": [
          "appSubscriptions"
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "403": {
            "$ref": "#/components/responses/Error.403"
          },
          "404": {
            "$ref": "#/components/responses/Error.404"
          }
        }
      }
    },
    "/transports": {
      "get": {
        "description": "This method retrieves information about a list of available transports. This method is typically used by a service-producing application to discover transports provided by the MEC platform in the \"transport information query\" procedure",
        "operationId": "Transports_GET",
        "tags": [
          "transports"
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Transports.200"
          },
          "400": {
            "$ref": "#/components/responses/Error.400"
          },
          "403": {
            "$ref": "#/components/responses/Error.403"
          },
          "404": {
            "$ref": "#/components/responses/Error.404"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Empty": {
        "description": "Empty schema"
      },
      "CategoryRef.Href": {
        "description": "Reference of the catalogue",
        "type": "string",
        "format": "uri",
        "example": "/example/catalogue1"
      },
      "CategoryRef.Id": {
        "description": "Unique identifier of the category",
        "type": "string",
        "example": "id12345"
      },
      "CategoryRef.Name": {
        "description": "Name of the category, example values include RNI, Location & Bandwidth Management",
        "type": "string",
        "example": "RNI"
      },
      "CategoryRef.Version": {
        "description": "Category version",
        "type": "string",
        "example": "version1"
      },
      "CategoryRef": {
        "description": "This type represents the category reference",
        "type": "object",
        "required": [
          "href",
          "id",
          "name",
          "version"
        ],
        "properties": {
          "href": {
            "$ref": "#/components/schemas/CategoryRef.Href"
          },
          "id": {
            "$ref": "#/components/schemas/CategoryRef.Id"
          },
          "name": {
            "$ref": "#/components/schemas/CategoryRef.Name"
          },
          "version": {
            "$ref": "#/components/schemas/CategoryRef.Version"
          }
        }
      },
kharimza's avatar
kharimza committed
      "CategoryRefs": {
        "description": "Categories of services about which to report events.",
        "type": "array",
        "minItems": 0,
        "items": {
          "$ref": "#/components/schemas/CategoryRef"
      "EndPointInfo.Address.Host": {
        "description": "Host portion of the address",
        "type": "string",
        "example": "192.0.2.0"
      },
      "EndPointInfo.Address_Port": {
        "description": "Port portion of the address",
        "type": "integer",
        "format": "uint32",
        "example": 8080
      },
      "EndPointInfo.Address": {
        "description": "A IP address and port pair",
        "type": "object",
        "required": [
          "host",
          "port"
        ],
        "properties": {
          "host": {
            "$ref": "#/components/schemas/EndPointInfo.Address.Host"
          },
          "port": {
            "$ref": "#/components/schemas/EndPointInfo.Address_Port"
          }
        }
      },
      "EndPointInfo.Addresses": {
        "description": "Entry point information of the service as one or more pairs of IP address and port",
        "type": "object",
        "required": [
          "addresses"
        ],
        "properties": {
          "addresses": {
            "type": "array",
            "minItems": 0,
            "items": {
              "$ref": "#/components/schemas/EndPointInfo.Address"
            }
          }
        }
      },
      "EndPointInfo.Alternative": {
        "description": "Entry point information of the service in a format defined by an implementation, or in an external specification.",
        "type": "object",
        "required": [
          "alternative"
        ],
        "properties": {
          "alternative": {
            "type": "object"
          }
        }
      },
      "EndPointInfo.Uri": {
        "description": "Entry point information of the service",
        "type": "string",
        "format": "uri",
        "example": "/mecSerMgmtApi/service/EntryPoint"
      },
      "EndPointInfo.Uris": {
        "description": "Entry point information of the service as string, formatted according to URI syntax",
        "type": "object",
        "required": [
          "uris"
        ],
        "properties": {
          "uris": {
            "type": "array",
            "minItems": 0,
            "items": {
              "$ref": "#/components/schemas/EndPointInfo.Uri"
            }
          }
        }
      },
      "LinkType": {
        "description": "This type represents a type of link and may be referenced from data structures",
        "type": "object",
        "properties": {
          "href": {
            "$ref": "#/components/schemas/Href"
          }
        }
      },
      "Href": {
        "description": "URI referring to a resource",
        "type": "string",
        "format": "uri",
        "example": "/mecSerMgmtApi/example"
      },
      "MecServiceMgmtApiSubscriptionLinkList.Links": {
        "description": "Self-referring URI.",
        "type": "object",
        "required": [
          "self"
        ],
        "properties": {
          "self": {
            "$ref": "#/components/schemas/LinkType"
          },
          "subscriptions": {
            "description": "The MEC application instance's subscriptions",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MecServiceMgmtApiSubscriptionLinkList.Subscription"
            }
          }
        }
      },
      "MecServiceMgmtApiSubscriptionLinkList.Subscription": {
        "description": "A link to a subscription.",
        "type": "object",
        "required": [
          "href",
          "rel"
        ],
        "properties": {
          "href": {
            "$ref": "#/components/schemas/Href"
          },
          "rel": {
            "description": "The value shall be se to SerAvailabilityNotificationSubscription.",
            "type": "string"
          }
        }
      },
      "MecServiceMgmtApiSubscriptionLinkList": {
        "description": "This type represents a list of links related to currently existing subscriptions for a MEC application instance. This information is returned when sending a request to receive current subscriptions.",
        "type": "object",
        "required": [
          "_links"
        ],
        "properties": {
          "_links": {
            "$ref": "#/components/schemas/MecServiceMgmtApiSubscriptionLinkList.Links"
          }
        }
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/Problem.type"
          },
          "title": {
            "$ref": "#/components/schemas/Problem.title"
          },
          "status": {
            "$ref": "#/components/schemas/Problem.status"
          },
          "detail": {
            "$ref": "#/components/schemas/Problem.detail"
          },
          "instance": {
            "$ref": "#/components/schemas/Problem.instance"
          }
        }
      },
      "Problem.detail": {
        "type": "string",
        "description": "A human-readable explanation specific to this occurrence of the problem"
      },
      "Problem.instance": {
        "type": "string",
        "format": "uri",
        "description": "A URI reference that identifies the specific occurrence of the problem"
      },
      "Problem.status": {
        "type": "integer",
        "format": "uint32",
        "description": "The HTTP status code for this occurrence of the problem"
      },
      "Problem.title": {
        "type": "string",
        "description": "A short, human-readable summary of the problem type"
      },
      "Problem.type": {
        "type": "string",
        "format": "uri",
        "description": "A URI reference according to IETF RFC 3986 that identifies the problem type"
      },
kharimza's avatar
kharimza committed
      "SecurityInfo.OAuth2Info.GrantType": {
        "description": "OAuth 2.0 grant type",
        "type": "string",
        "enum": [
          "OAUTH2_AUTHORIZATION_CODE",
          "OAUTH2_IMPLICIT_GRANT",
          "OAUTH2_RESOURCE_OWNER",
          "OAUTH2_CLIENT_CREDENTIALS"
        ],
        "example": "OAUTH2_CLIENT_CREDENTIALS"
      },
kharimza's avatar
kharimza committed
      "SecurityInfo.OAuth2Info.GrantTypes": {
        "description": "List of supported OAuth 2.0 grant types.",
        "type": "array",
        "minItems": 1,
        "maxItems": 4,
        "items": {
          "$ref": "#/components/schemas/SecurityInfo.OAuth2Info.GrantType"
        }
      },
      "SecurityInfo.OAuth2Info.TokenEndpoint": {
        "description": "The token endpoint",
        "type": "string",
        "format": "uri",
        "example": "/mecSerMgmtApi/security/TokenEndPoint"
      },
      "SecurityInfo.OAuth2Info": {
        "description": "Parameters related to use of OAuth 2.0",
        "required": [
          "grantTypes",
          "tokenEndpoint"
        ],
        "properties": {
          "grantTypes": {
kharimza's avatar
kharimza committed
            "$ref": "#/components/schemas/SecurityInfo.OAuth2Info.GrantTypes"
          },
          "tokenEndpoint": {
            "$ref": "#/components/schemas/SecurityInfo.OAuth2Info.TokenEndpoint"
          }
        },
        "type": "object"
      },
      "SecurityInfo": {
        "description": "This type represents security information related to a transport",
        "type": "object",
        "properties": {
          "oAuth2Info": {
            "$ref": "#/components/schemas/SecurityInfo.OAuth2Info"
          }
        }
      },
      "Self": {
        "description": "Self-referring URI.",
        "type": "object",
        "required": [
          "self"
        ],
        "properties": {
          "self": {
            "$ref": "#/components/schemas/LinkType"
          }
        },
        "readOnly": true
      },
      "SerAvailabilityNotificationSubscription.CallbackReference": {
        "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.",
        "type": "string",
        "format": "uri"
      },
      "SerAvailabilityNotificationSubscription": {
        "description": "This type represents a subscription to the notifications from the  MEC platform regarding the availability of a MEC service or a list of MEC services.",
        "type": "object",
        "required": [
          "subscriptionType",
          "callbackReference",
kharimza's avatar
kharimza committed
          "_links"
        ],
        "properties": {
          "subscriptionType": {
            "$ref": "#/components/schemas/SerAvailabilityNotificationSubscription.SubscriptionType"
          },
          "callbackReference": {
            "$ref": "#/components/schemas/SerAvailabilityNotificationSubscription.CallbackReference"
          },
          "_links": {
            "$ref": "#/components/schemas/Self"
          },
          "filteringCriteria": {
kharimza's avatar
kharimza committed
            "$ref": "#/components/schemas/SerAvailabilityNotificationSubscription.FilteringCriteria"
          }
        }
      },
      "SerAvailabilityNotificationSubscription.FilteringCriteria": {
        "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.",
        "type": "object",
        "not": {
          "required": [
            "serInstanceIds",
            "serNames",
            "serCategories"
          ]
        },
        "properties": {
          "serInstanceIds": {
            "$ref": "#/components/schemas/SerInstanceIds"
          },
          "serNames": {
            "$ref": "#/components/schemas/SerNames"
          },
          "serCategories": {
            "$ref": "#/components/schemas/CategoryRefs"
          },
          "states": {
            "$ref": "#/components/schemas/ServiceStates"
          },
          "isLocal": {
            "$ref": "#/components/schemas/ServiceInfo.IsLocal"
          }
        }
      },
      "SerAvailabilityNotificationSubscription.SubscriptionType": {
        "description": "Shall be set to SerAvailabilityNotificationSubscription.",
        "type": "string",
        "example": "SerAvailabilityNotificationSubscription"
      },
      "ServiceAvailabilityNotification": {
        "description": "This type represents the service availability information.",
        "type": "object",
        "required": [
          "notificationType",
kharimza's avatar
kharimza committed
          "serviceReferences",
          "_links"
        ],
        "properties": {
          "notificationType": {
            "$ref": "#/components/schemas/SerAvailabilityNotificationSubscription.SubscriptionType"
          },
kharimza's avatar
kharimza committed
          "serviceReferences": {
            "type": "array",
            "items": {
kharimza's avatar
kharimza committed
              "$ref": "#/components/schemas/ServiceAvailabilityNotification.ServiceReferences"
            }
          },
          "_links": {
            "$ref": "#/components/schemas/Subscription"
          }
        }
      },
kharimza's avatar
kharimza committed
      "ServiceAvailabilityNotification.ServiceReferences": {
        "description": "List of links to services whose availability has changed.",
        "type": "object",
        "required": [
          "serName",
          "serInstanceId",
          "state",
          "changeType"
        ],
        "properties": {
          "link": {
            "$ref": "#/components/schemas/LinkType"
          },
          "serName": {
            "$ref": "#/components/schemas/ServiceInfo.SerName"
          },
          "serInstanceId": {
            "$ref": "#/components/schemas/ServiceInfo.SerInstanceId"
          },
          "state": {
            "$ref": "#/components/schemas/ServiceState"
          },
          "changeType": {
            "$ref": "#/components/schemas/ServiceAvailabilityNotification.ChangeType"
          }
        }
      },
      "ServiceAvailabilityNotification.ChangeType": {
        "description": "Type of the change. Valid values:\n  ADDED: The service was newly added.\n  REMOVED: The service was removed.\n  STATE_CHANGED: Only the state of the service was changed. \n  ATTRIBUTES_CHANGED: At least one attribute of the service other than state was changed. The change may or may not include changing the state.",
        "type": "string",
        "enum": [
          "ADDED",
          "REMOVED",
          "STATE_CHANGED",
          "ATTRIBUTES_CHANGED"
        ]
      },
      "SerializerType": {
        "description": "The enumeration  represents types of serializers",
        "type": "string",
        "enum": [
          "JSON",
          "XML",
          "PROTOBUF3"
        ],
        "example": "JSON"
      },
kharimza's avatar
kharimza committed
      "LocalityType": {
        "description": "The scope of locality as expressed by \"consumedLocalOnly\" and \"isLocal\". If absent, defaults to MEC_HOST",
        "type": "string",
        "enum": [
          "MEC_SYSTEM",
          "MEC_HOST",
          "NFVI_POP",
          "ZONE",
          "ZONE_GROUP",
          "NFVI_NODE"
        ],
        "example": "MEC_SYSTEM"
      },
kharimza's avatar
kharimza committed
      "ServiceState": {
        "description": "This enumeration defines the possible states of a service.",
        "type": "string",
        "enum": [
          "ACTIVE",
          "INACTIVE"
        ],
        "example": "ACTIVE"
      },
      "ServiceStates": {
        "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.",
        "type": "array",
        "minItems": 0,
        "items": {
          "$ref": "#/components/schemas/ServiceState"
        }
      },
      "ServiceInfo.SerInstanceId": {
        "description": "Identifier of the service instance assigned by the MEC platform.",
        "type": "string",
        "readOnly": true,
        "example": "ServiceInstance123"
      },
kharimza's avatar
kharimza committed
      "SerInstanceIds": {
        "description": "Identifiers of service instances about which to report events.",
        "type": "array",
        "minItems": 0,
        "items": {
          "$ref": "#/components/schemas/ServiceInfo.SerInstanceId"
        }
      },
      "ServiceInfo.SerName": {
        "description": "The name of the service. This is how the service producing MEC application identifies the service instance it produces.",
        "type": "string",
        "example": "ExampleService"
      },
kharimza's avatar
kharimza committed
      "SerNames": {
        "description": "Names of services about which to report events.",
        "type": "array",
        "minItems": 0,
        "items": {
          "$ref": "#/components/schemas/ServiceInfo.SerName"
        }
      },
      "ServiceInfo.TransportId": {
        "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.",
        "type": "string",
        "writeOnly": true,
        "example": "Rest1"
      },
      "ServiceInfo.Version": {
        "description": "Service version",
        "type": "string",
        "example": "ServiceVersion1"
      },
      "ServiceInfo.ConsumedLocalOnly": {
        "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.",
        "type": "boolean",
        "example": false
      },
      "ServiceInfo.IsLocal": {
        "description": "Indicate whether the service is located in the same locality (as defined by scopeOfLocality) as the consuming MEC application.",
        "type": "boolean",
        "example": true
      },
      "ServiceInfo.Post": {
        "description": "This type represents the general information of a MEC service.",
        "type": "object",
        "required": [
          "serName",
          "version",
          "state",
          "serializer"
        ],
        "oneOf": [
          {
            "required": [
              "transportId"
            ]
          },
          {
            "required": [
              "transportInfo"
            ]
          }
        ],
        "properties": {
          "serInstanceId": {
            "$ref": "#/components/schemas/ServiceInfo.SerInstanceId"
          },
          "serName": {
            "$ref": "#/components/schemas/ServiceInfo.SerName"
          },
          "serCategory": {
            "$ref": "#/components/schemas/CategoryRef"
          },
          "version": {
            "$ref": "#/components/schemas/ServiceInfo.Version"
          },
          "state": {
kharimza's avatar
kharimza committed
            "$ref": "#/components/schemas/ServiceState"
          },
          "transportId": {
            "$ref": "#/components/schemas/ServiceInfo.TransportId"
          },
          "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": {
            "$ref": "#/components/schemas/ServiceInfo.ConsumedLocalOnly"
          },
          "isLocal": {
            "$ref": "#/components/schemas/ServiceInfo.IsLocal"
          }
        }
      },
      "ServiceInfo": {
        "description": "This type represents the general information of a MEC service.",
        "type": "object",
        "required": [
          "serName",
          "version",
          "state",
          "transportInfo",
          "serializer"
        ],
        "properties": {
          "serInstanceId": {
            "$ref": "#/components/schemas/ServiceInfo.SerInstanceId"
          },
          "serName": {
            "$ref": "#/components/schemas/ServiceInfo.SerName"
          },
          "serCategory": {
            "$ref": "#/components/schemas/CategoryRef"
          },
          "version": {
            "$ref": "#/components/schemas/ServiceInfo.Version"
          },
          "state": {
kharimza's avatar
kharimza committed
            "$ref": "#/components/schemas/ServiceState"
          },
          "transportInfo": {
            "$ref": "#/components/schemas/TransportInfo"
          },
          "serializer": {