import { createQueryApi } from '@kevisual/query/api'; const api = { "test": { /** * test route * * @param data - Request parameters * @param data.a - {string} arg a */ "test": { "path": "test", "key": "test", "description": "test route", "middleware": [], "metadata": { "args": { "a": { "$schema": "https://json-schema.org/draft/2020-12/schema", "description": "arg a", "type": "string", "optional": true } } } } }, "demo": { /** * First demo route demonstrating string and number parameters * * @param data - Request parameters * @param data.username - {string (minLength: 3, maxLength: 20)} The username to be validated, must be between 3 and 20 characters * @param data.age - {number (min: 18, max: 100)} The age of the user, must be between 18 and 100 * @param data.email - {string (format: email)} The email address of the user for notification purposes * @param data.count - {integer (max: 9007199254740991, > 0)} The number of items to process, must be a positive integer * @param data.name - {string} The display name of the user */ "d1": { "path": "demo", "key": "d1", "description": "First demo route demonstrating string and number parameters", "middleware": [], "metadata": { "args": { "username": { "$schema": "https://json-schema.org/draft/2020-12/schema", "description": "The username to be validated, must be between 3 and 20 characters", "type": "string", "minLength": 3, "maxLength": 20, "optional": true }, "age": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "number", "minimum": 18, "maximum": 100, "description": "The age of the user, must be between 18 and 100" }, "email": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "description": "The email address of the user for notification purposes" }, "count": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991, "description": "The number of items to process, must be a positive integer" }, "name": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "description": "The display name of the user" } } } }, /** * Second demo route for boolean and enum parameters * * @param data - Request parameters * @param data.isActive - {boolean} Whether the user account is currently active and accessible * @param data.isAdmin - {boolean} Whether the user has administrative privileges * @param data.notifications - {boolean} Whether to enable email and push notifications * @param data.mode - {"read" | "write" | "execute"} The operation mode for the current session * @param data.verified - {boolean} Whether the user email has been verified */ "d2": { "path": "demo", "key": "d2", "description": "Second demo route for boolean and enum parameters", "middleware": [], "metadata": { "args": { "isActive": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "boolean", "description": "Whether the user account is currently active and accessible" }, "isAdmin": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "boolean", "description": "Whether the user has administrative privileges" }, "notifications": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "boolean", "description": "Whether to enable email and push notifications" }, "mode": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "enum": [ "read", "write", "execute" ], "description": "The operation mode for the current session" }, "verified": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "boolean", "description": "Whether the user email has been verified" } } } }, /** * Third demo route handling array and optional parameters * * @param data - Request parameters * @param data.tags - {array} List of tags associated with the content, between 1 and 10 tags * @param data.categories - {array} List of category names for filtering and classification * @param data.ids - {array} Array of numeric identifiers for the resources * @param data.priority - {number (min: 1, max: 5)} Priority level from 1 to 5, defaults to 3 if not specified * @param data.keywords - {array} Keywords for search optimization, up to 20 keywords */ "d3": { "path": "demo", "key": "d3", "description": "Third demo route handling array and optional parameters", "middleware": [], "metadata": { "args": { "tags": { "$schema": "https://json-schema.org/draft/2020-12/schema", "minItems": 1, "maxItems": 10, "type": "array", "items": { "type": "string" }, "description": "List of tags associated with the content, between 1 and 10 tags" }, "categories": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "array", "items": { "type": "string" }, "description": "List of category names for filtering and classification" }, "ids": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "array", "items": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "description": "Array of numeric identifiers for the resources" }, "priority": { "$schema": "https://json-schema.org/draft/2020-12/schema", "description": "Priority level from 1 to 5, defaults to 3 if not specified", "type": "number", "minimum": 1, "maximum": 5, "optional": true }, "keywords": { "$schema": "https://json-schema.org/draft/2020-12/schema", "maxItems": 20, "type": "array", "items": { "type": "string" }, "description": "Keywords for search optimization, up to 20 keywords" } } } }, /** * Fourth demo route with nested object parameters * * @param data - Request parameters * @param data.user - {object} Complete user profile information * @param data.settings - {object} User preference settings * @param data.address - {object} Mailing address, optional field */ "d4": { "path": "demo", "key": "d4", "description": "Fourth demo route with nested object parameters", "middleware": [], "metadata": { "args": { "user": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "id": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991, "description": "Unique identifier for the user" }, "name": { "type": "string", "description": "Full name of the user" }, "contact": { "type": "object", "properties": { "email": { "type": "string", "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "description": "Primary email address" }, "phone": { "description": "Phone number with country code", "type": "string" } }, "required": [ "email" ], "additionalProperties": false, "description": "Contact information for the user" } }, "required": [ "id", "name", "contact" ], "additionalProperties": false, "description": "Complete user profile information" }, "settings": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "theme": { "type": "string", "enum": [ "light", "dark", "auto" ], "description": "UI theme preference" }, "language": { "default": "en", "description": "Preferred language code", "type": "string" }, "timezone": { "type": "string", "description": "Timezone identifier like America/New_York" } }, "required": [ "theme", "language", "timezone" ], "additionalProperties": false, "description": "User preference settings" }, "address": { "$schema": "https://json-schema.org/draft/2020-12/schema", "description": "Mailing address, optional field", "type": "object", "properties": { "street": { "type": "string", "description": "Street address line" }, "city": { "type": "string", "description": "City name" }, "country": { "type": "string", "description": "Country code or name" } }, "required": [ "street", "city", "country" ], "additionalProperties": false, "optional": true } } } }, /** * Fifth demo route with mixed complex parameters and validation * * @param data - Request parameters * @param data.query - {string (minLength: 1)} Search query string, minimum 1 character required * @param data.filters - {object} Advanced search filters configuration * @param data.pagination - {object} Pagination settings for query results * @param data.includeMetadata - {boolean} Whether to include metadata in response * @param data.timeout - {number (min: 1000, max: 30000)} Request timeout in milliseconds, between 1s and 30s * @param data.retry - {integer (min: 0, max: 5)} Number of retry attempts on failure */ "d5": { "path": "demo", "key": "d5", "description": "Fifth demo route with mixed complex parameters and validation", "middleware": [], "metadata": { "args": { "query": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "string", "minLength": 1, "description": "Search query string, minimum 1 character required" }, "filters": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "type": { "type": "string", "enum": [ "all", "image", "video", "audio", "document" ], "description": "Content type filter" }, "dateRange": { "description": "Date range filter, optional", "type": "object", "properties": { "start": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", "description": "Start date in ISO 8601 format" }, "end": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", "description": "End date in ISO 8601 format" } }, "required": [ "start", "end" ], "additionalProperties": false }, "size": { "description": "Size filter for media content", "type": "string", "enum": [ "small", "medium", "large", "extra-large" ] } }, "required": [ "type" ], "additionalProperties": false, "description": "Advanced search filters configuration" }, "pagination": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "page": { "default": 1, "description": "Page number starting from 1", "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "limit": { "default": 20, "description": "Number of items per page, max 100", "type": "integer", "exclusiveMinimum": 0, "maximum": 100 }, "sort": { "default": "desc", "description": "Sort order for results", "type": "string", "enum": [ "asc", "desc" ] } }, "required": [ "page", "limit", "sort" ], "additionalProperties": false, "description": "Pagination settings for query results" }, "includeMetadata": { "$schema": "https://json-schema.org/draft/2020-12/schema", "default": false, "description": "Whether to include metadata in response", "type": "boolean", "optional": true }, "timeout": { "$schema": "https://json-schema.org/draft/2020-12/schema", "description": "Request timeout in milliseconds, between 1s and 30s", "type": "number", "minimum": 1000, "maximum": 30000, "optional": true }, "retry": { "$schema": "https://json-schema.org/draft/2020-12/schema", "default": 3, "description": "Number of retry attempts on failure", "type": "integer", "minimum": 0, "maximum": 5, "optional": true } } } } }, "router": { /** * 列出当前应用下的所有的路由信息 */ "list": { "path": "router", "key": "list", "description": "列出当前应用下的所有的路由信息", "middleware": [] } } } as const; const queryApi = createQueryApi({ api }); export { queryApi };