The XPipe application will start up an HTTP server that can be used to send requests.
You can change the port of it in the settings menu.
Note that this server is HTTP-only for now as it runs only on localhost. HTTPS requests are not accepted.
This allows you to programmatically manage remote systems.
To start off, 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.
value:{"auth": { "type": "Local", "authFileContent": "<Contents of the local file $TEMP/xpipe_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.
value:{"exitCode": 127, "stdout": "", "stderr": "invalid: command not found"}
400:
$ref:'#/components/responses/BadRequest'
401:
$ref:'#/components/responses/Unauthorized'
403:
$ref:'#/components/responses/Forbidden'
404:
$ref:'#/components/responses/NotFound'
500:
$ref:'#/components/responses/InternalServerError'
components:
schemas:
ShellStartRequest:
type:object
properties:
connection:
type:string
description:The connection uuid
required:
- connection
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
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:object
properties:
uuid:
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
connection:
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
required:
- uuid
- category
- connection
- type
required:
- found
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
AuthMethod:
type:object
discriminator:
propertyName:type
properties:
type:
type:string
required:
- type
oneOf:
- $ref:'#/components/schemas/ApiKey'
- $ref:'#/components/schemas/Local'
ApiKey:
description:API key authentication
allOf:
- $ref:'#/components/schemas/AuthMethod'
- type:object
properties:
key:
type:string
description:The API key
required:
- key
Local:
description:Authentication method for local applications. Uses file system access as proof of authentication.
allOf:
- $ref:'#/components/schemas/AuthMethod'
- type:object
properties:
authFileContent:
type:string
description:The contents of the local file $TEMP/xpipe_auth. This file is automatically generated when XPipe starts.
required:
- authFileContent
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
responses:
Success:
description:The action was successfully performed.
BadRequest:
description:Bad request. Please check error message and your parameters.
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.
securitySchemes:
bearerAuth:
type:http
scheme:bearer
description:The bearer token used is the session token that you receive from the handshake exchange.