{ "description": "This type represents the general information of a MEC service.", "type": "object", "required": [ "serName", "version", "state", "transportInfo", "serializer" ], "properties": { "serInstanceId": { "description": "Identifier of the service instance assigned by the MEC platform.", "type": "string", "readOnly": true, "example": "ServiceInstance123" }, "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" }, "serCategory": { "description": "This type represents the category reference", "type": "object", "required": [ "href", "id", "name", "version" ], "properties": { "href": { "description": "Reference of the catalogue", "type": "string", "format": "uri", "example": "/example/catalogue1" }, "id": { "description": "Unique identifier of the category", "type": "string", "example": "id12345" }, "name": { "description": "Name of the category, example values include RNI, Location & Bandwidth Management", "type": "string", "example": "RNI" }, "version": { "description": "Category version", "type": "string", "example": "version1" } } }, "version": { "description": "Service version", "type": "string", "example": "ServiceVersion1" }, "state": { "description": "This enumeration defines the possible states of a service.", "type": "string", "enum": [ "ACTIVE", "INACTIVE" ], "example": "ACTIVE" }, "transportInfo": { "description": "This type represents the general information of a MEC service.", "type": "object", "required": [ "id", "name", "type", "protocol", "version", "endpoint", "security" ], "properties": { "id": { "description": "The identifier of this transport", "type": "string", "example": "TransId12345" }, "name": { "description": "The name of this transport", "type": "string", "example": "REST" }, "description": { "description": "Human-readable description of this transport", "type": "string", "example": "REST API" }, "type": { "description": "The enumeration TransportType represents types of transports", "type": "string", "enum": [ "REST_HTTP", "MB_TOPIC_BASED", "MB_ROUTING", "MB_PUBSUB", "RPC", "RPC_STREAMING", "WEBSOCKET" ], "example": "REST_HTTP" }, "protocol": { "description": "The name of the protocol used. Shall be set to HTTP for a REST API.", "type": "string", "example": "HTTP" }, "version": { "description": "The version of the protocol used", "type": "string", "example": "2.0" }, "endpoint": { "description": "This type represents information about a transport endpoint", "type": "object", "oneOf": [{ "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": { "description": "Entry point information of the service", "type": "string", "format": "uri", "example": "/mecSerMgmtApi/service/EntryPoint" } } } }, { "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": { "description": "A IP address and port pair", "type": "object", "required": [ "host", "port" ], "properties": { "host": { "description": "Host portion of the address", "type": "string", "example": "192.0.2.0" }, "port": { "description": "Port portion of the address", "type": "integer", "format": "uint32", "example": 8080 } } } } } }, { "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" } } } ] }, "security": { "description": "This type represents security information related to a transport", "type": "object", "properties": { "oAuth2Info": { "description": "Parameters related to use of OAuth 2.0", "required": [ "grantTypes", "tokenEndpoint" ], "properties": { "grantTypes": { "description": "List of supported OAuth 2.0 grant types.", "type": "array", "minItems": 1, "maxItems": 4, "items": { "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" } }, "tokenEndpoint": { "description": "The token endpoint", "type": "string", "format": "uri", "example": "/mecSerMgmtApi/security/TokenEndPoint" } }, "type": "object" } } }, "implSpecificInfo": { "description": "Additional implementation specific details of the transport", "type": "object" } } }, "serializer": { "description": "The enumeration represents types of serializers", "type": "string", "enum": [ "JSON", "XML", "PROTOBUF3" ], "example": "JSON" }, "scopeOfLocality": { "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" }, "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 }, "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 } } }