@lukoweb/apitogo 0.1.121 → 0.1.127
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 +659 -402
- package/dist/declarations/cli/platform/client/platform-api.d.ts +6 -0
- package/dist/declarations/cli/platform/helpers/dev-portal-manifest.d.ts +2 -0
- package/dist/declarations/cli/platform/helpers/publish-preflight.d.ts +2 -0
- package/dist/declarations/cli/platform/tools/gateway.d.ts +6 -0
- package/dist/declarations/config/local-manifest.d.ts +21 -1
- package/dist/declarations/config/validators/ModulesSchema.d.ts +20 -0
- package/dist/declarations/config/validators/ZudokuConfig.d.ts +5 -0
- 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/dist/flat-config.d.ts +32 -24
- 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 +45 -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 +1 -1
- package/src/config/apitogo-config-core.ts +7 -1
- package/src/config/gateway-limits.ts +7 -2
- package/src/config/loader.ts +5 -7
- package/src/config/local-manifest.ts +24 -7
- package/src/config/resolve-modules.ts +5 -7
- package/src/config/validators/ModulesSchema.ts +11 -0
- 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
|
@@ -106,6 +106,8 @@ export interface GatewayPlanDto {
|
|
|
106
106
|
displayName: string;
|
|
107
107
|
isActive: boolean;
|
|
108
108
|
priceAmount?: number;
|
|
109
|
+
pricingModel?: "fixed" | "custom";
|
|
110
|
+
priceLabel?: string | null;
|
|
109
111
|
priceCurrency?: string;
|
|
110
112
|
billingPeriod?: string;
|
|
111
113
|
limitsJson?: string | null;
|
|
@@ -120,6 +122,8 @@ export interface CreateGatewayPlanRequest {
|
|
|
120
122
|
limitsJson?: string | null;
|
|
121
123
|
includedActionKeys: string[];
|
|
122
124
|
priceAmount?: number;
|
|
125
|
+
pricingModel?: "fixed" | "custom";
|
|
126
|
+
priceLabel?: string;
|
|
123
127
|
priceCurrency?: string;
|
|
124
128
|
billingPeriod?: string;
|
|
125
129
|
sortOrder?: number;
|
|
@@ -325,6 +329,8 @@ export interface UpdateGatewayPlanRequest {
|
|
|
325
329
|
limitsJson?: string | null;
|
|
326
330
|
includedActionKeys: string[];
|
|
327
331
|
priceAmount?: number;
|
|
332
|
+
pricingModel?: "fixed" | "custom";
|
|
333
|
+
priceLabel?: string;
|
|
328
334
|
priceCurrency?: string;
|
|
329
335
|
billingPeriod?: string;
|
|
330
336
|
sortOrder?: number;
|
|
@@ -7,6 +7,8 @@ export interface ManifestPlanInput {
|
|
|
7
7
|
sku: string;
|
|
8
8
|
displayName: string;
|
|
9
9
|
priceAmount?: number;
|
|
10
|
+
pricingModel?: "fixed" | "custom";
|
|
11
|
+
priceLabel?: string;
|
|
10
12
|
priceCurrency?: string;
|
|
11
13
|
billingPeriod?: "month" | "year" | "monthly" | "annual";
|
|
12
14
|
limits?: GatewayLimits;
|
|
@@ -42,6 +42,8 @@ export declare function handleCreateGatewayPlan(client: PlatformApiClient, confi
|
|
|
42
42
|
limitsJson?: string;
|
|
43
43
|
includedActionKeys?: string[];
|
|
44
44
|
priceAmount?: number;
|
|
45
|
+
pricingModel?: "fixed" | "custom";
|
|
46
|
+
priceLabel?: string;
|
|
45
47
|
priceCurrency?: string;
|
|
46
48
|
billingPeriod?: string;
|
|
47
49
|
sortOrder?: number;
|
|
@@ -59,6 +61,8 @@ export declare function handleUpdateGatewayPlan(client: PlatformApiClient, confi
|
|
|
59
61
|
limitsJson?: string;
|
|
60
62
|
includedActionKeys?: string[];
|
|
61
63
|
priceAmount?: number;
|
|
64
|
+
pricingModel?: "fixed" | "custom";
|
|
65
|
+
priceLabel?: string;
|
|
62
66
|
priceCurrency?: string;
|
|
63
67
|
billingPeriod?: string;
|
|
64
68
|
sortOrder?: number;
|
|
@@ -71,6 +75,8 @@ export declare function handlePatchGatewayPlan(client: PlatformApiClient, config
|
|
|
71
75
|
limitsJson?: string | null;
|
|
72
76
|
includedActionKeys?: string[];
|
|
73
77
|
priceAmount?: number;
|
|
78
|
+
pricingModel?: "fixed" | "custom";
|
|
79
|
+
priceLabel?: string;
|
|
74
80
|
priceCurrency?: string;
|
|
75
81
|
billingPeriod?: string;
|
|
76
82
|
sortOrder?: number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { type GatewayLimits } from "./gateway-limits.js";
|
|
3
2
|
import { APITOGO_CONFIG_FILENAME } from "./apitogo-config-loader.js";
|
|
3
|
+
import { type GatewayLimits } from "./gateway-limits.js";
|
|
4
4
|
import { type LandingManifestInput } from "./landing-manifest.js";
|
|
5
5
|
export declare const APITOGO_MANIFEST_BASE_FILENAME = "apitogo.json";
|
|
6
6
|
export declare const APITOGO_MANIFEST_ENV_FILES: {
|
|
@@ -9,11 +9,21 @@ export declare const APITOGO_MANIFEST_ENV_FILES: {
|
|
|
9
9
|
};
|
|
10
10
|
export { APITOGO_CONFIG_FILENAME };
|
|
11
11
|
export type ApitogoManifestEnv = keyof typeof APITOGO_MANIFEST_ENV_FILES;
|
|
12
|
+
export declare const PlanPricingModelSchema: z.ZodEnum<{
|
|
13
|
+
fixed: "fixed";
|
|
14
|
+
custom: "custom";
|
|
15
|
+
}>;
|
|
16
|
+
export type PlanPricingModel = z.infer<typeof PlanPricingModelSchema>;
|
|
12
17
|
export declare const ALLOWED_RUNTIME_VERSIONS: readonly ["DOTNET_10", "DOTNET_9", "DOTNET_8", "NODE_24_LTS", "NODE_22_LTS", "PYTHON_314", "PYTHON_313", "PYTHON_312", "PYTHON_311", "PYTHON_310"];
|
|
13
18
|
export declare const ManifestPlanInputSchema: z.ZodObject<{
|
|
14
19
|
sku: z.ZodString;
|
|
15
20
|
displayName: z.ZodString;
|
|
16
21
|
priceAmount: z.ZodDefault<z.ZodNumber>;
|
|
22
|
+
pricingModel: z.ZodOptional<z.ZodEnum<{
|
|
23
|
+
fixed: "fixed";
|
|
24
|
+
custom: "custom";
|
|
25
|
+
}>>;
|
|
26
|
+
priceLabel: z.ZodOptional<z.ZodString>;
|
|
17
27
|
priceCurrency: z.ZodOptional<z.ZodString>;
|
|
18
28
|
billingPeriod: z.ZodOptional<z.ZodEnum<{
|
|
19
29
|
month: "month";
|
|
@@ -34,6 +44,9 @@ export declare const ManifestPlanInputSchema: z.ZodObject<{
|
|
|
34
44
|
limitsJson: z.ZodOptional<z.ZodString>;
|
|
35
45
|
includedActionKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
36
46
|
}, z.core.$strip>;
|
|
47
|
+
export declare function isPlanCustomPriced(plan: {
|
|
48
|
+
pricingModel?: string | null;
|
|
49
|
+
}): boolean;
|
|
37
50
|
export declare function isPlanFree(plan: {
|
|
38
51
|
priceAmount?: number;
|
|
39
52
|
}): boolean;
|
|
@@ -68,6 +81,11 @@ export declare const DevPortalLocalManifestSchema: z.ZodObject<{
|
|
|
68
81
|
sku: z.ZodString;
|
|
69
82
|
displayName: z.ZodString;
|
|
70
83
|
priceAmount: z.ZodDefault<z.ZodNumber>;
|
|
84
|
+
pricingModel: z.ZodOptional<z.ZodEnum<{
|
|
85
|
+
fixed: "fixed";
|
|
86
|
+
custom: "custom";
|
|
87
|
+
}>>;
|
|
88
|
+
priceLabel: z.ZodOptional<z.ZodString>;
|
|
71
89
|
priceCurrency: z.ZodOptional<z.ZodString>;
|
|
72
90
|
billingPeriod: z.ZodOptional<z.ZodEnum<{
|
|
73
91
|
month: "month";
|
|
@@ -230,6 +248,8 @@ export type DevPortalPreviewPlan = {
|
|
|
230
248
|
sku: string;
|
|
231
249
|
displayName: string;
|
|
232
250
|
priceAmount: number;
|
|
251
|
+
pricingModel: PlanPricingModel;
|
|
252
|
+
priceLabel?: string;
|
|
233
253
|
priceCurrency: string;
|
|
234
254
|
billingPeriod: string;
|
|
235
255
|
limits: GatewayLimits | null;
|
|
@@ -388,6 +388,11 @@ declare const PlanCatalogItemSchema: z.ZodObject<{
|
|
|
388
388
|
sku: z.ZodString;
|
|
389
389
|
displayName: z.ZodString;
|
|
390
390
|
priceAmount: z.ZodDefault<z.ZodNumber>;
|
|
391
|
+
pricingModel: z.ZodOptional<z.ZodEnum<{
|
|
392
|
+
fixed: "fixed";
|
|
393
|
+
custom: "custom";
|
|
394
|
+
}>>;
|
|
395
|
+
priceLabel: z.ZodOptional<z.ZodString>;
|
|
391
396
|
priceCurrency: z.ZodOptional<z.ZodString>;
|
|
392
397
|
billingPeriod: z.ZodOptional<z.ZodString>;
|
|
393
398
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -421,6 +426,11 @@ export declare const PlansModuleSchema: z.ZodObject<{
|
|
|
421
426
|
sku: z.ZodString;
|
|
422
427
|
displayName: z.ZodString;
|
|
423
428
|
priceAmount: z.ZodDefault<z.ZodNumber>;
|
|
429
|
+
pricingModel: z.ZodOptional<z.ZodEnum<{
|
|
430
|
+
fixed: "fixed";
|
|
431
|
+
custom: "custom";
|
|
432
|
+
}>>;
|
|
433
|
+
priceLabel: z.ZodOptional<z.ZodString>;
|
|
424
434
|
priceCurrency: z.ZodOptional<z.ZodString>;
|
|
425
435
|
billingPeriod: z.ZodOptional<z.ZodString>;
|
|
426
436
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -507,6 +517,11 @@ export declare const UserPanelModuleSchema: z.ZodObject<{
|
|
|
507
517
|
sku: z.ZodString;
|
|
508
518
|
displayName: z.ZodString;
|
|
509
519
|
priceAmount: z.ZodDefault<z.ZodNumber>;
|
|
520
|
+
pricingModel: z.ZodOptional<z.ZodEnum<{
|
|
521
|
+
fixed: "fixed";
|
|
522
|
+
custom: "custom";
|
|
523
|
+
}>>;
|
|
524
|
+
priceLabel: z.ZodOptional<z.ZodString>;
|
|
510
525
|
priceCurrency: z.ZodOptional<z.ZodString>;
|
|
511
526
|
billingPeriod: z.ZodOptional<z.ZodString>;
|
|
512
527
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -705,6 +720,11 @@ export declare const ModulesSchema: z.ZodOptional<z.ZodObject<{
|
|
|
705
720
|
sku: z.ZodString;
|
|
706
721
|
displayName: z.ZodString;
|
|
707
722
|
priceAmount: z.ZodDefault<z.ZodNumber>;
|
|
723
|
+
pricingModel: z.ZodOptional<z.ZodEnum<{
|
|
724
|
+
fixed: "fixed";
|
|
725
|
+
custom: "custom";
|
|
726
|
+
}>>;
|
|
727
|
+
priceLabel: z.ZodOptional<z.ZodString>;
|
|
708
728
|
priceCurrency: z.ZodOptional<z.ZodString>;
|
|
709
729
|
billingPeriod: z.ZodOptional<z.ZodString>;
|
|
710
730
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -7039,6 +7039,11 @@ export declare const ZudokuConfig: z.ZodObject<{
|
|
|
7039
7039
|
sku: z.ZodString;
|
|
7040
7040
|
displayName: z.ZodString;
|
|
7041
7041
|
priceAmount: z.ZodDefault<z.ZodNumber>;
|
|
7042
|
+
pricingModel: z.ZodOptional<z.ZodEnum<{
|
|
7043
|
+
fixed: "fixed";
|
|
7044
|
+
custom: "custom";
|
|
7045
|
+
}>>;
|
|
7046
|
+
priceLabel: z.ZodOptional<z.ZodString>;
|
|
7042
7047
|
priceCurrency: z.ZodOptional<z.ZodString>;
|
|
7043
7048
|
billingPeriod: z.ZodOptional<z.ZodString>;
|
|
7044
7049
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -7,4 +7,8 @@ export declare const LOGIN_HEADER_NAV_ITEM: {
|
|
|
7
7
|
display: "anon";
|
|
8
8
|
};
|
|
9
9
|
export declare function withoutLoginNavigation(navigation: HeaderNavigation): HeaderNavigation;
|
|
10
|
-
export declare function applyAuthenticationHeaderNav<T extends ZudokuConfig
|
|
10
|
+
export declare function applyAuthenticationHeaderNav<T extends ZudokuConfig & {
|
|
11
|
+
__meta?: {
|
|
12
|
+
authenticationEnabled?: boolean;
|
|
13
|
+
};
|
|
14
|
+
}>(config: T): T;
|
|
@@ -4,10 +4,32 @@ export declare const useRefreshUserProfile: ({ refetchOnWindowFocus, }?: {
|
|
|
4
4
|
refetchOnWindowFocus?: boolean | "always";
|
|
5
5
|
}) => import("@tanstack/react-query").UseQueryResult<boolean | undefined, Error>;
|
|
6
6
|
export declare const useVerifiedEmail: () => {
|
|
7
|
-
email:
|
|
8
|
-
isVerified:
|
|
7
|
+
email: string | undefined;
|
|
8
|
+
isVerified: boolean | undefined;
|
|
9
9
|
supportsEmailVerification: boolean;
|
|
10
10
|
refresh: () => undefined;
|
|
11
11
|
requestEmailVerification: (options?: AuthActionOptions) => Promise<void>;
|
|
12
12
|
};
|
|
13
|
-
export declare const useAuth: () =>
|
|
13
|
+
export declare const useAuth: () => {
|
|
14
|
+
isBackendAvailable: boolean;
|
|
15
|
+
authMode: import("./state.js").AuthMode;
|
|
16
|
+
isDemoSession: boolean;
|
|
17
|
+
isDemoMode: boolean;
|
|
18
|
+
hasDistinctSignUpFlow: boolean;
|
|
19
|
+
login: (options?: AuthActionOptions) => Promise<void>;
|
|
20
|
+
logout: () => Promise<void>;
|
|
21
|
+
signup: (options?: AuthActionOptions) => Promise<void>;
|
|
22
|
+
requestEmailVerification: (options?: AuthActionOptions) => Promise<void>;
|
|
23
|
+
isAuthenticated: boolean;
|
|
24
|
+
isPending: boolean;
|
|
25
|
+
sessionChecked: boolean;
|
|
26
|
+
profile: import("./state.js").UserProfile | null;
|
|
27
|
+
providerData: import("./state.js").ProviderData | null;
|
|
28
|
+
setAuthenticationPending: () => void;
|
|
29
|
+
setLoggedOut: () => void;
|
|
30
|
+
setLoggedIn: (args: {
|
|
31
|
+
profile: import("./state.js").UserProfile;
|
|
32
|
+
providerData: import("./state.js").ProviderData;
|
|
33
|
+
}) => void;
|
|
34
|
+
isAuthEnabled: boolean;
|
|
35
|
+
};
|
|
@@ -21,9 +21,45 @@ type AuthStateStore = ReturnType<typeof createAuthStateStore>;
|
|
|
21
21
|
declare global {
|
|
22
22
|
var __APITOGO_AUTH_STATE: AuthStateStore | undefined;
|
|
23
23
|
}
|
|
24
|
-
declare function createAuthStateStore():
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
declare function createAuthStateStore(): import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<AuthState>, "setState" | "persist"> & {
|
|
25
|
+
setState(partial: AuthState | Partial<AuthState> | ((state: AuthState) => AuthState | Partial<AuthState>), replace?: false | undefined): unknown;
|
|
26
|
+
setState(state: AuthState | ((state: AuthState) => AuthState), replace: true): unknown;
|
|
27
|
+
persist: {
|
|
28
|
+
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<AuthState, unknown, unknown>>) => void;
|
|
29
|
+
clearStorage: () => void;
|
|
30
|
+
rehydrate: () => Promise<void> | void;
|
|
31
|
+
hasHydrated: () => boolean;
|
|
32
|
+
onHydrate: (fn: (state: AuthState) => void) => () => void;
|
|
33
|
+
onFinishHydration: (fn: (state: AuthState) => void) => () => void;
|
|
34
|
+
getOptions: () => Partial<import("zustand/middleware").PersistOptions<AuthState, unknown, unknown>>;
|
|
35
|
+
};
|
|
36
|
+
}>;
|
|
37
|
+
export declare const authState: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<AuthState>, "setState" | "persist"> & {
|
|
38
|
+
setState(partial: AuthState | Partial<AuthState> | ((state: AuthState) => AuthState | Partial<AuthState>), replace?: false | undefined): unknown;
|
|
39
|
+
setState(state: AuthState | ((state: AuthState) => AuthState), replace: true): unknown;
|
|
40
|
+
persist: {
|
|
41
|
+
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<AuthState, unknown, unknown>>) => void;
|
|
42
|
+
clearStorage: () => void;
|
|
43
|
+
rehydrate: () => Promise<void> | void;
|
|
44
|
+
hasHydrated: () => boolean;
|
|
45
|
+
onHydrate: (fn: (state: AuthState) => void) => () => void;
|
|
46
|
+
onFinishHydration: (fn: (state: AuthState) => void) => () => void;
|
|
47
|
+
getOptions: () => Partial<import("zustand/middleware").PersistOptions<AuthState, unknown, unknown>>;
|
|
48
|
+
};
|
|
49
|
+
}>;
|
|
50
|
+
export declare const useAuthState: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<AuthState>, "setState" | "persist"> & {
|
|
51
|
+
setState(partial: AuthState | Partial<AuthState> | ((state: AuthState) => AuthState | Partial<AuthState>), replace?: false | undefined): unknown;
|
|
52
|
+
setState(state: AuthState | ((state: AuthState) => AuthState), replace: true): unknown;
|
|
53
|
+
persist: {
|
|
54
|
+
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<AuthState, unknown, unknown>>) => void;
|
|
55
|
+
clearStorage: () => void;
|
|
56
|
+
rehydrate: () => Promise<void> | void;
|
|
57
|
+
hasHydrated: () => boolean;
|
|
58
|
+
onHydrate: (fn: (state: AuthState) => void) => () => void;
|
|
59
|
+
onFinishHydration: (fn: (state: AuthState) => void) => () => void;
|
|
60
|
+
getOptions: () => Partial<import("zustand/middleware").PersistOptions<AuthState, unknown, unknown>>;
|
|
61
|
+
};
|
|
62
|
+
}>;
|
|
27
63
|
export declare const waitForAuthStateHydration: () => Promise<void>;
|
|
28
64
|
export interface UserProfile {
|
|
29
65
|
sub: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Processor } from "
|
|
1
|
+
import type { Processor } from "../../../../config/validators/BuildSchema.js";
|
|
2
2
|
export declare const APITOGO_GATEWAY_URL_ENV = "APITOGO_GATEWAY_URL";
|
|
3
3
|
export declare function injectApitogoGatewayServer(options?: {
|
|
4
4
|
gatewayUrl?: string;
|
package/dist/flat-config.d.ts
CHANGED
|
@@ -68,6 +68,14 @@ export type _Schema37 = {
|
|
|
68
68
|
sku: string
|
|
69
69
|
displayName: string
|
|
70
70
|
priceAmount?: number
|
|
71
|
+
/**
|
|
72
|
+
* "custom" shows a contact-sales form instead of checkout; priceAmount must be 0.
|
|
73
|
+
*/
|
|
74
|
+
pricingModel?: ("fixed" | "custom")
|
|
75
|
+
/**
|
|
76
|
+
* Text shown instead of the price, e.g. "Custom".
|
|
77
|
+
*/
|
|
78
|
+
priceLabel?: string
|
|
71
79
|
priceCurrency?: string
|
|
72
80
|
billingPeriod?: string
|
|
73
81
|
limits?: {
|
|
@@ -86,31 +94,31 @@ export type _Schema37 = {
|
|
|
86
94
|
limitsJson?: string
|
|
87
95
|
includedActionKeys?: string[]
|
|
88
96
|
}[]
|
|
89
|
-
export type
|
|
97
|
+
export type _Schema40 = ({
|
|
90
98
|
type: "url"
|
|
91
|
-
input: (string |
|
|
92
|
-
server?:
|
|
93
|
-
path?:
|
|
94
|
-
categories?:
|
|
95
|
-
options?:
|
|
99
|
+
input: (string | _Schema41[])
|
|
100
|
+
server?: _Schema42
|
|
101
|
+
path?: _Schema43
|
|
102
|
+
categories?: _Schema44
|
|
103
|
+
options?: _Schema46
|
|
96
104
|
} | {
|
|
97
105
|
type: "file"
|
|
98
|
-
input: (string | (string |
|
|
99
|
-
server?:
|
|
100
|
-
path?:
|
|
101
|
-
categories?:
|
|
102
|
-
options?:
|
|
106
|
+
input: (string | (string | _Schema41)[])
|
|
107
|
+
server?: _Schema42
|
|
108
|
+
path?: _Schema43
|
|
109
|
+
categories?: _Schema44
|
|
110
|
+
options?: _Schema46
|
|
103
111
|
} | {
|
|
104
112
|
type: "raw"
|
|
105
113
|
input: string
|
|
106
|
-
server?:
|
|
107
|
-
path?:
|
|
108
|
-
categories?:
|
|
109
|
-
options?:
|
|
114
|
+
server?: _Schema42
|
|
115
|
+
path?: _Schema43
|
|
116
|
+
categories?: _Schema44
|
|
117
|
+
options?: _Schema46
|
|
110
118
|
})
|
|
111
|
-
export type
|
|
112
|
-
export type
|
|
113
|
-
export type
|
|
119
|
+
export type _Schema42 = string
|
|
120
|
+
export type _Schema43 = string
|
|
121
|
+
export type _Schema44 = {
|
|
114
122
|
label: string
|
|
115
123
|
tags: string[]
|
|
116
124
|
}[]
|
|
@@ -412,8 +420,8 @@ export interface FlatZudokuConfig {
|
|
|
412
420
|
landing?: _Schema16
|
|
413
421
|
userPanel?: _Schema25
|
|
414
422
|
}
|
|
415
|
-
apis?: (
|
|
416
|
-
catalogs?: (
|
|
423
|
+
apis?: (_Schema40 | _Schema40[])
|
|
424
|
+
catalogs?: (_Schema47 | _Schema47[])
|
|
417
425
|
apiKeys?: {
|
|
418
426
|
enabled: boolean
|
|
419
427
|
getConsumers?: unknown
|
|
@@ -441,7 +449,7 @@ export interface FlatZudokuConfig {
|
|
|
441
449
|
}
|
|
442
450
|
enableStatusPages?: boolean
|
|
443
451
|
defaults?: {
|
|
444
|
-
apis:
|
|
452
|
+
apis: _Schema46
|
|
445
453
|
examplesLanguage?: string
|
|
446
454
|
}
|
|
447
455
|
__pluginDirs?: string[]
|
|
@@ -731,12 +739,12 @@ export interface _Schema36 {
|
|
|
731
739
|
description?: string
|
|
732
740
|
}[]
|
|
733
741
|
}
|
|
734
|
-
export interface
|
|
742
|
+
export interface _Schema41 {
|
|
735
743
|
path: string
|
|
736
744
|
input: string
|
|
737
745
|
label?: string
|
|
738
746
|
}
|
|
739
|
-
export interface
|
|
747
|
+
export interface _Schema46 {
|
|
740
748
|
examplesLanguage?: string
|
|
741
749
|
supportedLanguages?: {
|
|
742
750
|
value: string
|
|
@@ -753,7 +761,7 @@ export interface _Schema44 {
|
|
|
753
761
|
transformExamples?: unknown
|
|
754
762
|
generateCodeSnippet?: unknown
|
|
755
763
|
}
|
|
756
|
-
export interface
|
|
764
|
+
export interface _Schema47 {
|
|
757
765
|
path: string
|
|
758
766
|
label: string
|
|
759
767
|
items?: string[]
|
package/docs/cli/go-live.md
CHANGED
|
@@ -49,7 +49,8 @@ npx apitogo status
|
|
|
49
49
|
- Creates or links the platform project
|
|
50
50
|
- Provisions modules and syncs gateway plans
|
|
51
51
|
- Deploys the API hub (when configured)
|
|
52
|
-
- Updates the portal backend (including auth API URL in `.env`) and builds + deploys the portal
|
|
52
|
+
- Updates the portal backend (including auth API URL in `.env`) and builds + deploys the portal
|
|
53
|
+
frontend
|
|
53
54
|
|
|
54
55
|
If deploy is blocked, fix the reported checklist (missing secrets, plan, OpenAPI). Do not invent
|
|
55
56
|
credentials.
|
|
@@ -69,24 +70,24 @@ npx apitogo deploy --only apihub,portal-frontend
|
|
|
69
70
|
npx apitogo deploy --only portal-frontend --force
|
|
70
71
|
```
|
|
71
72
|
|
|
72
|
-
| Resource
|
|
73
|
-
|
|
|
74
|
-
| `apihub`
|
|
75
|
-
| `portal-backend`
|
|
76
|
-
| `portal-frontend` | Site build + Static Web App deploy
|
|
73
|
+
| Resource | What it updates |
|
|
74
|
+
| ----------------- | ------------------------------------------------ |
|
|
75
|
+
| `apihub` | Gateway plans/baseline, API hub package + deploy |
|
|
76
|
+
| `portal-backend` | Dev-portal module settings and plan catalog |
|
|
77
|
+
| `portal-frontend` | Site build + Static Web App deploy |
|
|
77
78
|
|
|
78
79
|
Omit `--only` to apply all three. Use `--force` to redeploy even when hashes match.
|
|
79
80
|
|
|
80
81
|
## Other deploy flags
|
|
81
82
|
|
|
82
|
-
| Flag
|
|
83
|
-
|
|
|
84
|
-
| `--project-id`
|
|
85
|
-
| `--project-name`
|
|
83
|
+
| Flag | Purpose |
|
|
84
|
+
| ----------------- | ------------------------------------- |
|
|
85
|
+
| `--project-id` | Override project GUID |
|
|
86
|
+
| `--project-name` | Display name when creating a project |
|
|
86
87
|
| `--platform-plan` | `free` \| `starter` \| `professional` |
|
|
87
|
-
| `--resume-from`
|
|
88
|
-
| `--no-wait`
|
|
89
|
-
| `--json`
|
|
88
|
+
| `--resume-from` | Resume publish ledger from step id |
|
|
89
|
+
| `--no-wait` | Do not wait for long-running jobs |
|
|
90
|
+
| `--json` | Print raw JSON result only |
|
|
90
91
|
|
|
91
92
|
Resume state is stored in `.apitogo/publish-state.json`.
|
|
92
93
|
|
|
@@ -100,17 +101,17 @@ npx apitogo teardown --yes # delete the platform project
|
|
|
100
101
|
|
|
101
102
|
## Platform plan vs API plans
|
|
102
103
|
|
|
103
|
-
| Kind | Meaning | How
|
|
104
|
-
| ---------------- | ------------------------------------------- |
|
|
105
|
-
| Platform hosting | Free / Starter / Professional on APItoGo | `--platform-plan`
|
|
104
|
+
| Kind | Meaning | How |
|
|
105
|
+
| ---------------- | ------------------------------------------- | ------------------------------------------------------------------ |
|
|
106
|
+
| Platform hosting | Free / Starter / Professional on APItoGo | `--platform-plan` |
|
|
106
107
|
| Gateway / API | End-user SKUs and rate limits on `/pricing` | `apitogo.config.json` — [Gateway plans](../configuration/plans.md) |
|
|
107
108
|
|
|
108
109
|
## CLI deploy vs MCP publish
|
|
109
110
|
|
|
110
|
-
| Path
|
|
111
|
-
|
|
|
112
|
-
| `npx apitogo deploy` | Terminal, CI, scripts — full product go-live
|
|
113
|
-
| MCP `publish_dev_portal` | Agent-driven go-live with the same engine
|
|
111
|
+
| Path | Use when |
|
|
112
|
+
| ------------------------ | -------------------------------------------- |
|
|
113
|
+
| `npx apitogo deploy` | Terminal, CI, scripts — full product go-live |
|
|
114
|
+
| MCP `publish_dev_portal` | Agent-driven go-live with the same engine |
|
|
114
115
|
|
|
115
116
|
## Related
|
|
116
117
|
|
package/docs/components/slot.mdx
CHANGED
|
@@ -97,8 +97,8 @@ declare module "@lukoweb/apitogo" {
|
|
|
97
97
|
## Integration with Configuration
|
|
98
98
|
|
|
99
99
|
The Slot component works with configuration-based slots. Content defined in your
|
|
100
|
-
`apitogo.config.json` and content injected via `Slot.Source` components will be combined according
|
|
101
|
-
the `type` parameter.
|
|
100
|
+
`apitogo.config.json` and content injected via `Slot.Source` components will be combined according
|
|
101
|
+
to the `type` parameter.
|
|
102
102
|
|
|
103
103
|
```tsx
|
|
104
104
|
// In your site config
|
package/docs/components.mdx
CHANGED
|
@@ -9,50 +9,50 @@ Use these components in MDX pages and custom React pages. Import from `@lukoweb/
|
|
|
9
9
|
|
|
10
10
|
## General
|
|
11
11
|
|
|
12
|
-
| Component
|
|
13
|
-
|
|
|
14
|
-
| [Alert](/docs/components/alert)
|
|
15
|
-
| [Callout](/docs/components/callout)
|
|
16
|
-
| [Badge](/docs/components/badge)
|
|
17
|
-
| [Card](/docs/components/card)
|
|
18
|
-
| [Dialog](/docs/components/dialog)
|
|
19
|
-
| [Icons](/docs/components/icons)
|
|
20
|
-
| [Markdown](/docs/components/markdown)
|
|
21
|
-
| [Tooltip](/docs/components/tooltip)
|
|
12
|
+
| Component | Import | Description |
|
|
13
|
+
| ----------------------------------------- | ----------------------------- | ------------------------------------------------ |
|
|
14
|
+
| [Alert](/docs/components/alert) | `@lukoweb/apitogo/ui/Alert` | Important messages with severity levels |
|
|
15
|
+
| [Callout](/docs/components/callout) | `@lukoweb/apitogo/ui/Callout` | Highlight notes, tips, and warnings |
|
|
16
|
+
| [Badge](/docs/components/badge) | `@lukoweb/apitogo/ui/Badge` | Status labels and tags |
|
|
17
|
+
| [Card](/docs/components/card) | `@lukoweb/apitogo/ui/Card` | Grouped content with header, body, and footer |
|
|
18
|
+
| [Dialog](/docs/components/dialog) | `@lukoweb/apitogo/ui/Dialog` | Modal dialogs that require attention |
|
|
19
|
+
| [Icons](/docs/components/icons) | `@lukoweb/apitogo/icons` | Lucide icons re-exported for MDX and React |
|
|
20
|
+
| [Markdown](/docs/components/markdown) | `@lukoweb/apitogo/components` | Render markdown with syntax highlighting |
|
|
21
|
+
| [Tooltip](/docs/components/tooltip) | `@lukoweb/apitogo/ui/Tooltip` | Hover or focus hints |
|
|
22
22
|
| [Typography](/docs/components/typography) | `@lukoweb/apitogo/components` | Prose styling for headings, lists, and body text |
|
|
23
23
|
|
|
24
24
|
## Documentation
|
|
25
25
|
|
|
26
|
-
| Component
|
|
27
|
-
|
|
|
28
|
-
| [CodeTabs](/docs/components/code-tabs)
|
|
29
|
-
| [Mermaid](/docs/components/mermaid)
|
|
30
|
-
| [API Playground](/docs/components/playground)
|
|
31
|
-
| [Secret](/docs/components/secret)
|
|
32
|
-
| [Stepper](/docs/components/stepper)
|
|
33
|
-
| [Syntax Highlight](/docs/components/syntax-highlight) | `@lukoweb/apitogo/ui/SyntaxHighlight` | Highlighted code with line numbers and copy
|
|
26
|
+
| Component | Import | Description |
|
|
27
|
+
| ----------------------------------------------------- | ------------------------------------- | ---------------------------------------------------- |
|
|
28
|
+
| [CodeTabs](/docs/components/code-tabs) | MDX built-in | Tabbed code examples (languages or package managers) |
|
|
29
|
+
| [Mermaid](/docs/components/mermaid) | `@lukoweb/apitogo/mermaid` | Client-rendered Mermaid diagrams |
|
|
30
|
+
| [API Playground](/docs/components/playground) | MDX built-in | Try API requests from the docs |
|
|
31
|
+
| [Secret](/docs/components/secret) | `@lukoweb/apitogo/ui/Secret` | Mask and reveal API keys |
|
|
32
|
+
| [Stepper](/docs/components/stepper) | MDX built-in | Numbered multi-step guides |
|
|
33
|
+
| [Syntax Highlight](/docs/components/syntax-highlight) | `@lukoweb/apitogo/ui/SyntaxHighlight` | Highlighted code with line numbers and copy |
|
|
34
34
|
|
|
35
35
|
## Form
|
|
36
36
|
|
|
37
|
-
| Component
|
|
38
|
-
|
|
|
39
|
-
| [Button](/docs/components/button)
|
|
40
|
-
| [Checkbox](/docs/components/checkbox) | `@lukoweb/apitogo/ui/Checkbox` | Boolean checkbox input
|
|
41
|
-
| [Input](/docs/components/input)
|
|
42
|
-
| [Label](/docs/components/label)
|
|
43
|
-
| [Select](/docs/components/select)
|
|
44
|
-
| [Slider](/docs/components/slider)
|
|
45
|
-
| [Switch](/docs/components/switch)
|
|
46
|
-
| [Textarea](/docs/components/textarea) | `@lukoweb/apitogo/ui/Textarea` | Multiline text input
|
|
37
|
+
| Component | Import | Description |
|
|
38
|
+
| ------------------------------------- | ------------------------------ | ------------------------------- |
|
|
39
|
+
| [Button](/docs/components/button) | `@lukoweb/apitogo/ui/Button` | Actions with variants and sizes |
|
|
40
|
+
| [Checkbox](/docs/components/checkbox) | `@lukoweb/apitogo/ui/Checkbox` | Boolean checkbox input |
|
|
41
|
+
| [Input](/docs/components/input) | `@lukoweb/apitogo/ui/Input` | Single-line text input |
|
|
42
|
+
| [Label](/docs/components/label) | `@lukoweb/apitogo/ui/Label` | Accessible form labels |
|
|
43
|
+
| [Select](/docs/components/select) | `@lukoweb/apitogo/ui/Select` | Choose from a list of options |
|
|
44
|
+
| [Slider](/docs/components/slider) | `@lukoweb/apitogo/ui/Slider` | Numeric range input |
|
|
45
|
+
| [Switch](/docs/components/switch) | `@lukoweb/apitogo/ui/Switch` | Boolean toggle |
|
|
46
|
+
| [Textarea](/docs/components/textarea) | `@lukoweb/apitogo/ui/Textarea` | Multiline text input |
|
|
47
47
|
|
|
48
48
|
## Utility
|
|
49
49
|
|
|
50
|
-
| Component
|
|
51
|
-
|
|
|
52
|
-
| [ClientOnly](/docs/components/client-only) | `@lukoweb/apitogo/components` | Render children only on the client
|
|
53
|
-
| [Head](/docs/components/head)
|
|
54
|
-
| [Link](/docs/components/link)
|
|
55
|
-
| [Slot](/docs/components/slot)
|
|
50
|
+
| Component | Import | Description |
|
|
51
|
+
| ------------------------------------------ | ----------------------------- | ----------------------------------- |
|
|
52
|
+
| [ClientOnly](/docs/components/client-only) | `@lukoweb/apitogo/components` | Render children only on the client |
|
|
53
|
+
| [Head](/docs/components/head) | `@lukoweb/apitogo/components` | Set title, meta, and link tags |
|
|
54
|
+
| [Link](/docs/components/link) | `@lukoweb/apitogo/components` | Client-side and external navigation |
|
|
55
|
+
| [Slot](/docs/components/slot) | `@lukoweb/apitogo/components` | Inject content into layout slots |
|
|
56
56
|
|
|
57
57
|
## shadcn/ui
|
|
58
58
|
|
|
@@ -4,8 +4,8 @@ sidebar_label: Authentication and Identities
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
When building an API documentation portal, you often need a way for users to authenticate API
|
|
7
|
-
requests — API keys and other identities — separately from how they sign in to the portal.
|
|
8
|
-
|
|
7
|
+
requests — API keys and other identities — separately from how they sign in to the portal. APIToGo
|
|
8
|
+
splits **portal authentication** from **API identities**.
|
|
9
9
|
|
|
10
10
|
## Authentication Providers and API Identities
|
|
11
11
|
|