{ "openapi": "3.0.0", "info": { "title": "Vincent Registry API", "version": "1.0.3", "description": "API for Vincent App, Tool, and Policy Registry" }, "servers": [ { "url": "https://staging.registry.heyvincent.ai" }, { "url": "https://registry.heyvincent.ai" }, { "url": "http://localhost:3000/" } ], "components": { "securitySchemes": { "siweAuth": { "type": "apiKey", "in": "header", "name": "Authorization", "description": "Sign In With Ethereum authentication (SIWE). Format is \"SIWE: [Base64EncodedSignedSiwe]\"" } }, "schemas": { "Error": { "type": "object", "properties": { "code": { "type": "string", "description": "Error code", "example": "VALIDATION_ERROR" }, "message": { "type": "string", "description": "Error message", "example": "Invalid input provided" } }, "required": [ "message" ] }, "DeleteResponse": { "type": "object", "properties": { "message": { "type": "string", "description": "Success message", "example": "Successfully deleted" } }, "required": [ "message" ] }, "ChangeOwner": { "type": "object", "properties": { "authorWalletAddress": { "type": "string", "description": "New owner address", "example": "0x123456789012345678901234567890123456abcd" } }, "required": [ "authorWalletAddress" ] }, "AppCreate": { "type": "object", "properties": { "deploymentStatus": { "type": "string", "enum": [ "dev", "test", "prod" ], "default": "dev", "description": "Identifies if an application is in development, test, or production.", "example": "dev" }, "contactEmail": { "type": "string", "format": "email", "description": "Contact email for the application manager", "example": "contact@example.com" }, "appUserUrl": { "type": "string", "format": "uri", "description": "This should be a landing page for the app.", "example": "https://myapplication.example.com/" }, "logo": { "type": "string", "description": "Base64 encoded logo image", "example": "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvwAADr8BOAVTJAAAAA5JREFUGFdj/M+ACAAAAAD//wE7AnsAAAAAAElFTkSuQmCC" }, "redirectUris": { "type": "array", "items": { "type": "string", "format": "uri" }, "description": "Redirect URIs users can be sent to after signing up for your application (with their JWT token).", "example": [ "https://myapp.example.com", "https://myapp.example.com/subpage" ] }, "managerAddress": { "type": "string", "description": "App manager's wallet address. Derived from the authorization signature provided by the creator.", "example": "0x123456789012345678901234567890123456abcd" }, "name": { "type": "string", "description": "The name of the application", "example": "Memecoin DCA App" }, "description": { "type": "string", "description": "Description of the application", "example": "This is a memecoin DCA App." } }, "required": [ "name" ], "additionalProperties": false }, "AppEdit": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the application", "example": "Memecoin DCA App" }, "description": { "type": "string", "description": "Description of the application", "example": "This is a memecoin DCA App." }, "contactEmail": { "type": "string", "format": "email", "description": "Contact email for the application manager", "example": "contact@example.com" }, "appUserUrl": { "type": "string", "format": "uri", "description": "This should be a landing page for the app.", "example": "https://myapplication.example.com/" }, "logo": { "type": "string", "description": "Base64 encoded logo image", "example": "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvwAADr8BOAVTJAAAAA5JREFUGFdj/M+ACAAAAAD//wE7AnsAAAAAAElFTkSuQmCC" }, "redirectUris": { "type": "array", "items": { "type": "string", "format": "uri" }, "description": "Redirect URIs users can be sent to after signing up for your application (with their JWT token).", "example": [ "https://myapp.example.com", "https://myapp.example.com/subpage" ] }, "deploymentStatus": { "type": "string", "enum": [ "dev", "test", "prod" ], "description": "Identifies if an application is in development, test, or production.", "example": "dev" }, "activeVersion": { "type": "number", "description": "Active version of the application", "example": 1 } }, "additionalProperties": false }, "App": { "type": "object", "properties": { "_id": { "type": "string", "description": "Document ID", "readOnly": true }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp when this was last modified" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when this was created" }, "appId": { "type": "number", "description": "Application ID", "example": 12345, "readOnly": true }, "activeVersion": { "type": "number", "description": "Active version of the application", "example": 1 }, "name": { "type": "string", "description": "The name of the application", "example": "Memecoin DCA App" }, "description": { "type": "string", "description": "Description of the application", "example": "This is a memecoin DCA App." }, "contactEmail": { "type": "string", "format": "email", "description": "Contact email for the application manager", "example": "contact@example.com" }, "appUserUrl": { "type": "string", "format": "uri", "description": "This should be a landing page for the app.", "example": "https://myapplication.example.com/" }, "logo": { "type": "string", "description": "Base64 encoded logo image", "example": "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvwAADr8BOAVTJAAAAA5JREFUGFdj/M+ACAAAAAD//wE7AnsAAAAAAElFTkSuQmCC" }, "redirectUris": { "type": "array", "items": { "type": "string", "format": "uri" }, "description": "Redirect URIs users can be sent to after signing up for your application (with their JWT token).", "example": [ "https://myapp.example.com", "https://myapp.example.com/subpage" ] }, "deploymentStatus": { "type": "string", "enum": [ "dev", "test", "prod" ], "description": "Identifies if an application is in development, test, or production.", "example": "dev" }, "managerAddress": { "type": "string", "description": "App manager's wallet address. Derived from the authorization signature provided by the creator.", "example": "0x123456789012345678901234567890123456abcd" } }, "required": [ "_id", "updatedAt", "createdAt", "appId", "name", "managerAddress" ], "additionalProperties": false }, "AppVersionCreate": { "type": "object", "properties": { "changes": { "type": "string", "description": "Describes what changed between this version and the previous version.", "example": "I am a changelog trapped in a computer!" } }, "additionalProperties": false }, "AppVersionEdit": { "type": "object", "properties": { "changes": { "type": "string", "description": "Describes what changed between this version and the previous version.", "example": "I am a changelog trapped in a computer!" } }, "additionalProperties": false }, "AppVersion": { "type": "object", "properties": { "_id": { "type": "string", "description": "Document ID", "readOnly": true }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp when this was last modified" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when this was created" }, "appId": { "type": "number", "description": "Application ID", "example": 12312345, "readOnly": true }, "version": { "type": "number", "description": "App Version number", "example": 1, "readOnly": true }, "enabled": { "type": "boolean", "description": "Whether this version is enabled or not", "example": true }, "changes": { "type": "string", "description": "Describes what changed between this version and the previous version.", "example": "I am a changelog trapped in a computer!" } }, "required": [ "_id", "updatedAt", "createdAt", "appId", "version", "enabled" ], "additionalProperties": false }, "AppVersionToolCreate": { "type": "object", "properties": { "hiddenSupportedPolicies": { "type": "array", "items": { "type": "string" }, "description": "Policies that are supported by this tool, but are hidden from users of this app specifically", "example": [ "@vincent/foo-bar-policy-1", "@vincent/foo-bar-policy-2" ] }, "toolVersion": { "type": "string", "description": "Tool version", "example": "1.0.0" } }, "required": [ "toolVersion" ], "additionalProperties": false }, "AppVersionToolEdit": { "type": "object", "properties": { "hiddenSupportedPolicies": { "type": "array", "items": { "type": "string" }, "description": "Policies that are supported by this tool, but are hidden from users of this app specifically", "example": [ "@vincent/foo-bar-policy-1", "@vincent/foo-bar-policy-2" ] } }, "additionalProperties": false }, "AppVersionTool": { "type": "object", "properties": { "_id": { "type": "string", "description": "Document ID", "readOnly": true }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp when this was last modified" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when this was created" }, "appId": { "type": "number", "description": "Application ID", "example": 5, "readOnly": true }, "appVersion": { "type": "number", "description": "Application version", "example": 2, "readOnly": true }, "toolPackageName": { "type": "string", "description": "Tool package name", "example": "@vincent/foo-bar" }, "toolVersion": { "type": "string", "description": "Tool version", "example": "1.0.0" }, "hiddenSupportedPolicies": { "type": "array", "items": { "type": "string" }, "description": "Policies that are supported by this tool, but are hidden from users of this app specifically", "example": [ "@vincent/foo-bar-policy-1", "@vincent/foo-bar-policy-2" ] } }, "required": [ "_id", "updatedAt", "createdAt", "appId", "appVersion", "toolPackageName", "toolVersion" ], "additionalProperties": false }, "ToolCreate": { "type": "object", "properties": { "activeVersion": { "type": "string", "description": "Active version of the tool", "example": "1.0.0" }, "title": { "type": "string", "description": "Tool title - displayed to users in the dashboard/Vincent Explorer UI", "example": "ERC20 Approval Tool" }, "description": { "type": "string", "description": "Tool description - displayed to users in the dashboard/Vincent Explorer UI", "example": "A tool that manages ERC20 approvals for PKPs. Facilitates vincent-uniswap-swap-tool usage." }, "authorWalletAddress": { "type": "string", "description": "Author wallet address. Derived from the authorization signature provided by the creator.", "example": "0x123456789012345678901234567890123456abcd" } }, "required": [ "activeVersion", "description", "authorWalletAddress" ], "additionalProperties": false }, "ToolEdit": { "type": "object", "properties": { "activeVersion": { "type": "string", "description": "Active version of the tool", "example": "1.0.0" }, "title": { "type": "string", "description": "Tool title - displayed to users in the dashboard/Vincent Explorer UI", "example": "ERC20 Approval Tool" }, "description": { "type": "string", "description": "Tool description - displayed to users in the dashboard/Vincent Explorer UI", "example": "A tool that manages ERC20 approvals for PKPs. Facilitates vincent-uniswap-swap-tool usage." } }, "additionalProperties": false }, "Tool": { "type": "object", "properties": { "_id": { "type": "string", "description": "Document ID", "readOnly": true }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp when this was last modified" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when this was created" }, "packageName": { "type": "string", "description": "Tool NPM package name", "example": "@lit-protocol/vincent-erc20-approval-tool" }, "title": { "type": "string", "description": "Tool title - displayed to users in the dashboard/Vincent Explorer UI", "example": "ERC20 Approval Tool" }, "authorWalletAddress": { "type": "string", "description": "Author wallet address. Derived from the authorization signature provided by the creator.", "example": "0x123456789012345678901234567890123456abcd" }, "description": { "type": "string", "description": "Tool description - displayed to users in the dashboard/Vincent Explorer UI", "example": "A tool that manages ERC20 approvals for PKPs. Facilitates vincent-uniswap-swap-tool usage." }, "activeVersion": { "type": "string", "description": "Active version of the tool", "example": "1.0.0" } }, "required": [ "_id", "updatedAt", "createdAt", "packageName", "authorWalletAddress", "description", "activeVersion" ], "additionalProperties": false }, "ToolVersionCreate": { "type": "object", "properties": { "changes": { "type": "string", "description": "Changelog information for this version", "example": "Ensure commit() is run on spending policy limit for users who have it enabled." } }, "required": [ "changes" ], "additionalProperties": false }, "ToolVersionEdit": { "type": "object", "properties": { "changes": { "type": "string", "description": "Changelog information for this version", "example": "Ensure commit() is run on spending policy limit for users who have it enabled." } }, "required": [ "changes" ], "additionalProperties": false }, "ToolVersion": { "type": "object", "properties": { "_id": { "type": "string", "description": "Document ID", "readOnly": true }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp when this was last modified" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when this was created" }, "packageName": { "type": "string", "description": "Tool NPM package name", "example": "@lit-protocol/vincent-erc20-approval-tool" }, "version": { "type": "string", "description": "Tool version - must be an exact semver.", "example": "1.0.0" }, "changes": { "type": "string", "description": "Changelog information for this version", "example": "Ensure commit() is run on spending policy limit for users who have it enabled." }, "repository": { "type": "array", "items": { "type": "string" }, "description": "Repository URLs" }, "description": { "type": "string", "description": "Policy description", "example": "This policy is a foo bar policy" }, "keywords": { "type": "array", "items": { "type": "string" }, "description": "Keywords for the policy", "example": [ "defi", "memecoin" ] }, "dependencies": { "type": "array", "items": { "type": "string" }, "description": "Dependencies of the policy" }, "author": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the author", "example": "Developer Name" }, "email": { "type": "string", "format": "email", "description": "Email of the author", "example": "contact@example.com" }, "url": { "type": "string", "format": "uri", "description": "URL of the author's website", "example": "https://example.com" } }, "required": [ "name", "email" ], "description": "Author information" }, "contributors": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the contributor", "example": "Contributor Name" }, "email": { "type": "string", "format": "email", "description": "Email of the contributor", "example": "contributor@example.com" }, "url": { "type": "string", "format": "uri", "description": "URL of the contributor's website", "example": "https://contributor-site.example.com" } }, "required": [ "name", "email" ] }, "description": "Contributors information" }, "homepage": { "type": "string", "format": "uri", "description": "Policy homepage", "example": "https://example-vincent-homepage.com" }, "supportedPolicies": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Supported policies. These are detected from 'dependencies' in the tool's package.json.", "example": { "@lit-protocol/vincent-spending-limit-policy": "1.0.0", "@lit-protocol/vincent-rate-limit-policy": "0.0.1" }, "readOnly": true }, "ipfsCid": { "type": "string", "description": "IPFS CID of the code that implements this tool.", "example": "QmdoY1VUxVvxShBQK5B6PP2jZFVw7PMTJ3qy2aiCARjMqo", "readOnly": true }, "policiesNotInRegistry": { "type": "array", "items": { "type": "string" }, "description": "Policy versions that are not in the registry but are supported by this tool", "example": [ "@lit-protocol/vincent-spending-limit-policy@1.0.1" ], "readOnly": true } }, "required": [ "_id", "updatedAt", "createdAt", "packageName", "version", "changes", "repository", "description", "keywords", "dependencies", "author", "contributors", "supportedPolicies", "ipfsCid", "policiesNotInRegistry" ], "additionalProperties": false }, "PolicyCreate": { "type": "object", "properties": { "activeVersion": { "type": "string", "description": "Active version of the policy; must be an exact semver", "example": "1.0.0" }, "title": { "type": "string", "description": "Policy title for displaying to users in the dashboard/Vincent Explorer UI", "example": "Vincent Spending Limit Policy" }, "description": { "type": "string", "description": "Policy description - displayed to users in the dashboard/Vincent Explorer UI", "example": "This policy is a foo bar policy" }, "authorWalletAddress": { "type": "string", "description": "Author wallet address. Derived from the authorization signature provided by the creator.", "example": "0x123456789012345678901234567890123456abcd" } }, "required": [ "activeVersion", "title", "description", "authorWalletAddress" ], "additionalProperties": false }, "PolicyEdit": { "type": "object", "properties": { "activeVersion": { "type": "string", "description": "Active version of the policy; must be an exact semver", "example": "1.0.0" }, "title": { "type": "string", "description": "Policy title for displaying to users in the dashboard/Vincent Explorer UI", "example": "Vincent Spending Limit Policy" }, "description": { "type": "string", "description": "Policy description - displayed to users in the dashboard/Vincent Explorer UI", "example": "This policy is a foo bar policy" } }, "additionalProperties": false }, "Policy": { "type": "object", "properties": { "_id": { "type": "string", "description": "Document ID", "readOnly": true }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp when this was last modified" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when this was created" }, "packageName": { "type": "string", "description": "Policy NPM package name", "example": "@lit-protocol/vincent-policy-spending-limit" }, "authorWalletAddress": { "type": "string", "description": "Author wallet address. Derived from the authorization signature provided by the creator.", "example": "0x123456789012345678901234567890123456abcd" }, "description": { "type": "string", "description": "Policy description - displayed to users in the dashboard/Vincent Explorer UI", "example": "This policy is a foo bar policy" }, "activeVersion": { "type": "string", "description": "Active version of the policy; must be an exact semver", "example": "1.0.0" }, "title": { "type": "string", "description": "Policy title for displaying to users in the dashboard/Vincent Explorer UI", "example": "Vincent Spending Limit Policy" } }, "required": [ "_id", "updatedAt", "createdAt", "packageName", "authorWalletAddress", "description", "activeVersion", "title" ], "additionalProperties": false }, "PolicyVersionCreate": { "type": "object", "properties": { "changes": { "type": "string", "description": "Changelog information for this version", "example": "Resolved issue with checking for spending limits on the wrong chain." } }, "required": [ "changes" ], "additionalProperties": false }, "PolicyVersionEdit": { "type": "object", "properties": { "changes": { "type": "string", "description": "Changelog information for this version", "example": "Resolved issue with checking for spending limits on the wrong chain." } }, "required": [ "changes" ], "additionalProperties": false }, "PolicyVersion": { "type": "object", "properties": { "_id": { "type": "string", "description": "Document ID", "readOnly": true }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp when this was last modified" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when this was created" }, "packageName": { "type": "string", "description": "Policy NPM package name", "example": "@lit-protocol/vincent-policy-spending-limit" }, "version": { "type": "string", "description": "Policy version - must be an exact semver", "example": "1.0.0" }, "changes": { "type": "string", "description": "Changelog information for this version", "example": "Resolved issue with checking for spending limits on the wrong chain." }, "repository": { "type": "array", "items": { "type": "string" }, "description": "Repository URLs" }, "description": { "type": "string", "description": "Policy description", "example": "This policy is a foo bar policy" }, "keywords": { "type": "array", "items": { "type": "string" }, "description": "Keywords for the policy", "example": [ "defi", "memecoin" ] }, "dependencies": { "type": "array", "items": { "type": "string" }, "description": "Dependencies of the policy" }, "author": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the author", "example": "Developer Name" }, "email": { "type": "string", "format": "email", "description": "Email of the author", "example": "contact@example.com" }, "url": { "type": "string", "format": "uri", "description": "URL of the author's website", "example": "https://example.com" } }, "required": [ "name", "email" ], "description": "Author information" }, "contributors": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the contributor", "example": "Contributor Name" }, "email": { "type": "string", "format": "email", "description": "Email of the contributor", "example": "contributor@example.com" }, "url": { "type": "string", "format": "uri", "description": "URL of the contributor's website", "example": "https://contributor-site.example.com" } }, "required": [ "name", "email" ] }, "description": "Contributors information" }, "homepage": { "type": "string", "format": "uri", "description": "Policy homepage", "example": "https://example-vincent-homepage.com" }, "ipfsCid": { "type": "string", "description": "IPFS CID of the code that implements this policy.", "example": "QmdoY1VUxVvxShBQK5B6PP2jZFVw7PMTJ3qy2aiCARjMqo", "readOnly": true }, "parameters": { "type": "object", "properties": { "uiSchema": { "type": "string", "description": "UI Schema for parameter display", "example": "{\"type\":\"object\",\"properties\":{}}" }, "jsonSchema": { "type": "string", "description": "JSON Schema for parameter validation", "example": "{\"type\":\"object\",\"required\":[],\"properties\":{}}" } }, "required": [ "uiSchema", "jsonSchema" ], "description": "Schema parameters", "readOnly": true } }, "required": [ "_id", "updatedAt", "createdAt", "packageName", "version", "changes", "repository", "description", "keywords", "dependencies", "author", "contributors", "ipfsCid" ], "additionalProperties": false }, "AppList": { "type": "array", "items": { "$ref": "#/components/schemas/App" } }, "AppVersionList": { "type": "array", "items": { "$ref": "#/components/schemas/AppVersion" } }, "AppVersionToolList": { "type": "array", "items": { "$ref": "#/components/schemas/AppVersionTool" } }, "ToolList": { "type": "array", "items": { "$ref": "#/components/schemas/Tool" } }, "ToolVersionList": { "type": "array", "items": { "$ref": "#/components/schemas/ToolVersion" } }, "PolicyList": { "type": "array", "items": { "$ref": "#/components/schemas/Policy" } }, "PolicyVersionList": { "type": "array", "items": { "$ref": "#/components/schemas/PolicyVersion" } } }, "parameters": {} }, "paths": { "/apps": { "get": { "tags": [ "App" ], "summary": "Lists all applications", "operationId": "listApps", "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppList" } } } }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/app": { "post": { "tags": [ "App", "AppVersion" ], "summary": "Creates a new application", "operationId": "createApp", "security": [ { "siweAuth": [] } ], "requestBody": { "description": "Developer-defined application information", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppCreate" } } } }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/App" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/app/{appId}": { "get": { "tags": [ "App" ], "summary": "Fetches an application", "operationId": "getApp", "parameters": [ { "schema": { "type": "number" }, "required": true, "description": "ID of the target application", "example": 132, "name": "appId", "in": "path" } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/App" } } } }, "404": { "description": "Application not found" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } }, "put": { "tags": [ "App" ], "summary": "Edits an application", "operationId": "editApp", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "number" }, "required": true, "description": "ID of the target application", "example": 132, "name": "appId", "in": "path" } ], "requestBody": { "description": "Developer-defined updated application details", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppEdit" } } } }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/App" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } }, "delete": { "tags": [ "App", "AppVersion", "AppVersionTool" ], "summary": "Deletes an application", "operationId": "deleteApp", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "number" }, "required": true, "description": "ID of the target application", "example": 132, "name": "appId", "in": "path" } ], "responses": { "200": { "description": "OK - Resource successfully deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteResponse" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/app/{appId}/versions": { "get": { "tags": [ "AppVersion" ], "summary": "Fetches all versions of an application", "operationId": "getAppVersions", "parameters": [ { "schema": { "type": "number" }, "required": true, "description": "ID of the target application", "example": 132, "name": "appId", "in": "path" } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppVersionList" } } } }, "404": { "description": "Application not found" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/app/{appId}/version": { "post": { "tags": [ "AppVersion" ], "summary": "Creates an application version", "operationId": "createAppVersion", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "number" }, "required": true, "description": "ID of the target application", "example": 132, "name": "appId", "in": "path" } ], "requestBody": { "description": "Developer-defined version details", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppVersionCreate" } } } }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppVersion" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/app/{appId}/version/{version}": { "get": { "tags": [ "AppVersion" ], "summary": "Fetches an application version", "operationId": "getAppVersion", "parameters": [ { "schema": { "type": "number" }, "required": true, "description": "ID of the target application", "example": 132, "name": "appId", "in": "path" }, { "schema": { "type": "number" }, "required": true, "description": "Version # of the target application version", "example": 3, "name": "version", "in": "path" } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppVersion" } } } }, "404": { "description": "Application not found" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } }, "put": { "tags": [ "AppVersion" ], "summary": "Edits an application version", "operationId": "editAppVersion", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "number" }, "required": true, "description": "ID of the target application", "example": 132, "name": "appId", "in": "path" }, { "schema": { "type": "number" }, "required": true, "description": "Version # of the target application version", "example": 3, "name": "version", "in": "path" } ], "requestBody": { "description": "Update version changes field", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppVersionEdit" } } } }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppVersion" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/app/{appId}/version/{version}/enable": { "post": { "tags": [ "AppVersion" ], "summary": "Enables an application version", "operationId": "enableAppVersion", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "number" }, "required": true, "description": "ID of the target application", "example": 132, "name": "appId", "in": "path" }, { "schema": { "type": "number" }, "required": true, "description": "Version # of the target application version", "example": 3, "name": "version", "in": "path" } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppVersion" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/app/{appId}/version/{version}/disable": { "post": { "tags": [ "AppVersion" ], "summary": "Disables an application version", "operationId": "disableAppVersion", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "number" }, "required": true, "description": "ID of the target application", "example": 132, "name": "appId", "in": "path" }, { "schema": { "type": "number" }, "required": true, "description": "Version # of the target application version", "example": 3, "name": "version", "in": "path" } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppVersion" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/app/{appId}/version/{version}/tools": { "get": { "tags": [ "AppVersionTool" ], "summary": "Lists all tools for an application version", "operationId": "listAppVersionTools", "parameters": [ { "schema": { "type": "number" }, "required": true, "description": "ID of the target application", "example": 132, "name": "appId", "in": "path" }, { "schema": { "type": "number" }, "required": true, "description": "Version # of the target application version", "example": 3, "name": "version", "in": "path" } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppVersionToolList" } } } }, "404": { "description": "Application or version not found" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/app/{appId}/version/{appVersion}/tool/{toolPackageName}": { "post": { "tags": [ "AppVersionTool" ], "summary": "Creates a tool for an application version", "operationId": "createAppVersionTool", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "number" }, "required": true, "description": "ID of the target application", "example": 132, "name": "appId", "in": "path" }, { "schema": { "type": "number" }, "required": true, "description": "Version # of the target application version", "example": 3, "name": "appVersion", "in": "path" }, { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "toolPackageName", "in": "path" } ], "requestBody": { "description": "Tool configuration for the application version", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppVersionToolCreate" } } } }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppVersionTool" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } }, "put": { "tags": [ "AppVersionTool" ], "summary": "Edits a tool for an application version", "operationId": "editAppVersionTool", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "number" }, "required": true, "description": "ID of the target application", "example": 132, "name": "appId", "in": "path" }, { "schema": { "type": "number" }, "required": true, "description": "Version # of the target application version", "example": 3, "name": "appVersion", "in": "path" }, { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "toolPackageName", "in": "path" } ], "requestBody": { "description": "Updated tool configuration for the application version", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppVersionToolEdit" } } } }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppVersionTool" } } } }, "400": { "description": "Invalid input" }, "404": { "description": "Application, version, or tool not found" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/tools": { "get": { "tags": [ "Tool" ], "summary": "Lists all tools", "operationId": "listAllTools", "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolList" } } } }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/tool/{packageName}": { "post": { "tags": [ "Tool", "ToolVersion" ], "summary": "Creates a new tool", "operationId": "createTool", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" } ], "requestBody": { "description": "Developer-defined tool details", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolCreate" } } } }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Tool" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } }, "get": { "tags": [ "Tool" ], "summary": "Fetches a tool", "operationId": "getTool", "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Tool" } } } }, "404": { "description": "Tool not found" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } }, "put": { "tags": [ "Tool" ], "summary": "Edits a tool", "operationId": "editTool", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" } ], "requestBody": { "description": "Developer-defined updated tool details", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolEdit" } } } }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Tool" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } }, "delete": { "tags": [ "Tool", "ToolVersion" ], "summary": "Deletes a tool and all its versions", "operationId": "deleteTool", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteResponse" } } } }, "404": { "description": "Tool not found" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/tool/{packageName}/versions": { "get": { "tags": [ "ToolVersion" ], "summary": "Fetches all versions of a tool", "operationId": "getToolVersions", "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolVersionList" } } } }, "404": { "description": "Tool not found" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/tool/{packageName}/owner": { "put": { "tags": [ "Tool" ], "summary": "Changes a tool's owner", "operationId": "changeToolOwner", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" } ], "requestBody": { "description": "Developer-defined updated tool details", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChangeOwner" } } } }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Tool" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/tool/{packageName}/version/{version}": { "post": { "tags": [ "ToolVersion" ], "summary": "Creates a tool version", "operationId": "createToolVersion", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" }, { "schema": { "type": "string" }, "required": true, "description": "NPM semver of the target tool version", "example": "2.1.0", "name": "version", "in": "path" } ], "requestBody": { "description": "Developer-defined version details", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolVersionCreate" } } } }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolVersion" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } }, "get": { "tags": [ "ToolVersion" ], "summary": "Fetches a tool version", "operationId": "getToolVersion", "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" }, { "schema": { "type": "string" }, "required": true, "description": "NPM semver of the target tool version", "example": "2.1.0", "name": "version", "in": "path" } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolVersion" } } } }, "404": { "description": "Tool version not found" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } }, "put": { "tags": [ "ToolVersion" ], "summary": "Edits a tool version", "operationId": "editToolVersion", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" }, { "schema": { "type": "string" }, "required": true, "description": "NPM semver of the target tool version", "example": "2.1.0", "name": "version", "in": "path" } ], "requestBody": { "description": "Update version changes field", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolVersionEdit" } } } }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolVersion" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/policies": { "get": { "tags": [ "Policy" ], "summary": "Lists all policies", "operationId": "listAllPolicies", "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyList" } } } }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/policy/{packageName}": { "post": { "tags": [ "Policy", "PolicyVersion" ], "summary": "Creates a new policy", "operationId": "createPolicy", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" } ], "requestBody": { "description": "Developer-defined policy details", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyCreate" } } } }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Policy" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } }, "get": { "tags": [ "Policy" ], "summary": "Fetches a policy", "operationId": "getPolicy", "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Policy" } } } }, "404": { "description": "Policy not found" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } }, "put": { "tags": [ "Policy" ], "summary": "Edits a policy", "operationId": "editPolicy", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" } ], "requestBody": { "description": "Developer-defined updated policy details", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyEdit" } } } }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Policy" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } }, "delete": { "tags": [ "Policy", "PolicyVersion" ], "summary": "Deletes a policy and all its versions", "operationId": "deletePolicy", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteResponse" } } } }, "404": { "description": "Policy not found" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/policy/{packageName}/version/{version}": { "post": { "tags": [ "PolicyVersion" ], "summary": "Creates a new policy version", "operationId": "createPolicyVersion", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" }, { "schema": { "type": "string" }, "required": true, "description": "NPM semver of the target policy version", "example": "2.1.0", "name": "version", "in": "path" } ], "requestBody": { "description": "Developer-defined version details", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyVersionCreate" } } } }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyVersion" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } }, "get": { "tags": [ "PolicyVersion" ], "summary": "Fetches a policy version", "operationId": "getPolicyVersion", "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" }, { "schema": { "type": "string" }, "required": true, "description": "NPM semver of the target policy version", "example": "2.1.0", "name": "version", "in": "path" } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyVersion" } } } }, "404": { "description": "Policy version not found" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } }, "put": { "tags": [ "PolicyVersion" ], "summary": "Edits a policy version", "operationId": "editPolicyVersion", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" }, { "schema": { "type": "string" }, "required": true, "description": "NPM semver of the target policy version", "example": "2.1.0", "name": "version", "in": "path" } ], "requestBody": { "description": "Update version changes field", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyVersionEdit" } } } }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyVersion" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/policy/{packageName}/versions": { "get": { "tags": [ "PolicyVersion" ], "summary": "Fetches all versions of a policy", "operationId": "getPolicyVersions", "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyVersionList" } } } }, "404": { "description": "Policy not found" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/policy/{packageName}/owner": { "put": { "tags": [ "Policy" ], "summary": "Changes a policy's owner", "operationId": "changePolicyOwner", "security": [ { "siweAuth": [] } ], "parameters": [ { "schema": { "type": "string" }, "required": true, "description": "The NPM package name", "example": "@vincent/foo-bar", "name": "packageName", "in": "path" } ], "requestBody": { "description": "Developer-defined updated policy details", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChangeOwner" } } } }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Policy" } } } }, "400": { "description": "Invalid input" }, "422": { "description": "Validation exception" }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } } } }