@lukoweb/apitogo 0.2.46 → 0.2.49
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.
- package/dist/cli/cli.js +1176 -3106
- package/docs/cli/overview.md +91 -91
- package/docs/cli/shape.md +127 -127
- package/docs/cli/walkthrough.md +14 -25
- package/docs/configuration/make-config.mdx +97 -124
- package/docs/configuration/manifest.md +129 -128
- package/docs/configuration/navigation.mdx +415 -421
- package/docs/configuration/plans.md +154 -153
- package/docs/guides/custom-pages.md +111 -110
- package/package.json +1 -1
- package/src/config/v2/__fixtures__/scenario-a-docs-only.json +6 -6
- package/src/config/v2/__fixtures__/scenario-b-managed-origin.json +14 -14
- package/src/config/v2/__fixtures__/scenario-c-proxy-oidc.json +15 -15
- package/src/config/v2/__fixtures__/scenario-h-full-stack.json +28 -28
- package/src/config/v2/billing.ts +59 -0
- package/src/config/v2/docs-navigation.ts +72 -72
- package/src/config/v2/errors.ts +42 -42
- package/src/config/v2/gateway-reference.ts +220 -220
- package/src/config/v2/gateway-request.ts +123 -123
- package/src/config/v2/index.ts +7 -0
- package/src/config/v2/layout.ts +237 -237
- package/src/config/v2/load.ts +70 -70
- package/src/config/v2/parse.ts +214 -214
- package/src/config/v2/portal-profile.ts +88 -88
- package/src/config/v2/resolve.ts +6 -1
- package/src/config/v2/rules.ts +27 -15
- package/src/config/v2/services.ts +6 -21
|
@@ -1,124 +1,97 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Make config (CLI)
|
|
3
|
-
navigation_label: Make config
|
|
4
|
-
sidebar_icon: file-cog
|
|
5
|
-
description:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
The **`npx apitogo config`** command
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
##
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
Examples:
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
npx apitogo config
|
|
103
|
-
npx apitogo config --title "Books API"
|
|
104
|
-
npx apitogo config --theme '{"light":{"primary":"#111111"}}'
|
|
105
|
-
npx apitogo config --no-interactive
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
Theme and fonts are edited in `apitogo.config.json` or via MCP — not in the interactive wizard. See
|
|
109
|
-
[Colors & theme](../customization/colors-theme.mdx) and [Fonts](../customization/fonts.md).
|
|
110
|
-
|
|
111
|
-
There is **no `--modules` flag** for landing or user-panel toggles. Interactive mode **does** update
|
|
112
|
-
`modules.userPanel.plans` when you add plans.
|
|
113
|
-
|
|
114
|
-
## When not to use it
|
|
115
|
-
|
|
116
|
-
- You need a fully custom navigation order — skip `--force` or maintain navigation by hand.
|
|
117
|
-
- You want to change landing module home content — edit `landing/LandingPage.tsx`.
|
|
118
|
-
|
|
119
|
-
## See also
|
|
120
|
-
|
|
121
|
-
- [Manifest (`apitogo.config.json`)](./manifest.md)
|
|
122
|
-
- [Gateway plans](./plans.md)
|
|
123
|
-
- [Navigation](./navigation.md)
|
|
124
|
-
- [Shape with CLI](../cli/shape.md)
|
|
1
|
+
---
|
|
2
|
+
title: Make config (CLI)
|
|
3
|
+
navigation_label: Make config
|
|
4
|
+
sidebar_icon: file-cog
|
|
5
|
+
description:
|
|
6
|
+
Change a config version 2 project from the CLI: portal name, API code, OpenAPI files, docs pages
|
|
7
|
+
and plans.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
The **`npx apitogo config`** command changes a project made by `apitogo create` or `apitogo init`
|
|
11
|
+
(config version 2). It edits **`apitogo.config.json`**, writes docs pages under
|
|
12
|
+
**`apitogo/portal/pages/`**, and keeps plans in **`apitogo/plans.json`**.
|
|
13
|
+
|
|
14
|
+
Every change to `apitogo.config.json` is checked against the version 2 schema before it is written.
|
|
15
|
+
An invalid change is refused and the file stays as it was.
|
|
16
|
+
|
|
17
|
+
The command does not create a project. In a folder without `apitogo.config.json`, or with an old
|
|
18
|
+
version 1 config, it stops and points to `apitogo create`.
|
|
19
|
+
|
|
20
|
+
## What goes where
|
|
21
|
+
|
|
22
|
+
| You change | Where it is written |
|
|
23
|
+
| ------------------- | ---------------------------------------------------------------- |
|
|
24
|
+
| Portal display name | `portal.name` in `apitogo.config.json` |
|
|
25
|
+
| API code (backend) | `gateway.origin` (`mode: managed`, `source`, `runtime`, version) |
|
|
26
|
+
| OpenAPI file | `gateway.specs` in `apitogo.config.json` |
|
|
27
|
+
| Docs page | `apitogo/portal/pages/<slug>.mdx` (the config does not change) |
|
|
28
|
+
| Plan | `apitogo/plans.json` (or the file in `plans.file`) |
|
|
29
|
+
|
|
30
|
+
The portal builds its sidebar from the pages folder, so adding a page needs no navigation entry. A
|
|
31
|
+
page in `guides/quickstart.mdx` shows under a **Guides** section at `/guides/quickstart`.
|
|
32
|
+
|
|
33
|
+
Changing a gateway or plan needs that service in the project. Add it first with
|
|
34
|
+
`apitogo add gateway` or `apitogo add plans`.
|
|
35
|
+
|
|
36
|
+
## Interactive wizard
|
|
37
|
+
|
|
38
|
+
On a TTY, bare `npx apitogo config` opens the wizard. Each answer is applied at once. Type `done`
|
|
39
|
+
(the default) to finish.
|
|
40
|
+
|
|
41
|
+
- **`backend`**: folder of your API code, runtime (`nodejs` / `python` / `dotnet`) and version
|
|
42
|
+
- **`openapi`**: an OpenAPI file to add to `gateway.specs`
|
|
43
|
+
- **`page`**: page title and URL path; writes `apitogo/portal/pages/<slug>.mdx`
|
|
44
|
+
- **`plan`**: title, fixed or custom price, rate limit per minute, quota per 30 days; added to
|
|
45
|
+
`plans.json`
|
|
46
|
+
|
|
47
|
+
Payments go through Stripe. When you add a **paid** plan, `npx apitogo deploy` asks for your Stripe
|
|
48
|
+
secret key the first time (if the project has none yet). Free and contact-us plans need no key. Paid
|
|
49
|
+
plans also need Starter or Professional platform hosting.
|
|
50
|
+
|
|
51
|
+
## Options
|
|
52
|
+
|
|
53
|
+
| Option | Description |
|
|
54
|
+
| --------------------------- | --------------------------------------------------------------------- |
|
|
55
|
+
| `--interactive` / `-i` | Force the wizard (default on TTY). Use `--no-interactive` to skip it. |
|
|
56
|
+
| `--title <name>` | Set `portal.name` |
|
|
57
|
+
| `--source <dir>` | Folder of your API code (`gateway.origin.source`, mode `managed`) |
|
|
58
|
+
| `--runtime <name>` | Runtime of `--source`: `nodejs` (default), `python` or `dotnet` |
|
|
59
|
+
| `--runtime-version <v>` | Runtime version, for example `NODE_22_LTS` |
|
|
60
|
+
| `--openapi <file>` | Add an OpenAPI file to `gateway.specs` |
|
|
61
|
+
| `--page-slug <path>` | Add a page at `apitogo/portal/pages/<path>.mdx` |
|
|
62
|
+
| `--page-title <title>` | Title of the page (required when adding) |
|
|
63
|
+
| `--page-content <markdown>` | Markdown body of the page |
|
|
64
|
+
| `--page-update` | Change an existing page instead of adding one |
|
|
65
|
+
| `--plan <json>` | Add a plan to `plans.json`, or replace the plan with the same `sku` |
|
|
66
|
+
| `--patch <json>` | Deep-merge a JSON object into `apitogo.config.json` |
|
|
67
|
+
| `--json` | Print a JSON summary on stdout |
|
|
68
|
+
|
|
69
|
+
A plan uses the `plans.json` shape:
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"sku": "starter",
|
|
74
|
+
"displayName": "Starter",
|
|
75
|
+
"limits": {
|
|
76
|
+
"rateLimit": { "calls": 100, "periodSeconds": 60 },
|
|
77
|
+
"quota": { "calls": 50000, "periodDays": 30 }
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Examples:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
npx apitogo config
|
|
86
|
+
npx apitogo config --title "Books API"
|
|
87
|
+
npx apitogo config --page-slug guides/quickstart --page-title "Quickstart"
|
|
88
|
+
npx apitogo config --plan '{"sku":"free","displayName":"Free"}'
|
|
89
|
+
npx apitogo config --source server --runtime nodejs --runtime-version NODE_22_LTS
|
|
90
|
+
npx apitogo config --patch '{"portal":{"search":"none"}}'
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## See also
|
|
94
|
+
|
|
95
|
+
- [Manifest (`apitogo.config.json`)](./manifest.md)
|
|
96
|
+
- [Gateway plans](./plans.md)
|
|
97
|
+
- [Shape with CLI](../cli/shape.md)
|
|
@@ -1,128 +1,129 @@
|
|
|
1
|
-
# Site configuration (apitogo.config.json)
|
|
2
|
-
|
|
3
|
-
Dev portal sites use `apitogo.config.json` for site settings, plans, authentication, and backend
|
|
4
|
-
metadata, with optional `.env` overrides for secrets and local tweaks.
|
|
5
|
-
|
|
6
|
-
## Files
|
|
7
|
-
|
|
8
|
-
| File | Purpose |
|
|
9
|
-
| --------------------- | ----------------------------------------------------------- |
|
|
10
|
-
| `apitogo.config.json` | Committed defaults: site, modules, authentication, backend |
|
|
11
|
-
| `.env` | Public client vars + publish secrets via `APITOGO_CONFIG_*` |
|
|
12
|
-
|
|
13
|
-
## Canonical shape
|
|
14
|
-
|
|
15
|
-
```json
|
|
16
|
-
{
|
|
17
|
-
"site": {
|
|
18
|
-
"title": "My API",
|
|
19
|
-
"logo": {
|
|
20
|
-
"src": { "light": "/logo-light.png", "dark": "/logo-dark.png" },
|
|
21
|
-
"alt": "My API",
|
|
22
|
-
"width": "130px"
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
"authentication": {
|
|
26
|
-
"enabled": true,
|
|
27
|
-
"type": "dev-portal",
|
|
28
|
-
"apiBaseUrl": "https://your-dev-portal-api.example.com"
|
|
29
|
-
},
|
|
30
|
-
"gateway": {
|
|
31
|
-
"authMode": "bringYourOwnOidc",
|
|
32
|
-
"oidcMetadataUrl": "https://login.example.com/.well-known/openid-configuration",
|
|
33
|
-
"publicRoutes": ["/health"],
|
|
34
|
-
"cors": {
|
|
35
|
-
"allowedOrigins": ["https://myapp.example.com", "http://localhost:5173"]
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
"modules": {
|
|
39
|
-
"docs": { "files": "/pages/**/*.{md,mdx}" },
|
|
40
|
-
"landing": { "enabled": true, "path": "/", "layout": "landing" },
|
|
41
|
-
"userPanel": {
|
|
42
|
-
"enabled": true,
|
|
43
|
-
"dashboard": { "enabled": true },
|
|
44
|
-
"userManagement": { "enabled": true },
|
|
45
|
-
"plans": {
|
|
46
|
-
"enabled": true,
|
|
47
|
-
"items": [
|
|
48
|
-
{
|
|
49
|
-
"sku": "free",
|
|
50
|
-
"displayName": "Free",
|
|
51
|
-
"priceAmount": 0
|
|
52
|
-
}
|
|
53
|
-
]
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
"apis": [{ "type": "file", "input": "./apis/openapi.yaml", "path": "api" }]
|
|
58
|
-
}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
- **Site name / logo:** only `site.title` and `site.logo` (platform branding is derived at publish).
|
|
62
|
-
- **OpenAPI path:** `backend.openApiPath` is derived from `apis[0].input`.
|
|
63
|
-
- **Billing / account plans:** use `modules.userPanel.plans.enabled` and store the plan catalog in
|
|
64
|
-
`modules.userPanel.plans.items`.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
- **
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
|
88
|
-
|
|
|
89
|
-
|
|
|
90
|
-
|
|
|
91
|
-
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
- [
|
|
126
|
-
- [
|
|
127
|
-
- [
|
|
128
|
-
- [
|
|
1
|
+
# Site configuration (apitogo.config.json)
|
|
2
|
+
|
|
3
|
+
Dev portal sites use `apitogo.config.json` for site settings, plans, authentication, and backend
|
|
4
|
+
metadata, with optional `.env` overrides for secrets and local tweaks.
|
|
5
|
+
|
|
6
|
+
## Files
|
|
7
|
+
|
|
8
|
+
| File | Purpose |
|
|
9
|
+
| --------------------- | ----------------------------------------------------------- |
|
|
10
|
+
| `apitogo.config.json` | Committed defaults: site, modules, authentication, backend |
|
|
11
|
+
| `.env` | Public client vars + publish secrets via `APITOGO_CONFIG_*` |
|
|
12
|
+
|
|
13
|
+
## Canonical shape
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"site": {
|
|
18
|
+
"title": "My API",
|
|
19
|
+
"logo": {
|
|
20
|
+
"src": { "light": "/logo-light.png", "dark": "/logo-dark.png" },
|
|
21
|
+
"alt": "My API",
|
|
22
|
+
"width": "130px"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"authentication": {
|
|
26
|
+
"enabled": true,
|
|
27
|
+
"type": "dev-portal",
|
|
28
|
+
"apiBaseUrl": "https://your-dev-portal-api.example.com"
|
|
29
|
+
},
|
|
30
|
+
"gateway": {
|
|
31
|
+
"authMode": "bringYourOwnOidc",
|
|
32
|
+
"oidcMetadataUrl": "https://login.example.com/.well-known/openid-configuration",
|
|
33
|
+
"publicRoutes": ["/health"],
|
|
34
|
+
"cors": {
|
|
35
|
+
"allowedOrigins": ["https://myapp.example.com", "http://localhost:5173"]
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"modules": {
|
|
39
|
+
"docs": { "files": "/pages/**/*.{md,mdx}" },
|
|
40
|
+
"landing": { "enabled": true, "path": "/", "layout": "landing" },
|
|
41
|
+
"userPanel": {
|
|
42
|
+
"enabled": true,
|
|
43
|
+
"dashboard": { "enabled": true },
|
|
44
|
+
"userManagement": { "enabled": true },
|
|
45
|
+
"plans": {
|
|
46
|
+
"enabled": true,
|
|
47
|
+
"items": [
|
|
48
|
+
{
|
|
49
|
+
"sku": "free",
|
|
50
|
+
"displayName": "Free",
|
|
51
|
+
"priceAmount": 0
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"apis": [{ "type": "file", "input": "./apis/openapi.yaml", "path": "api" }]
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
- **Site name / logo:** only `site.title` and `site.logo` (platform branding is derived at publish).
|
|
62
|
+
- **OpenAPI path:** `backend.openApiPath` is derived from `apis[0].input`.
|
|
63
|
+
- **Billing / account plans:** use `modules.userPanel.plans.enabled` and store the plan catalog in
|
|
64
|
+
`modules.userPanel.plans.items`. Edit the manifest by hand. In a config version 2 project,
|
|
65
|
+
`npx apitogo config` writes plans to `apitogo/plans.json` instead. See
|
|
66
|
+
[Gateway plans](./plans.md). Legacy root `plans` is migrated on load.
|
|
67
|
+
- **Docs / API keys:** configure under `modules.docs` and `modules.userPanel.apiKeys` only.
|
|
68
|
+
- **Gateway:** top-level `gateway` (not under `authentication`). See [Gateway CORS](#gateway-cors)
|
|
69
|
+
and [Gateway plans](./plans.md).
|
|
70
|
+
|
|
71
|
+
## Gateway CORS
|
|
72
|
+
|
|
73
|
+
Browser calls from your developer portal (and any other SPA) to the API gateway are cross-origin.
|
|
74
|
+
APItoGo always allows the portal site origin. Add extra origins under `gateway.cors.allowedOrigins`
|
|
75
|
+
when tenant apps or local frontends call the gateway:
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"gateway": {
|
|
80
|
+
"cors": {
|
|
81
|
+
"allowedOrigins": ["https://myapp.example.com", "http://localhost:5173"]
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
| Rule | Detail |
|
|
88
|
+
| --------------- | ----------------------------------------------------------------------------------- |
|
|
89
|
+
| Portal origin | Always allowed by the platform (`https://{your-portal-host}`). Do not list it here. |
|
|
90
|
+
| Extra origins | Absolute `http://` or `https://` origins only — no path, query, or fragment. |
|
|
91
|
+
| Wildcard | `"*"` is allowed (replaces the list; credentials stay off). |
|
|
92
|
+
| Empty / omitted | Portal playground still works; only extras are missing. |
|
|
93
|
+
|
|
94
|
+
Apply with `npx apitogo deploy` / `publish_dev_portal` so APIM policies pick up the change.
|
|
95
|
+
|
|
96
|
+
## Environment variables
|
|
97
|
+
|
|
98
|
+
Public client URL (mirrors `authentication.apiBaseUrl`):
|
|
99
|
+
|
|
100
|
+
```sh
|
|
101
|
+
VITE_APITOGO_AUTHENTICATION_API_BASE_URL=https://your-dev-portal-api.example.com
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Nested config overrides (uppercase SCREAMING_SNAKE path segments; camelCase still accepted):
|
|
105
|
+
|
|
106
|
+
```sh
|
|
107
|
+
APITOGO_CONFIG_SITE__TITLE=My Local Site
|
|
108
|
+
APITOGO_CONFIG_PRICING__ENABLED=true
|
|
109
|
+
APITOGO_CONFIG_PROJECT_ID=your-local-project-id
|
|
110
|
+
APITOGO_CONFIG_AUTHENTICATION__API_BASE_URL=https://your-dev-portal-api.example.com
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Publish secrets (uncomment in `.env`, never commit):
|
|
114
|
+
|
|
115
|
+
```sh
|
|
116
|
+
APITOGO_CONFIG_AUTHENTICATION__OIDC__AUTHORITY=https://login.example.com
|
|
117
|
+
APITOGO_CONFIG_AUTHENTICATION__OIDC__CLIENT_ID=your-client-id
|
|
118
|
+
APITOGO_CONFIG_AUTHENTICATION__OIDC__CLIENT_SECRET=your-client-secret
|
|
119
|
+
APITOGO_CONFIG_AUTHENTICATION__STRIPE__SECRET_KEY=sk_test_...
|
|
120
|
+
APITOGO_CONFIG_AUTHENTICATION__STRIPE__WEBHOOK_SECRET=whsec_...
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Related
|
|
124
|
+
|
|
125
|
+
- [Gateway plans](./plans.md)
|
|
126
|
+
- [Authentication](./authentication.md)
|
|
127
|
+
- [Overview](./overview.md)
|
|
128
|
+
- [MCP overview](../mcp/overview.md)
|
|
129
|
+
- [Environment variables](../guides/environment-variables.md)
|