From f8ed771fda80754ba3367c1e0bd90a0dd275ac06 Mon Sep 17 00:00:00 2001 From: Mateusz Kwasniewski Date: Thu, 6 Feb 2025 11:37:27 +0100 Subject: [PATCH] docs: identification headers (#9241) --------- Co-authored-by: Melinda Fekete --- website/docs/reference/sdks/index.mdx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/website/docs/reference/sdks/index.mdx b/website/docs/reference/sdks/index.mdx index 6bd271b67d6a..a0ea2e88b947 100644 --- a/website/docs/reference/sdks/index.mdx +++ b/website/docs/reference/sdks/index.mdx @@ -167,3 +167,14 @@ Bootstrapping is also supported by the following front-end client SDKs: - [React Proxy SDK](/docs/generated/sdks/client-side/react.md) - [Svelte Proxy SDK](/docs/generated/sdks/client-side/svelte.md) - [Vue Proxy SDK](/docs/generated/sdks/client-side/vue.md) + + +### SDK identification headers + +To identify which frontend and backend SDK instances are connected to Unleash, the following headers must be attached to all requests made by the SDK to the server (`/api/client` for backend SDKs and `/api/frontend` for frontend SDKs): + +- `unleash-connection-id`: A unique identifier for the current SDK instance, automatically generated using the idiomatic unique identifier generator for the specific programming ecosystem (for example, `randomUUID` from `crypto` in Node.js). This connection ID represents a long-lived connection between the SDK and the Unleash server. An SDK should generate a new connection ID each time an SDK instance is instantiated (for example, when calling `new Unleash()` in a Node SDK). The same connection ID should be used for each request when an SDK instance polls the API. Additionally, there is a legacy `unleash-instanceid` header that is not implemented by all SDKs and can be overwritten by the client, which is the main reason `unleash-connection-id` was introduced. +- `x-unleash-sdk`: Provides information about the language/framework and version of the SDK making the request. The format is the language/framework followed by a colon and the semantic version of the SDK (for example, `unleash-client-java@10.0.1` or `unleash-client-node@6.4.4`). Each SDK implementation should use a platform-idiomatic method to read the version from a package manager and update it with each version release. +- `unleash-appname` (optional): Specifies the name of your application that is communicating with Unleash. This name is user-defined with some SDKs providing a default fallback value. For example, `billing-service`. + +**Exceptions**: Backend SDKs used in short-lived request/response models (like Next.js server mode and PHP) should not provide the `unleash-connection-id` header.