diff --git a/LICENSE b/LICENSE index aaeccb20..1f2b3527 100644 --- a/LICENSE +++ b/LICENSE @@ -176,7 +176,7 @@ END OF TERMS AND CONDITIONS - Copyright 2019 Working Group Two + Copyright 2024 Cisco Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/README.md b/README.md index bf3e709e..60979bfe 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ -# WGTwo API docs v0 +# API docs v0 -This is the project for WGTwo API docs v0, hosted at [v0.docs.wgtwo.com/](https://v0.docs.wgtwo.com/). -Prior to 2023-03-29 these docs were hosted on docs.wgtwo.com. -The actual docs.wgtwo.com code can be found in loltel/public-api-docs. +[v0.docs.wgtwo.com/](https://v0.docs.wgtwo.com/). ## Contributing Check out [CONTRIBUTING.md](CONTRIBUTING.md) and add your content to [docs/](docs/) diff --git a/docs/events-how-to.md b/docs/events-how-to.md index 43993b60..a2aac4ee 100644 --- a/docs/events-how-to.md +++ b/docs/events-how-to.md @@ -16,7 +16,7 @@ sourceExamples: ## Overview -The event API allows you to subscribe to a variety of different events generated by Working Group Two's systems. +The event API allows you to subscribe to a variety of different events generated by Cisco's systems. The examples will start a subscription to voice and voicemail events, which includes call initiated, call ended and new voicemail received. diff --git a/docs/metrics-how-to.md b/docs/metrics-how-to.md index 621e8c2f..2ef5db11 100644 --- a/docs/metrics-how-to.md +++ b/docs/metrics-how-to.md @@ -10,7 +10,7 @@ sourceExamples: # Accessing Metrics ## Overview -Working Group Two exposes metrics that can help operators getting some operational insight. This data is exposed using the [OpenMetrics text format](https://openmetrics.io/). +The platform exposes metrics that can help operators getting some operational insight. This data is exposed using the [OpenMetrics text format](https://openmetrics.io/). This text format is the same as exposed by Prometheus. In addition to being supported by Prometheus, many other systems has OpenMetrics integrations such as @@ -35,7 +35,7 @@ curl -s -u ${CLIENT_ID}:${CLIENT_SECRET} https://api.wgtwo.com/metrics/v1 ``` ## Get metrics, Prometheus -The below Prometheus config will scrape the metric endpoint from Working Group Two every 30 seconds, +The below Prometheus config will scrape the metric endpoint every 30 seconds, fetching all available time series. Note that the configuration will contain secrets. See: [prometheus.io › Configuration](https://prometheus.io/docs/prometheus/latest/configuration/configuration/) diff --git a/docs/oauth2-subscriber-deauthorization.md b/docs/oauth2-subscriber-deauthorization.md index f9b784ef..4b73d548 100644 --- a/docs/oauth2-subscriber-deauthorization.md +++ b/docs/oauth2-subscriber-deauthorization.md @@ -22,17 +22,17 @@ so that they can easily deauthorize an application. > A sequence diagram is included [here](#flow-chart). 1. The user MUST be able to prompt the third party application (app) to revoke all consents it has given to the app (i.e. clicking a button). -2. The app SHALL request a _revoke consent magic link_ from _Working Group Two ID_ (WGTWO ID), supplying a [random, non-guessable `state`](https://auth0.com/docs/protocols/state-parameters#csrf-attacks). -3. The app SHALL redirect the user to the given link, which opens a WGTWO ID webpage. +2. The app SHALL request a _revoke consent magic link_ from Cisco, supplying a [random, non-guessable `state`](https://auth0.com/docs/protocols/state-parameters#csrf-attacks). +3. The app SHALL redirect the user to the given link, which opens the ID webpage. 4. The user MAY confirm/cancel revoking consent (the user MAY also just close/leave the webpage). -5. The user is redirected back to the app, and the app MUST validate the state, and if valid MAY delete local user content (i.e. from a database) and wipe user sessions to reflect that the app no longer has access to the users' WGTWO data/APIs. +5. The user is redirected back to the app, and the app MUST validate the state, and if valid MAY delete local user content (i.e. from a database) and wipe user sessions to reflect that the app no longer has access to the users' data/APIs. ## Redirect The user will be redirected back to the given redirect URI after logout with the query parameter `state` with the given -state value. A query parameter for `error` will be included in case of errors or the user cancelling the flow. +state value. A query parameter for `error` will be included in case of errors or the user cancelling the flow. ## Generate a revoke consent magic link -This endpoint requires authentication by an OAuth2 access token issued to your client using the `client_credentials` grant. +This endpoint requires authentication by an OAuth2 access token issued to your client using the `client_credentials` grant. You also need to include a valid user access token. diff --git a/docs/subscriber-location-how-to.md b/docs/subscriber-location-how-to.md index 4be1debf..89ead0c7 100644 --- a/docs/subscriber-location-how-to.md +++ b/docs/subscriber-location-how-to.md @@ -31,7 +31,7 @@ The following `status` codes are defined: | `CODE_OK` | 1 | Indicates that the attachment was successful. | | `CODE_ABSENT_PROFILE` | 2 | Currently not used | | `CODE_ABSENT_SUBSCRIBER` | 3 | Currently not used | -| `CODE_UNKNOWN_PROFILE` | 4 | Indicates that the subscriber was not allowed to attach because it is not provisioned on the WGTWO platform. | +| `CODE_UNKNOWN_PROFILE` | 4 | Indicates that the subscriber was not allowed to attach because it is not provisioned on the platform. | | `CODE_BLOCKED_PROFILE` | 5 | Indicates that the subscriber was not allowed to attach because it is inactive/blocked | | `CODE_ROAMING_NOT_ALLOWED` | 6 | Indicates that the subscriber was not allowed to attach because it either was missing the roaming services or because the roaming profile of the subscriber did not allow the it to roam at that location. | diff --git a/examples/kotlin/operator/provision/src/main/kotlin/com/wgtwo/examples/operator/provision/DisableRoamingData.kt b/examples/kotlin/operator/provision/src/main/kotlin/com/wgtwo/examples/operator/provision/DisableRoamingData.kt index a9940548..a1a92a6d 100644 --- a/examples/kotlin/operator/provision/src/main/kotlin/com/wgtwo/examples/operator/provision/DisableRoamingData.kt +++ b/examples/kotlin/operator/provision/src/main/kotlin/com/wgtwo/examples/operator/provision/DisableRoamingData.kt @@ -13,7 +13,7 @@ private val subscriptionProfileApi = SubscriptionProfileApi(apiClient) fun main() { val request = UpdateSubscriptionRequest().apply { - bssid = "IDENTIFIER PROVIDED BY WORKING GROUP TWO" + bssid = "IDENTIFIER PROVIDED BY CISCO" msisdn = "47xxxxxxxx" services = UpdateSubscriptionRequestServices().apply { delete = listOf(NameEnum.ROAMING_DATA) diff --git a/examples/kotlin/operator/provision/src/main/kotlin/com/wgtwo/examples/operator/provision/EnableRoamingData.kt b/examples/kotlin/operator/provision/src/main/kotlin/com/wgtwo/examples/operator/provision/EnableRoamingData.kt index 4573499e..a8109fb3 100644 --- a/examples/kotlin/operator/provision/src/main/kotlin/com/wgtwo/examples/operator/provision/EnableRoamingData.kt +++ b/examples/kotlin/operator/provision/src/main/kotlin/com/wgtwo/examples/operator/provision/EnableRoamingData.kt @@ -13,7 +13,7 @@ private val subscriptionProfileApi = SubscriptionProfileApi(apiClient) fun main() { val request = UpdateSubscriptionRequest().apply { - bssid = "IDENTIFIER PROVIDED BY WORKING GROUP TWO" + bssid = "IDENTIFIER PROVIDED BY CISCO" msisdn = "47xxxxxxxx" services = UpdateSubscriptionRequestServices().apply { add = listOf( diff --git a/gridsome.config.js b/gridsome.config.js index a6628f5a..13b27748 100644 --- a/gridsome.config.js +++ b/gridsome.config.js @@ -1,4 +1,4 @@ -const nodeExternals = require('webpack-node-externals') +const nodeExternals = require("webpack-node-externals"); // This is where project configuration and plugin options are located. // Learn more: https://gridsome.org/docs/config @@ -7,19 +7,19 @@ const nodeExternals = require('webpack-node-externals') // To restart press CTRL + C in terminal and run `gridsome develop` module.exports = { - siteName: 'WGTWO API v0 docs', - siteUrl: 'https://v0.docs.wgtwo.com', - icon: './src/favicon.svg', + siteName: "WGTWO API v0 docs", + siteUrl: "https://v0.docs.wgtwo.com", + icon: "./src/favicon.png", chainWebpack(config, { isServer }) { - config.module.rules.delete('svg') - config.module.rule('svg') + config.module.rules.delete("svg"); + config.module.rule("svg") .test(/\.svg$/) - .use('vue') - .loader('vue-loader') + .use("vue") + .loader("vue-loader") .end() - .use('svg-to-vue-component') - .loader('svg-to-vue-component/loader') + .use("svg-to-vue-component") + .loader("svg-to-vue-component/loader"); if (isServer) { config.externals(nodeExternals({ @@ -30,7 +30,7 @@ module.exports = { /instantsearch.js/, /typeface-league-spartan/ ] - })) + })); } }, @@ -38,30 +38,30 @@ module.exports = { }, plugins: [ { - use: '@gridsome/vue-remark', + use: "@gridsome/vue-remark", options: { - baseDir: './docs', - typeName: 'DocPage', - template: './src/templates/DocPage.vue', - route: '/:topic/:title', // e.g. /voicemail/list-and-play-voicemails/ + baseDir: "./docs", + typeName: "DocPage", + template: "./src/templates/DocPage.vue", + route: "/:topic/:title", // e.g. /voicemail/list-and-play-voicemails/ plugins: [ [ - 'gridsome-remark-embed-snippet', + "gridsome-remark-embed-snippet", { directory: `${__dirname}/` } ], - '@gridsome/remark-prismjs', + "@gridsome/remark-prismjs", ], remark: { autolinkHeadings: { content: { - type: 'text', - value: '#' + type: "text", + value: "#" } } } } }, ], -} +}; diff --git a/package-lock.json b/package-lock.json index 228776f0..c509a06f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "@gridsome/source-filesystem": "^0.6.2", "@gridsome/transformer-remark": "^0.6.4", "@gridsome/vue-remark": "^0.2.4", - "axios": "^0.21.2", + "axios": "^1.6.0", "buefy": "^0.9.13", "node-sass": "^6.0.1", "sass-loader": "^10.1.1", @@ -3242,12 +3242,28 @@ "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" }, "node_modules/axios": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.2.tgz", - "integrity": "sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz", + "integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==", "dev": true, "dependencies": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, "node_modules/babel-loader": { @@ -7025,9 +7041,9 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-xml-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.4.tgz", - "integrity": "sha512-fbfMDvgBNIdDJLdLOwacjFAPYt67tr31H9ZhWSm45CDAxvd0I6WTlSOUo7K2P/K5sA5JgMKG64PI3DMcaFdWpQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", + "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", "funding": [ { "type": "paypal", @@ -7241,9 +7257,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", "dev": true, "funding": [ { @@ -13965,6 +13981,12 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -21051,12 +21073,27 @@ "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" }, "axios": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.2.tgz", - "integrity": "sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz", + "integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==", "dev": true, "requires": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } } }, "babel-loader": { @@ -24072,9 +24109,9 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-xml-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.4.tgz", - "integrity": "sha512-fbfMDvgBNIdDJLdLOwacjFAPYt67tr31H9ZhWSm45CDAxvd0I6WTlSOUo7K2P/K5sA5JgMKG64PI3DMcaFdWpQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", + "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", "requires": { "strnum": "^1.0.5" } @@ -24237,9 +24274,9 @@ } }, "follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", "dev": true }, "for-in": { @@ -29516,6 +29553,12 @@ "ipaddr.js": "1.9.1" } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", diff --git a/package.json b/package.json index 844d5873..54aaf05d 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "@gridsome/source-filesystem": "^0.6.2", "@gridsome/transformer-remark": "^0.6.4", "@gridsome/vue-remark": "^0.2.4", - "axios": "^0.21.2", + "axios": "^1.6.0", "buefy": "^0.9.13", "node-sass": "^6.0.1", "sass-loader": "^10.1.1", diff --git a/src/assets/images/logo-splash.svg b/src/assets/images/logo-splash.svg deleted file mode 100644 index da228aa8..00000000 --- a/src/assets/images/logo-splash.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/images/logo.svg b/src/assets/images/logo.svg index bd1a19c9..452bbf7f 100644 --- a/src/assets/images/logo.svg +++ b/src/assets/images/logo.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/src/assets/style/index.scss b/src/assets/style/index.scss index b368ae1b..53f13ea3 100644 --- a/src/assets/style/index.scss +++ b/src/assets/style/index.scss @@ -8,10 +8,14 @@ @import "~bulma/sass/utilities/functions"; @import "~bulma/sass/utilities/initial-variables.sass"; +* { + box-sizing: border-box; +} + // Set your colors -$primary: #283E96; -$secondary: #009DA5; -$role: $secondary; +$primary: #1D69CC; +$secondary: #596069; +$role: $primary; $role-invert: findColorInvert($role); $custom-colors: ( "role": ($role, $role-invert) @@ -34,7 +38,7 @@ $body-family: "Open Sans"; @import "scrollbar_fix"; // Fonts -@import url("https://fonts.googleapis.com/css2?family=Open+Sans&family=Oxanium&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Open+Sans&display=swap"); // Headings h1, .content h1, @@ -43,7 +47,7 @@ h3, .content h3, h4, .content h4, h5, .content h5 { color: rgba(0, 0, 0, 0.75); - font-family: "Oxanium", sans-serif; + font-family: sans-serif; } h1, .content h1 { @@ -84,4 +88,3 @@ pre[class*="language-"] { overflow-y: scroll; } } - diff --git a/src/components/GithubCode.vue b/src/components/GithubCode.vue index 9a8b65f1..260c21da 100644 --- a/src/components/GithubCode.vue +++ b/src/components/GithubCode.vue @@ -7,18 +7,13 @@ diff --git a/src/components/Header.vue b/src/components/Header.vue index 7a79ad73..2b878af3 100644 --- a/src/components/Header.vue +++ b/src/components/Header.vue @@ -1,8 +1,13 @@