@lukoweb/apitogo 0.1.120 → 0.1.126
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/LICENSE.md +18 -0
- package/dist/cli/cli.js +733 -396
- package/dist/declarations/config/local-manifest.d.ts +1 -1
- package/dist/declarations/lib/authentication/auth-header-nav.d.ts +5 -1
- package/dist/declarations/lib/authentication/hook.d.ts +25 -3
- package/dist/declarations/lib/authentication/state.d.ts +39 -3
- package/dist/declarations/lib/plugins/openapi/processors/injectApitogoGatewayServer.d.ts +1 -1
- package/docs/cli/go-live.md +21 -20
- package/docs/components/slot.mdx +2 -2
- package/docs/components.mdx +34 -34
- package/docs/concepts/auth-provider-api-identities.md +2 -2
- package/docs/configuration/authentication.md +16 -14
- package/docs/configuration/build-configuration.mdx +2 -2
- package/docs/configuration/make-config.mdx +5 -5
- package/docs/configuration/manifest.md +8 -14
- package/docs/configuration/navigation.mdx +4 -4
- package/docs/configuration/overview.md +6 -7
- package/docs/configuration/plans.md +19 -16
- package/docs/deploy/vercel.md +3 -4
- package/docs/deployment.md +5 -4
- package/docs/guides/custom-pages.md +2 -2
- package/docs/guides/environment-variables.md +19 -17
- package/docs/guides/managing-api-keys-and-identities.md +10 -18
- package/docs/mcp/go-live.md +12 -12
- package/docs/mcp/overview.md +10 -10
- package/docs/mcp/setup.md +9 -9
- package/docs/mcp/shape.md +4 -3
- package/docs/mcp/tools.md +61 -61
- package/docs/plugins.md +2 -2
- package/docs/quickstart.md +5 -6
- package/package.json +10 -155
- package/src/config/apitogo-config-core.ts +5 -1
- package/src/config/gateway-limits.ts +7 -2
- package/src/config/loader.ts +5 -7
- package/src/config/local-manifest.ts +7 -7
- package/src/config/resolve-modules.ts +5 -7
- package/src/lib/authentication/auth-header-nav.ts +3 -3
- package/src/lib/authentication/providers/dev-portal-auth-pages.tsx +2 -5
- package/src/lib/authentication/state.ts +1 -1
- package/src/lib/components/Layout.tsx +1 -4
- package/src/lib/components/SiteTitle.tsx +3 -1
- package/src/lib/plugins/openapi/processors/injectApitogoGatewayServer.ts +9 -3
- package/src/vite/config.ts +0 -21
- package/src/vite/plugin-api.ts +1 -1
- package/src/vite/plugin-modules.ts +1 -2
- package/src/vite/plugin-offroot-resolve.ts +2 -6
|
@@ -8,20 +8,22 @@ APIToGo uses Vite’s [env and mode](https://vite.dev/guide/env-and-mode) model,
|
|
|
8
8
|
|
|
9
9
|
## Portal / publish (`.env`)
|
|
10
10
|
|
|
11
|
-
| Variable
|
|
12
|
-
|
|
|
13
|
-
| `VITE_APITOGO_AUTHENTICATION_API_BASE_URL`
|
|
14
|
-
| `APITOGO_CONFIG_AUTHENTICATION__API_BASE_URL` | Same, via config override
|
|
15
|
-
| `APITOGO_CONFIG_AUTHENTICATION__OIDC__*`
|
|
16
|
-
| `APITOGO_CONFIG_AUTHENTICATION__STRIPE__*`
|
|
17
|
-
| `APITOGO_CONFIG_DEMO_MODE`
|
|
18
|
-
| `APITOGO_CONFIG_SITE__TITLE`
|
|
19
|
-
| `APITOGO_CONFIG_PROJECT_ID`
|
|
20
|
-
|
|
21
|
-
Nested overrides use `__` path segments (SCREAMING_SNAKE). See
|
|
11
|
+
| Variable | Purpose |
|
|
12
|
+
| --------------------------------------------- | ----------------------------------------------- |
|
|
13
|
+
| `VITE_APITOGO_AUTHENTICATION_API_BASE_URL` | Dev-portal API base URL (client) |
|
|
14
|
+
| `APITOGO_CONFIG_AUTHENTICATION__API_BASE_URL` | Same, via config override |
|
|
15
|
+
| `APITOGO_CONFIG_AUTHENTICATION__OIDC__*` | OIDC authority / client id / secret for publish |
|
|
16
|
+
| `APITOGO_CONFIG_AUTHENTICATION__STRIPE__*` | Stripe secret + webhook (paid plans) |
|
|
17
|
+
| `APITOGO_CONFIG_DEMO_MODE` | `false` to disable local demo sign-in |
|
|
18
|
+
| `APITOGO_CONFIG_SITE__TITLE` | Override `site.title` |
|
|
19
|
+
| `APITOGO_CONFIG_PROJECT_ID` | Local project id override |
|
|
20
|
+
|
|
21
|
+
Nested overrides use `__` path segments (SCREAMING_SNAKE). See
|
|
22
|
+
[Manifest](../configuration/manifest.md).
|
|
22
23
|
|
|
23
24
|
**Never commit** OIDC client secrets or Stripe keys. MCP never puts secrets in chat — you write them
|
|
24
|
-
to `.env` before [go-live](../mcp/go-live.md) or `npx apitogo deploy`
|
|
25
|
+
to `.env` before [go-live](../mcp/go-live.md) or `npx apitogo deploy`
|
|
26
|
+
([CLI go-live](../cli/go-live.md)).
|
|
25
27
|
|
|
26
28
|
Example:
|
|
27
29
|
|
|
@@ -83,10 +85,10 @@ interface ImportMeta {
|
|
|
83
85
|
|
|
84
86
|
## MCP host (agent machine)
|
|
85
87
|
|
|
86
|
-
| Variable
|
|
87
|
-
|
|
|
88
|
-
| `APITOGO_API_KEY_ID` / `APITOGO_API_SECRET` | Required for MCP and CLI deploy/status/teardown
|
|
89
|
-
| `APITOGO_DOC_TOOL_PATH`
|
|
90
|
-
| `APITOGO_CLI_PATH`
|
|
88
|
+
| Variable | Purpose |
|
|
89
|
+
| ------------------------------------------- | ------------------------------------------------------------------- |
|
|
90
|
+
| `APITOGO_API_KEY_ID` / `APITOGO_API_SECRET` | Required for MCP and CLI deploy/status/teardown |
|
|
91
|
+
| `APITOGO_DOC_TOOL_PATH` | Optional local doc-tool for scaffold |
|
|
92
|
+
| `APITOGO_CLI_PATH` | Optional local `@lukoweb/apitogo` / doc-tool checkout for MCP spawn |
|
|
91
93
|
|
|
92
94
|
See [MCP overview](../mcp/overview.md) and [CLI overview](../cli/overview.md).
|
|
@@ -21,16 +21,15 @@ For developer portals, enable API keys under **`modules.userPanel.apiKeys`** in
|
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
With MCP, prefer `update_dev_portal_manifest`. Subscription / gateway keys for provisioned portals
|
|
24
|
-
are issued by the APItoGo platform after sign-in; see
|
|
25
|
-
and [MCP go-live](../mcp/go-live.md).
|
|
24
|
+
are issued by the APItoGo platform after sign-in; see
|
|
25
|
+
[Authentication](../configuration/authentication.md) and [MCP go-live](../mcp/go-live.md).
|
|
26
26
|
|
|
27
|
-
Legacy root `apiKeys: { enabled: true }` is still migrated on load into
|
|
28
|
-
`modules.userPanel.apiKeys`.
|
|
27
|
+
Legacy root `apiKeys: { enabled: true }` is still migrated on load into `modules.userPanel.apiKeys`.
|
|
29
28
|
|
|
30
29
|
## Custom API key UI plugin
|
|
31
30
|
|
|
32
|
-
APIToGo includes a UI plugin for managing API consumers and keys (create, view, update, delete).
|
|
33
|
-
|
|
31
|
+
APIToGo includes a UI plugin for managing API consumers and keys (create, view, update, delete). You
|
|
32
|
+
can point it at any backend by implementing callbacks / `ApiKeyService`.
|
|
34
33
|
|
|
35
34
|
Enable and customize from TSX when you need custom create/list logic:
|
|
36
35
|
|
|
@@ -39,13 +38,10 @@ const config = {
|
|
|
39
38
|
apiKeys: {
|
|
40
39
|
enabled: true,
|
|
41
40
|
createKey: async ({ apiKey, context, auth }) => {
|
|
42
|
-
const createApiKeyRequest = new Request(
|
|
43
|
-
"
|
|
44
|
-
{
|
|
45
|
-
|
|
46
|
-
body: JSON.stringify({ apiKey }),
|
|
47
|
-
},
|
|
48
|
-
);
|
|
41
|
+
const createApiKeyRequest = new Request("https://api.example.com/v1/developer/api-key", {
|
|
42
|
+
method: "POST",
|
|
43
|
+
body: JSON.stringify({ apiKey }),
|
|
44
|
+
});
|
|
49
45
|
const signedRequest = await context.signRequest(createApiKeyRequest);
|
|
50
46
|
const response = await fetch(signedRequest);
|
|
51
47
|
if (!response.ok) {
|
|
@@ -66,11 +62,7 @@ enabled.
|
|
|
66
62
|
interface ApiKeyService {
|
|
67
63
|
getConsumers: (context: ApitogoContext) => Promise<ApiConsumer[]>;
|
|
68
64
|
rollKey?: (consumerId: string, context: ApitogoContext) => Promise<void>;
|
|
69
|
-
deleteKey?: (
|
|
70
|
-
consumerId: string,
|
|
71
|
-
keyId: string,
|
|
72
|
-
context: ApitogoContext,
|
|
73
|
-
) => Promise<void>;
|
|
65
|
+
deleteKey?: (consumerId: string, keyId: string, context: ApitogoContext) => Promise<void>;
|
|
74
66
|
updateConsumer?: (
|
|
75
67
|
consumer: { id: string; label?: string },
|
|
76
68
|
context: ApitogoContext,
|
package/docs/mcp/go-live.md
CHANGED
|
@@ -24,8 +24,8 @@ gateway plans, and verifies the live site.
|
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
3. Choose a **platform hosting** plan: **Free**, **Starter**, or **Professional**. Agents should
|
|
27
|
-
call `list_platform_plans` / explain `freeProjectsQuota` before you pick. Starter and
|
|
28
|
-
use Stripe checkout (`checkoutUrl`).
|
|
27
|
+
call `list_platform_plans` / explain `freeProjectsQuota` before you pick. Starter and
|
|
28
|
+
Professional use Stripe checkout (`checkoutUrl`).
|
|
29
29
|
|
|
30
30
|
## Happy path
|
|
31
31
|
|
|
@@ -40,8 +40,8 @@ apply_product_intent({ mode: "goLive", siteDirectory, platformPlan?, ... })
|
|
|
40
40
|
If status is `blocked`, fix the readiness checklist (missing secrets, plan, OpenAPI). Do not invent
|
|
41
41
|
credentials.
|
|
42
42
|
|
|
43
|
-
After success, register **`manualSteps.oidcRedirectUri`** in your IdP. When `stripeRequired` is
|
|
44
|
-
create a Stripe webhook at `manualSteps.stripeWebhookUrl` for the listed events.
|
|
43
|
+
After success, register **`manualSteps.oidcRedirectUri`** in your IdP. When `stripeRequired` is
|
|
44
|
+
true, create a Stripe webhook at `manualSteps.stripeWebhookUrl` for the listed events.
|
|
45
45
|
|
|
46
46
|
Do not treat warm-pool URLs as live until publish / deploy / verify succeed.
|
|
47
47
|
|
|
@@ -69,10 +69,10 @@ shape → deploy_backend → publish_dev_portal(skipBackendRedeploy: true)
|
|
|
69
69
|
|
|
70
70
|
## Platform plan vs API plans
|
|
71
71
|
|
|
72
|
-
| Kind
|
|
73
|
-
|
|
|
74
|
-
| Platform hosting
|
|
75
|
-
| Gateway / API
|
|
72
|
+
| Kind | Meaning | How |
|
|
73
|
+
| ---------------- | ------------------------------------------- | ------------------------- |
|
|
74
|
+
| Platform hosting | Free / Starter / Professional on APItoGo | `ensure_platform_plan` |
|
|
75
|
+
| Gateway / API | End-user SKUs and rate limits on `/pricing` | Manifest / intent `plans` |
|
|
76
76
|
|
|
77
77
|
## Publish behavior
|
|
78
78
|
|
|
@@ -85,10 +85,10 @@ shape → deploy_backend → publish_dev_portal(skipBackendRedeploy: true)
|
|
|
85
85
|
|
|
86
86
|
## CLI deploy vs MCP publish
|
|
87
87
|
|
|
88
|
-
| Path
|
|
89
|
-
|
|
|
90
|
-
| MCP `publish_dev_portal`
|
|
91
|
-
| CLI `npx apitogo deploy`
|
|
88
|
+
| Path | Use when |
|
|
89
|
+
| ------------------------ | --------------------------------------------------- |
|
|
90
|
+
| MCP `publish_dev_portal` | Full product go-live (plans, auth, hosting, verify) |
|
|
91
|
+
| CLI `npx apitogo deploy` | Publish config to platform (apihub + portal) |
|
|
92
92
|
|
|
93
93
|
See [Go live with CLI](../cli/go-live.md).
|
|
94
94
|
|
package/docs/mcp/overview.md
CHANGED
|
@@ -19,17 +19,17 @@ deploy, and go-live. You can use MCP tools, edit site files yourself, or mix bot
|
|
|
19
19
|
**Professional**
|
|
20
20
|
- Deploy backends and sync gateway actions after publish
|
|
21
21
|
|
|
22
|
-
Prefer **`apply_product_intent`** for “create / shape / go live” prompts. See [Shape](./shape.md)
|
|
23
|
-
[Go live](./go-live.md).
|
|
22
|
+
Prefer **`apply_product_intent`** for “create / shape / go live” prompts. See [Shape](./shape.md)
|
|
23
|
+
and [Go live](./go-live.md).
|
|
24
24
|
|
|
25
25
|
## Prerequisites
|
|
26
26
|
|
|
27
27
|
### MCP host environment
|
|
28
28
|
|
|
29
|
-
| Variable
|
|
30
|
-
|
|
|
31
|
-
| `APITOGO_API_KEY_ID`
|
|
32
|
-
| `APITOGO_API_SECRET`
|
|
29
|
+
| Variable | Required | Purpose |
|
|
30
|
+
| -------------------- | -------- | ----------------- |
|
|
31
|
+
| `APITOGO_API_KEY_ID` | Yes | Platform API auth |
|
|
32
|
+
| `APITOGO_API_SECRET` | Yes | Platform API auth |
|
|
33
33
|
|
|
34
34
|
### Agent host
|
|
35
35
|
|
|
@@ -42,10 +42,10 @@ Prefer **`apply_product_intent`** for “create / shape / go live” prompts. Se
|
|
|
42
42
|
|
|
43
43
|
You choose how to edit the portal:
|
|
44
44
|
|
|
45
|
-
| Approach
|
|
46
|
-
|
|
|
47
|
-
| **MCP tools**
|
|
48
|
-
| **Edit files directly** | Full control in your editor — `apitogo.config.json`, `pages/**`, `landing/LandingPage.tsx`, etc.
|
|
45
|
+
| Approach | When it helps |
|
|
46
|
+
| ----------------------- | --------------------------------------------------------------------------------------------------- |
|
|
47
|
+
| **MCP tools** | Agent-driven changes; tools can wire navigation/config and run validation. See [Tools](./tools.md). |
|
|
48
|
+
| **Edit files directly** | Full control in your editor — `apitogo.config.json`, `pages/**`, `landing/LandingPage.tsx`, etc. |
|
|
49
49
|
|
|
50
50
|
Useful MCP tools (optional — not required):
|
|
51
51
|
|
package/docs/mcp/setup.md
CHANGED
|
@@ -18,11 +18,11 @@ server is the same everywhere; only the host config file changes.
|
|
|
18
18
|
|
|
19
19
|
Every host launches the same stdio process:
|
|
20
20
|
|
|
21
|
-
| Field
|
|
22
|
-
|
|
|
23
|
-
| Command
|
|
24
|
-
| Args
|
|
25
|
-
| Env
|
|
21
|
+
| Field | Value |
|
|
22
|
+
| ------- | ------------------------------------------ |
|
|
23
|
+
| Command | `npx` |
|
|
24
|
+
| Args | `-y`, `@lukoweb/apitogo-mcp` |
|
|
25
|
+
| Env | `APITOGO_API_KEY_ID`, `APITOGO_API_SECRET` |
|
|
26
26
|
|
|
27
27
|
Optional env: `APITOGO_API_URL`, `APITOGO_DOC_TOOL_PATH` (local doc-tool for scaffold).
|
|
28
28
|
|
|
@@ -65,10 +65,10 @@ Or project-scoped under `.cursor/skills/apitogo-product`.
|
|
|
65
65
|
|
|
66
66
|
Edit the Claude Desktop MCP config (same `mcpServers` shape as Cursor):
|
|
67
67
|
|
|
68
|
-
| OS | Path
|
|
69
|
-
| ------- |
|
|
70
|
-
| macOS | `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
71
|
-
| Windows | `%APPDATA%\Claude\claude_desktop_config.json`
|
|
68
|
+
| OS | Path |
|
|
69
|
+
| ------- | ----------------------------------------------------------------- |
|
|
70
|
+
| macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` |
|
|
71
|
+
| Windows | `%APPDATA%\Claude\claude_desktop_config.json` |
|
|
72
72
|
|
|
73
73
|
```json
|
|
74
74
|
{
|
package/docs/mcp/shape.md
CHANGED
|
@@ -53,14 +53,15 @@ Ask only for what is missing:
|
|
|
53
53
|
2. **backend** / **openApi** — source directory and/or OpenAPI path or URL
|
|
54
54
|
3. **plans** — SKUs, prices, rate limits (your choice; not invented)
|
|
55
55
|
4. **auth.mode** — `native` | `oidc` | `nativeAndOidc`
|
|
56
|
-
5. **gatewayPolicies.publicRoutes** — e.g. `/health` (other routes stay subscription-key protected
|
|
57
|
-
default)
|
|
56
|
+
5. **gatewayPolicies.publicRoutes** — e.g. `/health` (other routes stay subscription-key protected
|
|
57
|
+
by default)
|
|
58
58
|
|
|
59
59
|
## Customize after shape
|
|
60
60
|
|
|
61
61
|
Use MCP tools (see [Tools](./tools.md)):
|
|
62
62
|
|
|
63
|
-
- Pages → `add_dev_portal_page` / `update_dev_portal_page` (TSX only; `template`:
|
|
63
|
+
- Pages → `add_dev_portal_page` / `update_dev_portal_page` (TSX only; `template`:
|
|
64
|
+
docs|guide|marketing)
|
|
64
65
|
- OpenAPI → `set_dev_portal_openapi`
|
|
65
66
|
- Plans / branding → `update_dev_portal_manifest`
|
|
66
67
|
- Theme → `set_dev_portal_theme`
|
package/docs/mcp/tools.md
CHANGED
|
@@ -9,88 +9,88 @@ go-live. Use granular tools for advanced edits, debugging, or CI.
|
|
|
9
9
|
|
|
10
10
|
## Lifecycle (prefer these)
|
|
11
11
|
|
|
12
|
-
| Tool
|
|
13
|
-
|
|
|
14
|
-
| `apply_product_intent`
|
|
15
|
-
| `create_dev_portal`
|
|
16
|
-
| `check_dev_portal_publish_readiness` | Pre-publish checklist
|
|
17
|
-
| `publish_dev_portal`
|
|
18
|
-
| `verify_dev_portal_live`
|
|
19
|
-
| `bootstrap_dev_portal`
|
|
20
|
-
| `bootstrap_project`
|
|
21
|
-
| `teardown_project`
|
|
12
|
+
| Tool | Role |
|
|
13
|
+
| ------------------------------------ | ---------------------------------------------- |
|
|
14
|
+
| `apply_product_intent` | Shape or goLive from a product intent |
|
|
15
|
+
| `create_dev_portal` | Scaffold site (+ optional project bootstrap) |
|
|
16
|
+
| `check_dev_portal_publish_readiness` | Pre-publish checklist |
|
|
17
|
+
| `publish_dev_portal` | Publish portal + plans (+ optional backend) |
|
|
18
|
+
| `verify_dev_portal_live` | Post-publish verification |
|
|
19
|
+
| `bootstrap_dev_portal` | CI one-shot provision + deploy |
|
|
20
|
+
| `bootstrap_project` | Create platform project only (plan unselected) |
|
|
21
|
+
| `teardown_project` | Tear down a project |
|
|
22
22
|
|
|
23
23
|
## Site shaping
|
|
24
24
|
|
|
25
|
-
| Tool
|
|
26
|
-
|
|
|
27
|
-
| `update_dev_portal_manifest`
|
|
28
|
-
| `set_dev_portal_openapi`
|
|
29
|
-
| `set_dev_portal_theme`
|
|
30
|
-
| `add_dev_portal_page`
|
|
31
|
-
| `update_dev_portal_page`
|
|
32
|
-
| `scaffold_dev_portal_landing_page
|
|
33
|
-
| `get_dev_portal_landing_guide`
|
|
34
|
-
| `preview_dev_portal_site`
|
|
35
|
-
| `build_dev_portal_site`
|
|
25
|
+
| Tool | Role |
|
|
26
|
+
| ---------------------------------- | ------------------------------------------------------------------------- |
|
|
27
|
+
| `update_dev_portal_manifest` | Plans, branding, backend, projectId |
|
|
28
|
+
| `set_dev_portal_openapi` | OpenAPI / API reference |
|
|
29
|
+
| `set_dev_portal_theme` | Colors and fonts |
|
|
30
|
+
| `add_dev_portal_page` | Add a TSX docs page (site components; `template`: docs\|guide\|marketing) |
|
|
31
|
+
| `update_dev_portal_page` | Edit a docs page |
|
|
32
|
+
| `scaffold_dev_portal_landing_page` | Scaffold missing landing file |
|
|
33
|
+
| `get_dev_portal_landing_guide` | Landing component catalog |
|
|
34
|
+
| `preview_dev_portal_site` | Start / restart local preview |
|
|
35
|
+
| `build_dev_portal_site` | Production build |
|
|
36
36
|
|
|
37
37
|
Hosted page CRUD also exists (`list/create/delete/rename/reorder_dev_portal_pages`) for the platform
|
|
38
38
|
API surface.
|
|
39
39
|
|
|
40
40
|
## Projects and platform billing
|
|
41
41
|
|
|
42
|
-
| Tool
|
|
43
|
-
|
|
|
44
|
-
| `whoami`, `list_projects`, `get_project`, … | Tenant / project CRUD
|
|
45
|
-
| `list_platform_plans`
|
|
46
|
-
| `ensure_platform_plan`
|
|
47
|
-
| `wait_for_platform_plan`
|
|
48
|
-
| `get_subscription`
|
|
49
|
-
| `select_free_plan`
|
|
50
|
-
| `create_checkout_session`
|
|
42
|
+
| Tool | Role |
|
|
43
|
+
| ------------------------------------------- | ------------------------------------- |
|
|
44
|
+
| `whoami`, `list_projects`, `get_project`, … | Tenant / project CRUD |
|
|
45
|
+
| `list_platform_plans` | Free / Starter / Professional + quota |
|
|
46
|
+
| `ensure_platform_plan` | Select or checkout platform plan |
|
|
47
|
+
| `wait_for_platform_plan` | Poll until active |
|
|
48
|
+
| `get_subscription` | Current subscription |
|
|
49
|
+
| `select_free_plan` | Free hosting |
|
|
50
|
+
| `create_checkout_session` | Stripe checkout for paid hosting |
|
|
51
51
|
|
|
52
52
|
## Backend and OpenAPI
|
|
53
53
|
|
|
54
|
-
| Tool | Role
|
|
55
|
-
| ----------------------- |
|
|
56
|
-
| `validate_openapi` | Validate OpenAPI
|
|
57
|
-
| `update_openapi` | Update stored OpenAPI
|
|
58
|
-
| `package_backend` | Package backend artifact
|
|
59
|
-
| `deploy_backend` | Deploy API hub
|
|
60
|
-
| `get_backend_summary` | Backend status
|
|
61
|
-
| `get_deployment_status` | Deployment job status
|
|
62
|
-
| `get_gateway_readiness` | Gateway readiness
|
|
54
|
+
| Tool | Role |
|
|
55
|
+
| ----------------------- | ------------------------ |
|
|
56
|
+
| `validate_openapi` | Validate OpenAPI |
|
|
57
|
+
| `update_openapi` | Update stored OpenAPI |
|
|
58
|
+
| `package_backend` | Package backend artifact |
|
|
59
|
+
| `deploy_backend` | Deploy API hub |
|
|
60
|
+
| `get_backend_summary` | Backend status |
|
|
61
|
+
| `get_deployment_status` | Deployment job status |
|
|
62
|
+
| `get_gateway_readiness` | Gateway readiness |
|
|
63
63
|
|
|
64
64
|
## Gateway
|
|
65
65
|
|
|
66
|
-
| Tool
|
|
67
|
-
|
|
|
68
|
-
| `list/get/create/update/patch_gateway_plan`
|
|
69
|
-
| `add_actions_to_gateway_plan` / `remove_actions_from_gateway_plan` | Attach ops
|
|
70
|
-
| `set_action_public`
|
|
71
|
-
| `upsert_entitlement`
|
|
72
|
-
| `configure_gateway_baseline`
|
|
73
|
-
| `get/update_gateway_settings`
|
|
74
|
-
| `get/update_gateway_auth`
|
|
75
|
-
| `sync_gateway_plans_from_manifest`
|
|
76
|
-
| `reorder_gateway_plans_from_manifest`
|
|
66
|
+
| Tool | Role |
|
|
67
|
+
| ------------------------------------------------------------------ | ------------------------ |
|
|
68
|
+
| `list/get/create/update/patch_gateway_plan` | Plan CRUD |
|
|
69
|
+
| `add_actions_to_gateway_plan` / `remove_actions_from_gateway_plan` | Attach ops |
|
|
70
|
+
| `set_action_public` | Public routes |
|
|
71
|
+
| `upsert_entitlement` | Entitlements |
|
|
72
|
+
| `configure_gateway_baseline` | Baseline policies |
|
|
73
|
+
| `get/update_gateway_settings` | Settings |
|
|
74
|
+
| `get/update_gateway_auth` | Gateway auth |
|
|
75
|
+
| `sync_gateway_plans_from_manifest` | Post-publish action sync |
|
|
76
|
+
| `reorder_gateway_plans_from_manifest` | Plan order |
|
|
77
77
|
|
|
78
78
|
## Infrastructure and deploy
|
|
79
79
|
|
|
80
|
-
| Tool
|
|
81
|
-
|
|
|
82
|
-
| `activate_module`
|
|
83
|
-
| `get_infrastructure_status` / Azure variants
|
|
84
|
-
| `list_provisioning_jobs`, `wait_for_job`
|
|
85
|
-
| `get_deployment_token`
|
|
86
|
-
| `get/set/delete_custom_domain`
|
|
87
|
-
| `get_dev_portal_deploy_config`, `deploy_dev_portal`, … | SWA deploy
|
|
80
|
+
| Tool | Role |
|
|
81
|
+
| ------------------------------------------------------ | ---------------- |
|
|
82
|
+
| `activate_module` | Activate modules |
|
|
83
|
+
| `get_infrastructure_status` / Azure variants | Infra status |
|
|
84
|
+
| `list_provisioning_jobs`, `wait_for_job` | Jobs |
|
|
85
|
+
| `get_deployment_token` | CLI deploy token |
|
|
86
|
+
| `get/set/delete_custom_domain` | Custom domain |
|
|
87
|
+
| `get_dev_portal_deploy_config`, `deploy_dev_portal`, … | SWA deploy |
|
|
88
88
|
|
|
89
89
|
## Hand-edit exceptions
|
|
90
90
|
|
|
91
|
-
| Change | Where
|
|
92
|
-
| ----------------- |
|
|
93
|
-
| Home page content | `landing/LandingPage.tsx`
|
|
91
|
+
| Change | Where |
|
|
92
|
+
| ----------------- | -------------------------------------------------------- |
|
|
93
|
+
| Home page content | `landing/LandingPage.tsx` |
|
|
94
94
|
| Site footer | `apitogo.config.json` → `modules.landing.content.footer` |
|
|
95
95
|
|
|
96
96
|
There is **no** `update_dev_portal_landing` tool for arbitrary home content.
|
package/docs/plugins.md
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
title: APIToGo Plugins
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
APIToGo is extended with **plugins** registered in your site config. JSON cannot
|
|
6
|
-
|
|
5
|
+
APIToGo is extended with **plugins** registered in your site config. JSON cannot hold React or
|
|
6
|
+
functions.
|
|
7
7
|
|
|
8
8
|
Common uses:
|
|
9
9
|
|
package/docs/quickstart.md
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Quickstart
|
|
3
|
-
description:
|
|
4
|
-
Get started with APIToGo MCP — connect your agent, shape a portal, and preview locally.
|
|
3
|
+
description: Get started with APIToGo MCP — connect your agent, shape a portal, and preview locally.
|
|
5
4
|
sidebar_icon: circle-play
|
|
6
5
|
---
|
|
7
6
|
|
|
8
|
-
Build an API product (developer portal, plans, gateway, backend) with an AI agent and the
|
|
9
|
-
|
|
7
|
+
Build an API product (developer portal, plans, gateway, backend) with an AI agent and the **APItoGo
|
|
8
|
+
MCP** server. Works with Cursor, Claude, Codex, and other MCP hosts.
|
|
10
9
|
|
|
11
10
|
## Prerequisites
|
|
12
11
|
|
|
@@ -54,8 +53,8 @@ Build an API product (developer portal, plans, gateway, backend) with an AI agen
|
|
|
54
53
|
|
|
55
54
|
1. **Go live when ready**
|
|
56
55
|
|
|
57
|
-
Save OIDC (and Stripe if you have paid plans) in the site `.env`, then ask the agent to publish
|
|
58
|
-
|
|
56
|
+
Save OIDC (and Stripe if you have paid plans) in the site `.env`, then ask the agent to publish —
|
|
57
|
+
see [Go live](./mcp/go-live.md). Never paste secrets into chat.
|
|
59
58
|
|
|
60
59
|
</Stepper>
|
|
61
60
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lukoweb/apitogo",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.126",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"**/*.css",
|
|
@@ -167,16 +167,6 @@
|
|
|
167
167
|
"default": "./src/cli/platform/apply/index.ts"
|
|
168
168
|
}
|
|
169
169
|
},
|
|
170
|
-
"scripts": {
|
|
171
|
-
"build": "esbuild src/cli/cli.ts src/vite/prerender/worker.ts --outdir=dist/cli --entry-names=[name] --bundle --format=esm --packages=external --target=node20 --platform=node --log-level=error",
|
|
172
|
-
"postbuild": "tsx scripts/check-external-deps.ts",
|
|
173
|
-
"typecheck": "tsc --project tsconfig.app.json --noEmit",
|
|
174
|
-
"generate:types": "tsx scripts/generate-types.js && tsx scripts/generate-flat-config.js",
|
|
175
|
-
"build:standalone": "vite build --mode standalone --config vite.standalone.config.ts --log-level=error",
|
|
176
|
-
"prepack": "npm run build && tsx scripts/generate-publish-exports.ts",
|
|
177
|
-
"clean": "rm -rf dist",
|
|
178
|
-
"codegen": "graphql-codegen --config ./src/codegen.ts"
|
|
179
|
-
},
|
|
180
170
|
"dependencies": {
|
|
181
171
|
"@apidevtools/json-schema-ref-parser": "15.3.1",
|
|
182
172
|
"@apidevtools/swagger-parser": "^12.1.0",
|
|
@@ -356,148 +346,13 @@
|
|
|
356
346
|
"optional": true
|
|
357
347
|
}
|
|
358
348
|
},
|
|
359
|
-
"
|
|
360
|
-
"
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
"types": "./dist/declarations/lib/ui/*.d.ts",
|
|
368
|
-
"default": "./src/lib/ui/*.tsx"
|
|
369
|
-
},
|
|
370
|
-
"./ui/*.js": {
|
|
371
|
-
"types": "./dist/declarations/lib/ui/*.d.ts",
|
|
372
|
-
"default": "./src/lib/ui/*.tsx"
|
|
373
|
-
},
|
|
374
|
-
"./client": {
|
|
375
|
-
"types": "./client.d.ts"
|
|
376
|
-
},
|
|
377
|
-
"./auth/clerk": {
|
|
378
|
-
"types": "./dist/declarations/lib/authentication/providers/clerk.d.ts",
|
|
379
|
-
"default": "./src/lib/authentication/providers/clerk.tsx"
|
|
380
|
-
},
|
|
381
|
-
"./auth/auth0": {
|
|
382
|
-
"types": "./dist/declarations/lib/authentication/providers/auth0.d.ts",
|
|
383
|
-
"default": "./src/lib/authentication/providers/auth0.tsx"
|
|
384
|
-
},
|
|
385
|
-
"./auth/openid": {
|
|
386
|
-
"types": "./dist/declarations/lib/authentication/providers/openid.d.ts",
|
|
387
|
-
"default": "./src/lib/authentication/providers/openid.tsx"
|
|
388
|
-
},
|
|
389
|
-
"./auth/supabase": {
|
|
390
|
-
"types": "./dist/declarations/lib/authentication/providers/supabase.d.ts",
|
|
391
|
-
"default": "./src/lib/authentication/providers/supabase.tsx"
|
|
392
|
-
},
|
|
393
|
-
"./auth/azureb2c": {
|
|
394
|
-
"types": "./dist/declarations/lib/authentication/providers/azureb2c.d.ts",
|
|
395
|
-
"default": "./src/lib/authentication/providers/azureb2c.tsx"
|
|
396
|
-
},
|
|
397
|
-
"./auth/firebase": {
|
|
398
|
-
"types": "./dist/declarations/lib/authentication/providers/firebase.d.ts",
|
|
399
|
-
"default": "./src/lib/authentication/providers/firebase.tsx"
|
|
400
|
-
},
|
|
401
|
-
"./auth/dev-portal": {
|
|
402
|
-
"types": "./dist/declarations/lib/authentication/providers/dev-portal.d.ts",
|
|
403
|
-
"default": "./src/lib/authentication/providers/dev-portal.tsx"
|
|
404
|
-
},
|
|
405
|
-
"./plugins": {
|
|
406
|
-
"types": "./dist/declarations/lib/core/plugins.d.ts",
|
|
407
|
-
"default": "./src/lib/core/plugins.ts"
|
|
408
|
-
},
|
|
409
|
-
"./plugins/api-keys": {
|
|
410
|
-
"types": "./dist/declarations/lib/plugins/api-keys/index.d.ts",
|
|
411
|
-
"default": "./src/lib/plugins/api-keys/index.tsx"
|
|
412
|
-
},
|
|
413
|
-
"./plugins/markdown": {
|
|
414
|
-
"types": "./dist/declarations/lib/plugins/markdown/index.d.ts",
|
|
415
|
-
"default": "./src/lib/plugins/markdown/index.tsx"
|
|
416
|
-
},
|
|
417
|
-
"./plugins/openapi": {
|
|
418
|
-
"types": "./dist/declarations/lib/plugins/openapi/index.d.ts",
|
|
419
|
-
"default": "./src/lib/plugins/openapi/index.tsx"
|
|
420
|
-
},
|
|
421
|
-
"./plugins/custom-pages": {
|
|
422
|
-
"types": "./dist/declarations/lib/plugins/custom-pages/index.d.ts",
|
|
423
|
-
"default": "./src/lib/plugins/custom-pages/index.tsx"
|
|
424
|
-
},
|
|
425
|
-
"./plugins/search-inkeep": {
|
|
426
|
-
"types": "./dist/declarations/lib/plugins/search-inkeep/index.d.ts",
|
|
427
|
-
"default": "./src/lib/plugins/search-inkeep/index.tsx"
|
|
428
|
-
},
|
|
429
|
-
"./plugins/search-pagefind": {
|
|
430
|
-
"types": "./dist/declarations/lib/plugins/search-pagefind/index.d.ts",
|
|
431
|
-
"default": "./src/lib/plugins/search-pagefind/index.tsx"
|
|
432
|
-
},
|
|
433
|
-
"./plugins/api-catalog": {
|
|
434
|
-
"types": "./dist/declarations/lib/plugins/api-catalog/index.d.ts",
|
|
435
|
-
"default": "./src/lib/plugins/api-catalog/index.tsx"
|
|
436
|
-
},
|
|
437
|
-
"./modules/landing": "@lukoweb/apitogo-module-landing",
|
|
438
|
-
"./modules/user-panel": "@lukoweb/apitogo-module-user-panel",
|
|
439
|
-
"./components": {
|
|
440
|
-
"types": "./dist/declarations/lib/components/index.d.ts",
|
|
441
|
-
"default": "./src/lib/components/index.ts"
|
|
442
|
-
},
|
|
443
|
-
"./mermaid": {
|
|
444
|
-
"types": "./dist/declarations/lib/components/Mermaid.d.ts",
|
|
445
|
-
"default": "./src/lib/components/Mermaid.tsx"
|
|
446
|
-
},
|
|
447
|
-
"./router": {
|
|
448
|
-
"types": "./dist/declarations/lib/core/router.d.ts",
|
|
449
|
-
"default": "./src/lib/core/router.ts"
|
|
450
|
-
},
|
|
451
|
-
"./react-query": {
|
|
452
|
-
"types": "./dist/declarations/lib/core/react-query.d.ts",
|
|
453
|
-
"default": "./src/lib/core/react-query.ts"
|
|
454
|
-
},
|
|
455
|
-
"./icons": {
|
|
456
|
-
"types": "./dist/declarations/lib/icons.d.ts",
|
|
457
|
-
"default": "./src/lib/icons.ts"
|
|
458
|
-
},
|
|
459
|
-
"./vite": {
|
|
460
|
-
"types": "./dist/declarations/vite/index.d.ts",
|
|
461
|
-
"default": "./src/vite/index.ts"
|
|
462
|
-
},
|
|
463
|
-
"./app/*": {
|
|
464
|
-
"types": "./dist/declarations/app/*.d.ts",
|
|
465
|
-
"default": "./src/app/*"
|
|
466
|
-
},
|
|
467
|
-
"./hooks": {
|
|
468
|
-
"types": "./dist/declarations/lib/hooks/index.d.ts",
|
|
469
|
-
"default": "./src/lib/hooks/index.ts"
|
|
470
|
-
},
|
|
471
|
-
"./main.css": "./src/app/main.css",
|
|
472
|
-
"./processors/*": {
|
|
473
|
-
"types": "./dist/declarations/lib/plugins/openapi/processors/*.d.ts",
|
|
474
|
-
"default": "./src/lib/plugins/openapi/processors/*.ts"
|
|
475
|
-
},
|
|
476
|
-
"./with-zuplo": {
|
|
477
|
-
"types": "./dist/declarations/zuplo/with-zuplo.d.ts",
|
|
478
|
-
"default": "./src/zuplo/with-zuplo.ts"
|
|
479
|
-
},
|
|
480
|
-
"./testing": {
|
|
481
|
-
"types": "./dist/declarations/lib/testing/index.d.ts",
|
|
482
|
-
"default": "./src/lib/testing/index.tsx"
|
|
483
|
-
},
|
|
484
|
-
"./local-manifest": {
|
|
485
|
-
"types": "./dist/declarations/config/local-manifest.d.ts",
|
|
486
|
-
"default": "./src/config/local-manifest.ts"
|
|
487
|
-
},
|
|
488
|
-
"./build-config": {
|
|
489
|
-
"types": "./dist/declarations/config/build-apitogo-config.d.ts",
|
|
490
|
-
"default": "./src/config/build-apitogo-config.ts"
|
|
491
|
-
},
|
|
492
|
-
"./config-loader": {
|
|
493
|
-
"types": "./dist/declarations/config/apitogo-config-loader.d.ts",
|
|
494
|
-
"default": "./src/config/apitogo-config-loader.ts"
|
|
495
|
-
},
|
|
496
|
-
"./apply": {
|
|
497
|
-
"types": "./dist/declarations/cli/platform/apply/index.d.ts",
|
|
498
|
-
"default": "./src/cli/platform/apply/index.ts"
|
|
499
|
-
}
|
|
500
|
-
},
|
|
501
|
-
"access": "public"
|
|
349
|
+
"scripts": {
|
|
350
|
+
"build": "esbuild src/cli/cli.ts src/vite/prerender/worker.ts --outdir=dist/cli --entry-names=[name] --bundle --format=esm --packages=external --target=node20 --platform=node --log-level=error",
|
|
351
|
+
"postbuild": "tsx scripts/check-external-deps.ts",
|
|
352
|
+
"typecheck": "tsc --project tsconfig.app.json --noEmit",
|
|
353
|
+
"generate:types": "tsx scripts/generate-types.js && tsx scripts/generate-flat-config.js",
|
|
354
|
+
"build:standalone": "vite build --mode standalone --config vite.standalone.config.ts --log-level=error",
|
|
355
|
+
"clean": "rm -rf dist",
|
|
356
|
+
"codegen": "graphql-codegen --config ./src/codegen.ts"
|
|
502
357
|
}
|
|
503
|
-
}
|
|
358
|
+
}
|