From 1ba59e805a8db00dfb162001e0048903406d544c Mon Sep 17 00:00:00 2001 From: featherstone Date: Fri, 21 Jun 2019 12:09:02 +0100 Subject: [PATCH] Updated to align with GS MEC-011 v2.0.9 - added yaml files --- MecAppSupportApi.yaml | 1297 ++++++++++++++++++++++++++++++++++++++++ MecServiceMgmtApi.yaml | 1171 ++++++++++++++++++++++++++++++++++++ 2 files changed, 2468 insertions(+) create mode 100644 MecAppSupportApi.yaml create mode 100644 MecServiceMgmtApi.yaml diff --git a/MecAppSupportApi.yaml b/MecAppSupportApi.yaml new file mode 100644 index 0000000..764139d --- /dev/null +++ b/MecAppSupportApi.yaml @@ -0,0 +1,1297 @@ +openapi: 3.0.2 +servers: + - url: 'http://127.0.0.1:8081/mec_app_support/v1' + - url: 'https://127.0.0.1:8081/mec_app_support/v1' +info: + title: MEC Application Support API + version: 2.0.9 + description: The ETSI MEC ISG MEC011 MEC Application Support API described using OpenAPI + license: + name: ETSI Forge copyright notice + url: 'https://forge.etsi.org/etsi-forge-copyright-notice.txt' + contact: + email: cti_support@etsi.org +externalDocs: + description: 'ETSI GS MEC011 Application Enablement API, V2.0.9' + url: >- + https://docbox.etsi.org/ISG/MEC/70-Draft/0011v211Plat.App.Enabl/MEC-0011v211Plat.App.Enablv209.zip +tags: + - name: appTrafficRules + - name: appDnsRules + - name: appSubscriptions + - name: appConfirmTermination + - name: timing + - name: callbacks +paths: + '/applications/{appInstanceId}/traffic_rules': + parameters: + - $ref: '#/components/parameters/Path.AppInstanceId' + get: + description: >- + This method retrieves information about all the traffic rules associated + with a MEC application instance. + operationId: ApplicationsTrafficRules_GET + tags: + - appTrafficRules + responses: + '200': + $ref: '#/components/responses/ApplicationsTrafficRules.200' + '400': + $ref: '#/components/responses/Error.400' + '403': + $ref: '#/components/responses/Error.403' + '404': + $ref: '#/components/responses/Error.404' + '/applications/{appInstanceId}/traffic_rules/{trafficRuleId}': + parameters: + - $ref: '#/components/parameters/Path.AppInstanceId' + - $ref: '#/components/parameters/Path.TrafficRuleId' + get: + description: >- + This method retrieves information about all the traffic rules associated + with a MEC application instance. + operationId: ApplicationsTrafficRule_GET + tags: + - appTrafficRules + responses: + '200': + $ref: '#/components/responses/ApplicationsTrafficRule.200' + '400': + $ref: '#/components/responses/Error.400' + '403': + $ref: '#/components/responses/Error.403' + '404': + $ref: '#/components/responses/Error.404' + put: + description: >- + This method retrieves information about all the traffic rules associated + with a MEC application instance. + operationId: ApplicationsTrafficRule_PUT + tags: + - appTrafficRules + responses: + '200': + $ref: '#/components/responses/ApplicationsTrafficRule.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/ApplicationsTrafficRule' + '/applications/{appInstanceId}/dns_rules': + parameters: + - $ref: '#/components/parameters/Path.AppInstanceId' + get: + description: >- + This method retrieves information about all the DNS rules associated + with a MEC application instance. + operationId: ApplicationsDnsRules_GET + tags: + - appDnsRules + responses: + '200': + $ref: '#/components/responses/ApplicationsDnsRules.200' + '400': + $ref: '#/components/responses/Error.400' + '403': + $ref: '#/components/responses/Error.403' + '404': + $ref: '#/components/responses/Error.404' + '/applications/{appInstanceId}/dns_rules/{dnsRuleId}': + parameters: + - $ref: '#/components/parameters/Path.AppInstanceId' + - $ref: '#/components/parameters/Path.DnsRuleId' + get: + description: >- + This method retrieves information about a DNS rule associated with a + MEC application instance. + operationId: ApplicationsDnsRule_GET + tags: + - appDnsRules + responses: + '200': + $ref: '#/components/responses/ApplicationsDnsRule.200' + '400': + $ref: '#/components/responses/Error.400' + '403': + $ref: '#/components/responses/Error.403' + '404': + $ref: '#/components/responses/Error.404' + put: + description: 'This method activates, de-activates or updates a traffic rule.' + operationId: ApplicationsDnsRule_PUT + tags: + - appDnsRules + responses: + '200': + $ref: '#/components/responses/ApplicationsDnsRule.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/ApplicationsDnsRule' + '/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: + appTerminationNotification: + $ref: '#/components/callbacks/AppTerminationNotification' + '/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 mecAppSuptApiSubscription. 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' + '/applications/{appInstanceId}/confirm_termination': + parameters: + - $ref: '#/components/parameters/Path.AppInstanceId' + post: + description: >- + This method is used to confirm the application level termination + of an application instance. + operationId: ApplicationsConfirmTermination_POST + tags: + - appConfirmTermination + responses: + '204': + description: No Content + '401': + $ref: '#/components/responses/Error.401' + '403': + $ref: '#/components/responses/Error.403' + '404': + $ref: '#/components/responses/Error.404' + '409': + $ref: '#/components/responses/Error.409' + '429': + $ref: '#/components/responses/Error.429' + '/timing/timing_caps': + get: + description: >- + This method retrieves the information of the platform's timing + capabilities which corresponds to the timing capabilities query + operationId: TimingCaps_GET + tags: + - timing + responses: + '200': + $ref: '#/components/responses/TimingCaps.200' + '400': + $ref: '#/components/responses/Error.400' + '403': + $ref: '#/components/responses/Error.403' + '404': + $ref: '#/components/responses/Error.404' + '/timing/current_time': + get: + description: >- + This method retrieves the information of the platform's current time + which corresponds to the get platform time procedure + operationId: TimingCurrentTime_GET + tags: + - timing + responses: + '200': + $ref: '#/components/responses/TimingCurrentTime.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 + AppTerminationNotification.Links: + description: >- + Object containing hyperlinks related to the resource. + type: object + required: + - subscription + properties: + subscription: + $ref: '#/components/schemas/LinkType' + confirmTermination: + $ref: '#/components/schemas/LinkType.ConfirmTermination' + AppTerminationNotification.MaxGracefulTimeout: + description: >- + Maximum timeout value in seconds for graceful termination or graceful + stop of an application instance. + type: integer + format: uint32 + example: 10 + AppTerminationNotification.NotificationType: + description: Shall be set to AppTerminationNotification. + type: string + example: 'AppTerminationNotification' + AppTerminationNotification: + description: >- + This type represents the information that the MEC platform + notifies the subscribed application instance about the corresponding + application instance termination/stop. + type: object + required: + - notificationType + - maxGracefulTimeout + - _links + properties: + notificationType: + $ref: '#/components/schemas/AppTerminationNotification.NotificationType' + maxGracefulTimeout: + $ref: '#/components/schemas/AppTerminationNotification.MaxGracefulTimeout' + _links: + $ref: '#/components/schemas/AppTerminationNotification.Links' + AppTerminationNotificationSubscription.AppInstanceId: + description: It is used as the filtering criterion for the subscribed events. + type: string + example: 'ID1' + AppTerminationNotificationSubscription.CallbackReference: + description: >- + URI selected by the MEC application instance to receive + notifications on the subscribed MEC application instance + management information. This shall be included in both the request and + the response. + type: string + format: uri + AppTerminationNotificationSubscription: + description: >- + This type represents the information that the MEC platform + notifies the subscribed application instance about the corresponding + application instance termination/stop. + type: object + required: + - subscriptionType + - callbackReference + - _links + - appInstanceId + properties: + subscriptionType: + $ref: >- + #/components/schemas/AppTerminationNotificationSubscription.SubscriptionType + callbackReference: + $ref: >- + #/components/schemas/AppTerminationNotificationSubscription.CallbackReference + _links: + $ref: '#/components/schemas/Self' + appInstanceId: + $ref: >- + #/components/schemas/AppTerminationNotificationSubscription.AppInstanceId + AppTerminationNotificationSubscription.SubscriptionType: + description: Shall be set to AppTerminationNotificationSubscription. + type: string + example: 'AppTerminationNotificationSubscription' + CurrentTime: + description: >- + This type represents the information provided by the MEC + platform in response to the Get Platform Time Request message. + type: object + required: + - nanoSeconds + - seconds + - timeSourceStatus + properties: + seconds: + type: integer + format: uint32 + description: >- + The seconds part of the time. Time is defined as Unix-time since + January 1, 1970, 00:00:00 UTC + example: 1577836800 + nanoSeconds: + type: integer + format: uint32 + description: >- + The nanoseconds part of the time. Time is defined as Unix-time since + January 1, 1970, 00:00:00 UTC + example: 0 + timeSourceStatus: + type: string + enum: + - TRACEABLE + - NONTRACEABLE + description: >- + Platform Time Source status. 1 = TRACEABLE - time source is locked + to the UTC time source. 2 = NONTRACEABLE - time source is not locked + to the UTC time source + example: 'TRACEABLE' + DestinationInterface.InterfaceType: + description: Type of the interface + type: string + enum: + - TUNNEL + - MAC + - IP + example: 'TUNNEL' + DestinationInterface.IpAddress: + description: IP address of the remote destination + type: string + example: '192.0.2.0' + DestinationInterface.MacAddress: + description: Source address identifies the MAC address of the interface + type: string + example: '02-00-00-00-00-00' + DestinationInterface: + description: This type represents the destination interface. + type: object + required: + - interfaceType + properties: + interfaceType: + $ref: '#/components/schemas/DestinationInterface.InterfaceType' + tunnelInfo: + $ref: '#/components/schemas/TunnelInfo' + srcMacAddress: + $ref: '#/components/schemas/DestinationInterface.MacAddress' + dstMacAddress: + $ref: '#/components/schemas/DestinationInterface.MacAddress' + dstIpAddress: + $ref: '#/components/schemas/DestinationInterface.IpAddress' + DnsRule.DomainName: + description: FQDN resolved by the DNS rule + type: string + example: 'www.example.com' + DnsRule.Id: + description: Identifies the DNS Rule + type: string + example: 'dnsRule1' + DnsRule.IpAddress: + description: IP address associated with the FQDN resolved by the DNS rule + type: string + example: '192.0.2.0' + DnsRule.IpAddressType: + description: IP address type + type: string + enum: + - IP_V6 + - IP_V4 + example: 'IP_V6' + DnsRule.State: + description: DNS rule state + type: string + enum: + - ACTIVE + - INACTIVE + example: 'ACTIVE' + DnsRule.Ttl: + description: Time to live value + type: integer + format: uint32 + example: '?' + DnsRule: + description: This type represents the general information of a DNS rule. + type: object + required: + - dnsRuleId + - domainName + - ipAddressType + - ipAddress + - state + properties: + dnsRuleId: + $ref: '#/components/schemas/DnsRule.Id' + domainName: + $ref: '#/components/schemas/DnsRule.DomainName' + ipAddressType: + $ref: '#/components/schemas/DnsRule.IpAddressType' + ipAddress: + $ref: '#/components/schemas/DnsRule.IpAddress' + ttl: + $ref: '#/components/schemas/DnsRule.Ttl' + state: + $ref: '#/components/schemas/DnsRule.State' + LinkType: + description: This type represents a type of link and may be referenced from data structures + type: object + properties: + href: + $ref: '#/components/schemas/Href' + LinkType.ConfirmTermination: + description: >- + Link to the task resource where to confirm termination in case the + application is ready to be terminated before expiry of the timeout. + type: object + properties: + href: + $ref: '#/components/schemas/Href' + Href: + description: URI referring to a resource + type: string + format: uri + example: '/mecAppSuptApi/example' + MecAppSuptApiSubscriptionLinkList.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/MecAppSuptApiSubscriptionLinkList.Subscription' + MecAppSuptApiSubscriptionLinkList.Subscription: + description: A link to a subscription. + type: object + required: + - href + - rel + properties: + href: + $ref: '#/components/schemas/Href' + rel: + description: >- + The values shall be set to AppTerminationNotificationSubscription. + type: string + MecAppSuptApiSubscriptionLinkList: + 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/MecAppSuptApiSubscriptionLinkList.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 + Self: + description: Self-referring URI. + type: object + required: + - self + properties: + self: + $ref: '#/components/schemas/LinkType' + readOnly: true + TimingCaps.NtpServers.AuthenticationKeyNum: + description: Authentication key number + type: integer + format: uint32 + example: 1 + TimingCaps.NtpServers.AuthenticationOption: + description: NTP authentication option + type: string + enum: + - NONE + - SYMMETRIC_KEY + - AUTO_KEY + example: 'NONE' + TimingCaps.NtpServers.DelayReqMaxRate: + description: Acceptable maximum rate of the Delay_Req messages in packets per second + type: integer + format: uint32 + example: 10 + TimingCaps.NtpServers.LocalPriority: + description: NTP server local priority + type: integer + format: uint32 + example: 1 + TimingCaps.NtpServers.MaxPollingInterval: + description: >- + Maximum poll interval for NTP messages, in seconds as a power of two. + Range 3...17 + type: integer + format: uint32 + example: 17 + TimingCaps.NtpServers.MinPollingInterval: + description: >- + Minimum poll interval for NTP messages, in seconds as a power of two. + Range 3...17 + type: integer + format: uint32 + example: 3 + TimingCaps.NtpServers.NtpServerAddr: + description: NTP server address + type: string + example: '192.0.2.0' + TimingCaps.NtpServers.NtpServerAddrType: + description: Address type of NTP server + type: string + enum: + - IP_ADDRESS + - DNS_NAME + example: 'IP_ADDRESS' + TimingCaps.NtpServers_PtpMasterIpAddress: + description: PTP Master IP Address + type: string + example: '192.0.2.0' + TimingCaps.NtpServers_PtpMasterLocalPriority: + description: PTP Master local priority + type: integer + format: uint32 + example: 1 + TimingCaps.NtpServers: + description: NTP server detail. + type: object + required: + - ntpServerAddrType + - ntpServerAddr + - minPollingInterval + - maxPollingInterval + - localPriority + - authenticationOption + - authenticationKeyNum + properties: + ntpServerAddrType: + $ref: '#/components/schemas/TimingCaps.NtpServers.NtpServerAddrType' + ntpServerAddr: + $ref: '#/components/schemas/TimingCaps.NtpServers.NtpServerAddr' + minPollingInterval: + $ref: '#/components/schemas/TimingCaps.NtpServers.MinPollingInterval' + maxPollingInterval: + $ref: '#/components/schemas/TimingCaps.NtpServers.MaxPollingInterval' + localPriority: + $ref: '#/components/schemas/TimingCaps.NtpServers.LocalPriority' + authenticationOption: + $ref: '#/components/schemas/TimingCaps.NtpServers.AuthenticationOption' + authenticationKeyNum: + $ref: '#/components/schemas/TimingCaps.NtpServers.AuthenticationKeyNum' + TimingCaps_PtpMasters: + description: NTP server detail. + type: object + required: + - ptpMasterIpAddress + - ptpMasterLocalPriority + - delayReqMaxRate + properties: + ptpMasterIpAddress: + $ref: '#/components/schemas/TimingCaps.NtpServers_PtpMasterIpAddress' + ptpMasterLocalPriority: + $ref: '#/components/schemas/TimingCaps.NtpServers_PtpMasterLocalPriority' + delayReqMaxRate: + $ref: '#/components/schemas/TimingCaps.NtpServers.DelayReqMaxRate' + TimingCaps.TimeStamp: + description: time + type: object + required: + - nanoSeconds + - seconds + properties: + seconds: + type: integer + format: uint32 + description: >- + The seconds part of the time. Time is defined as Unix-time since + January 1, 1970, 00:00:00 UTC + example: 1577836800 + nanoSeconds: + type: integer + format: uint32 + description: >- + The nanoseconds part of the time. Time is defined as Unix-time since + January 1, 1970, 00:00:00 UTC + example: 0 + TimingCaps: + description: >- + This type represents the information provided by the MEC + platform in response to the Timing capabilities Query message. + type: object + properties: + timeStamp: + $ref: '#/components/schemas/TimingCaps.TimeStamp' + ntpServers: + description: Available NTP servers + type: array + items: + $ref: '#/components/schemas/TimingCaps.NtpServers' + ptpMasters: + description: Available PTP Masters + type: array + items: + $ref: '#/components/schemas/TimingCaps_PtpMasters' + TrafficFilter.Address: + description: Identify the traffic ip address. + type: string + example: '192.168.1.1' + TrafficFilter.DSCP: + description: >- + Used to match all IPv4 packets that have the same Differentiated + Services Code Point (DSCP) + type: integer + format: uint32 + example: 0 + TrafficFilter.Port: + description: A port + type: string + example: '8080' + TrafficFilter.Protocol: + description: Protocol of the traffic filter + type: string + example: '?' + TrafficFilter.QCI: + description: >- + Used to match all packets that have the same Quality Class Indicator + (QCI). + type: integer + format: uint32 + example: 1 + TrafficFilter.TC: + description: Used to match all IPv6 packets that have the same Traffic Class. + type: integer + format: uint32 + example: 1 + TrafficFilter.Token: + description: Used for token based traffic rule + type: string + example: '?' + TrafficFilter.TunnelAddress: + description: Used for GTP tunnel based traffic rule + type: string + example: '?' + TrafficFilter.TunnelPort: + description: Used for GTP tunnel based traffic rule + type: string + example: '?' + TrafficFilter: + description: This type represents the traffic filter. + type: object + properties: + srcAddress: + description: >- + An IP address or a range of IP address. For IPv4, the IP address + could be an IP address plus mask, or an individual IP address, or a + range of IP addresses. For IPv6, the IP address could be an IP + prefix, or a range of IP prefixes. + type: array + items: + $ref: '#/components/schemas/TrafficFilter.Address' + dstAddress: + description: >- + An IP address or a range of IP address. For IPv4, the IP address + could be an IP address plus mask, or an individual IP address, or a + range of IP addresses. For IPv6, the IP address could be an IP + prefix, or a range of IP prefixes. + type: array + items: + $ref: '#/components/schemas/TrafficFilter.Address' + srcPort: + description: A port or a range of ports + type: array + items: + $ref: '#/components/schemas/TrafficFilter.Port' + dstPort: + description: A port or a range of ports + type: array + items: + $ref: '#/components/schemas/TrafficFilter.Port' + protocol: + description: Specify the protocol of the traffic filter + type: array + items: + $ref: '#/components/schemas/TrafficFilter.Protocol' + token: + description: Used for token based traffic rule + type: array + items: + $ref: '#/components/schemas/TrafficFilter.Token' + srcTunnelAddress: + description: Used for GTP tunnel based traffic rule + type: array + items: + $ref: '#/components/schemas/TrafficFilter.TunnelAddress' + tgtTunnelAddress: + description: Used for GTP tunnel based traffic rule + type: array + items: + $ref: '#/components/schemas/TrafficFilter.TunnelAddress' + srcTunnelPort: + description: Used for GTP tunnel based traffic rule + type: array + items: + $ref: '#/components/schemas/TrafficFilter.TunnelPort' + dstTunnelPort: + description: Used for GTP tunnel based traffic rule + type: array + items: + $ref: '#/components/schemas/TrafficFilter.TunnelPort' + qCI: + $ref: '#/components/schemas/TrafficFilter.QCI' + dSCP: + $ref: '#/components/schemas/TrafficFilter.DSCP' + tC: + $ref: '#/components/schemas/TrafficFilter.TC' + TrafficRule.Action: + description: >- + The action of the ME host data plane when a packet matches the + trafficFilter + type: string + enum: + - DROP + - FORWARD_DECAPSULATED + - FORWARD_AS_IS + - PASSTHROUGH + - DUPLICATE_DECAPSULATED + - DUPLICATE_AS_IS + example: 'DROP' + TrafficRule.FilterType: + description: >- + Definition of filter per FLOW or PACKET. If flow the filter match + UE->EPC packet and the reverse packet is handled in the same context + type: string + enum: + - FLOW + - PACKET + example: FLOW + TrafficRule.Id: + description: Identify the traffic rule. + type: string + example: 'TrafficRule1' + TrafficRule_Priority: + description: >- + Priority of this traffic rule. If traffic rule conflicts, the one with + higher priority take precedence + type: integer + format: uint32 + example: 1 + TrafficRule.State: + description: Contains the traffic rule state + type: string + enum: + - ACTIVE + - INACTIVE + example: 'ACTIVE' + TrafficRule: + description: This type represents the general information of a traffic rule. + type: object + required: + - trafficRuleId + - filterType + - priority + - trafficFilter + - action + - state + properties: + trafficRuleId: + $ref: '#/components/schemas/TrafficRule.Id' + filterType: + $ref: '#/components/schemas/TrafficRule.FilterType' + priority: + $ref: '#/components/schemas/TrafficRule_Priority' + trafficFilter: + type: array + items: + $ref: '#/components/schemas/TrafficFilter' + action: + $ref: '#/components/schemas/TrafficRule.Action' + dstInterface: + $ref: '#/components/schemas/DestinationInterface' + state: + $ref: '#/components/schemas/TrafficRule.State' + TunnelInfo.TunnelDstAddress: + description: Destination address of the tunnel + type: string + example: '?' + TunnelInfo.TunnelSrcAddress: + description: Source address of the tunnel + type: string + example: '?' + TunnelInfo.TunnelType: + description: This type represents the tunnel information. + type: string + enum: + - GTP_U + - GRE + example: 'GTP_U' + TunnelInfo: + description: This type represents the tunnel information. + type: object + required: + - tunnelType + properties: + tunnelType: + $ref: '#/components/schemas/TunnelInfo.TunnelType' + tunnelDstAddress: + $ref: '#/components/schemas/TunnelInfo.TunnelDstAddress' + tunnelSrcAddress: + $ref: '#/components/schemas/TunnelInfo.TunnelSrcAddress' + parameters: + Path.AppInstanceId: + name: appInstanceId + description: >- + Represents a MEC application instance. Note that the + appInstanceId is allocated by the MEC platform manager. + in: path + required: true + schema: + type: string + Path.DnsRuleId: + name: dnsRuleId + description: Represents a DNS rule. + in: path + required: true + schema: + type: string + Path.SubscriptionId: + name: subscriptionId + description: >- + Represents a subscription to the notifications from the MEC + platform. + in: path + required: true + schema: + type: string + Path.TrafficRuleId: + name: trafficRuleId + description: Represents a traffic rule. + in: path + required: true + schema: + type: string + responses: + ApplicationsDnsRules.200: + description: >- + It is used to indicate nonspecific success. The response body + contains a representation of the resource. + content: + application/json: + schema: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/DnsRule' + examples: + DnsRules: + $ref: '#/components/examples/DnsRules' + links: + getIndividualMeDNSRule: + $ref: '#/components/links/GetIndividualMeDNSRule' + putIndividualMeDNSRule: + $ref: '#/components/links/PutIndividualMeDNSRule' + ApplicationsDnsRule.200: + description: >- + It is used to indicate nonspecific success. The response body + contains a representation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/DnsRule' + examples: + DnsRule: + $ref: '#/components/examples/DnsRule' + ApplicationsSubscriptions.200: + description: >- + Upon success, a response body containing the list of links to the + requested subscriptions is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MecAppSuptApiSubscriptionLinkList' + links: + getIndividualmecAppSuptApiSubscriptionLinkList: + $ref: '#/components/links/GetIndividualmecAppSuptApiSubscriptionLinkList' + delIndividualmecAppSuptApiSubscriptionLinkList: + $ref: '#/components/links/DelIndividualmecAppSuptApiSubscriptionLinkList' + ApplicationsSubscriptions.201: + description: >- + Entity body in the request contains a subscription to the + MEC service availability notifications that is to be created. + headers: + location: + description: The resource URI of the created resource + schema: + type: string + format: uri + content: + application/json: + schema: + $ref: '#/components/schemas/AppTerminationNotificationSubscription' + links: + getIndividualmecAppSuptApiSubscription: + $ref: '#/components/links/GetIndividualmecAppSuptApiSubscription' + delIndividualmecAppSuptApiSubscription: + $ref: '#/components/links/DelIndividualmecAppSuptApiSubscription' + ApplicationsSubscription.200: + description: >- + Upon success, a response body containing the requested subscription + is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AppTerminationNotificationSubscription' + ApplicationsTrafficRules.200: + description: >- + It is used to indicate nonspecific success. The response body + contains a representation of the resource. + content: + application/json: + schema: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/TrafficRule' + examples: + TrafficRules: + $ref: '#/components/examples/TrafficRules' + links: + getIndividualMeTrafficRule: + $ref: '#/components/links/GetIndividualMeTrafficRule' + putIndividualMeTrafficRule: + $ref: '#/components/links/PutIndividualMeTrafficRule' + ApplicationsTrafficRule.200: + description: >- + It is used to indicate nonspecific success. The response body + contains a representation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficRule' + examples: + TrafficRule: + $ref: '#/components/examples/TrafficRule' + TimingCurrentTime.200: + description: >- + It is used to indicate nonspecific success. The response body + contains a representation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/CurrentTime' + TimingCaps.200: + description: >- + It is used to indicate nonspecific success. The response body + contains a representation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/TimingCaps' + Error.400: + description: >- + Bad Request. + It is used to indicate that incorrect parameters were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + $ref: '#/components/schemas/Empty' + Error.401: + description: >- + Unauthorized. + It is used when the client did not submit the appropriate credentials. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + $ref: '#/components/schemas/Empty' + Error.403: + description: >- + Forbidden. + The operation is not allowed given the current status of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + Error.404: + description: >- + Not Found. + It is used when a client provided a URI that cannot be mapped + to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + $ref: '#/components/schemas/Empty' + Error.409: + description: >- + Conflict. + The operation cannot be executed currently, due to a conflict with + the state of the resource. Typically, this is because the application + instance resource is in NOT_INSTANTIATED state. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + $ref: '#/components/schemas/Empty' + Error.412: + description: >- + Precondition Failed. + It is used when a condition has failed during conditional requests, + e.g. when using ETags to avoid write conflicts. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + $ref: '#/components/schemas/Empty' + Error.429: + description: >- + Too Many Requests. + It is used when a rate limiter has triggered. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + $ref: '#/components/schemas/Empty' + requestBodies: + ApplicationsDnsRule: + content: + application/json: + schema: + $ref: '#/components/schemas/DnsRule' + description: The updated state is included in the entity body of the request. + required: true + ApplicationsSubscriptions: + content: + application/json: + schema: + $ref: '#/components/schemas/AppTerminationNotificationSubscription' + description: >- + Entity body in the request contains a subscription to the MEC + application termination notifications that is to be created. + required: true + ApplicationsTrafficRule: + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficRule' + description: One or more updated attributes that are allowed to be changed + required: true + AppTerminationNotification: + content: + application/json: + schema: + $ref: '#/components/schemas/AppTerminationNotification' + required: true + callbacks: + AppTerminationNotification: + '{$request.body#/callbackReference}': + post: + description: >- + Represents the information that the MEP notifies the + subscribed application instance about the corresponding + application instance termination/stop + operationId: AppTerminationNotification_POST + tags: + - callbacks + requestBody: + $ref: '#/components/requestBodies/AppTerminationNotification' + responses: + '200': + description: Expected responses from callback consumer, if it accepts the callback + links: + GetIndividualMeDNSRule: + operationId: ApplicationsDnsRule_GET + description: The `dnsRuleId` value returned in the response can be used as the `dnsRuleId` parameter in `GET /applications/{appInstanceId}/dns_rules/{dnsRuleId}` + parameters: + dnsRuleId: '$response.body#/dnsRuleId' + PutIndividualMeDNSRule: + operationId: ApplicationsDnsRule_PUT + description: The `dnsRuleId` value returned in the response can be used as the `dnsRuleId` parameter in `PUT /applications/{appInstanceId}/dns_rules/{dnsRuleId}` + parameters: + dnsRuleId: '$response.body#/dnsRuleId' + GetIndividualMeTrafficRule: + operationId: ApplicationsTrafficRule_GET + description: The `trafficRuleId` value returned in the response can be used as the `trafficRuleId` parameter in `GET /applications/{appInstanceId}/traffic_rules/{trafficRuleId}` + parameters: + trafficRuleId: '$response.body#/trafficRuleId' + PutIndividualMeTrafficRule: + operationId: ApplicationsTrafficRule_PUT + description: The `trafficRuleId` value returned in the response can be used as the `trafficRuleId` parameter in `PUT /applications/{appInstanceId}/traffic_rules/{trafficRuleId}` + parameters: + trafficRuleId: '$response.body#/trafficRuleId' + GetIndividualmecAppSuptApiSubscription: + operationId: ApplicationsSubscription_GET + description: The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `GET /applications/{appInstanceId}/subscriptions/{subscriptionId}` + parameters: + description: regex = \/mec_app_support\/v1\/applications\/.*\/subscriptions\/.*\/(.*);subscriptionId = href.match(regex)[1];// where "href" is an attribute within the subscription attribute within the _links attribute + subscriptionId: 'TBC' + DelIndividualmecAppSuptApiSubscription: + operationId: ApplicationsSubscription_DELETE + description: The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `DELETE /applications/{appInstanceId}/subscriptions/{subscriptionId}` + parameters: + description: regex = \/mec_app_support\/v1\/applications\/.*\/subscriptions\/(.*);subscriptionId = href.match(regex)[1];// where "href" is an attribute within the subscription attribute within the _links attribute + subscriptionId: 'TBC' + GetIndividualmecAppSuptApiSubscriptionLinkList: + operationId: ApplicationsSubscription_GET + description: The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `GET /applications/{appInstanceId}/subscriptions/{subscriptionId}` + parameters: + description: regex = \/mec_app_support\/v1\/applications\/.*\/subscriptions\/(.*);subscriptionId = href.match(regex)[1];// where "href" is an attribute within the subscription attribute within the _links attribute + subscriptionId: 'TBC' + DelIndividualmecAppSuptApiSubscriptionLinkList: + operationId: ApplicationsSubscription_DELETE + description: The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `DELETE /applications/{appInstanceId}/subscriptions/{subscriptionId}` + parameters: + description: regex = \/mec_app_support\/v1\/applications\/.*\/subscriptions\/(.*);subscriptionId = href.match(regex)[1];// where "href" is an attribute within the subscription attribute within the _links attribute + subscriptionId: 'TBC' + examples: + DnsRule: + value: + dnsRuleId: 'DnsRule1' + domainName: 'www.example.com' + ipAddressType: 'IP_V4' + ipAddress: '146.241.7.3' + ttl: 300 + state: 'ACTIVE' + DnsRules: + value: + - dnsRuleId: 'DnsRule1' + domainName: 'www.example.com' + ipAddressType: 'IP_V4' + ipAddress: '146.241.7.3' + ttl: 300 + state: 'ACTIVE' + - dnsRuleId: 'DnsRule2' + domainName: 'www.example.com' + ipAddressType: 'IP_V4' + ipAddress: '146.241.7.4' + ttl: 300 + state: 'INACTIVE' + TrafficRule: + value: + trafficRuleId: 'TrafficRule123' + serName: 'ExampleService' + filterType: 'FLOW' + priority: 1 + trafficFilter: + - srcAddress: + - '192.168.2.0/24' + - '192.168.3.0/24' + dstAddress: + - '192.127.4.100/32' + dstPort: + - '80' + action: 'FORWARD_DECAPSULATED' + dstInterface: + interfaceType: 'IP' + dstIpAddress: '20.1.1.1' + state: 'ACTIVE' + TrafficRules: + value: + - trafficRuleId: 'TrafficRule123' + serName: 'ExampleService' + filterType: 'FLOW' + priority: 1 + trafficFilter: + - srcAddress: + - '192.168.2.0/24' + - '192.168.3.0/24' + dstAddress: + - '192.127.4.100/32' + dstPort: + - '80' + action: 'FORWARD_DECAPSULATED' + dstInterface: + interfaceType: 'IP' + dstIpAddress: '20.1.1.1' + state: 'ACTIVE' \ No newline at end of file diff --git a/MecServiceMgmtApi.yaml b/MecServiceMgmtApi.yaml new file mode 100644 index 0000000..f339d63 --- /dev/null +++ b/MecServiceMgmtApi.yaml @@ -0,0 +1,1171 @@ +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.0.9 + description: The ETSI MEC ISG MEC011 MEC Service Management API described using OpenAPI + license: + name: ETSI Forge copyright notice + url: 'https://forge.etsi.org/etsi-forge-copyright-notice.txt' + contact: + email: cti_support@etsi.org +externalDocs: + description: 'ETSI GS MEC011 Application Enablement API, V2.0.9' + url: >- + https://docbox.etsi.org/ISG/MEC/70-Draft/0011v211Plat.App.Enabl/MEC-0011v211Plat.App.Enablv209.zip +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' + - $ref: '#/components/parameters/Query.LocalityTypes' + 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' + '/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' + - $ref: '#/components/parameters/Query.LocalityTypes' + 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' + 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' + '/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 + example: 'catItem1' + 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' + 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 + SecurityInfo.OAuth2Info.GrantTypes: + description: List of supported OAuth 2.0 grant types + type: string + enum: + - OAUTH2_AUTHORIZATION_CODE + - OAUTH2_IMPLICIT_GRANT + - OAUTH2_RESOURCE_OWNER + - OAUTH2_CLIENT_CREDENTIALS + example: 'OAUTH2_CLIENT_CREDENTIALS' + 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: + description: >- + List of supported OAuth 2.0 grant types. + type: array + minItems: 1 + maxItems: 4 + items: + $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 + - _links + - filteringCriteria + properties: + subscriptionType: + $ref: >- + #/components/schemas/SerAvailabilityNotificationSubscription.SubscriptionType + callbackReference: + $ref: >- + #/components/schemas/SerAvailabilityNotificationSubscription.CallbackReference + _links: + $ref: '#/components/schemas/Self' + filteringCriteria: + $ref: '#/components/schemas/ServiceInfo' + 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 + - services + - _links + properties: + notificationType: + $ref: >- + #/components/schemas/SerAvailabilityNotificationSubscription.SubscriptionType + services: + type: array + items: + $ref: '#/components/schemas/ServiceInfo' + _links: + $ref: '#/components/schemas/Subscription' + SerializerTypes: + description: The enumeration SerializerTypes represents types of serializers + type: string + enum: + - JSON + - XML + - PROTOBUF3 + example: 'JSON' + LocalityTypes: + 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' + ServiceInfo.SerInstanceId: + description: >- + Identifier of the service instance assigned by the MEC platform. + type: string + readOnly: true + example: 'ServiceInstance123' + 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' + ServiceInfo.State: + description: Contains the state + type: string + enum: + - ACTIVE + - INACTIVE + example: 'ACTIVE' + 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: + $ref: '#/components/schemas/ServiceInfo.State' + transportId: + $ref: '#/components/schemas/ServiceInfo.TransportId' + transportInfo: + $ref: '#/components/schemas/TransportInfo' + serializer: + $ref: '#/components/schemas/SerializerTypes' + scopeOfLocality: + $ref: '#/components/schemas/LocalityTypes' + 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: + $ref: '#/components/schemas/ServiceInfo.State' + transportInfo: + $ref: '#/components/schemas/TransportInfo' + serializer: + $ref: '#/components/schemas/SerializerTypes' + scopeOfLocality: + $ref: '#/components/schemas/LocalityTypes' + consumedLocalOnly: + $ref: '#/components/schemas/ServiceInfo.ConsumedLocalOnly' + isLocal: + $ref: '#/components/schemas/ServiceInfo.IsLocal' + Subscription: + description: A link to the related subscription + type: object + required: + - subscription + properties: + subscription: + $ref: '#/components/schemas/LinkType' + TransportInfo.Description: + description: Human-readable description of this transport + type: string + example: 'REST API' + TransportInfo.Id: + description: The identifier of this transport + type: string + example: 'TransId12345' + TransportInfo.ImplSpecificInfo: + description: Additional implementation specific details of the transport + type: object + TransportInfo.Name: + description: The name of this transport + type: string + example: 'REST' + TransportInfo.Protocol: + description: The name of the protocol used. Shall be set to HTTP for a REST API. + type: string + example: 'HTTP' + TransportInfo.Version: + description: The version of the protocol used + type: string + example: '2.0' + TransportInfo: + description: This type represents the general information of a MEC service. + type: object + required: + - id + - name + - type + - protocol + - version + - endpoint + - security + properties: + id: + $ref: '#/components/schemas/TransportInfo.Id' + name: + $ref: '#/components/schemas/TransportInfo.Name' + description: + $ref: '#/components/schemas/TransportInfo.Description' + type: + $ref: '#/components/schemas/TransportTypes' + protocol: + $ref: '#/components/schemas/TransportInfo.Protocol' + version: + $ref: '#/components/schemas/TransportInfo.Version' + endpoint: + description: This type represents information about a transport endpoint + type: object + oneOf: + - $ref: '#/components/schemas/EndPointInfo.Uris' + - $ref: '#/components/schemas/EndPointInfo.Addresses' + - $ref: '#/components/schemas/EndPointInfo.Alternative' + security: + $ref: '#/components/schemas/SecurityInfo' + implSpecificInfo: + $ref: '#/components/schemas/TransportInfo.ImplSpecificInfo' + TransportTypes: + description: The enumeration TransportTypes represents types of transports + type: string + enum: + - REST_HTTP + - MB_TOPIC_BASED + - MB_ROUTING + - MB_PUBSUB + - RPC + - RPC_STREAMING + - WEBSOCKET + example: 'REST_HTTP' + parameters: + Path.AppInstanceId: + name: appInstanceId + description: >- + Represents a MEC application instance. Note that the + appInstanceId is allocated by the MEC platform manager. + in: path + required: true + schema: + type: string + Path.SubscriptionId: + name: subscriptionId + description: >- + Represents a subscription to the notifications from the MEC + platform. + in: path + required: true + schema: + type: string + Path.ServiceId: + name: serviceId + description: Represents a MEC service instance. + in: path + required: true + schema: + type: string + Query.Ser_category_id: + name: ser_category_id + description: >- + A MEC application instance may use ser_category_id as an input + parameter to query the availability of a list of MEC service + instances in a serCategory. Either "ser_instance_id" or "ser_name" or + "ser_category_id" or none of them shall be present. + in: query + required: false + schema: + type: string + Query.Ser_instance_id: + name: ser_instance_id + description: >- + A MEC application instance may use multiple ser_instance_ids as + an input parameter to query the availability of a list of MEC + service instances. Either "ser_instance_id" or "ser_name" or + "ser_category_id" or none of them shall be present. + in: query + required: false + schema: + type: array + items: + type: string + Query.Ser_name: + name: ser_name + description: >- + A MEC application instance may use multiple ser_names as an + input parameter to query the availability of a list of MEC + service instances. Either "ser_instance_id" or "ser_name" or + "ser_category_id" or none of them shall be present. + in: query + required: false + schema: + type: array + items: + type: string + Query.LocalityTypes: + name: scope_of_locality + description: >- + A MEC application instance may use scope_of_locality as an input + parameter to query the availability of a list of MEC service instances + with a certain scope of locality. + in: query + required: false + schema: + type: string + Query.Is_local: + name: is_local + description: >- + Indicate whether the service is located in the same locality (as + defined by scopeOfLocality) as the consuming MEC application. + in: query + required: false + schema: + type: boolean + Query.Consumed_local_only: + name: consumed_local_only + 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. + in: query + required: false + schema: + type: boolean + responses: + ApplicationsSubscriptions.200: + description: >- + Upon success, a response body containing the list of links to the + requested subscriptions is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MecServiceMgmtApiSubscriptionLinkList' + links: + getIndividualmecSerMgmtApiSubscriptionLinkList: + $ref: '#/components/links/GetIndividualmecSerMgmtApiSubscriptionLinkList' + delIndividualmecSerMgmtApiSubscriptionLinkList: + $ref: '#/components/links/DelIndividualmecSerMgmtApiSubscriptionLinkList' + ApplicationsSubscriptions.201: + description: >- + Entity body in the request contains a subscription to the MEC + service availability notifications that is to be created. + headers: + location: + description: The resource URI of the created resource + schema: + type: string + format: uri + content: + application/json: + schema: + $ref: '#/components/schemas/SerAvailabilityNotificationSubscription' + links: + getIndividualmecSerMgmtApiSubscription: + $ref: '#/components/links/GetIndividualmecSerMgmtApiSubscription' + delIndividualmecSerMgmtApiSubscription: + $ref: '#/components/links/DelIndividualmecSerMgmtApiSubscription' + ApplicationsSubscription.200: + description: >- + Upon success, a response body containing the requested subscription + is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/SerAvailabilityNotificationSubscription' + Services.200: + description: >- + It is used to indicate nonspecific success. The response body + contains a representation of the resource. + content: + application/json: + schema: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ServiceInfo' + examples: + ServiceInfoList: + $ref: '#/components/examples/ServiceInfoList' + links: + getIndividualmecService: + $ref: '#/components/links/GetIndividualmecService' + putIndividualmecService: + $ref: '#/components/links/PutIndividualmecService' + Services.201: + description: >- + Upon success, the HTTP response shall include a Location HTTP header + that contains the resource URI of the created resource. + headers: + location: + description: The resource URI of the created resource + schema: + type: string + format: uri + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceInfo' + examples: + ServiceInfo: + $ref: '#/components/examples/ServiceInfo' + links: + getIndividualmecService: + $ref: '#/components/links/GetIndividualmecService' + putIndividualmecService: + $ref: '#/components/links/PutIndividualmecService' + ServicesServiceId.200: + description: >- + It is used to indicate nonspecific success. The response body + contains a representation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceInfo' + examples: + ServiceInfo: + $ref: '#/components/examples/ServiceInfo' + Transports.200: + description: >- + It is used to indicate nonspecific success. The response body + contains a representation of the resource. + content: + application/json: + schema: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/TransportInfo' + links: + getTransportInfo: + $ref: '#/components/links/GetTransportInfo' + Error.400: + description: >- + Bad Request. + It is used to indicate that incorrect parameters were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + $ref: '#/components/schemas/Empty' + Error.401: + description: >- + Unauthorized. + It is used when the client did not submit the appropriate credentials. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + $ref: '#/components/schemas/Empty' + Error.403: + description: >- + Forbidden. + The operation is not allowed given the current status of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + Error.404: + description: >- + Not Found. + It is used when a client provided a URI that cannot be mapped + to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + $ref: '#/components/schemas/Empty' + Error.409: + description: >- + Conflict. + The operation cannot be executed currently, due to a conflict with + the state of the resource. Typically, this is because the application + instance resource is in NOT_INSTANTIATED state. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + $ref: '#/components/schemas/Empty' + Error.412: + description: >- + Precondition Failed. + It is used when a condition has failed during conditional requests, + e.g. when using ETags to avoid write conflicts. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + $ref: '#/components/schemas/Empty' + Error.429: + description: >- + Too Many Requests. + It is used when a rate limiter has triggered. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + $ref: '#/components/schemas/Empty' + requestBodies: + ApplicationsSubscriptions: + content: + application/json: + schema: + $ref: '#/components/schemas/SerAvailabilityNotificationSubscription' + description: >- + Entity body in the request contains a subscription to the MEC + application termination notifications that is to be created. + required: true + Services: + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceInfo' + description: >- + New ServiceInfo with updated "state" is included as entity body of the + request + required: true + Services.Post: + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceInfo.Post' + description: >- + New ServiceInfo with updated "state" is included as entity body of the + request + required: true + ServicesServiceId: + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceInfo' + description: >- + New ServiceInfo with updated "state" is included as entity body of the + request + required: true + ServiceAvailabilityNotification: + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAvailabilityNotification' + required: true + callbacks: + ServiceAvailabilityNotification: + '{$request.body#/callbackReference}': + post: + description: >- + 'Represents the service availability information that + is used in the following cases + - when the MEC platform announces the newly available + services to the authorized relevant MEC applications (e.g. + the applications that indicate the services as "optional" + or "required") that are subscribed to the corresponding + service availability notifications + - when the MEC platform notifies the authorized relevant + applications that are subscribed to the corresponding + service availability notifications about the service availability changes.' + operationId: ServiceAvailabilityNotification_POST + tags: + - callbacks + requestBody: + $ref: '#/components/requestBodies/ServiceAvailabilityNotification' + responses: + '200': + description: Expected responses from callback consumer, if it accepts the callback + links: + GetIndividualmecService: + operationId: ServicesServiceId_GET + description: The `serviceId` value returned in the response can be used as the `serviceId` parameter in `GET /services/{serviceId}` + parameters: + serviceId: '$response.body#/serviceId' + PutIndividualmecService: + operationId: ServicesServiceId_PUT + description: The `serviceId` value returned in the response can be used as the `serviceId` parameter in `PUT /services/{serviceId}` + parameters: + serviceId: '$response.body#/serviceId' + GetTransportInfo: + operationId: AppServices_POST + description: The `id` value returned in the response can be used as the `transportId` parameter in `POST /applications/{appInstanceId}/services`. The first transport is provided as the link as wildcards are not supported + parameters: + transportId: '$response.body#/0/id' + GetIndividualmecSerMgmtApiSubscription: + operationId: ApplicationsSubscription_GET + description: The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `GET /applications/{appInstanceId}/subscriptions/{subscriptionId}` + parameters: + description: regex = \/mec_service_mgmt\/v1\/applications\/.*\/subscriptions\/.*\/(.*);subscriptionId = href.match(regex)[1];// where "href" is an attribute within the subscription attribute within the _links attribute + subscriptionId: 'TBC' + DelIndividualmecSerMgmtApiSubscription: + operationId: ApplicationsSubscription_DELETE + description: The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `DELETE /applications/{appInstanceId}/subscriptions/{subscriptionId}` + parameters: + description: regex = \/mec_service_mgmt\/v1\/applications\/.*\/subscriptions\/(.*);subscriptionId = href.match(regex)[1];// where "href" is an attribute within the subscription attribute within the _links attribute + subscriptionId: 'TBC' + GetIndividualmecSerMgmtApiSubscriptionLinkList: + operationId: ApplicationsSubscription_GET + description: The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `GET /applications/{appInstanceId}/subscriptions/{subscriptionId}` + parameters: + description: regex = \/mec_service_mgmt\/v1\/applications\/.*\/subscriptions\/(.*);subscriptionId = href.match(regex)[1];// where "href" is an attribute within the subscription attribute within the _links attribute + subscriptionId: 'TBC' + DelIndividualmecSerMgmtApiSubscriptionLinkList: + operationId: ApplicationsSubscription_DELETE + description: The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `DELETE /applications/{appInstanceId}/subscriptions/{subscriptionId}` + parameters: + description: regex = \/mec_service_mgmt\/v1\/applications\/.*\/subscriptions\/(.*);subscriptionId = href.match(regex)[1];// where "href" is an attribute within the subscription attribute within the _links attribute + subscriptionId: 'TBC' + examples: + ServiceInfo: + value: + serInstanceId: 'ServiceInstance123' + serName: 'ExampleService' + serCategory: + href: 'catItem1' + id: 'id12345' + name: 'RNI' + version: 'version1' + version: 'ServiceVersion1' + state: 'ACTIVE' + transportInfo: + id: 'TransId12345' + name: 'REST' + description: 'REST API' + type: 'REST_HTTP' + protocol: 'HTTP' + version: '2.0' + endpoint: + uris: + - '/mecSerMgmtApi/service/EntryPoint' + security: + oAuth2Info: + grantTypes: + - 'OAUTH2_CLIENT_CREDENTIALS' + tokenEndpoint: '/mecSerMgmtApi/security/TokenEndPoint' + serializer: 'JSON' + ServiceInfoList: + value: + - serInstanceId: 'ServiceInstance123' + serName: 'ExampleService' + serCategory: + href: 'catItem1' + id: 'id12345' + name: 'RNI' + version: 'version1' + version: 'ServiceVersion1' + state: 'ACTIVE' + transportInfo: + id: 'TransId12345' + name: 'REST' + description: 'REST API' + type: 'REST_HTTP' + protocol: 'HTTP' + version: '2.0' + endpoint: + addresses: + - host: '192.0.2.0' + port: 8080 + security: + oAuth2Info: + grantTypes: + - 'OAUTH2_CLIENT_CREDENTIALS' + tokenEndpoint: '/mecSerMgmtApi/security/TokenEndPoint' + serializer: 'JSON' \ No newline at end of file -- GitLab