@mcp-consultant-tools/rest-api 27.0.0 → 28.0.0-beta.5

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 (45) hide show
  1. package/build/index.d.ts +6 -18
  2. package/build/index.d.ts.map +1 -1
  3. package/build/index.js +21 -376
  4. package/build/index.js.map +1 -1
  5. package/build/models/api-types.d.ts +133 -0
  6. package/build/models/api-types.d.ts.map +1 -0
  7. package/build/models/api-types.js +5 -0
  8. package/build/models/api-types.js.map +1 -0
  9. package/build/models/index.d.ts +5 -0
  10. package/build/models/index.d.ts.map +1 -0
  11. package/build/models/index.js +2 -0
  12. package/build/models/index.js.map +1 -0
  13. package/build/prompts/index.d.ts +2 -0
  14. package/build/prompts/index.d.ts.map +1 -0
  15. package/build/prompts/index.js +24 -0
  16. package/build/prompts/index.js.map +1 -0
  17. package/build/prompts/templates.d.ts +6 -0
  18. package/build/prompts/templates.d.ts.map +1 -0
  19. package/build/prompts/templates.js +169 -0
  20. package/build/prompts/templates.js.map +1 -0
  21. package/build/services/index.d.ts +5 -0
  22. package/build/services/index.d.ts.map +1 -0
  23. package/build/services/index.js +5 -0
  24. package/build/services/index.js.map +1 -0
  25. package/build/services/openapi-parser.d.ts +69 -0
  26. package/build/services/openapi-parser.d.ts.map +1 -0
  27. package/build/services/openapi-parser.js +151 -0
  28. package/build/services/openapi-parser.js.map +1 -0
  29. package/build/services/rest-api-service.d.ts +90 -0
  30. package/build/services/rest-api-service.d.ts.map +1 -0
  31. package/build/services/rest-api-service.js +403 -0
  32. package/build/services/rest-api-service.js.map +1 -0
  33. package/build/tools/index.d.ts +7 -0
  34. package/build/tools/index.d.ts.map +1 -0
  35. package/build/tools/index.js +6 -0
  36. package/build/tools/index.js.map +1 -0
  37. package/build/tools/rest-tools.d.ts +3 -0
  38. package/build/tools/rest-tools.d.ts.map +1 -0
  39. package/build/tools/rest-tools.js +165 -0
  40. package/build/tools/rest-tools.js.map +1 -0
  41. package/build/types.d.ts +9 -0
  42. package/build/types.d.ts.map +1 -0
  43. package/build/types.js +2 -0
  44. package/build/types.js.map +1 -0
  45. package/package.json +1 -1
package/build/index.d.ts CHANGED
@@ -3,25 +3,13 @@
3
3
  * @mcp-consultant-tools/rest-api
4
4
  *
5
5
  * MCP server for REST API testing with OAuth2 client credentials support.
6
- * Enables AI assistants to test HTTP endpoints with automatic JWT token generation.
7
- *
8
- * Features:
9
- * - HTTP methods: GET, POST, PUT, DELETE, PATCH
10
- * - Authentication: Static bearer, Basic auth, API key, OAuth2 client credentials
11
- * - Response size limiting and truncation
12
- * - SSL verification control
13
- * - Custom headers support
14
- */
15
- import { RestApiService } from "./RestApiService.js";
16
- /**
17
- * Register REST API tools and prompts to an MCP server
18
- * @param server - The MCP server instance
19
- * @param restApiService - Optional pre-configured RestApiService (for testing)
6
+ * Entry point: MCP server startup + registerRestApiTools().
20
7
  */
21
- export declare function registerRestApiTools(server: any, restApiService?: RestApiService): void;
22
8
  /**
23
- * Export service class for direct usage
9
+ * Register REST API tools and prompts to an MCP server.
24
10
  */
25
- export { RestApiService } from "./RestApiService.js";
26
- export type { RestApiConfig, RequestOptions, RequestResult, EndpointDefinition, EntitySchema, FieldDefinition, } from "./RestApiService.js";
11
+ export declare function registerRestApiTools(server: any): void;
12
+ export { RestApiService } from './services/rest-api-service.js';
13
+ export type { RestApiConfig, RequestOptions, RequestResult, EndpointDefinition, EntitySchema, FieldDefinition, } from './models/index.js';
14
+ export type { ServiceContext } from './types.js';
27
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAYH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAsGrD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,GAAG,EACX,cAAc,CAAC,EAAE,cAAc,QAsehC;AAED;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,GAChB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAoIH;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAItD;AAGD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,YAAY,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
package/build/index.js CHANGED
@@ -3,24 +3,15 @@
3
3
  * @mcp-consultant-tools/rest-api
4
4
  *
5
5
  * MCP server for REST API testing with OAuth2 client credentials support.
6
- * Enables AI assistants to test HTTP endpoints with automatic JWT token generation.
7
- *
8
- * Features:
9
- * - HTTP methods: GET, POST, PUT, DELETE, PATCH
10
- * - Authentication: Static bearer, Basic auth, API key, OAuth2 client credentials
11
- * - Response size limiting and truncation
12
- * - SSL verification control
13
- * - Custom headers support
6
+ * Entry point: MCP server startup + registerRestApiTools().
14
7
  */
15
8
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
16
- import { z } from "zod";
17
9
  import { pathToFileURL } from "node:url";
18
10
  import { realpathSync } from "node:fs";
19
- import { createMcpServer, createEnvLoader, createErrorResponse, createSuccessResponse, } from "@mcp-consultant-tools/core";
20
- import { RestApiService } from "./RestApiService.js";
21
- // Tool count for documentation
22
- const TOOL_COUNT = 6;
23
- const PROMPT_COUNT = 2;
11
+ import { createMcpServer, createEnvLoader } from "@mcp-consultant-tools/core";
12
+ import { RestApiService } from './services/rest-api-service.js';
13
+ import { registerAllTools } from './tools/index.js';
14
+ import { registerAllPrompts } from './prompts/index.js';
24
15
  /**
25
16
  * Parse environment variables for custom headers (HEADER_* pattern)
26
17
  */
@@ -66,7 +57,6 @@ function buildConfigFromEnv() {
66
57
  scope: process.env.OAUTH2_SCOPE,
67
58
  grantType: process.env.OAUTH2_GRANT_TYPE || "client_credentials",
68
59
  };
69
- // Parse additional OAuth2 parameters
70
60
  if (process.env.OAUTH2_ADDITIONAL_PARAMS) {
71
61
  try {
72
62
  config.oauth2.additionalParams = JSON.parse(process.env.OAUTH2_ADDITIONAL_PARAMS);
@@ -95,7 +85,7 @@ function buildConfigFromEnv() {
95
85
  value: process.env.AUTH_APIKEY_VALUE,
96
86
  };
97
87
  }
98
- // OpenAPI URL for dynamic discovery (recommended for DAB)
88
+ // OpenAPI URL for dynamic discovery
99
89
  if (process.env.REST_OPENAPI_URL) {
100
90
  config.openApiUrl = process.env.REST_OPENAPI_URL;
101
91
  console.error(`OpenAPI URL configured: ${config.openApiUrl}`);
@@ -103,13 +93,11 @@ function buildConfigFromEnv() {
103
93
  return config;
104
94
  }
105
95
  /**
106
- * Register REST API tools and prompts to an MCP server
107
- * @param server - The MCP server instance
108
- * @param restApiService - Optional pre-configured RestApiService (for testing)
96
+ * Build a ServiceContext from environment variables (lazy service initialization).
109
97
  */
110
- export function registerRestApiTools(server, restApiService) {
111
- let service = restApiService || null;
112
- function getRestApiService() {
98
+ function createServiceContext() {
99
+ let service = null;
100
+ function getService() {
113
101
  if (!service) {
114
102
  const config = buildConfigFromEnv();
115
103
  service = new RestApiService(config);
@@ -122,363 +110,20 @@ export function registerRestApiTools(server, restApiService) {
122
110
  }
123
111
  return service;
124
112
  }
125
- // ============================================================
126
- // TOOLS
127
- // ============================================================
128
- // Tool: rest-request
129
- server.tool("rest-request", `Test a REST API endpoint with automatic authentication. Supports GET, POST, PUT, DELETE, PATCH methods. Authentication is handled automatically based on server configuration (OAuth2 client credentials, bearer token, basic auth, or API key). Returns detailed request/response information including timing, headers, and body.`, {
130
- method: z
131
- .enum(["GET", "POST", "PUT", "DELETE", "PATCH"])
132
- .describe("HTTP method to use"),
133
- endpoint: z
134
- .string()
135
- .describe('Endpoint path (e.g., "/users", "/api/v1/orders"). Do not include the full URL - only the path.'),
136
- body: z
137
- .any()
138
- .optional()
139
- .describe("Request body for POST/PUT/PATCH requests (object or string)"),
140
- headers: z
141
- .record(z.string())
142
- .optional()
143
- .describe("Additional headers for this request. Do not use for auth - configure auth via environment variables."),
144
- host: z
145
- .string()
146
- .optional()
147
- .describe("Override base URL for this request only (e.g., 'https://other-api.com')"),
148
- }, async ({ method, endpoint, body, headers, host, }) => {
149
- try {
150
- const restService = getRestApiService();
151
- // Validate endpoint doesn't contain full URL
152
- const urlPattern = /^(https?:\/\/|www\.)/i;
153
- if (urlPattern.test(endpoint)) {
154
- return createErrorResponse(new Error(`Invalid endpoint format. Do not include full URLs. Use just the path (e.g., "/api/users") and optionally specify 'host' to override the base URL.`), "rest-request");
155
- }
156
- const options = {
157
- method,
158
- endpoint,
159
- body,
160
- headers,
161
- host,
162
- };
163
- const result = await restService.request(options);
164
- return createSuccessResponse(result);
165
- }
166
- catch (error) {
167
- return createErrorResponse(error, "rest-request");
168
- }
169
- });
170
- // Tool: rest-config
171
- server.tool("rest-config", "Get the current REST API service configuration summary, including base URL, authentication method, SSL settings, and custom headers count.", {}, async () => {
172
- try {
173
- const restService = getRestApiService();
174
- const summary = restService.getConfigSummary();
175
- return createSuccessResponse(summary);
176
- }
177
- catch (error) {
178
- return createErrorResponse(error, "rest-config");
179
- }
180
- });
181
- // Tool: rest-refresh-token
182
- server.tool("rest-refresh-token", "Force refresh the OAuth2 access token. Clears the token cache and acquires a new token on the next request. Only relevant when using OAuth2 authentication.", {}, async () => {
183
- try {
184
- const restService = getRestApiService();
185
- const authMethod = restService.getAuthMethod();
186
- if (authMethod !== "oauth2") {
187
- return createErrorResponse(new Error(`Token refresh only available for OAuth2 authentication. Current auth method: ${authMethod}`), "rest-refresh-token");
188
- }
189
- restService.clearTokenCache();
190
- return createSuccessResponse({
191
- message: "OAuth2 token cache cleared. A new token will be acquired on the next request.",
192
- });
193
- }
194
- catch (error) {
195
- return createErrorResponse(error, "rest-refresh-token");
196
- }
197
- });
198
- // Tool: rest-batch-request
199
- server.tool("rest-batch-request", "Execute multiple REST API requests sequentially. Useful for testing a series of related endpoints or performing a workflow. Returns results for all requests.", {
200
- requests: z.array(z.object({
201
- method: z.enum(["GET", "POST", "PUT", "DELETE", "PATCH"]),
202
- endpoint: z.string(),
203
- body: z.any().optional(),
204
- headers: z.record(z.string()).optional(),
205
- host: z.string().optional(),
206
- })).describe("Array of request configurations to execute sequentially"),
207
- stopOnError: z
208
- .boolean()
209
- .optional()
210
- .describe("Stop executing remaining requests if one fails (default: false)"),
211
- }, async ({ requests, stopOnError = false, }) => {
212
- try {
213
- const restService = getRestApiService();
214
- const results = [];
215
- for (let i = 0; i < requests.length; i++) {
216
- const req = requests[i];
217
- try {
218
- const result = await restService.request(req);
219
- results.push({
220
- index: i,
221
- endpoint: req.endpoint,
222
- success: !result.validation.isError,
223
- result,
224
- });
225
- if (stopOnError && result.validation.isError) {
226
- break;
227
- }
228
- }
229
- catch (error) {
230
- const errorMessage = error instanceof Error ? error.message : String(error);
231
- results.push({
232
- index: i,
233
- endpoint: req.endpoint,
234
- success: false,
235
- error: errorMessage,
236
- });
237
- if (stopOnError) {
238
- break;
239
- }
240
- }
241
- }
242
- return createSuccessResponse({
243
- totalRequests: requests.length,
244
- executedRequests: results.length,
245
- successfulRequests: results.filter((r) => r.success).length,
246
- results,
247
- });
248
- }
249
- catch (error) {
250
- return createErrorResponse(error, "rest-batch-request");
251
- }
252
- });
253
- // Tool: rest-list-endpoints
254
- server.tool("rest-list-endpoints", "List all available REST API endpoints with their supported HTTP methods. Use this to discover what entities/resources are available in the API. Requires REST_OPENAPI_URL configuration pointing to your API's OpenAPI/Swagger spec.", {
255
- filter: z
256
- .string()
257
- .optional()
258
- .describe("Optional filter to match endpoint paths (case-insensitive contains match). Example: 'exam' returns all exam-related endpoints."),
259
- }, async ({ filter }) => {
260
- try {
261
- const restService = getRestApiService();
262
- const result = await restService.listEndpointsAsync(filter);
263
- return createSuccessResponse(result);
264
- }
265
- catch (error) {
266
- return createErrorResponse(error, "rest-list-endpoints");
267
- }
268
- });
269
- // Tool: rest-get-schema
270
- server.tool("rest-get-schema", "Get the schema/field definitions for a specific entity. Returns field names, types, whether they're required, and any validation rules. Use this before creating or updating records to understand the data structure. Requires REST_OPENAPI_URL configuration pointing to your API's OpenAPI/Swagger spec.", {
271
- entity: z
272
- .string()
273
- .describe("Entity name (singular or plural). Examples: 'sic_exam', 'sic_exams', 'contact', 'contacts'"),
274
- }, async ({ entity }) => {
275
- try {
276
- const restService = getRestApiService();
277
- if (!restService.hasOpenApiConfig()) {
278
- return createErrorResponse(new Error("No schema configuration available. Configure REST_OPENAPI_URL pointing to your API's OpenAPI/Swagger spec."), "rest-get-schema");
279
- }
280
- const schema = await restService.getSchemaAsync(entity);
281
- if (!schema) {
282
- return createErrorResponse(new Error(`Entity '${entity}' not found. Use rest-list-endpoints to see available entities.`), "rest-get-schema");
283
- }
284
- return createSuccessResponse(schema);
285
- }
286
- catch (error) {
287
- return createErrorResponse(error, "rest-get-schema");
288
- }
289
- });
290
- // ============================================================
291
- // PROMPTS
292
- // ============================================================
293
- // Prompt: rest-api-guide
294
- server.prompt("rest-api-guide", "Comprehensive guide for using the REST API testing tools", {}, async () => {
295
- const markdown = `# REST API Testing Guide
296
-
297
- ## Overview
298
-
299
- This MCP server enables testing REST API endpoints with comprehensive authentication support, including automatic JWT token generation via OAuth2 client credentials flow.
300
-
301
- ## Available Tools
302
-
303
- ### 1. rest-request
304
- Execute a single HTTP request to any REST endpoint.
305
-
306
- **Parameters:**
307
- - \`method\`: HTTP method (GET, POST, PUT, DELETE, PATCH)
308
- - \`endpoint\`: API path (e.g., "/users", "/api/v1/orders")
309
- - \`body\`: Request body for POST/PUT/PATCH (optional)
310
- - \`headers\`: Additional headers (optional)
311
- - \`host\`: Override base URL (optional)
312
-
313
- **Example:**
314
- \`\`\`json
315
- {
316
- "method": "POST",
317
- "endpoint": "/api/users",
318
- "body": { "name": "John", "email": "john@example.com" }
319
- }
320
- \`\`\`
321
-
322
- ### 2. rest-config
323
- Get current service configuration summary.
324
-
325
- ### 3. rest-refresh-token
326
- Force refresh OAuth2 token (clears cache).
327
-
328
- ### 4. rest-batch-request
329
- Execute multiple requests sequentially.
330
-
331
- ## Authentication Methods
332
-
333
- ### OAuth2 Client Credentials (Recommended for APIs)
334
- Automatically acquires and caches JWT tokens. Tokens are refreshed when expired.
335
-
336
- Required environment variables:
337
- - \`OAUTH2_TOKEN_URL\`: Token endpoint URL
338
- - \`OAUTH2_CLIENT_ID\`: Client ID
339
- - \`OAUTH2_CLIENT_SECRET\`: Client secret
340
- - \`OAUTH2_SCOPE\`: OAuth2 scope
341
-
342
- ### Static Bearer Token
343
- For pre-acquired tokens:
344
- - \`AUTH_BEARER\`: The bearer token value
345
-
346
- ### Basic Authentication
347
- - \`AUTH_BASIC_USERNAME\`: Username
348
- - \`AUTH_BASIC_PASSWORD\`: Password
349
-
350
- ### API Key
351
- - \`AUTH_APIKEY_HEADER_NAME\`: Header name
352
- - \`AUTH_APIKEY_VALUE\`: API key value
353
-
354
- ## Configuration
355
-
356
- ### Required
357
- - \`REST_BASE_URL\`: Base URL for all requests
358
-
359
- ### Optional
360
- - \`REST_RESPONSE_SIZE_LIMIT\`: Max response size in bytes (default: 10000)
361
- - \`REST_ENABLE_SSL_VERIFY\`: SSL verification (default: true)
362
- - \`REST_TIMEOUT\`: Request timeout in ms (default: 30000)
363
- - \`HEADER_*\`: Custom headers (e.g., HEADER_Accept=application/json)
364
-
365
- ## Best Practices
366
-
367
- 1. **Use OAuth2 for production APIs** - Automatic token management
368
- 2. **Set appropriate response limits** - Prevent memory issues
369
- 3. **Use custom headers wisely** - Don't put secrets in headers
370
- 4. **Enable SSL verification** - Only disable for development
371
- `;
372
- return {
373
- messages: [
374
- {
375
- role: "user",
376
- content: { type: "text", text: markdown },
377
- },
378
- ],
379
- };
380
- });
381
- // Prompt: rest-api-troubleshoot
382
- server.prompt("rest-api-troubleshoot", "Troubleshooting guide for common REST API testing issues", {}, async () => {
383
- const markdown = `# REST API Troubleshooting Guide
384
-
385
- ## Common Issues and Solutions
386
-
387
- ### 1. Authentication Failures
388
-
389
- **Symptom:** 401 Unauthorized or 403 Forbidden responses
390
-
391
- **Solutions:**
392
- - For OAuth2: Check token URL, client ID, client secret, and scope
393
- - Use \`rest-refresh-token\` to force a new token
394
- - Verify scope matches API requirements
395
- - Check if credentials have expired
396
-
397
- ### 2. Connection Issues
398
-
399
- **Symptom:** ECONNREFUSED, ETIMEDOUT, or network errors
400
-
401
- **Solutions:**
402
- - Verify REST_BASE_URL is correct
403
- - Check if API is accessible from your network
404
- - For self-signed certs, set REST_ENABLE_SSL_VERIFY=false (dev only)
405
- - Increase REST_TIMEOUT for slow APIs
406
-
407
- ### 3. Response Truncation
408
-
409
- **Symptom:** Response body appears cut off
410
-
411
- **Solution:** Increase REST_RESPONSE_SIZE_LIMIT environment variable
412
-
413
- ### 4. Token Expiration
414
-
415
- **Symptom:** Requests work initially then fail with 401
416
-
417
- **Solution:**
418
- - OAuth2 tokens are auto-refreshed, but you can force with rest-refresh-token
419
- - For static bearer tokens, manually update AUTH_BEARER
420
-
421
- ### 5. CORS Issues
422
-
423
- **Note:** MCP servers run server-side, so CORS doesn't apply.
424
- If you see CORS-related errors, the issue is elsewhere.
425
-
426
- ## Debugging Steps
427
-
428
- 1. Use \`rest-config\` to verify current configuration
429
- 2. Try a simple GET request first
430
- 3. Check response timing for network issues
431
- 4. Examine response headers for error details
432
- 5. Use \`rest-refresh-token\` if auth seems stale
433
-
434
- ## Environment Variable Reference
435
-
436
- \`\`\`bash
437
- # Required
438
- REST_BASE_URL=https://api.example.com
439
-
440
- # OAuth2 (recommended)
441
- OAUTH2_TOKEN_URL=https://login.example.com/oauth2/token
442
- OAUTH2_CLIENT_ID=your-client-id
443
- OAUTH2_CLIENT_SECRET=your-secret
444
- OAUTH2_SCOPE=api://your-app/.default
445
-
446
- # Alternative: Static bearer
447
- AUTH_BEARER=your-token
448
-
449
- # Alternative: Basic auth
450
- AUTH_BASIC_USERNAME=user
451
- AUTH_BASIC_PASSWORD=pass
452
-
453
- # Alternative: API key
454
- AUTH_APIKEY_HEADER_NAME=X-Api-Key
455
- AUTH_APIKEY_VALUE=your-key
456
-
457
- # Optional settings
458
- REST_RESPONSE_SIZE_LIMIT=50000
459
- REST_ENABLE_SSL_VERIFY=true
460
- REST_TIMEOUT=60000
461
-
462
- # Custom headers
463
- HEADER_Accept=application/json
464
- HEADER_X-Custom=value
465
- \`\`\`
466
- `;
467
- return {
468
- messages: [
469
- {
470
- role: "user",
471
- content: { type: "text", text: markdown },
472
- },
473
- ],
474
- };
475
- });
476
- console.error(`REST API tools registered: ${TOOL_COUNT} tools, ${PROMPT_COUNT} prompts`);
113
+ return {
114
+ get restApi() { return getService(); },
115
+ };
477
116
  }
478
117
  /**
479
- * Export service class for direct usage
118
+ * Register REST API tools and prompts to an MCP server.
480
119
  */
481
- export { RestApiService } from "./RestApiService.js";
120
+ export function registerRestApiTools(server) {
121
+ const ctx = createServiceContext();
122
+ registerAllTools(server, ctx);
123
+ registerAllPrompts(server);
124
+ }
125
+ // Backward-compatible exports
126
+ export { RestApiService } from './services/rest-api-service.js';
482
127
  /**
483
128
  * Standalone CLI server (when run directly)
484
129
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACL,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,+BAA+B;AAC/B,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB;;GAEG;AACH,SAAS,uBAAuB;IAC9B,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,YAAY,GAAG,WAAW,CAAC;IAEjC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvD,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAClD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB;IACzB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,MAAM,GAAkB;QAC5B,OAAO;QACP,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB;YACrD,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,EAAE,CAAC;YACpD,CAAC,CAAC,KAAK;QACT,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,OAAO;QAC/D,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;YAC/B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC;YACxC,CAAC,CAAC,KAAK;QACT,aAAa,EAAE,uBAAuB,EAAE;KACzC,CAAC;IAEF,+CAA+C;IAC/C,IACE,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC5B,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC5B,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAChC,OAAO,CAAC,GAAG,CAAC,YAAY,EACxB,CAAC;QACD,MAAM,CAAC,MAAM,GAAG;YACd,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;YACtC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;YACtC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;YAC9C,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;YAC/B,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,oBAAoB;SACjE,CAAC;QAEF,qCAAqC;QACrC,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,CAAC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CACzC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CACrC,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IACD,sBAAsB;SACjB,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAC/C,CAAC;IACD,aAAa;SACR,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAC5E,MAAM,CAAC,SAAS,GAAG;YACjB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;YACzC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;SAC1C,CAAC;IACJ,CAAC;IACD,UAAU;SACL,IACH,OAAO,CAAC,GAAG,CAAC,uBAAuB;QACnC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAC7B,CAAC;QACD,MAAM,CAAC,MAAM,GAAG;YACd,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;YAC/C,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;SACrC,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,2BAA2B,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAW,EACX,cAA+B;IAE/B,IAAI,OAAO,GAA0B,cAAc,IAAI,IAAI,CAAC;IAE5D,SAAS,iBAAiB;QACxB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACpC,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,kBAAkB,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAC3D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,uBAAuB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,+DAA+D;IAC/D,QAAQ;IACR,+DAA+D;IAE/D,qBAAqB;IACrB,MAAM,CAAC,IAAI,CACT,cAAc,EACd,qUAAqU,EACrU;QACE,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;aAC/C,QAAQ,CAAC,oBAAoB,CAAC;QACjC,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,CACP,gGAAgG,CACjG;QACH,IAAI,EAAE,CAAC;aACJ,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,CAAC,6DAA6D,CAAC;QAC1E,OAAO,EAAE,CAAC;aACP,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aAClB,QAAQ,EAAE;aACV,QAAQ,CACP,sGAAsG,CACvG;QACH,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,yEAAyE,CAC1E;KACJ,EACD,KAAK,EAAE,EACL,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,IAAI,GAOL,EAAE,EAAE;QACH,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;YAExC,6CAA6C;YAC7C,MAAM,UAAU,GAAG,uBAAuB,CAAC;YAC3C,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,OAAO,mBAAmB,CACxB,IAAI,KAAK,CACP,mJAAmJ,CACpJ,EACD,cAAc,CACf,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAmB;gBAC9B,MAAM;gBACN,QAAQ;gBACR,IAAI;gBACJ,OAAO;gBACP,IAAI;aACL,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,oBAAoB;IACpB,MAAM,CAAC,IAAI,CACT,aAAa,EACb,4IAA4I,EAC5I,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,WAAW,CAAC,gBAAgB,EAAE,CAAC;YAC/C,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,2BAA2B;IAC3B,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,6JAA6J,EAC7J,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC;YAE/C,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,mBAAmB,CACxB,IAAI,KAAK,CACP,gFAAgF,UAAU,EAAE,CAC7F,EACD,oBAAoB,CACrB,CAAC;YACJ,CAAC;YAED,WAAW,CAAC,eAAe,EAAE,CAAC;YAC9B,OAAO,qBAAqB,CAAC;gBAC3B,OAAO,EAAE,+EAA+E;aACzF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CACF,CAAC;IAEF,2BAA2B;IAC3B,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,+JAA+J,EAC/J;QACE,QAAQ,EAAE,CAAC,CAAC,KAAK,CACf,CAAC,CAAC,MAAM,CAAC;YACP,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACzD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;YACpB,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACxB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;YACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B,CAAC,CACH,CAAC,QAAQ,CAAC,yDAAyD,CAAC;QACrE,WAAW,EAAE,CAAC;aACX,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,iEAAiE,CAAC;KAC/E,EACD,KAAK,EAAE,EACL,QAAQ,EACR,WAAW,GAAG,KAAK,GAIpB,EAAE,EAAE;QACH,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;YACxC,MAAM,OAAO,GAMP,EAAE,CAAC;YAET,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAExB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC9C,OAAO,CAAC,IAAI,CAAC;wBACX,KAAK,EAAE,CAAC;wBACR,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO;wBACnC,MAAM;qBACP,CAAC,CAAC;oBAEH,IAAI,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;wBAC7C,MAAM;oBACR,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzD,OAAO,CAAC,IAAI,CAAC;wBACX,KAAK,EAAE,CAAC;wBACR,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,YAAY;qBACpB,CAAC,CAAC;oBAEH,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,qBAAqB,CAAC;gBAC3B,aAAa,EAAE,QAAQ,CAAC,MAAM;gBAC9B,gBAAgB,EAAE,OAAO,CAAC,MAAM;gBAChC,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM;gBAC3D,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CACF,CAAC;IAEF,4BAA4B;IAC5B,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,sOAAsO,EACtO;QACE,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,gIAAgI,CACjI;KACJ,EACD,KAAK,EAAE,EAAE,MAAM,EAAuB,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC5D,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CACF,CAAC;IAEF,wBAAwB;IACxB,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,6SAA6S,EAC7S;QACE,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,CACP,4FAA4F,CAC7F;KACJ,EACD,KAAK,EAAE,EAAE,MAAM,EAAsB,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;YAExC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBACpC,OAAO,mBAAmB,CACxB,IAAI,KAAK,CACP,4GAA4G,CAC7G,EACD,iBAAiB,CAClB,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAExD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,mBAAmB,CACxB,IAAI,KAAK,CACP,WAAW,MAAM,iEAAiE,CACnF,EACD,iBAAiB,CAClB,CAAC;YACJ,CAAC;YAED,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,+DAA+D;IAC/D,UAAU;IACV,+DAA+D;IAE/D,yBAAyB;IACzB,MAAM,CAAC,MAAM,CACX,gBAAgB,EAChB,0DAA0D,EAC1D,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4EtB,CAAC;QACI,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1C;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,gCAAgC;IAChC,MAAM,CAAC,MAAM,CACX,uBAAuB,EACvB,0DAA0D,EAC1D,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmFtB,CAAC;QACI,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1C;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,OAAO,CAAC,KAAK,CACX,8BAA8B,UAAU,WAAW,YAAY,UAAU,CAC1E,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAUrD;;GAEG;AACH,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1E,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,OAAO,EAAE,CAAC;IAEV,MAAM,MAAM,GAAG,eAAe,CAAC;QAC7B,IAAI,EAAE,gCAAgC;QACtC,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;SACZ;KACF,CAAC,CAAC;IAEH,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;QAC/C,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * REST API types and configuration interfaces
3
+ */
4
+ /**
5
+ * Endpoint definition for API discovery
6
+ */
7
+ export interface EndpointDefinition {
8
+ /** Endpoint path (e.g., "/users", "/sic_exams") */
9
+ path: string;
10
+ /** Supported HTTP methods */
11
+ methods: ("GET" | "POST" | "PUT" | "DELETE" | "PATCH")[];
12
+ /** Entity name (singular) if applicable */
13
+ entityName?: string;
14
+ /** Human-readable description */
15
+ description?: string;
16
+ }
17
+ /**
18
+ * Field definition for entity schema
19
+ */
20
+ export interface FieldDefinition {
21
+ /** Field name */
22
+ name: string;
23
+ /** Data type (e.g., "string", "Guid", "int", "datetime", "decimal") */
24
+ type: string;
25
+ /** Whether the field is required for creation */
26
+ required: boolean;
27
+ /** Whether the field can be null */
28
+ nullable: boolean;
29
+ /** Maximum length for string fields */
30
+ maxLength?: number;
31
+ /** Human-readable description */
32
+ description?: string;
33
+ /** Foreign key reference */
34
+ foreignKey?: {
35
+ entity: string;
36
+ field: string;
37
+ };
38
+ /** Enum/option set values */
39
+ enumValues?: string[];
40
+ }
41
+ /**
42
+ * Entity schema definition
43
+ */
44
+ export interface EntitySchema {
45
+ /** Entity name (singular) */
46
+ entityName: string;
47
+ /** Plural name for the endpoint */
48
+ pluralName: string;
49
+ /** Endpoint path */
50
+ endpoint: string;
51
+ /** Primary key field name */
52
+ primaryKey: string;
53
+ /** Field definitions */
54
+ fields: FieldDefinition[];
55
+ /** Example object for creating/updating */
56
+ example?: Record<string, any>;
57
+ }
58
+ export interface RestApiConfig {
59
+ /** Base URL for all requests (e.g., "https://api.example.com/v1") */
60
+ baseUrl: string;
61
+ /** Response size limit in bytes (default: 10000) */
62
+ responseSizeLimit?: number;
63
+ /** Enable SSL certificate verification (default: true) */
64
+ enableSslVerify?: boolean;
65
+ /** Static bearer token (mutually exclusive with oauth2) */
66
+ bearerToken?: string;
67
+ /** Basic auth credentials */
68
+ basicAuth?: {
69
+ username: string;
70
+ password: string;
71
+ };
72
+ /** API key authentication */
73
+ apiKey?: {
74
+ headerName: string;
75
+ value: string;
76
+ };
77
+ /** OAuth2 client credentials configuration */
78
+ oauth2?: {
79
+ /** Token endpoint URL (e.g., "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token") */
80
+ tokenUrl: string;
81
+ /** OAuth2 Client ID */
82
+ clientId: string;
83
+ /** OAuth2 Client Secret */
84
+ clientSecret: string;
85
+ /** OAuth2 Scope (e.g., "https://api.example.com/.default") */
86
+ scope: string;
87
+ /** Optional grant type (defaults to "client_credentials") */
88
+ grantType?: string;
89
+ /** Optional additional token request parameters */
90
+ additionalParams?: Record<string, string>;
91
+ };
92
+ /** Custom headers to include in all requests */
93
+ customHeaders?: Record<string, string>;
94
+ /** Request timeout in milliseconds (default: 30000) */
95
+ timeout?: number;
96
+ /** URL to fetch OpenAPI/Swagger spec for dynamic discovery */
97
+ openApiUrl?: string;
98
+ }
99
+ export interface RequestOptions {
100
+ method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
101
+ endpoint: string;
102
+ body?: any;
103
+ headers?: Record<string, string>;
104
+ /** Override base URL for this request only */
105
+ host?: string;
106
+ }
107
+ export interface RequestResult {
108
+ request: {
109
+ url: string;
110
+ method: string;
111
+ headers: Record<string, string>;
112
+ body?: any;
113
+ authMethod: string;
114
+ };
115
+ response: {
116
+ statusCode: number;
117
+ statusText: string;
118
+ timing: string;
119
+ headers: Record<string, any>;
120
+ body: any;
121
+ };
122
+ validation: {
123
+ isError: boolean;
124
+ messages: string[];
125
+ truncated?: {
126
+ originalSize: number;
127
+ returnedSize: number;
128
+ truncationPoint: number;
129
+ sizeLimit: number;
130
+ };
131
+ };
132
+ }
133
+ //# sourceMappingURL=api-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-types.d.ts","sourceRoot":"","sources":["../../src/models/api-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * REST API types and configuration interfaces
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=api-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-types.js","sourceRoot":"","sources":["../../src/models/api-types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Models barrel export
3
+ */
4
+ export type { EndpointDefinition, FieldDefinition, EntitySchema, RestApiConfig, RequestOptions, RequestResult, } from './api-types.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,gBAAgB,CAAC"}