View .md

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

Auth: Wings node tokenRoute name: wings-remote-configController: WingsConfigController::getConfigroute source
curl -X GET "$PANEL_URL/api/remote/config" \
  -H "Authorization: Bearer $NODE_TOKEN_ID.$NODE_TOKEN" \
  -H "Accept: application/json"

GET/api/remote/health

Auth: Wings node tokenRoute name: wings-remote-healthController: WingsHealthController::getHealthroute source
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

Auth: Wings node tokenRoute name: wings-remote-serversController: WingsServerListController::getRemoteServersroute source

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).

ParameterInTypeRequiredDescription
pagequeryintegernoPage number for pagination
per_pagequeryintegernoNumber of records per page
searchquerystringnoSearch term to filter servers

Response data: RemoteServersResponse

Response data fieldTypeDescription
dataWingsServerConfig[]Array of server configurations
linksobject
metaobject
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

Auth: Wings node tokenRoute name: wings-remote-serveres-resetController: WingsServersResetController::resetServersroute source

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 fieldTypeDescription
successbooleanWhether the reset was successful
messagestringSuccess 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}

Auth: Wings node tokenRoute name: wings-server-configController: WingsServerInfoController::getServerroute source

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).

ParameterInTypeRequiredDescription
uuidpathstring (uuid)yesServer UUID

Response data: WingsServerConfig

Response data fieldTypeDescription
settingsobject
process_configurationobject
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

Auth: Wings node tokenRoute name: wings-server-installController: WingsServerInstallController::getServerInstallroute source

Get server installation configuration Retrieve server installation configuration including container image, entrypoint, and installation script. Requires Wings node token authentication (token ID and secret).

ParameterInTypeRequiredDescription
uuidpathstring (uuid)yesServer UUID

Response data: ServerInstallConfig

Response data fieldTypeDescription
container_imagestringDocker container image
entrypointstringContainer entrypoint
scriptstringInstallation 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

Auth: Wings node tokenRoute name: wings-server-install-doneController: WingsServerInstallController::postServerInstallroute source

Report server installation completion Report server installation completion status to update server installation state. Requires Wings node token authentication (token ID and secret).

ParameterInTypeRequiredDescription
uuidpathstring (uuid)yesServer UUID

Request body: ServerInstallCompletion (application/json)

Body fieldTypeRequiredDescription
successfulbooleanyesWhether installation was successful
reinstallbooleannoWhether 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

Auth: Wings node tokenRoute name: wings-server-statusController: WingsServerStatusController::updateContainerStatusroute source

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).

ParameterInTypeRequiredDescription
uuidpathstring (uuid)yesServer UUID

Request body: ServerStatusUpdate (application/json) · Response data: ServerStatusUpdateResponse

Body fieldTypeRequiredDescription
dataobjectno
statestringnoServer state (fallback format)
Response data fieldTypeDescription
messagestringSuccess message
statestringUpdated server state
server_uuidstringServer 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

Auth: Wings node tokenRoute name: wings-server-activityController: WingsActivityController::logActivityroute source

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 fieldTypeRequiredDescription
dataWingsActivityLog[]yesArray of activity logs
Response data fieldTypeDescription
messagestringSuccess message
processed_countintegerNumber 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

Auth: Wings node tokenRoute name: wings-sftp-authController: SftpAuthController::authenticateroute source

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 fieldTypeRequiredDescription
typestringyesAuthentication type
usernamestringyesUsername in format username.serverid
passwordstringyesPassword or public key content
ipstringyesClient IP address
session_idstringnoSession ID
client_versionstringnoSFTP client version
Response data fieldTypeDescription
serverstringServer UUID
userstringUser UUID
permissionsstring[]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}

Auth: Wings node tokenRoute name: wings-backup-upload-infoController: WingsBackupController::getBackupUploadInforoute source

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).

ParameterInTypeRequiredDescription
backupUuidpathstring (uuid)yesBackup UUID
sizequeryintegeryesBackup file size in bytes

Response data: BackupUploadInfo

Response data fieldTypeDescription
partsstring[]Array of upload URLs for each part
part_sizeintegerSize 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}

Auth: Wings node tokenRoute name: wings-backup-completionController: WingsBackupController::reportBackupCompletionroute source

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).

ParameterInTypeRequiredDescription
backupUuidpathstring (uuid)yesBackup UUID

Request body: BackupCompletion (application/json)

Body fieldTypeRequiredDescription
checksumstringnoBackup file checksum, required on success
checksum_typestringnoType of checksum algorithm, required on success
sizeintegernoBackup file size in bytes, required on success
successfulbooleanyesWhether backup was successful
upload_idstringnoUpload 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

Auth: Wings node tokenRoute name: wings-backup-restorationController: WingsBackupController::reportBackupRestorationroute source

Report backup restoration completion Report backup restoration completion status to log restoration activities. Requires Wings node token authentication (token ID and secret).

ParameterInTypeRequiredDescription
backupUuidpathstring (uuid)yesBackup UUID

Request body: BackupRestoration (application/json)

Body fieldTypeRequiredDescription
successfulbooleanyesWhether 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

Auth: Wings node tokenRoute name: wings-transfer-statusController: WingsTransferStatusController::setTransferStatusroute source
ParameterInTypeRequiredDescription
uuidpath-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

Auth: Wings node tokenRoute name: wings-transfer-archiveController: WingsTransferStatusController::archiveReceivedroute source
ParameterInTypeRequiredDescription
uuidpath-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

Auth: Wings node tokenRoute name: wings-transfer-failureController: WingsTransferStatusController::transferFailureroute source
ParameterInTypeRequiredDescription
uuidpath-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

Auth: Wings node tokenRoute name: wings-transfer-successController: WingsTransferStatusController::transferSuccessroute source
ParameterInTypeRequiredDescription
uuidpath-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

Auth: Wings node tokenRoute name: wings-import-statusroute source

Report import status Called by Wings to report the final status of a server import operation.

ParameterInTypeRequiredDescription
uuidpathstringyesServer UUID
Body fieldTypeRequiredDescription
successfulbooleanyesWhether the import completed successfully
errorstringnoError message if import failed
Response data fieldTypeDescription
successboolean
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

Auth: Wings node tokenRoute name: wings-import-statusroute source

Report import status Called by Wings to report the final status of a server import operation.

ParameterInTypeRequiredDescription
uuidpathstringyesServer UUID
Body fieldTypeRequiredDescription
successfulbooleanyesWhether the import completed successfully
errorstringnoError message if import failed
Response data fieldTypeDescription
successboolean
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