/** * @desc The ETSI MEC ISG MEC011 Application Enablement API described using OpenAPI * @see http://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/01.01.01_60/gs_mec011v010101p.pdf */ module AppEnablementAPI_TypesAndValues { // JSON import from JSON all; // LibCommon import from LibCommon_BasicTypesAndValues all; /** * @desc Maximum timeout value in seconds for graceful termination or graceful stop of an application instance. */ type UInt32 MaxGracefulTimeout; /** * @desc Shall be set to AppTerminationNotification. */ type JSON.String NotificationType; /** * @desc This type represents the information that the mobile edge platform notifies the subscribed application instance about the corresponding application instance termination/stop. */ type record AppTerminationNotification { NotificationType notificationType, MaxGracefulTimeout maxGracefulTimeout, Subscription links } with { variant (links) "name as '_links'"; } /** * @desc It is used as the filtering criterion for the subscribed events. */ type JSON.String AppInstanceId; /** * @desc URI selected by the mobile edge application instance to receive notifications on the subscribed mobile edge application instance management information. * This shall be included in both the request and the response." */ type JSON.String AppTerminationNotificationSubscription_CallbackReference; /** * @desc This type represents the information that the mobile edge platform notifies the subscribed application instance about the corresponding application instance termination/stop. */ type record AppTerminationNotificationSubscription { SubscriptionType subscriptionType, AppTerminationNotificationSubscription_CallbackReference callbackReference, Self links, AppInstanceId appInstanceId } with { variant (links) "name as '_links'"; } /** * @desc Shall be set to AppTerminationNotificationSubscription. */ type JSON.String SubscriptionType; /** * @desc Reference of the catalogue. */ type JSON.String CategoryRef_Href; /** * @desc Unique identifier of the category. */ type JSON.String CategoryRef_Id; /** * @desc Name of the category. */ type JSON.String Name; /** * @desc Category version. */ type JSON.String CategoryRef_Version; /** * @desc This type represents the category reference. */ type record CategoryRef { CategoryRef_Href href, CategoryRef_Id id, Name name, CategoryRef_Version version } /** * @desc The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. */ type UInt32 Seconds; /** * @desc The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. */ type UInt32 NanoSeconds; /** * @desc 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. */ type enumerated TimeSourceStatus { TRACEABLE (1), NONTRACEABLE (2) } /** * @desc This type represents the information provided by the mobile edge platform in response to the Get Platform Time Request message. * @member seconds The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. * @member nanoSeconds The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. * @member timeSourceStatus 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. */ type record CurrentTime { Seconds seconds, NanoSeconds nanoSeconds, TimeSourceStatus timeSourceStatus } /** * @desc Type of the interface. */ type enumerated InterfaceType { TUNNEL, MAC, IP } /** * @desc IP address of the remote destination. */ type JSON.String DestinationInterface_IpAddress; /** * @desc Source address identifies the MAC address of the interface. */ type JSON.String DestinationInterface_MacAddress; /** * @desc This type represents the destination interface. */ type record DestinationInterface { InterfaceType interfaceType, TunnelInfo tunnelInfo optional, DestinationInterface_MacAddress srcMacAddress optional, DestinationInterface_MacAddress dstMacAddress optional, DestinationInterface_IpAddress dstIpAddress optional } /** * @desc FQDN resolved by the DNS rule. */ type JSON.String DomainName; /** * @desc Identifies the DNS Rule. */ type JSON.String DnsRule_Id; /** * @desc IP address associated with the FQDN resolved by the DNS rule. */ type JSON.String DnsRule_IpAddress; /** * @desc IP address type. */ type enumerated DnsRule_IpAddressType { IP_V6, IP_V4 } /** * @desc DNS rule state. */ type enumerated DnsRule_State { ACTIVE, INACTIVE } /** * @desc Time to live value. */ type UInt32 Ttl; /** * @desc This type represents the general information of a DNS rule. */ type record DnsRule { DnsRule_Id dnsRuleId, DomainName domainName, DnsRule_IpAddressType ipAddressType, DnsRule_IpAddress ipAddress, Ttl ttl, DnsRule_State state } /** * @desc Host portion of the address. */ type JSON.String Host; /** * @desc Port portion of the address. */ type UInt32 Address_Port; /** * @desc A IP address and port pair. */ type record Address { Host host, Address_Port port_ } with { variant (port_) "name as 'port'"; } type record length(0..infinity) of Address AddressList; /** * @desc Entry point information of the service as one or more pairs of IP address and port. */ type record Addresses { AddressList addresses } /** * @desc Entry point information of the service in a format defined by an implementation, or in an external specification. */ type record Alternative { anytype alternative } /** * @desc Entry point information of the service. */ type JSON.String EndPointInfo_Uri; type record length(0..infinity) of EndPointInfo_Uri EndPointInfo_UriList; /** * @desc Entry point information of the service as string, formatted according to URI syntax. */ type record Uris { EndPointInfo_UriList uris } /** * @desc This type represents a type of link and may be referenced from data structures. */ type record LinkType { Href href } /** * @desc URI referring to a resource. */ type JSON.String Href; /** * @desc Self-referring URI. */ type record Mp1SubscriptionLinkList_Links { LinkType self_, Mp1SubscriptionLinkList_SubscriptionList subscription optional } with { variant (self_) "name as 'self'"; } /** * @desc The values are as defined in the \"subscriptionType\" attribute for each different Mp1 event subscription data type. */ type enumerated Rel { AppTerminationNotificationSubscription, SerAvailabilityNotificationSubscription } /** * @desc A link to a subscription. */ type record Mp1SubscriptionLinkList_Subscription { Href href, Rel rel } type record length(0..infinity) of Mp1SubscriptionLinkList_Subscription Mp1SubscriptionLinkList_SubscriptionList; /** * @desc This type represents a list of links related to currently existing subscriptions for a mobile edge application instance. This information is returned when sending a request to receive current subscriptions. */ type record Mp1SubscriptionLinkList { Mp1SubscriptionLinkList_Links links } with { variant (links) "name as '_links'"; } /** * @desc Problem Details for HTTP APIs * @member type_ A URI reference according to IETF RFC 3986 that identifies the problem type * @member title A short, human-readable summary of the problem type * @member status The HTTP status code for this occurrence of the problem * @member detail A human-readable explanation specific to this occurrence of the problem * @member instance A URI reference that identifies the specific occurrence of the problem * @see IETF RFC 7807 Clause 3. The Problem Details JSON Object */ type record ProblemDetails { JSON.String type_, JSON.String title, UInt32 status, JSON.String detail, JSON.String instance } with { variant (type_) "name as 'type'"; } /** * @desc List of supported OAuth 2.0 grant types. */ type enumerated GrantTypes { OAUTH2_AUTHORIZATION_CODE, OAUTH2_IMPLICIT_GRANT, OAUTH2_RESOURCE_OWNER, OAUTH2_CLIENT_CREDENTIALS } type record length(1..4) of GrantTypes GrantTypesList; /** * @desc The token endpoint. */ type JSON.String TokenEndpoint; /** * @desc Parameters related to use of OAuth 2.0. */ type record OAuth2Info { GrantTypesList grantTypes, TokenEndpoint tokenEndpoint } /** * @desc This type represents security information related to a transport. */ type record SecurityInfo { OAuth2Info oAuth2Info } /** * @desc Self-referring URI. */ type record Self { LinkType self_, JSON.Bool readOnly optional } with { variant (self_) "name as 'self'"; } /** * @desc URI selected by the mobile edge application instance to receive notifications on the subscribed mobile edge service availability information. This shall be included in both the request and the response. */ type JSON.String SerAvailabilityNotificationSubscription_CallbackReference; /** * @desc This type represents a subscription to the notifications from the mobile edge platform regarding the availability of a mobile edge service or a list of mobile edge services. */ type record SerAvailabilityNotificationSubscription { SerAvailabilityNotificationSubscription_SubscriptionType subscriptionType, SerAvailabilityNotificationSubscription_CallbackReference callbackReference, Self links, ServiceInfo filteringCriteria } /** * @desc Shall be set to SerAvailabilityNotificationSubscription. */ type JSON.String SerAvailabilityNotificationSubscription_SubscriptionType; /** * @desc This type represents the service availability information. */ type record ServiceAvailabilityNotification { SerAvailabilityNotificationSubscription_SubscriptionType notificationType, ServiceInfos services, Subscription links } /** * @desc The enumeration SerializerTypes represents types of serializers. */ type enumerated SerializerTypes { JSON, XML, PROTOBUF3 } /** * @desc Identifier of the service instance assigned by the MEPM / mobile edge platform. */ type JSON.String SerInstanceId; /** * @desc The name of the service. This is how the service producing mobile edge application identifies the service instance it produces. */ type JSON.String SerName; /** * @desc Contains the state. */ type enumerated ServiceInfo_State { ACTIVE, INACTIVE } /** * @desc 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 JSON.String TransportId; /** * @desc Service version. */ type JSON.String ServiceInfo_Version; /** * @desc This type represents the general information of a mobile edge service. */ type record ServiceInfo { SerInstanceId serInstanceId optional, SerName serName, CategoryRef serCategory optional, ServiceInfo_Version version, ServiceInfo_State state, TransportInfo transportInfo, SerializerTypes serializer } type record of ServiceInfo ServiceInfos; /** * @desc A link to the related subscription. */ type record Subscription { LinkType subscription } /** * @desc Authentication key number. */ type UInt32 AuthenticationKeyNum; /** * @desc NTP authentication option. */ type enumerated AuthenticationOption { NONE, SYMMETRIC_KEY, AUTO_KEY } /** * @desc Acceptable maximum rate of the Delay_Req messages in packets per second. */ type UInt32 DelayReqMaxRate; /** * @desc NTP server local priority. */ type UInt32 LocalPriority; /** * @desc Maximum poll interval for NTP messages, in seconds as a power of two. Range 3...17. */ type integer MaxPollingInterval (3..17) with {variant "unsigned 32 bit"} ; /** * @desc Minimum poll interval for NTP messages, in seconds as a power of two. Range 3...17. */ type integer MinPollingInterval (3..17) with {variant "unsigned 32 bit"} ; /** * @desc NTP server address. */ type JSON.String NtpServerAddr; /** * @desc Address type of NTP server. */ type enumerated NtpServerAddrType { IP_ADDRESS, DNS_NAME } /** * @desc PTP Master IP Address. */ type JSON.String NtpServers_PtpMasterIpAddress; /** * @desc PTP Master local priority. */ type UInt32 NtpServers_PtpMasterLocalPriority; /** * @desc NTP server detail. */ type record NtpServers { NtpServerAddrType ntpServerAddrType, NtpServerAddr ntpServerAddr, MinPollingInterval minPollingInterval, MaxPollingInterval maxPollingInterval, LocalPriority localPriority, AuthenticationOption authenticationOption, AuthenticationKeyNum authenticationKeyNum } type record of NtpServers NtpServersList; /** * @desc NTP server detail. */ type record TimingCaps_PtpMasters { NtpServers_PtpMasterIpAddress ptpMasterIpAddress, NtpServers_PtpMasterLocalPriority ptpMasterLocalPriority, DelayReqMaxRate delayReqMaxRate } type record of TimingCaps_PtpMasters TimingCaps_PtpMastersList; /** * @desc Time. * @member seconds The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. * @member nanoSeconds The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. * @member timeSourceStatus 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. */ type record TimeStamp { Seconds seconds, NanoSeconds nanoSeconds } /** * @desc This type represents the information provided by the mobile edge platform in response to the Timing capabilities Query message. */ type record TimingCaps { TimeStamp timeStamp, NtpServersList ntpServers, TimingCaps_PtpMastersList ptpMasters } /** * @desc Identify the traffic ip address. */ type JSON.String TrafficFilter_Address; type record of TrafficFilter_Address TrafficFilter_AddressList; /** * @desc Used to match all IPv4 packets that have the same Differentiated Services Code Point (DSCP). */ type UInt32 TrafficFilter_DSCP; /** * @desc Identify the traffic ip address. */ type JSON.String TrafficFilter_Port; /** * @desc Protocol of the traffic filter. */ type JSON.String TrafficFilter_Protocol; type record of TrafficFilter_Protocol TrafficFilter_ProtocolList; /** * @desc Used to match all packets that have the same Quality Class Indicator (QCI). */ type UInt32 TrafficFilter_QCI; /** * @desc Used to match all IPv6 packets that have the same Traffic Class. */ type UInt32 TrafficFilter_TC; /** * @desc Used for token based traffic rule. */ type JSON.String TrafficFilter_Token; type record of TrafficFilter_Token TrafficFilter_TokenList; /** * @desc Used for GTP tunnel based traffic rule. */ type JSON.String TrafficFilter_TunnelAddress; type record of TrafficFilter_TunnelAddress TrafficFilter_TunnelAddressList; /** * @desc Used for GTP tunnel based traffic rule. */ type JSON.String TrafficFilter_TunnelPort; type record of TrafficFilter_TunnelPort TrafficFilter_TunnelPortList; /** * @desc This type represents the traffic filter. */ type record TrafficFilter { TrafficFilter_Address srcAddress, TrafficFilter_AddressList dstAddress, TrafficFilter_Port srcPort, TrafficFilter_Port dstPort, TrafficFilter_ProtocolList protocol, TrafficFilter_TokenList token, TrafficFilter_TunnelAddressList srcTunnelAddress, TrafficFilter_TunnelAddressList tgtTunnelAddress, TrafficFilter_TunnelPortList srcTunnelPort, TrafficFilter_TunnelPortList dstTunnelPort, TrafficFilter_QCI qCI, TrafficFilter_DSCP dSCP, TrafficFilter_TC tC } type record of TrafficFilter TrafficFilterList; /** * @desc The action of the ME host data plane when a packet matches the trafficFilter. */ type enumerated TrafficRule_Action { DROP, FORWARD_DECAPSULATED, FORWARD_AS_IS, PASSTHROUGH, DUPLICATE_DECAPSULATED, DUPLICATE_AS_IS } /** * @desc 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 enumerated TrafficRule_FilterType { FLOW, PACKET } /** * @desc Identify the traffic rule. */ type JSON.String TrafficRule_Id; /** * @desc Priority of this traffic rule. If traffic rule conflicts, the one with higher priority take precedence. */ type UInt32 TrafficRule_Priority; /** * @desc Contains the traffic rule state. */ type enumerated TrafficRule_State { ACTIVE, INACTIVE } /** * @desc This type represents the general information of a traffic rule. */ type record TrafficRule { TrafficRule_Id trafficRuleId, TrafficRule_FilterType filterType, TrafficRule_Priority priority, TrafficFilterList trafficFilter, TrafficRule_Action action_, DestinationInterface dstInterface optional, TrafficRule_State state } with { variant (action_) "name as 'action'"; } type record of TrafficRule TrafficRuleList /** * @desc Human-readable description of this transport. */ type JSON.String TransportInfo_Description; /** * @desc The identifier of this transport. */ type JSON.String TransportInfo_Id; /** * @desc Additional implementation specific details of the transport. */ type anytype TransportInfo_ImplSpecificInfo; /** * @desc The name of this transport. */ type JSON.String TransportInfo_Name; /** * @desc The name of the protocol used. Shall be set to HTTP for a REST API. */ type JSON.String TransportInfo_Protocol; /** * @desc The version of the protocol used. */ type JSON.String TransportInfo_Version; /** * @desc This type represents information about a transport endpoint. */ type union TransportInfo_Endpoint { // JSON oneOf ??? Uris uris, Addresses addresses, Alternative alternative } /** * @desc This type represents the general information of a mobile edge service. */ type record TransportInfo { TransportInfo_Id id, TransportInfo_Name name, TransportInfo_Description description optional, TransportTypes type_, TransportInfo_Protocol protocol, TransportInfo_Version version, TransportInfo_Endpoint endpoint, SecurityInfo security, TransportInfo_ImplSpecificInfo implSpecificInfo optional } with { variant (type_) "name as 'type'"; } type record of TransportInfo TransportInfoList; /** * @desc The enumeration TransportTypes represents types of transports. */ type enumerated TransportTypes { REST_HTTP, MB_TOPIC_BASED, MB_ROUTING, MB_PUBSUB, RPC, RPC_STREAMING, WEBSOCKET } /** * @desc Destination address of the tunnel. */ type JSON.String TunnelInfo_TunnelDstAddress; /** * @desc Source address of the tunnel. */ type JSON.String TunnelInfo_TunnelSrcAddress; /** * @desc This type represents the tunnel information. */ type enumerated TunnelInfo_TunnelType { GTP_U, GRE } /** * @desc This type represents the tunnel information. */ type record TunnelInfo { TunnelInfo_TunnelType tunnelType, TunnelInfo_TunnelDstAddress tunnelDstAddress optional, TunnelInfo_TunnelSrcAddress tunnelSrcAddress optional } } with { encode "JSON" } // End of module AppEnablementAPI_TypesAndValues