diff --git a/code/API_definitions/MEC exposure and experience management.yaml b/code/API_definitions/MEC exposure and experience management.yaml new file mode 100644 index 0000000..3dddae4 --- /dev/null +++ b/code/API_definitions/MEC exposure and experience management.yaml @@ -0,0 +1,1679 @@ +openapi: 3.0.3 +############################################################################ +# API info # +############################################################################ +info: + contact: + email: sp-edc@lists.camaraproject.org + title: MEC Exposure & Experience Management API + version: 0.9.0 + description: | + # Introduction + --- + + Use the MEC Exposure & Experience Management API for discovery and utilisation of Multi-Access Edge Compute (MEC) + resources and services. + + + --- + # API Scope + + --- + + APIs defined in this version of the specification can be categorized into the following areas: + + * __MEC Edge Discovery__ - discovery of optimal MEC platforms + * __MEC Service Discovery__ - discovery of optimal Service Endpoints for client connections + * __MEC Service Profile management__ - register, retrieve, update, and delete MEC Service Profiles + * __MEC Service Endpoint management__ - register one or more Service Endpoints, and retrieve, update, and delete those registrations + * __MEC Edge Event notification__ - subscription management for MEC and Service discovery Event notifications + + --- + # Definitions + --- + This section provides definitions of terminologies commonly referred to throughout the API descriptions. + + * __API Consumer__ - A user or an application consuming the MEC Exposure and Experience Management APIs. + * __Application Service Provider__ - the developer/publisher who deploys applications on MEC platforms. + * __Density__ - Minimum 4G/5G subscriber density in a geographical area, represented as the number of subscribers per square kilometer. + * __Edge Application__ - A cloud application that has some services deployed to MEC Platforms to take advantage of low latency and high bandwidth when interacting with devices. + * __Edge Discovery Service (EDS)__ - MEC Exposure and Experience Management APIs exposed as a service by a TSP. + * __Edge Resource__ - An object defined by the sevice provider representing an edge resource within its network domain, such as a MEC Platform. + * __Event__ - A MEC event is triggered if the previously-discovered MEC platform is no longer the optimal choice of all available MEC platforms, due to a change in the underlying network or MEC infrastructure. The TSP will send out change notifications to API Consumers who have active subscription to the event notification. + * __MEC Platform__ - A collection of cloud computing resources housed in a TSP's network facility that provide Multi-access Edge Computing (MEC) capabilities. + * __Optimal MEC Platforms__ - A list of one or more optimal MEC Platforms to register a Service Endpoint, based on the latency and availability of each MEC platform, and optionally also based on various query criteria (Service Profile, Region, subscriber density or UE identity) defined by the API Consumer. + * __Optimal MEC Service Endpoints__ – A list of one or more MEC Service Endpoints that provide optimal user experience to the client device, based on internal network conditions known to the MEC Platform, and also optionally based on various query criteria (Service Profile, Region, subscriber density or UE identity) defined by the API Consumer. + * __Region__ - A TSP-defined string identifier representing a certain geographical or logical area where MEC resources and services are provided. + * __Registered MEC Hosted Services__ - Applications running on MEC platforms which are registered with Edge Discovery Service using the service registry APIs. + * __Service Endpoint__ - The routable endpoint of the service(s) within a deployed application that clients connect to, where a service is a subcomponent of application + * __Service Profile__ - Information about the MEC application and the associated service characteristics. + * __TSP__ - Telecommunications Service Provider. + * __UEIdentity__ - User Equipment identity, which can be a device's IP address, MSISDN, IMEI, MDN, or GPSI. + * __Zone__ - A logical collection of MEC Platforms in a telecommunication provider's network. A Zone is part of a Region. + + --- + # Link relationships + --- + + __REGIONS__ + * __All-regions__ list all regions + + __ZONES__ + * __All-zones__ list all available zones + + __MEC PLATFORMS__ + * __All-mec-platforms__ list all MEC platforms + * __Optimal-MECPlatforms-by-density__ return the optimal MEC platform for a given subscriber density + * __Optimal-MECPlatforms-by-service-profile__ return the optimal MEC platform for a given service profile + * __Optimal-MECPlatforms-by-UE__ return the optimal MEC platform for a given UE identifier + * __Optimal-MECPlatforms-by-region__ return the optimal MEC platform for a given region + * __Optimal-MECPlatforms-by-zone__ return the optimal MEC platform for a given zone + + __Service Endpoints__ + * __All-service-endpoints__ list all Service Endpoints + * __Register-service-endpoint__ Register a Service Endpoint + * __Update-service-endpoint__ Update a Service Endpoint + * __Delete-service-endpoint__ Delete a Service Endpoint + * __Optimal-service-endpoints-by-zone__ return the optimal Service Endpoints associated with the specified Zone + * __Optimal-service-endpoints-by-region__ return the optimal Service Endpoints associated with the specified Region + * __Optimal-service-endpoints-by-service-profile__ return the optimal Service Endpoints associated with the specified Service Profile + + __SERVICE PROFILES__ + * __All-service-profiles__ list all Service Profiles + * __Create-service-profile__ create a new Service Profile + * __Update-service-profiles__ Update a Service Profiles + * __Delete-service-profile__ Delete a Service Profile based on ID + + __COMMON__ + * __Self__ the self-referring URI for the response + * __Version-History__ link to version history for this API + * __Terms-of-Service__ link The Terms of Service for this API + * __Bookmark__ link to the API bookmark + + --- + # Security and resilience + --- + * __Authentication:__ API requests are made with the API Consumer's unique key + * __Integrity:__ APIs requests, responses and callbacks are made using HTTP over TLS 1.3 (HTTPS) + * __Consent to access resources__ is brokered via OAuth2.0 with implicit, password and client credentials grant flows + * __Replay errors__ are mitigated through use of request correlator IDs. + + + license: + name: Apache-2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0.html' + + + +############################################################################ +# Security # +############################################################################ +security: + - oAuth2: + - 'edge:discovery:read' + - 'edge:serviceprofile:read' + - 'edge:serviceprofile:write' + - 'edge:serviceregistry:read' + - 'edge:serviceregistry:write' + +############################################################################ +# Servers # +############################################################################ +servers: + - url: 'http://localhost:{port}/v1' + description: Local host API + variables: + port: + enum: + - '3333' + default: '3333' + - url: 'https://edge.example.com:{port}/v1' + description: Production API + variables: + port: + enum: + - '443' + - '8443' + default: '443' + - url: 'https://{region}.edge.example.com:{port}/v1' + description: Production API for Regions + variables: + region: + default: east + port: + enum: + - '443' + - '8443' + default: '443' + +############################################################################ +# Tags # +############################################################################ +tags: + - name: Discovery + description: | + Discover the regions and zones in the MEC service, find optimal MEC Platforms for your deployed applications, and optimal service endpoints for your clients to connect to. + - name: Service Endpoints + description: | + Register and manage the routable Service Endpoints of your deployed applications. + - name: Service Profiles + description: | + Create and manage profiles that describe the service requirements of your MEC applications, such as the required connection bandwidth and maximum latency. +# - name: Events and Subscriptions +# description: | +# Subscribe to event notification callbacks to monitor platform and workload events and retrieve event details. + + +############################################################################ +# Paths # +############################################################################ +paths: + /: + get: + responses: + '200': + description: List of top-level resources and their links + content: + application/json: + schema: + title: GetResourcesResponse + type: object + properties: + resources: + $ref: '#/components/schemas/Resources' + links: + $ref: '#/components/schemas/LinksCommon' + '401': + $ref: '#/components/responses/Unauthorized' + default: + $ref: '#/components/responses/Unexpected' + tags: + - Discovery + operationId: bookmark + summary: List the links to the top-level resources of this API + description: List the top level resources available from the API bookmark and the links to reach them + + /serviceprofiles: + post: + operationId: create-service-profile + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ResourcesServiceProfile' + description: service profile + responses: + '201': + description: service profile ID + content: + application/json: + schema: + title: PostServiceProfileResponse + type: object + properties: + serviceProfileId: + $ref: '#/components/schemas/TypesServiceProfileId' + links: + type: array + items: + oneOf: + - $ref: '#/components/schemas/LinksUpdateServiceProfile' + - $ref: '#/components/schemas/LinksDeleteServiceProfile' + - $ref: '#/components/schemas/LinksCommon' + '401': + $ref: '#/components/responses/Unauthorized' + default: + $ref: '#/components/responses/Unexpected' + tags: + - Service Profiles + summary: Create a service profile + description: Creates a service profile that describes the resource requirements of a service. + get: + operationId: get-service-profiles + responses: + '200': + description: List all service profiles registered under your API key + content: + application/json: + schema: + title: GetServiceProfilesResponse + type: object + properties: + serviceProfiles: + type: array + items: + $ref: '#/components/schemas/ResourcesServiceProfile' + links: + type: array + items: + oneOf: + - $ref: '#/components/schemas/LinksCreateServiceProfile' + - $ref: '#/components/schemas/LinksCommon' + '401': + $ref: '#/components/responses/Unauthorized' + default: + $ref: '#/components/responses/Unexpected' + tags: + - Service Profiles + summary: List all service profiles registered under your API key + description: List all service profiles registered under your API key + + '/serviceprofiles/{serviceProfileId}': + parameters: + - name: serviceProfileId + in: path + required: true + description: serviceprofileid param//added desc + schema: + type: string + get: + operationId: get-service-profile-by-profile-Id + summary: Fetch a service profile + description: Returns a specified service profile. + responses: + '200': + description: Requested service profile + content: + application/json: + schema: + $ref: '#/components/schemas/ResourcesServiceProfile' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + default: + $ref: '#/components/responses/Unexpected' + tags: + - Service Profiles + put: + summary: Update Service Profile + description: Update the definition of a Service Profile. + operationId: update-service-profile + requestBody: + description: Service Profile definition + content: + application/json: + schema: + $ref: '#/components/schemas/ResourcesServiceProfile' + responses: + '204': + $ref: '#/components/responses/NoContent' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + default: + $ref: '#/components/responses/Unexpected' + tags: + - Service Profiles + delete: + summary: Delete a Service Profile + operationId: delete-service-profile + responses: + '204': + $ref: '#/components/responses/NoContent' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + default: + $ref: '#/components/responses/Unexpected' + description: Delete Service Profile based on unique service profile ID + tags: + - Service Profiles + + /serviceendpoints: + get: + operationId: get-service-endpoints + parameters: + - $ref: '#/components/parameters/region' + - $ref: '#/components/parameters/zone' + - $ref: '#/components/parameters/serviceEndpointsIds' + - $ref: '#/components/parameters/subscriberDensity' + - $ref: '#/components/parameters/UEIdentityType' + - $ref: '#/components/parameters/UEIdentity' + responses: + '200': + description: Find optimal Service Endpoints for clients to connect to + content: + application/json: + schema: + title: GetServiceEndpointsResponse + type: object + properties: + serviceEndpoints: + type: array + items: + $ref: '#/components/schemas/ResourcesEdgeHostedService' + links: + type: array + items: + oneOf: + - $ref: '#/components/schemas/LinksRegisterServiceEndpoint' + - $ref: '#/components/schemas/LinksCommon' + '401': + $ref: '#/components/responses/Unauthorized' + default: + $ref: '#/components/responses/Unexpected' + tags: + - Discovery + summary: Find optimal Service Endpoints for clients to connect to + description: Returns a list of optimal Service Endpoints that client devices can connect to. You can search based on Service Profile, Region, subscriber density or UEIdentity. + post: + operationId: register-service-endpoints + requestBody: + description: Array of Service Endpoints for a deployed application + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ResourcesEdgeHostedService' + responses: + '201': + # Action: discuss with team on diff with implementation and no 200 response + description: Returns a serviceEndpointsId + content: + application/json: + schema: + title: PostServiceEndpointResponse + type: object + properties: + serviceEndpointsId: + $ref: '#/components/schemas/TypesServiceEndpointsId' + links: + type: array + items: + oneOf: + - $ref: '#/components/schemas/LinksUpdateServiceEndpoint' + - $ref: '#/components/schemas/LinksDeleteServiceEndpoint' + - $ref: '#/components/schemas/LinksOptimalServiceEndpointsByServiceProfile' + - $ref: '#/components/schemas/LinksCommon' + '401': + $ref: '#/components/responses/Unauthorized' + default: + $ref: '#/components/responses/Unexpected' + tags: + - Service Endpoints + summary: Register Service Endpoints + description: Register Service Endpoints of a deployed application to specified MEC Platforms. + + '/serviceendpoints/{serviceEndpointsId}': + parameters: + - name: serviceEndpointsId + in: path + required: true + description: serviceEndpointsId param //added desc + schema: + $ref: '#/components/schemas/TypesServiceEndpointsId' + get: + operationId: get-service-endpoints-by-serviceEndpointsId + responses: + '200': + description: Arry of registered service endpoints + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ResourcesEdgeHostedService' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + default: + $ref: '#/components/responses/Unexpected' + tags: + - Service Endpoints + summary: Get registered edge service endpoint information + description: Returns endpoint information for all Service Endpoints registered to a specified serviceEndpointId. + put: + operationId: update-service-endpoint + requestBody: + description: Service Endpoint information + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ResourcesEdgeHostedService' + responses: + '204': + $ref: '#/components/responses/NoContent' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + default: + $ref: '#/components/responses/Unexpected' + tags: + - Service Endpoints + summary: Update a Service Endpoint + description: Update registered Service Endpoint information. + delete: + operationId: deregister-service-endpoint + responses: + '204': + $ref: '#/components/responses/NoContent' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + default: + $ref: '#/components/responses/Unexpected' + tags: + - Service Endpoints + summary: Deregister an application's Service Endpoint + description: Deregister an application's Service Endpoint from the MEC Platform(s). + + /mecplatforms: + get: + operationId: get-mecplatforms + parameters: + - $ref: '#/components/parameters/region' + - $ref: '#/components/parameters/zone' + - $ref: '#/components/parameters/serviceProfileId' + - $ref: '#/components/parameters/subscriberDensity' + - $ref: '#/components/parameters/UEIdentityType' + - $ref: '#/components/parameters/UEIdentity' + responses: + '200': + description: MEC platforms matching query parameters + content: + application/json: + schema: + title: GetMECPlatformsResponse + type: object + properties: + mecPlatforms: + type: array + items: + $ref: '#/components/schemas/ResourcesMecPlatform' + links: + type: array + items: + oneOf: + - $ref: '#/components/schemas/LinksOptimalMecPlatformsByRegion' + - $ref: '#/components/schemas/LinksOptimalMecPlatformsByDensity' + - $ref: '#/components/schemas/LinksOptimalMecPlatformsByServiceProfile' + - $ref: '#/components/schemas/LinksOptimalMecPlatformsByUe' + - $ref: '#/components/schemas/LinksRegisterServiceEndpoint' + - $ref: '#/components/schemas/LinksCommon' + '401': + $ref: '#/components/responses/Unauthorized' + default: + $ref: '#/components/responses/Unexpected' + tags: + - Discovery + summary: Discover optimal MEC Platforms for deployed applications + description: Returns a list of optimal MEC Platforms where you can register your deployed application. You can choose to search without passing any of the inputs paramaters or a combination of Service Profile, Region, subscriber density or UEIdentity. + + /regions: + get: + operationId: get-regions + responses: + '200': + description: List of the supported geographical regions + content: + application/json: + schema: + title: GetRegionsResponse + type: object + properties: + regions: + type: array + items: + $ref: '#/components/schemas/ResourcesRegionMetadata' + links: + type: array + items: + oneOf: + - $ref: '#/components/schemas/LinksOptimalMecPlatformsByRegion' + - $ref: '#/components/schemas/LinksOptimalServiceEndpointsByRegion' + - $ref: '#/components/schemas/LinksCommon' + '401': + $ref: '#/components/responses/Unauthorized' + default: + $ref: '#/components/responses/Unexpected' + tags: + - Discovery + summary: List the geographical regions supported, and the associated zones + description: List the geographical regions supported and the zones within each + + /regions/{regionId}: + parameters: + - in: path + name: regionId + required: true + description: regionId param //added desc + schema: + $ref: '#/components/schemas/TypesRegionId' + get: + operationId: get-region + responses: + '200': + description: Details of a region + content: + application/json: + schema: + $ref: '#/components/schemas/ResourcesRegion' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + default: + $ref: '#/components/responses/Unexpected' + tags: + - Discovery + summary: Fetch details for a region + description: Fetch details for a region + + /zones: + get: + operationId: get-zones + parameters: + - $ref: '#/components/parameters/region' + responses: + '200': + description: Zones matching query parameters + content: + application/json: + schema: + title: GetZonesResponse + type: object + properties: + zones: + type: array + items: + $ref: '#/components/schemas/ResourcesZoneMetadata' + links: + type: array + items: + oneOf: + - $ref: '#/components/schemas/LinksOptimalMecPlatformsByRegion' + - $ref: '#/components/schemas/LinksOptimalMecPlatformsByZone' + - $ref: '#/components/schemas/LinksOptimalServiceEndpointsByZone' + - $ref: '#/components/schemas/LinksCommon' + '401': + $ref: '#/components/responses/Unauthorized' + default: + $ref: '#/components/responses/Unexpected' + tags: + - Discovery + summary: List all zones, or zones within a region + description: Returns a list of all zones or zones within a specified region. + + '/zones/{zoneId}': + parameters: + - schema: + $ref: '#/components/schemas/TypesZoneId' + name: zoneId + in: path + required: true + description: zoneId param//added desc + get: + operationId: get-zone-by-Id + summary: Read the properties of a zone + responses: + '200': + description: Representation of the Zone resource + content: + application/json: + schema: + $ref: '#/components/schemas/ResourcesZone' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' + default: + $ref: '#/components/responses/Unexpected' + description: Read the properties of a zone + tags: + - Discovery + +components: + ###################################################### + # OAUTH + ####################################################### + securitySchemes: + oAuth2: + type: oauth2 + description: 'This API uses OAuth 2 with the implicit, password and client credentials grant flow' + flows: + implicit: + authorizationUrl: 'https://example.com/oauth/authorize' + scopes: + 'discovery:read': Grant read-only access to discovery data + 'serviceprofile:read': Grant read-only access to service profile data + 'serviceprofile:write': Grant write access to service profile data + 'serviceregistry:read': Grant read-only access to service registry data + 'serviceregistry:write': Grant write access to service registry data + password: + tokenUrl: 'https://example.com/oauth/token' + scopes: + 'discovery:read': Grant read-only access to discovery data + 'serviceprofile:read': Grant read-only access to service profile data + 'serviceprofile:write': Grant write access to service profile data + 'serviceregistry:read': Grant read-only access to Service registry data + 'serviceregistry:write': Grant write access to Service registry data + clientCredentials: + tokenUrl: 'https://example.com/oauth/token' + scopes: + 'discovery:read': Grant read-only access to discovery data + 'serviceprofile:read': Grant read-only access to service profile data + 'serviceprofile:write': Grant write access to service profile data + 'serviceregistry:read': Grant read-only access to Service registry data + 'serviceregistry:write': Grant write access to Service registry data + + ###################################################### + # RESOURCES + ####################################################### + schemas: + Resources: + type: array + description: Resources//added desc + items: + oneOf: + - $ref: '#/components/schemas/LinksAllRegions' + - $ref: '#/components/schemas/LinksAllZones' + - $ref: '#/components/schemas/LinksAllMecPlatforms' + - $ref: '#/components/schemas/LinksAllServiceProfiles' + - $ref: '#/components/schemas/LinksAllServiceEndpoints' + additionalProperties: false + ResourcesServiceProfile: + type: object + description: serviceprofileResource//added desc + properties: + serviceProfileId: + $ref: '#/components/schemas/TypesServiceProfileId' + clientType: + type: string + enum: + - V2X + - ComputerVision + - MachineLearning + - IoT + - Gaming + - AR + - VR + - Analytics + - Robotics + description: The category of application client. + preferredEdgeProvider: + type: string + description: identity of the preferred Edge Computing Service Provider + clientSchedule: + type: string + description: The expected operation schedule of the application client (e.g. time windows) + clientServiceArea: + type: string + description: The expected location(s) (e.g. route) of the hosting UE during the Client's operation schedule. + networkResources: + type: string + description: network resource name or properties + additionalProperties: + $ref: '#/components/schemas/TypesNetworkResources' + computeResources: + type: string + description: compute resource name or properties + additionalProperties: + $ref: '#/components/schemas/TypesComputeResources' + properties: + type: object + description: Resources//added desc + properties: + type: + type: string + data: + type: object + required: + - clientType + additionalProperties: false + ResourcesEdgeHostedService: + description: Edge hosted service represented by Service Endpoint definition + type: object + properties: + ern: + $ref: '#/components/schemas/TypesEdgeResource' + serviceEndpointsId: + $ref: '#/components/schemas/TypesServiceEndpointsId' + serviceEndpoint: + $ref: '#/components/schemas/ResourcesServiceEndpoint' + applicationServerProviderId: + type: string + description: Unique ID representing the Edge Application Provider + applicationId: + type: string + description: Unique ID representing the Edge Application + serviceDescription: + type: string + description: Description of the Service Endpoint + additionalProperties: false + serviceProfileId: + $ref: '#/components/schemas/TypesServiceProfileId' + ResourcesServiceEndpoint: + type: object + description: ServiceEndpoint//added desc + properties: + uri: + type: string + description: URI of Service Endpoint if available + format: uri + fqdn: + type: string + description: FQDN of Service Endpoint if available + ipv4Address: + type: string + description: IPv4 Address of Service Endpoint if available + format: ipv4 + ipv6Address: + type: string + description: IPv6 Address of Service Endpoint if available + format: ipv6 + port: + type: integer + description: | + Port information of Service Endpoint if IPv4 or IPv6 is mentioned + additionalProperties: false + ResourcesMecPlatform: + type: object + description: Mecplatform service//added desc + properties: + edgeResourceName: + $ref: '#/components/schemas/TypesEdgeResource' + zoneId: + $ref: '#/components/schemas/TypesZoneId' + regionId: + $ref: '#/components/schemas/TypesRegionId' + status: + description: Status of the MEC Platform (default is 'unknown') + type: string + enum: + - active + - inactive + - unknown + default: unknown + properties: + type: array + description: properties//added desc + items: + type: object + properties: + type: + type: string + data: + type: object + additionalProperties: false + ResourcesRegion: + description: Resources Region//added desc + allOf: + - $ref: '#/components/schemas/ResourcesRegionMetadata' + - type: object + required: + - zones + properties: + zones: + type: array + items: + $ref: '#/components/schemas/ResourcesZone' + additionalProperties: false + ResourcesRegionMetadata: + type: object + description: Metadata for region//added desc + properties: + regionId: + $ref: '#/components/schemas/TypesRegionId' + name: + type: string + description: name of service Endpoint if available //added desc + countryCode: + type: string + description: countrycode of service Endpoint if available //added desc + metro: + type: string + description: metro of service Endpoint if available //added desc + area: + type: string + description: area of service Endpoint if available //added desc + additionalProperties: false + + ResourcesZone: + description: Resources Zone//added desc + allOf: + - $ref: '#/components/schemas/ResourcesZoneMetadata' + - type: object + required: + - MECPlatforms + properties: + mecPlatforms: + type: array + items: + $ref: '#/components/schemas/ResourcesMecPlatform' + additionalProperties: false + ResourcesZoneMetadata: + type: object + description: Metadata for zone//added desc + properties: + zoneId: + $ref: '#/components/schemas/TypesZoneId' + regionId: + $ref: '#/components/schemas/TypesRegionId' + additionalProperties: false + + ###################################################### + # IDs + ####################################################### + TypesEdgeResource: + description: | + An object defined by the service provider representing an edge resource within its network domain, such as a MEC Platform. The string contains colon-separated metadata in the form ern::::: + type: string + additionalProperties: false + TypesRegionId: + description: | + Unique identifier representing a region + type: string + additionalProperties: false + TypesServiceEndpointsId: + description: | + A system-defined string identifier representing one or more registered Service Endpoints. + type: string + readOnly: true + additionalProperties: false + TypesServiceProfileId: + description: | + Unique identifier for a service profile + type: string + readOnly: false + additionalProperties: false + TypesZoneId: + description: | + Unique identifier representing a zone + type: string + additionalProperties: false + + ###################################################### + # TYPES + ####################################################### + TypesNetworkResources: + type: object + description: network resources//added desc + properties: + minBandwidthKbits: + type: integer + description: Minimum required connection bandwidth in Kbit/s for the application + serviceContinuitySupport: + type: boolean + description: Indicates if service continuity support is required or not for the application. + maxRequestRate: + type: integer + description: Maximum request rate that the application can handle + maxLatencyMs: + type: integer + description: 'Maximum response time or latency that the application can handle, in miliseconds' + minAvailability: + type: integer + description: Minimum availability required for the server + additionalProperties: false + TypesComputeResources: + type: object + properties: + GPU: + type: object + description: compute resources//added desc + properties: + minCoreClockMHz: + type: integer + description: Minimum Core Clock value in megahertz + minMemoryClockMHz: + type: integer + description: Minimum Memory Clock value in megahertz + minBandwidthGBs: + type: integer + description: Minimum GPU bandwidth in GB/s + minTFLOPS: + type: integer + description: Minimum Floating Point Operations Per Second in Teraflops. + minRAMGB: + type: integer + description: minimum RAM required in Gigabytes. + minStorageGB: + type: integer + description: Minimum storgae requirement in Gigabytes + description: Compute resources of a service profile + additionalProperties: false + TypesError: + type: object + description: types Error//added desc + properties: + code: + type: string + description: code //added desc + message: + type: string + description: message //added desc + links: + $ref: '#/components/schemas/LinksCommon' + required: + - code + - message + - links + additionalProperties: false + TypesUeIdentityType: + description: Type of User Equipment identifier used in `UEIdentity`. + type: string + enum: + - IPAddress + - MSISDN + - IMEI + - MDN + - GPSI + TypesUeIdentity: + description: Identifier value for User Equipment. The type of identifier is defined by the 'UEIdentityType' parameter. + type: string + + ###################################################### + # LINKS + ####################################################### + LinksAllMecPlatforms: + type: object + description: links all Mex platforms //added desc + readOnly: true + properties: + link: + type: object + description: link //added desc + properties: + rel: + type: string + pattern: ListMECPlatforms + example: ListMECPlatforms + method: + type: string + pattern: get + example: get + href: + type: string + pattern: '\/mecplatforms' + example: /mecplatforms + required: + - href + - rel + - method + additionalProperties: false + + LinksAllServiceProfiles: + type: object + description: linking all service profiles //added desc + readOnly: true + properties: + link: + type: object + description: link //added desc + properties: + rel: + type: string + pattern: ListServiceProfiles + example: ListServiceProfiles + method: + type: string + pattern: get + example: get + href: + type: string + pattern: '\/serviceprofiles' + example: /serviceprofiles + required: + - href + - rel + - method + additionalProperties: false + LinksAllServiceEndpoints: + type: object + description: links all service endpoints //added desc + readOnly: true + properties: + link: + type: object + description: link //added desc + properties: + rel: + type: string + pattern: ListServiceEndpoints + example: ListServiceEndpoints + method: + type: string + pattern: get + example: get + href: + type: string + pattern: '\/serviceendpoints' + example: /serviceendpoints + required: + - href + - rel + - method + additionalProperties: false + LinksAllRegions: + type: object + description: links all Regions //added desc + readOnly: true + properties: + link: + type: object + description: link //added desc + properties: + rel: + type: string + pattern: ListRegions + example: ListRegions + method: + type: string + pattern: get + example: get + href: + type: string + pattern: '\/regions' + example: /regions + required: + - href + - rel + - method + additionalProperties: false + LinksAllZones: + type: object + description: links all zones //added desc + readOnly: true + properties: + link: + type: object + description: link //added desc + properties: + rel: + type: string + pattern: ListZones + example: ListZones + method: + type: string + pattern: get + example: get + href: + type: string + pattern: '\/zones' + example: /zones + required: + - href + - rel + - method + additionalProperties: false + LinksOptimalMecPlatformsByRegion: + type: object + readOnly: true + description: Links OptimalMecPlatforms By Region //added desc + properties: + link: + type: object + description: link //added desc + properties: + rel: + type: string + pattern: GetOptimalPlatformsByRegion + example: GetOptimalPlatformsByRegion + method: + type: string + pattern: get + example: get + href: + type: string + pattern: '\/mecplatforms\?region=[a-zA-Z0-9-]*$' + example: /mecplatforms?region=us-east1 + required: + - href + - rel + - method + additionalProperties: false + LinksOptimalMecPlatformsByZone: + type: object + description: links all optimalMECPlatforms byregion //added desc + readOnly: true + properties: + link: + type: object + description: link //added desc + properties: + rel: + type: string + pattern: GetOptimalPlatformsByZone + example: GetOptimalPlatformsByZone + method: + type: string + pattern: get + example: get + href: + type: string + pattern: '\/mecplatforms\?zone=[a-zA-Z0-9-]*$' + example: /mecplatforms?zone=us-east1-boston + required: + - href + - rel + - method + additionalProperties: false + LinksOptimalMecPlatformsByDensity: + type: object + description: Links OptimalMecPlatforms By Density //added desc + readOnly: true + properties: + link: + type: object + description: link //added desc + properties: + rel: + type: string + pattern: GetOptimalPlatformsBySubscriberDensity + example: GetOptimalPlatformsBySubscriberDensity + method: + type: string + pattern: get + example: get + href: + type: string + pattern: '\/mecplatforms\?subscriberDensity=[0-9]*$' + example: /mecplatforms?subscriberDensity=100 + required: + - href + - rel + - method + additionalProperties: false + LinksOptimalMecPlatformsByServiceProfile: + type: object + description: Links OptimalMecPlatforms By service profile //added desc + readOnly: true + properties: + link: + type: object + description: link //added desc + properties: + rel: + type: string + pattern: GetOptimalPlatformsByServiceProfile + example: GetOptimalPlatformsByServiceProfile + method: + type: string + pattern: get + example: get + href: + type: string + pattern: '\/mecplatforms\?serviceProfileId=[a-zA-Z0-9-]*$' + example: /mecplatforms?serviceProfileId=12345 + required: + - href + - rel + - method + additionalProperties: false + LinksOptimalMecPlatformsByUe: + type: object + description: Links OptimalMecPlatforms By UE //added desc + readOnly: true + properties: + link: + type: object + description: link //added desc + properties: + rel: + type: string + pattern: GetOptimalPlatformsByUEId + example: GetOptimalPlatformsByUEId + method: + type: string + pattern: get + example: get + href: + type: string + pattern: '\/mecplatforms\?UEIdentityType=[a-zA-Z0-9-]*\&UEIdentity=[a-zA-Z0-9.-]*' + example: /mecplatforms?UEIdentityType=IPAddress&UEIdentity=123.456.78.101 + required: + - href + - rel + - method + additionalProperties: false + LinksRegisterServiceEndpoint: + type: object + description: Links Register ServiceEndpoint //added desc + readOnly: true + properties: + link: + type: object + description: Link //added desc + properties: + rel: + type: string + pattern: RegisterServiceEndpoint + example: RegisterServiceEndpoint + method: + type: string + pattern: post + example: post + href: + type: string + pattern: /serviceendpoints + example: /serviceendpoints + required: + - href + - rel + - method + additionalProperties: false + LinksUpdateServiceEndpoint: + type: object + description: Links Update ServiceEndpoint //added desc + readOnly: true + properties: + link: + type: object + description: Link //added desc + properties: + rel: + type: string + pattern: UpdateServiceEndpoint + example: UpdateServiceEndpoint + method: + type: string + pattern: put + example: put + href: + type: string + pattern: '\/serviceendpoints\/[A-Za-z0-9]*$' + example: /serviceendpoints/98765 + required: + - href + - rel + - method + additionalProperties: false + LinksDeleteServiceEndpoint: + type: object + description: Links Delete ServiceEndpoint //added desc + readOnly: true + properties: + link: + type: object + description: Link //added desc + properties: + rel: + type: string + pattern: DeleteServiceEndpoint + example: DeleteServiceEndpoint + method: + type: string + pattern: delete + example: delete + href: + type: string + pattern: '\/serviceendpoints\/[A-Za-z0-9]*$' + example: /serviceendpoints/98765 + required: + - href + - rel + - method + additionalProperties: false + LinksOptimalServiceEndpointsByServiceProfile: + type: object + description: Links ServiceEndpoint by service profile //added desc + readOnly: true + properties: + link: + type: object + description: Link //added desc + properties: + rel: + type: string + pattern: ListServiceEndpointsByServiceProfileId + example: ListServiceEndpointsByServiceProfileId + method: + type: string + pattern: get + example: get + href: + type: string + pattern: '\/serviceendpoints\?serviceProfileId=[A-Za-z0-9]*$' + example: /serviceendpoints?serviceProfileId=12345 + required: + - href + - rel + - method + additionalProperties: false + LinksOptimalServiceEndpointsByZone: + type: object + description: Links ServiceEndpoint by zone //added desc + readOnly: true + properties: + link: + type: object + description: Link //added desc + properties: + rel: + type: string + pattern: GetOptimalServiceEndpointsByZone + example: GetOptimalServiceEndpointsByZone + method: + type: string + pattern: get + example: get + href: + type: string + pattern: '\/serviceendpoints\?zone=[A-Za-z0-9-]*$' + example: /serviceendpoints?zone=us-east1 + required: + - href + - rel + - method + additionalProperties: false + LinksOptimalServiceEndpointsByRegion: + type: object + description: Links ServiceEndpoint by region //added desc + readOnly: true + properties: + link: + type: object + description: Link //added desc + properties: + rel: + type: string + pattern: GetOptimalServiceEndpointsByRegion + example: GetOptimalServiceEndpointsByRegion + method: + type: string + pattern: get + example: get + href: + type: string + pattern: /serviceendpoints?region={string} + required: + - href + - rel + - method + additionalProperties: false + LinksCreateServiceProfile: + type: object + description: Links create service profile //added desc + readOnly: true + properties: + link: + type: object + description: Link //added desc + properties: + rel: + type: string + pattern: CreateServiceProfile + example: CreateServiceProfile + method: + type: string + pattern: post + example: post + href: + type: string + pattern: /serviceprofiles + example: /serviceprofiles + required: + - href + - rel + - method + additionalProperties: false + LinksUpdateServiceProfile: + type: object + description: Links Update service profile //added desc + readOnly: true + properties: + link: + type: object + description: Link //added desc + properties: + rel: + type: string + pattern: UpdateServiceProfile + example: UpdateServiceProfile + method: + type: string + pattern: put + example: put + href: + type: string + pattern: '\/serviceprofiles\/[0-9]*$' + example: /serviceprofiles/12345 + required: + - href + - rel + - method + additionalProperties: false + LinksDeleteServiceProfile: + type: object + description: Links delete Serviceprofile //added desc + readOnly: true + properties: + link: + type: object + description: Link //added desc + properties: + rel: + type: string + pattern: DeleteServiceProfile + example: DeleteServiceProfile + method: + type: string + pattern: delete + example: delete + href: + type: string + pattern: '\/serviceprofiles\/[0-9]*$' + example: /serviceprofiles/12345 + required: + - href + - rel + - method + additionalProperties: false + LinksSelf: + type: object + description: Links Self //added desc + readOnly: true + properties: + link: + type: object + description: Link //added desc + properties: + rel: + type: string + pattern: self + example: self + method: + type: string + pattern: get + example: get + href: + type: string + format: uri + required: + - href + - rel + - method + additionalProperties: false + LinksVersionHistory: + type: object + description: Links version history //added desc + readOnly: true + properties: + link: + type: object + description: Link //added desc + properties: + rel: + type: string + pattern: version-history + example: version-history + method: + type: string + pattern: get + example: get + href: + type: string + format: uri + required: + - href + - rel + - method + additionalProperties: false + LinksTermsOfService: + type: object + description: Links terms of service //added desc + readOnly: true + properties: + link: + type: object + description: Link //added desc + properties: + rel: + type: string + pattern: terms-of-service + example: terms-of-service + method: + type: string + pattern: get + example: get + href: + type: string + format: uri + required: + - href + - rel + - method + additionalProperties: false + LinksBookmark: + type: object + description: Links bookmark //added desc + readOnly: true + properties: + link: + type: object + description: Link //added desc + properties: + rel: + type: string + pattern: bookmark + example: bookmark + method: + type: string + pattern: get + example: get + href: + type: string + format: uri + required: + - href + - rel + - method + additionalProperties: false + LinksCommon: + type: array + description: Links common //added desc + readOnly: true + items: + oneOf: + - $ref: '#/components/schemas/LinksSelf' + - $ref: '#/components/schemas/LinksVersionHistory' + - $ref: '#/components/schemas/LinksTermsOfService' + - $ref: '#/components/schemas/LinksBookmark' + + ###################################################### + # PARAMETERS + ####################################################### + parameters: + serviceProfileId: + name: serviceProfileId + description: service profile identifier + in: query + required: false + schema: + type: string + region: + name: region + description: MEC region ID + in: query + required: false + schema: + type: string + serviceEndpointsIds: + name: serviceEndpointsIds + description: serviceEndpointsIds, delimited by pipe. Each serviceEndpointsId is a pointer to the service endpoints (IP address, FQDN etc.) previously registered for a given service. + in: query + required: true + schema: + type: array + items: + $ref: '#/components/schemas/TypesServiceEndpointsId' + style: pipeDelimited + explode: false + subscriberDensity: + name: subscriberDensity + description: Minimum number of 4G/5G subscribers per square kilometer. + in: query + required: false + schema: + type: integer + UEIdentityType: + name: ueIdentityType + description: Type of User Equipment identifier used in `UEIdentity`. + in: query + required: false + schema: + $ref: '#/components/schemas/TypesUeIdentityType' + UEIdentity: + name: ueIdentity + description: Identifier value for User Equipment. The type of identifier is defined by the UEIdentityType parameter. + in: query + required: false + schema: + $ref: '#/components/schemas/TypesUeIdentity' + zone: + name: zone + description: MEC zone ID + in: query + required: false + schema: + type: string + + ###################################################### + # RESPONSES + ####################################################### + responses: + NoContent: + description: HTTP 204 No Content + BadRequest: + description: HTTP 400 Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/TypesError' + NotFound: + description: HTTP 404 The specified resource was not found + content: + application/json: + schema: + $ref: '#/components/schemas/TypesError' + Unauthorized: + description: HTTP 401 Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/TypesError' + Unexpected: + description: HTTP 500 Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/TypesError'