diff --git a/.gitbook/assets/image (22) (1) (1).png b/.gitbook/assets/image (22) (1) (1).png new file mode 100644 index 0000000..69ddbdf Binary files /dev/null and b/.gitbook/assets/image (22) (1) (1).png differ diff --git a/.gitbook/assets/owanalytics.yaml b/.gitbook/assets/owanalytics.yaml new file mode 100644 index 0000000..b7ccb84 --- /dev/null +++ b/.gitbook/assets/owanalytics.yaml @@ -0,0 +1,1409 @@ +openapi: 3.0.1 +info: + title: OpenWiFi Analytics Service + description: Definitions and APIs to analyze OpenWiFi network. + version: 2.6.0 + license: + name: BSD3 + url: https://github.com/Telecominfraproject/wlan-cloud-ucentralgw/blob/master/LICENSE + +servers: + - url: 'https://localhost:16009/api/v1' + +security: + - bearerAuth: [] + - ApiKeyAuth: [] + +components: + securitySchemes: + ApiKeyAuth: + type: apiKey + in: header + name: X-API-KEY + bearerAuth: + type: http + scheme: bearer + bearerFormat: JWT + + responses: + NotFound: + description: The specified resource was not found. + content: + application/json: + schema: + properties: + ErrorCode: + type: integer + ErrorDetails: + type: string + ErrorDescription: + type: string + + Unauthorized: + description: The requested does not have sufficient rights to perform the operation. + content: + application/json: + schema: + properties: + ErrorCode: + type: integer + enum: + - 0 # Success + - 1 # PASSWORD_CHANGE_REQUIRED, + - 2 # INVALID_CREDENTIALS, + - 3 # PASSWORD_ALREADY_USED, + - 4 # USERNAME_PENDING_VERIFICATION, + - 5 # PASSWORD_INVALID, + - 6 # INTERNAL_ERROR, + - 7 # ACCESS_DENIED, + - 8 # INVALID_TOKEN + - 9 # EXPIRED_TOKEN + - 10 # RATE_LIMIT_EXCEEDED + - 11 # BAD_MFA_TRANSACTION + - 12 # MFA_FAILURE + - 13 # SECURITY_SERVICE_UNREACHABLE + ErrorDetails: + type: string + ErrorDescription: + type: string + + Success: + description: The requested operation was performed. + content: + application/json: + schema: + properties: + Operation: + type: string + Details: + type: string + Code: + type: integer + + BadRequest: + description: The requested operation failed. + content: + application/json: + schema: + properties: + ErrorCode: + type: integer + ErrorDetails: + type: string + ErrorDescription: + type: integer + + schemas: + ObjectInfo: + type: object + properties: + id: + type: string + format: uuid + name: + type: string + description: + type: string + notes: + type: array + items: + $ref: '#/components/schemas/NoteInfo' + created: + type: integer + format: int64 + modified: + type: integer + format: int64 + tags: + type: array + items: + type: integer + format: int64 + + VenueInfo: + type: object + properties: + id: + type: string + format: uuid + name: + type: string + description: + type: string + retention: + type: integer + interval: + type: integer + monitorSubVenues: + type: boolean + + BoardInfo: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + venueList: + type: array + items: + $ref: '#/components/schemas/VenueInfo' + + BoardInfoList: + type: object + properties: + boards: + type: array + items: + $ref: '#/components/schemas/BoardInfo' + + DeviceInfo: + type: object + properties: + type: + type: string + enum: + - ap + - switch + - iot + - unknown + serialNumber: + type: string + deviceType: + type: string + lastHealth: + type: integer + format: int64 + health: + type: integer + format: int64 + lastContact: + type: integer + format: int64 + lastPing: + type: integer + format: int64 + lastState: + type: integer + format: int64 + lastFirmwareUpdate: + type: integer + format: int64 + lastFirmware: + type: string + lastConnection: + type: integer + format: int64 + lastDisconnection: + type: integer + format: int64 + pings: + type: integer + format: int64 + states: + type: integer + format: int64 + connected: + type: boolean + connectionIp: + type: string + associations_2g: + type: integer + format: int64 + associations_5g: + type: integer + format: int64 + associations_6g: + type: integer + format: int64 + locale: + type: string + memory: + type: number + uptime: + type: integer + format: int64 + + DeviceInfoList: + type: object + properties: + devices: + type: array + items: + $ref: '#/components/schemas/DeviceInfo' + + TIDstat_entry: + type: object + properties: + rx_msdu: + type: integer + format: int64 + tx_msdu: + type: integer + format: int64 + tx_msdu_failed: + type: integer + format: int64 + tx_msdu_retries: + type: integer + format: int64 + + UE_rate: + type: object + properties: + bitrate: + type: integer + format: int64 + mcs: + type: integer + format: int64 + nss: + type: integer + format: int64 + chwidth: + type: integer + format: int64 + ht: + type: boolean + sgi: + type: + boolean + + UETimePoint: + type: object + properties: + association_bssid: + type: integer + format: int64 + station: + type: integer + format: int64 + rssi: + type: integer + format: int64 + tx_bytes: + type: integer + format: int64 + rx_bytes: + type: integer + format: int64 + tx_duration: + type: integer + format: int64 + rx_packets: + type: integer + format: int64 + tx_packets: + type: integer + format: int64 + tx_retries: + type: integer + format: int64 + tx_failed: + type: integer + format: int64 + connected: + type: integer + format: int64 + inactive: + type: integer + format: int64 + tx_rate: + $ref: '#/components/schemas/UE_rate' + rx_rate: + $ref: '#/components/schemas/UE_rate' + tidstats: + type: array + items: + $ref: '#/components/schemas/TIDstat_entry' + tx_bytes_bw: + type: number + rx_bytes_bw: + type: number + tx_packets_bw: + type: number + rx_packets_bw: + type: number + tx_failed_pct: + type: number + tx_retries_pct: + type: number + tx_duration_pct: + type: number + tx_bytes_delta: + type: integer + format: int64 + rx_bytes_delta: + type: integer + format: int64 + tx_packets_delta: + type: integer + format: int64 + rx_packets_delta: + type: integer + format: int64 + tx_failed_delta: + type: integer + format: int64 + tx_retries_delta: + type: integer + format: int64 + tx_duration_delta: + type: integer + format: int64 + + AveragePoint: + type: object + properties: + min: + type: number + max: + type: number + avg: + type: number + + SSIDTimePoint: + type: object + properties: + bssid: + type: string + mode: + type: string + ssid: + type: string + band: + type: integer + associations: + type: array + items: + $ref: '#/components/schemas/UETimePoint' + tx_bytes_bw: + $ref: '#/components/schemas/AveragePoint' + rx_bytes_bw: + $ref: '#/components/schemas/AveragePoint' + tx_packets_bw: + $ref: '#/components/schemas/AveragePoint' + rx_packets_bw: + $ref: '#/components/schemas/AveragePoint' + tx_failed_pct: + $ref: '#/components/schemas/AveragePoint' + tx_retries_pct: + $ref: '#/components/schemas/AveragePoint' + tx_duration_pct: + $ref: '#/components/schemas/AveragePoint' + + APTimePoint: + type: object + properties: + collisions: + type: integer + format: int64 + multicast: + type: integer + format: int64 + rx_bytes: + type: integer + format: int64 + rx_dropped: + type: integer + format: int64 + rx_errors: + type: integer + format: int64 + rx_packets: + type: integer + format: int64 + tx_bytes: + type: integer + format: int64 + tx_dropped: + type: integer + format: int64 + tx_errors: + type: integer + format: int64 + tx_packets: + type: integer + format: int64 + tx_bytes_delta: + type: integer + format: int64 + rx_bytes_delta: + type: integer + format: int64 + rx_dropped_delta: + type: integer + format: int64 + tx_dropped_delta: + type: integer + format: int64 + rx_packets_delta: + type: integer + format: int64 + tx_packets_delta: + type: integer + format: int64 + rx_errors_delta: + type: integer + format: int64 + tx_errors_delta: + type: integer + format: int64 + + RadioTimePoint: + type: object + properties: + band: + type: integer + format: int64 + radio_channel: + type: integer + format: int64 + active_ms: + type: integer + format: int64 + busy_ms: + type: integer + format: int64 + receive_ms: + type: integer + format: int64 + transmit_ms: + type: integer + format: int64 + tx_power: + type: integer + format: int64 + channel: + type: integer + format: int64 + temperature: + type: integer + format: int64 + noise: + type: integer + format: int64 + active_pct: + type: number + busy_pct: + type: number + receive_pct: + type: number + transmit_pct: + type: number + + DeviceTimePoint: + type: object + properties: + id: + type: string + format: uuid + boardId: + type: string + format: uuid + serialNumber: + type: string + timestamp: + type: integer + format: int64 + ap_data: + $ref: '#/components/schemas/APTimePoint' + ssid_data: + type: array + items: + $ref: '#/components/schemas/SSIDTimePoint' + radio_data: + type: array + items: + $ref: '#/components/schemas/RadioTimePoint' + device_info: + $ref: '#/components/schemas/DeviceInfo' + + DeviceTimePointAnalysis: + type: object + properties: + timestamp: + type: integer + format: int64 + noise: + $ref: '#/components/schemas/AveragePoint' + active_pct: + $ref: '#/components/schemas/AveragePoint' + busy_pct: + $ref: '#/components/schemas/AveragePoint' + receive_pct: + $ref: '#/components/schemas/AveragePoint' + transmit_pct: + $ref: '#/components/schemas/AveragePoint' + tx_power: + $ref: '#/components/schemas/AveragePoint' + tx_bytes_bw: + $ref: '#/components/schemas/AveragePoint' + rx_bytes_bw: + $ref: '#/components/schemas/AveragePoint' + rx_dropped_pct: + $ref: '#/components/schemas/AveragePoint' + tx_dropped_pct: + $ref: '#/components/schemas/AveragePoint' + rx_packets_bw: + $ref: '#/components/schemas/AveragePoint' + tx_packets_bw: + $ref: '#/components/schemas/AveragePoint' + rx_errors_pct: + $ref: '#/components/schemas/AveragePoint' + tx_errors_pct: + $ref: '#/components/schemas/AveragePoint' + + DeviceTimePointList: + type: object + properties: + points: + type: array + items: + $ref: '#/components/schemas/DeviceTimePoint' + stats: + type: array + items: + $ref: '#/components/schemas/DeviceTimePointAnalysis' + + DeviceTimePointStats: + type: object + properties: + firstPoint: + type: integer + format: int64 + lastPoint: + type: integer + format: int64 + count: + type: integer + format: int64 + + WifiClientHistory: + type: object + properties: + timestamp: + type: integer + station_id: + type: string + bssid: + type: string + ssid: + type: string + rssi: + type: integer + rx_bitrate: + type: integer + rx_chwidth: + type: integer + rx_mcs: + type: integer + rx_nss: + type: integer + rx_vht: + type: boolean + tx_bitrate: + type: integer + tx_chwidth: + type: integer + tx_mcs: + type: integer + tx_nss: + type: integer + tx_vht: + type: boolean + rx_bytes: + type: integer + tx_bytes: + type: integer + rx_duration: + type: integer + tx_duration: + type: integer + rx_packets: + type: integer + tx_packets: + type: integer + ipv4: + type: string + ipv6: + type: string + channel_width: + type: integer + noise: + type: integer + tx_power: + type: integer + channel: + type: integer + active_ms: + type: integer + busy_ms: + type: integer + receive_ms: + type: integer + mode: + type: string + ack_signal: + type: integer + ack_signal_avg: + type: integer + connected: + type: integer + inactive: + type: integer + tx_retries: + type: integer + venue_id: + type: string + + WifiClientHistoryList: + type: object + properties: + entries: + type: array + items: + $ref: '#/components/schemas/WifiClientHistory' + + MacList: + type: object + properties: + entries: + type: array + items: + type: string + + ######################################################################################### + ## + ## These are endpoints that all services in the OPenWiFI stack must provide + ## + ######################################################################################### + AnyPayload: + type: object + properties: + Document: + type: string + + StringList: + type: object + properties: + list: + type: array + items: + type: string + + TagValuePair: + type: object + properties: + tag: + type: string + value: + type: string + + TagValuePairList: + type: object + properties: + tagList: + type: array + items: + $ref: '#/components/schemas/TagValuePair' + + TagIntPair: + type: object + properties: + tag: + type: string + value: + type: integer + format: int64 + + TagIntPairList: + type: object + properties: + tagList: + type: array + items: + $ref: '#/components/schemas/TagIntPair' + + SystemCommandDetails: + type: object + properties: + command: + type: string + enum: + - setloglevels + - getloglevels + - getSubSystemNames + - getLogLevelNames + - stats + parameters: + oneOf: + - $ref: '#/components/schemas/StringList' + - $ref: '#/components/schemas/TagValuePairList' + + SystemCommandResults: + type: object + oneOf: + - $ref: '#/components/schemas/StringList' + - $ref: '#/components/schemas/TagValuePairList' + + NoteInfo: + type: object + properties: + created: + type: integer + format: int64 + createdBy: + type: string + note: + type: string + + SystemInfoResults: + type: object + properties: + version: + type: string + uptime: + type: integer + format: integer64 + start: + type: integer + format: integer64 + os: + type: string + processors: + type: integer + hostname: + type: string + certificates: + type: array + items: + type: object + properties: + filename: + type: string + expires: + type: integer + format: int64 + + Dashboard: + type: object + properties: + snapshot: + type: integer + format: int64 + tenants: + $ref: '#/components/schemas/TagIntPairList' + + SystemCommandSetLogLevel: + type: object + properties: + command: + type: string + enum: + - setloglevel + subsystems: + type: array + items: + $ref: '#/components/schemas/TagValuePair' + + SystemCommandReload: + type: object + properties: + command: + type: string + enum: + - reload + subsystems: + type: array + items: + type: string + example: these are the SubSystems names retrieve with the GetSubSystemsNamesResult. + + SystemCommandGetLogLevels: + type: object + properties: + command: + type: string + enum: + - getloglevels + + SystemGetLogLevelsResult: + type: object + properties: + taglist: + type: array + items: + $ref: '#/components/schemas/TagValuePair' + + SystemCommandGetLogLevelNames: + type: object + properties: + command: + type: string + enum: + - getloglevelnames + + SystemCommandGetSubsystemNames: + type: object + properties: + command: + type: string + enum: + - getsubsystemnames + + SystemCommandGetLogLevelNamesResult: + type: object + properties: + list: + type: array + items: + type: string + + SystemGetSubSystemNamesResult: + type: object + properties: + taglist: + type: array + items: + $ref: '#/components/schemas/TagValuePair' + +paths: + /boards: + get: + tags: + - Boards + operationId: getBoards + summary: Retrieve a list of boards. + parameters: + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Filter the results + name: filter + schema: + type: string + required: false + - in: query + description: return the number of boards + name: countOnly + schema: + type: boolean + required: false + - in: query + description: list of boards for a given venue + name: forVenue + schema: + type: string + format: uuid + required: false + responses: + 200: + description: Return a list of boards + content: + application/json: + schema: + $ref: '#/components/schemas/BoardInfoList' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /board/{id}: + get: + tags: + - Boards + operationId: getBoard + summary: Retrieve a board + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + responses: + 200: + description: Return a list of boards + content: + application/json: + schema: + $ref: '#/components/schemas/BoardInfo' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + delete: + tags: + - Boards + operationId: deleteBoard + summary: Remove a board + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + responses: + 200: + $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + post: + tags: + - Boards + operationId: createBoard + summary: Create a board + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + example: value should be 0 for a post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BoardInfo' + responses: + 200: + $ref: '#/components/schemas/BoardInfo' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + put: + tags: + - Boards + operationId: modifyBoard + summary: Modify a board + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BoardInfo' + responses: + 200: + $ref: '#/components/schemas/BoardInfo' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /board/{id}/devices: + get: + tags: + - Board Devices + summary: Get basic information about all the devices for a venue. + operationId: getBoardDevices + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + + responses: + 200: + $ref: '#/components/schemas/DeviceInfoList' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /board/{id}/timepoints: + get: + tags: + - Board data + summary: retrieve board data for a given time period. + operationId: getBoardTimepoint + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: query + name: fromDate + schema: + type: integer + required: false + - in: query + name: endDate + schema: + type: integer + required: false + - in: query + name: maxRecords + schema: + type: integer + default: 100 + required: false + - in: query + name: statsOnly + schema: + type: boolean + default: false + required: false + - in: query + name: pointsOnly + schema: + type: boolean + default: false + required: false + - in: query + name: pointsStatsOnly + schema: + type: boolean + default: false + required: false + + responses: + 200: + $ref: '#/components/schemas/DeviceTimePointList' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + delete: + tags: + - Board data + summary: delete board data for a given time period. + operationId: deleteBoardTimepoints + parameters: + - in: path + name: id + schema: + type: string + format: uuid + required: true + - in: query + name: fromDate + schema: + type: integer + required: false + - in: query + name: endDate + schema: + type: integer + required: false + responses: + 200: + $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + + /iptocountry: + get: + tags: + - Utility + summary: Get the country code for an IP address + operationId: getIpToCountry + parameters: + - in: query + name: iplist + schema: + type: string + example: + 10.2.2.2,10.3.4.3 + required: true + responses: + 200: + description: List of country codes. + content: + application/json: + schema: + type: object + properties: + enabled: + type: boolean + countryCodes: + type: array + items: + type: string + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /wifiClientHistory: + get: + tags: + - WiFiClientHistory + operationId: getWifiClientHistory + summary: Retrieve WiFi client history for debugging purpose + parameters: + - in: query + name: fromDate + schema: + type: integer + required: false + - in: query + name: endDate + schema: + type: integer + required: false + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: macsOnly + schema: + type: boolean + default: false + required: true + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: macFilter + schema: + type: string + example: + 112233445566, 11223344*, *5566 + required: false + - in: query + description: The venue to for the search. + name: venue + schema: + type: string + format: uuid + required: true + responses: + 200: + $ref: '#/components/schemas/StringList' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /wifiClientHistory/{client}: + get: + tags: + - WiFiClientHistory + operationId: getWifiClients + summary: Retrieve WiFi client history for debugging purpose + parameters: + - in: path + name: client + schema: + type: string + example: + "112233aabbcc" + required: true + - in: query + name: fromDate + schema: + type: integer + required: false + - in: query + name: endDate + schema: + type: integer + required: false + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: The venue to for the search. + name: venue + schema: + type: string + format: uuid + required: true + - in: query + description: return extended information + name: orderBy + schema: + type: string + example: serialNumber:a,created:d + required: false + - in: query + description: return extended information + name: orderSpec + schema: + type: boolean + default: false + required: false + responses: + 200: + $ref: '#/components/schemas/WifiClientHistoryList' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + delete: + tags: + - WiFiClientHistory + operationId: deleteWifiClientHistory + summary: Retrieve WiFi client history for debugging purpose + parameters: + - in: query + description: The venue to for the search. + name: venue + schema: + type: string + format: uuid + required: true + - in: path + name: client + schema: + type: string + example: + "112233aabbcc" + required: true + - in: query + name: fromDate + schema: + type: integer + required: false + - in: query + name: endDate + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: macFilter + schema: + type: string + example: + 112233445566, 11223344*, *5566 + required: false + responses: + 200: + $ref: '#/components/responses/Success' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + ######################################################################################### + ## + ## These are endpoints that all services in the OpenWiFi stack must provide + ## + ######################################################################################### + /system: + post: + tags: + - System Commands + summary: Perform some system wide commands. + operationId: systemCommand + requestBody: + description: Command details + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/SystemCommandSetLogLevel' + - $ref: '#/components/schemas/SystemCommandReload' + - $ref: '#/components/schemas/SystemCommandGetLogLevels' + - $ref: '#/components/schemas/SystemCommandGetLogLevelNames' + - $ref: '#/components/schemas/SystemCommandGetSubsystemNames' + responses: + 200: + description: Successful command execution + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/SystemGetLogLevelsResult' + - $ref: '#/components/schemas/SystemCommandGetLogLevelNamesResult' + - $ref: '#/components/schemas/SystemGetSubSystemNamesResult' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + get: + tags: + - System Commands + summary: Retrieve different values from the running service. + operationId: getSystemCommand + parameters: + - in: query + description: Get a value + name: command + schema: + type: string + enum: + - info + required: true + + responses: + 200: + description: Successful command execution + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/SystemInfoResults' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' diff --git a/.gitbook/assets/owprov (1).yaml b/.gitbook/assets/owprov (1).yaml new file mode 100644 index 0000000..7f55715 --- /dev/null +++ b/.gitbook/assets/owprov (1).yaml @@ -0,0 +1,3081 @@ +openapi: 3.0.1 +info: + title: OpenWiFi Provisioning Model + description: Definitions and APIs to manages an OpenWiFi network. + version: 2.5.0 + license: + name: BSD3 + url: https://github.com/Telecominfraproject/wlan-cloud-ucentralgw/blob/master/LICENSE + +servers: + - url: 'https://localhost:16005/api/v1' + +security: + - bearerAuth: [] + - ApiKeyAuth: [] + +components: + securitySchemes: + ApiKeyAuth: + type: apiKey + in: header + name: X-API-KEY + bearerAuth: + type: http + scheme: bearer + bearerFormat: JWT + + responses: + NotFound: + description: The specified resource was not found. + content: + application/json: + schema: + properties: + ErrorCode: + type: integer + ErrorDetails: + type: string + ErrorDescription: + type: string + + Unauthorized: + description: The requested does not have sufficient rights to perform the operation. + content: + application/json: + schema: + properties: + ErrorCode: + type: integer + enum: + - 0 # Success + - 1 # PASSWORD_CHANGE_REQUIRED, + - 2 # INVALID_CREDENTIALS, + - 3 # PASSWORD_ALREADY_USED, + - 4 # USERNAME_PENDING_VERIFICATION, + - 5 # PASSWORD_INVALID, + - 6 # INTERNAL_ERROR, + - 7 # ACCESS_DENIED, + - 8 # INVALID_TOKEN + - 9 # EXPIRED_TOKEN + - 10 # RATE_LIMIT_EXCEEDED + - 11 # BAD_MFA_TRANSACTION + - 12 # MFA_FAILURE + - 13 # SECURITY_SERVICE_UNREACHABLE + ErrorDetails: + type: string + ErrorDescription: + type: string + + Success: + description: The requested operation was performed. + content: + application/json: + schema: + properties: + Operation: + type: string + Details: + type: string + Code: + type: integer + + BadRequest: + description: The requested operation failed. + content: + application/json: + schema: + properties: + ErrorCode: + type: integer + ErrorDetails: + type: string + ErrorDescription: + type: integer + + schemas: + + ObjectInfo: + type: object + properties: + id: + type: string + format: uuid + name: + type: string + description: + type: string + notes: + type: array + items: + $ref: '#/components/schemas/NoteInfo' + created: + type: integer + format: int64 + modified: + type: integer + format: int64 + tags: + type: array + items: + type: integer + format: int64 + + # uuids: mpe: + ManagementPolicyEntry: + type: object + properties: + users: + type: array + items: + type: string + resources: + description: this is a list of UUID and UUID Patterns to control by this policy + type: array + items: + type: string + access: + type: array + items: + type: string + enum: + - NOACCESS + - READ + - MODIFY + - DELETE + - LIST + - CREATE + - FULL + policy: + description: A JSON document describing the policy + type: string + + # uuids: mpp: + ManagementPolicy: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + entries: + type: array + items: + $ref: '#/components/schemas/ManagementPolicyEntry' + inUse: + type: array + items: + type: string + format: uuid + example: each uuid is preceded by ent, or ven to say that the elemenet is entity or venue + entity: + type: string + format: uuid + venue: + type: string + format: uuid + + ManagementPolicyList: + type: object + properties: + policies: + type: array + items: + $ref: '#/components/schemas/ManagementPolicy' + + # uuids: ent: + Entity: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + parent: + description: If empty, then this is the root entity, otherwise this points to a parent entity + type: string + format: uuid + children: + type: array + items: + type: string + format: uuid + venues: + description: The list of UUID of the venues for this entity + type: array + items: + type: string + format: uuid + contacts: + description: The list of UUID of the contacts for the entity + type: array + items: + type: string + format: uuid + locations: + description: The list of UUID of the locations associated with thit entiry + type: array + items: + type: string + format: uuid + managementPolicy: + type: string + format: uuid + deviceConfiguration: + type: string + format: uuid + devices: + type: array + items: + type: string + format: uuid + managementPolicies: + description: The list of UUID of the venues for this entity + type: array + items: + type: string + format: uuid + variables: + description: The list of UUID of the venues for this entity + type: array + items: + type: string + format: uuid + managementRoles: + description: The list of UUID of the venues for this entity + type: array + items: + type: string + format: uuid + maps: + description: The list of UUID of the venues for this entity + type: array + items: + type: string + format: uuid + configurations: + description: The list of UUID of the venues for this entity + type: array + items: + type: string + format: uuid + rrm: + type: string + enum: + - off + - on + - inherit + sourceIP: + $ref: '#/components/schemas/StringList' + + EntityList: + type: object + properties: + entities: + type: array + items: + $ref: '#/components/schemas/Entity' + + DiGraphEntry: + type: object + properties: + parent: + type: string + format: uuid + child: + type: string + format: uuid + + DiGraph: + type: array + items: + $ref: '#/components/schemas/DiGraphEntry' + + # uuids: ven: + Venue: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + entity: + type: string + format: uuid + parent: + type: string + format: uuid + children: + type: array + items: + type: string + format: uuid + managementPolicy: + type: string + format: uuid + devices: + type: array + items: + type: string + format: uuid + topology: + $ref: '#/components/schemas/DiGraph' + design: + type: string + deviceConfiguration: + type: string + format: uuid + contacts: + type: array + items: + type: string + format: uuid + location: + type: string + format: uuid + rrm: + type: string + enum: + - off + - on + - inherit + sourceIP: + $ref: '#/components/schemas/StringList' + managementPolicies: + description: The list of UUID of the venues for this entity + type: array + items: + type: string + format: uuid + managementRoles: + description: The list of UUID of the venues for this entity + type: array + items: + type: string + format: uuid + variables: + description: The list of UUID of the venues for this entity + type: array + items: + type: string + format: uuid + maps: + description: The list of UUID of the venues for this entity + type: array + items: + type: string + format: uuid + configurations: + description: The list of UUID of the venues for this entity + type: array + items: + type: string + format: uuid + + VenueList: + type: object + properties: + venues: + type: array + items: + $ref: '#/components/schemas/Venue' + + UserInfoDigest: + type: object + properties: + id: + type: string + format: uuid + loginId: + type: string + type: + type: string + + # uuids: mgg: + ManagementRole: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + managementPolicy: + type: string + format: uuid + users: + type: array + items: + type: string + format: uuid + inUse: + type: array + items: + type: string + format: uuid + example: each uuid is preceded by ent, or ven to say that the elemenet is entity or venue + entity: + type: string + format: uuid + venue: + type: string + format: uuid + + ManagementRoleList: + type: object + properties: + roles: + type: array + items: + $ref: '#/components/schemas/ManagementRole' + + # uuids: loc: + Location: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + type: + type: string + enum: + - SERVICE + - EQUIPMENT + - AUTO + - MANUAL + - SPECIAL + - UNKNOWN + - CORPORATE + buildingName: + type: string + addressLines: + type: array + items: + type: string + city: + type: string + state: + type: string + postal: + type: string + country: + type: string + phones: + type: array + items: + type: string + mobiles: + type: array + items: + type: string + inUse: + type: array + items: + type: string + format: uuid + example: each uuid is preceded by ent, or ven to say that the elemenet is entity or venue + entity: + type: string + format: uuid + managementPolicy: + type: string + format: uuid + geoCode: + type: string + + LocationList: + type: object + properties: + locations: + type: array + items: + $ref: '#/components/schemas/Location' + + # uuids: con: + Contact: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + type: + type: string + enum: + - SUBSCRIBER + - USER + - INSTALLER + - CSR + - MANAGER + - BUSINESSOWNER + - TECHNICIAN + - CORPORATE + title: + type: string + salutation: + type: string + firstname: + type: string + lastname: + type: string + initials: + type: string + visual: + type: string + phones: + type: array + items: + type: string + mobiles: + type: array + items: + type: string + primaryEmail: + type: string + secondaryEmail: + type: string + accessPIN: + type: string + inUse: + type: array + items: + type: string + format: uuid + entity: + type: string + format: uuid + managementPolicy: + type: string + format: uuid + + ContactList: + type: object + properties: + contacts: + type: array + items: + $ref: '#/components/schemas/Contact' + + DeviceConfigurationElement: + type: object + properties: + name: + type: string + description: + type: string + weight: + type: integer + configuration: + type: string + + DeviceConfiguration: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + managementPolicy: + type: string + format: uuid + deviceTypes: + type: array + items: + type: string + configuration: + type: array + items: + $ref: '#/components/schemas/DeviceConfigurationElement' + variables: + type: array + items: + type: string + format: uuid + inUse: + type: array + items: + type: string + format: uuid + subscriberOnly: + type: boolean + default: false + rrm: + type: string + enum: + - off + - on + - inherit + firmwareUpgrade: + type: string + example: auto or a time string of the format DOW-HH:MM + firmwareRCOnly: + type: boolean + venue: + type: string + format: uuid + entity: + type: string + format: uuid + subscriber: + type: string + format: uuid + + DeviceConfigurationList: + type: object + properties: + configurations: + type: array + items: + $ref: '#/components/schemas/DeviceConfiguration' + + InventoryTag: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + serialNumber: + type: string + deviceType: + type: string + venue: + type: string + format: uuid + entity: + type: string + format: uuid + subscriber: + type: string + format: uuid + qrCode: + type: string + geoCode: + type: string + location: + type: string + format: uuid + contact: + type: string + format: uuid + deviceConfiguration: + type: string + format: uuid + rrm: + type: string + enum: + - off + - on + - inherit + managementPolicy: + type: string + format: uuid + state: + type: string + devClass: + type: string + enum: + - any + - venue + - entity + - subscriber + locale: + type: string + minLength: 2 + maxLength: 2 + + InventoryTagList: + type: object + properties: + taglist: + type: array + items: + $ref: '#/components/schemas/InventoryTag' + + SerialNumberList: + type: object + properties: + serialNumbers: + type: array + items: + type: string + + CountAnswer: + type: object + properties: + count: + type: integer + format: int64 + + ExpandedUseEntry: + type: object + properties: + uuid: + type: string + format: uuid + name: + type: string + description: + type: string + + ExpandedUseEntryMap: + type: object + properties: + type: + type: string + entries: + type: array + items: + $ref: '#/components/schemas/ExpandedUseEntry' + + ExpandedUseEntryMapList: + type: object + properties: + entries: + type: array + items: + $ref: '#/components/schemas/ExpandedUseEntryMap' + + FirmwareOptions: + type: object + properties: + firmwareUpgrade: + type: string + example: auto or a time string of the format DOW-HH:MM + firmwareRCOnly: + type: boolean + from: + type: string + + InventoryConfigApplyResult: + type: object + properties: + appliedConfiguration: + type: string + errors: + type: array + items: + type: string + warnings: + type: array + items: + type: string + errorCode: + type: integer + + uuidList: + type: object + properties: + list: + type: array + items: + type: string + format: uuid + + ObjectACL: + type: object + properties: + users: + $ref: '#/components/schemas/uuidList' + roles: + $ref: '#/components/schemas/uuidList' + access: + type: string + enum: + - none + - read + - modify + - delete + - create + + ObjectACLList: + type: object + properties: + list: + type: array + items: + $ref: '#/components/schemas/ObjectACL' + + Map: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + entity: + type: string + format: uuid + venue: + type: string + format: uuid + managementPolicy: + type: string + format: uuid + data: + type: string + visibility: + type: string + enum: + - private + - public + - select + creator: + type: string + format: uuid + access: + $ref: '#/components/schemas/ObjectACLList' + + MapList: + type: object + properties: + list: + type: array + items: + $ref: '#/components/schemas/Map' + + + SignupEntry: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + email: + type: string + format: email + userId: + type: string + format: uuid + macAddress: + type: string + serialNumber: + type: string + created: + type: integer + format: int64 + completed: + type: integer + format: int64 + error: + type: integer + format: int64 + status: + type: string + statusCode: + type: integer + format: int64 + + Variable: + type: object + properties: + type: + type: string + enum: + - integer + - string + - float + - boolean + - variable + - json + weight: + type: integer + format: int64 + prefix: + type: string + value: + type: string + + VariableList: + type: object + properties: + variables: + type: array + items: + $ref: '#/components/schemas/Variable' + + VariableBlock: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + variables: + type: array + items: + $ref: '#/components/schemas/Variable' + entity: + type: string + format: uuid + venue: + type: string + format: uuid + subscriber: + type: string + format: uuid + inventory: + type: string + format: uuid + inUse: + type: array + items: + type: string + format: uuid + + VariableBlockList: + type: object + properties: + variableBlocks: + type: array + items: + $ref: '#/components/schemas/VariableBlock' + + ######################################################################################### + ## + ## These are endpoints that all services in the OPenWiFI stack must provide + ## + ######################################################################################### + AnyPayload: + type: object + properties: + Document: + type: string + + StringList: + type: object + properties: + list: + type: array + items: + type: string + + TagValuePair: + type: object + properties: + tag: + type: string + value: + type: string + + TagValuePairList: + type: object + properties: + tagList: + type: array + items: + $ref: '#/components/schemas/TagValuePair' + + TagIntPair: + type: object + properties: + tag: + type: string + value: + type: integer + format: int64 + + TagIntPairList: + type: object + properties: + tagList: + type: array + items: + $ref: '#/components/schemas/TagIntPair' + + SystemCommandDetails: + type: object + properties: + command: + type: string + enum: + - setloglevels + - getloglevels + - getSubSystemNames + - getLogLevelNames + - stats + parameters: + oneOf: + - $ref: '#/components/schemas/StringList' + - $ref: '#/components/schemas/TagValuePairList' + + SystemCommandResults: + type: object + oneOf: + - $ref: '#/components/schemas/StringList' + - $ref: '#/components/schemas/TagValuePairList' + + NoteInfo: + type: object + properties: + created: + type: integer + format: int64 + createdBy: + type: string + note: + type: string + + SystemInfoResults: + type: object + properties: + version: + type: string + uptime: + type: integer + format: integer64 + start: + type: integer + format: integer64 + os: + type: string + processors: + type: integer + hostname: + type: string + certificates: + type: array + items: + type: object + properties: + filename: + type: string + expires: + type: integer + format: int64 + + Dashboard: + type: object + properties: + snapshot: + type: integer + format: int64 + tenants: + $ref: '#/components/schemas/TagIntPairList' + + SystemCommandSetLogLevel: + type: object + properties: + command: + type: string + enum: + - setloglevel + subsystems: + type: array + items: + $ref: '#/components/schemas/TagValuePair' + + SystemCommandReload: + type: object + properties: + command: + type: string + enum: + - reload + subsystems: + type: array + items: + type: string + example: these are the SubSystems names retrieve with the GetSubSystemsNamesResult. + + SystemCommandGetLogLevels: + type: object + properties: + command: + type: string + enum: + - getloglevels + + SystemGetLogLevelsResult: + type: object + properties: + taglist: + type: array + items: + $ref: '#/components/schemas/TagValuePair' + + SystemCommandGetLogLevelNames: + type: object + properties: + command: + type: string + enum: + - getloglevelnames + + SystemCommandGetSubsystemNames: + type: object + properties: + command: + type: string + enum: + - getsubsystemnames + + SystemCommandGetLogLevelNamesResult: + type: object + properties: + list: + type: array + items: + type: string + + SystemGetSubSystemNamesResult: + type: object + properties: + taglist: + type: array + items: + $ref: '#/components/schemas/TagValuePair' + +paths: + /entity: + get: + tags: + - Entities + operationId: getEntities + summary: Retrieve a list of entities. + parameters: + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Filter the results + name: filter + schema: + type: string + required: false + - in: query + description: Supply a list of devices comma separated + name: select + schema: + type: string + example: serial1,serial2,serial3 + required: false + - in: query + description: return the number of devices + name: countOnly + schema: + type: boolean + required: false + + responses: + 200: + description: Return a list of elements + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/EntityList' + - $ref: '#/components/schemas/CountAnswer' + + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /entity/{uuid}: + get: + tags: + - Entities + operationId: getEntity + summary: Retrieve a specific entity. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + example: When looking for the root entity, the uuid 0000-0000-0000 must be entered. + required: true + + responses: + 200: + $ref: '#/components/schemas/Entity' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + post: + tags: + - Entities + operationId: createEntity + summary: Create a specific entity. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + example: When creating the root entity, the uuid 0000-0000-0000 must be entered. When creating a non-root entity, uuid must be 1 + required: true + requestBody: + description: Information used to create the new entity + content: + application/json: + schema: + $ref: '#/components/schemas/Entity' + + responses: + 200: + $ref: '#/components/schemas/Entity' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + put: + tags: + - Entities + operationId: modifyEntity + summary: Modify a specific entity. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + example: When modifying the root entity, the uuid 0000-0000-0000 must be entered. + required: true + requestBody: + description: Information used to modify the new entity + content: + application/json: + schema: + $ref: '#/components/schemas/Entity' + + responses: + 200: + $ref: '#/components/schemas/Entity' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + delete: + tags: + - Entities + operationId: deleteEntity + summary: Delete a specific entity. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + example: The root entity cannot be deleted. + required: true + + responses: + 204: + $ref: '#/components/responses/Success' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /contact: + get: + tags: + - Contacts + operationId: getContacts + summary: Retrieve a list of contacts. + parameters: + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Filter the results + name: filter + schema: + type: string + required: false + - in: query + description: Supply a list of contacts comma separated + name: select + schema: + type: string + example: uuid1,uuid2,uuid3 + required: false + - in: query + description: return the number of contacts + name: countOnly + schema: + type: boolean + required: false + - in: query + description: return only the UUIDs of contacts + name: uuidOnly + schema: + type: boolean + required: false + - in: query + name: venue + schema: + type: string + format: uuid + required: false + - in: query + name: entity + schema: + type: string + format: uuid + required: false + + responses: + 200: + description: Return a list of contacts + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/ContactList' + - $ref: '#/components/schemas/CountAnswer' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /contact/{uuid}: + get: + tags: + - Contacts + operationId: getContact + summary: Retrieve a specific contact. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + - in: query + name: expandInUse + schema: + type: boolean + required: false + + responses: + 200: + description: Success + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/Contact' + - $ref: '#/components/schemas/ExpandedUseEntryMapList' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + post: + tags: + - Contacts + operationId: createContact + summary: Create a specific entity. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + requestBody: + description: Information used to create the new entity + content: + application/json: + schema: + $ref: '#/components/schemas/Contact' + + responses: + 200: + $ref: '#/components/schemas/Contact' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + put: + tags: + - Contacts + operationId: modifyContact + summary: Modify a specific contact. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + requestBody: + description: Information used to modify the new entity + content: + application/json: + schema: + $ref: '#/components/schemas/Contact' + + responses: + 200: + $ref: '#/components/schemas/Contact' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + delete: + tags: + - Contacts + operationId: deleteContact + summary: Delete a specific contact. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + - in: query + name: force + schema: + type: boolean + required: true + + responses: + 204: + $ref: '#/components/responses/Success' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /location: + get: + tags: + - Locations + operationId: getLocations + summary: Retrieve a list of locations. + parameters: + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Filter the results + name: filter + schema: + type: string + required: false + - in: query + description: Supply a list of Locations comma separated + name: select + schema: + type: string + example: uuid1,uuid2,uuid3 + required: false + - in: query + description: return the number of Locations + name: countOnly + schema: + type: boolean + required: false + - in: query + description: return only the UUIDs of Locations + name: uuidOnly + schema: + type: boolean + required: false + + responses: + 200: + description: Return a list of Locations + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/LocationList' + - $ref: '#/components/schemas/CountAnswer' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /location/{uuid}: + get: + tags: + - Locations + operationId: getLocation + summary: Retrieve a specific location. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + - in: query + name: expandInUse + schema: + type: boolean + required: false + + responses: + 200: + description: Success + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/Location' + - $ref: '#/components/schemas/ExpandedUseEntryMapList' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + post: + tags: + - Locations + operationId: createLocation + summary: Create a specific location. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + requestBody: + description: Information used to create the new location + content: + application/json: + schema: + $ref: '#/components/schemas/Location' + + responses: + 200: + $ref: '#/components/schemas/Location' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + put: + tags: + - Locations + operationId: modifyLocation + summary: Modify a specific location. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + requestBody: + description: Information used to modify the new location + content: + application/json: + schema: + $ref: '#/components/schemas/Location' + + responses: + 200: + $ref: '#/components/schemas/Location' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + delete: + tags: + - Locations + operationId: deleteLocation + summary: Delete a specific location. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + - in: query + name: force + schema: + type: boolean + required: true + + responses: + 204: + $ref: '#/components/responses/Success' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /inventory: + get: + tags: + - Inventory + operationId: getInventoryTags + summary: Retrieve a list of inventory. + parameters: + - in: query + name: entity + schema: + type: string + format: uuid + required: false + - in: query + name: venue + schema: + type: string + format: uuid + required: false + - in: query + name: unassigned + schema: + type: boolean + required: false + - in: query + name: deviceType + schema: + type: string + required: false + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Filter the results + name: filter + schema: + type: string + required: false + - in: query + description: Supply a list of devices comma separated + name: select + schema: + type: string + example: serial1,serial2,serial3 + required: false + - in: query + description: only serial numbers of full device details + name: serialOnly + schema: + type: boolean + required: false + - in: query + description: return the number of devices + name: countOnly + schema: + type: boolean + required: false + - in: query + description: return extended information + name: withExtendedInfo + schema: + type: boolean + required: false + - in: query + description: return extended information + name: orderBy + schema: + type: string + example: serialNumber:a,created:d + required: false + - in: query + description: return the list of devices under RRM + name: rrmOnly + schema: + type: boolean + default: false + required: false + - in: query + description: return the list of devices under RRM + name: subscriber + schema: + type: string + format: uuid + required: false + responses: + 200: + description: Return a list of elements + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/SerialNumberList' + - $ref: '#/components/schemas/InventoryTagList' + - $ref: '#/components/schemas/CountAnswer' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /inventory/{serialNumber}: + get: + tags: + - Inventory + operationId: getInventory + summary: Retrieve a specific inventory tag. + parameters: + - in: path + name: serialNumber + schema: + type: string + format: uuid + required: true + - in: query + name: config + schema: + type: boolean + required: false + - in: query + name: explain + schema: + type: boolean + required: false + - in: query + name: firmwareOptions + schema: + type: boolean + required: false + - in: query + name: applyConfiguration + schema: + type: boolean + required: false + responses: + 200: + description: Succesful retrieve configuratiopn or part of the configuration + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/InventoryTag' + - $ref: '#/components/schemas/FirmwareOptions' + - $ref: '#/components/schemas/InventoryConfigApplyResult' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + post: + tags: + - Inventory + operationId: createInventory + summary: Create a specific Inventory. + parameters: + - in: path + name: serialNumber + schema: + type: string + format: uuid + required: true + requestBody: + description: Information used to create the new entity + content: + application/json: + schema: + $ref: '#/components/schemas/InventoryTag' + responses: + 200: + $ref: '#/components/schemas/InventoryTag' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + put: + tags: + - Inventory + operationId: modifyInventory + summary: Modify a specific inventory. + parameters: + - in: path + name: serialNumber + schema: + type: string + format: uuid + required: true + - in: query + name: unassign + schema: + type: boolean + required: false + - in: path + name: removeSubscriber + schema: + type: string + format: uuid + required: true + + requestBody: + description: Information used to modify the new entity + content: + application/json: + schema: + $ref: '#/components/schemas/InventoryTag' + + responses: + 200: + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/InventoryTag' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + delete: + tags: + - Inventory + operationId: deleteInventory + summary: Delete a specific inventory. + parameters: + - in: path + name: serialNumber + schema: + type: string + format: uuid + required: true + + responses: + 204: + $ref: '#/components/responses/Success' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /venue: + get: + tags: + - Venues + operationId: getVenues + summary: Retrieve a list of venues. + parameters: + - in: query + name: entity + schema: + type: string + format: uuid + required: false + - in: query + name: venue + schema: + type: string + format: uuid + required: false + - in: query + name: unassigned + schema: + type: boolean + required: false + - in: query + name: deviceType + schema: + type: string + required: false + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Filter the results + name: filter + schema: + type: string + required: false + - in: query + description: Supply a list of Venues comma separated + name: select + schema: + type: string + example: serial1,serial2,serial3 + required: false + - in: query + description: only serial numbers of full device details + name: serialOnly + schema: + type: boolean + required: false + - in: query + description: return the number of devices + name: countOnly + schema: + type: boolean + required: false + + responses: + 200: + description: Return a list of venues. + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/VenueList' + - $ref: '#/components/schemas/CountAnswer' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /venue/{uuid}: + get: + tags: + - Venues + operationId: getVenue + summary: Retrieve a specific venue. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + + responses: + 200: + $ref: '#/components/schemas/Venue' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + post: + tags: + - Venues + operationId: createVenue + summary: Create a specific venue. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + - in: query + name: createObjects + schema: + type: object + properties: + objects: + type: array + items: + oneOf: + - type: object + properties: + location: + $ref: '#/components/schemas/Location' + - type: object + properties: + contact: + $ref: '#/components/schemas/Contact' + required: false + requestBody: + description: Information used to create the new venue + content: + application/json: + schema: + $ref: '#/components/schemas/Venue' + + responses: + 200: + $ref: '#/components/schemas/Venue' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + put: + tags: + - Venues + operationId: modifyVenue + summary: Modify a specific venue. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + requestBody: + description: Information used to modify the new venue + content: + application/json: + schema: + $ref: '#/components/schemas/Venue' + + responses: + 200: + $ref: '#/components/schemas/Venue' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + delete: + tags: + - Venues + operationId: deleteVenue + summary: Delete a specific venue. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + example: The root entity cannot be deleted. + required: true + + responses: + 204: + $ref: '#/components/responses/Success' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /map: + get: + tags: + - Maps + operationId: getMapList + summary: Retrieve the list of maps + parameters: + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Filter the results + name: filter + schema: + type: string + required: false + - in: query + description: Return only maps I created + name: myMaps + schema: + type: boolean + required: false + - in: query + description: Return only maps shared with Me + name: sharedWithMe + schema: + type: boolean + required: false + + responses: + 200: + description: Return a list of Venues + content: + application/json: + schema: + $ref: '#/components/schemas/MapList' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /map/{uuid}: + get: + tags: + - Maps + operationId: getMap + summary: Retrieve a specific map. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + + responses: + 200: + description: Successfull retrieval of a map + content: + application/json: + schema: + $ref: '#/components/schemas/Map' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + post: + tags: + - Maps + operationId: createMap + summary: Create a specific map. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + requestBody: + description: Information used to create the new policy + content: + application/json: + schema: + $ref: '#/components/schemas/Map' + + responses: + 200: + $ref: '#/components/schemas/Map' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + put: + tags: + - Maps + operationId: modifyMap + summary: Modify a specific map. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + requestBody: + description: Information used to modify a map + content: + application/json: + schema: + $ref: '#/components/schemas/Map' + + responses: + 200: + $ref: '#/components/schemas/ManagementPolicy' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + delete: + tags: + - Maps + operationId: deleteMap + summary: Delete a specific map. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + responses: + 204: + $ref: '#/components/responses/Success' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /managementPolicy: + get: + tags: + - Management Policies + operationId: getPolicies + summary: Get a list of policies. + parameters: + - in: query + name: entity + schema: + type: string + format: uuid + required: false + - in: query + name: venue + schema: + type: string + format: uuid + required: false + - in: query + name: unassigned + schema: + type: boolean + required: false + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Filter the results + name: filter + schema: + type: string + required: false + - in: query + description: Supply a list of policies comma separated + name: select + schema: + type: string + example: serial1,serial2,serial3 + required: false + - in: query + description: return the number of policies + name: countOnly + schema: + type: boolean + required: false + + responses: + 200: + description: Return a list of Venues + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/ManagementPolicyList' + - $ref: '#/components/schemas/CountAnswer' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /managementPolicy/{uuid}: + get: + tags: + - Management Policies + operationId: getManagementPolicy + summary: Retrieve a specific policy. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + - in: query + name: expandInUse + schema: + type: boolean + required: false + + responses: + 200: + description: Succesful retrieve a management policy + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/ManagementPolicy' + - $ref: '#/components/schemas/ExpandedUseEntryMapList' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + post: + tags: + - Management Policies + operationId: createManagementPolicy + summary: Create a specific policy. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + requestBody: + description: Information used to create the new policy + content: + application/json: + schema: + $ref: '#/components/schemas/ManagementPolicy' + + responses: + 200: + $ref: '#/components/schemas/ManagementPolicy' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + put: + tags: + - Management Policies + operationId: modifyManagementPolicy + summary: Modify a specific policy. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + requestBody: + description: Information used to modify the new policy. + content: + application/json: + schema: + $ref: '#/components/schemas/ManagementPolicy' + + responses: + 200: + $ref: '#/components/schemas/ManagementPolicy' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + delete: + tags: + - Management Policies + operationId: deleteManagementPolicy + summary: Delete a specific policy. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + example: The root entity cannot be deleted. + required: true + + responses: + 204: + $ref: '#/components/responses/Success' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /managementRole: + get: + tags: + - Management Roles + operationId: getManagementRoles + summary: Retrieve a list of management roles. + parameters: + - in: query + name: entity + schema: + type: string + format: uuid + required: false + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Filter the results + name: filter + schema: + type: string + required: false + - in: query + description: Supply a list of devices comma separated + name: select + schema: + type: string + example: serial1,serial2,serial3 + required: false + - in: query + description: return the number of roles + name: countOnly + schema: + type: boolean + required: false + + responses: + 200: + description: Return a list of elements + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/ManagementRoleList' + - $ref: '#/components/schemas/CountAnswer' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /managementRole/{uuid}: + get: + tags: + - Management Roles + operationId: getManagementRole + summary: Retrieve a specific management role. + parameters: + - in: path + name: uuid + required: true + schema: + type: string + format: uuid + - in: query + name: expandInUse + schema: + type: boolean + required: false + responses: + 200: + description: Success + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/ManagementRole' + - $ref: '#/components/schemas/ExpandedUseEntryMapList' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + post: + tags: + - Management Roles + operationId: createManagementRole + summary: Create a specific management role. + parameters: + - in: path + name: uuid + required: true + schema: + type: string + format: uuid + example: during creation, must be set to 1. The real uuid will be returned in the created object + requestBody: + description: Information used to create management role + content: + application/json: + schema: + $ref: '#/components/schemas/ManagementRole' + + responses: + 200: + $ref: '#/components/schemas/ManagementRole' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + put: + tags: + - Management Roles + operationId: modifyManagementRole + summary: Modify a specific management role. + parameters: + - in: path + name: uuid + required: true + schema: + type: string + format: uuid + requestBody: + description: Information used to modify management role + content: + application/json: + schema: + $ref: '#/components/schemas/ManagementRole' + + responses: + 200: + $ref: '#/components/schemas/ManagementRole' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + delete: + tags: + - Management Roles + operationId: deleteManagementRole + summary: Delete a specific management role. + parameters: + - in: path + name: uuid + required: true + schema: + type: string + format: uuid + responses: + 204: + $ref: '#/components/responses/Success' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /configurations: + get: + tags: + - Configurations + operationId: getConfigurations + summary: Retrieve a list of configurations. + parameters: + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Filter the results + name: filter + schema: + type: string + required: false + - in: query + description: Supply a list of devices comma separated + name: select + schema: + type: string + example: serial1,serial2,serial3 + required: false + - in: query + description: return the number of devices + name: countOnly + schema: + type: boolean + required: false + - in: query + name: venue + schema: + type: string + format: uuid + required: false + - in: query + name: entity + schema: + type: string + format: uuid + required: false + + responses: + 200: + description: Return a list of elements + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/DeviceConfigurationList' + - $ref: '#/components/schemas/CountAnswer' + + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /configurations/{uuid}: + get: + tags: + - Configurations + operationId: geConfiguration + summary: Retrieve a specific configuration. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + example: When looking for the root entity, the uuid 0000-0000-0000 must be entered. + required: true + - in: query + name: expandInUse + schema: + type: boolean + required: false + + responses: + 200: + description: Success + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/DeviceConfiguration' + - $ref: '#/components/schemas/ExpandedUseEntryMapList' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + post: + tags: + - Configurations + operationId: createConfiguration + summary: Create a specific configuration. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + example: When creating the root entity, the uuid 0000-0000-0000 must be entered. When creating a non-root entity, uuid must be 1 + required: true + - in: query + name: validateOnly + schema: + type: boolean + required: false + requestBody: + description: Information used to create the new entity + content: + application/json: + schema: + $ref: '#/components/schemas/DeviceConfiguration' + + responses: + 200: + $ref: '#/components/schemas/DeviceConfiguration' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + put: + tags: + - Configurations + operationId: modifyConfiguration + summary: Modify a specific configuration. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + example: When modifying the root entity, the uuid 0000-0000-0000 must be entered. + required: true + requestBody: + description: Information used to modify the new entity + content: + application/json: + schema: + $ref: '#/components/schemas/DeviceConfiguration' + + responses: + 200: + $ref: '#/components/schemas/DeviceConfiguration' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + delete: + tags: + - Configurations + operationId: deleteConfiguration + summary: Delete a specific configuration. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + example: The root entity cannot be deleted. + required: true + + responses: + 204: + $ref: '#/components/responses/Success' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /iptocountry: + get: + tags: + - Utility + summary: Get the country code for an IP address + operationId: getIpToCountry + parameters: + - in: query + name: iplist + schema: + type: string + example: + 10.2.2.2,10.3.4.3 + required: true + responses: + 200: + description: List of country codes. + content: + application/json: + schema: + type: object + properties: + enabled: + type: boolean + countryCodes: + type: array + items: + type: string + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /signup: + get: + tags: + - Subscriber Registration + summary: This call allows someone to get the status of a signup. + operationId: getSignup + parameters: + - in: query + name: email + schema: + type: string + format: email + required: false + - in: query + name: macAddress + schema: + type: string + required: false + - in: query + name: signupUUID + schema: + type: string + format: uuid + required: false + - in: query + name: dashboard + schema: + type: boolean + default: false + required: false + - in: query + name: deviceID + schema: + type: string + required: false + responses: + 200: + description: Successfull completion + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/SignupEntry' + - $ref: '#/components/schemas/Dashboard' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + delete: + tags: + - Subscriber Registration + summary: This call allows someone to delete a specific signUp or all signups according to serialNumber of email address + operationId: deleteSignup + parameters: + - in: query + name: email + schema: + type: string + format: email + required: false + - in: query + name: macAddress + schema: + type: string + required: false + - in: query + name: signupUUID + schema: + type: string + format: uuid + required: false + - in: query + name: deviceID + schema: + type: string + required: false + responses: + 204: + $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + post: + tags: + - Subscriber Registration + summary: This call allows a new subscriber to register themselves and their devices. + operationId: postSignup + parameters: + - in: query + name: email + schema: + type: string + format: email + required: true + - in: query + name: macAddress + schema: + type: string + required: true + - in: query + name: deviceID + schema: + type: string + required: false + responses: + 200: + $ref: '#/components/schemas/SignupEntry' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + put: + tags: + - Subscriber Registration + summary: modify the signup command in play + operationId: modifySignup + parameters: + - in: query + name: signupUUID + schema: + type: string + format: uuid + required: true + - in: query + name: operation + schema: + type: string + enum: + - cancel + - emailVerified + - deviceVerified + required: true + requestBody: + content: + application/json: + schema: + type: object + properties: + reason: + type: string + time: + type: integer + format: int64 + errorCode: + type: integer + format: int32 + status: + type: string + required: false + + responses: + 200: + $ref: '#/components/schemas/SignupEntry' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /variables: + get: + tags: + - Variable Configuration Blocks + summary: Retrieve lists of control blocks + operationId: getVariableList + parameters: + - in: query + name: venue + schema: + type: string + format: uuid + required: false + - in: query + name: entity + schema: + type: string + format: uuid + required: false + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Filter the results + name: filter + schema: + type: string + required: false + - in: query + description: Supply a list of devices comma separated + name: select + schema: + type: string + example: serial1,serial2,serial3 + required: false + - in: query + description: return the number of devices + name: countOnly + schema: + type: boolean + required: false + responses: + 200: + $ref: '#/components/schemas/VariableBlockList' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + ######################################################################################### + ## + ## These are endpoints that all services in the OpenWiFi stack must provide + ## + ######################################################################################### + /dashboard: + get: + tags: + - Dashboards + summary: Get the last version of the dashboard. + operationId: getDeviceDashboard + responses: + 200: + $ref: '#/components/schemas/Dashboard' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /system: + post: + tags: + - System Commands + summary: Perform some system wide commands. + operationId: systemCommand + requestBody: + description: Command details + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/SystemCommandSetLogLevel' + - $ref: '#/components/schemas/SystemCommandReload' + - $ref: '#/components/schemas/SystemCommandGetLogLevels' + - $ref: '#/components/schemas/SystemCommandGetLogLevelNames' + - $ref: '#/components/schemas/SystemCommandGetSubsystemNames' + responses: + 200: + description: Successful command execution + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/SystemGetLogLevelsResult' + - $ref: '#/components/schemas/SystemCommandGetLogLevelNamesResult' + - $ref: '#/components/schemas/SystemGetSubSystemNamesResult' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + get: + tags: + - System Commands + summary: Retrieve different values from the running service. + operationId: getSystemCommand + parameters: + - in: query + description: Get a value + name: command + schema: + type: string + enum: + - info + required: true + + responses: + 200: + description: Successful command execution + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/SystemInfoResults' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' diff --git a/.gitbook/assets/owprov.yaml b/.gitbook/assets/owprov.yaml index 7f55715..f1ba029 100644 --- a/.gitbook/assets/owprov.yaml +++ b/.gitbook/assets/owprov.yaml @@ -181,6 +181,28 @@ components: items: $ref: '#/components/schemas/ManagementPolicy' + DeviceRules: + type: object + properties: + rcOnly: + type: string + enum: + - yes + - no + - inherit + rrm: + type: string + enum: + - yes + - no + - inherit + firmwareUpgrade: + type: string + enum: + - yes + - no + - inherit + # uuids: ent: Entity: type: object @@ -255,14 +277,19 @@ components: items: type: string format: uuid - rrm: - type: string - enum: - - off - - on - - inherit + deviceRules: + $ref: '#/components/schemas/DeviceRules' sourceIP: $ref: '#/components/schemas/StringList' + defaultEntity: + type: boolean + default: false + type: + type: string + enum: + - normal + - subscriber + default: normal EntityList: type: object @@ -327,12 +354,8 @@ components: location: type: string format: uuid - rrm: - type: string - enum: - - off - - on - - inherit + deviceRules: + $ref: '#/components/schemas/DeviceRules' sourceIP: $ref: '#/components/schemas/StringList' managementPolicies: @@ -365,6 +388,12 @@ components: items: type: string format: uuid + boards: + description: The list of OWAnalytics Boards created for this venue + type: array + items: + type: string + format: uuid VenueList: type: object @@ -481,6 +510,98 @@ components: items: $ref: '#/components/schemas/Location' + OperatorLocation: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + type: + type: string + enum: + - SERVICE + - EQUIPMENT + - AUTO + - MANUAL + - SPECIAL + - UNKNOWN + - CORPORATE + buildingName: + type: string + addressLines: + type: array + items: + type: string + city: + type: string + state: + type: string + postal: + type: string + country: + type: string + phones: + type: array + items: + type: string + mobiles: + type: array + items: + type: string + operatorId: + type: string + format: uuid + subscriberDeviceId: + type: string + format: uuid + geoCode: + type: string + + OperatorLocationList: + type: object + properties: + locations: + type: array + items: + $ref: '#/components/schemas/OperatorLocation' + + SubLocation: + type: object + properties: + type: + type: string + enum: + - SERVICE + - EQUIPMENT + - AUTO + - MANUAL + - SPECIAL + - UNKNOWN + - CORPORATE + buildingName: + type: string + addressLines: + type: array + items: + type: string + city: + type: string + state: + type: string + postal: + type: string + country: + type: string + phones: + type: array + items: + type: string + mobiles: + type: array + items: + type: string + geoCode: + type: string + # uuids: con: Contact: type: object @@ -544,6 +665,104 @@ components: items: $ref: '#/components/schemas/Contact' + OperatorContact: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + type: + type: string + enum: + - SUBSCRIBER + - USER + - INSTALLER + - CSR + - MANAGER + - BUSINESSOWNER + - TECHNICIAN + - CORPORATE + title: + type: string + salutation: + type: string + firstname: + type: string + lastname: + type: string + initials: + type: string + visual: + type: string + phones: + type: array + items: + type: string + mobiles: + type: array + items: + type: string + primaryEmail: + type: string + secondaryEmail: + type: string + accessPIN: + type: string + operatorId: + type: string + format: uuid + subscriberDeviceId: + type: string + format: uuid + + OperatorContactList: + type: object + properties: + contacts: + type: array + items: + $ref: '#/components/schemas/OperatorContact' + + SubContact: + type: object + properties: + type: + type: string + enum: + - SUBSCRIBER + - USER + - INSTALLER + - CSR + - MANAGER + - BUSINESSOWNER + - TECHNICIAN + - CORPORATE + title: + type: string + salutation: + type: string + firstname: + type: string + lastname: + type: string + initials: + type: string + visual: + type: string + phones: + type: array + items: + type: string + mobiles: + type: array + items: + type: string + primaryEmail: + type: string + secondaryEmail: + type: string + accessPIN: + type: string + DeviceConfigurationElement: type: object properties: @@ -585,17 +804,8 @@ components: subscriberOnly: type: boolean default: false - rrm: - type: string - enum: - - off - - on - - inherit - firmwareUpgrade: - type: string - example: auto or a time string of the format DOW-HH:MM - firmwareRCOnly: - type: boolean + deviceRules: + $ref: '#/components/schemas/DeviceRules' venue: type: string format: uuid @@ -645,12 +855,8 @@ components: deviceConfiguration: type: string format: uuid - rrm: - type: string - enum: - - off - - on - - inherit + deviceRules: + $ref: '#/components/schemas/DeviceRules' managementPolicy: type: string format: uuid @@ -668,6 +874,21 @@ components: minLength: 2 maxLength: 2 + VenueDeviceList: + type: object + properties: + id: + type: string + format: uuid + name: + type: string + description: + type: string + devices: + type: array + items: + type: string + InventoryTagList: type: object properties: @@ -828,6 +1049,9 @@ components: userId: type: string format: uuid + operatorId: + type: string + format: uuid macAddress: type: string serialNumber: @@ -846,6 +1070,10 @@ components: statusCode: type: integer format: int64 + registrationId: + type: string + minLength: 4 + maxLength: 16 Variable: type: object @@ -910,6 +1138,146 @@ components: items: $ref: '#/components/schemas/VariableBlock' + ServiceClass: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + operatorId: + type: string + format: uuid + cost: + type: number + currency: + type: string + minLength: 3 + maxLength: 3 + managementPolicy: + type: string + format: uuid + period: + type: string + enum: + - hourly + - daily + - monthly + - yearly + - quarterly + - lifetime + - custom1 + - custom2 + - custom3 + - custom4 + default: monthly + billingCode: + type: string + variables: + type: array + items: + $ref: '#/components/schemas/Variable' + defaultService: + type: boolean + default: false + + ServiceClassList: + type: object + properties: + serviceClasses: + type: array + items: + $ref: '#/components/schemas/ServiceClass' + + Operator: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + variables: + type: array + items: + $ref: '#/components/schemas/Variable' + defaultOperator: + type: boolean + default: false + deviceRules: + $ref: '#/components/schemas/DeviceRules' + managementPolicy: + type: string + format: uuid + managementRoles: + $ref: '#/components/schemas/ManagementRoleList' + sourceIP: + $ref: '#/components/schemas/StringList' + registrationId: + type: string + minLength: 4 + maxLength: 16 + + OperatorList: + type: object + properties: + operators: + type: array + items: + $ref: '#/components/schemas/Operator' + + SubscriberDevice: + type: object + properties: + allOf: + $ref: '#/components/schemas/ObjectInfo' + serialNumber: + type: string + realMacAddress: + type: string + operatorId: + type: string + format: uuid + deviceType: + type: string + subscriberId: + type: string + format: uuid + qrCode: + type: string + geoCode: + type: string + location: + $ref: '#/components/schemas/SubLocation' + contact: + $ref: '#/components/schemas/SubContact' + deviceRules: + $ref: '#/components/schemas/DeviceRules' + state: + type: string + locale: + type: string + minLength: 2 + maxLength: 2 + managementPolicy: + type: string + format: uuid + suspended: + type: boolean + default: false + configuration: + type: array + items: + $ref: '#/components/schemas/DeviceConfigurationElement' + serviceClass: + type: string + format: uuid + billingCode: + type: string + + SubscriberDeviceList: + type: object + properties: + subscriberDevices: + type: array + items: + $ref: '#/components/schemas/SubscriberDevice' + ######################################################################################### ## ## These are endpoints that all services in the OPenWiFI stack must provide @@ -1154,7 +1522,8 @@ paths: oneOf: - $ref: '#/components/schemas/EntityList' - $ref: '#/components/schemas/CountAnswer' - + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -1174,15 +1543,15 @@ paths: format: uuid example: When looking for the root entity, the uuid 0000-0000-0000 must be entered. required: true - responses: 200: $ref: '#/components/schemas/Entity' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - post: tags: - Entities @@ -1202,15 +1571,15 @@ paths: application/json: schema: $ref: '#/components/schemas/Entity' - responses: 200: $ref: '#/components/schemas/Entity' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - put: tags: - Entities @@ -1230,15 +1599,15 @@ paths: application/json: schema: $ref: '#/components/schemas/Entity' - responses: 200: $ref: '#/components/schemas/Entity' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - delete: tags: - Entities @@ -1252,10 +1621,11 @@ paths: format: uuid example: The root entity cannot be deleted. required: true - responses: 204: $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -1317,7 +1687,6 @@ paths: type: string format: uuid required: false - responses: 200: description: Return a list of contacts @@ -1327,6 +1696,8 @@ paths: oneOf: - $ref: '#/components/schemas/ContactList' - $ref: '#/components/schemas/CountAnswer' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -1360,11 +1731,12 @@ paths: oneOf: - $ref: '#/components/schemas/Contact' - $ref: '#/components/schemas/ExpandedUseEntryMapList' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - post: tags: - Contacts @@ -1383,15 +1755,15 @@ paths: application/json: schema: $ref: '#/components/schemas/Contact' - responses: 200: $ref: '#/components/schemas/Contact' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - put: tags: - Contacts @@ -1410,15 +1782,15 @@ paths: application/json: schema: $ref: '#/components/schemas/Contact' - responses: 200: $ref: '#/components/schemas/Contact' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - delete: tags: - Contacts @@ -1436,10 +1808,11 @@ paths: schema: type: boolean required: true - responses: 204: $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -1489,7 +1862,6 @@ paths: schema: type: boolean required: false - responses: 200: description: Return a list of Locations @@ -1499,6 +1871,8 @@ paths: oneOf: - $ref: '#/components/schemas/LocationList' - $ref: '#/components/schemas/CountAnswer' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -1522,7 +1896,6 @@ paths: schema: type: boolean required: false - responses: 200: description: Success @@ -1532,11 +1905,12 @@ paths: oneOf: - $ref: '#/components/schemas/Location' - $ref: '#/components/schemas/ExpandedUseEntryMapList' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - post: tags: - Locations @@ -1555,15 +1929,15 @@ paths: application/json: schema: $ref: '#/components/schemas/Location' - responses: 200: $ref: '#/components/schemas/Location' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - put: tags: - Locations @@ -1582,15 +1956,15 @@ paths: application/json: schema: $ref: '#/components/schemas/Location' - responses: 200: $ref: '#/components/schemas/Location' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - delete: tags: - Locations @@ -1608,10 +1982,11 @@ paths: schema: type: boolean required: true - responses: 204: $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -1696,6 +2071,13 @@ paths: type: string example: serialNumber:a,created:d required: false + - in: query + description: return extended information + name: orderSpec + schema: + type: boolean + default: false + required: false - in: query description: return the list of devices under RRM name: rrmOnly @@ -1720,6 +2102,7 @@ paths: - $ref: '#/components/schemas/SerialNumberList' - $ref: '#/components/schemas/InventoryTagList' - $ref: '#/components/schemas/CountAnswer' + - $ref: '#/components/schemas/StringList' 400: $ref: '#/components/responses/BadRequest' 403: @@ -1760,6 +2143,12 @@ paths: schema: type: boolean required: false + - in: query + name: subscriberEntity + schema: + type: string + format: uuid + required: false responses: 200: description: Succesful retrieve configuratiopn or part of the configuration @@ -1797,11 +2186,12 @@ paths: responses: 200: $ref: '#/components/schemas/InventoryTag' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - put: tags: - Inventory @@ -1819,7 +2209,7 @@ paths: schema: type: boolean required: false - - in: path + - in: query name: removeSubscriber schema: type: string @@ -1840,11 +2230,12 @@ paths: application/json: schema: $ref: '#/components/schemas/InventoryTag' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - delete: tags: - Inventory @@ -1861,6 +2252,8 @@ paths: responses: 204: $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -1932,7 +2325,20 @@ paths: schema: type: boolean required: false - + - in: query + description: return the devices under a venue + name: getDevices + schema: + type: boolean + default: false + required: false + - in: query + description: return the devices under a venue and its children. Must select getDevices=true as well. + name: getChildren + schema: + type: boolean + default: false + required: false responses: 200: description: Return a list of venues. @@ -1942,6 +2348,9 @@ paths: oneOf: - $ref: '#/components/schemas/VenueList' - $ref: '#/components/schemas/CountAnswer' + - $ref: '#/components/schemas/VenueDeviceList' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -1968,7 +2377,6 @@ paths: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - post: tags: - Venues @@ -2013,7 +2421,6 @@ paths: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - put: tags: - Venues @@ -2026,6 +2433,30 @@ paths: type: string format: uuid required: true + - in: query + name: updateAllDevices + schema: + type: boolean + default: false + required: false + - in: query + name: rebootAllDevices + schema: + type: boolean + default: false + required: false + - in: query + name: testUpdateOnly + schema: + type: boolean + default: false + required: false + - in: query + name: upgradeAllDevices + schema: + type: boolean + default: false + required: false requestBody: description: Information used to modify the new venue content: @@ -2035,12 +2466,19 @@ paths: responses: 200: - $ref: '#/components/schemas/Venue' + description: Return venue information or list of serial number updated + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/Venue' + - $ref: '#/components/schemas/SerialNumberList' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - delete: tags: - Venues @@ -2054,10 +2492,11 @@ paths: format: uuid example: The root entity cannot be deleted. required: true - responses: 204: $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -2100,7 +2539,6 @@ paths: schema: type: boolean required: false - responses: 200: description: Return a list of Venues @@ -2108,6 +2546,8 @@ paths: application/json: schema: $ref: '#/components/schemas/MapList' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -2126,7 +2566,6 @@ paths: type: string format: uuid required: true - responses: 200: description: Successfull retrieval of a map @@ -2134,11 +2573,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Map' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - post: tags: - Maps @@ -2157,7 +2597,6 @@ paths: application/json: schema: $ref: '#/components/schemas/Map' - responses: 200: $ref: '#/components/schemas/Map' @@ -2165,7 +2604,6 @@ paths: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - put: tags: - Maps @@ -2184,15 +2622,15 @@ paths: application/json: schema: $ref: '#/components/schemas/Map' - responses: 200: $ref: '#/components/schemas/ManagementPolicy' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - delete: tags: - Maps @@ -2208,6 +2646,8 @@ paths: responses: 204: $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -2268,7 +2708,6 @@ paths: schema: type: boolean required: false - responses: 200: description: Return a list of Venues @@ -2278,6 +2717,8 @@ paths: oneOf: - $ref: '#/components/schemas/ManagementPolicyList' - $ref: '#/components/schemas/CountAnswer' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -2301,7 +2742,6 @@ paths: schema: type: boolean required: false - responses: 200: description: Succesful retrieve a management policy @@ -2311,11 +2751,12 @@ paths: oneOf: - $ref: '#/components/schemas/ManagementPolicy' - $ref: '#/components/schemas/ExpandedUseEntryMapList' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - post: tags: - Management Policies @@ -2334,15 +2775,15 @@ paths: application/json: schema: $ref: '#/components/schemas/ManagementPolicy' - responses: 200: $ref: '#/components/schemas/ManagementPolicy' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - put: tags: - Management Policies @@ -2361,15 +2802,15 @@ paths: application/json: schema: $ref: '#/components/schemas/ManagementPolicy' - responses: 200: $ref: '#/components/schemas/ManagementPolicy' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - delete: tags: - Management Policies @@ -2383,10 +2824,11 @@ paths: format: uuid example: The root entity cannot be deleted. required: true - responses: 204: $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -2436,7 +2878,6 @@ paths: schema: type: boolean required: false - responses: 200: description: Return a list of elements @@ -2446,6 +2887,8 @@ paths: oneOf: - $ref: '#/components/schemas/ManagementRoleList' - $ref: '#/components/schemas/CountAnswer' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -2478,6 +2921,8 @@ paths: oneOf: - $ref: '#/components/schemas/ManagementRole' - $ref: '#/components/schemas/ExpandedUseEntryMapList' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -2505,11 +2950,12 @@ paths: responses: 200: $ref: '#/components/schemas/ManagementRole' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - put: tags: - Management Roles @@ -2528,10 +2974,11 @@ paths: application/json: schema: $ref: '#/components/schemas/ManagementRole' - responses: 200: $ref: '#/components/schemas/ManagementRole' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -2551,12 +2998,14 @@ paths: responses: 204: $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - /configurations: + /configuration: get: tags: - Configurations @@ -2606,7 +3055,6 @@ paths: type: string format: uuid required: false - responses: 200: description: Return a list of elements @@ -2616,13 +3064,14 @@ paths: oneOf: - $ref: '#/components/schemas/DeviceConfigurationList' - $ref: '#/components/schemas/CountAnswer' - + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - /configurations/{uuid}: + /configuration/{uuid}: get: tags: - Configurations @@ -2641,7 +3090,6 @@ paths: schema: type: boolean required: false - responses: 200: description: Success @@ -2651,11 +3099,12 @@ paths: oneOf: - $ref: '#/components/schemas/DeviceConfiguration' - $ref: '#/components/schemas/ExpandedUseEntryMapList' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - post: tags: - Configurations @@ -2680,15 +3129,15 @@ paths: application/json: schema: $ref: '#/components/schemas/DeviceConfiguration' - responses: 200: $ref: '#/components/schemas/DeviceConfiguration' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - put: tags: - Configurations @@ -2708,15 +3157,15 @@ paths: application/json: schema: $ref: '#/components/schemas/DeviceConfiguration' - responses: 200: $ref: '#/components/schemas/DeviceConfiguration' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - delete: tags: - Configurations @@ -2730,10 +3179,11 @@ paths: format: uuid example: The root entity cannot be deleted. required: true - responses: 204: $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -2767,6 +3217,8 @@ paths: type: array items: type: string + 400: + $ref: '#/components/responses/BadRequest' 403: $ref: '#/components/responses/Unauthorized' 404: @@ -2822,7 +3274,6 @@ paths: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - delete: tags: - Subscriber Registration @@ -2860,7 +3311,6 @@ paths: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - post: tags: - Subscriber Registration @@ -2883,6 +3333,11 @@ paths: schema: type: string required: false + - in: query + name: registrationId + schema: + type: string + required: true responses: 200: $ref: '#/components/schemas/SignupEntry' @@ -2892,7 +3347,6 @@ paths: $ref: '#/components/responses/Unauthorized' 404: $ref: '#/components/responses/NotFound' - put: tags: - Subscriber Registration @@ -2931,7 +3385,6 @@ paths: status: type: string required: false - responses: 200: $ref: '#/components/schemas/SignupEntry' @@ -2942,7 +3395,7 @@ paths: 404: $ref: '#/components/responses/NotFound' - /variables: + /variable: get: tags: - Variable Configuration Blocks @@ -3002,6 +3455,815 @@ paths: 404: $ref: '#/components/responses/NotFound' + /operator: + get: + operationId: getOperators + tags: + - Operators + summary: Retrieve the list of currently configured operators + parameters: + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Filter the results + name: filter + schema: + type: string + required: false + - in: query + description: Supply a list of operators comma separated + name: select + schema: + type: string + example: serial1,serial2,serial3 + required: false + - in: query + description: return the number of operators + name: countOnly + schema: + type: boolean + required: false + responses: + 200: + description: Successfully retrieved operator list + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/OperatorList' + - $ref: '#/components/schemas/CountAnswer' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /operator/{uuid}: + get: + operationId: getOperator + tags: + - Operators + summary: Retrieve an operator + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + responses: + 200: + $ref: '#/components/schemas/Operator' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + delete: + operationId: deleteOperator + tags: + - Operators + summary: Delete an operator + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + responses: + 204: + $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + post: + summary: Create a new operator + operationId: createOperator + tags: + - Operators + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + example: + should be set to 0 when creating a new operator + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Operator' + responses: + 200: + $ref: '#/components/schemas/Operator' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + put: + summary: Update an existing operator + operationId: updateOperator + tags: + - Operators + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Operator' + responses: + 200: + $ref: '#/components/schemas/Operator' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /serviceClass: + get: + operationId: getServiceClasses + tags: + - ServiceClass + summary: Retrieve the list of currently configured service class + parameters: + - in: query + description: The operator + name: operatorId + schema: + type: string + format: uuid + required: true + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Filter the results + name: filter + schema: + type: string + required: false + - in: query + description: Supply a list of operators comma separated + name: select + schema: + type: string + example: serial1,serial2,serial3 + required: false + - in: query + description: return the number of operators + name: countOnly + schema: + type: boolean + required: false + responses: + 200: + description: Successfully retrieved operator list + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/ServiceClassList' + - $ref: '#/components/schemas/CountAnswer' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /serviceClass/{uuid}: + get: + operationId: getServiceClass + tags: + - ServiceClass + summary: Retrieve a service class + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + responses: + 200: + $ref: '#/components/schemas/ServiceClass' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + delete: + operationId: deleteServiceClass + tags: + - ServiceClass + summary: Delete a service class + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + responses: + 204: + $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + post: + summary: Create a service class + tags: + - ServiceClass + operationId: createServiceClass + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + example: + should be set to 0 when creating a new operator + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceClass' + responses: + 200: + $ref: '#/components/schemas/ServiceClass' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + put: + summary: Update a service class + tags: + - ServiceClass + operationId: updateServiceClass + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceClass' + responses: + 200: + $ref: '#/components/schemas/ServiceClass' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /subscriberDevice: + get: + operationId: getsubscriberDevices + tags: + - Subscriber Devices + summary: Retrieve the list of subscriber devices + parameters: + - in: query + description: The operator + name: operatorId + schema: + type: string + format: uuid + required: true + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Filter the results + name: filter + schema: + type: string + required: false + - in: query + description: Supply a list of operators comma separated + name: select + schema: + type: string + example: serial1,serial2,serial3 + required: false + - in: query + description: return the number of operators + name: countOnly + schema: + type: boolean + required: false + responses: + 200: + description: list of subscriber devices + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/SubscriberDeviceList' + - $ref: '#/components/schemas/CountAnswer' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /subscriberDevice/{uuid}: + get: + operationId: getSubscriberDevice + tags: + - Subscriber Devices + summary: Retrieve a subscriber device + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + responses: + 200: + $ref: '#/components/schemas/SubscriberDevice' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + delete: + operationId: deleteSubscriberDevice + tags: + - Subscriber Devices + summary: Delete a subscriber device + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + responses: + 204: + $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + post: + summary: Create a subscriber device + tags: + - Subscriber Devices + operationId: createSubscriberDevice + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + example: + should be set to 0 when creating a new operator + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberDevice' + responses: + 200: + $ref: '#/components/schemas/SubscriberDevice' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + put: + summary: Update a subscriber device + tags: + - Subscriber Devices + operationId: updateSubscriberDevice + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberDevice' + responses: + 200: + $ref: '#/components/schemas/SubscriberDevice' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /operatorLocation: + get: + tags: + - Operator Locations + operationId: getOperatorLocations + summary: Retrieve a list of locations. + parameters: + - in: query + name: operatorId + schema: + type: string + format: uuid + required: true + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Filter the results + name: filter + schema: + type: string + required: false + - in: query + description: Supply a list of Locations comma separated + name: select + schema: + type: string + example: uuid1,uuid2,uuid3 + required: false + - in: query + description: return the number of Locations + name: countOnly + schema: + type: boolean + required: false + - in: query + description: return only the UUIDs of Locations + name: uuidOnly + schema: + type: boolean + required: false + responses: + 200: + description: Return a list of Locations + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/OperatorLocationList' + - $ref: '#/components/schemas/CountAnswer' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /operatorLocation/{uuid}: + get: + tags: + - Operator Locations + operationId: getOperatorLocation + summary: Retrieve a specific location. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + responses: + 200: + $ref: '#/components/schemas/OperatorLocation' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + post: + tags: + - Operator Locations + operationId: createOperatorLocation + summary: Create a specific location. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + requestBody: + description: Information used to create the new location + content: + application/json: + schema: + $ref: '#/components/schemas/OperatorLocation' + responses: + 200: + $ref: '#/components/schemas/OperatorLocation' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + put: + tags: + - Operator Locations + operationId: modifyOperatorLocation + summary: Modify a specific location. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + requestBody: + description: Information used to modify the new location + content: + application/json: + schema: + $ref: '#/components/schemas/OperatorLocation' + responses: + 200: + $ref: '#/components/schemas/OperatorLocation' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + delete: + tags: + - Operator Locations + operationId: deleteOperatorLocation + summary: Delete a specific location. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + - in: query + name: force + schema: + type: boolean + required: true + responses: + 204: + $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /operatorContact: + get: + tags: + - Operator Contacts + operationId: getOperatorContacts + summary: Retrieve a list of operator contacts. + parameters: + - in: query + name: operatorId + schema: + type: string + format: uuid + required: true + - in: query + description: Pagination start (starts at 1. If not specified, 1 is assumed) + name: offset + schema: + type: integer + required: false + - in: query + description: Maximum number of entries to return (if absent, no limit is assumed) + name: limit + schema: + type: integer + required: false + - in: query + description: Filter the results + name: filter + schema: + type: string + required: false + - in: query + description: Supply a list of operator contacts comma separated + name: select + schema: + type: string + example: uuid1,uuid2,uuid3 + required: false + - in: query + description: return the number of operator contacts + name: countOnly + schema: + type: boolean + required: false + - in: query + description: return only the UUIDs of operator contacts + name: uuidOnly + schema: + type: boolean + required: false + responses: + 200: + description: Return a list of operator contacts + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/OperatorContactList' + - $ref: '#/components/schemas/CountAnswer' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + /operatorContact/{uuid}: + get: + tags: + - Operator Contacts + operationId: getOperatorContact + summary: Retrieve a specific operator contact. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + responses: + 200: + $ref: '#/components/schemas/OperatorContact' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + post: + tags: + - Operator Contacts + operationId: createOperatorContact + summary: Create a specific operator contact. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + requestBody: + description: Information used to create the new entity + content: + application/json: + schema: + $ref: '#/components/schemas/OperatorContact' + responses: + 200: + $ref: '#/components/schemas/OperatorContact' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + put: + tags: + - Operator Contacts + operationId: modifyOperatorContact + summary: Modify a specific operator contact. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + requestBody: + description: Information used to modify the new entity + content: + application/json: + schema: + $ref: '#/components/schemas/OperatorContact' + responses: + 200: + $ref: '#/components/schemas/OperatorContact' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + delete: + tags: + - Operator Contacts + operationId: deleteOperatorContact + summary: Delete a specific operator contact. + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + required: true + - in: query + name: force + schema: + type: boolean + required: true + responses: + 204: + $ref: '#/components/responses/Success' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + + ######################################################################################### ## ## These are endpoints that all services in the OpenWiFi stack must provide @@ -3066,7 +4328,6 @@ paths: enum: - info required: true - responses: 200: description: Successful command execution diff --git a/SUMMARY.md b/SUMMARY.md index 9cda88a..09c4538 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -8,8 +8,8 @@ * [About the OpenWiFi SDK](about-openwifi/about-the-sdk.md) * [OpenWiFi Firmware](about-openwifi/firmware.md) * [About Device Provisioning](about-openwifi/device-provisioning.md) - + [Supported Hardware](about-openwifi/supported-hardware.md) - + [Integrations](about-openwifi/openwifi-stack.md) + * [Supported Hardware](about-openwifi/supported-hardware.md) + * [Integrations](about-openwifi/openwifi-stack.md) * [Ordering OpenWiFi APs](ordering-open-wi-fi-aps.md) * [Device Partner Information](device-partner-information.md) * [Cloud Partner Information](cloud-partner-information.md) @@ -35,6 +35,7 @@ * [Gateway Service](api/gateway-service.md) * [Firmware Management Service](api/firmware-management-service.md) * [Provisioning Service](api/provisioning-service.md) + * [Analytics Service](api/analytics-service.md) * [Monitoring](monitoring/README.md) * [ELK Integration](monitoring/elk-integration.md) diff --git a/api/analytics-service.md b/api/analytics-service.md new file mode 100644 index 0000000..3e85ecf --- /dev/null +++ b/api/analytics-service.md @@ -0,0 +1,5 @@ +# Analytics Service + +{% swagger src="../.gitbook/assets/owanalytics.yaml" path="undefined" method="undefined" %} +[owanalytics.yaml](../.gitbook/assets/owanalytics.yaml) +{% endswagger %} diff --git a/api/provisioning-service.md b/api/provisioning-service.md index c9b0988..1ab87b7 100644 --- a/api/provisioning-service.md +++ b/api/provisioning-service.md @@ -1,213 +1,209 @@ # Provisioning Service -{% swagger src="../.gitbook/assets/owprov.yaml" path="undefined" method="undefined" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) -{% endswagger %} - {% swagger src="../.gitbook/assets/owprov.yaml" path="/entity/{uuid}" method="get" %} [owprov.yaml](../.gitbook/assets/owprov.yaml) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/entity/{uuid}" method="post" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/entity/{uuid}" method="post" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/entity/{uuid}" method="put" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/entity/{uuid}" method="put" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/entity/{uuid}" method="delete" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/entity/{uuid}" method="delete" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/contact" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/contact" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/contact/{uuid}" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/contact/{uuid}" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/contact/{uuid}" method="post" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/contact/{uuid}" method="post" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/contact/{uuid}" method="put" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/contact/{uuid}" method="put" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/contact/{uuid}" method="delete" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/contact/{uuid}" method="delete" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/location" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/location" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/location/{uuid}" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/location/{uuid}" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/location/{uuid}" method="post" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/location/{uuid}" method="post" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/location/{uuid}" method="put" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/location/{uuid}" method="put" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/location/{uuid}" method="delete" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/location/{uuid}" method="delete" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/inventory" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/inventory" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/inventory/{serialNumber}" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/inventory/{serialNumber}" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/inventory/{serialNumber}" method="post" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/inventory/{serialNumber}" method="post" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/inventory/{serialNumber}" method="put" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/inventory/{serialNumber}" method="put" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/inventory/{serialNumber}" method="delete" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/inventory/{serialNumber}" method="delete" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/venue" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/venue" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/venue/{uuid}" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/venue/{uuid}" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/venue/{uuid}" method="post" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/venue/{uuid}" method="post" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/venue/{uuid}" method="put" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/venue/{uuid}" method="put" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/venue/{uuid}" method="delete" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/venue/{uuid}" method="delete" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/map" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/map" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/map/{uuid}" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/map/{uuid}" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/map/{uuid}" method="post" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/map/{uuid}" method="post" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/map/{uuid}" method="put" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/map/{uuid}" method="put" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/map/{uuid}" method="delete" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/map/{uuid}" method="delete" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/managementPolicy" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/managementPolicy" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/managementPolicy/{uuid}" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/managementPolicy/{uuid}" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/managementPolicy/{uuid}" method="post" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/managementPolicy/{uuid}" method="post" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/managementPolicy/{uuid}" method="put" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/managementPolicy/{uuid}" method="put" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/managementPolicy/{uuid}" method="delete" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/managementPolicy/{uuid}" method="delete" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/managementRole" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/managementRole" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/managementRole/{uuid}" method="post" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/managementRole/{uuid}" method="post" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/managementRole/{uuid}" method="put" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/managementRole/{uuid}" method="put" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/managementRole/{uuid}" method="delete" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/managementRole/{uuid}" method="delete" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/configurations" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/configurations" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/configurations/{uuid}" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/configurations/{uuid}" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/configurations/{uuid}" method="post" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/configurations/{uuid}" method="post" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/configurations/{uuid}" method="put" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/configurations/{uuid}" method="put" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/configurations/{uuid}" method="delete" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/configurations/{uuid}" method="delete" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/iptocountry" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/iptocountry" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/signup" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/signup" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/signup" method="post" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/signup" method="post" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/signup" method="put" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/signup" method="put" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/signup" method="delete" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/signup" method="delete" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/variables" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/variables" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/dashboard" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/dashboard" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/system" method="get" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/system" method="get" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} -{% swagger src="../.gitbook/assets/owprov.yaml" path="/system" method="post" %} -[owprov.yaml](../.gitbook/assets/owprov.yaml) +{% swagger src="../.gitbook/assets/owprov (1).yaml" path="/system" method="post" %} +[owprov (1).yaml](<../.gitbook/assets/owprov (1).yaml>) {% endswagger %} diff --git a/configuration-examples/device-feature-configuration-examples/expresswifi.md b/configuration-examples/device-feature-configuration-examples/expresswifi.md index 6451a10..607e06c 100644 --- a/configuration-examples/device-feature-configuration-examples/expresswifi.md +++ b/configuration-examples/device-feature-configuration-examples/expresswifi.md @@ -10,7 +10,7 @@ Express Wi-Fi partners with service providers to deliver great wi-fi to people w For information about becoming an expressWIFI partner please visit their [site.](https://expresswifi.fb.com) -![](<../../.gitbook/assets/image (36).png>) +![](<../../.gitbook/assets/image (40).png>) ## Configuration diff --git a/getting-started/access-points/README.md b/getting-started/access-points/README.md index 6fffd5b..5d50eea 100644 --- a/getting-started/access-points/README.md +++ b/getting-started/access-points/README.md @@ -10,7 +10,7 @@ Given many cloud and ODM partners wish to consume the 2.0 reference stack early, ## Device Interactions with SDK -![OpenWiFi with uCentral Management](<../../.gitbook/assets/image (22) (2).png>) +![OpenWiFi with uCentral Management](<../../.gitbook/assets/image (22) (1).png>) OpenWiFi 2.0 follows the uCentral system. Complete data model is available [here](http://ucentral.io/docs/ucentral-schema.html). Upon discovery of the cloud, a device default or specific configuration is transferred. diff --git a/getting-started/access-points/local-device-settings.md b/getting-started/access-points/local-device-settings.md index d112d5d..468d288 100644 --- a/getting-started/access-points/local-device-settings.md +++ b/getting-started/access-points/local-device-settings.md @@ -15,43 +15,43 @@ Association with and logging in to the device will permit initial WAN connectivi ## Using Maverick -![Maverick Login Page](<../../.gitbook/assets/Screen Shot 2021-07-29 at 5.04.23 PM.png>) +![Maverick Login Page](../../.gitbook/assets/screen-shot-2021-07-29-at-5.04.23-pm.png) After association to the Maverick SSID, open a web browser to `http://192.168.1.1`\ Log into the OpenWiFi device with username: **`root`** and password: **`openwifi`** -![Logged into Maverick](<../../.gitbook/assets/Screen Shot 2021-07-29 at 5.06.35 PM.png>) +![Logged into Maverick](../../.gitbook/assets/screen-shot-2021-07-29-at-5.06.35-pm.png) When the page above is displayed, begin to configure Uplink based on the WAN requirements of the deployment. -![Uplink Configuration in Maverick](<../../.gitbook/assets/Screen Shot 2021-07-29 at 5.07.50 PM.png>) +![Uplink Configuration in Maverick](../../.gitbook/assets/screen-shot-2021-07-29-at-5.07.50-pm.png) If connection uses Point to Point over Ethernet (PPPoE) username and password credentials, enter those values and save. -![PPPoE Uplink](<../../.gitbook/assets/Screen Shot 2021-07-29 at 5.09.14 PM.png>) +![PPPoE Uplink](../../.gitbook/assets/screen-shot-2021-07-29-at-5.09.14-pm.png) If the OpenWiFi device has a Cellular connection which is possible on device models with 4G and 5G radios, the network Access Point Name (APN) and PIN will be required. These values are supplied by your mobile network provider. -![Cellular Uplink](<../../.gitbook/assets/Screen Shot 2021-07-29 at 5.11.05 PM.png>) +![Cellular Uplink](../../.gitbook/assets/screen-shot-2021-07-29-at-5.11.05-pm.png) When dynamic address allocation is not available, static IP address assignment may be required. IPv4 and IPv6 are supported, enter these values with DNS address and save. -![Uplink Static IP](<../../.gitbook/assets/Screen Shot 2021-07-29 at 5.12.39 PM.png>) +![Uplink Static IP](../../.gitbook/assets/screen-shot-2021-07-29-at-5.12.39-pm.png) Otherwise leave the Uplink configuration to DHCP or cloud defaults. -![Uplink DHCP](<../../.gitbook/assets/Screen Shot 2021-07-29 at 5.13.40 PM.png>) +![Uplink DHCP](../../.gitbook/assets/screen-shot-2021-07-29-at-5.13.40-pm.png) ## Manual Redirector and Certificate Upload If under rare circumstances it is not possible to discover the OpenWiFi cloud associated with the device or there is a need to replace device certificates, this may be configured in Settings. -![Local Redirector Setting](<../../.gitbook/assets/Screen Shot 2021-07-29 at 5.16.01 PM.png>) +![Local Redirector Setting](../../.gitbook/assets/screen-shot-2021-07-29-at-5.16.01-pm.png) ## System It is possible to reset the device to defaults, or locally update firmware using the commands available from System. -![System Commands](<../../.gitbook/assets/Screen Shot 2021-07-29 at 5.17.13 PM.png>) +![System Commands](../../.gitbook/assets/screen-shot-2021-07-29-at-5.17.13-pm.png) \*\*\*\* diff --git a/monitoring/elk-integration.md b/monitoring/elk-integration.md index 37247f3..ef2512f 100644 --- a/monitoring/elk-integration.md +++ b/monitoring/elk-integration.md @@ -6,7 +6,7 @@ description: Kafka integration with ELK The following pipeline is used to leverage Kafka messages being emitted from OpenWiFi 2.0 for ELK (Elastic Logstash Kibana) stack integration : -![](../.gitbook/assets/kafka-ELK-pipeline.png) +![](../.gitbook/assets/kafka-elk-pipeline.png) TIP OpenWiFi project has deployed an ELK stack for community members to access [here](https://kibana.lab.wlan.tip.build). diff --git a/provisioning/README.md b/provisioning/README.md index 17c0164..355ef59 100644 --- a/provisioning/README.md +++ b/provisioning/README.md @@ -26,7 +26,7 @@ Upon successful connection the device exchanges its capabilities with the OpenWi Within OpenWiFi devices, the uCentral agent has a reader and renderer process providing serialization and validation of data sent from cloud.\ If any data presented can not be processed by the local agent, this is returned within an ERROR message using the same websocket connection. -![High Level SDK Gateway to uCentral Agent](<../.gitbook/assets/image (30) (1).png>) +![High Level SDK Gateway to uCentral Agent](<../.gitbook/assets/image (22) (1) (1).png>) If the device agrees with provisioning information presented, the render process builds calls into the operating system configuration sub-system known as UCI. The Unified Configuration Interface ensures OpenWrt compliant syntax is persisted within the device. diff --git a/provisioning/data-model-introduction.md b/provisioning/data-model-introduction.md index 3eb207d..f1c83d7 100644 --- a/provisioning/data-model-introduction.md +++ b/provisioning/data-model-introduction.md @@ -16,7 +16,7 @@ The complete data model may be found here : [https://ucentral.io/docs/ucentral-s Each device has a Universally Unique Identifier (UUID). For each device, the configuration presented either manually, via the future Provisioning service from OpenWifi or via a commercial controller generation of provisioning data, the high level relationships of the schema may be understood as follows. -![uCentral Agent Schema Processing](<../.gitbook/assets/image (32).png>) +![uCentral Agent Schema Processing](<../.gitbook/assets/image (37).png>) The unique device record has a set of top level configurations. A device is referred to as a 'unit' that may have a Description, Location, TimeZone as example. Each unit may have globals for IPv4 and IPv6 networks that are derived to lower lever interfaces in later generation. diff --git a/user-interface/README.md b/user-interface/README.md index 7129196..0a9bd1a 100644 --- a/user-interface/README.md +++ b/user-interface/README.md @@ -8,7 +8,7 @@ Release 2.0 uses a Single-Page Application (SPA) as an example user interface bu ## Login to OpenWiFi SDK -![Login Page](<../.gitbook/assets/Screen Shot 2021-07-28 at 4.40.17 PM.png>) +![Login Page](../.gitbook/assets/screen-shot-2021-07-28-at-4.40.17-pm.png) Default username is: **`tip@ucentral.com`** and password is: **`openwifi`** @@ -16,19 +16,19 @@ Default username is: **`tip@ucentral.com`** and password is: **`openwifi`** A left side navigation menu provides direction to major feature or service settings. -![Left Navigation](<../.gitbook/assets/Screen Shot 2021-07-29 at 3.21.37 PM.png>) +![Left Navigation](../.gitbook/assets/screen-shot-2021-07-29-at-3.21.37-pm.png) ## Internationalization OpenWiFi 2.0 SDK supports multiple languages. Simply select the desired language from the right drop down for pages to re-populate accordingly. -![](<../.gitbook/assets/Screen Shot 2021-07-29 at 3.26.35 PM.png>) +![](../.gitbook/assets/screen-shot-2021-07-29-at-3.26.35-pm.png) ## Devices Upon login the first page presented is a Devices table. This table reflects all discovered and managed devices known by the OpenWiFi SDK. -![Devices Table](<../.gitbook/assets/Screen Shot 2021-08-01 at 12.04.01 PM.png>) +![Devices Table](../.gitbook/assets/screen-shot-2021-08-01-at-12.04.01-pm.png) Devices table indicates device Connected or Disconnected state in the first column with green and red respectively. @@ -44,13 +44,13 @@ Three final columns provide Details (also obtained by selecting the serial numbe From the Devices table, second from right column icon the WiFi Analysis may be accessed. This may also be accessed within the Device View page of a single record along the top right of Statistics section. -![Wi-Fi Analysis](<../.gitbook/assets/Screen Shot 2021-08-01 at 12.04.36 PM.png>) +![Wi-Fi Analysis](../.gitbook/assets/screen-shot-2021-08-01-at-12.04.36-pm.png) Within the WiFi Analysis page, all active associations are displayed with the ability to view approximately the last 30 minutes of data reported from the Access Point. For each association the device MAC address, mode of connection and SSID are displayed. This will include end devices as well as Wi-Fi infrastructure such as WDS and Mesh associations. -![](<../.gitbook/assets/Screen Shot 2021-07-28 at 4.54.43 PM.png>) +![](../.gitbook/assets/screen-shot-2021-07-28-at-4.54.43-pm.png) Associations have RSSI, Rx Rate & Bytes, Tx Rate & Bytes, MCS negotiated, Number Spatial Streams and IP Address information. @@ -58,8 +58,8 @@ Associations have RSSI, Rx Rate & Bytes, Tx Rate & Bytes, MCS negotiated, Number OpenWiFi SDK provides visual indications on the overall health of the deployed Wi-Fi network. this includes Device Status for connected and non-connected devices. Device health indicating percentage of devices failing a health check. Distribution of devices by vendor in the network and by model. -![Dashboard View](<../.gitbook/assets/Screen Shot 2021-08-01 at 12.06.15 PM.png>) +![Dashboard View](../.gitbook/assets/screen-shot-2021-08-01-at-12.06.15-pm.png) Additionally, verified certificates or serial mismatch certificates, number of Command actions from all Gateways to devices and devices with greater than 75% memory utilization, greater than 50% less than 75% memory and less than 50% utilization are displayed. -![](<../.gitbook/assets/Screen Shot 2021-07-30 at 12.09.27 AM.png>) +![](../.gitbook/assets/screen-shot-2021-07-30-at-12.09.27-am.png) diff --git a/user-interface/devices-view/README.md b/user-interface/devices-view/README.md index 7cfeaa2..f722799 100644 --- a/user-interface/devices-view/README.md +++ b/user-interface/devices-view/README.md @@ -6,7 +6,7 @@ description: OpenWiFi 2.0 SDK Each device presents Metrics and Health check data to the Gateway. Devices view displays this information in the following organization: -* Status +* Status * Configuration * Logs * Health @@ -14,7 +14,7 @@ Each device presents Metrics and Health check data to the Gateway. Devices view * Statistics * Command History -![Initial Device View](<../../.gitbook/assets/Screen Shot 2021-07-28 at 5.15.03 PM.png>) +![Initial Device View](../../.gitbook/assets/screen-shot-2021-07-28-at-5.15.03-pm.png) ## Status @@ -23,7 +23,7 @@ Uptime and Last Contact reflect communication state.\ Load indicates processing load on the device.\ Memory Used indicates free memory on the device. -![Device Status](<../../.gitbook/assets/Screen Shot 2021-07-28 at 5.17.59 PM.png>) +![Device Status](../../.gitbook/assets/screen-shot-2021-07-28-at-5.17.59-pm.png) ## Configuration @@ -31,19 +31,19 @@ Device UUID, Serial Number, MAC Address and Device Type are displayed.\ Last configuration update date and timestamp reflects the last time a "configure" action completed on the device.\ Password may be set and device notes may be added. -![Device view Configuration Panel](<../../.gitbook/assets/Screen Shot 2021-07-28 at 5.21.07 PM.png>) +![Device view Configuration Panel](../../.gitbook/assets/screen-shot-2021-07-28-at-5.21.07-pm.png) ## Logs Log history of the device is presented within Logs. Expand the tile selecting the down arrow. -![](<../../.gitbook/assets/Screen Shot 2021-07-28 at 5.25.29 PM.png>) +![](../../.gitbook/assets/screen-shot-2021-07-28-at-5.25.29-pm.png) ## Health Health score is an active tile reflecting the device health out of a score reported by the device to Gateway. Health metrics are configured on the device based on chosen data model options. When the device falls out of 100%, this tile changes to red. Expanding the tile will present all health reports. Those with less than 100% score will contain reasons for the result from this interface. -![](<../../.gitbook/assets/Screen Shot 2021-07-28 at 5.24.00 PM.png>) +![](../../.gitbook/assets/screen-shot-2021-07-28-at-5.24.00-pm.png) ## Commands @@ -60,4 +60,4 @@ Commands tile provides a number of administrative actions for the user: | Factory Reset | Hard Reset remote device - destroys device local config | | Configure | Upload Device Configuration | -![Commands Tile](<../../.gitbook/assets/Screen Shot 2021-07-28 at 5.25.50 PM.png>) +![Commands Tile](../../.gitbook/assets/screen-shot-2021-07-28-at-5.25.50-pm.png) diff --git a/user-interface/devices-view/command-history.md b/user-interface/devices-view/command-history.md index 3455eca..9f36b50 100644 --- a/user-interface/devices-view/command-history.md +++ b/user-interface/devices-view/command-history.md @@ -6,20 +6,20 @@ description: OpenWiFi SDK 2.0 Multiple events are recorded in the Command History tile. Each line item will have a Result, Details, and Delete action. -![Command History Tile](<../../.gitbook/assets/Screen Shot 2021-07-29 at 3.10.22 PM.png>) +![Command History Tile](../../.gitbook/assets/screen-shot-2021-07-29-at-3.10.22-pm.png) When an rTTY session is executed, this is a displayed command history. Selecting the Result icons will display the Success or Fail of the command. -![rTTY Command History](<../../.gitbook/assets/Screen Shot 2021-07-29 at 3.12.02 PM.png>) +![rTTY Command History](../../.gitbook/assets/screen-shot-2021-07-29-at-3.12.02-pm.png) Each provisioning event is reflected as a configure command history. To see the entire JSON payload and the result, including success or error with message, simply select Details to expand the dialog below with this data. A date and time in the third column indicates when the configure command was executed successfully. -![Configure Command History](<../../.gitbook/assets/Screen Shot 2021-07-29 at 3.12.27 PM.png>) +![Configure Command History](../../.gitbook/assets/screen-shot-2021-07-29-at-3.12.27-pm.png) If a provisioning event has failed to complete, its command history for configure will show as pending. -![configure Pending Command History](<../../.gitbook/assets/Screen Shot 2021-07-29 at 3.18.12 PM.png>) +![configure Pending Command History](../../.gitbook/assets/screen-shot-2021-07-29-at-3.18.12-pm.png) Remote packet capture is shown as the trace command history. When packet captures are persisted in the OpenWiFi SDK, they may be downloaded again through the cloud download icon. -![trace Command History](<../../.gitbook/assets/Screen Shot 2021-07-29 at 3.16.52 PM.png>) +![trace Command History](../../.gitbook/assets/screen-shot-2021-07-29-at-3.16.52-pm.png) diff --git a/user-interface/devices-view/commands.md b/user-interface/devices-view/commands.md index 62e8d33..ad89f88 100644 --- a/user-interface/devices-view/commands.md +++ b/user-interface/devices-view/commands.md @@ -11,53 +11,53 @@ Each of these represent API calls exposed on the OpenAPI northbound interface fr Selecting the Reboot action will prompt the below dialog. Options presented permit an immediate reboot or a scheduled reboot based on date and time. -![](<../../.gitbook/assets/Screen Shot 2021-07-29 at 2.25.03 PM.png>) +![](../../.gitbook/assets/screen-shot-2021-07-29-at-2.25.03-pm.png) ## Firmware Upgrade Multiple methods exist to execute a remote Firmware Upgrade of a device. When selecting Firmware Upgrade via the Commands tile, a simple dialog to upgrade immediately or at a scheduled time is presented. Alternatively using the Firmware Management Service provides a complete solution including managed access to all TIP firmware images. -![](<../../.gitbook/assets/Screen Shot 2021-07-29 at 2.28.44 PM.png>) +![](../../.gitbook/assets/screen-shot-2021-07-29-at-2.28.44-pm.png) ## Wi-Fi Scan OpenWiFi devices may perform channel scanning and return this neighbor and RF data to the SDK in an on demand or ongoing manner. -![](<../../.gitbook/assets/Screen Shot 2021-07-29 at 2.31.03 PM.png>) +![](../../.gitbook/assets/screen-shot-2021-07-29-at-2.31.03-pm.png) ### Wi-Fi Scan Results Scan operations function over all channels. If 5GHz channels do not display in the returned results ( either via the UI or over API ) this indicates the device is configured in a DFS channel for which it may not return survey scans at this time. -![](<../../.gitbook/assets/Screen Shot 2021-07-29 at 2.33.58 PM.png>) +![](../../.gitbook/assets/screen-shot-2021-07-29-at-2.33.58-pm.png) ## Connect OpenWiFi enables remote connection to any managed device using rTTY encrypted shell session. Selecting Connect will cause a browser tab to open with the login session to current device. -![](<../../.gitbook/assets/Screen Shot 2021-07-29 at 2.35.48 PM.png>) +![](../../.gitbook/assets/screen-shot-2021-07-29-at-2.35.48-pm.png) ## Blink To assist with remote identification of devices in the network, it is possible to turn the LED lights On, Off, of continuous blinking. This may be run on-demand or scheduled. -![](<../../.gitbook/assets/Screen Shot 2021-07-29 at 2.37.30 PM.png>) +![](../../.gitbook/assets/screen-shot-2021-07-29-at-2.37.30-pm.png) ## Trace Trace feature enables a remote packet capture to occur on the managed device, over a specified period of time or amount of traffic, returning the "pcap" packet capture file locally to the OpenWiFi admin user. -![](<../../.gitbook/assets/Screen Shot 2021-07-29 at 2.39.24 PM.png>) +![](../../.gitbook/assets/screen-shot-2021-07-29-at-2.39.24-pm.png) Once complete the user is asked to open or save the packet capture file locally. -![](<../../.gitbook/assets/image (33).png>) +![](<../../.gitbook/assets/image (38).png>) ## Factory Reset It is possible to revert a device to initial out of box state from the OpenWiFi SDK. Sending a Factory Reset will remove all configuration on the device and optionally reset the discovered cloud stored as the 'Redirector' in the device configuration. -![](<../../.gitbook/assets/Screen Shot 2021-07-29 at 2.46.29 PM.png>) +![](../../.gitbook/assets/screen-shot-2021-07-29-at-2.46.29-pm.png) {% hint style="info" %} Note: When Redirector is not kept, devices will re-contact the Certificate Authority to re-discover their OpenWiFi cloud address @@ -67,4 +67,4 @@ Note: When Redirector is not kept, devices will re-contact the Certificate Autho Prior to the introduction of OpenWiFi 2.0 Provisioning Service, device configuration is done through creation of the JSON provisioning file and either loading that file or applying its contents using the dialog presented via Configure. The same options exist when using the API directly. -![](<../../.gitbook/assets/Screen Shot 2021-07-29 at 2.48.31 PM.png>) +![](../../.gitbook/assets/screen-shot-2021-07-29-at-2.48.31-pm.png) diff --git a/user-interface/devices-view/statistics.md b/user-interface/devices-view/statistics.md index d9b1b48..1f94007 100644 --- a/user-interface/devices-view/statistics.md +++ b/user-interface/devices-view/statistics.md @@ -6,15 +6,15 @@ description: OpenWiFi 2.0 SDK Each device page presents statistics in traffic terms per interface as a line graph of bandwidth over time. -![](<../../.gitbook/assets/Screen Shot 2021-07-29 at 2.52.10 PM.png>) +![](../../.gitbook/assets/screen-shot-2021-07-29-at-2.52.10-pm.png) The generated image may be downloaded for offline use. -![](<../../.gitbook/assets/Screen Shot 2021-07-29 at 2.53.14 PM.png>) +![](../../.gitbook/assets/screen-shot-2021-07-29-at-2.53.14-pm.png) Accessing Wi-Fi Analysis and Last Statistics may be found at the top right of Statistics tile. -![](<../../.gitbook/assets/Screen Shot 2021-07-29 at 3.06.20 PM.png>) +![](../../.gitbook/assets/screen-shot-2021-07-29-at-3.06.20-pm.png) ## Wi-Fi Analysis @@ -24,7 +24,7 @@ Viewing associations, from the Associations table, and their use is important in Each association is known by their MAC address or BSSID value. The mode of connection will indicate if an end user client device entering the "ap" or if a client is associated as "wds" or "mesh. -![](<../../.gitbook/assets/Screen Shot 2021-07-29 at 2.57.34 PM.png>) +![](../../.gitbook/assets/screen-shot-2021-07-29-at-2.57.34-pm.png) The access point view of RSSI, Rx and Tx Rate, Modulation Coding Scheme and Number of Spatial Streams are exposed for each association. @@ -34,4 +34,4 @@ Using the slider along the top, the last 15 to 30 minutes of performances data m The option to view Latest Statistics is at time of the MVP release, intended to help the Community see on a per device basis how much, or how little depending on device configuration, is being sent to the OpenWiFi Gateway in terms of telemetry. -![](<../../.gitbook/assets/Screen Shot 2021-07-29 at 3.04.42 PM.png>) +![](../../.gitbook/assets/screen-shot-2021-07-29-at-3.04.42-pm.png) diff --git a/user-interface/firmware.md b/user-interface/firmware.md index 20929dc..45546dc 100644 --- a/user-interface/firmware.md +++ b/user-interface/firmware.md @@ -10,13 +10,13 @@ Firmware management service integrates across all OpenWiFi Gateways deployed in Firmware dashboard provides a single view for overall health of deployed device firmware. Latest firmware charts, device firmware version distribution, distribution of device by type and current connected devices. -![Firmware Dashboard](<../.gitbook/assets/Screen Shot 2021-08-01 at 12.07.27 PM.png>) +![Firmware Dashboard](../.gitbook/assets/screen-shot-2021-08-01-at-12.07.27-pm.png) ## Device Table From the Devices table, any device with a newer firmware published by TIP OpenWiFi is indicated with a yellow icon. Selecting this icon presents the option to upgrade to latest or specify which firmware to use. -![Firmware Control in Device Table](<../.gitbook/assets/Screen Shot 2021-08-01 at 12.08.45 PM.png>) +![Firmware Control in Device Table](../.gitbook/assets/screen-shot-2021-08-01-at-12.08.45-pm.png) When the upgrade has been sent successfully, a green Success dialog will display in the upper right on the screen. Devices with latest firmware version will show a green firmware icon in the Devices row. @@ -26,10 +26,10 @@ Viewing the contents of Firmware Management Service is available from the left n Once in Firmware, it is possible to search by device model for all known firmware revisions. -![Firmware Management Service](<../.gitbook/assets/Screen Shot 2021-07-29 at 4.43.57 PM.png>) +![Firmware Management Service](../.gitbook/assets/screen-shot-2021-07-29-at-4.43.57-pm.png) If in the Device Table reference above, instead of selecting Upgrade to Latest, the specific URI location of any available firmware is found using the Firmware table. Selecting Details will present information for any firmware row, including the URI which may be copied into the Choose Custom Firmware dialog prompt accordingly. -![Firmware Entry Details](<../.gitbook/assets/Screen Shot 2021-07-29 at 4.46.01 PM.png>) +![Firmware Entry Details](../.gitbook/assets/screen-shot-2021-07-29-at-4.46.01-pm.png)