Files
rcond/api/rcond.yaml

219 lines
6.3 KiB
YAML

openapi: 3.0.0
info:
title: rcond API
description: API for managing network connections through NetworkManager
version: 1.0.0
servers:
- url: http://localhost:8080
description: Local development server
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Token
description: API token for authentication
security:
- ApiKeyAuth: []
paths:
/health:
get:
summary: Health check endpoint
description: Returns the health status of the service
responses:
'200':
description: Service is healthy
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: "healthy"
/network/up:
post:
summary: Create and activate WiFi access point
description: Creates and activates a WiFi access point on the specified interface
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- interface
- ssid
- password
properties:
interface:
type: string
description: Network interface name
example: "wlan0"
ssid:
type: string
description: WiFi network SSID
example: "MyNetworkSSID"
password:
type: string
description: WiFi network password
example: "SuperSecretPassword"
responses:
'200':
description: Network interface brought up successfully
'400':
description: Invalid request payload
'401':
description: Unauthorized - invalid or missing API token
'500':
description: Internal server error
/network/down:
post:
summary: Deactivate network interface
description: Deactivates the specified network interface
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- interface
properties:
interface:
type: string
description: Network interface name
example: "wlan0"
responses:
'200':
description: Network interface brought down successfully
'400':
description: Invalid request payload
'401':
description: Unauthorized - invalid or missing API token
'500':
description: Internal server error
/network/remove:
post:
summary: Remove stored connection profile
description: Removes the stored NetworkManager connection profile
responses:
'200':
description: Connection profile removed successfully
'401':
description: Unauthorized - invalid or missing API token
'500':
description: Internal server error
/hostname:
get:
summary: Get system hostname
description: Returns the current system hostname
responses:
'200':
description: Hostname retrieved successfully
content:
text/plain:
schema:
type: string
description: Current hostname
example: "MyHostname"
'401':
description: Unauthorized - invalid or missing API token
'500':
description: Internal server error
post:
summary: Set system hostname
description: Sets a new system hostname
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- hostname
properties:
hostname:
type: string
description: New hostname to set
example: "MyHostname"
responses:
'200':
description: Hostname set successfully
'400':
description: Invalid request payload
'401':
description: Unauthorized - invalid or missing API token
'500':
description: Internal server error
/authorized-key:
post:
summary: Add SSH authorized key
description: Adds an SSH public key to a user's authorized_keys file
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- user
- pubkey
properties:
user:
type: string
description: Username to add key for
example: "pi"
pubkey:
type: string
description: SSH public key to add
example: "ssh-rsa AAAAB3NzaC1yc2E... user@host"
responses:
'200':
description: Key added successfully
'400':
description: Invalid request payload or SSH key format
'401':
description: Unauthorized - invalid or missing API token
'500':
description: Internal server error
delete:
summary: Remove SSH authorized key
description: Removes an SSH public key from a user's authorized_keys file
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- user
- pubkey
properties:
user:
type: string
description: Username to remove key for
example: "pi"
pubkey:
type: string
description: SSH public key to remove
example: "ssh-rsa AAAAB3NzaC1yc2E... user@host"
responses:
'200':
description: Key removed successfully
'400':
description: Invalid request payload or SSH key format
'401':
description: Unauthorized - invalid or missing API token
'500':
description: Internal server error