Skip to content

Commit b656ddc

Browse files
Rel 0.9.
1 parent 1ca2bfa commit b656ddc

File tree

1 file changed

+164
-71
lines changed

1 file changed

+164
-71
lines changed

code/API_definitions/Traffic_Influence.yaml

+164-71
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ openapi: 3.0.3
44
# API info #
55
############################################################################
66
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
99
description: |
1010
## Overview
1111
The reference scenario foresees a Service, composed by one or more Service
@@ -135,32 +135,40 @@ info:
135135
"trafficInfluenceID"). All the created resources are aggregated by the
136136
Application (identified by "appId").\
137137
\
138-
**appId**
138+
**appId:**
139139
A globally unique identifier associated with the application. This
140140
identifier is provided during the application onboarding process.
141141
To influence the traffic toward a specific Application. It is the Operator
142142
Platform that detects the appropriate Application instance in the selected
143143
"region" or "zone".\
144144
\
145-
**appInstanceId**
145+
**appInstanceId:**
146146
A globally unique identifier generated by the Operator Platform to identify
147147
a specific instance of the Application on a specific zone. To influence a
148148
traffic toward a specific Application instance.\
149149
\
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.\
154152
\
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.\
162158
\
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:**
164172
Developers have a chance to specify call back URL on which notifications
165173
(e.g. session termination) regarding the session can be received from the
166174
service provider. This is also an optional parameter.
@@ -270,6 +278,9 @@ info:
270278
- Modified CAMARA URL to refer to the Edge Cloud Repository
271279
- OAS version now includes "-wip" extension
272280
- 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
273284
license:
274285
name: Apache 2.0
275286
url: https://www.apache.org/licenses/LICENSE-2.0.html
@@ -641,28 +652,29 @@ components:
641652
- 'error'
642653
- 'deletion in progress'
643654
- '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"
666678
notificationUri:
667679
type: string
668680
description: Defines the callback uri which should be notified in
@@ -719,42 +731,123 @@ components:
719731
type: string
720732
additionalProperties: false
721733
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+
example: "[email protected]"
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
722814
type: object
723815
minProperties: 1
724816
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-
example: "[email protected]"
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
758851
AppInstanceId:
759852
type: string
760853
format: uuid

0 commit comments

Comments
 (0)