@@ -4,8 +4,8 @@ openapi: 3.0.3
4
4
# API info #
5
5
# ###########################################################################
6
6
info :
7
- title : OPAG-CAMARA Traffic Influence API
8
- version : 0.9.4 -wip
7
+ title : Traffic Influence API
8
+ version : 0.9.5 -wip
9
9
description : |
10
10
## Overview
11
11
The reference scenario foresees a Service, composed by one or more Service
@@ -135,32 +135,40 @@ info:
135
135
"trafficInfluenceID"). All the created resources are aggregated by the
136
136
Application (identified by "appId").\
137
137
\
138
- **appId**
138
+ **appId: **
139
139
A globally unique identifier associated with the application. This
140
140
identifier is provided during the application onboarding process.
141
141
To influence the traffic toward a specific Application. It is the Operator
142
142
Platform that detects the appropriate Application instance in the selected
143
143
"region" or "zone".\
144
144
\
145
- **appInstanceId**
145
+ **appInstanceId: **
146
146
A globally unique identifier generated by the Operator Platform to identify
147
147
a specific instance of the Application on a specific zone. To influence a
148
148
traffic toward a specific Application instance.\
149
149
\
150
- **trafficFilters**
151
- The Application can expose different service on different interfaces, with
152
- this parameter it is possible to enable just some of those services maybe
153
- for different sets of users.\
150
+ **sourceTrafficFilters:**
151
+ The traffic can be from a specific application port in the Device.\
154
152
\
155
- **Device**
156
- A user Device can be provided as an input. To add more users the TI API must
157
- be invoked (POST) of each user Device. New "TrafficInfluence" resources are
158
- created (with different "trafficInfluenceID"). All the created resources are
159
- aggregated by the Application (identified by "appId"). The routing toward
160
- the selected Application instance is only applied for provided user
161
- Devices.\
153
+ **destinationTrafficFilters:**
154
+ The Application can expose different service on different interfaces,
155
+ identified by port and protocol, with this parameter it is possible to
156
+ route the traffic just toward some of those services maybe for different
157
+ sets of users.\
162
158
\
163
- **Notification URL and token**
159
+ **Device:**
160
+ An user Device can be provided as an input. The Device can be identified by
161
+ the phone number (phoneNumber), an external identifier
162
+ (networkAccessIdentifier) or by its IP Address (Ipv4Address, Ipv6Address)
163
+ also specifying a Port. For IP address both the private (as seen from inside
164
+ the Device) and the public (as seen over Internet by a server connected to
165
+ the Device) can be used. To add more users the TI API must be invoked (POST)
166
+ of each user Device. New "TrafficInfluence" resources are created (with
167
+ different "trafficInfluenceID"). All the created resources are aggregated by
168
+ the Application (identified by "appId"). The routing toward the selected
169
+ Application instance is only applied for provided user Devices.\
170
+ \
171
+ **Notification URL and token:**
164
172
Developers have a chance to specify call back URL on which notifications
165
173
(e.g. session termination) regarding the session can be received from the
166
174
service provider. This is also an optional parameter.
@@ -270,6 +278,9 @@ info:
270
278
- Modified CAMARA URL to refer to the Edge Cloud Repository
271
279
- OAS version now includes "-wip" extension
272
280
- simplified "Servers" section and included "vwip" as version
281
+ - Updated documentation to better specify how to identify a Device
282
+ - Updated the Device parameter according to CAMARA_common.yaml
283
+ - change API name in YAML
273
284
license :
274
285
name : Apache 2.0
275
286
url : https://www.apache.org/licenses/LICENSE-2.0.html
@@ -641,28 +652,29 @@ components:
641
652
- ' error'
642
653
- ' deletion in progress'
643
654
- ' deleted'
644
- trafficFilters :
645
- type : array
646
- items :
647
- type : string
648
- description : Indicates the packet filters of the IP flow. The source
649
- IP is not required. It is retrived by the platoform according to
650
- the TI API request. If no Traffic Influece resourse is created with
651
- a specific Device, any IP will be routed to the Application. If a
652
- Traffic Influece resource exists with a specific Device configured,
653
- only the related IPs will be routed to the local instance of the
654
- Application. The destination IP is not required,it is already known
655
- by the platform thanks to the appId and appInstanceId parameters
656
- that are used to retive the destination IP. The protocol must be
657
- specified and it is identified by a string according to the column
658
- “Keyword” as defined by IANA (https://www.iana.org/assignments/\
659
- protocol-numbers/protocol-numbers.xhtml), e.g. UDP or TCP.
660
- The destination port must be specified.
661
- example : TCP 5060
662
- minItems : 1
663
- minItems : 1
664
- description : Identifies IP packet filters. To be used when a the
665
- Application needs a traffic flow towards a specific EAS interface
655
+ sourceTrafficFilters :
656
+ description : Ports used locally by the device for flows to which
657
+ the requested traffic influence should apply. If omitted, then the
658
+ traffic influence will apply to all flows between the device and the
659
+ specified application server address and ports.
660
+ type : object
661
+ properties :
662
+ sourcePort :
663
+ allOf :
664
+ - $ref : " #/components/schemas/PortsSpec"
665
+ destinationTrafficFilters :
666
+ description : Identifies the destination IP packet filters. To be
667
+ used when it is needed a traffic flow towards a specific EAS
668
+ interface identified by a protocol and a port. Also the Protocol
669
+ (e.g. TCP or UDP) can be specified.
670
+ type : object
671
+ properties :
672
+ destinationPort :
673
+ allOf :
674
+ - $ref : " #/components/schemas/PortsSpec"
675
+ destinationProtocol :
676
+ allOf :
677
+ - $ref : " #/components/schemas/Protocol"
666
678
notificationUri :
667
679
type : string
668
680
description : Defines the callback uri which should be notified in
@@ -719,42 +731,123 @@ components:
719
731
type : string
720
732
additionalProperties : false
721
733
Device :
734
+ description : |
735
+ End-user equipment able to connect to a mobile network. Examples of
736
+ devices include smartphones or IoT sensors/actuators.
737
+ The developer can choose to provide the below specified device
738
+ identifiers:
739
+ * `ipv4Address`
740
+ * `ipv6Address`
741
+ * `phoneNumber`
742
+ * `networkAccessIdentifier`
743
+ NOTE: the MNO might support only a subset of these options. The API
744
+ invoker can provide multiple identifiers to be compatible across
745
+ different MNOs. In this case the identifiers MUST belong to the same
746
+ device.
747
+ type : object
748
+ properties :
749
+ phoneNumber :
750
+ $ref : " #/components/schemas/PhoneNumber"
751
+ networkAccessIdentifier :
752
+ $ref : " #/components/schemas/NetworkAccessIdentifier"
753
+ ipv4Address :
754
+ $ref : " #/components/schemas/DeviceIpv4Addr"
755
+ ipv6Address :
756
+ $ref : " #/components/schemas/DeviceIpv6Address"
757
+ minProperties : 1
758
+ PhoneNumber :
759
+ description : A public identifier addressing a telephone subscription. In
760
+ mobile networks it corresponds to the MSISDN (Mobile Station
761
+ International Subscriber Directory Number). In order to be globally
762
+ unique it has to be formatted in international format, according to
763
+ E.164 standard, prefixed with '+'.
764
+ type : string
765
+ pattern : ' ^\+[1-9][0-9]{4,14}$'
766
+ example : " +123456789"
767
+ NetworkAccessIdentifier :
768
+ description : A public identifier addressing a subscription in a mobile
769
+ network. In 3GPP terminology, it corresponds to the GPSI formatted with
770
+ the External Identifier ({Local Identifier}@{Domain Identifier}).
771
+ Unlike the telephone number, the network access identifier is not
772
+ subjected to portability ruling in force, and is individually managed
773
+ by each operator.
774
+ type : string
775
+
776
+ DeviceIpv4Addr :
777
+ type : object
778
+ description : |
779
+ The device should be identified by either the public (observed) IP address
780
+ and port as seen by the application server, or the private (local) and
781
+ any public (observed) IP addresses in use by the device (this
782
+ information can be obtained by various means, for example from some DNS
783
+ servers).
784
+ If the allocated and observed IP addresses are the same (i.e. NAT is not
785
+ in use) then the same address should be specified for both publicAddress
786
+ and privateAddress.
787
+ If NAT64 is in use, the device should be identified by its publicAddress
788
+ and publicPort, or separately by its allocated IPv6 address (field
789
+ ipv6Address of the Device object)
790
+ In all cases, publicAddress must be specified, along with at least one
791
+ of either privateAddress or publicPort, dependent upon which is known.
792
+ In general, mobile devices cannot be identified by their public IPv4
793
+ address alone.
794
+ properties :
795
+ publicAddress :
796
+ $ref : " #/components/schemas/SingleIpv4Addr"
797
+ privateAddress :
798
+ $ref : " #/components/schemas/SingleIpv4Addr"
799
+ publicPort :
800
+ $ref : " #/components/schemas/Port"
801
+ anyOf :
802
+ - required : [publicAddress, privateAddress]
803
+ - required : [publicAddress, publicPort]
804
+ example :
805
+ publicAddress : " 84.125.93.10"
806
+ publicPort : 59765
807
+ SingleIpv4Addr :
808
+ description : A single IPv4 address with no subnet mask
809
+ type : string
810
+ format : ipv4
811
+ example : " 84.125.93.10"
812
+ PortsSpec :
813
+ description : Specification of several TCP or UDP ports
722
814
type : object
723
815
minProperties : 1
724
816
properties :
725
- phoneNumber :
726
- $ref : " #/components/schemas/PhoneNumber"
727
- networkAccessIdentifier :
728
- $ref : " #/components/schemas/NetworkAccessIdentifier"
729
- ipv4Address :
730
- $ref : " #/components/schemas/Ipv4Address"
731
- ipv6Address :
732
- $ref : " #/components/schemas/Ipv6Address"
733
- description : Device identifier
734
- NetworkAccessIdentifier :
735
- type : string
736
-
737
- description : identifier for the End User formatted as string, it cab be
738
- the user's email address.
739
- PhoneNumber :
740
- type : string
741
- pattern : ' ^\+?[0-9]{5,15}$'
742
- example : " 123456789"
743
- description : Subscriber number in E.164 format (starting with country
744
- code). Optionally prefixed with '+'.
745
- Ipv4Address :
746
- type : string
747
- format : ipv4
748
- example : " 192.168.0.1"
749
- description : IP of the device. A single IPv4 address may be specified in
750
- dotted-quad form 1.2.3.4. Only this exact IP number will match the flow
751
- control rule.
752
- Ipv6Address :
753
- type : string
754
- format : ipv6
755
- example : " 2001:db8:85a3:8d3:1319:8a2e:370:7344"
756
- description : IP of the device. A single IPv6 address, following IETF 5952
757
- format, may be specified like 2001:db8:85a3:8d3:1319:8a2e:370:7344
817
+ ranges :
818
+ description : Range of TCP or UDP ports
819
+ type : array
820
+ minItems : 1
821
+ items :
822
+ type : object
823
+ required :
824
+ - from
825
+ - to
826
+ properties :
827
+ from :
828
+ $ref : " #/components/schemas/Port"
829
+ to :
830
+ $ref : " #/components/schemas/Port"
831
+ Port :
832
+ description : TCP or UDP port number
833
+ type : integer
834
+ minimum : 0
835
+ maximum : 65535
836
+ Protocol :
837
+ description : The protocol for the influeced flow. It can be specified and
838
+ it is identified by a string according to the column “Keyword” as defined
839
+ by IANA (https://www.iana.org/assignments/protocol-numbers/\
840
+ protocol-numbers.xhtml), e.g. UDP or TCP.
841
+ type : string
842
+ example : " TCP"
843
+ DeviceIpv6Address :
844
+ description : |
845
+ The device should be identified by the observed IPv6 address, or by any
846
+ single IPv6 address from within the subnet allocated to the device (e.g.
847
+ adding ::0 to the /64 prefix).
848
+ type : string
849
+ format : ipv6
850
+ example : 2001:db8:85a3:8d3:1319:8a2e:370:7344
758
851
AppInstanceId :
759
852
type : string
760
853
format : uuid
0 commit comments