Commit 9ebf7dcf authored by Elian Kraja's avatar Elian Kraja

First draft

parent 2fd2a665
Pipeline #5156 passed with stage
in 0 seconds
#!/bin/bash
specfiles=$(ls | egrep "^[^.]*.(json|yaml)")
fres=0
for i in $specfiles ; do
echo "-- Validating and linting OpenAPI file $i..."
swagger-cli validate $i
res=$?
speccy lint "$i"
res2=$?
fres=$(($fres||$res||$res2))
echo "--- Validator returned $res, linter returned $res2."
done
echo "-- Final validator returns $fres."
exit $fres
info:
title: "ETSI GS MEC 029 Fixed Access Information API"
version: 2.1.1
description: "ETSI GS MEC 029 Fixed Access Information API described using OpenAPI."
license:
name: BSD-3-Clause
url: 'https://forge.etsi.org/legal-matters'
contact:
url: https://forge.etsi.org/rep/mec/gs029-fai-api
externalDocs:
description: "ETSI GS MEC 029 Fixed Access Information API, v2.1.1"
url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/029/02.01.01_60/gs_mec029v020101p.pdf'
openapi: 3.0.0
servers:
- url: 'https://localhost/fai/v1'
tags:
- name: queries
description: Queries
- name: subscription
description: Subscription
paths:
/queries/fa_info:
get:
tags:
- 'queries'
summary: 'Retrieve information on the available fixed access networks.'
description: 'Retrieve information on the available fixed access networks.'
operationId: fa_infoGET
parameters:
- in: query
name: customerPremisesInfo
schema:
type: array
items:
$ref: '#/components/schemas/CpInfo'
required: false
description: 'Comma separated list of customer premises information'
- in: query
name: lastMileTech
schema:
type: array
items:
type: integer
required: false
description: 'Comma separated list of last mile technologies.'
- in: query
name: interfaceType
schema:
type: array
items:
type: integer
description: 'Comma separated list of interface types.'
- in: query
name: dsbw
schema:
type: array
items:
type: integer
required: false
description: 'Comma separated list of the bandwidth (in Mbps) from the network towards the customer site.'
- in: query
name: usbw
schema:
type: array
items:
type: integer
required: false
description: 'Comma separated list of the bandwidth (in Mbps) from the customer site towards the network.'
- in: query
name: latency
schema:
type: array
items:
type: integer
required: false
description: 'Comma separated list of the maximum baseline latency (in ms) between customer site and service edge node.'
responses:
'200':
description: 'A response body containing the FAI is returned. '
content:
application/json:
schema:
$ref: '#/components/schemas/FaInfo'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'406':
$ref: '#/components/responses/406'
'429':
$ref: '#/components/responses/429'
/queries/device_info:
get:
tags:
- 'queries'
summary: 'retrieve information on the devices that are connected to a fixed access network.'
description: 'retrieve information on the devices that are connected to a fixed access network.'
operationId: device_infoGET
parameters:
- in: query
name: gwId
schema:
type: array
items:
type: string
required: false
description: 'Comma separated list of gateway identifier'
- in: query
name: deviceId
schema:
type: array
items:
type: string
required: false
description: 'Comma separated list of device identifier.'
- in: query
name: deviceStatus
schema:
type: array
items:
type: integer
description: 'Comma separated list of device status.'
responses:
'200':
description: 'A response body containing the device information is returned'
content:
application/json:
schema:
$ref: '#/components/schemas/DeviceInfo'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'406':
$ref: '#/components/responses/406'
'429':
$ref: '#/components/responses/429'
#/queries/cable_line_info:
#get:
#/queries/optical_network_info:
#get:
#/subscriptions:
#get:
#post:
#/subscriptions/{subscriptionId}:
#get:
#put:
#delete:
# /notifitication_end_point_provided_by_client
#post:
components:
schemas:
AniAlarmNotification.alarm:
description: 'Indicates the alarm of the ANI: 0 = LowReceivedOpticalPower. 1 = HighReceivedOpticalPower. 2 = SignalFailure. 3 = SignalDegrade. 4 = LowTransmitOpticalPower.5 = HighTransmitOpticalPower.6 = LaserBiasCurrent.'
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
type: integer
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Enum
AniAlarmNotification.aniId:
properties:
onuId:
description: The unique identifiers for the optical network unit.
type: string
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: String
aniIndex:
description: The index of an access network interface supported by the optical network unit.
type: string
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: String
required:
- onuId
- aniIndex
AniAlarmNotification:
properties:
alarm:
$ref: '#/components/schemas/AniAlarmNotification.alarm'
aniId:
$ref: '#/components/schemas/AniAlarmNotification.aniId'
customerPremisesInfo:
description: The physical location of the related customer sites.
items:
$ref: '#/components/schemas/CpInfo'
minItems: 0
type: array
x-etsi-mec-cardinality: 0..N
x-etsi-mec-origin-type: CpInfo
notificationType:
description: Shall be set to "AniAlarmNotification".
type: string
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: String
onuId:
type: string
timeStamp:
# description': Time stamp.
# x-etsi-mec-cardinality': 0..1
# x-etsi-mec-origin-type': TimeStamp
$ref: '#/components/schemas/TimeStamp'
required:
- notificationType
- onuId
- aniIndex
- alarm
type: object
x-etsi-ref: 6.4.6
AniAlarmSubscription.filterCriteriaAniAlarm.alarms:
description: "In case alarms is not included in the subscription request, the default value -1 = All shall be used and included in the response:\n0 =\tLowReceivedOpticalPower.\n(Received downstream optical power below threshold.)\n1 =\tHighReceivedOpticalPower.\n\t(Received downstream optical power above threshold.)\n2 =\tSignalFalure.\n(Bit error-based signal fail.)\n3 =\tSignalDegrade.\n(Bit error-based signal degrade.)\n4 =\tLowTransmitOpticalPower.\n(Transmit optical power below lower threshold.)\n5 =\tHighTransmitOpticalPower.\n(Transmit optical power above upper threshold.)\n6 =\tLaserBiasCurrent.\n(Laser bias current above threshold determined by vendor.)\n-1 =\tAll."
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- -1
type: integer
AniAlarmSubscription.links:
properties:
self:
# description': Self referring URI. The URI shall be unique within the FAI API as it acts as an ID for the subscription.
# x-etsi-mec-cardinality': '1'
# x-etsi-mec-origin-type': LinkType
$ref: '#/components/schemas/LinkType'
required:
- self
AniAlarmSubscription.filterCriteriaAniAlarm:
description: 'List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.'
required:
- onuId
- aniId
properties:
customerPremisesInfo:
required:
- onuId
- aniId
description: 0 to N physical locations of the customer sites.
minItems: 0
type: array
items:
$ref: '#/components/schemas/CpInfo'
x-etsi-mec-cardinality: 0..N
x-etsi-mec-origin-type: CpInfo
onuId:
description: '1 to N unique identifiers for the optical network units. Typical it is the unique serial number for each ONU, which contains the vendor ID and version number. The first four bytes are an ASCII-encoded four-letter vendor ID. The second four bytes are a binary encoded serial number, under the control of the ONU vendor.'
type: array
items:
type: string
x-etsi-mec-cardinality: '1..N'
x-etsi-mec-origin-type: String
aniId:
description: ''
type: object
required:
- onuId
- aniIndex
properties:
onuId:
description: 'The unique identifiers for the optical network unit'
type: string
aniIndex:
description: 'The index of an access network interface supported by the optical network unit'
type: string
alarms:
type: array
items:
$ref: '#/components/schemas/AniAlarmSubscription.filterCriteriaAniAlarm.alarms'
AniAlarmSubscription:
properties:
subscriptionType:
description: 'Shall be set to \"AniAlarmSubscription\"'
type: string
_links:
$ref: '#/components/schemas/AniAlarmSubscription.links'
aniIndex:
description: The index of an access network interface supported by the optical network unit.
type: string
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: String
callbackReference:
description: URI selected by the service consumer to receive notifications on the subscribed FAIS information. This shall be included both in the request and in response.
format: uri
type: string
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: URI
expiryDeadline:
# description': Time stamp.
# x-etsi-mec-cardinality': 0..1
# x-etsi-mec-origin-type': TimeStamp
$ref: '#/components/schemas/TimeStamp'
filterCriteriaAniAlarm:
$ref: '#/components/schemas/AniAlarmSubscription.filterCriteriaAniAlarm'
required:
- subscriptionType
- callbackReference
- filterCriteriaAniAlarm
- onuId
- aniIndex
type: object
x-etsi-ref: 6.3.6
CableLineInfo.cmInfo.serviceFlowStats:
description: It describes statistics associated with the Service Flows in a managed device.
properties:
ifIndex:
description: It represents the interface index of the MAC Domain of the Service Flow.
type: string
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: String
serviceFlowInfo:
type: array
items:
$ref: '#/components/schemas/CableLineInfo.cmInfo.serviceFlowStats.serviceFlowInfo'
type: object
required:
- ifIndex
- serviceFlowInfo
CableLineInfo.cmInfo.serviceFlowStats.serviceFlowInfo:
description: It represents the information of a Service Flow.
properties:
aqmDroppedPkts:
description: For upstream service flows on which AQM is enabled, this attribute counts the number of Packet Data PDUs classified to this service flow dropped due to Active Queue Management drop decisions.
type: integer
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Integer
pkts:
description: For outgoing Service Flows, this attribute counts the number of Packet Data PDUs forwarded to this Service Flow. For incoming upstream CMTS service flows, this attribute counts the number of Packet Data PDUs actually received on the Service Flow identified by the SID for which the packet was scheduled.
type: integer
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Integer
policedDelayPkts:
description: It counts only outgoing packets delayed in order to maintain the Maximum Sustained Traffic Rate.
type: integer
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Integer
policedDropPkts:
description: "For upstream service flows, this attribute counts the number of Packet Data PDUs classified to this service flow dropped due to:\n1)\texceeding the selected Buffer Size for the service flow; or\n2)\tUGS packets dropped due to exceeding the Unsolicited Grant Size with a Request/Transmission policy that requires such packets to be dropped."
type: integer
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Integer
serviceFlowId:
description: It represents an identifier assigned to a Service Flow by CMTS within a MAC Domain.
type: integer
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Integer
timeActive:
description: It indicates the number of seconds that the service flow has been active.
type: integer
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Integer
timeCreated:
# description': It indicates the time when the service flow was created.
# x-etsi-mec-cardinality': '1'
# x-etsi-mec-origin-type': TimeStamp
$ref: '#/components/schemas/TimeStamp'
required:
- serviceFlowId
- pkts
- timeCreated
- timeActive
- policedDropPkts
- policedDelayPkts
- aqmDroppedPkts
CableLineInfo.cmInfo.cmStatus.cmRegState:
description: 'It defines the CM connectivity state. Enumeration of: 1 = other. 2 = notReady. 3 = notSynchronized. 4 = phySynchronized. 5 = usParametersAcquired. 6 = rangingComplete. 7 = dhcpV4Complete. 8 = todEstablished. 9 = securityEstablished. 10 = configFileDownloadComplete. 11 = registrationComplete. 12 = operational. 13 = accessDenied. 14 = eaeInProgress. 15 = dhcpv4InProgress. 16 = dhcpv6InProgress. 17 = dhcpV6Complete. 18 = registrationInProgress. 19 = bpiInit. 20 = forwardingDisabled. 21 = dsTopologyResolutionInProgress. 22 = rangingInProgress. 23 = rfMuteAll.'
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
type: integer
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Enum
CableLineInfo.cmInfo.cmStatus:
description: It provides CM connectivity status information of the CM.
properties:
cmRegState:
$ref: '#/components/schemas/CableLineInfo.cmInfo.cmStatus.cmRegState'
emDlsOperStatus:
description: It indicates whether the CM is currently operating in Energy Management DLS Mode.
type: boolean
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Boolean
energyMgt1x1OperStatus:
description: It indicates whether the CM is currently operating in Energy Management 1x1 Mode.
type: boolean
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Boolean
ifIndex:
description: It denotes the MAC Domain interface index of the CM.
type: string
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: String
invalidRegRsps:
description: It denotes the number of times the CM received invalid registration response messages.
type: integer
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Integer
lostSyncs:
description: It denotes the number of times the CM lost synchronization with the downstream channel.
type: integer
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Integer
resets:
description: It denotes the number of times the CM reset or initialized this interface.
type: integer
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Integer
required:
- ifIndex
- cmRegState
- resets
- lostSyncs
- invalidRegRsps
- energyMgt1x1OperStatus
- emDlsOperStatus
CableLineInfo.cmInfo.cmDpvStats:
description: It represents the DOCSIS Path Verify Statistics collected in the cable modem device.
properties:
avgLatency:
description: The average latency measurement.
type: integer
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Integer
ifIndex:
description: It represents the interface Index of the Downstream Interface where the measurements are taken.
type: string
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: String
lastMeasLatency:
description: The last latency measurement.
type: integer
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Integer
lastMeasTime:
# description': The last measurement time of the last latency measurement.
# x-etsi-mec-cardinality': '1'
# x-etsi-mec-origin-type': TimeStamp
$ref: '#/components/schemas/TimeStamp'
maxLatency:
description: The maximum latency measurement.
type: integer
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Integer
minLatency:
description: The minimum latency measurement.
type: integer
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Integer
numMeas:
description: The number of latency measurements made.
type: integer
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: Integer
required:
- ifIndex
- lastMeasLatency
- lastMeasTime
- minLatency
- maxLatency
- avgLatency
- numMeas
CableLineInfo.cmInfo:
description: ''
properties:
cmDpvStats:
type: array
items:
$ref: '#/components/schemas/CableLineInfo.cmInfo.cmDpvStats'
cmId:
description: 'Information (typically the serial number) to identify a Cable Modem at subscriber locations intended for use in conveying data communications on a cable data system.This value SHALL remain fixed over the lifetime of thedevice, including across firmware updates.'
type: string
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: String
cmStatus:
$ref: '#/components/schemas/CableLineInfo.cmInfo.cmStatus'
serviceFlowStats:
type: array
items:
$ref: '#/components/schemas/CableLineInfo.cmInfo.serviceFlowStats'
required:
- cmId
CableLineInfo:
properties:
cmInfo:
$ref: '#/components/schemas/CableLineInfo.cmInfo'
customerPremisesInfo:
# description': The physical location of a customer site.
# x-etsi-mec-cardinality': '1'
# x-etsi-mec-origin-type': CpInfo
$ref: '#/components/schemas/CpInfo'
timeStamp:
# description': Time stamp.
# x-etsi-mec-cardinality': 0..1
# x-etsi-mec-origin-type': TimeStamp
$ref: '#/components/schemas/TimeStamp'
type: object
required:
- customerPremisesInfo
- cmInfo
x-etsi-ref: 6.2.4
cmRegState:
description: 'It indicates the CM connectivity state. Enumeration of: 1 = notReady. 2 = notSynchronized. 3 = phySynchronized. 4 = dsTopologyResolutionInProgress.5 = usParametersAcquired. 6 = rangingInProgress.7 = rangingComplete. 8 = eaeInProgress.9 = dhcpv4InProgress. 10 = dhcpv6InProgress.11 = dhcpV4Complete.12 = dhcpV6Complete.13 = todEstablished.14 = securityEstablished.15 = configFileDownloadComplete.16 = registrationInProgress.17 = registrationComplete. 18 = accessDenied. 19 =operational. 20 = bpiInit.21 =forwardingDisabled.'
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
type: integer
CmConnNotification.cmIf:
description: ''
items:
type: object
properties:
cmId:
description: The Cable Modem identifier.
type: string
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: String
cmRegState:
items:
$ref: '#/components/schemas/cmRegState'
minItems: 1
type: array
x-etsi-mec-cardinality: 1..N
x-etsi-mec-origin-type: Enum
ifIndex:
description: The MAC Domain interface index of the CM.
items:
type: string
minItems: 1
type: array
x-etsi-mec-cardinality: 1..N
x-etsi-mec-origin-type: String
required:
- cmId
- ifIndex
- cmRegState
CmConnNotification:
required:
- notificationType
- cmIf
properties:
cmIf:
type: array
items:
$ref: '#/components/schemas/CmConnNotification.cmIf'
customerPremisesInfo:
# description': The physical location of a customer site.
# x-etsi-mec-cardinality': 0..1
# x-etsi-mec-origin-type': CpInfo
$ref: '#/components/schemas/CpInfo'
notificationType:
description: 'Shall be set to \"CmconnNotification\".'
type: string
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: String
timeStamp:
# description': Time stamp.
# x-etsi-mec-cardinality': 0..1
# x-etsi-mec-origin-type': TimeStamp
$ref: '#/components/schemas/TimeStamp'
type: object
x-etsi-ref: 6.4.4
CmConnSubscription.links:
description: Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.
properties:
self:
# description': Self referring URI. The URI shall be unique within the FAI API as it acts as an ID for the subscription.
# x-etsi-mec-cardinality': '1'
# x-etsi-mec-origin-type': LinkType
$ref: '#/components/schemas/LinkType'
required:
- self
type: object
x-etsi-mec-cardinality: 0..1
CmConnSubscription.filterCriteriaCmConn.cmIf:
description: ''
properties:
cmId:
description: The identifier of a Cable Modem at subscriber locations intended for use in conveying data communications on a cable data system.
type: string
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: String
cmRegState:
items:
$ref: '#/components/schemas/cmRegState'
minItems: 1
type: array
x-etsi-mec-cardinality: 1..N
x-etsi-mec-origin-type: Enum
ifIndex:
description: The MAC Domain interface index of the CM.
items:
type: string
minItems: 1
type: array
x-etsi-mec-cardinality: 1..N
x-etsi-mec-origin-type: String
required:
- cmId
- ifIndex
- cmRegState
CmConnSubscription.filterCriteriaCmConn:
description: List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.
properties:
cmIf:
$ref: '#/components/schemas/CmConnSubscription.filterCriteriaCmConn.cmIf'
customerPremisesInfo:
# description': The physical location of a customer site.
# x-etsi-mec-cardinality': 0..1
# x-etsi-mec-origin-type': CpInfo
$ref: '#/components/schemas/CpInfo'
type: object
x-etsi-mec-cardinality: '1'
CmConnSubscription:
properties:
_links:
$ref: '#/components/schemas/CmConnSubscription.links'
callbackReference:
description: URI selected by the service consumer to receive notifications on the subscribed FAIS information. This shall be included both in the request and in response.
format: uri
type: string
x-etsi-mec-cardinality: '1'
x-etsi-mec-origin-type: URI
expiryDeadline: