Remote endpoints (Daemon-facing)
19 FeatherPanel Daemon-facing endpoints from wings/remote.php: methods, paths, auth, permissions, rate limits, parameters and responses.
Last synced from FeatherPanel 15b94e9 on .
On this page
Defined in backend/app/routes/wings/remote.php. Authentication used here: Wings node token. Read Authentication for how to send credentials and Rate limits and errors for the response envelope.
Paths, methods, permissions and rate limits come from the route file. Summaries, parameters and response codes come from the OpenAPI annotations on the controllers; endpoints without annotations show only what the route file declares.
Endpoints
GET/api/remote/config
curl -X GET "$PANEL_URL/api/remote/config" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json"GET/api/remote/health
curl -X GET "$PANEL_URL/api/remote/health" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json"Plugin events: featherpanel:wings:node:connection:status, featherpanel:wings:node:error
GET/api/remote/servers
Get remote servers Retrieve paginated list of all servers for the authenticated Wings node with complete configuration data. Requires Wings node token authentication (token ID and secret).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | Page number for pagination |
per_page | query | integer | no | Number of records per page |
search | query | string | no | Search term to filter servers |
Response data: RemoteServersResponse
Response data field | Type | Description |
|---|---|---|
data | WingsServerConfig[] | Array of server configurations |
links | object | |
meta | object |
curl -X GET "$PANEL_URL/api/remote/servers" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json"Plugin events: featherpanel:wings:servers:remote:retrieved
Responses: 200 Remote servers retrieved successfully · 401 Unauthorized - Invalid Wings authentication · 403 Forbidden - Invalid Wings authentication · 500 Internal server error
POST/api/remote/servers/reset
Reset servers Reset all server statuses for the authenticated Wings node. Requires Wings node token authentication (token ID and secret).
Response data: ServersResetResponse
Response data field | Type | Description |
|---|---|---|
success | boolean | Whether the reset was successful |
message | string | Success message |
curl -X POST "$PANEL_URL/api/remote/servers/reset" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json"Plugin events: featherpanel:wings:servers:reset:completed
Responses: 200 Servers reset successfully · 401 Unauthorized - Invalid Wings authentication · 403 Forbidden - Invalid Wings authentication · 500 Internal server error
GET/api/remote/servers/{uuid}
Get server configuration Retrieve complete server configuration for Wings daemon including settings, environment variables, allocations, and process configuration. Requires Wings node token authentication (token ID and secret).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
uuid | path | string (uuid) | yes | Server UUID |
Response data: WingsServerConfig
Response data field | Type | Description |
|---|---|---|
settings | object | |
process_configuration | object |
curl -X GET "$PANEL_URL/api/remote/servers/$UUID" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json"Plugin events: featherpanel:wings:error, featherpanel:wings:server:error, featherpanel:wings:server:info:retrieved
Responses: 200 Server configuration retrieved successfully · 400 Bad request - Missing server UUID · 401 Unauthorized - Invalid Wings node token (token ID and secret) · 403 Forbidden - Invalid Wings node token (token ID and secret) · 404 Not found - Server, node, allocation, spell, or realm not found · 500 Internal server error - Configuration generation failed
GET/api/remote/servers/{uuid}/install
Get server installation configuration Retrieve server installation configuration including container image, entrypoint, and installation script. Requires Wings node token authentication (token ID and secret).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
uuid | path | string (uuid) | yes | Server UUID |
Response data: ServerInstallConfig
Response data field | Type | Description |
|---|---|---|
container_image | string | Docker container image |
entrypoint | string | Container entrypoint |
script | string | Installation script |
curl -X GET "$PANEL_URL/api/remote/servers/$UUID/install" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json"Plugin events: featherpanel:wings:server:install:retrieved
Responses: 200 Server installation configuration retrieved successfully · 400 Bad request - Missing server UUID · 401 Unauthorized - Invalid Wings authentication · 403 Forbidden - Invalid Wings authentication · 404 Not found - Server, node, or spell not found · 500 Internal server error
POST/api/remote/servers/{uuid}/install
Report server installation completion Report server installation completion status to update server installation state. Requires Wings node token authentication (token ID and secret).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
uuid | path | string (uuid) | yes | Server UUID |
Request body: ServerInstallCompletion (application/json)
| Body field | Type | Required | Description |
|---|---|---|---|
successful | boolean | yes | Whether installation was successful |
reinstall | boolean | no | Whether this was a reinstall |
curl -X POST "$PANEL_URL/api/remote/servers/$UUID/install" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"successful":false,"reinstall":false}'Plugin events: featherpanel:wings:server:install:completed
Responses: 204 Installation completion reported successfully · 400 Bad request - Missing server UUID, invalid JSON, or missing required field · 401 Unauthorized - Invalid Wings authentication · 403 Forbidden - Invalid Wings authentication · 404 Not found - Server, node, or spell not found · 500 Internal server error - Failed to update installation status
POST/api/remote/servers/{uuid}/container/status
Update server container status Update server container status from Wings daemon. Accepts various server states including running, stopped, crashed, etc. Requires Wings node token authentication (token ID and secret).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
uuid | path | string (uuid) | yes | Server UUID |
Request body: ServerStatusUpdate (application/json) · Response data: ServerStatusUpdateResponse
| Body field | Type | Required | Description |
|---|---|---|---|
data | object | no | |
state | string | no | Server state (fallback format) |
Response data field | Type | Description |
|---|---|---|
message | string | Success message |
state | string | Updated server state |
server_uuid | string | Server UUID |
curl -X POST "$PANEL_URL/api/remote/servers/$UUID/container/status" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"data":{},"state":""}'Plugin events: featherpanel:wings:server:connection:status, featherpanel:wings:server:status:updated
Responses: 200 Server status updated successfully · 400 Bad request - Missing server UUID, invalid JSON, missing state field, or invalid state value · 401 Unauthorized - Invalid Wings authentication · 403 Forbidden - Invalid Wings authentication · 404 Not found - Server not found · 500 Internal server error - Failed to update server status
POST/api/remote/activity
Log server activities Log server activities from Wings daemon. Processes multiple activity logs in a single request with validation and error handling. Requires Wings node token authentication (token ID and secret).
Request body: WingsActivityRequest (application/json) · Response data: WingsActivityResponse
| Body field | Type | Required | Description |
|---|---|---|---|
data | WingsActivityLog[] | yes | Array of activity logs |
Response data field | Type | Description |
|---|---|---|
message | string | Success message |
processed_count | integer | Number of activities processed successfully |
curl -X POST "$PANEL_URL/api/remote/activity" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"data":[]}'Plugin events: featherpanel:wings:activity:logged
Responses: 200 All activities logged successfully · 207 Multi-status - Some activities processed with errors · 400 Bad request - Invalid JSON, missing activity data, invalid server UUID format, or invalid user UUID format · 401 Unauthorized - Invalid Wings authentication · 403 Forbidden - Invalid Wings authentication · 500 Internal server error
POST/api/remote/sftp/auth
SFTP authentication Handle SFTP authentication requests from Wings daemon. Supports both password and public key authentication. Requires Wings node token authentication.
Request body: SftpAuthRequest (application/json) · Response data: SftpAuthSuccessResponse
| Body field | Type | Required | Description |
|---|---|---|---|
type | string | yes | Authentication type |
username | string | yes | Username in format username.serverid |
password | string | yes | Password or public key content |
ip | string | yes | Client IP address |
session_id | string | no | Session ID |
client_version | string | no | SFTP client version |
Response data field | Type | Description |
|---|---|---|
server | string | Server UUID |
user | string | User UUID |
permissions | string[] | File permissions |
curl -X POST "$PANEL_URL/api/remote/sftp/auth" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"type":"","username":"","password":"","ip":"","session_id":"","client_version":""}'Plugin events: featherpanel:wings:sftp:authentication
Responses: 200 SFTP authentication successful · 400 Bad request - Invalid request data or username format · 401 Unauthorized - Invalid Wings node token or credentials · 403 Forbidden - Invalid Wings node token or access denied · 404 Not found - Server not found · 500 Internal server error
GET/api/remote/backups/{backupUuid}
Get backup upload information Get presigned upload URLs for S3/remote backup storage. Returns multipart upload URLs for large backup files. Requires Wings node token authentication (token ID and secret).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
backupUuid | path | string (uuid) | yes | Backup UUID |
size | query | integer | yes | Backup file size in bytes |
Response data: BackupUploadInfo
Response data field | Type | Description |
|---|---|---|
parts | string[] | Array of upload URLs for each part |
part_size | integer | Size of each part in bytes |
curl -X GET "$PANEL_URL/api/remote/backups/$BACKUP_UUID?size=$SIZE" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json"Plugin events: featherpanel:wings:backup:upload:info:retrieved
Responses: 200 Backup upload information retrieved successfully · 400 Bad request - Missing backup UUID or invalid size parameter · 401 Unauthorized - Invalid Wings authentication · 403 Forbidden - Invalid Wings authentication · 404 Not found - Backup, server, or node not found · 500 Internal server error
POST/api/remote/backups/{backupUuid}
Report backup completion Report backup completion and metadata to update backup record with checksum, size, and success status. Requires Wings node token authentication (token ID and secret).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
backupUuid | path | string (uuid) | yes | Backup UUID |
Request body: BackupCompletion (application/json)
| Body field | Type | Required | Description |
|---|---|---|---|
checksum | string | no | Backup file checksum, required on success |
checksum_type | string | no | Type of checksum algorithm, required on success |
size | integer | no | Backup file size in bytes, required on success |
successful | boolean | yes | Whether backup was successful |
upload_id | string | no | Upload ID for multipart uploads |
curl -X POST "$PANEL_URL/api/remote/backups/$BACKUP_UUID" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"checksum":"","checksum_type":"","size":0,"successful":false,"upload_id":""}'Plugin events: featherpanel:wings:backup:completion:reported
Responses: 204 Backup completion reported successfully · 400 Bad request - Missing backup UUID, invalid request body, or missing required fields · 401 Unauthorized - Invalid Wings authentication · 403 Forbidden - Invalid Wings authentication · 404 Not found - Backup, server, or node not found · 500 Internal server error - Failed to update backup
POST/api/remote/backups/{backupUuid}/restore
Report backup restoration completion Report backup restoration completion status to log restoration activities. Requires Wings node token authentication (token ID and secret).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
backupUuid | path | string (uuid) | yes | Backup UUID |
Request body: BackupRestoration (application/json)
| Body field | Type | Required | Description |
|---|---|---|---|
successful | boolean | yes | Whether restoration was successful |
curl -X POST "$PANEL_URL/api/remote/backups/$BACKUP_UUID/restore" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"successful":false}'Plugin events: featherpanel:wings:backup:restoration:reported
Responses: 204 Backup restoration completion reported successfully · 400 Bad request - Missing backup UUID, invalid request body, or missing required field · 401 Unauthorized - Invalid Wings authentication · 403 Forbidden - Invalid Wings authentication · 404 Not found - Backup, server, or node not found · 500 Internal server error
POST/api/remote/servers/{uuid}/transfer
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
uuid | path | - | yes |
curl -X POST "$PANEL_URL/api/remote/servers/$UUID/transfer" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json"Plugin events: featherpanel:server:transfer:completed, featherpanel:server:transfer:failed
POST/api/remote/servers/{uuid}/transfer/archive
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
uuid | path | - | yes |
curl -X POST "$PANEL_URL/api/remote/servers/$UUID/transfer/archive" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json"POST/api/remote/servers/{uuid}/transfer/failure
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
uuid | path | - | yes |
curl -X POST "$PANEL_URL/api/remote/servers/$UUID/transfer/failure" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json"Plugin events: featherpanel:server:transfer:failed
POST/api/remote/servers/{uuid}/transfer/success
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
uuid | path | - | yes |
curl -X POST "$PANEL_URL/api/remote/servers/$UUID/transfer/success" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json"Plugin events: featherpanel:server:transfer:completed
GET/api/remote/servers/{uuid}/import
Report import status Called by Wings to report the final status of a server import operation.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
uuid | path | string | yes | Server UUID |
| Body field | Type | Required | Description |
|---|---|---|---|
successful | boolean | yes | Whether the import completed successfully |
error | string | no | Error message if import failed |
Response data field | Type | Description |
|---|---|---|
success | boolean |
curl -X GET "$PANEL_URL/api/remote/servers/$UUID/import" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"successful":false,"error":""}'Responses: 200 Import status recorded successfully · 400 Bad request · 403 Invalid Wings authentication · 404 Server not found
POST/api/remote/servers/{uuid}/import
Report import status Called by Wings to report the final status of a server import operation.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
uuid | path | string | yes | Server UUID |
| Body field | Type | Required | Description |
|---|---|---|---|
successful | boolean | yes | Whether the import completed successfully |
error | string | no | Error message if import failed |
Response data field | Type | Description |
|---|---|---|
success | boolean |
curl -X POST "$PANEL_URL/api/remote/servers/$UUID/import" \
-H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"successful":false,"error":""}'Responses: 200 Import status recorded successfully · 400 Bad request · 403 Invalid Wings authentication · 404 Server not found