openapi: 3.0.0 info: description: | # Overview **HTTP Methods** This API supports the following HTTP methods: `DELETE`, `GET`, `PUT` The documentation below provide details on when and how to use these methods. **Content-Type** For `PUT` requests, you must include `Content-Type` in the HTTP Header and it should be set to `application/json`, otherwise a 400 (`Bad Request`) is returned. The API only supports `JSON` **API Key Permissions** The permissions required for this API are: - `network-metadata-read` - `network-metadata-write` `network-metadata-read` is needed for `GET` HTTP request `network-metadata-write` is needed for `DELETE` and `PUT` HTTP requests **Encoding** URI parameters must be URL encoded. For example to get an account with the id of `john/doe`, `/model/v1/accounts/john/doe` will fail and return a `404` error. The correct way will be `/model/v1/accounts/john%2Fdoe`. Notice `/` in the id is replaced with the encoded form `%2F` **Note** All IDs are case-sensitive, `John Doe` and `John doe` could be the IDs of two different accounts # Authentication All requests are secured using basic auth. Your API key is the username, the password is empty. # Examples The sample requests below will use the following: - **API key** 12ce9ffa5104885bedb99a75baff2c21e6d21a25ad351f0eff65240784818d19 *Replace API Key* The API key and the colon must be base64 encoded. A sample HTTP Header for the API key above (*after base64 encoding*) is `Authorization: Basic MTJjZTlmZmE1MTA0ODg1YmVkYjk5YTc1YmFmZjJjMjFlNmQyMWEyNWFkMzUxZjBlZmY2NTI0MDc4NDgxOGQxOTo=` ## Get all access points ``` bash$ curl -u 12ce9ffa5104885bedb99a75baff2c21e6d21a25ad351f0eff65240784818d19: https://api.preseem.com/model/v1/access_points {"data":[{"id": "100","name": "AP-1","tower":"Mt. Tower","ip_address":"192.168.0.1"}],"paginator":{"page":1,"page_count":1,"limit":100,"total_count":1}} ``` version: 1.0.0 title: Preseem Model API Documentation servers: - url: https://api.preseem.com tags: - name: Access Points description: This represents an Access Point in the system, or any representation of the two-layer topology - name: Access Point Configs description: This represents the config of an Access Point in the system, or any representation of the two-layer topology. Note, the parent Access Point must exist before you can perform any operation on its config.

SNMP configuration per AP is optional; if the SNMP credentials are not set in this API, the configuration for the network poller will be used. - name: CPE Radios description: This represents a CPE Radio in the system - name: Accounts description: This represents a customer/subscriber/account who pays for Internet access. - name: Packages description: This represents a plan/tariff/service definition in the system. - name: Services description: A service describes an attachment to the network that receives Internet service and is owned by an Account. - name: Routers description: This represents a router in the system, which facilitates the routing of network traffic between different network segments or devices. - name: OLTs description: This represents an OLT (optical line terminal) in the system. - name: Sites description: A site represents a network site (such as a PoP or Tower or Headend) that contains network equipment. paths: /model/v1/access_points: get: tags: - Access Points parameters: - in: query name: page schema: type: integer description: Page number. Default is 1. If `page` is greater than the number of pages available, `data` field in the response will be an empty array - in: query name: limit schema: type: integer description: Specifies the maximum number of access points to be returned per page. Default is 500, *mininum* is 100, *maximum* is 1000 summary: List Access Points description: Returns a list of all Access Points. operationId: getAccessPoints responses: '200': description: Access points returned content: application/json: schema: $ref: '#/components/schemas/AccessPointList' '401': description: API key does not have the required permission '500': description: Server cannot process request /model/v1/access_point_scores: get: tags: - Access Points summary: List Access Point Scores description: Returns a list of all Access Points along with their scores and severities. See the Access Point table help in the Preseem App for more details. operationId: getAccessPointScores responses: '200': description: Access point scores returned content: application/json: schema: $ref: '#/components/schemas/AccessPointScoreInfo' '401': description: API key does not have the required permission '500': description: Server cannot process request /model/v1/access_points/{id}: put: tags: - Access Points summary: Create Access Point description: This creates an Access Point. operationId: createAccessPoint requestBody: required: true content: application/json: schema: "$ref": "#/components/schemas/AccessPoint" parameters: - name: id in: path description: Unique ID of Access point to be added required: true schema: type: string responses: '200': description: Access point added '400': description: Required json field missing in the PUT request ***OR*** ID in the URI does not match the id in json ***OR*** Bad json '401': description: API key does not have the required permission '500': description: Server cannot process request delete: tags: - Access Points summary: Delete Access Point description: This deletes an Access Point. Note that the Access Point config will also be deleted. operationId: deleteAccessPoint parameters: - name: id in: path description: Unique ID of Access point to be deleted required: true schema: type: string responses: '200': description: Access point deleted '400': description: Missing ID in URI '401': description: API key does not have the required permission '404': description: Access Point does not exist '500': description: Server cannot process request get: tags: - Access Points summary: Get Access Point description: This gets an Access Point. operationId: getAccessPoint parameters: - name: id in: path description: Unique ID of Access point required: true schema: type: string responses: '200': description: Access Point returned content: application/json: schema: $ref: '#/components/schemas/AccessPoint' '400': description: Missing ID in the URI '401': description: API key does not have the required permission '404': description: Access Point not found '500': description: Server cannot process request /model/v1/access_points/{id}/config: put: tags: - Access Point Configs summary: Create Access Point config description: This creates an Access Point config. operationId: createAccessPointConfig requestBody: required: true content: application/json: schema: "$ref": "#/components/schemas/AccessPointConfig" parameters: - name: id in: path description: Unique ID of the Access point required: true schema: type: string responses: '200': description: Access point config added '400': description: Required json field missing in the PUT request ***OR*** ID in the URI does not match the id in json ***OR*** Bad json '401': description: API key does not have the required permission '404': description: Access Point does not exist '500': description: Server cannot process request delete: tags: - Access Point Configs summary: Delete Access Point config description: This deletes an Access Point config. operationId: deleteAccessPointConfig parameters: - name: id in: path description: Unique ID of Access point to be deleted required: true schema: type: string responses: '200': description: Access point config deleted '400': description: Missing ID in URI ***OR*** Access Point does not exist '401': description: API key does not have the required permission '404': description: Access Point config does not exist '500': description: Server cannot process request get: tags: - Access Point Configs summary: Get Access Point config description: This gets an Access Point config. operationId: getAccessPointConfig parameters: - name: id in: path description: Unique ID of Access point required: true schema: type: string responses: '200': description: Access Point config returned content: application/json: schema: $ref: '#/components/schemas/AccessPointConfig' '400': description: Missing ID in the URI ***OR*** Access Point does not exist '401': description: API key does not have the required permission '404': description: Access Point config does not exist '500': description: Server cannot process request /model/v1/cpe_radio_scores: get: tags: - CPE Radios summary: List CPE Radio Scores description: Returns a list of all CPE Radios along with their scores and severities. See the CPE Radios table help in the Preseem App for more details. operationId: getCPERadioScores responses: '200': description: CPE Radio scores returned content: application/json: schema: $ref: '#/components/schemas/CPERadioScoreInfo' '401': description: API key does not have the required permission '500': description: Server cannot process request /model/v1/accounts: get: tags: - Accounts parameters: - in: query name: page schema: type: integer description: Page number. Default is 1. If `page` is greater than the number of pages available, `data` field in the response will be an empty array - in: query name: limit schema: type: integer description: Specifies the maximum number of results to be returned per page. Default is 500, *mininum* is 100, *maximum* is 1000 summary: List Accounts description: Returns a list of all Accounts. operationId: getAccounts responses: '200': description: Accounts returned content: application/json: schema: $ref: '#/components/schemas/AccountList' '401': description: API key does not have the required permission '500': description: Server cannot process request /model/v1/accounts/{id}: put: tags: - Accounts summary: Create Account description: This creates an Account. operationId: createAccount requestBody: required: true content: application/json: schema: "$ref": "#/components/schemas/Account" parameters: - name: id in: path description: Unique ID of Account to be added required: true schema: type: string responses: '200': description: Account added '400': description: Required json field missing in the PUT request ***OR*** ID in the URI does not match the id in json ***OR*** Bad json '401': description: API key does not have the required permission '500': description: Server cannot process request delete: tags: - Accounts summary: Delete Account description: This deletes an Account. operationId: deleteAccount parameters: - name: id in: path description: Unique ID of Account to be deleted required: true schema: type: string responses: '200': description: Account deleted '400': description: Missing ID in URI '401': description: API key does not have the required permission '404': description: Account does not exist '500': description: Server cannot process request get: tags: - Accounts summary: Get Account description: This gets an Account. operationId: getAccount parameters: - name: id in: path description: Unique ID of Account to be added required: true schema: type: string responses: '200': description: Account returned content: application/json: schema: $ref: "#/components/schemas/Account" '400': description: Missing ID in the URI '401': description: API key does not have the required permission '404': description: Account not found '500': description: Server cannot process request /model/v1/packages: get: tags: - Packages parameters: - in: query name: page schema: type: integer description: Page number. Default is 1. If `page` is greater than the number of pages available, `data` field in the response will be an empty array - in: query name: limit schema: type: integer description: Specifies the maximum number of results to be returned per page. Default is 500, *mininum* is 100, *maximum* is 1000 summary: List Packages description: Returns a list of all Packages. operationId: getPackages responses: '200': description: Packages returned content: application/json: schema: $ref: '#/components/schemas/PackageList' '401': description: API key does not have the required permission '500': description: Server cannot process request /model/v1/packages/{id}: put: tags: - Packages summary: Create Package description: This creates an Account. operationId: createPackage requestBody: required: true content: application/json: schema: "$ref": "#/components/schemas/Package" parameters: - name: id in: path description: Unique ID of Package to be added required: true schema: type: string responses: '200': description: Package added '400': description: | Required json field missing in the PUT request ***OR*** ID in the URI does not match the id in json ***OR*** Bad json '401': description: API key does not have the required permission '500': description: Server cannot process request delete: tags: - Packages summary: Delete Package description: This deletes a Package. operationId: deletePackage parameters: - name: id in: path description: Unique ID of Package to be deleted required: true schema: type: string responses: '200': description: Package deleted '400': description: Missing ID in URI '401': description: API key does not have the required permission '404': description: Package does not exist '500': description: Server cannot process request get: tags: - Packages summary: Get Package description: This gets a Package. operationId: getPackage parameters: - name: id in: path description: Unique ID of Package to be added required: true schema: type: string responses: '200': description: Package returned content: application/json: schema: $ref: "#/components/schemas/Package" '400': description: Missing ID in the URI '401': description: API key does not have the required permission '404': description: Package not found '500': description: Server cannot process request /model/v1/services: get: tags: - Services parameters: - in: query name: page schema: type: integer description: Page number. Default is 1. If `page` is greater than the number of pages available, `data` field in the response will be an empty array - in: query name: limit schema: type: integer description: Specifies the maximum number of results to be returned per page. Default is 500, *mininum* is 100, *maximum* is 1000 summary: List Services description: Returns a list of all Services. operationId: getServices responses: '200': description: Services returned content: application/json: schema: $ref: '#/components/schemas/ServiceList' '401': description: API key does not have the required permission '500': description: Server cannot process request /model/v1/services/{id}: put: tags: - Services summary: Create Service description: This creates a Service operationId: createService requestBody: required: true content: application/json: schema: "$ref": "#/components/schemas/Service" examples: MultipleAttachments: summary: Multiple Attachments Example value: id: '23' attachments: - cpe_mac: '00:10:0b:6e:4c:45' network_prefixes: ['10.10.10.0/24', '192.168.100.100', '2001:cafe:456:dfe1:63:0:0:fefb', '2001:f0:3238:dfe1::/64'] - cpe_mac: '00:17:2c:6e:9b:15' - network_prefixes: ['12.12.12.12'] up_speed: 25000 down_speed: 5000 account: "100" package: "10" parent_device_id: "AP1" SingleAttachmentSerialNumber: summary: Single Attachment - Serial Number Example value: id: '23' attachments: - cpe_serial: '20130420AB' cpe_mac: '00:10:0b:6e:4c:48' network_prefixes: ['10.10.10.1/24', '192.168.100.101', '2002:cafe:456:dfe1:63:0:0:fefb', '2002:f0:3238:dfe1::/64'] up_speed: 25000 down_speed: 5000 account: "100" package: "10" parent_device_id: "AP1" SingleAttachmentIMSI: summary: Single Attachment - IMSI Example value: id: '23' attachments: - cpe_imsi: '313460000000001' cpe_mac: '00:10:0b:6e:4c:48' network_prefixes: ['10.10.10.1/24', '192.168.100.101', '2002:cafe:456:dfe1:63:0:0:fefb', '2002:f0:3238:dfe1::/64'] up_speed: 25000 down_speed: 5000 account: "100" package: "10" parent_device_id: "AP1" SingleAttachmentUsername: summary: Single Attachment - Username Example value: id: '23' attachments: - username: 'userid@isp-name' cpe_mac: '00:10:0b:6e:4c:48' network_prefixes: ['10.10.10.1/24', '192.168.100.101', '2002:cafe:456:dfe1:63:0:0:fefb', '2002:f0:3238:dfe1::/64'] up_speed: 25000 down_speed: 5000 account: "100" package: "10" parent_device_id: "AP1" parameters: - name: id in: path description: Unique ID of Service to be added required: true schema: type: string responses: '200': description: Service added '400': description: Required json field missing in the PUT request ***OR*** ID in the URI does not match the id in json ***OR*** Bad json ***OR*** multiple attachments for the service that may contain any of the following cpe_serial, cpe_imsi, and username. '401': description: API key does not have the required permission '500': description: Server cannot process request delete: tags: - Services summary: Delete Service description: This deletes a Service. operationId: deleteService parameters: - name: id in: path description: Unique ID of Service to be deleted required: true schema: type: string responses: '200': description: Service deleted '400': description: Missing ID in URI '401': description: API key does not have the required permission '404': description: Service does not exist '500': description: Server cannot process request get: tags: - Services summary: Get Service description: This gets a Service. operationId: getService parameters: - name: id in: path description: Unique ID of Service to be added required: true schema: type: string responses: '200': description: Service returned content: application/json: schema: $ref: "#/components/schemas/Service" '400': description: Missing ID in the URI '401': description: API key does not have the required permission '404': description: Service not found '500': description: Server cannot process request /model/v1/routers: get: tags: - Routers parameters: - in: query name: page schema: type: integer description: Page number. Default is 1. If `page` is greater than the number of pages available, `data` field in the response will be an empty array - in: query name: limit schema: type: integer description: Specifies the maximum number of routers to be returned per page. Default is 500, *mininum* is 100, *maximum* is 1000 summary: List Routers description: Returns a list of all Routers. operationId: getRouters responses: '200': description: Routers returned content: application/json: schema: $ref: '#/components/schemas/RouterList' '401': description: API key does not have the required permission '500': description: Server cannot process request /model/v1/routers/{id}: put: tags: - Routers summary: Create Router description: This creates an Router. operationId: createRouter requestBody: required: true content: application/json: schema: "$ref": "#/components/schemas/Router" parameters: - name: id in: path description: Unique ID of Router to be added required: true schema: type: string responses: '200': description: Router added '400': description: Required json field missing in the PUT request ***OR*** ID in the URI does not match the id in json ***OR*** Bad json '401': description: API key does not have the required permission '500': description: Server cannot process request delete: tags: - Routers summary: Delete Router description: This deletes an Router. operationId: deleteRouter parameters: - name: id in: path description: Unique ID of Router to be deleted required: true schema: type: string responses: '200': description: Router deleted '400': description: Missing ID in URI '401': description: API key does not have the required permission '404': description: Router does not exist '500': description: Server cannot process request get: tags: - Routers summary: Get Router description: This gets an Router. operationId: getRouter parameters: - name: id in: path description: Unique ID of Router required: true schema: type: string responses: '200': description: Router returned content: application/json: schema: $ref: '#/components/schemas/Router' '400': description: Missing ID in the URI '401': description: API key does not have the required permission '404': description: Router not found '500': description: Server cannot process request /model/v1/olts: get: tags: - OLTs parameters: - in: query name: page schema: type: integer description: Page number. Default is 1. If `page` is greater than the number of pages available, `data` field in the response will be an empty array - in: query name: limit schema: type: integer description: Specifies the maximum number of OLTs to be returned per page. Default is 500, *mininum* is 100, *maximum* is 1000 summary: List OLTs description: Returns a list of all OLTs. operationId: getOLTs responses: '200': description: OLTs returned content: application/json: schema: $ref: '#/components/schemas/OLTList' '401': description: API key does not have the required permission '500': description: Server cannot process request /model/v1/olts/{id}: put: tags: - OLTs summary: Create OLT description: This creates an OLT. operationId: createOLT requestBody: required: true content: application/json: schema: "$ref": "#/components/schemas/OLT" parameters: - name: id in: path description: Unique ID of OLT to be added required: true schema: type: string responses: '200': description: OLT added '400': description: Required json field missing in the PUT request ***OR*** ID in the URI does not match the id in json ***OR*** Bad json '401': description: API key does not have the required permission '500': description: Server cannot process request delete: tags: - OLTs summary: Delete OLT description: This deletes an OLT. operationId: deleteOLT parameters: - name: id in: path description: Unique ID of OLT to be deleted required: true schema: type: string responses: '200': description: OLT deleted '400': description: Missing ID in URI '401': description: API key does not have the required permission '404': description: OLT does not exist '500': description: Server cannot process request get: tags: - OLTs summary: Get OLT description: This gets an OLT. operationId: getOLT parameters: - name: id in: path description: Unique ID of OLT required: true schema: type: string responses: '200': description: OLT returned content: application/json: schema: $ref: '#/components/schemas/OLT' '400': description: Missing ID in the URI '401': description: API key does not have the required permission '404': description: OLT not found '500': description: Server cannot process request /model/v1/sites: get: tags: - Sites parameters: - in: query name: page schema: type: integer description: Page number. Default is 1. If `page` is greater than the number of pages available, `data` field in the response will be an empty array - in: query name: limit schema: type: integer description: Specifies the maximum number of results to be returned per page. Default is 500, *mininum* is 100, *maximum* is 1000 summary: List Sites description: Returns a list of all Sites. operationId: getSites responses: '200': description: Sites returned content: application/json: schema: $ref: '#/components/schemas/SiteList' '401': description: API key does not have the required permission '500': description: Server cannot process request /model/v1/sites/{id}: put: tags: - Sites summary: Create Site description: This creates a Site operationId: createSite requestBody: required: true content: application/json: schema: "$ref": "#/components/schemas/Site" parameters: - name: id in: path description: Unique ID of Site to be added required: true schema: type: string responses: '200': description: Site added '400': description: Required json field missing in the PUT request ***OR*** ID in the URI does not match the id in json ***OR*** Bad json '401': description: API key does not have the required permission '500': description: Server cannot process request delete: tags: - Sites summary: Delete Site description: This deletes a Site. operationId: deleteSite parameters: - name: id in: path description: Unique ID of Site to be deleted required: true schema: type: string responses: '200': description: Site deleted '400': description: Missing ID in URI '401': description: API key does not have the required permission '404': description: Site does not exist '500': description: Server cannot process request get: tags: - Sites summary: Get Site description: This gets a Site. operationId: getSite parameters: - name: id in: path description: Unique ID of Site to be added. Note that a site cannot share the same id with an access point object as they share the same namespace required: true schema: type: string responses: '200': description: Site returned content: application/json: schema: $ref: "#/components/schemas/Site" '400': description: Missing ID in the URI '401': description: API key does not have the required permission '404': description: Site not found '500': description: Server cannot process request components: securitySchemes: APIKeyAuth: type: http scheme: basic schemas: AccessPoint: type: object required: - id - name - tower - ip_address properties: id: type: string description: Unique id for access point example: '123' name: type: string description: Access point name example: AP-1 tower: type: string description: Tower name example: Mt. Tower ip_address: type: string description: Management ip address for Access Point example: 192.168.0.1 AccessPointScoreInfo: type: object properties: company_uuid: type: string description: The company's UUID example: 'f80dfce4-0fee-4cf4-b830-88ed5cf921a7' element_uuid: type: string description: The access point's UUID example: '6fe2ac5a-be30-4363-7790-01fcdcef4784' connections: type: integer description: The number of connection to the access point example: 10 latency: type: integer description: The access point's latency example: 76 throughput_tx: type: integer description: The access point's TX throughput example: 3.7 throughput_rx: type: integer description: The access point's RX throughput example: 4.6 frequency: type: integer description: The access point's frequency example: 5000 channel_width: type: integer description: The access point's channel width example: 20 firmware: type: string description: The access point's firmware example: '4.6.2' name: type: string description: The name of the access point example: 'AP-1' system_mac_address: type: string description: The system MAC address of the access point example: 00-B0-D0-63-C2-26 management_ip: type: string description: The management IP of the access point example: 192.168.0.1 status: type: string enum: [Invalid, Online, Warning, Offline, Unknown, Error] description: The status of the access point example: "Online" manufacturer_uuid: type: string description: The manufacturer UUID of the access point example: '1bbfa69b-f399-4d68-9572-5772074795f7' manufacturer_name: type: string description: The manufacturer name of the access point example: 'Manufacturer Name' model_uuid: type: string description: The model UUID of the access point example: 'e31dd2f3-f30b-46b1-8f9d-ef59b923070d' model_name: type: string description: The model name of the access point example: 'Model Name' site_uuid: type: string description: The site UUID of the access point example: '14004472-9617-4fa7-a2da-915633301d27' site_name: type: string description: The site name of the access point example: 'Site Name' system_name: type: string description: The system name of the access point example: 'System Name' model_support_level: type: string enum: [Invalid, None, Topology, Test, Full, Basic] description: The model support level of the access point example: "Full" element_id: type: integer description: The ID of the access point example: 123 model_auto_shape: type: string enum: [Invalid, Not Supported, Supported] description: The access point's auto shape model example: "Supported" serial_number: type: string description: The access point's serial number example: '123456' source: type: string description: The name of the system of record that this access point was provisioned from example: 'api' source_id: type: string description: A unique identifier for this access point in the system of record example: '2346' slice_condition: type: string enum: [Invalid, Good, Caution, Warning, Drop] description: The slice condition of the access point example: "Good" latency_severity: type: string enum: [Invalid, Unknown, Critical, Warning, Ok, Excellent] description: The severity of the access point's latency example: "Warning" rf_score: type: integer description: The access point's RF score example: 5.6 rf_score_severity: type: integer enum: [Invalid, Unknown, Critical, Warning, Ok, Excellent] description: The severity of the access point's RF score example: 3 ap_health_score: type: integer description: The access point's health score example: 6.1 ap_health_score_severity: type: string enum: [Invalid, Unknown, Critical, Warning, Ok, Excellent] description: The access point's health score severity example: "Critical" airtime_remaining_tx: type: integer description: The access point's TX airtime remaining example: 60 airtime_remaining_severity_tx: type: string enum: [Invalid, Unknown, Critical, Warning, Ok, Excellent] description: The access point's TX airtime remaining severity example: "Excellent" subscriber_capacity: type: integer description: The access point's subscriber capacity example: 12 subscriber_capacity_severity: type: string enum: [Invalid, Unknown, Critical, Warning, Ok, Excellent] description: The access point's subscriber capacity severity example: "Excellent" rf_score_trend: type: string enum: [Invalid, Unknown Trend, Up Fast, Up, Stable, Down Fast, Down] description: The access point's RF score trend example: "Unknown Trend" ap_health_score_trend: type: string enum: [Invalid, Unknown Trend, Up Fast, Up, Stable, Down Fast, Down] description: The access point's health score trend example: "Stable" subscriber_capacity_trend: type: string enum: [Invalid, Unknown Trend, Up Fast, Up, Stable, Down Fast, Down] description: The access point's subscriber capacity trend example: "Up" AccessPointConfig: type: object properties: shaper_rate: $ref: '#/components/schemas/APShaperRate' snmp_community: type: string description: SNMP community for SNMPv1 or SNMPv2c example: public snmp3: $ref: '#/components/schemas/SNMP3' CPERadioScoreInfo: type: object properties: company_uuid: type: string description: The company's UUID example: 'f80dfce4-0fee-4cf4-b830-88ed5cf921a7' element_uuid: type: string description: The CPE radio's UUID example: '6fe2ac5a-be30-4393-7790-01fcdcef4784' ap_uuid: type: string description: The associated AP's UUID example: '5hr3bn7a-kg58-8579-2648-32dfgrey4522' firmware: type: string description: The CPE radio's firmware example: '4.6.2' frequency: type: integer description: The CPE radio's frequency example: 8000 channel_width: type: integer description: The CPE radio's channel width example: 20 ap_name: type: string description: The CPE radio's associated AP's name example: "ap name" name: type: string description: The name of the CPE radio example: 'CPE-1' system_mac_address: type: string description: The system MAC address of the CPE radio example: 00-B0-D0-63-C2-26 management_ip: type: string description: The management IP of the CPE radio example: 192.168.0.1 status: type: string enum: [Invalid, Online, Warning, Offline, Unknown, Error] description: The status of the CPE radio example: "Online" manufacturer_uuid: type: string description: The manufacturer UUID of the CPE radio example: '1bbfa69b-f399-4d68-9572-5772074795f7' manufacturer_name: type: string description: The manufacturer name of the CPE radio example: 'Manufacturer Name' model_uuid: type: string description: The model UUID of the CPE radio example: 'e31dd2f3-f30b-46b1-8f9d-ef59b923070d' model_name: type: string description: The model name of the CPE radio example: 'Model Name' system_name: type: string description: The system name of the CPE radio example: 'System Name' model_support_level: type: string enum: [Invalid, None, Topology, Test, Full, Basic] description: The model support level of the CPE radio example: "Topology" element_id: type: integer description: The ID of the CPE radio example: 123 ap_id: type: integer description: The ID of the CPE radio's associated AP example: 546 ap_system_name: type: string description: The system name of the associated AP example: "AP System Name" ap_site_uuid: type: string description: The site UUID of the associated AP example: '14004472-9617-4fa7-a2da-915633301d27' ap_site_name: type: string description: The site name of the associated AP example: 'AP Site Name' serial_number: type: string description: The CPE radio's serial number example: '123456' slice_condition: type: string enum: [Invalid, Good, Caution, Warning, Drop] description: The CPE radio's slice condition example: "Good" business_value_score: type: integer description: The CPE radio's business value score example: 3 business_value_score_severity: type: string enum: [Invalid, Unknown, Critical, Warning, Ok, Excellent] description: The CPE radio's business value score severity example: "Ok" business_value_score_trend: type: string enum: [Invalid, Unknown Trend, Up Fast, Up, Stable, Down Fast, Down] description: The trend of the CPE radio's business value score example: "Stable" rf_score: type: integer description: The CPE radio's RF score example: 5.6 rf_score_severity: type: string enum: [Invalid, Unknown, Critical, Warning, Ok, Excellent] description: The CPE radio's RF score severity example: "Unknown" rf_score_trend: type: string enum: [Invalid, Unknown Trend, Up Fast, Up, Stable, Down Fast, Down] description: The trend of the CPE radio's RF score example: "Up" APShaperRate: type: object properties: up_speed: type: integer format: int64 description: The upstream rate limit, in Kbps. A value of 0 is treated as not set. If not set, this field is omitted in the returned json. A negative speed is converted to 0 example: 5000 down_speed: type: integer format: int64 description: The downstream rate limit, in Kbps. A value of 0 is treated as not set. If not set, this field is omitted in the returned json. A negative speed is converted to 0 example: 5000 activate: type: boolean description: A value of true enforces the shaper rates example: true SNMP3: type: object required: - security_name - auth_key - auth_protocol - priv_key - priv_protocol properties: security_name: type: string description: SNMPv3 security name / username example: preseem auth_key: type: string description: SNMPv3 authentication key example: asdf! auth_protocol: type: string enum: [MD5, SHA] description: SNMPv3 authentication type example: MD5 priv_key: type: string description: SNMPv3 privacy key example: asdf! priv_protocol: type: string enum: [AES, DES] description: SNMPv3 privacy type example: AES Account: type: object required: - id - name properties: id: type: string description: Unique id for account example: '100' name: type: string description: Name of Account owner example: Jonathon Fernando Package: type: object required: - id - name properties: id: type: string description: Unique id for package example: '10' name: type: string description: Package name example: Family Premium up_speed: type: integer format: int64 description: The upstream rate limit, in Kbps. A value of 0 is treated as not set. If not set, this field is omitted in the returned json. A negative speed is converted to 0 example: 25000 down_speed: type: integer format: int64 description: The downstream rate limit, in Kbps. A value of 0 is treated as not set. If not set, this field is omitted in the returned json. A negative speed is converted to 0 example: 5000 Service: type: object required: - id - name - account properties: id: type: string description: Unique id for service example: '23' attachments: $ref: '#/components/schemas/ServiceAttachment' up_speed: type: integer format: int64 description: The upstream rate limit, in Kbps. A value of 0 is treated as not set. If not set, this field is omitted in the returned json. A negative speed is converted to 0 example: 25000 down_speed: type: integer format: int64 description: The downstream rate limit, in Kbps. A value of 0 is treated as not set. If not set, this field is omitted in the returned json. A negative speed is converted to 0 example: 5000 account: type: string description: Account id for the service. This id is just a reference to an account, the account doesn't have to exist, but when it does, the service gets attached to the account example: '100' package: type: string description: Package id of the service example: '10' parent_device_id: type: string description: This is the unique id for the parent device. E.g. An access point example: 'AP1' Router: type: object required: - id - name - site - host properties: id: type: string description: Unique id for router example: '123' name: type: string description: Router name example: Router-1 site: type: string description: Name of the site or tower where the router is deployed example: Mt. Site host: type: string description: Management ip address for Router example: 192.0.2.1 OLT: type: object required: - id - name - site - host properties: id: type: string description: Unique ID for OLT example: '123' name: type: string description: OLT name example: OLT-1 site: type: string description: Name of the site or tower where the OLT is deployed example: Mt. Site host: type: string description: Management ip address for OLT example: 192.0.2.1 Site: type: object required: - id - name - ip_address properties: id: type: string description: Unique id for Site. Note that a site and access point objects can't have the same ID as they share the same namespace. example: '123' name: type: string description: Site name example: Site-1 attachment: $ref: '#/components/schemas/SiteAttachment' SiteAttachment: type: object properties: network_prefixes: type: array items: type: string example: ['10.10.10.0/24', '192.168.100.100', '2001:cafe:456:dfe1:63:0:0:fefb', '2001:f0:3238:dfe1::/64'] ServiceAttachment: type: array description: Attachment must be unique across services. If two or more services are assigned the same attachment, only the last assignment will remain. items: type: object properties: cpe_mac: type: string description: Optional network_prefixes: type: array description: Optional items: type: string cpe_serial: type: string description: Optional. The serial number of the CPE device assigned to this service. The presence of a serial number enforces a single-attachment restriction, implying that any service with a serial number is limited to having just one attachment. This field is used to map Tarana RN devices to the service. items: type: string cpe_imsi: type: string description: Optional. The IMSI (International Mobile Subscriber Identity) of the CPE device assigned to this service. The presence of an IMSI enforces a single-attachment restriction, implying that any service with IMSI is limited to having just one attachment. items: type: string username: type: string description: Optional. Represents the RADIUS username associated with a service, for PPPoE based deployments. The presence of a username enforces a single-attachment restriction, implying that any service with a username is limited to having just one attachment. items: type: string example: - cpe_mac: '00:10:0b:6e:4c:45' network_prefixes: ['10.10.10.0/24', '192.168.100.100', '2001:cafe:456:dfe1:63:0:0:fefb', '2001:f0:3238:dfe1::/64'] - cpe_mac: '00:17:2c:6e:9b:15' - network_prefixes: ['12.12.12.12'] Paginator: type: object description: Page details properties: page: type: integer description: Page number for the list of results returned example: 1 page_count: type: integer description: Total number of pages available example: 1 limit: type: integer description: The number of results per page. The number of results on the last page can be less than `limit` minimum: 100 maximum: 1000 example: 100 total_count: type: integer description: Sum of results across all pages example: 1 AccessPointList: type: object properties: data: type: array description: A list of access points items: $ref: '#/components/schemas/AccessPoint' paginator: $ref: '#/components/schemas/Paginator' AccountList: type: object properties: data: type: array description: A list of accounts items: $ref: '#/components/schemas/Account' paginator: $ref: '#/components/schemas/Paginator' PackageList: type: object properties: data: type: array description: A list of packages items: $ref: '#/components/schemas/Package' paginator: $ref: '#/components/schemas/Paginator' ServiceList: type: object properties: data: type: array description: A list of services items: $ref: '#/components/schemas/Service' paginator: $ref: '#/components/schemas/Paginator' RouterList: type: object properties: data: type: array description: A list of routers items: $ref: '#/components/schemas/Router' paginator: $ref: '#/components/schemas/Paginator' OLTList: type: object properties: data: type: array description: A list of OLTs items: $ref: '#/components/schemas/OLT' paginator: $ref: '#/components/schemas/Paginator' SiteList: type: object properties: data: type: array description: A list of sites items: $ref: '#/components/schemas/Site' paginator: $ref: '#/components/schemas/Paginator' security: - APIKeyAuth: [] externalDocs: description: Find out more about Preseem url: https://preseem.com