Files
tool-evaluator/docs/releases/v0.9.4/reference.json
T

2854 lines
69 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"tags": [
{
"name": "health",
"description": "Health operations",
"endpoints": [
{
"operationId": "healthCheck",
"method": "GET",
"path": "/healthz",
"summary": "Health check",
"description": "Returns server health status",
"parameters": [],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Healthy",
"schema": {
"kind": "ref",
"value": "HealthStatus"
}
}
]
},
{
"operationId": "getVersion",
"method": "GET",
"path": "/version",
"summary": "Build version information",
"description": "Returns the running build version, commit SHA and build date",
"parameters": [],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Version information",
"schema": {
"kind": "ref",
"value": "VersionInfo"
}
}
]
}
]
},
{
"name": "tools",
"description": "Tool management",
"endpoints": [
{
"operationId": "listTools",
"method": "GET",
"path": "/tools",
"summary": "List all tools",
"description": "",
"parameters": [
{
"name": "category",
"in": "query",
"required": false,
"type": {
"kind": "type",
"value": "string"
},
"description": "",
"constraints": ""
},
{
"name": "search",
"in": "query",
"required": false,
"type": {
"kind": "type",
"value": "string"
},
"description": "",
"constraints": ""
},
{
"name": "sort",
"in": "query",
"required": false,
"type": {
"kind": "type",
"value": "string"
},
"description": "",
"constraints": "newest, top_rated, most_reviewed, name_asc, name_desc, recently_updated"
},
{
"name": "tags",
"in": "query",
"required": false,
"type": {
"kind": "type",
"value": "string"
},
"description": "Comma-separated tags; tool must include all of them",
"constraints": ""
},
{
"name": "features",
"in": "query",
"required": false,
"type": {
"kind": "type",
"value": "string"
},
"description": "Comma-separated features; tool must include all of them",
"constraints": ""
},
{
"name": "minRating",
"in": "query",
"required": false,
"type": {
"kind": "type",
"value": "number"
},
"description": "Minimum average combined rating (0-5)",
"constraints": "05"
}
],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "List of tools",
"schema": {
"kind": "array",
"value": "ToolWithStats"
}
}
]
},
{
"operationId": "createTool",
"method": "POST",
"path": "/tools",
"summary": "Create a new tool",
"description": "",
"parameters": [],
"requestBody": {
"required": true,
"schema": {
"kind": "ref",
"value": "ToolInput"
}
},
"responses": [
{
"status": "201",
"description": "Created tool",
"schema": {
"kind": "ref",
"value": "Tool"
}
},
{
"status": "400",
"description": "Validation error",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "listCompareTools",
"method": "GET",
"path": "/compare",
"summary": "Compare tools side by side (premium)",
"description": "",
"parameters": [
{
"name": "ids",
"in": "query",
"required": true,
"type": {
"kind": "type",
"value": "string"
},
"description": "Comma-separated tool ids",
"constraints": ""
}
],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Tools in requested order",
"schema": {
"kind": "array",
"value": "ToolWithStats"
}
},
{
"status": "401",
"description": "Authentication required",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
},
{
"status": "403",
"description": "Premium feature required",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "getToolRatingHistory",
"method": "GET",
"path": "/tools/{id}/rating-history",
"summary": "Get a tool's rating history over time",
"description": "",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"type": {
"kind": "type",
"value": "integer"
},
"description": "",
"constraints": ""
}
],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Rating history",
"schema": {
"kind": "array",
"value": "RatingHistoryItem"
}
},
{
"status": "400",
"description": "Invalid id",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "getTool",
"method": "GET",
"path": "/tools/{id}",
"summary": "Get a tool by ID",
"description": "",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"type": {
"kind": "type",
"value": "integer"
},
"description": "",
"constraints": ""
}
],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Tool details",
"schema": {
"kind": "ref",
"value": "ToolWithStats"
}
},
{
"status": "404",
"description": "Not found",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "updateTool",
"method": "PATCH",
"path": "/tools/{id}",
"summary": "Update a tool",
"description": "",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"type": {
"kind": "type",
"value": "integer"
},
"description": "",
"constraints": ""
}
],
"requestBody": {
"required": true,
"schema": {
"kind": "ref",
"value": "ToolUpdate"
}
},
"responses": [
{
"status": "200",
"description": "Updated tool",
"schema": {
"kind": "ref",
"value": "Tool"
}
},
{
"status": "404",
"description": "Not found",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "deleteTool",
"method": "DELETE",
"path": "/tools/{id}",
"summary": "Delete a tool",
"description": "",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"type": {
"kind": "type",
"value": "integer"
},
"description": "",
"constraints": ""
}
],
"requestBody": null,
"responses": [
{
"status": "204",
"description": "Deleted",
"schema": {
"kind": "type",
"value": "any"
}
},
{
"status": "404",
"description": "Not found",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "listTrashedTools",
"method": "GET",
"path": "/tools/trash",
"summary": "List trashed (soft-deleted) tools",
"description": "",
"parameters": [
{
"name": "search",
"in": "query",
"required": false,
"type": {
"kind": "type",
"value": "string"
},
"description": "",
"constraints": ""
}
],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "List of trashed tools",
"schema": {
"kind": "array",
"value": "Tool"
}
},
{
"status": "403",
"description": "Feature \"trash\" requires a higher tier",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "trashTools",
"method": "POST",
"path": "/tools/trash",
"summary": "Move tools to trash (admin)",
"description": "",
"parameters": [],
"requestBody": {
"required": true,
"schema": {
"kind": "ref",
"value": "TrashToolsInput"
}
},
"responses": [
{
"status": "200",
"description": "Tools trashed",
"schema": {
"kind": "type",
"value": "object"
}
},
{
"status": "403",
"description": "Admin required",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "deleteTrashedTools",
"method": "DELETE",
"path": "/tools/trash",
"summary": "Permanently delete trashed tools (admin)",
"description": "",
"parameters": [],
"requestBody": {
"required": true,
"schema": {
"kind": "ref",
"value": "TrashToolsInput"
}
},
"responses": [
{
"status": "204",
"description": "Deleted",
"schema": {
"kind": "type",
"value": "any"
}
},
{
"status": "403",
"description": "Admin required",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "restoreTools",
"method": "POST",
"path": "/tools/trash/restore",
"summary": "Restore trashed tools",
"description": "",
"parameters": [],
"requestBody": {
"required": true,
"schema": {
"kind": "ref",
"value": "TrashToolsInput"
}
},
"responses": [
{
"status": "200",
"description": "Tools restored",
"schema": {
"kind": "type",
"value": "object"
}
},
{
"status": "403",
"description": "Feature \"trash\" requires a higher tier",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "emptyTrash",
"method": "POST",
"path": "/tools/trash/empty",
"summary": "Permanently delete all trashed tools (admin)",
"description": "",
"parameters": [],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Trash emptied",
"schema": {
"kind": "type",
"value": "object"
}
},
{
"status": "403",
"description": "Admin required",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "listCategories",
"method": "GET",
"path": "/categories",
"summary": "List all distinct tool categories",
"description": "",
"parameters": [],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Categories list",
"schema": {
"kind": "array",
"value": "string"
}
}
]
},
{
"operationId": "listAllFeatures",
"method": "GET",
"path": "/features/all",
"summary": "List all distinct feature strings across all tools",
"description": "",
"parameters": [],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "All known features",
"schema": {
"kind": "array",
"value": "string"
}
}
]
},
{
"operationId": "listAllTags",
"method": "GET",
"path": "/tags/all",
"summary": "List all distinct tag strings across all tools",
"description": "",
"parameters": [],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "All known tags",
"schema": {
"kind": "array",
"value": "string"
}
}
]
}
]
},
{
"name": "ratings",
"description": "Tool ratings",
"endpoints": [
{
"operationId": "listToolRatings",
"method": "GET",
"path": "/tools/{id}/ratings",
"summary": "List ratings for a tool",
"description": "",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"type": {
"kind": "type",
"value": "integer"
},
"description": "",
"constraints": ""
}
],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Ratings list",
"schema": {
"kind": "array",
"value": "Rating"
}
}
]
},
{
"operationId": "createRating",
"method": "POST",
"path": "/tools/{id}/ratings",
"summary": "Submit a rating for a tool",
"description": "",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"type": {
"kind": "type",
"value": "integer"
},
"description": "",
"constraints": ""
}
],
"requestBody": {
"required": true,
"schema": {
"kind": "ref",
"value": "RatingInput"
}
},
"responses": [
{
"status": "201",
"description": "Created rating",
"schema": {
"kind": "ref",
"value": "Rating"
}
},
{
"status": "400",
"description": "Validation error",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
},
{
"status": "404",
"description": "Tool not found",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
}
]
},
{
"name": "analytics",
"description": "Analytics and aggregated statistics",
"endpoints": [
{
"operationId": "getAnalyticsSummary",
"method": "GET",
"path": "/analytics/summary",
"summary": "Overall platform statistics",
"description": "",
"parameters": [],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Platform-level summary stats",
"schema": {
"kind": "ref",
"value": "AnalyticsSummary"
}
}
]
},
{
"operationId": "getTopTools",
"method": "GET",
"path": "/analytics/top-tools",
"summary": "Top-rated tools",
"description": "",
"parameters": [
{
"name": "limit",
"in": "query",
"required": false,
"type": {
"kind": "type",
"value": "integer"
},
"description": "",
"constraints": ""
},
{
"name": "metric",
"in": "query",
"required": false,
"type": {
"kind": "type",
"value": "string"
},
"description": "",
"constraints": "usefulness, usability, combined"
}
],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Top tools list",
"schema": {
"kind": "array",
"value": "TopToolEntry"
}
}
]
},
{
"operationId": "getAnalyticsByCategory",
"method": "GET",
"path": "/analytics/by-category",
"summary": "Rating statistics grouped by category",
"description": "",
"parameters": [],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Per-category statistics",
"schema": {
"kind": "array",
"value": "CategoryStats"
}
}
]
},
{
"operationId": "getRatingDistribution",
"method": "GET",
"path": "/analytics/rating-distribution",
"summary": "Distribution of rating scores across the platform",
"description": "",
"parameters": [
{
"name": "toolId",
"in": "query",
"required": false,
"type": {
"kind": "type",
"value": "integer"
},
"description": "",
"constraints": ""
}
],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Rating score distribution",
"schema": {
"kind": "ref",
"value": "RatingDistribution"
}
}
]
}
]
},
{
"name": "auth",
"description": "Authentication",
"endpoints": [
{
"operationId": "getAuthMode",
"method": "GET",
"path": "/auth/mode",
"summary": "Get authentication mode (oidc or local)",
"description": "",
"parameters": [],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Auth mode",
"schema": {
"kind": "ref",
"value": "AuthMode"
}
}
]
},
{
"operationId": "getCsrfToken",
"method": "GET",
"path": "/auth/csrf",
"summary": "Get a CSRF token for state-changing requests",
"description": "",
"parameters": [],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "CSRF token",
"schema": {
"kind": "ref",
"value": "CsrfToken"
}
}
]
},
{
"operationId": "localLogin",
"method": "POST",
"path": "/auth/login",
"summary": "Local username/password login",
"description": "",
"parameters": [],
"requestBody": {
"required": true,
"schema": {
"kind": "ref",
"value": "LocalLoginInput"
}
},
"responses": [
{
"status": "200",
"description": "Logged in successfully",
"schema": {
"kind": "ref",
"value": "AuthUser"
}
},
{
"status": "401",
"description": "Invalid credentials",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "getMe",
"method": "GET",
"path": "/auth/me",
"summary": "Get current authenticated user",
"description": "",
"parameters": [],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Current user info",
"schema": {
"kind": "ref",
"value": "AuthUser"
}
},
{
"status": "401",
"description": "Not authenticated",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "changeMyPassword",
"method": "POST",
"path": "/auth/me/password",
"summary": "Change own password (local users only)",
"description": "",
"parameters": [],
"requestBody": {
"required": true,
"schema": {
"kind": "ref",
"value": "ChangePasswordInput"
}
},
"responses": [
{
"status": "204",
"description": "Password changed",
"schema": {
"kind": "type",
"value": "any"
}
},
{
"status": "400",
"description": "Invalid input or wrong current password",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
},
{
"status": "401",
"description": "Not authenticated",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
},
{
"status": "422",
"description": "OIDC user - password is managed by the identity provider",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
},
{
"status": "429",
"description": "Too many attempts",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "getPasswordRedirect",
"method": "GET",
"path": "/auth/password-redirect",
"summary": "Get redirect URL for managing credentials in the identity provider",
"description": "",
"parameters": [],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Redirect URL (null in local mode)",
"schema": {
"kind": "ref",
"value": "PasswordRedirect"
}
}
]
},
{
"operationId": "getMePreferences",
"method": "GET",
"path": "/auth/me/preferences",
"summary": "Get current user's browse preferences",
"description": "",
"parameters": [],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "User preferences",
"schema": {
"kind": "ref",
"value": "UserPreferences"
}
},
{
"status": "401",
"description": "Not authenticated",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "updateMePreferences",
"method": "PUT",
"path": "/auth/me/preferences",
"summary": "Update current user's browse preferences",
"description": "",
"parameters": [],
"requestBody": {
"required": true,
"schema": {
"kind": "ref",
"value": "UserPreferences"
}
},
"responses": [
{
"status": "200",
"description": "Updated preferences",
"schema": {
"kind": "ref",
"value": "UserPreferences"
}
},
{
"status": "401",
"description": "Not authenticated",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "getMeWatchlist",
"method": "GET",
"path": "/auth/me/watchlist",
"summary": "Get current user's watchlist tools (premium)",
"description": "",
"parameters": [],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Watchlist tools in saved order",
"schema": {
"kind": "array",
"value": "ToolWithStats"
}
},
{
"status": "401",
"description": "Not authenticated",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
},
{
"status": "403",
"description": "Premium feature required",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
}
]
},
{
"name": "users",
"description": "User management (admin only)",
"endpoints": [
{
"operationId": "listUsers",
"method": "GET",
"path": "/users",
"summary": "List all local users (admin only)",
"description": "",
"parameters": [],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "User list",
"schema": {
"kind": "array",
"value": "User"
}
},
{
"status": "401",
"description": "Not authenticated",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
},
{
"status": "403",
"description": "Forbidden",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "createUser",
"method": "POST",
"path": "/users",
"summary": "Create a new local user (admin only)",
"description": "",
"parameters": [],
"requestBody": {
"required": true,
"schema": {
"kind": "ref",
"value": "UserCreateInput"
}
},
"responses": [
{
"status": "201",
"description": "Created user",
"schema": {
"kind": "ref",
"value": "User"
}
},
{
"status": "400",
"description": "Validation error",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
},
{
"status": "409",
"description": "Username already exists",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "updateUser",
"method": "PATCH",
"path": "/users/{id}",
"summary": "Update user role (admin only)",
"description": "",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"type": {
"kind": "type",
"value": "integer"
},
"description": "",
"constraints": ""
}
],
"requestBody": {
"required": true,
"schema": {
"kind": "ref",
"value": "UserRoleUpdate"
}
},
"responses": [
{
"status": "200",
"description": "Updated user",
"schema": {
"kind": "ref",
"value": "User"
}
},
{
"status": "404",
"description": "User not found",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
},
{
"operationId": "deleteUser",
"method": "DELETE",
"path": "/users/{id}",
"summary": "Delete a user (admin only)",
"description": "",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"type": {
"kind": "type",
"value": "integer"
},
"description": "",
"constraints": ""
}
],
"requestBody": null,
"responses": [
{
"status": "204",
"description": "Deleted",
"schema": {
"kind": "type",
"value": "any"
}
}
]
},
{
"operationId": "setUserPassword",
"method": "PATCH",
"path": "/users/{id}/password",
"summary": "Set/reset a user's password (admin only, local users only)",
"description": "",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"type": {
"kind": "type",
"value": "integer"
},
"description": "",
"constraints": ""
}
],
"requestBody": {
"required": true,
"schema": {
"kind": "ref",
"value": "SetPasswordInput"
}
},
"responses": [
{
"status": "204",
"description": "Password updated",
"schema": {
"kind": "type",
"value": "any"
}
},
{
"status": "400",
"description": "Validation error",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
},
{
"status": "404",
"description": "User not found",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
},
{
"status": "422",
"description": "OIDC user - password is managed by the identity provider",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
},
{
"status": "429",
"description": "Too many attempts",
"schema": {
"kind": "ref",
"value": "ErrorResponse"
}
}
]
}
]
},
{
"name": "audit",
"description": "Audit log",
"endpoints": [
{
"operationId": "listAuditLogs",
"method": "GET",
"path": "/audit-logs",
"summary": "List audit log entries (admin only)",
"description": "",
"parameters": [
{
"name": "entityType",
"in": "query",
"required": false,
"type": {
"kind": "type",
"value": "string"
},
"description": "",
"constraints": ""
},
{
"name": "entityId",
"in": "query",
"required": false,
"type": {
"kind": "type",
"value": "integer"
},
"description": "",
"constraints": ""
},
{
"name": "limit",
"in": "query",
"required": false,
"type": {
"kind": "type",
"value": "integer"
},
"description": "",
"constraints": ""
}
],
"requestBody": null,
"responses": [
{
"status": "200",
"description": "Audit log entries",
"schema": {
"kind": "array",
"value": "AuditLog"
}
}
]
}
]
}
],
"schemas": [
{
"name": "HealthStatus",
"description": "",
"fields": [
{
"name": "status",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
}
]
},
{
"name": "VersionInfo",
"description": "",
"fields": [
{
"name": "version",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "commitSha",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "buildDate",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "trashRetentionDays",
"type": {
"kind": "type",
"value": "integer"
},
"required": false,
"description": "",
"constraints": ""
}
]
},
{
"name": "AuthMode",
"description": "",
"fields": [
{
"name": "mode",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "oidc, local"
}
]
},
{
"name": "CsrfToken",
"description": "",
"fields": [
{
"name": "token",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
}
]
},
{
"name": "LocalLoginInput",
"description": "",
"fields": [
{
"name": "username",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "password",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
}
]
},
{
"name": "User",
"description": "",
"fields": [
{
"name": "id",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "username",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "email",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "role",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "admin, user"
},
{
"name": "tier",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": "free, premium, enterprise"
},
{
"name": "authProvider",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": "local, oidc"
},
{
"name": "createdAt",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "date-time"
}
]
},
{
"name": "UserCreateInput",
"description": "",
"fields": [
{
"name": "username",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "min 2 chars"
},
{
"name": "password",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "min 6 chars"
},
{
"name": "email",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "role",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": "admin, user"
},
{
"name": "tier",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": "free, premium, enterprise"
}
]
},
{
"name": "UserRoleUpdate",
"description": "",
"fields": [
{
"name": "role",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": "admin, user"
},
{
"name": "tier",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": "free, premium, enterprise"
}
]
},
{
"name": "ChangePasswordInput",
"description": "",
"fields": [
{
"name": "currentPassword",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "min 1 chars"
},
{
"name": "newPassword",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "min 6 chars"
}
]
},
{
"name": "SetPasswordInput",
"description": "",
"fields": [
{
"name": "password",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "min 6 chars"
}
]
},
{
"name": "PasswordRedirect",
"description": "",
"fields": [
{
"name": "url",
"type": {
"kind": "type",
"value": "string | null"
},
"required": true,
"description": "",
"constraints": ""
}
]
},
{
"name": "AuditLog",
"description": "",
"fields": [
{
"name": "id",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "entityType",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "entityId",
"type": {
"kind": "type",
"value": "integer | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "action",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "userId",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "username",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "changes",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "createdAt",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "date-time"
}
]
},
{
"name": "Tool",
"description": "",
"fields": [
{
"name": "id",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "name",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "description",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "category",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "websiteUrl",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "iconUrl",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "createdBy",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "features",
"type": {
"kind": "array",
"value": "string"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "tags",
"type": {
"kind": "array",
"value": "string"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "createdAt",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "date-time"
},
{
"name": "updatedAt",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "date-time"
},
{
"name": "deletedAt",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": "date-time"
},
{
"name": "deletedBy",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
}
]
},
{
"name": "RatingHistoryItem",
"description": "",
"fields": [
{
"name": "date",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "date-time"
},
{
"name": "usefulness",
"type": {
"kind": "type",
"value": "number"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "usability",
"type": {
"kind": "type",
"value": "number"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "combined",
"type": {
"kind": "type",
"value": "number"
},
"required": true,
"description": "",
"constraints": ""
}
]
},
{
"name": "ToolWithStats",
"description": "",
"fields": [
{
"name": "id",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "name",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "description",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "category",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "websiteUrl",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "iconUrl",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "createdBy",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "features",
"type": {
"kind": "array",
"value": "string"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "tags",
"type": {
"kind": "array",
"value": "string"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "createdAt",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "date-time"
},
{
"name": "updatedAt",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "date-time"
},
{
"name": "ratingCount",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "avgUsefulness",
"type": {
"kind": "type",
"value": "number | null"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "avgUsability",
"type": {
"kind": "type",
"value": "number | null"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "avgCombined",
"type": {
"kind": "type",
"value": "number | null"
},
"required": true,
"description": "",
"constraints": ""
}
]
},
{
"name": "ToolInput",
"description": "",
"fields": [
{
"name": "name",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "min 1 chars"
},
{
"name": "description",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "min 1 chars"
},
{
"name": "category",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "min 1 chars"
},
{
"name": "websiteUrl",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "iconUrl",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "features",
"type": {
"kind": "array",
"value": "string"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "tags",
"type": {
"kind": "array",
"value": "string"
},
"required": false,
"description": "",
"constraints": ""
}
]
},
{
"name": "ToolImportBody",
"description": "",
"fields": [
{
"name": "format",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": "auto, csv, json, yaml"
},
{
"name": "delimiter",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": "auto, comma, semicolon, tab"
},
{
"name": "data",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
}
]
},
{
"name": "ToolImportResponse",
"description": "",
"fields": [
{
"name": "imported",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "total",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "errors",
"type": {
"kind": "array",
"value": "object"
},
"required": true,
"description": "",
"constraints": ""
}
]
},
{
"name": "ToolUpdate",
"description": "",
"fields": [
{
"name": "name",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": "min 1 chars"
},
{
"name": "description",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "category",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "websiteUrl",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "iconUrl",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "features",
"type": {
"kind": "array",
"value": "string"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "tags",
"type": {
"kind": "array",
"value": "string"
},
"required": false,
"description": "",
"constraints": ""
}
]
},
{
"name": "TrashToolsInput",
"description": "",
"fields": [
{
"name": "ids",
"type": {
"kind": "array",
"value": "integer"
},
"required": true,
"description": "",
"constraints": "min 1 items, max 500 items"
}
]
},
{
"name": "Rating",
"description": "",
"fields": [
{
"name": "id",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "toolId",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "usefulness",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": "15"
},
{
"name": "usability",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": "15"
},
{
"name": "comment",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "reviewerName",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "createdAt",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": "date-time"
}
]
},
{
"name": "RatingInput",
"description": "",
"fields": [
{
"name": "usefulness",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": "15"
},
{
"name": "usability",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": "15"
},
{
"name": "comment",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "reviewerName",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": ""
}
]
},
{
"name": "AnalyticsSummary",
"description": "",
"fields": [
{
"name": "totalTools",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "totalRatings",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "avgUsefulness",
"type": {
"kind": "type",
"value": "number | null"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "avgUsability",
"type": {
"kind": "type",
"value": "number | null"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "avgCombined",
"type": {
"kind": "type",
"value": "number | null"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "categoriesCount",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "mostRatedTool",
"type": {
"kind": "ref",
"value": "ToolWithStats"
},
"required": false,
"description": "",
"constraints": ""
}
]
},
{
"name": "TopToolEntry",
"description": "",
"fields": [
{
"name": "tool",
"type": {
"kind": "ref",
"value": "ToolWithStats"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "score",
"type": {
"kind": "type",
"value": "number"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "ratingCount",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
}
]
},
{
"name": "CategoryStats",
"description": "",
"fields": [
{
"name": "category",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "toolCount",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "totalRatings",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "avgUsefulness",
"type": {
"kind": "type",
"value": "number | null"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "avgUsability",
"type": {
"kind": "type",
"value": "number | null"
},
"required": true,
"description": "",
"constraints": ""
}
]
},
{
"name": "RatingDistribution",
"description": "",
"fields": [
{
"name": "usefulness",
"type": {
"kind": "array",
"value": "ScoreBucket"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "usability",
"type": {
"kind": "array",
"value": "ScoreBucket"
},
"required": true,
"description": "",
"constraints": ""
}
]
},
{
"name": "ScoreBucket",
"description": "",
"fields": [
{
"name": "score",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "count",
"type": {
"kind": "type",
"value": "integer"
},
"required": true,
"description": "",
"constraints": ""
}
]
},
{
"name": "AuthUser",
"description": "",
"fields": [
{
"name": "sub",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
},
{
"name": "email",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "name",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "preferredUsername",
"type": {
"kind": "type",
"value": "string | null"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "role",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": "admin, user"
},
{
"name": "tier",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": "free, premium, enterprise"
},
{
"name": "entitlements",
"type": {
"kind": "array",
"value": "string"
},
"required": false,
"description": "",
"constraints": ""
},
{
"name": "isLocal",
"type": {
"kind": "type",
"value": "boolean"
},
"required": false,
"description": "",
"constraints": ""
}
]
},
{
"name": "UserPreferences",
"description": "",
"fields": [
{
"name": "view",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": "grid, table, rows"
},
{
"name": "density",
"type": {
"kind": "type",
"value": "string"
},
"required": false,
"description": "",
"constraints": "cozy, compact"
},
{
"name": "watchlist",
"type": {
"kind": "array",
"value": "integer"
},
"required": false,
"description": "",
"constraints": ""
}
]
},
{
"name": "ErrorResponse",
"description": "",
"fields": [
{
"name": "error",
"type": {
"kind": "type",
"value": "string"
},
"required": true,
"description": "",
"constraints": ""
}
]
}
]
}