| Current Path : /home/hotlineuser/mobius/ |
| Current File : //home/hotlineuser/mobius/api.yaml |
openapi: 3.0.3
info:
title: Mobius API
description: REST API for managing a Hotline server
version: 1.0.0
contact:
name: Mobius
url: https://github.com/jhalter/mobius
servers:
- url: http://localhost:5603
description: Local development server
security:
- ApiKeyAuth: []
paths:
/api/v1/online:
get:
summary: Get online users
description: Returns a list of currently online users with their login, nickname, and IP address
responses:
'200':
description: List of online users
content:
application/json:
schema:
type: array
items:
type: object
properties:
login:
type: string
description: User's login name
nickname:
type: string
description: User's display nickname
ip:
type: string
description: User's IP address
example:
login: "admin"
nickname: "Administrator"
ip: "192.168.1.100"
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/ban:
post:
summary: Ban a user
description: Ban a user by username, nickname, or IP address. At least one field must be provided.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
username:
type: string
description: Username to ban
nickname:
type: string
description: Nickname to ban
ip:
type: string
description: IP address to ban
example:
username: "baduser"
responses:
'200':
description: User banned successfully
content:
application/json:
schema:
type: object
properties:
msg:
type: string
example: "banned"
'400':
description: Bad request - missing required fields
content:
text/plain:
schema:
type: string
example: "username, nickname, or ip required"
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/unban:
post:
summary: Unban a user
description: Remove a ban for a user by username, nickname, or IP address. At least one field must be provided.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
username:
type: string
description: Username to unban
nickname:
type: string
description: Nickname to unban
ip:
type: string
description: IP address to unban
example:
username: "baduser"
responses:
'200':
description: User unbanned successfully
content:
application/json:
schema:
type: object
properties:
msg:
type: string
example: "unbanned"
'400':
description: Bad request - missing required fields
content:
text/plain:
schema:
type: string
example: "username, nickname, or ip required"
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/banned/ips:
get:
summary: List banned IP addresses
description: Returns a list of all banned IP addresses
responses:
'200':
description: List of banned IP addresses
content:
application/json:
schema:
type: array
items:
type: string
example: ["192.168.1.100", "10.0.0.5"]
'401':
$ref: '#/components/responses/Unauthorized'
'500':
description: Internal server error
content:
text/plain:
schema:
type: string
example: "failed to fetch banned IPs"
/api/v1/banned/usernames:
get:
summary: List banned usernames
description: Returns a list of all banned usernames
responses:
'200':
description: List of banned usernames
content:
application/json:
schema:
type: array
items:
type: string
example: ["baduser", "spammer"]
'401':
$ref: '#/components/responses/Unauthorized'
'500':
description: Internal server error
content:
text/plain:
schema:
type: string
example: "failed to fetch banned usernames"
/api/v1/banned/nicknames:
get:
summary: List banned nicknames
description: Returns a list of all banned nicknames
responses:
'200':
description: List of banned nicknames
content:
application/json:
schema:
type: array
items:
type: string
example: ["BadNick", "Spammer123"]
'401':
$ref: '#/components/responses/Unauthorized'
'500':
description: Internal server error
content:
text/plain:
schema:
type: string
example: "failed to fetch banned nicknames"
/api/v1/reload:
post:
summary: Reload server configuration
description: Triggers a reload of the server configuration
responses:
'200':
description: Configuration reloaded successfully
content:
application/json:
schema:
type: object
properties:
msg:
type: string
example: "config reloaded"
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/shutdown:
post:
summary: Shutdown server
description: Gracefully shutdown the server with a message
requestBody:
required: true
content:
text/plain:
schema:
type: string
example: "Server maintenance"
responses:
'200':
description: Server shutting down
content:
application/json:
schema:
type: object
properties:
msg:
type: string
example: "server shutting down"
'400':
description: Bad request - missing shutdown message
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/stats:
get:
summary: Get server statistics
description: Returns current server statistics and metrics
responses:
'200':
description: Server statistics
content:
application/json:
schema:
type: object
description: Server statistics object (structure depends on implementation)
'401':
$ref: '#/components/responses/Unauthorized'
'500':
description: Internal server error
content:
text/plain:
schema:
type: string
example: "failed to marshal stats"
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: API key for authentication
responses:
Unauthorized:
description: Authentication required
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: "unauthorized"