From 0f60fd075a694a282ec56a5180cbaf4bc5426199 Mon Sep 17 00:00:00 2001 From: Alexis Degrugillier Date: Tue, 9 Mar 2021 15:44:45 -0500 Subject: [PATCH] chore: Fix documentation typos (#758) Co-authored-by: Alexis Degrugillier --- docs/activation-strategies.md | 4 ++-- docs/addons/addons.md | 2 +- docs/addons/slack.md | 8 ++++---- docs/addons/webhook.md | 2 +- docs/advanced/api_access.md | 6 +++--- docs/advanced/feature-toggle-types.md | 2 +- docs/advanced/strategy-constraints.md | 10 +++++----- docs/advanced/tags.md | 2 +- docs/api/admin/events-api.md | 2 +- docs/api/admin/feature-toggles-api.md | 6 +++--- docs/api/admin/feature-types-api.md | 2 +- docs/api/admin/metrics-api.md | 10 +++++----- docs/api/admin/state-api.md | 10 +++++----- docs/api/admin/strategies-api.md | 10 +++++----- docs/api/admin/tags-api.md | 2 +- docs/api/client/feature-toggles-api.md | 2 +- docs/api/internal/internal-backstage-api.md | 2 +- docs/api/open-api.md | 4 ++-- docs/client-specification.md | 4 ++-- docs/deploy/google-auth-hook.md | 2 +- docs/deploy/import-export.md | 4 ++-- docs/deploy/migration-guide.md | 2 +- docs/developer-guide.md | 2 +- docs/sdks/dot_net.md | 2 +- docs/sdks/java.md | 6 +++--- docs/sdks/node.md | 4 ++-- docs/unleash-context.md | 2 +- docs/user_guide/activation-strategies.md | 10 +++++----- docs/user_guide/connect-sdk.md | 2 +- docs/user_guide/control-rollout.md | 6 +++--- docs/user_guide/create-feature-toggle.md | 2 +- docs/user_guide/discover-unknown-toggles.md | 2 +- docs/user_guide/index.md | 4 ++-- docs/user_guide/native-apps.md | 4 ++-- docs/user_guide/unleash-context.md | 2 +- 35 files changed, 73 insertions(+), 73 deletions(-) diff --git a/docs/activation-strategies.md b/docs/activation-strategies.md index 9e4d3a431b..84073cc920 100644 --- a/docs/activation-strategies.md +++ b/docs/activation-strategies.md @@ -43,7 +43,7 @@ By enabling the stickiness option on a custom context field you can use it toget ## gradualRolloutUserId -The `gradualRolloutUserId` strategy gradually activates a feature toggle for logged in users. Stickiness is based on the user ID. The strategy guarantees that the same user gets the same experience every time across devices. It also assures that a user which is among the first 10% will also be among the first 20% of the users. That way, we ensure the users get the same experience, even if we gradually increase the number of users exposed to a particular feature. To achieve this, we hash the user ID and normalize the hash value to a number between 1 and 100 with a simple modulo operator. +The `gradualRolloutUserId` strategy gradually activates a feature toggle for logged-in users. Stickiness is based on the user ID. The strategy guarantees that the same user gets the same experience every time across devices. It also assures that a user which is among the first 10% will also be among the first 20% of the users. That way, we ensure the users get the same experience, even if we gradually increase the number of users exposed to a particular feature. To achieve this, we hash the user ID and normalize the hash value to a number between 1 and 100 with a simple modulo operator. ![hash_and_normalise](assets/hash_and_normalise.png) @@ -56,7 +56,7 @@ Starting from v3.x all clients should use the 32-bit [MurmurHash3](https://en.wi ## gradualRolloutSessionId -Similar to `gradualRolloutUserId` strategy, this strategy gradually activates a feature toggle, with the exception being that the stickiness is based on the session IDs. This makes it possible to target all users (not just logged in users), guaranteeing that a user will get the same experience within a session. +Similar to `gradualRolloutUserId` strategy, this strategy gradually activates a feature toggle, with the exception being that the stickiness is based on the session IDs. This makes it possible to target all users (not just logged-in users), guaranteeing that a user will get the same experience within a session. **Parameters** diff --git a/docs/addons/addons.md b/docs/addons/addons.md index c279133184..fc3a5dfff6 100644 --- a/docs/addons/addons.md +++ b/docs/addons/addons.md @@ -5,7 +5,7 @@ title: Addons Introduction > This feature was introduced in _Unleash v3.11.0_. -Unleash Addons allows you to extend Unleash with new functionality. Currently addons allow you to listen to changes in Unleash and trigger updates in other systems, typical via a WebHook. +Unleash Addons allows you to extend Unleash with new functionality. Currently, addons allow you to listen to changes in Unleash and trigger updates in other systems, typical via a WebHook. Currently Unleash support the following Addons out of the box: diff --git a/docs/addons/slack.md b/docs/addons/slack.md index 01975d7dae..ac59028e6f 100644 --- a/docs/addons/slack.md +++ b/docs/addons/slack.md @@ -27,13 +27,13 @@ You can choose to trigger updates for the following events (we might add more ev Unleash Slack addon takes the following parameters. - **Slack Webhook URL** - This is the only required property. If you are using a Slack Application you must also make sure your application is allowed to post to the channel you want to post to. -- **Username** - Used to override the username used to post the update to a slack channel. -- **Emoji Icon** - Used to override the emoji icon used to post the update to a slack channel. -- Default channel - Where to post the message if the feature toggles has not overriden the channel via the slack tags. +- **Username** - Used to override the username used to post the update to a Slack channel. +- **Emoji Icon** - Used to override the emoji icon used to post the update to a Slack channel. +- Default channel - Where to post the message if the feature toggles has not overridden the channel via the slack tags. #### Tags -The Slack addon also defined the Tag type "slack". You may use this tag to override which slack channel Unleash should post updates to for this feature toggle. +The Slack addon also defined the Tag type "slack". You may use this tag to override which Slack channel Unleash should post updates to for this feature toggle. ![Slack Tags](../assets/slack_addon_tags.png) diff --git a/docs/addons/webhook.md b/docs/addons/webhook.md index 4dc6bb7760..c2184b7da0 100644 --- a/docs/addons/webhook.md +++ b/docs/addons/webhook.md @@ -30,7 +30,7 @@ Unleash Webhook addon takes the following parameters. **Webhook URL** This is the only required property. If you are using a Slack Application you must also make sure your application is allowed to post the channel you want to post to. -**Content-Type** Used to set the content-type header used when unleash performs a HTTP POST to the defined endpoint. +**Content-Type** Used to set the content-type header used when unleash performs an HTTP POST to the defined endpoint. **Body template** Used to override the body template used by Unleash when performing the HTTP POST. You may format you message using a [Mustache template](https://mustache.github.io). You will have the [Unleash event format](/docs/api/admin/events) available in the rendering context. diff --git a/docs/advanced/api_access.md b/docs/advanced/api_access.md index 907e530660..d6100885f6 100644 --- a/docs/advanced/api_access.md +++ b/docs/advanced/api_access.md @@ -4,15 +4,15 @@ title: API Access --- > **Enterprise** -> This guide is only relevant if your are using Unleash-hosted. +> This guide is only relevant if you are using Unleash-hosted. It is possible to integrate directly with the Admin API. In this guide we will explain all the steps to set it up. ## Step 1: Create API token -You will need access tokens with admin privileges to be allowed to connect to the Admin Unleash-API. You can create these tokens in the “Instance Admin” as part of the “API secrets” section. +You will need access tokens with admin privileges to be allowed to connect to the Admin Unleash-API. You can create these tokens in the “Instance Admin” as part of the “API secrets” section. -Please note that it may take up to 60 seconds for the new key to propagate to all Unleash-hosted instances. +Please note that it may take up to 60 seconds for the new key to propagate to all Unleash-hosted instances. > If you need an API token to use in a client SDK you should create a "client token" as these have less access. diff --git a/docs/advanced/feature-toggle-types.md b/docs/advanced/feature-toggle-types.md index afdc7754fb..ed05b97141 100644 --- a/docs/advanced/feature-toggle-types.md +++ b/docs/advanced/feature-toggle-types.md @@ -14,7 +14,7 @@ Feature toggle types currently supported by Unleash: - **Release** - Used to enable trunk-based development for teams practicing Continuous Delivery. _Expected lifetime 40 days_ - **Experiment** - Used to perform multivariate or A/B testing. _Expected lifetime 40 days_ - **Operational** - Used to control operational aspects of the system's behavior. _Expected lifetime 7 days_ -- **Kill switch** - Used to to gracefully degrade system functionality. _(permanent)_ +- **Kill switch** - Used to gracefully degrade system functionality. _(permanent)_ - **Permission** - Used to change the features or product experience that certain users receive. _(permanent)_ ### Deprecate a feature toggle diff --git a/docs/advanced/strategy-constraints.md b/docs/advanced/strategy-constraints.md index d0c42e0e96..354db146b9 100644 --- a/docs/advanced/strategy-constraints.md +++ b/docs/advanced/strategy-constraints.md @@ -7,17 +7,17 @@ title: Strategy Constraints > > Strategy constraints is only available with the Unleash-hosted offering and is not part of Unleash Open-Source. -Strategy constraints allow you to set pre-conditions on activation strategies that needs to be satisfied for the activation strategies to take effect. +Strategy constraints allow you to set pre-conditions on activation strategies that needs to be satisfied for the activation strategies to take effect. ## Constrain on a specific environment -The most common use case for strategy constraints is that you want an activation strategy to only take effect in a specific environment. For example you could enable the feature for everyone in development, while you only expose the new feature to a few percentage of users in production. +The most common use case for strategy constraints is that you want an activation strategy to only take effect in a specific environment. For example, you could enable the feature for everyone in development, while you only expose the new feature to a few percent of users in production. ![Strategy constraints](../assets/strategy-constraints.png) ## Constrain on custom context fields -It is also possible to constrain a activation strategy configuration on custom context fields. A common use case is a multi-tenant service where you want to control roll-out on a tenant identifier. This allows you to decide which customer should get access to your new feature. +It is also possible to constrain an activation strategy configuration on custom context fields. A common use case is a multi-tenant service where you want to control roll-out on a tenant identifier. This allows you to decide which customer should get access to your new feature. ![Custom constraints](../assets/custom-constraints.png) @@ -32,7 +32,7 @@ You can also define your own custom context fields that you can use together wit - customerType - tenantId -Combining strategy constraints with the “flexibleRollout” allows you to do gradual roll-out to a specific segment of your user base. +Combining strategy constraints with the “flexibleRollout” allows you to do a gradual roll-out to a specific segment of your user base. ### Step 1: Navigate to “Context Fields“ Locate “context fields in the menu @@ -41,7 +41,7 @@ Locate “context fields in the menu ### Step 2: Define new context field -Next you can define your new context field. The minimum requirement is to give it a unique *name*. In addition you can give it a description and define the legal values. +Next you can define your new context field. The minimum requirement is to give it a unique *name*. In addition, you can give it a description and define the legal values. ![New context fields](../assets/new_context_field.png) diff --git a/docs/advanced/tags.md b/docs/advanced/tags.md index 0ab67372da..366e583e16 100644 --- a/docs/advanced/tags.md +++ b/docs/advanced/tags.md @@ -21,6 +21,6 @@ When adding a new tag, a dropdown will show you which type of tag you're about t Types can be anything, and their purpose is to add some semantics to the tag itself. -Some tag types will be defined by plugins (e.g. the slack plugin can define the slack-type, to make it easy to specify which slack channels to post updates for a specific feature toggle to). +Some tag types will be defined by plugins (e.g. the slack plugin can define the Slack-type, to make it easy to specify which Slack channels to post updates for a specific feature toggle to). Other tags can be defined by the user to give semantic logic to the management of the UI. It could be that you want to use tag functionality to specify which products a feature toggle belongs to, or to which teams. diff --git a/docs/api/admin/events-api.md b/docs/api/admin/events-api.md index 2f24d2af29..a18dc23fea 100644 --- a/docs/api/admin/events-api.md +++ b/docs/api/admin/events-api.md @@ -3,7 +3,7 @@ id: events title: /api/admin/events --- -> In order to access the admin api endpoints you need to identify yourself. If you are using the `unsecure` authententication method, you may use [basic authenticaion](https://en.wikipedia.org/wiki/Basic_access_authentication) to ientify yourself. +> In order to access the admin api endpoints you need to identify yourself. If you are using the `unsecure` authentication method, you may use [basic authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) to identify yourself. # Events API diff --git a/docs/api/admin/feature-toggles-api.md b/docs/api/admin/feature-toggles-api.md index de308597bc..c3a314831f 100644 --- a/docs/api/admin/feature-toggles-api.md +++ b/docs/api/admin/feature-toggles-api.md @@ -3,7 +3,7 @@ id: features title: /api/admin/features --- -> In order to access the admin api endpoints you need to identify yourself. If you are using the `unsecure` authententication method, you may use [basic authenticaion](https://en.wikipedia.org/wiki/Basic_access_authentication) to ientify yourself. +> In order to access the admin api endpoints you need to identify yourself. If you are using the `unsecure` authentication method, you may use [basic authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) to identify yourself. ### Fetching Feature Toggles @@ -146,7 +146,7 @@ Used by the admin-dashboard to create a new feature toggles. - _name_ **must be globally unique**, otherwise you will get a _403-response_. - _type_ is optional. If not defined it defaults to `release` -Returns 200-respose if the feature toggle was created successfully. +Returns 200-response if the feature toggle was created successfully. ### Update a Feature Toggle @@ -173,7 +173,7 @@ Returns 200-respose if the feature toggle was created successfully. Used by the admin dashboard to update a feature toggles. The name has to match an existing features toggle. -Returns 200-respose if the feature toggle was updated successfully. +Returns 200-response if the feature toggle was updated successfully. ### Tag a Feature Toggle diff --git a/docs/api/admin/feature-types-api.md b/docs/api/admin/feature-types-api.md index b200b44253..c4b61bc36e 100644 --- a/docs/api/admin/feature-types-api.md +++ b/docs/api/admin/feature-types-api.md @@ -3,7 +3,7 @@ id: feature-types title: /api/admin/feature-types --- -> In order to access the admin api endpoints you need to identify yourself. If you are using the `unsecure` authententication method, you may use [basic authenticaion](https://en.wikipedia.org/wiki/Basic_access_authentication) to ientify yourself. +> In order to access the admin api endpoints you need to identify yourself. If you are using the `unsecure` authentication method, you may use [basic authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) to identify yourself. # Feature Types API diff --git a/docs/api/admin/metrics-api.md b/docs/api/admin/metrics-api.md index 146dff1b1d..dc43f7e1a7 100644 --- a/docs/api/admin/metrics-api.md +++ b/docs/api/admin/metrics-api.md @@ -3,7 +3,7 @@ id: metrics title: /api/admin/metrics --- -> In order to access the admin api endpoints you need to identify yourself. If you are using the `unsecure` authententication method, you may use [basic authenticaion](https://en.wikipedia.org/wiki/Basic_access_authentication) to ientify yourself. +> In order to access the admin api endpoints you need to identify yourself. If you are using the `unsecure` authentication method, you may use [basic authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) to identify yourself. # This document describes the metrics endpoint for admin ui @@ -40,7 +40,7 @@ This enpoints returns a list of applications and what toogles unleash has seen f `GET http://unleash.host.com/api/admin/metrics/feature-toggles` -This endpoint gives _last minute_ and _last hour_ metrics for all active toggles. This is based on metrics reported by client applications. Yes is the number of times a given feature toggle was evaluated to enabled in a client applcation, and no is the number it avaluated to false. +This endpoint gives _last minute_ and _last hour_ metrics for all active toggles. This is based on metrics reported by client applications. Yes is the number of times a given feature toggle was evaluated to enabled in a client application, and no is the number it was evaluated to false. **Example response:** @@ -80,13 +80,13 @@ This endpoint gives _last minute_ and _last hour_ metrics for all active toggles **Fields:** - **lastHour** - Hour projection collected metrics for all feature toggles. -- **lastMinute** - Mintue projection collected metrics for all feature toggles. +- **lastMinute** - Minute projection collected metrics for all feature toggles. ### Applications `GET http://unleash.host.com/api/admin/applications` -This endpoint returns a list of known applications (seen the last two days) and a link to follow for more datails. +This endpoint returns a list of known applications (seen the last two days) and a link to follow for more details. ```json { @@ -121,7 +121,7 @@ You can also specify the query param: _strategyName_, which will return all appl `GET http://unleash.host.com/api/admin/applications/:appName` -This endpoint gives insight into details about a client applcation, such as instances, strategies implemented and seen toogles. +This endpoint gives insight into details about a client application, such as instances, strategies implemented and seen toggles. ```json { diff --git a/docs/api/admin/state-api.md b/docs/api/admin/state-api.md index 002acb8bf1..b8d77985dc 100644 --- a/docs/api/admin/state-api.md +++ b/docs/api/admin/state-api.md @@ -3,14 +3,14 @@ id: state title: /api/admin/state --- -> In order to access the admin api endpoints you need to identify yourself. If you are using the `unsecure` authententication method, you may use [basic authenticaion](https://en.wikipedia.org/wiki/Basic_access_authentication) to ientify yourself. +> In order to access the admin api endpoints you need to identify yourself. If you are using the `unsecure` authentication method, you may use [basic authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) to identify yourself. ### Export Feature Toggles & Strategies `GET: http://unleash.host.com/api/admin/state/export` The api endpoint `/api/admin/state/export` will export feature-toggles and strategies as json by default.\ -You can customize the export with queryparameters: +You can customize the export with query parameters: | Parameter | Default | Description | | --- | --- | --- | @@ -67,10 +67,10 @@ You can either send the data as JSON in the POST-body or send a `file` parameter **Query Paramters** -- **drop** - Use this paramter if you want the database to be cleaned before import (all strategies and features will be removed). -- **keep** - Use this query parameter if you want keep all exiting feature toggle (and strategy) configurations as is (no override), and only insert missing feature toggles from the data provided. +- **drop** - Use this parameter if you want the database to be cleaned before import (all strategies and features will be removed). +- **keep** - Use this query parameter if you want to keep all exiting feature toggle (and strategy) configurations as is (no override), and only insert missing feature toggles from the data provided. -> You should be careful useing the `drop` parameter in production environments. +> You should be careful using the `drop` parameter in production environments. Success: `202 Accepted`\ Error: `400 Bad Request` diff --git a/docs/api/admin/strategies-api.md b/docs/api/admin/strategies-api.md index cb5f24a116..742ff86e0e 100644 --- a/docs/api/admin/strategies-api.md +++ b/docs/api/admin/strategies-api.md @@ -3,13 +3,13 @@ id: strategies title: /api/admin/strategies --- -> In order to access the admin api endpoints you need to identify yourself. If you are using the `unsecure` authententication method, you may use [basic authenticaion](https://en.wikipedia.org/wiki/Basic_access_authentication) to ientify yourself. +> In order to access the admin api endpoints you need to identify yourself. If you are using the `unsecure` authentication method, you may use [basic authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) to identify yourself. ### Fetch Strategies `GET: http://unleash.host.com/api/admin/strategies` -Used to fetch all defined strategies and their defined paramters. +Used to fetch all defined strategies and their defined parameters. **Response** @@ -112,7 +112,7 @@ Used to create a new Strategy. Name is required and must be unique. It is also r }, ``` -Used to update a Strategy definition. Name can't be changed. **PS! I can be dangerous to change a implemnted strategy as the implementation also might need to be changed** +Used to update a Strategy definition. Name can't be changed. **PS! I can be dangerous to change an implemented strategy as the implementation also might need to be changed** ### Deprecate strategy @@ -128,8 +128,8 @@ _404 NOT FOUND_ - if `:name` does not exist `POST: https://unleash.host.com/api/admin/strategies/:name/reactivate` -Used to reactivate a deprecated strategy defintion. This will set the deprecated flag back to false. If the strategy is not deprecated this is a noop and will still return 200. +Used to reactivate a deprecated strategy definition. This will set the deprecated flag back to false. If the strategy is not deprecated this is a noop and will still return 200. #### Errors -_404 NOT FOUND_ - if if `:name` does not exist +_404 NOT FOUND_ - if `:name` does not exist diff --git a/docs/api/admin/tags-api.md b/docs/api/admin/tags-api.md index 8f151c1099..a9dc2e00e2 100644 --- a/docs/api/admin/tags-api.md +++ b/docs/api/admin/tags-api.md @@ -121,7 +121,7 @@ Used to fetch all types the server knows about. This endpoint is the one all adm `GET: https://unleash.host.com/api/admin/tag-types/simple` -Used to fetch details about a specific tag-type. This is mostly provded to make it easy to debug the API and should not be used by the client implementations. +Used to fetch details about a specific tag-type. This is mostly provided to make it easy to debug the API and should not be used by the client implementations. **Example response:** diff --git a/docs/api/client/feature-toggles-api.md b/docs/api/client/feature-toggles-api.md index bc99b8caaf..f37f0965ef 100644 --- a/docs/api/client/feature-toggles-api.md +++ b/docs/api/client/feature-toggles-api.md @@ -159,7 +159,7 @@ In the example `environment` needs to be `production` AND `userId` must be eithe - **values** - is a list of values (string). - **operator** - is the logical action to take on the values Supported operator are: - **IN** - constraint is satisfied if one of the values in the list matches the value for this context field in the context. - - **NOT_IN** - constrint is satisfied if NONE of the values is the list matches the value for this field in the context. + - **NOT_IN** - constraint is satisfied if NONE of the values is the list matches the value for this field in the context. ### Variants diff --git a/docs/api/internal/internal-backstage-api.md b/docs/api/internal/internal-backstage-api.md index b87208c4b8..d9041284e8 100644 --- a/docs/api/internal/internal-backstage-api.md +++ b/docs/api/internal/internal-backstage-api.md @@ -21,4 +21,4 @@ You can use this query in grafana to achieve this: delta(feature_toggle_update_total{toggle="Demo"}[1m]) != bool 0? ``` -Another useful counter is the `feature_toggle_usage_total` which will give you the numbers for how many time a feature toggle has been evaluated to `active` or not. +Another useful counter is the `feature_toggle_usage_total` which will give you the numbers for how many times a feature toggle has been evaluated to `active` or not. diff --git a/docs/api/open-api.md b/docs/api/open-api.md index 1083e8478d..015fe0fcdb 100644 --- a/docs/api/open-api.md +++ b/docs/api/open-api.md @@ -3,8 +3,8 @@ id: open_api title: Open API Specification --- -> The Unleash Open API Specifications are still considered a beta functionality. We have (for now) manually written all the specifications for all API endpoints. We are testing this functinality, and the ultimate goal will be to auto-generate these specifications from the code itself. +> The Unleash Open API Specifications are still considered a beta functionality. We have (for now) manually written all the specifications for all API endpoints. We are testing this functionality, and the ultimate goal will be to auto-generate these specifications from the code itself. -The Open API Specifcation is hosted as part of the online demo: http://unleash.herokuapp.com/oas/ +The Open API Specification is hosted as part of the online demo: http://unleash.herokuapp.com/oas/ You can also allow your own Unleash instance to serve the Open API specification by setting the `ENABLE_OAS` environment variable to true: `ENABLE_OAS=true` diff --git a/docs/client-specification.md b/docs/client-specification.md index 0bad7f84c4..4b6535e945 100644 --- a/docs/client-specification.md +++ b/docs/client-specification.md @@ -9,7 +9,7 @@ This document attempts to guide developers in implementing an Unleash Client SDK ## System Overview -Unleash is comprised of three parts: +Unleash is composed of three parts: - **Unleash API** - The service holding all feature toggles and their configurations. Configurations declare which activation strategies to use and which parameters they should get. - **Unleash UI** - The dashboard used to manage feature toggles, define new strategies, look at metrics, etc. @@ -98,7 +98,7 @@ Unleash also ships with a few built-in strategies, and expects client SDK's to i ### Extension points -Client implementation should also provide a defined interface to make it easier for the user to implement their own activation strategies, and register those in the unleash client. +Client implementation should also provide a defined interface to make it easier for the user to implement their own activation strategies, and register those in the Unleash client. ## Fetching feature toggles (polling) diff --git a/docs/deploy/google-auth-hook.md b/docs/deploy/google-auth-hook.md index 2a7004bfe8..a1f3f3e172 100644 --- a/docs/deploy/google-auth-hook.md +++ b/docs/deploy/google-auth-hook.md @@ -111,7 +111,7 @@ function googleAdminAuth(app) { } ``` -Implement a preRouter hook for `/api/admin/login`. It's neccesary for login with Google. +Implement a preRouter hook for `/api/admin/login`. It's necessary for login with Google. ```js function googleAdminAuth(app) { diff --git a/docs/deploy/import-export.md b/docs/deploy/import-export.md index c76826d3db..445bd7ddd1 100644 --- a/docs/deploy/import-export.md +++ b/docs/deploy/import-export.md @@ -32,12 +32,12 @@ await stateService.importFile({file: 'exported-data.yml', userName: 'import', dr If you want the database to be cleaned before import (all strategies and features will be removed), set the `dropBeforeImport` parameter. -It also possible to not override exiting feature toggles (and strategies) by using the `keepExisting` parameter. +It is also possible to not override exiting feature toggles (and strategies) by using the `keepExisting` parameter. ### API Export The api endpoint `/api/admin/state/export` will export feature-toggles and strategies as json by default.\ -You can customize the export with queryparameters: +You can customize the export with query parameters: | Parameter | Default | Description | | --- | --- | --- | diff --git a/docs/deploy/migration-guide.md b/docs/deploy/migration-guide.md index 3654123b2b..a631eceef2 100644 --- a/docs/deploy/migration-guide.md +++ b/docs/deploy/migration-guide.md @@ -15,7 +15,7 @@ After upgrading all your clients, you should consider turning off legacy routes, ## Upgrading from v1.0 to v2.0 -### Caveat 1: Not used db-migrate to migrate the unleash database? +### Caveat 1: Not used db-migrate to migrate the Unleash database? In FINN we used liquibase, for internal reasons, to migrate our database. Because unleash from version 2.0 migrates the database internally, with db-migrate, you need to make sure that all previous migrations for version 1 exist, so that Unleash does not try to create already existing tables. diff --git a/docs/developer-guide.md b/docs/developer-guide.md index ecf08c05b0..eb52d2503c 100644 --- a/docs/developer-guide.md +++ b/docs/developer-guide.md @@ -7,7 +7,7 @@ title: Developer guide To run and develop unleash, you need to have PostgreSQL database (PostgreSQL v10.x or newer) locally. -> Unleash currently also work with PostgreSQL v9.5+, but this might change in a future feature relase, and we have stopped runnig automatic integration tests below PostgreSQL v10. +> Unleash currently also work with PostgreSQL v9.5+, but this might change in a future feature release, and we have stopped running automatic integration tests below PostgreSQL v10. ### Create a local unleash databases in postgres diff --git a/docs/sdks/dot_net.md b/docs/sdks/dot_net.md index 57bda5d82b..0f1c46cfe4 100644 --- a/docs/sdks/dot_net.md +++ b/docs/sdks/dot_net.md @@ -84,4 +84,4 @@ unleash.IsEnabled("someToggle", context); b) Via a UnleashContextProvider -This is a bit more advanced approach, where you configure a unleash-context provider. By doing this you do not have rebuild or pass the unleash-context object to every place you are calling unleash.IsEnabled. You can read more, and get [examples about this option on GitHub](https://github.com/Unleash/unleash-client-dotnet#unleashcontextprovider). +This is a bit more advanced approach, where you configure an unleash-context provider. By doing this, you do not have to rebuild or to pass the unleash-context object to every place you are calling `unleash.IsEnabled`. You can read more, and get [examples about this option on GitHub](https://github.com/Unleash/unleash-client-dotnet#unleashcontextprovider). diff --git a/docs/sdks/java.md b/docs/sdks/java.md index 09735b4c4e..2fca401ddd 100644 --- a/docs/sdks/java.md +++ b/docs/sdks/java.md @@ -14,7 +14,7 @@ In this guide we explain how to use feature toggles in a Java application using >You can find this information in your “Instance admin” available in your Unleash management UI. -## Step 1: Install client SDK +## Step 1: Install the client SDK First we must add Unleash Client SDK as a dependency to your project. Below is an example of how you would add it to your pom.xml in Java: @@ -28,7 +28,7 @@ First we must add Unleash Client SDK as a dependency to your project. Below is a ## Step 2: Create a new Unleash Instance -Next must must initialize a new instance of the Unleash Client. +Next we must initialize a new instance of the Unleash Client. ```java UnleashConfig unleashConfig = UnleashConfig.builder() @@ -83,7 +83,7 @@ unleash.isEnabled("someToggle", context); **b) Via a UnleashContextProvider** -This is a bit more advanced approach, where you configure a unleash-context provider. By doing this you do not have rebuild or pass the unleash-context object to every place you are calling unleash.isEnabled. +This is a bit more advanced approach, where you configure a unleash-context provider. By doing this you do not have to rebuild or to pass the unleash-context object to every place you are calling `unleash.isEnabled`. The provider typically binds the context to the same thread as the request. If you are using Spring the UnleashContextProvider will typically be a ‘request scoped’ bean. diff --git a/docs/sdks/node.md b/docs/sdks/node.md index ee6881afb5..9a9d026927 100644 --- a/docs/sdks/node.md +++ b/docs/sdks/node.md @@ -13,7 +13,7 @@ In this guide we explain how to use feature toggles in a Node application using >- **API Secret** – Your API secret required to connect to your instance. >You can find this information in your “Instance admin” available in your Unleash management UI. -## Step 1: Install client SDK +## Step 1: Install the client SDK First we must install Node.js dependency: @@ -21,7 +21,7 @@ First we must install Node.js dependency: npm install unleash-client --save ``` -## Step 2: Initialize client SDK +## Step 2: Initialize the client SDK Next we must initialize the client SDK in the application: diff --git a/docs/unleash-context.md b/docs/unleash-context.md index fdaaae4aba..4d48709621 100644 --- a/docs/unleash-context.md +++ b/docs/unleash-context.md @@ -18,4 +18,4 @@ All fields are optional, but if they are not set you will not be able to use cer E.g., the `userWithId` strategy obviously depends on the `userId` field. -The `properties` field is more generic and can be used to provide more abritary data to strategies. Typical usage is to add more metadata. For instance, the `betaUser` strategy may read a field from `properties` to check whether the current user is a beta user. +The `properties` field is more generic and can be used to provide more arbitrary data to strategies. Typical usage is to add more metadata. For instance, the `betaUser` strategy may read a field from `properties` to check whether the current user is a beta user. diff --git a/docs/user_guide/activation-strategies.md b/docs/user_guide/activation-strategies.md index 61d8f8c926..dba7cbe6a1 100644 --- a/docs/user_guide/activation-strategies.md +++ b/docs/user_guide/activation-strategies.md @@ -15,7 +15,7 @@ It is the simplest activation strategy and basically means "active for everyone" ## userWithId -Active for users with a `userId` defined in the `userIds` list. Typically I want to enable a new feature only for myself in production before I enable it for everyone else. To achieve this, we can use the “UserWithIdStrategy”. This strategy allows you to specify a list of user IDs that you want to expose the new feature for. (A user id may, of course, be an email if that is more appropriate in your system.) +Active for users with a `userId` defined in the `userIds` list. Typically, I want to enable a new feature only for myself in production before I enable it for everyone else. To achieve this, we can use the “UserWithIdStrategy”. This strategy allows you to specify a list of user IDs that you want to expose the new feature for. (A user id may, of course, be an email if that is more appropriate in your system.) **Parameters** @@ -23,11 +23,11 @@ Active for users with a `userId` defined in the `userIds` list. Typically I want ## flexibleRollout -A flexible rollout strategy which combines all gradual rollout strategies in to a single strategy (and will in time replace them). This strategy have different options for how you want to handle the stickiness, and have sane default mode. +A flexible rollout strategy which combines all gradual rollout strategies in to a single strategy (and will in time replace them). This strategy has different options for how you want to handle the stickiness, and have sane default mode. **Parameters** -- **stickiness** is used to define how we guarantee consistency for gradual rollout. The same userId and the same rollout percentage should give predictable results. Configuration that should be supported: +- **stickiness** is used to define how we guarantee consistency for a gradual rollout. The same userId and the same rollout percentage should give predictable results. Configuration that should be supported: - **default** - Unleash chooses the first value present on the context in defined order userId, sessionId, random. - **userId** - guaranteed to be sticky on userId. If userId not present the behavior would be false - **sessionId** - guaranteed to be sticky on sessionId. If sessionId not present the behavior would be false. @@ -44,7 +44,7 @@ NB! this feature is currently only supported by the following SDKs: ## gradualRolloutUserId -The `gradualRolloutUserId` strategy gradually activates a feature toggle for logged in users. Stickiness is based on the user ID. The strategy guarantees that the same user gets the same experience every time across devices. It also assures that a user which is among the first 10% will also be among the first 20% of the users. That way, we ensure the users get the same experience, even if we gradually increase the number of users exposed to a particular feature. To achieve this, we hash the user ID and normalize the hash value to a number between 1 and 100 with a simple modulo operator. +The `gradualRolloutUserId` strategy gradually activates a feature toggle for logged-in users. Stickiness is based on the user ID. The strategy guarantees that the same user gets the same experience every time across devices. It also assures that a user which is among the first 10% will also be among the first 20% of the users. That way, we ensure the users get the same experience, even if we gradually increase the number of users exposed to a particular feature. To achieve this, we hash the user ID and normalize the hash value to a number between 1 and 100 with a simple modulo operator. ![hash_and_normalise](assets/hash_and_normalise.png) @@ -57,7 +57,7 @@ Starting from v3.x all clients should use the 32-bit [MurmurHash3](https://en.wi ## gradualRolloutSessionId -Similar to `gradualRolloutUserId` strategy, this strategy gradually activates a feature toggle, with the exception being that the stickiness is based on the session IDs. This makes it possible to target all users (not just logged in users), guaranteeing that a user will get the same experience within a session. +Similar to `gradualRolloutUserId` strategy, this strategy gradually activates a feature toggle, with the exception being that the stickiness is based on the session IDs. This makes it possible to target all users (not just logged-in users), guaranteeing that a user will get the same experience within a session. **Parameters** diff --git a/docs/user_guide/connect-sdk.md b/docs/user_guide/connect-sdk.md index 6250730d45..ab7279395f 100644 --- a/docs/user_guide/connect-sdk.md +++ b/docs/user_guide/connect-sdk.md @@ -3,7 +3,7 @@ id: connect_sdk title: Connect your SDK --- -In order to connect your application to Unleash you need to use a client SDK (software developer kit) for your programming language. The SDK will handle connecting to the unleash server instance and retrieve feature toggles based upon your configuration. Both open source and the unleash enterprise offering utilize the same set of client SDKs. +In order to connect your application to Unleash you need to use a client SDK (software developer kit) for your programming language. The SDK will handle connecting to the Unleash server instance and retrieve feature toggles based upon your configuration. Both open-source and the Unleash enterprise offering utilize the same set of client SDKs. If you are an Unleash customer, our hosted instances will always be a protected instance, you will therefore have to specify a client secret as the authorization header when you are connecting your client SDK, which you will receive from us when you sign up for one of our packages. In the open source version you must generate your own secret. diff --git a/docs/user_guide/control-rollout.md b/docs/user_guide/control-rollout.md index 56dfc2f0c5..59fc27485d 100644 --- a/docs/user_guide/control-rollout.md +++ b/docs/user_guide/control-rollout.md @@ -11,7 +11,7 @@ In this guide you will learn how to control the roll-out (expose it to real user Unleash comes with a few common activation strategies. Some of them require the client to provide the unleash-context, which gives the necessary context for Unleash. -The built in activation strategies: +The built-in activation strategies: - default - userWithId @@ -27,7 +27,7 @@ When you create a new feature toggle you will get the default activation strateg ## The userWithId strategy -When we have deployed some new code to production it would be nice to enable the new feature for ourselves before we enable it to everyone else. To achieve this in Unleash you can use the **userWithId** activation strategy. This strategy allows you to specify a list of user IDs that you want to expose the new feature for. +When we have deployed some new code to production it would be nice to enable the new feature for ourselves before we enable it to everyone else. To achieve this with Unleash, you can use the **userWithId** activation strategy. This strategy allows you to specify a list of user IDs that you want to expose the new feature for. A userId is how you identify users in your system (email, UUID, etc) and is provided as part of the Unleash Context to the client SDK. @@ -39,7 +39,7 @@ In order to increase the exposure of the feature which is protected with the fea ![Multiple activation strategy](../assets/multiple_activation_strategies.png) -In the example above we have configure two activation strategies, **userWithId** and **flexibleRollout**. If one of them evaluates to true the feature toggle is considered enabled. In the example we have enabled the feature toggle for usersWithId (*me@mail.com and another@mail.com*) in addition to 10% of the traffic. +In the example above we have to configure two activation strategies, **userWithId** and **flexibleRollout**. If one of them evaluates to true the feature toggle is considered enabled. In the example we have enabled the feature toggle for usersWithId (*me@mail.com and another@mail.com*) in addition to 10% of the traffic. ## Summary diff --git a/docs/user_guide/create-feature-toggle.md b/docs/user_guide/create-feature-toggle.md index 2c98201f8e..b0658b0a2b 100644 --- a/docs/user_guide/create-feature-toggle.md +++ b/docs/user_guide/create-feature-toggle.md @@ -32,7 +32,7 @@ The toggle is now created and ready to be used. The toggle does not have any met ## Step 4: Enable the feature toggle only for your boss! -The next step is to change the activation strategy to only target your boss. You can use the “userWithId”-strategy for that. Using the configuration shown below will only enable the feature toggle for “boss@company.com” and “me@company.com”. Thus you can safely test your feature in production, without exposing it to your users. In [control roll-out](./control_rollout) with strategies we will go in to greater details on how to use activation strategies to gradually expose new features to your users. +The next step is to change the activation strategy to only target your boss. You can use the “userWithId”-strategy for that. Using the configuration shown below will only enable the feature toggle for “boss@company.com” and “me@company.com”. Thus, you can safely test your feature in production, without exposing it to your users. In [control roll-out](./control_rollout) with strategies we will go in to greater details on how to use activation strategies to gradually expose new features to your users. ![Create a feature toggle](../assets/userWithId.png) diff --git a/docs/user_guide/discover-unknown-toggles.md b/docs/user_guide/discover-unknown-toggles.md index da675ace08..302d46caf1 100644 --- a/docs/user_guide/discover-unknown-toggles.md +++ b/docs/user_guide/discover-unknown-toggles.md @@ -3,4 +3,4 @@ id: discover_unkonwn_toggles title: Discover unknown toggles --- -Discover unkonwn toggles +Discover unknown toggles diff --git a/docs/user_guide/index.md b/docs/user_guide/index.md index 656cff7884..06e6b28d1a 100644 --- a/docs/user_guide/index.md +++ b/docs/user_guide/index.md @@ -21,7 +21,7 @@ Before you can connect your application to Unleash you need a Unleash server. Yo ## System Overview -Unleash is comprised of three parts: +Unleash is composed of three parts: - **Unleash API** - The service holding all feature toggles and their configurations. Configurations declare which activation strategies to use and which parameters they should get. - **Unleash UI** - The dashboard used to manage feature toggles, define new strategies, look at metrics, etc. @@ -29,4 +29,4 @@ Unleash is comprised of three parts: ![system_overview](https://raw.githubusercontent.com/Unleash/unleash/master/docs/assets/unleash-diagram.png 'System Overview') -To be super fast (*we talk nano-seconds*), the client SDK caches all feature toggles and their current configuration in memory. The activation strategies are also implemented in the SDK. This makes it really fast to check if a toggle is on or off because it is just a simple function operating on local state, without the need to poll data from the database. \ No newline at end of file +To be super fast (*we talk nano-seconds*), the client SDK caches all feature toggles and their current configuration in memory. The activation strategies are also implemented in the SDK. This makes it really fast to check if a toggle is on or off because it is just a simple function operating on local state, without the need to poll data from the database. diff --git a/docs/user_guide/native-apps.md b/docs/user_guide/native-apps.md index ff6a906ac7..d9a71e941a 100644 --- a/docs/user_guide/native-apps.md +++ b/docs/user_guide/native-apps.md @@ -5,7 +5,7 @@ title: Working with native apps > **Enterprise feature** > -> Working with native apps, require the unleash proxy. The Unleash Proxy is only available with the Unleash-hosted offering and is not part of Unleash Open-Source. +> Working with native apps, require the Unleash proxy. The Unleash Proxy is only available with the Unleash-hosted offering and is not part of Unleash Open-Source. For a highlevel introduction to the Unleash-proxy, please read this short article [The Unleash-Proxy](https://www.unleash-hosted.com/articles/the-unleash-proxy) @@ -15,7 +15,7 @@ The Unleash-proxy consist of the proxy that exposes a simple API for the client. ## The Proxy-client -There is a js implentation of the proxy-client available. +There is a js implementation of the proxy-client available. Find it here: [https://github.com/unleash-hosted/unleash-proxy-client-js](https://github.com/unleash-hosted/unleash-proxy-client-js) ## The Proxy-API diff --git a/docs/user_guide/unleash-context.md b/docs/user_guide/unleash-context.md index fdaaae4aba..4d48709621 100644 --- a/docs/user_guide/unleash-context.md +++ b/docs/user_guide/unleash-context.md @@ -18,4 +18,4 @@ All fields are optional, but if they are not set you will not be able to use cer E.g., the `userWithId` strategy obviously depends on the `userId` field. -The `properties` field is more generic and can be used to provide more abritary data to strategies. Typical usage is to add more metadata. For instance, the `betaUser` strategy may read a field from `properties` to check whether the current user is a beta user. +The `properties` field is more generic and can be used to provide more arbitrary data to strategies. Typical usage is to add more metadata. For instance, the `betaUser` strategy may read a field from `properties` to check whether the current user is a beta user.