zuplo 6.70.71 → 6.71.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/docs/analytics/access-and-entitlements.md +1 -1
  2. package/docs/analytics/overview.md +12 -8
  3. package/docs/analytics/reference/metrics-glossary.md +3 -3
  4. package/docs/analytics/shared-controls.md +12 -11
  5. package/docs/analytics/tabs/agents.md +14 -14
  6. package/docs/analytics/tabs/consumers.md +6 -6
  7. package/docs/analytics/tabs/graphql.md +5 -4
  8. package/docs/analytics/tabs/mcp.md +7 -7
  9. package/docs/analytics/tabs/origins.md +11 -10
  10. package/docs/analytics/tabs/requests.md +6 -5
  11. package/docs/articles/accounts/enterprise-sso.mdx +8 -6
  12. package/docs/articles/api-key-administration.mdx +4 -0
  13. package/docs/articles/bypass-policy-for-testing.mdx +4 -0
  14. package/docs/articles/environment-variables.mdx +5 -1
  15. package/docs/articles/environments.mdx +2 -2
  16. package/docs/articles/graphql.mdx +125 -74
  17. package/docs/articles/mcp-quickstart-local.mdx +2 -1
  18. package/docs/articles/mcp-quickstart.mdx +6 -1
  19. package/docs/articles/multiple-auth-policies.mdx +2 -2
  20. package/docs/articles/openapi.mdx +6 -1
  21. package/docs/articles/rename-or-move-project.mdx +4 -0
  22. package/docs/articles/securing-your-backend.mdx +11 -3
  23. package/docs/articles/source-control-setup-github.mdx +4 -0
  24. package/docs/articles/troubleshooting-slow-responses.mdx +2 -2
  25. package/docs/articles/troubleshooting.md +3 -3
  26. package/docs/dedicated/akamai/architecture.mdx +9 -9
  27. package/docs/dev-portal/zudoku/components/browser-window.mdx +94 -0
  28. package/docs/dev-portal/zudoku/components/landing-page.mdx +283 -0
  29. package/docs/handlers/system-handlers.mdx +2 -1
  30. package/docs/mcp-gateway/how-to/connect-upstream-api-key.mdx +2 -2
  31. package/docs/mcp-gateway/observability/analytics.mdx +17 -13
  32. package/docs/mcp-gateway/quickstart.mdx +4 -3
  33. package/docs/mcp-gateway/troubleshooting.mdx +4 -4
  34. package/docs/policies/_index.md +1 -0
  35. package/docs/policies/data-loss-prevention-inbound/doc.md +23 -24
  36. package/docs/policies/data-loss-prevention-inbound/intro.md +9 -9
  37. package/docs/policies/data-loss-prevention-outbound/doc.md +25 -26
  38. package/docs/policies/data-loss-prevention-outbound/intro.md +10 -10
  39. package/docs/policies/graphql-analytics-outbound/doc.md +93 -0
  40. package/docs/policies/graphql-analytics-outbound/intro.md +12 -0
  41. package/docs/policies/graphql-analytics-outbound/schema.json +93 -0
  42. package/docs/programmable-api/zuplo-context.mdx +3 -2
  43. package/package.json +4 -4
@@ -62,7 +62,7 @@ Remove the `demo` parameter from the URL to return to your real data.
62
62
  ## Scope: account vs project
63
63
 
64
64
  - **Account scope** aggregates across every project in the account. The Requests
65
- tab adds **Project Name** and **Deployment Name** as breakdowns; click a
65
+ section adds **Project Name** and **Deployment Name** as breakdowns; click a
66
66
  project name to drill into project scope.
67
67
  - **Project scope** filters to a single project and adds an **Environment**
68
68
  selector (Working Copy, Production, Preview, Other) in the top bar.
@@ -19,12 +19,15 @@ you're answering "is anyone actually using this endpoint?"
19
19
 
20
20
  ## How to access
21
21
 
22
- Open **Analytics** in the Zuplo portal sidebar. The page works at two scopes:
22
+ Analytics lives in the **Observability** tab of the Zuplo Portal, alongside
23
+ **Logs** and **Traces**. The page works at two scopes:
23
24
 
24
25
  - **Account scope**: aggregates across every project in your account. Open
25
- [Account Analytics](https://portal.zuplo.com/+/account/analytics).
26
- - **Project scope**: open a project, then click **Analytics**. Filters to one
27
- project and adds an **Environment** selector.
26
+ [**Observability Analytics**](https://portal.zuplo.com/+/account/observability/analytics)
27
+ at the account level.
28
+ - **Project scope**: open a project, click **Observability**, then select
29
+ **Analytics**. This view filters to one project and adds an **Environment**
30
+ selector.
28
31
 
29
32
  ## What's in this section
30
33
 
@@ -32,7 +35,7 @@ Open **Analytics** in the Zuplo portal sidebar. The page works at two scopes:
32
35
  demo mode, retention.
33
36
  - [Shared controls](./shared-controls.md): time range, filters, environment
34
37
  selector, banners, URL state.
35
- - Tabs:
38
+ - Sections:
36
39
  - [Requests](./tabs/requests.md): overall traffic, latency, errors.
37
40
  - [Origins](./tabs/origins.md): backend performance.
38
41
  - [Consumers](./tabs/consumers.md): per-consumer breakdowns.
@@ -46,11 +49,12 @@ Open **Analytics** in the Zuplo portal sidebar. The page works at two scopes:
46
49
  percentile defined once.
47
50
  - [URL parameters](./reference/url-parameters.md): permalink reference.
48
51
 
49
- ## Tab visibility
52
+ ## Section visibility
50
53
 
51
- You'll see a subset of tabs depending on your plan and project setup:
54
+ Analytics is split into sections, listed in a sidebar on the left of the page.
55
+ You'll see a subset of sections depending on your plan and project setup:
52
56
 
53
- | Tab | When it appears |
57
+ | Section | When it appears |
54
58
  | --------- | ---------------------------------------------------------- |
55
59
  | Requests | All accounts with advanced analytics enabled. |
56
60
  | Origins | The project uses managed-edge origins. |
@@ -4,7 +4,7 @@ sidebar_label: "Metrics Glossary"
4
4
  ---
5
5
 
6
6
  This page defines every term used in the Analytics dashboards once. KPI tables
7
- on tab pages link here for depth.
7
+ on section pages link here for depth.
8
8
 
9
9
  ## HTTP status classes
10
10
 
@@ -43,7 +43,7 @@ longer. P95 is the standard tail-latency metric.
43
43
  outlier behavior that P95 may smooth over.
44
44
 
45
45
  **Latency distribution histogram.** Bands at P10, P50, P90, P95, P99. Clicking a
46
- band on the Requests tab filters to requests in that duration range.
46
+ band in the Requests section filters to requests in that duration range.
47
47
 
48
48
  ## Active edge instances
49
49
 
@@ -81,7 +81,7 @@ MCP events use these outcome classes:
81
81
 
82
82
  ## GraphQL error classes
83
83
 
84
- The GraphQL tab groups errors by where they arise:
84
+ The GraphQL section groups errors by where they arise:
85
85
 
86
86
  | Class | Meaning |
87
87
  | ---------- | ---------------------------------------------------------------- |
@@ -3,19 +3,20 @@ title: "Shared Controls"
3
3
  sidebar_label: "Shared Controls"
4
4
  ---
5
5
 
6
- Every Analytics tab uses the same set of controls at the top of the page: a time
7
- range picker, a filter bar, and (at project scope) an environment selector.
6
+ Every Analytics section uses the same set of controls at the top of the page: a
7
+ time range picker, a filter bar, and (at project scope) an environment selector.
8
8
  State persists to the URL so you can share or bookmark any view.
9
9
 
10
10
  ## When to use this
11
11
 
12
- - Narrow a tab to a time window, environment, or set of filter values.
12
+ - Narrow a section to a time window, environment, or set of filter values.
13
13
  - Build a shareable link to a specific view.
14
14
  - Understand what each banner across the top of the page means.
15
15
 
16
16
  ## Time range
17
17
 
18
- The time range picker controls every chart, table, and KPI on the active tab.
18
+ The time range picker controls every chart, table, and KPI in the active
19
+ section.
19
20
 
20
21
  **Presets.** Last 1h, 6h, 24h, 3d, 7d, 14d, 28d, 60d, 90d.
21
22
 
@@ -28,7 +29,7 @@ for [preset]** tooltip. See
28
29
 
29
30
  ## Filters
30
31
 
31
- Filters render as removable pills in a sticky bar at the top of the tab. Add a
32
+ Filters render as removable pills in a sticky bar at the top of the page. Add a
32
33
  filter from any breakdown table by clicking a value, or build one manually.
33
34
 
34
35
  **Match modes.** Each filter uses one of:
@@ -46,9 +47,9 @@ filter from any breakdown table by clicking a value, or build one manually.
46
47
  **Clearing.** Remove a single pill with its **×**, or click **Clear all
47
48
  filters** to reset.
48
49
 
49
- **Disabled fields.** Some fields are grayed out on tabs where they don't apply.
50
- For example, `originHost` is unavailable on Requests, Consumers, and Agents;
51
- `userSub` is unavailable on Origins.
50
+ **Disabled fields.** Some fields are grayed out in sections where they don't
51
+ apply. For example, `originHost` is unavailable on Requests, Consumers, and
52
+ Agents; `userSub` is unavailable on Origins.
52
53
 
53
54
  ## Environment selector
54
55
 
@@ -103,9 +104,9 @@ Banners appear at the top of the page in this priority order:
103
104
 
104
105
  ## Loading and empty states
105
106
 
106
- Each tab uses a shape-aware skeleton while the first request is in flight. The
107
- product analytics tabs (MCP, GraphQL) suppress that skeleton briefly to avoid
108
- flashing when data is already cached. Empty states on those tabs include a short
107
+ Each section uses a shape-aware skeleton while the first request is in flight.
108
+ The product analytics sections (MCP, GraphQL) suppress that skeleton briefly to
109
+ avoid flashing when data is already cached. Empty states there include a short
109
110
  description and a "Read the … docs" link to the relevant product section.
110
111
 
111
112
  ## Status colors
@@ -3,9 +3,9 @@ title: "Agents"
3
3
  sidebar_label: "Agents"
4
4
  ---
5
5
 
6
- The **Agents** tab isolates AI agent traffic: requests classified as coming from
7
- ChatGPT, Claude.ai, Cursor, GPTBot, and similar clients. It's a focused view;
8
- browsers, webhooks, and generic SDK callers are excluded.
6
+ The **Agents** section isolates AI agent traffic: requests classified as coming
7
+ from ChatGPT, Claude.ai, Cursor, GPTBot, and similar clients. It's a focused
8
+ view; browsers, webhooks, and generic SDK callers are excluded.
9
9
 
10
10
  ## When to use this
11
11
 
@@ -27,7 +27,7 @@ browsers, webhooks, and generic SDK callers are excluded.
27
27
  ## Charts
28
28
 
29
29
  **Request Volume.** Stacked bars by status class. Granularity is always hourly
30
- on this tab.
30
+ in this section.
31
31
 
32
32
  **Agent Error Rates.** 4xx and 5xx over time. _What to look for:_ divergence
33
33
  between agents is the headline signal. If Cursor shows a 12% 4xx rate while
@@ -48,7 +48,7 @@ your endpoint.
48
48
  | 4xx sparkline | Inline trend over the window. |
49
49
  | 5xx sparkline | Inline trend over the window. |
50
50
 
51
- Searchable and sortable on any column. Click a row to filter the tab to that
51
+ Searchable and sortable on any column. Click a row to filter the section to that
52
52
  agent. **Show more** loads the next 50.
53
53
 
54
54
  ## Classified agents
@@ -57,12 +57,12 @@ The classifier currently recognizes: ChatGPT, Claude.ai, Cursor, Claude Code,
57
57
  GPTBot, Perplexity, Cline, Continue, OpenAI SDK, Anthropic SDK, Google AI,
58
58
  Common Crawl. The list expands over time.
59
59
 
60
- Unclassified traffic is excluded from the Agents tab.
60
+ The Agents section excludes unclassified traffic.
61
61
 
62
62
  :::warning
63
63
 
64
- Agent charts use a dedicated hourly rollup. Filtering other tabs by agent isn't
65
- supported. Use the Agents tab to drill into an individual agent.
64
+ Agent charts use a dedicated hourly rollup. Filtering other sections by agent
65
+ isn't supported. Use the Agents section to drill into an individual agent.
66
66
 
67
67
  :::
68
68
 
@@ -73,10 +73,10 @@ The filter bar applies. `originHost` is not applicable here. See
73
73
 
74
74
  ## Troubleshooting
75
75
 
76
- **The Agents tab is empty.** Either no classified agents called your gateway in
77
- the window, or your retention window doesn't yet include any agent traffic. Try
78
- the demo with **View demo →** in the trial banner to see what a populated tab
79
- looks like. See [Access and entitlements](../access-and-entitlements.md).
76
+ **The Agents section is empty.** Either no classified agents called your gateway
77
+ in the window, or your retention window doesn't yet include any agent traffic.
78
+ Try the demo with **View demo →** in the trial banner to see what a populated
79
+ view looks like. See [Access and entitlements](../access-and-entitlements.md).
80
80
 
81
81
  **I see a known agent in my logs but not here.** The classifier is conservative;
82
82
  it labels traffic that clearly matches a known agent fingerprint. Generic SDK
@@ -84,5 +84,5 @@ traffic that doesn't identify itself is excluded. If you believe an agent should
84
84
  be classified, send the User-Agent string to your Zuplo contact.
85
85
 
86
86
  **An agent shows zero requests but appears in the table.** Filters on the rest
87
- of the tab may be excluding its traffic for the current window. Clear filters to
88
- verify.
87
+ of the section may be excluding its traffic for the current window. Clear
88
+ filters to verify.
@@ -3,10 +3,10 @@ title: "Consumers"
3
3
  sidebar_label: "Consumers"
4
4
  ---
5
5
 
6
- The **Consumers** tab breaks traffic down by API consumer: anyone calling your
7
- gateway, whether authenticated or anonymous. Use it to see who your noisiest
8
- callers are, who's hitting errors, and which consumers experience the slowest
9
- latency.
6
+ The **Consumers** section breaks traffic down by API consumer: anyone calling
7
+ your gateway, whether authenticated or anonymous. Use it to see who your
8
+ noisiest callers are, who's hitting errors, and which consumers experience the
9
+ slowest latency.
10
10
 
11
11
  ## When to use this
12
12
 
@@ -48,12 +48,12 @@ looking at one consumer or all of them.
48
48
  | 5xx sparkline | Inline trend over the window. |
49
49
 
50
50
  The table is searchable and sortable on any column (default: requests
51
- descending). Clicking a row filters the entire tab to that consumer. **Show
51
+ descending). Clicking a row filters the entire section to that consumer. **Show
52
52
  more** loads the next 50.
53
53
 
54
54
  ## Filters
55
55
 
56
- The filter bar applies. `originHost` is not applicable on this tab. See
56
+ The filter bar applies. `originHost` doesn't apply in this section. See
57
57
  [Shared controls](../shared-controls.md#filters).
58
58
 
59
59
  ## Troubleshooting
@@ -3,7 +3,7 @@ title: "GraphQL"
3
3
  sidebar_label: "GraphQL"
4
4
  ---
5
5
 
6
- The **GraphQL** tab breaks traffic down by GraphQL operation: the queries,
6
+ The **GraphQL** section breaks traffic down by GraphQL operation: the queries,
7
7
  mutations, and subscriptions clients send through routes you've marked as
8
8
  GraphQL endpoints. Use it to find your most-used operations, separate validation
9
9
  and resolver errors, and see how much of each operation's latency falls in your
@@ -64,13 +64,14 @@ The filter bar applies. See [Shared controls](../shared-controls.md#filters).
64
64
 
65
65
  ## Troubleshooting
66
66
 
67
- **The GraphQL tab is empty.** No GraphQL operations arrived in the selected
67
+ **The GraphQL section is empty.** No GraphQL operations arrived in the selected
68
68
  window. Operations appear once a client sends a query, mutation, or subscription
69
69
  through a route you've marked as a GraphQL endpoint. See
70
70
  [GraphQL on Zuplo](../../articles/graphql.mdx) for how to mark a route.
71
71
 
72
- **The tab isn't visible.** Visibility requires at least one route you've marked
73
- as a GraphQL endpoint. See [GraphQL on Zuplo](../../articles/graphql.mdx).
72
+ **The section isn't visible.** Visibility requires at least one route you've
73
+ marked as a GraphQL endpoint. See
74
+ [GraphQL on Zuplo](../../articles/graphql.mdx).
74
75
 
75
76
  **Total latency is high but resolver latency is low.** The operation spends its
76
77
  time outside your resolvers. Check the gateway policies on the GraphQL route —
@@ -3,8 +3,8 @@ title: "MCP"
3
3
  sidebar_label: "MCP"
4
4
  ---
5
5
 
6
- The **MCP** tab shows Model Context Protocol traffic through Zuplo: OAuth and
7
- auth decisions, virtual-server routing, capability and tool invocations,
6
+ The **MCP** section shows Model Context Protocol traffic through Zuplo: OAuth
7
+ and auth decisions, virtual-server routing, capability and tool invocations,
8
8
  JSON-RPC method usage, and upstream MCP server health. It covers both traffic
9
9
  that flows _to_ an MCP fleet through Zuplo's gateway and activity _inside_ MCP
10
10
  servers you host on Zuplo. It's visible when the project type is **standard**
@@ -68,12 +68,12 @@ The filter bar applies. See [Shared controls](../shared-controls.md#filters).
68
68
 
69
69
  ## Troubleshooting
70
70
 
71
- **The MCP tab is empty.** No MCP events arrived in the selected window. Once a
72
- client connects and invokes a capability or tool, the dashboard populates.
71
+ **The MCP section is empty.** No MCP events arrived in the selected window. Once
72
+ a client connects and invokes a capability or tool, the dashboard populates.
73
73
 
74
- **The tab isn't visible.** Visibility requires project type **standard** with
75
- MCP in use — either an MCP gateway that routes to upstream servers, or an MCP
76
- server you host on Zuplo.
74
+ **The section isn't visible.** Visibility requires project type **standard**
75
+ with MCP in use — either an MCP gateway that routes to upstream servers, or an
76
+ MCP server you host on Zuplo.
77
77
 
78
78
  **Errors show but Failure Origins is empty.** Zuplo classifies failure origins
79
79
  server-side from event metadata. Events without a clear origin classification
@@ -3,9 +3,9 @@ title: "Origins"
3
3
  sidebar_label: "Origins"
4
4
  ---
5
5
 
6
- The **Origins** tab shows backend performance: how each upstream host you proxy
7
- to is performing in terms of volume, error rate, and latency. It's visible when
8
- the project uses managed-edge origins.
6
+ The **Origins** section shows backend performance: how each upstream host you
7
+ proxy to is performing in terms of volume, error rate, and latency. It's visible
8
+ when the project uses managed-edge origins.
9
9
 
10
10
  ## When to use this
11
11
 
@@ -65,18 +65,19 @@ The table is hidden when no tunnel traffic is present.
65
65
 
66
66
  ## Filters
67
67
 
68
- The filter bar applies, with one exception: `userSub` is not applicable on this
69
- tab. See [Shared controls](../shared-controls.md#filters).
68
+ The filter bar applies, with one exception: `userSub` doesn't apply in this
69
+ section. See [Shared controls](../shared-controls.md#filters).
70
70
 
71
71
  ## Troubleshooting
72
72
 
73
- **The Origins tab isn't visible.** It appears only when the project uses
74
- managed-edge origins. If your project routes traffic differently, the tab is
73
+ **The Origins section isn't visible.** It appears only when the project uses
74
+ managed-edge origins. If your project routes traffic differently, the section is
75
75
  hidden.
76
76
 
77
77
  **Service Tunnels table is missing.** That table only renders when at least one
78
78
  origin is reached over a service tunnel.
79
79
 
80
- **A 5xx spike on one origin doesn't match the Requests tab.** If you've filtered
81
- the Requests tab to a different route or status class, totals won't match. Clear
82
- filters or compare with the same filters applied on both tabs.
80
+ **A 5xx spike on one origin doesn't match the Requests section.** If you've
81
+ filtered the Requests section to a different route or status class, totals won't
82
+ match. Clear filters or apply the same filters in both sections before
83
+ comparing.
@@ -3,9 +3,9 @@ title: "Requests"
3
3
  sidebar_label: "Requests"
4
4
  ---
5
5
 
6
- The **Requests** tab is the default Analytics overview: every request through
7
- your gateway in the selected time window, with charts and breakdowns for volume,
8
- latency, and errors.
6
+ The **Requests** section is the default Analytics overview: every request
7
+ through your gateway in the selected time window, with charts and breakdowns for
8
+ volume, latency, and errors.
9
9
 
10
10
  ## When to use this
11
11
 
@@ -44,7 +44,8 @@ subset of requests.
44
44
  **Error Rate.** 4xx and 5xx rates plotted over time.
45
45
 
46
46
  **Latency Distribution.** A histogram of P10, P50, P90, P95, and P99 buckets.
47
- Click a band to filter the rest of the tab to requests in that duration range.
47
+ Click a band to filter the rest of the section to requests in that duration
48
+ range.
48
49
 
49
50
  **Active Instances.** Distinct active edge instances over time. A rough
50
51
  indicator of how widely your traffic is distributed across gateway workers.
@@ -76,7 +77,7 @@ Clicking any value applies an `equals` filter for that field.
76
77
 
77
78
  ## Filters
78
79
 
79
- The full filter bar applies. `originHost` is not applicable on this tab. See
80
+ The full filter bar applies. `originHost` doesn't apply in this section. See
80
81
  [Shared controls](../shared-controls.md#filters) for match modes and the filter
81
82
  pill UI.
82
83
 
@@ -8,8 +8,9 @@ using a third-party identity provider.
8
8
 
9
9
  <EnterpriseFeature name="Single Sign On" />
10
10
 
11
- Zuplo uses Auth0 to manage enterprise SSO, so we can support essentially any
12
- Identity Provider. Common options are Azure AD, Okta, Google Workspace, etc.
11
+ Zuplo uses Auth0 to manage enterprise SSO, so it can support essentially any
12
+ identity provider. Common options are Microsoft Entra ID, Okta, Google
13
+ Workspace, etc.
13
14
 
14
15
  ## Configuring your Identity Provider
15
16
 
@@ -85,14 +86,15 @@ role-based access control isn't enabled, new users will be added as an Admin.
85
86
 
86
87
  ### What SSO Providers does Zuplo Support?
87
88
 
88
- Zuplo uses Auth0 to manage enterprise SSO, so we can support essentially any SSO
89
- provider required. Common options are Azure AD, Okta, Google Workspace, etc.
89
+ Zuplo uses Auth0 to manage enterprise SSO, so it can support essentially any SSO
90
+ provider required. Common options are Microsoft Entra ID, Okta, Google
91
+ Workspace, etc.
90
92
 
91
93
  ### What happens when SSO is enabled for my organization?
92
94
 
93
95
  When SSO is enabled, you'll use your organization's identity provider (like Okta
94
- or Azure AD) to log into Zuplo. This provides enhanced security and streamlines
95
- access management for your team.
96
+ or Microsoft Entra ID) to log into Zuplo. This provides enhanced security and
97
+ streamlines access management for your team.
96
98
 
97
99
  If you previously had a Zuplo account with the same email address, your SSO
98
100
  login will be treated as the primary method going forward.
@@ -27,8 +27,12 @@ When you first open the API Key Bucket, you won't have any API Keys created.
27
27
  To add a new API Key Consumer click the **Create Consumer** button and complete
28
28
  the form.
29
29
 
30
+ <ModalScreenshot>
31
+
30
32
  ![New API Key Consumer](../../public/media/api-key-administration/image-4.png)
31
33
 
34
+ </ModalScreenshot>
35
+
32
36
  Once a consumer is created, you can view or copy the API Key by clicking the
33
37
  icons shown.
34
38
 
@@ -98,8 +98,12 @@ the API Key Bucket you want to use and click **Create Consumer**. Enter a name
98
98
  for the consumer. Set the metadata to include the `testApiKey` flag as shown
99
99
  below.
100
100
 
101
+ <ModalScreenshot>
102
+
101
103
  ![Test API Key](../../public/media/bypass-policy-for-testing/image.png)
102
104
 
105
+ </ModalScreenshot>
106
+
103
107
  Now when you call the API with the test API Key, the `monetization-inbound`
104
108
  policy will be bypassed.
105
109
 
@@ -29,10 +29,14 @@ code, see the
29
29
  To set environment variables in your project, click **Settings** and then select
30
30
  **Environment Variables**.
31
31
 
32
- To create a new variable, click **Add new variable**.
32
+ To create a new variable, click **Add variable**.
33
+
34
+ <ModalScreenshot>
33
35
 
34
36
  ![Adding a new environment variable](../../public/media/environment-variables/bec84962-0139-4371-b3fd-a30e70860169.png)
35
37
 
38
+ </ModalScreenshot>
39
+
36
40
  Enter the name and value of your environment variable and select if you would
37
41
  like the value to be a secret or a regular value.
38
42
 
@@ -120,8 +120,8 @@ portal.zuplo.com but you can switch into those environments to perform a number
120
120
  of functions, such as:
121
121
 
122
122
  - edit API consumers for this environment
123
- - view analytics for this environment
124
- - view Live Logs for this environment
123
+ - view logs, traces, and analytics for this environment in the **Observability**
124
+ tab
125
125
 
126
126
  ## Different Backends per Environment
127
127