From 9c98826bdb428391ed1be11dd233c0f3b3172ebf Mon Sep 17 00:00:00 2001 From: Fonoster Team Date: Sun, 3 Feb 2019 09:44:52 -0500 Subject: [PATCH] Added configs section --- docs/api/resources.md | 280 ------------------ docs/configuration/agents.md | 28 +- docs/configuration/dids.md | 34 ++- docs/configuration/domains.md | 40 ++- docs/configuration/gateways.md | 35 ++- docs/configuration/general.md | 105 +++++++ docs/configuration/general/datasource.md | 1 - docs/configuration/general/logging.md | 1 - docs/configuration/general/restful-api.md | 1 - .../general/signaling-security.md | 1 - docs/configuration/general/transport.md | 1 - docs/configuration/peers.md | 32 +- docs/configuration/users.md | 25 ++ docs/index.md | 2 +- mkdocs.yml | 11 +- 15 files changed, 297 insertions(+), 300 deletions(-) delete mode 100644 docs/api/resources.md create mode 100644 docs/configuration/general.md delete mode 100644 docs/configuration/general/datasource.md delete mode 100644 docs/configuration/general/logging.md delete mode 100644 docs/configuration/general/restful-api.md delete mode 100644 docs/configuration/general/signaling-security.md delete mode 100644 docs/configuration/general/transport.md diff --git a/docs/api/resources.md b/docs/api/resources.md deleted file mode 100644 index 7a91a5881..000000000 --- a/docs/api/resources.md +++ /dev/null @@ -1,280 +0,0 @@ -**Routr** API version is currently `v1beta1`. We will continue to improve the API, resource definition, and other artifacts until we reach a final version. We then will establish an update policy to ensure backward compatibility. Until then keep an eye on this document. - -## General Configuration - -> This file can be found at 'config/config.yaml' in the root of this project. - -| Property | Description | Required | -| --- | --- | --- | -| apiVersion | Indicates the version of the resource (Not yet implemented) | yes | -| metadata.userAgent| Sets sip header `User-Agent` to the desired value | No | -| spec.bindAddr | Default stack IP address | No | -| spec.externAddr | IP address to advertise | No | -| spec.localnets | Local networks. Use in combination with spec.externAddr | No | -| spec.recordRoute | Stay within the signaling path | No | -| spec.useToAsAOR | Use the TO header instead of Request URI | No | -| spec.registrarIntf | Force to use received & rport for registration| No | -| spec.addressInfo.[*] | Custom tag with the DID information | No | -| spec.accessControlList.deny.[*] | Deny incoming traffic from network list | No | -| spec.accessControlList.allow.[*] | Allow incoming traffic from network list | No | -| spec.restService.bindAddr | Restful service listening address | No | -| spec.restService.port | Restful service port. Defaults to 4567 | No | -| spec.restService.unsecured | Disabled https for restful calls. Default is `false` | No | -| spec.restService.keyStore | Path to keyStore | No | -| spec.restService.trueStore | Path to trueStore | No | -| spec.restService.keyStorePassword | Password for keyStore | No | -| spec.restService.trueStorePassword | Password for trueStore | No | -| spec.transport.bindAddr | Overwrites `spec.bindAddr` for transport entry | No | -| spec.transport.port | Transport port | Yes | -| spec.transport.protocol | Valid values are: `tcp`, `udp`, `tls`, `sctp`, `ws`, `wss` | Yes | -| spec.securityContext.keyStore | Path to keyStore | Yes | -| spec.securityContext.trustStore | Path to trueStore | Yes | -| spec.securityContext.keyStorePassword | Password for keyStore | Yes | -| spec.securityContext.keyStoreType | KeyStore type | Yes | -| spec.securityContext.client.authType | Type of client authentication. Default is `Disabled`. See https://goo.gl/1vKbXW for more options | No | -| spec.securityContext.client.protocols.[*] | Accepted tls protocols. Default is [`TLSv1.2`, `TLSv1.1`, `TLSv1`] | No | -| spec.securityContext.debugging | Turns ON or OFF ssl debuging. Default is `false` | No | -| spec.dataSource.provider | Defines data provider. Defaults to `files_data_provider` | No | -| spec.dataSource.parameters | Parameters expecifics to data provider implementation | No | -| spec.logging.traceLevel | Verbosity of the sip-stack logging. Default is `0` | No | - -**Example** - -```yaml -apiVersion: v1beta1 -metadata: - userAgent: Routr v1.0 -spec: - transport: - - protocol: udp - port: 5060 - dataSource: - provider: redis_data_provider - logging: - traceLevel: 10 -``` - -### Data Providers - -Routr currently implements three data providers: `redis_data_provider`, `files_data_provider` and `restful_data_provider`. The default data provider is the `files_data_provider`. - -> The docker version of the server uses `redis_data_provider` as its default - -The parameters for `redis_data_provider` are: - -| Parameter | Description | Required | -| --- | --- | --- | -| host | Redis host. Defaults to 'localhost' | No | -| port | Redis port. The default port is 6379 | No | -| secret | Password to access database | No | - -The parameters for `files_data_provider` are: - -| Parameter | Description | Required | -| --- | --- | --- | -| path | Path to configuration files. Defaults to 'config' folder | No | - -This implementation has the limitation that writes operations have to be performed manually on the files. - -The parameters for `restful_data_provider` are: - -| Parameter | Description | Required | -| --- | --- | --- | -| baseUrl | Endpoint base url | yes | -| username | Basic authentication username | yes | -| secret | Basic authentication password | yes | - -## User Resource - -> This file can be found at 'config/users.yaml' in the root of this project. - -| Property | Description | Required | -| --- | --- | --- | -| apiVersion | Indicates the version of the resource (Not yet implemented)| Yes | -| kind | Defines the type of resource | Yes | -| metadata.name | Friendly name for the User device | Yes | -| spec.credentials.username | User's credential username | Yes | -| spec.credentials.secret | User's credential secret | Yes | - -**Example** - -```yaml -# Users exist in Routr to perform administrative actions on the server -- apiVersion: v1beta1 - kind: User - metadata: - name: Administrator - spec: - credentials: - username: admin - secret: changeit -``` - -## Agent Resource - -> This file can be found at 'config/agents.yaml' in the root of this project. - -| Property | Description | Required | -| --- | --- | --- | -| apiVersion | Indicates the version of the resource (Not yet implemented)| Yes | -| kind | Defines the type of resource | Yes | -| metadata.name | Friendly name for the SIP device | Yes | -| spec.credentials.username | Agent's credential username | Yes | -| spec.credentials.secret | Agent's credential secret | Yes | -| spec.domains[*] | Context/s in which this Agent is allowed to communicate. FQDN is recommended | Yes | - -**Example** - -```yaml -# Peers and Agents can register in Routr location service -- apiVersion: v1beta1 - kind: Agent - metadata: - name: John Doe - spec: - credentials: - username: john - secret: '1234' - domains: [sip.local] -``` - -## Domain Resource - -> This file can be found at 'config/domains.yaml' in the root of this project. - -| Property | Description | Required | -| --- | --- | --- | -| apiVersion | Indicates the version of the resource (Not yet implemented)| Yes | -| kind | Defines the type of resource | Yes | -| metadata.name | Friendly name for the SIP domain | Yes | -| spec.context.domainUri | Domain URI. FQDN is recommended | Yes | -| spec.context.egressPolicy.rule | Regular expression indicating when a call will be routed via $spec.context.egressPolicy.didRef | No | -| spec.context.egressPolicy.didRef | Reference to the DID that will route the call | No | -| spec.context.accessControlList.allow[*] | Traffic allow for Network in list | No | -| spec.context.accessControlList.deny[*] | Traffic disabled for Network in list| No | - -> Access Control List -> Rules may be in CIDR, IP/Mask, or single IP format. Example -> of rules are: -> - 0.0.0.0/1 # all -> - 192.168.1.0/255.255.255.0 -> - 192.168.0.1/31 - -**Example** - -```yaml -- apiVersion: v1beta1 - kind: Domain - metadata: - name: Local Server - spec: - context: - domainUri: sip.local - egressPolicy: - rule: .* - didRef: DID0001 - accessControlList: - deny: [0.0.0.0/1] # Deny all - allow: [192.168.0.1/31] -``` - -## Gateway Resource - -> This file can be found at 'config/gateways.yaml' in the root of this project. - -| Property | Description | Required | -| --- | --- | --- | -| apiVersion | Indicates the version of the resource (Not yet implemented)| Yes | -| kind | Defines the type of resource | Yes | -| metadata.name | Friendly name for the SIP device | Yes | -| metadata.ref | Reference to this resource | Yes | -| spec.credentials.username | Gateway username | Yes | -| spec.credentials.secret | Gateway secret | Yes | -| spec.host | Gateway host | Yes | -| spec.transport | Transport protocol | Yes | -| spec.expires | Requested lifespan of the registration in seconds. Defaults to `3600` | No | -| spec.registries.[*] | Additional registries for ingress calls | No | - -**Example** - -```yaml -# Use gateway to register with a Sip Gateways or SBCs and send -# or receive calls from the PSTN -- apiVersion: v1beta1 - kind: Gateway - metadata: - name: Provider, Inc - ref: GW0001 - spec: - host: sip.provider.com - transport: tcp - credentials: - username: 'user' - secret: changeit -``` - -## DID Resource - -> This file can be found at 'config/dids.yaml' in the root of this project. - -| Property | Description | Required | -| --- | --- | --- | -| apiVersion | Indicates the version of the resource (Not yet implemented) | Yes | -| kind | Defines the type of resource | Yes | -| metadata.ref| Reference to this resource | Yes | -| metadata.gwRef| Reference to parent Gateway | Yes | -| metadata.geoInfo.city | City of the DID | No | -| metadata.geoInfo.country | Country of the DID | No | -| metadata.geoInfo.countryISOCode| Country ISO code for the DID (ie.: US) | No | -| spec.location.telUrl | DID URI available in the location server | Yes | -| spec.location.aorLink | Address of record of SIP device for call routing | Yes | - -**Example** - -```yaml -- apiVersion: v1beta1 - kind: DID - metadata: - ref: DID0001 - gwRef: GW0001 - geoInfo: - city: Columbus, GA - country: USA - countryISOCode: US - spec: - location: - telUrl: 'tel:17066041487' - aorLink: 'sip:john@sip.local' -``` - -## Peer Resource - -> This file can be found at 'config/peers.yaml' in the root of this project. - -| Property | Description | Required | -| --- | --- | --- | -| apiVersion | Indicates the version of the resource (Not yet implemented) | Yes | -| kind | Defines the type of resource | Yes | -| metadata.name | Friendly name for the SIP device | Yes | -| spec.credentials.username | Peer's credential username | Yes | -| spec.credentials.secret | Peer's credential secret | Yes | -| spec.device | When set it will be used by the location service | No | -| spec.contactAddr | When set will advertise this as the contactURI | No | - -**Example** - -```yaml -# Peers and Agents can register on Routr location service -- apiVersion: v1beta1 - kind: Peer - metadata: - name: Asterisk (Media Server) - spec: - credentials: - username: ast - secret: 'astsecret' - device: astserver # If is not define the IP address will be used - contactAddr: '192.168.1.2:6060' -``` - -This peer can be reached using `ast@astserver`. diff --git a/docs/configuration/agents.md b/docs/configuration/agents.md index 6863c0981..cd29a1c78 100644 --- a/docs/configuration/agents.md +++ b/docs/configuration/agents.md @@ -1 +1,27 @@ -Coming soon! +## Agent Resource + +> This file can be found at 'config/agents.yml' in the root of this project. + +| Property | Description | Required | +| --- | --- | --- | +| apiVersion | Indicates the version of the resource (Not yet implemented)| Yes | +| kind | Defines the type of resource | Yes | +| metadata.name | Friendly name for the SIP device | Yes | +| spec.credentials.username | Agent's credential username | Yes | +| spec.credentials.secret | Agent's credential secret | Yes | +| spec.domains[*] | Context/s in which this Agent is allowed to communicate. FQDN is recommended | Yes | + +**Example** + +```yaml +# Peers and Agents can register in Routr location service +- apiVersion: v1beta1 + kind: Agent + metadata: + name: John Doe + spec: + credentials: + username: john + secret: '1234' + domains: [sip.local] +``` diff --git a/docs/configuration/dids.md b/docs/configuration/dids.md index 6863c0981..73ff876e4 100644 --- a/docs/configuration/dids.md +++ b/docs/configuration/dids.md @@ -1 +1,33 @@ -Coming soon! +## DID Resource + +> This file can be found at 'config/dids.yml' in the root of this project. + +| Property | Description | Required | +| --- | --- | --- | +| apiVersion | Indicates the version of the resource (Not yet implemented) | Yes | +| kind | Defines the type of resource | Yes | +| metadata.ref| Reference to this resource | Yes | +| metadata.gwRef| Reference to parent Gateway | Yes | +| metadata.geoInfo.city | City of the DID | No | +| metadata.geoInfo.country | Country of the DID | No | +| metadata.geoInfo.countryISOCode| Country ISO code for the DID (ie.: US) | No | +| spec.location.telUrl | DID URI available in the location server | Yes | +| spec.location.aorLink | Address of record of SIP device for call routing | Yes | + +**Example** + +```yaml +- apiVersion: v1beta1 + kind: DID + metadata: + ref: DID0001 + gwRef: GW0001 + geoInfo: + city: Columbus, GA + country: USA + countryISOCode: US + spec: + location: + telUrl: 'tel:17066041487' + aorLink: 'sip:john@sip.local' +``` diff --git a/docs/configuration/domains.md b/docs/configuration/domains.md index 6863c0981..b2400063b 100644 --- a/docs/configuration/domains.md +++ b/docs/configuration/domains.md @@ -1 +1,39 @@ -Coming soon! +## Domain Resource + +> This file can be found at 'config/domains.yml' in the root of this project. + +| Property | Description | Required | +| --- | --- | --- | +| apiVersion | Indicates the version of the resource (Not yet implemented)| Yes | +| kind | Defines the type of resource | Yes | +| metadata.name | Friendly name for the SIP domain | Yes | +| spec.context.domainUri | Domain URI. FQDN is recommended | Yes | +| spec.context.egressPolicy.rule | Regular expression indicating when a call will be routed via $spec.context.egressPolicy.didRef | No | +| spec.context.egressPolicy.didRef | Reference to the DID that will route the call | No | +| spec.context.accessControlList.allow[*] | Traffic allow for Network in list | No | +| spec.context.accessControlList.deny[*] | Traffic disabled for Network in list| No | + +> Access Control List +> Rules may be in CIDR, IP/Mask, or single IP format. Example +> of rules are: +> - 0.0.0.0/1 # all +> - 192.168.1.0/255.255.255.0 +> - 192.168.0.1/31 + +**Example** + +```yaml +- apiVersion: v1beta1 + kind: Domain + metadata: + name: Local Server + spec: + context: + domainUri: sip.local + egressPolicy: + rule: .* + didRef: DID0001 + accessControlList: + deny: [0.0.0.0/1] # Deny all + allow: [192.168.0.1/31] +``` diff --git a/docs/configuration/gateways.md b/docs/configuration/gateways.md index 6863c0981..66da7b9ce 100644 --- a/docs/configuration/gateways.md +++ b/docs/configuration/gateways.md @@ -1 +1,34 @@ -Coming soon! +## Gateway Resource + +> This file can be found at 'config/gateways.yml' in the root of this project. + +| Property | Description | Required | +| --- | --- | --- | +| apiVersion | Indicates the version of the resource (Not yet implemented)| Yes | +| kind | Defines the type of resource | Yes | +| metadata.name | Friendly name for the SIP device | Yes | +| metadata.ref | Reference to this resource | Yes | +| spec.credentials.username | Gateway username | Yes | +| spec.credentials.secret | Gateway secret | Yes | +| spec.host | Gateway host | Yes | +| spec.transport | Transport protocol | Yes | +| spec.expires | Requested lifespan of the registration in seconds. Defaults to `3600` | No | +| spec.registries.[*] | Additional registries for ingress calls | No | + +**Example** + +```yaml +# Use gateway to register with a Sip Gateways or SBCs and send +# or receive calls from the PSTN +- apiVersion: v1beta1 + kind: Gateway + metadata: + name: Provider, Inc + ref: GW0001 + spec: + host: sip.provider.com + transport: tcp + credentials: + username: 'user' + secret: changeit +``` diff --git a/docs/configuration/general.md b/docs/configuration/general.md new file mode 100644 index 000000000..8bbefe75e --- /dev/null +++ b/docs/configuration/general.md @@ -0,0 +1,105 @@ +General configuration have an effect in the elements of a Routr instance. +All the general configuration can be found in the `config/config.yml` file +at the root of your Routr installation. + +## General Configuration Parameters + +| Property | Description | Required | +| --- | --- | --- | +| apiVersion | Indicates the version of the resource (Not yet implemented) | yes | +| metadata.userAgent| Sets sip header `User-Agent` to the desired value | No | +| spec.bindAddr | Default stack IP address | No | +| spec.externAddr | IP address to advertise | No | +| spec.localnets | Local networks. Use in combination with spec.externAddr | No | +| spec.recordRoute | Stay within the signaling path | No | +| spec.useToAsAOR | Use the TO header instead of Request URI | No | +| spec.registrarIntf | Force to use received & rport for registration| No | +| spec.addressInfo.[*] | Custom tag with the DID information | No | +| spec.accessControlList.deny.[*] | Deny incoming traffic from network list | No | +| spec.accessControlList.allow.[*] | Allow incoming traffic from network list | No | +| spec.restService.bindAddr | Restful service listening address | No | +| spec.restService.port | Restful service port. Defaults to 4567 | No | +| spec.restService.unsecured | Disabled https for restful calls. Default is `false` | No | +| spec.restService.keyStore | Path to keyStore | No | +| spec.restService.trueStore | Path to trueStore | No | +| spec.restService.keyStorePassword | Password for keyStore | No | +| spec.restService.trueStorePassword | Password for trueStore | No | +| spec.transport.bindAddr | Overwrites `spec.bindAddr` for transport entry | No | +| spec.transport.port | Transport port | Yes | +| spec.transport.protocol | Valid values are: `tcp`, `udp`, `tls`, `sctp`, `ws`, `wss` | Yes | +| spec.securityContext.keyStore | Path to keyStore | Yes | +| spec.securityContext.trustStore | Path to trueStore | Yes | +| spec.securityContext.keyStorePassword | Password for keyStore | Yes | +| spec.securityContext.keyStoreType | KeyStore type | Yes | +| spec.securityContext.client.authType | Type of client authentication. Default is `Disabled`. See https://goo.gl/1vKbXW for more options | No | +| spec.securityContext.client.protocols.[*] | Accepted tls protocols. Default is [`TLSv1.2`, `TLSv1.1`, `TLSv1`] | No | +| spec.securityContext.debugging | Turns ON or OFF ssl debugging. Default is `false` | No | +| spec.dataSource.provider | Defines data provider. Defaults to `files_data_provider` | No | +| spec.dataSource.parameters | Implementation specific parameters | No | +| spec.logging.traceLevel | Verbosity of the sip-stack logging. Default is `0` | No | + +## Transport Configuration + +Routr supports `tcp`, `udp`, `tls`, `sctp`, `ws`, and `wss` as transport protocols. + +The server requires of at least one transport protocol to be able to operate. +To bind a transport protocol to an specific IP address you can use the `spec.transport.bindAddr`, +otherwise the `spec.bindAddr` will be use. + +## Datasource Providers + +Routr currently implements three data providers: `redis_data_provider`, `files_data_provider` and `restful_data_provider`. The default data provider is the `files_data_provider`. + +> The docker distribution of the server uses `redis_data_provider` by default + +### Redis Data Provider + +The parameters for `redis_data_provider` are: + +| Parameter | Description | Required | +| --- | --- | --- | +| host | Redis host. Defaults to 'localhost' | No | +| port | Redis port. The default port is 6379 | No | +| secret | Password to access database | No | + +### Files Data Provider + +The parameters for `files_data_provider` are: + +| Parameter | Description | Required | +| --- | --- | --- | +| path | Path to configuration files. Defaults to 'config' folder | No | + +This implementation has the limitation that writes operations have to be performed manually on the files. + +### Restful Data Provider + +The parameters for `restful_data_provider` are: + +| Parameter | Description | Required | +| --- | --- | --- | +| baseUrl | Endpoint base url | yes | +| username | Basic authentication username | yes | +| secret | Basic authentication password | yes | + +## Configuring the server behind a NAT + + + +## Access Control List + +## Restful API + +## Logging + +## Example + +```yaml +apiVersion: v1beta1 +spec: + transport: + - protocol: tcp + port: 5060 + - protocol: udp + port: 5060 +``` diff --git a/docs/configuration/general/datasource.md b/docs/configuration/general/datasource.md deleted file mode 100644 index 6863c0981..000000000 --- a/docs/configuration/general/datasource.md +++ /dev/null @@ -1 +0,0 @@ -Coming soon! diff --git a/docs/configuration/general/logging.md b/docs/configuration/general/logging.md deleted file mode 100644 index 6863c0981..000000000 --- a/docs/configuration/general/logging.md +++ /dev/null @@ -1 +0,0 @@ -Coming soon! diff --git a/docs/configuration/general/restful-api.md b/docs/configuration/general/restful-api.md deleted file mode 100644 index 6863c0981..000000000 --- a/docs/configuration/general/restful-api.md +++ /dev/null @@ -1 +0,0 @@ -Coming soon! diff --git a/docs/configuration/general/signaling-security.md b/docs/configuration/general/signaling-security.md deleted file mode 100644 index 6863c0981..000000000 --- a/docs/configuration/general/signaling-security.md +++ /dev/null @@ -1 +0,0 @@ -Coming soon! diff --git a/docs/configuration/general/transport.md b/docs/configuration/general/transport.md deleted file mode 100644 index 6863c0981..000000000 --- a/docs/configuration/general/transport.md +++ /dev/null @@ -1 +0,0 @@ -Coming soon! diff --git a/docs/configuration/peers.md b/docs/configuration/peers.md index 6863c0981..87e5ed5d6 100644 --- a/docs/configuration/peers.md +++ b/docs/configuration/peers.md @@ -1 +1,31 @@ -Coming soon! +## Peer Resource + +> This file can be found at 'config/peers.yml' in the root of this project. + +| Property | Description | Required | +| --- | --- | --- | +| apiVersion | Indicates the version of the resource (Not yet implemented) | Yes | +| kind | Defines the type of resource | Yes | +| metadata.name | Friendly name for the SIP device | Yes | +| spec.credentials.username | Peer's credential username | Yes | +| spec.credentials.secret | Peer's credential secret | Yes | +| spec.device | When set it will be used by the location service | No | +| spec.contactAddr | When set will advertise this as the contactURI | No | + +**Example** + +```yaml +# Peers and Agents can register on Routr location service +- apiVersion: v1beta1 + kind: Peer + metadata: + name: Asterisk (Media Server) + spec: + credentials: + username: ast + secret: 'astsecret' + device: astserver # If is not define the IP address will be used + contactAddr: '192.168.1.2:6060' +``` + +This peer can be reached using `ast@astserver`. diff --git a/docs/configuration/users.md b/docs/configuration/users.md index e42a65fde..be4c688c7 100644 --- a/docs/configuration/users.md +++ b/docs/configuration/users.md @@ -1,3 +1,28 @@ +## User Resource + +> This file can be found at 'config/users.yml' in the root of this project. + +| Property | Description | Required | +| --- | --- | --- | +| apiVersion | Indicates the version of the resource (Not yet implemented)| Yes | +| kind | Defines the type of resource | Yes | +| metadata.name | Friendly name for the User device | Yes | +| spec.credentials.username | User's credential username | Yes | +| spec.credentials.secret | User's credential secret | Yes | + +**Example** + +```yaml +# Users exist in Routr to perform administrative actions on the server +- apiVersion: v1beta1 + kind: User + metadata: + name: Administrator + spec: + credentials: + username: admin + secret: changeit +``` ## 1. Changing the password? diff --git a/docs/index.md b/docs/index.md index b81279314..cdd165f47 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,3 +1,3 @@ # Welcome -Use the left-hand nav to find topics of interest. +Use the left-hand to navigate to find topics of interest. diff --git a/mkdocs.yml b/mkdocs.yml index 2148450d1..453b5c713 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -22,12 +22,7 @@ nav: - Glossary: introduction/glossary.md - Concepts: concepts.md - Configuration: - - General Configuration: - - Transport Settings: configuration/general/transport.md - - Signaling Security(TLS): configuration/general/signaling-security.md - - Restful API: configuration/general/restful-api.md - - Datasource Setting: configuration/general/datasource.md - - Logging: configuration/general/logging.md + - General Configuration: configuration/general.md - Users Configuration: configuration/users.md - Carriers(Gateways) Configuration: configuration/gateways.md - Virtual Numbers(DIDs) Configuration: configuration/dids.md @@ -40,9 +35,7 @@ nav: - Cheatsheet: administration/cli/cheatsheet.md - Remote Access to a Routr Server: administration/cli/remote-access.md - Web Console: administration/webconsole.md - - API: - - Reference: api/reference.md - - Resources: api/resources.md + - API Reference: api/reference.md - Guides: - Basic Setup: guides/basic-setup.md - Routr as Asterisk frontend: guides/routr-as-asterisk-frontend.md