mirror of
https://github.com/xpipe-io/xpipe.git
synced 2024-11-22 07:30:24 +00:00
1078 lines
37 KiB
YAML
1078 lines
37 KiB
YAML
openapi: 3.0.1
|
||
info:
|
||
title: XPipe API Documentation
|
||
description: |
|
||
The XPipe API provides programmatic access to XPipe’s features.
|
||
You can get started by either using this page as an API reference or alternatively import the OpenAPI definition file into your API client of choice:
|
||
|
||
<a download href="/openapi.yaml" style="font-size: 20px">OpenAPI .yaml specification</a>
|
||
|
||
The XPipe application will start up an HTTP server that can be used to send requests.
|
||
Note that this server is HTTP-only for now as it runs only on localhost. HTTPS requests are not accepted.
|
||
|
||
You can either call the API directly or use one of the following community-made libraries:
|
||
- [https://github.com/coandco/python_xpipe_client](https://github.com/coandco/python_xpipe_client)
|
||
|
||
To start off with the API, you can query connections based on various filters.
|
||
With the matched connections, you can start remote shell sessions for each one and run arbitrary commands in them.
|
||
You get the command exit code and output as a response, allowing you to adapt your control flow based on command outputs.
|
||
Any kind of passwords and other secrets are automatically provided by XPipe when establishing a shell connection.
|
||
If a required password is not stored and is set to be dynamically prompted, the running XPipe application will ask you to enter any required passwords.
|
||
|
||
See the authentication handshake below on how to authenticate prior to sending requests.
|
||
For development you can also skip the authentication step by disabling it in the settings menu.
|
||
termsOfService: https://docs.xpipe.io/terms-of-service
|
||
contact:
|
||
name: XPipe - Contact us
|
||
url: mailto:hello@xpipe.io
|
||
version: "10.0"
|
||
externalDocs:
|
||
description: XPipe - Plans and pricing
|
||
url: https://xpipe.io/pricing
|
||
servers:
|
||
- url: http://localhost:21721
|
||
description: XPipe Daemon API
|
||
paths:
|
||
/handshake:
|
||
post:
|
||
summary: Establish a new API session
|
||
description: |
|
||
Prior to sending requests to the API, you first have to establish a new API session via the handshake endpoint.
|
||
In the response you will receive a session token that you can use to authenticate during this session.
|
||
|
||
This is done so that the daemon knows what kind of clients are connected and can manage individual capabilities for clients.
|
||
If your client is running on the same system as the daemon, you can choose the local authentication method to avoid having to deal with API keys.
|
||
If your client does not have file system access, e.g. if it is running remotely, then you have to use an API key.
|
||
|
||
Note that for development you can also turn off the required authentication in the XPipe settings menu, allowing you to send unauthenticated requests.
|
||
operationId: handshake
|
||
security: [ ]
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/HandshakeRequest'
|
||
examples:
|
||
standard:
|
||
summary: API key handshake
|
||
value: { "auth": { "type": "ApiKey", "key": "<API key>" }, "client": { "type": "Api", "name": "My client name" } }
|
||
local:
|
||
summary: Local application handshake
|
||
value: { "auth": { "type": "Local", "authFileContent": "<Contents of the local file <temp dir>/xpipe_auth>" }, "client": { "type": "Api", "name": "My client name" } }
|
||
local-ptb:
|
||
summary: Local PTB application handshake
|
||
value: { "auth": { "type": "Local", "authFileContent": "<Contents of the local file <temp dir>/xpipe_ptb_auth>" }, "client": { "type": "Api", "name": "My client name" } }
|
||
responses:
|
||
'200':
|
||
description: The handshake was successful. The returned token can be used for authentication in this session. The token is valid as long as XPipe is running.
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/HandshakeResponse'
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
/connection/query:
|
||
post:
|
||
summary: Query connections
|
||
description: |
|
||
Queries all connections using various filters.
|
||
|
||
The filters support globs and can match the category names and connection names.
|
||
All matching is case insensitive.
|
||
operationId: connectionQuery
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ConnectionQueryRequest'
|
||
examples:
|
||
all:
|
||
summary: All
|
||
value: { "categoryFilter": "*", "connectionFilter": "*", "typeFilter": "*" }
|
||
simple:
|
||
summary: Simple filter
|
||
value: { "categoryFilter": "default", "connectionFilter": "local machine", "typeFilter": "*" }
|
||
globs:
|
||
summary: Globs
|
||
value: { "categoryFilter": "*", "connectionFilter": "*/podman/*", "typeFilter": "*" }
|
||
responses:
|
||
'200':
|
||
description: The query was successful. The body contains all matched connections.
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ConnectionQueryResponse'
|
||
examples:
|
||
standard:
|
||
summary: Matched connections
|
||
value: { "found": [ "f0ec68aa-63f5-405c-b178-9a4454556d6b" ] }
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'401':
|
||
$ref: '#/components/responses/Unauthorized'
|
||
'403':
|
||
$ref: '#/components/responses/Forbidden'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
/connection/info:
|
||
post:
|
||
summary: Connection information
|
||
description: |
|
||
Queries detailed information about a connection.
|
||
operationId: connectionInfo
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ConnectionInfoRequest'
|
||
examples:
|
||
simple:
|
||
summary: Standard
|
||
value: { "connections": [ "f0ec68aa-63f5-405c-b178-9a4454556d6b" ] }
|
||
responses:
|
||
'200':
|
||
description: The query was successful. The body contains the detailed connection information.
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ConnectionInfoResponse'
|
||
examples:
|
||
standard:
|
||
summary: Connection information
|
||
value: { "infos": [ { "connection": "f0ec68aa-63f5-405c-b178-9a4454556d6b", "category": [ "default" ] ,
|
||
"name": [ "local machine" ], "type": "local", "rawData": { }, "usageCategory": "shell",
|
||
"lastUsed": "2024-05-31T11:53:02.408504600Z", "lastModified": "2024-06-23T21:15:25.608097Z",
|
||
"state": { } } ] }
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'401':
|
||
$ref: '#/components/responses/Unauthorized'
|
||
'403':
|
||
$ref: '#/components/responses/Forbidden'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
/connection/add:
|
||
post:
|
||
summary: Add new connection
|
||
description: |
|
||
Creates the new connection in the xpipe vault from raw json data.
|
||
This can also perform an optional validation first to make sure that the connection can be established.
|
||
|
||
If an equivalent connection already exists, no new one will be added.
|
||
operationId: connectionAdd
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ConnectionAddRequest'
|
||
examples:
|
||
simple:
|
||
summary: Add new pwsh shell environment
|
||
value: { "name": "my connection", "validate": true, "category": "97458c07-75c0-4f9d-a06e-92d8cdf67c40", "data":
|
||
{
|
||
"type": "shellEnvironment",
|
||
"commands": null,
|
||
"host": {
|
||
"storeId": "f0ec68aa-63f5-405c-b178-9a4454556d6b"
|
||
},
|
||
"shell": "pwsh",
|
||
"elevated": false,
|
||
}
|
||
}
|
||
responses:
|
||
'200':
|
||
description: The request was successful. The connection was added.
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ConnectionAddResponse'
|
||
examples:
|
||
standard:
|
||
summary: Connection information
|
||
value: { "connection": "36ad9716-a209-4f7f-9814-078d3349280c" }
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'401':
|
||
$ref: '#/components/responses/Unauthorized'
|
||
'403':
|
||
$ref: '#/components/responses/Forbidden'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
/connection/remove:
|
||
post:
|
||
summary: Remove connection
|
||
description: |
|
||
Removes a set of connection. This includes any possible children associated with the connection.
|
||
|
||
Some connections, for example the local machine, can not be removed.
|
||
operationId: connectionRemove
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ConnectionRemoveRequest'
|
||
examples:
|
||
simple:
|
||
summary: Remove single connection
|
||
value: { "connections": [ "36ad9716-a209-4f7f-9814-078d3349280c" ] }
|
||
responses:
|
||
'200':
|
||
description: The removal was successful.
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'401':
|
||
$ref: '#/components/responses/Unauthorized'
|
||
'403':
|
||
$ref: '#/components/responses/Forbidden'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
/connection/browse:
|
||
post:
|
||
summary: Open connection in file browser
|
||
description: |
|
||
Creates a new tab in the file browser and opens the specified connections with an optional starting directory.
|
||
operationId: connectionBrowse
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ConnectionBrowseRequest'
|
||
examples:
|
||
simple:
|
||
summary: Open local file browser
|
||
value: { "connection": "f0ec68aa-63f5-405c-b178-9a4454556d6b" }
|
||
responses:
|
||
'200':
|
||
description: The request was successful. The connection was opened.
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'401':
|
||
$ref: '#/components/responses/Unauthorized'
|
||
'403':
|
||
$ref: '#/components/responses/Forbidden'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
/connection/terminal:
|
||
post:
|
||
summary: Open terminal for shell connection
|
||
description: |
|
||
Launches a new terminal session for a connection with an optional specified working directory.
|
||
operationId: connectionTerminal
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ConnectionTerminalRequest'
|
||
examples:
|
||
simple:
|
||
summary: Open terminal for local shell
|
||
value: { "connection": "f0ec68aa-63f5-405c-b178-9a4454556d6b" }
|
||
responses:
|
||
'200':
|
||
description: The request was successful. The connection was opened.
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'401':
|
||
$ref: '#/components/responses/Unauthorized'
|
||
'403':
|
||
$ref: '#/components/responses/Forbidden'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
/connection/toggle:
|
||
post:
|
||
summary: Toggle state of a connection
|
||
description: |
|
||
Updates the state of a connection to either start or stop a session.
|
||
|
||
This can be used for all kinds of services and tunnels.
|
||
operationId: connectionToggle
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ConnectionToggleRequest'
|
||
examples:
|
||
simple:
|
||
summary: Activate connection
|
||
value: { "connection": "36ad9716-a209-4f7f-9814-078d3349280c", "state": true }
|
||
responses:
|
||
'200':
|
||
description: The request was successful. The connection state was updated.
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'401':
|
||
$ref: '#/components/responses/Unauthorized'
|
||
'403':
|
||
$ref: '#/components/responses/Forbidden'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
/connection/refresh:
|
||
post:
|
||
summary: Refresh state of a connection
|
||
description: |
|
||
Performs a refresh on the specified connection.
|
||
|
||
This will update the connection state information and also any children if the connection type has any.
|
||
operationId: connectionRefresh
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ConnectionRefreshRequest'
|
||
examples:
|
||
simple:
|
||
summary: Refresh connection
|
||
value: { "connection": "36ad9716-a209-4f7f-9814-078d3349280c" }
|
||
responses:
|
||
'200':
|
||
description: The request was successful. The connection state was updated.
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'401':
|
||
$ref: '#/components/responses/Unauthorized'
|
||
'403':
|
||
$ref: '#/components/responses/Forbidden'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
/shell/start:
|
||
post:
|
||
summary: Start shell connection
|
||
description: |
|
||
Starts a new shell session for a connection. If an existing shell session is already running for that connection, this operation will do nothing.
|
||
|
||
Note that there are a variety of possible errors that can occur here when establishing the shell connection.
|
||
These errors will be returned with the HTTP return code 500.
|
||
operationId: shellStart
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ShellStartRequest'
|
||
examples:
|
||
local:
|
||
summary: Start local shell
|
||
value: { "connection": "f0ec68aa-63f5-405c-b178-9a4454556d6b" }
|
||
responses:
|
||
'200':
|
||
description: The operation was successful. The shell session was started.
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ShellStartResponse'
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'401':
|
||
$ref: '#/components/responses/Unauthorized'
|
||
'403':
|
||
$ref: '#/components/responses/Forbidden'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
/shell/stop:
|
||
post:
|
||
summary: Stop shell connection
|
||
description: |
|
||
Stops an existing shell session for a connection.
|
||
|
||
This operation will return once the shell has exited.
|
||
If the shell is busy or stuck, you might have to work with timeouts to account for these cases.
|
||
operationId: shellStop
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ShellStopRequest'
|
||
examples:
|
||
local:
|
||
summary: Stop local shell
|
||
value: { "connection": "f0ec68aa-63f5-405c-b178-9a4454556d6b" }
|
||
responses:
|
||
'200':
|
||
description: The operation was successful. The shell session was stopped.
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'401':
|
||
$ref: '#/components/responses/Unauthorized'
|
||
'403':
|
||
$ref: '#/components/responses/Forbidden'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
/shell/exec:
|
||
post:
|
||
summary: Execute command in a shell session
|
||
description: |
|
||
Runs a command in an active shell session and waits for it to finish. The exit code and output will be returned in the response.
|
||
|
||
Note that a variety of different errors can occur when executing the command.
|
||
If the command finishes, even with an error code, a normal HTTP 200 response will be returned.
|
||
However, if any other error occurs like the shell not responding or exiting unexpectedly, an HTTP 500 response will be returned.
|
||
operationId: shellExec
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ShellExecRequest'
|
||
examples:
|
||
user:
|
||
summary: echo $USER
|
||
value: { "connection": "f0ec68aa-63f5-405c-b178-9a4454556d6b", "command": "echo $USER" }
|
||
invalid:
|
||
summary: invalid
|
||
value: { "connection": "f0ec68aa-63f5-405c-b178-9a4454556d6b", "command": "invalid" }
|
||
responses:
|
||
'200':
|
||
description: The operation was successful. The shell command finished.
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ShellExecResponse'
|
||
examples:
|
||
user:
|
||
summary: echo $USER
|
||
value: { "exitCode": 0, "stdout": "root", "stderr": "" }
|
||
fail:
|
||
summary: invalid
|
||
value: { "exitCode": 127, "stdout": "", "stderr": "invalid: command not found" }
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'401':
|
||
$ref: '#/components/responses/Unauthorized'
|
||
'403':
|
||
$ref: '#/components/responses/Forbidden'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
/fs/blob:
|
||
post:
|
||
summary: Store a raw blob to be used later
|
||
description: |
|
||
Stores arbitrary binary data in a blob such that it can be used later on to for example write to a remote file.
|
||
|
||
This will return a uuid which can be used as a reference to the blob.
|
||
You can also store normal text data in blobs if you intend to create text or shell script files with it.
|
||
operationId: fsData
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/octet-stream:
|
||
schema:
|
||
type: string
|
||
format: binary
|
||
responses:
|
||
'200':
|
||
description: The operation was successful. The data was stored.
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/FsBlobResponse'
|
||
examples:
|
||
success:
|
||
summary: Success
|
||
value: { "blob": "854afc45-eadc-49a0-a45d-9fb76a484304" }
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'401':
|
||
$ref: '#/components/responses/Unauthorized'
|
||
'403':
|
||
$ref: '#/components/responses/Forbidden'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
/fs/read:
|
||
post:
|
||
summary: Read the content of a remote file
|
||
description: |
|
||
Reads the entire content of a remote file through an active shell session.
|
||
operationId: fsRead
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/FsReadRequest'
|
||
examples:
|
||
simple:
|
||
summary: Read file
|
||
value: { "connection": "f0ec68aa-63f5-405c-b178-9a4454556d6b", "path": "/home/user/myfile.txt" }
|
||
responses:
|
||
'200':
|
||
description: The operation was successful. The file was read.
|
||
content:
|
||
application/octet-stream:
|
||
schema:
|
||
type: string
|
||
format: binary
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'401':
|
||
$ref: '#/components/responses/Unauthorized'
|
||
'403':
|
||
$ref: '#/components/responses/Forbidden'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
/fs/write:
|
||
post:
|
||
summary: Write a blob to a remote file
|
||
description: |
|
||
Writes blob data to a file through an active shell session.
|
||
operationId: fsWrite
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/FsWriteRequest'
|
||
examples:
|
||
simple:
|
||
summary: Write simple file
|
||
value: { "connection": "f0ec68aa-63f5-405c-b178-9a4454556d6b", "blob": "854afc45-eadc-49a0-a45d-9fb76a484304", "path": "/home/user/myfile.txt" }
|
||
responses:
|
||
'200':
|
||
description: The operation was successful. The file was written.
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'401':
|
||
$ref: '#/components/responses/Unauthorized'
|
||
'403':
|
||
$ref: '#/components/responses/Forbidden'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
/fs/script:
|
||
post:
|
||
summary: Create a shell script file from a blob
|
||
description: |
|
||
Creates a shell script in the temporary directory of the file system that is access through the shell connection.
|
||
|
||
This can be used to run more complex commands on remote systems.
|
||
operationId: fsScript
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/FsScriptRequest'
|
||
examples:
|
||
standard:
|
||
summary: Standard write
|
||
value: { "connection": "f0ec68aa-63f5-405c-b178-9a4454556d6b", "blob": "854afc45-eadc-49a0-a45d-9fb76a484304" }
|
||
responses:
|
||
'200':
|
||
description: The operation was successful. The script file was created.
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/FsScriptResponse'
|
||
examples:
|
||
success:
|
||
summary: Success
|
||
value: { "path": "/tmp/exec-123.sh" }
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'401':
|
||
$ref: '#/components/responses/Unauthorized'
|
||
'403':
|
||
$ref: '#/components/responses/Forbidden'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
/daemon/version:
|
||
post:
|
||
summary: Query daemon version
|
||
description: Retrieves version information from the daemon
|
||
operationId: daemonVersion
|
||
responses:
|
||
'200':
|
||
description: The operation was successful
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/DaemonVersionResponse'
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
'401':
|
||
$ref: '#/components/responses/Unauthorized'
|
||
'403':
|
||
$ref: '#/components/responses/Forbidden'
|
||
'500':
|
||
$ref: '#/components/responses/InternalServerError'
|
||
components:
|
||
schemas:
|
||
ShellStartRequest:
|
||
type: object
|
||
properties:
|
||
connection:
|
||
type: string
|
||
description: The connection uuid
|
||
required:
|
||
- connection
|
||
ShellStartResponse:
|
||
type: object
|
||
properties:
|
||
shellDialect:
|
||
type: integer
|
||
description: The shell dialect
|
||
osType:
|
||
type: string
|
||
description: The general type of operating system
|
||
osName:
|
||
type: string
|
||
description: The display name of the operating system
|
||
temp:
|
||
type: string
|
||
description: The location of the temporary directory
|
||
required:
|
||
- shellDialect
|
||
- osType
|
||
- osName
|
||
- temp
|
||
ShellStopRequest:
|
||
type: object
|
||
properties:
|
||
connection:
|
||
type: string
|
||
description: The connection uuid
|
||
required:
|
||
- connection
|
||
ShellExecRequest:
|
||
type: object
|
||
properties:
|
||
connection:
|
||
type: string
|
||
description: The connection uuid
|
||
command:
|
||
type: string
|
||
description: The command to execute
|
||
required:
|
||
- connection
|
||
- command
|
||
ShellExecResponse:
|
||
type: object
|
||
properties:
|
||
exitCode:
|
||
type: integer
|
||
description: The exit code of the command
|
||
stdout:
|
||
type: string
|
||
description: The stdout output of the command
|
||
stderr:
|
||
type: string
|
||
description: The stderr output of the command
|
||
required:
|
||
- exitCode
|
||
- stdout
|
||
- stderr
|
||
FsBlobResponse:
|
||
type: object
|
||
properties:
|
||
blob:
|
||
type: string
|
||
description: The data uuid
|
||
required:
|
||
- blob
|
||
FsWriteRequest:
|
||
type: object
|
||
properties:
|
||
connection:
|
||
type: string
|
||
description: The connection uuid
|
||
blob:
|
||
type: string
|
||
description: The blob uuid
|
||
path:
|
||
type: string
|
||
description: The target filepath
|
||
required:
|
||
- connection
|
||
- blob
|
||
- path
|
||
FsReadRequest:
|
||
type: object
|
||
properties:
|
||
connection:
|
||
type: string
|
||
description: The connection uuid
|
||
path:
|
||
type: string
|
||
description: The target file path
|
||
required:
|
||
- connection
|
||
- path
|
||
FsScriptRequest:
|
||
type: object
|
||
properties:
|
||
connection:
|
||
type: string
|
||
description: The connection uuid
|
||
blob:
|
||
type: string
|
||
description: The blob uuid
|
||
required:
|
||
- connection
|
||
- blob
|
||
FsScriptResponse:
|
||
type: object
|
||
properties:
|
||
path:
|
||
type: string
|
||
description: The generated script file path
|
||
required:
|
||
- path
|
||
ConnectionQueryRequest:
|
||
type: object
|
||
properties:
|
||
categoryFilter:
|
||
type: string
|
||
description: The filter string to match categories. Categories are delimited by / if they are hierarchical. The filter supports globs.
|
||
connectionFilter:
|
||
type: string
|
||
description: The filter string to match connection names. Connection names are delimited by / if they are hierarchical. The filter supports globs.
|
||
typeFilter:
|
||
type: string
|
||
description: The filter string to connection types. Every unique type of connection like SSH or docker has its own type identifier that you can match. The filter supports globs.
|
||
required:
|
||
- categoryFilter
|
||
- connectionFilter
|
||
- typeFilter
|
||
ConnectionQueryResponse:
|
||
type: object
|
||
properties:
|
||
found:
|
||
type: array
|
||
description: The found connections
|
||
items:
|
||
type: string
|
||
description: The connection uuid
|
||
required:
|
||
- found
|
||
ConnectionInfoRequest:
|
||
type: object
|
||
properties:
|
||
connections:
|
||
type: array
|
||
description: The connections
|
||
items:
|
||
type: string
|
||
description: The unique id of the connection
|
||
required:
|
||
- connections
|
||
ConnectionInfoResponse:
|
||
type: array
|
||
items:
|
||
type: object
|
||
description: The array of information for each connection
|
||
properties:
|
||
connection:
|
||
type: string
|
||
description: The unique id of the connection
|
||
category:
|
||
type: array
|
||
description: The full category path as an array
|
||
items:
|
||
type: string
|
||
description: Individual category name
|
||
name:
|
||
type: array
|
||
description: The full connection name path as an array
|
||
items:
|
||
type: string
|
||
description: Individual connection name
|
||
type:
|
||
type: string
|
||
description: The type identifier of the connection
|
||
rawData:
|
||
type: object
|
||
description: The raw internal configuration data for the connection. The schema for these is internal and should not be relied upon.
|
||
usageCategory:
|
||
type: string
|
||
description: The category of how this connection can be used.
|
||
enum:
|
||
- shell
|
||
- tunnel
|
||
- script
|
||
- database
|
||
- command
|
||
- desktop
|
||
- group
|
||
lastModified:
|
||
type: string
|
||
description: The timestamp of when the connection configuration was last modified in ISO 8601
|
||
lastUsed:
|
||
type: string
|
||
description: The timestamp of when the connection was last launched in ISO 8601
|
||
state:
|
||
type: object
|
||
description: The internal persistent state information about the connection
|
||
cache:
|
||
type: object
|
||
description: The temporary cache data for the connection
|
||
required:
|
||
- connection
|
||
- category
|
||
- name
|
||
- type
|
||
- rawData
|
||
- usageCategory
|
||
- lastUsed
|
||
- lastModified
|
||
- state
|
||
- cache
|
||
ConnectionRefreshRequest:
|
||
type: object
|
||
properties:
|
||
connection:
|
||
type: string
|
||
description: The connection uuid
|
||
required:
|
||
- connection
|
||
ConnectionAddRequest:
|
||
type: object
|
||
properties:
|
||
name:
|
||
type: string
|
||
description: The connection name
|
||
data:
|
||
type: object
|
||
description: The raw connection store data. Schemas for connection types are not documented but you can find the connection data of your existing connections in the xpipe vault.
|
||
validate:
|
||
type: boolean
|
||
description: Whether to perform a connection validation before adding it, i.e., probe the connection first. If validation is enabled and fails, the connection will not be added
|
||
required:
|
||
- name
|
||
- data
|
||
- validate
|
||
ConnectionAddResponse:
|
||
type: object
|
||
properties:
|
||
connection:
|
||
type: string
|
||
description: The connection uuid
|
||
required:
|
||
- connection
|
||
ConnectionRemoveRequest:
|
||
type: object
|
||
properties:
|
||
connections:
|
||
type: array
|
||
description: The connections to remove
|
||
items:
|
||
type: string
|
||
description: The unique id of the connection
|
||
required:
|
||
- connections
|
||
ConnectionBrowseRequest:
|
||
type: object
|
||
properties:
|
||
directory:
|
||
type: string
|
||
description: The optional directory to browse to
|
||
connection:
|
||
type: string
|
||
description: The connection uuid
|
||
required:
|
||
- directory
|
||
- connection
|
||
ConnectionToggleRequest:
|
||
type: object
|
||
properties:
|
||
state:
|
||
type: boolean
|
||
description: The state to switch to
|
||
connection:
|
||
type: string
|
||
description: The connection uuid
|
||
required:
|
||
- state
|
||
- connection
|
||
ConnectionTerminalRequest:
|
||
type: object
|
||
properties:
|
||
directory:
|
||
type: string
|
||
description: The optional directory to use as the working directory
|
||
connection:
|
||
type: string
|
||
description: The connection uuid
|
||
required:
|
||
- directory
|
||
- connection
|
||
HandshakeRequest:
|
||
type: object
|
||
properties:
|
||
auth:
|
||
$ref: '#/components/schemas/AuthMethod'
|
||
client:
|
||
$ref: '#/components/schemas/ClientInformation'
|
||
required:
|
||
- auth
|
||
- client
|
||
HandshakeResponse:
|
||
type: object
|
||
properties:
|
||
sessionToken:
|
||
type: string
|
||
description: The generated bearer token that can be used for authentication in this session
|
||
required:
|
||
- sessionToken
|
||
DaemonVersionResponse:
|
||
type: object
|
||
properties:
|
||
version:
|
||
type: string
|
||
description: The version of the running daemon
|
||
canonicalVersion:
|
||
type: string
|
||
description: The canonical version of the running daemon
|
||
buildVersion:
|
||
type: string
|
||
description: The build timestamp
|
||
jvmVersion:
|
||
type: string
|
||
description: The version of the Java Virtual Machine in which the daemon is running
|
||
pro:
|
||
type: boolean
|
||
description: Whether the daemon supports professional edition features
|
||
required:
|
||
- version
|
||
- canonicalVersion
|
||
- buildVersion
|
||
- jvmVersion
|
||
- pro
|
||
AuthMethod:
|
||
discriminator:
|
||
propertyName: type
|
||
mapping:
|
||
apiKey: '#/components/schemas/ApiKey'
|
||
local: '#/components/schemas/Local'
|
||
oneOf:
|
||
- $ref: '#/components/schemas/ApiKey'
|
||
- $ref: '#/components/schemas/Local'
|
||
ApiKey:
|
||
description: API key authentication
|
||
type: object
|
||
properties:
|
||
type:
|
||
type: string
|
||
key:
|
||
type: string
|
||
description: The API key
|
||
required:
|
||
- key
|
||
- type
|
||
Local:
|
||
description: |
|
||
Authentication method for local applications. Uses file system access as proof of authentication.
|
||
|
||
You can find the authentication file at:
|
||
- %TEMP%\xpipe_auth on Windows
|
||
- $TMP/xpipe_auth on Linux
|
||
- $TMPDIR/xpipe_auth on macOS
|
||
|
||
For the PTB releases the file name is changed to xpipe_ptb_auth to prevent collisions.
|
||
|
||
As the temporary directory on Linux is global, the daemon might run as another user and your current user might not have permissions to access the auth file.
|
||
type: object
|
||
properties:
|
||
type:
|
||
type: string
|
||
authFileContent:
|
||
type: string
|
||
description: The contents of the local file <temp dir>/xpipe_auth. This file is automatically generated when XPipe starts.
|
||
required:
|
||
- authFileContent
|
||
- type
|
||
ClientInformation:
|
||
type: object
|
||
discriminator:
|
||
propertyName: type
|
||
properties:
|
||
type:
|
||
type: string
|
||
required:
|
||
- type
|
||
ApiClientInformation:
|
||
description: Provides information about the client that connected to the XPipe API.
|
||
allOf:
|
||
- $ref: '#/components/schemas/ClientInformation'
|
||
- type: object
|
||
properties:
|
||
name:
|
||
type: string
|
||
description: The name of the client.
|
||
required:
|
||
- name
|
||
ClientErrorResponse:
|
||
description: Error returned in case of a client exception
|
||
type: object
|
||
properties:
|
||
message:
|
||
type: string
|
||
description: The error message
|
||
required:
|
||
- message
|
||
ServerErrorResponse:
|
||
description: Error returned in case of a server exception with HTTP code 500
|
||
type: object
|
||
properties:
|
||
error:
|
||
type: object
|
||
description: The exception information
|
||
properties:
|
||
cause:
|
||
type: object
|
||
description: The exception cause
|
||
stackTrace:
|
||
type: array
|
||
description: The java stack trace information
|
||
suppressed:
|
||
type: array
|
||
description: Any suppressed exceptions
|
||
localizedMessage:
|
||
type: string
|
||
description: Not used
|
||
message:
|
||
type: string
|
||
description: The error message
|
||
required:
|
||
- message
|
||
required:
|
||
- error
|
||
responses:
|
||
Success:
|
||
description: The action was successfully performed.
|
||
BadRequest:
|
||
description: Bad request. Please check error message and your parameters.
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ClientErrorResponse'
|
||
Unauthorized:
|
||
description: Authorization failed. Please supply a `Bearer` token via
|
||
the `Authorization` header.
|
||
Forbidden:
|
||
description: Authorization failed. Please supply a valid `Bearer` token via
|
||
the `Authorization` header.
|
||
NotFound:
|
||
description: The requested resource could not be found.
|
||
InternalServerError:
|
||
description: Internal error.
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/ServerErrorResponse'
|
||
securitySchemes:
|
||
bearerAuth:
|
||
type: http
|
||
scheme: bearer
|
||
description: The bearer token used is the session token that you receive from the handshake exchange.
|
||
security:
|
||
- bearerAuth: [ ]
|