Files
OpenFlare/openflare_server/docs/docs.go
T
2026-06-02 00:13:39 +08:00

3790 lines
119 KiB
Go

// Package docs Code generated by swaggo/swag. DO NOT EDIT
package docs
import "github.com/swaggo/swag"
const docTemplate = `{
"schemes": {{ marshal .Schemes }},
"swagger": "2.0",
"info": {
"description": "{{escape .Description}}",
"title": "{{.Title}}",
"contact": {},
"version": "{{.Version}}"
},
"host": "{{.Host}}",
"basePath": "{{.BasePath}}",
"paths": {
"/api/access-logs/": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"AccessLogs"
],
"summary": "List access logs",
"parameters": [
{
"type": "string",
"description": "Node ID",
"name": "node_id",
"in": "query"
},
{
"type": "string",
"description": "Remote address",
"name": "remote_addr",
"in": "query"
},
{
"type": "string",
"description": "Host",
"name": "host",
"in": "query"
},
{
"type": "string",
"description": "Path",
"name": "path",
"in": "query"
},
{
"type": "integer",
"description": "Page index",
"name": "p",
"in": "query"
},
{
"type": "integer",
"description": "Page size",
"name": "page_size",
"in": "query"
},
{
"type": "string",
"description": "Sort by",
"name": "sort_by",
"in": "query"
},
{
"type": "string",
"description": "Sort order",
"name": "sort_order",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/access-logs/cleanup": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"AccessLogs"
],
"summary": "Cleanup access logs by retention days",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/access-logs/folds": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"AccessLogs"
],
"summary": "List folded access logs",
"parameters": [
{
"type": "string",
"description": "Node ID",
"name": "node_id",
"in": "query"
},
{
"type": "string",
"description": "Remote address",
"name": "remote_addr",
"in": "query"
},
{
"type": "string",
"description": "Host",
"name": "host",
"in": "query"
},
{
"type": "string",
"description": "Path",
"name": "path",
"in": "query"
},
{
"type": "integer",
"description": "Page index",
"name": "p",
"in": "query"
},
{
"type": "integer",
"description": "Page size",
"name": "page_size",
"in": "query"
},
{
"type": "string",
"description": "Sort by",
"name": "sort_by",
"in": "query"
},
{
"type": "string",
"description": "Sort order",
"name": "sort_order",
"in": "query"
},
{
"type": "integer",
"description": "Fold minutes",
"name": "fold_minutes",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/access-logs/folds/ip-summary": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"AccessLogs"
],
"summary": "List folded access log IP summaries",
"parameters": [
{
"type": "string",
"description": "Node ID",
"name": "node_id",
"in": "query"
},
{
"type": "string",
"description": "Remote address",
"name": "remote_addr",
"in": "query"
},
{
"type": "string",
"description": "Host",
"name": "host",
"in": "query"
},
{
"type": "string",
"description": "Path",
"name": "path",
"in": "query"
},
{
"type": "string",
"description": "Bucket started at",
"name": "bucket_started_at",
"in": "query",
"required": true
},
{
"type": "integer",
"description": "Fold minutes",
"name": "fold_minutes",
"in": "query",
"required": true
},
{
"type": "integer",
"description": "Page index",
"name": "p",
"in": "query"
},
{
"type": "integer",
"description": "Page size",
"name": "page_size",
"in": "query"
},
{
"type": "string",
"description": "Sort by",
"name": "sort_by",
"in": "query"
},
{
"type": "string",
"description": "Sort order",
"name": "sort_order",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/access-logs/ip-summary": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"AccessLogs"
],
"summary": "List access log IP summaries",
"parameters": [
{
"type": "string",
"description": "Node ID",
"name": "node_id",
"in": "query"
},
{
"type": "string",
"description": "Remote address",
"name": "remote_addr",
"in": "query"
},
{
"type": "string",
"description": "Host",
"name": "host",
"in": "query"
},
{
"type": "integer",
"description": "Page index",
"name": "p",
"in": "query"
},
{
"type": "integer",
"description": "Page size",
"name": "page_size",
"in": "query"
},
{
"type": "string",
"description": "Sort by",
"name": "sort_by",
"in": "query"
},
{
"type": "string",
"description": "Sort order",
"name": "sort_order",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/access-logs/ip-summary/trend": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"AccessLogs"
],
"summary": "Get access log IP trend",
"parameters": [
{
"type": "string",
"description": "Node ID",
"name": "node_id",
"in": "query"
},
{
"type": "string",
"description": "Remote address",
"name": "remote_addr",
"in": "query",
"required": true
},
{
"type": "string",
"description": "Host",
"name": "host",
"in": "query"
},
{
"type": "integer",
"description": "Hours",
"name": "hours",
"in": "query"
},
{
"type": "integer",
"description": "Bucket minutes",
"name": "bucket_minutes",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/acme-accounts/default": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"AcmeAccounts"
],
"summary": "Get default ACME account",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/agent/apply-logs": {
"post": {
"security": [
{
"AccessTokenAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Agent"
],
"summary": "Report agent apply result",
"parameters": [
{
"description": "Apply log payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.ApplyLogPayload"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/agent/config-versions/active": {
"get": {
"security": [
{
"AccessTokenAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"Agent"
],
"summary": "Get active config for agent",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/agent/nodes/heartbeat": {
"post": {
"security": [
{
"AccessTokenAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Agent"
],
"summary": "Report agent heartbeat",
"parameters": [
{
"description": "Agent heartbeat payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.AgentNodePayload"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/agent/nodes/register": {
"post": {
"security": [
{
"AccessTokenAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Agent"
],
"summary": "Register or discover agent node",
"parameters": [
{
"description": "Agent node payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.AgentNodePayload"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/agent/waf/ip-groups/sync": {
"post": {
"security": [
{
"AccessTokenAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Agent"
],
"summary": "Sync WAF IP groups for agent",
"parameters": [
{
"description": "WAF IP group sync payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.AgentWAFIPGroupSyncInput"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/agent/ws": {
"get": {
"security": [
{
"AccessTokenAuth": []
}
],
"tags": [
"Agent"
],
"summary": "Upgrade agent connection to websocket",
"responses": {}
}
},
"/api/apply-logs/": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"ApplyLogs"
],
"summary": "List apply logs",
"parameters": [
{
"type": "string",
"description": "Node ID",
"name": "node_id",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/apply-logs/cleanup": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"ApplyLogs"
],
"summary": "Cleanup apply logs",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/config-versions/": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"ConfigVersions"
],
"summary": "List config versions",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/config-versions/active": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"ConfigVersions"
],
"summary": "Get active config version",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/config-versions/cleanup": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"ConfigVersions"
],
"summary": "Cleanup old config versions",
"parameters": [
{
"description": "Cleanup request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/controller.CleanupConfigVersionRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/config-versions/diff": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"ConfigVersions"
],
"summary": "Diff current draft against active version",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/config-versions/preview": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"ConfigVersions"
],
"summary": "Preview config rendering",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/config-versions/publish": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"ConfigVersions"
],
"summary": "Publish a new config version",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/config-versions/{id}": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"ConfigVersions"
],
"summary": "Get config version detail",
"parameters": [
{
"type": "integer",
"description": "Version ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/config-versions/{id}/activate": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"ConfigVersions"
],
"summary": "Activate an existing config version",
"parameters": [
{
"type": "integer",
"description": "Version ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/dashboard/overview": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"Dashboard"
],
"summary": "Get dashboard overview",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/dns-accounts/": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"DnsAccounts"
],
"summary": "List DNS accounts",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
},
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"DnsAccounts"
],
"summary": "Create DNS account",
"parameters": [
{
"description": "DNS account payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/controller.DnsAccountInput"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/dns-accounts/{id}/delete": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"DnsAccounts"
],
"summary": "Delete DNS account",
"parameters": [
{
"type": "integer",
"description": "DNS Account ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/dns-accounts/{id}/update": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"DnsAccounts"
],
"summary": "Update DNS account",
"parameters": [
{
"type": "integer",
"description": "DNS Account ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "DNS account payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/controller.DnsAccountInput"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/flared/apply-log": {
"post": {
"security": [
{
"TunnelTokenAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Flared"
],
"summary": "Report OpenFlared apply result",
"parameters": [
{
"description": "Apply log payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.ApplyLogPayload"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/flared/config/active": {
"get": {
"security": [
{
"TunnelTokenAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"Flared"
],
"summary": "Get active tunnel config for OpenFlared",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/flared/heartbeat": {
"post": {
"security": [
{
"TunnelTokenAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Flared"
],
"summary": "Report OpenFlared heartbeat",
"parameters": [
{
"description": "Flared heartbeat payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.FlaredHeartbeatPayload"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/flared/ws": {
"get": {
"security": [
{
"TunnelTokenAuth": []
}
],
"tags": [
"Flared"
],
"summary": "Upgrade OpenFlared connection to websocket",
"responses": {}
}
},
"/api/managed-domains/": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"ManagedDomains"
],
"summary": "List managed domains",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
},
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"ManagedDomains"
],
"summary": "Create managed domain",
"parameters": [
{
"description": "Managed domain payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.ManagedDomainInput"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/managed-domains/match": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"ManagedDomains"
],
"summary": "Match certificate for domain",
"parameters": [
{
"type": "string",
"description": "Domain",
"name": "domain",
"in": "query",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/managed-domains/{id}/delete": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"ManagedDomains"
],
"summary": "Delete managed domain",
"parameters": [
{
"type": "integer",
"description": "Managed domain ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/managed-domains/{id}/update": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"ManagedDomains"
],
"summary": "Update managed domain",
"parameters": [
{
"type": "integer",
"description": "Managed domain ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Managed domain payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.ManagedDomainInput"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/nodes/": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"Nodes"
],
"summary": "List nodes",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
},
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Nodes"
],
"summary": "Create node",
"parameters": [
{
"description": "Node payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.NodeInput"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/nodes/bootstrap-token": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"Nodes"
],
"summary": "Get global discovery token",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/nodes/bootstrap-token/rotate": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"Nodes"
],
"summary": "Rotate global discovery token",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/nodes/{id}/agent-release": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"Nodes"
],
"summary": "Check latest agent release for node",
"parameters": [
{
"type": "integer",
"description": "Node ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "stable or preview",
"name": "channel",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/nodes/{id}/agent-update": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"Nodes"
],
"summary": "Request agent self-update on node",
"parameters": [
{
"type": "integer",
"description": "Node ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/nodes/{id}/delete": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"Nodes"
],
"summary": "Delete node",
"parameters": [
{
"type": "integer",
"description": "Node ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/nodes/{id}/force-sync": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"Nodes"
],
"summary": "Request force sync config on node",
"parameters": [
{
"type": "integer",
"description": "Node ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/nodes/{id}/observability": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"Nodes"
],
"summary": "Get node observability details",
"parameters": [
{
"type": "integer",
"description": "Node ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Lookback window in hours",
"name": "hours",
"in": "query"
},
{
"type": "integer",
"description": "Max records per section",
"name": "limit",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/nodes/{id}/observability/cleanup": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"Nodes"
],
"summary": "Cleanup node health events",
"parameters": [
{
"type": "integer",
"description": "Node ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/nodes/{id}/openresty-restart": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"Nodes"
],
"summary": "Request openresty restart on node",
"parameters": [
{
"type": "integer",
"description": "Node ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/nodes/{id}/update": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Nodes"
],
"summary": "Update node",
"parameters": [
{
"type": "integer",
"description": "Node ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Node payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.NodeInput"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/option/": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Options"
],
"summary": "List editable options",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/option/database/cleanup": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Options"
],
"summary": "Cleanup observability tables",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/option/geoip/lookup": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Options"
],
"summary": "Test GeoIP lookup",
"parameters": [
{
"description": "GeoIP lookup payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/controller.geoIPLookupRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/option/update": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Options"
],
"summary": "Update option",
"parameters": [
{
"description": "Option payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/model.Option"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/option/update-batch": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Options"
],
"summary": "Batch update options",
"parameters": [
{
"description": "Batch option payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/controller.optionBatchPayload"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/proxy-routes/": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"ProxyRoutes"
],
"summary": "List proxy routes",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
},
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"ProxyRoutes"
],
"summary": "Create proxy route",
"parameters": [
{
"description": "Proxy route payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.ProxyRouteInput"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/proxy-routes/{id}": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"ProxyRoutes"
],
"summary": "Get proxy route detail",
"parameters": [
{
"type": "integer",
"description": "Route ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/proxy-routes/{id}/delete": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"ProxyRoutes"
],
"summary": "Delete proxy route",
"parameters": [
{
"type": "integer",
"description": "Route ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/proxy-routes/{id}/update": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"ProxyRoutes"
],
"summary": "Update proxy route",
"parameters": [
{
"type": "integer",
"description": "Route ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Proxy route payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.ProxyRouteInput"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/relay/heartbeat": {
"post": {
"security": [
{
"AccessTokenAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Relay"
],
"summary": "Report relay heartbeat",
"parameters": [
{
"description": "Relay heartbeat payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.RelayHeartbeatPayload"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/relay/ws": {
"get": {
"security": [
{
"AccessTokenAuth": []
}
],
"tags": [
"Relay"
],
"summary": "Upgrade relay connection to websocket",
"responses": {}
}
},
"/api/status": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Public"
],
"summary": "Get server status",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/tls-certificates/": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"TLSCertificates"
],
"summary": "List TLS certificates",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
},
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"TLSCertificates"
],
"summary": "Create TLS certificate from PEM",
"parameters": [
{
"description": "TLS certificate payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.TLSCertificateInput"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/tls-certificates/apply": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"TLSCertificates"
],
"summary": "Apply TLS certificate via ACME",
"parameters": [
{
"description": "TLS apply payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.TLSApplyInput"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/tls-certificates/import-file": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"tags": [
"TLSCertificates"
],
"summary": "Import TLS certificate from files",
"parameters": [
{
"type": "string",
"description": "Certificate name",
"name": "name",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "Remark",
"name": "remark",
"in": "formData"
},
{
"type": "file",
"description": "Certificate file",
"name": "cert_file",
"in": "formData",
"required": true
},
{
"type": "file",
"description": "Private key file",
"name": "key_file",
"in": "formData",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/tls-certificates/{id}": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"TLSCertificates"
],
"summary": "Get TLS certificate detail",
"parameters": [
{
"type": "integer",
"description": "Certificate ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/tls-certificates/{id}/content": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"TLSCertificates"
],
"summary": "Get TLS certificate PEM content",
"parameters": [
{
"type": "integer",
"description": "Certificate ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/tls-certificates/{id}/convert-acme": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"TLSCertificates"
],
"summary": "Convert uploaded TLS certificate to ACME managed certificate",
"parameters": [
{
"type": "integer",
"description": "Certificate ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "TLS apply payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.TLSApplyInput"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/tls-certificates/{id}/delete": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"TLSCertificates"
],
"summary": "Delete TLS certificate",
"parameters": [
{
"type": "integer",
"description": "Certificate ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/tls-certificates/{id}/renew": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"TLSCertificates"
],
"summary": "Renew TLS certificate",
"parameters": [
{
"type": "integer",
"description": "Certificate ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/tls-certificates/{id}/update": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"TLSCertificates"
],
"summary": "Update TLS certificate from PEM",
"parameters": [
{
"type": "integer",
"description": "Certificate ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "TLS certificate payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.TLSCertificateInput"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/tls-certificates/{id}/update-acme": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"TLSCertificates"
],
"summary": "Update ACME TLS certificate",
"parameters": [
{
"type": "integer",
"description": "Certificate ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "TLS apply payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/service.TLSApplyInput"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/update/latest-release": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"produces": [
"application/json"
],
"tags": [
"Update"
],
"summary": "Get latest GitHub release",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/update/logs/ws": {
"get": {
"tags": [
"Update"
],
"summary": "Stream server upgrade logs over websocket",
"responses": {}
}
},
"/api/update/manual-upgrade": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Update"
],
"summary": "Confirm upgrade with previously uploaded server binary",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/update/manual-upload": {
"post": {
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"tags": [
"Update"
],
"summary": "Upload server binary and inspect version before upgrade",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/api/update/upgrade": {
"post": {
"produces": [
"application/json"
],
"tags": [
"Update"
],
"summary": "Upgrade server binary from latest GitHub release",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
}
},
"definitions": {
"controller.CleanupConfigVersionRequest": {
"type": "object",
"required": [
"keep_count"
],
"properties": {
"keep_count": {
"type": "integer",
"minimum": 3
}
}
},
"controller.DnsAccountInput": {
"type": "object",
"properties": {
"authorization": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string"
}
}
},
"controller.geoIPLookupRequest": {
"type": "object",
"properties": {
"ip": {
"type": "string"
},
"provider": {
"type": "string"
}
}
},
"controller.optionBatchPayload": {
"type": "object",
"properties": {
"options": {
"type": "array",
"items": {
"$ref": "#/definitions/model.Option"
}
}
}
},
"model.Option": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"value": {
"type": "string"
}
}
},
"service.AgentBufferedObservabilityRecord": {
"type": "object",
"properties": {
"access_logs": {
"type": "array",
"items": {
"$ref": "#/definitions/service.AgentNodeAccessLog"
}
},
"openresty_observation": {
"$ref": "#/definitions/service.AgentNodeOpenrestyObservation"
},
"snapshot": {
"$ref": "#/definitions/service.AgentNodeMetricSnapshot"
},
"traffic_report": {
"$ref": "#/definitions/service.AgentNodeTrafficReport"
},
"window_started_at_unix": {
"type": "integer"
}
}
},
"service.AgentNodeAccessLog": {
"type": "object",
"properties": {
"host": {
"type": "string"
},
"logged_at_unix": {
"type": "integer"
},
"path": {
"type": "string"
},
"remote_addr": {
"type": "string"
},
"status_code": {
"type": "integer"
}
}
},
"service.AgentNodeHealthEvent": {
"type": "object",
"properties": {
"event_type": {
"type": "string"
},
"message": {
"type": "string"
},
"metadata": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"severity": {
"type": "string"
},
"triggered_at_unix": {
"type": "integer"
}
}
},
"service.AgentNodeMetricSnapshot": {
"type": "object",
"properties": {
"captured_at_unix": {
"type": "integer"
},
"cpu_usage_percent": {
"type": "number"
},
"disk_read_bytes": {
"type": "integer"
},
"disk_write_bytes": {
"type": "integer"
},
"memory_total_bytes": {
"type": "integer"
},
"memory_used_bytes": {
"type": "integer"
},
"network_rx_bytes": {
"type": "integer"
},
"network_tx_bytes": {
"type": "integer"
},
"storage_total_bytes": {
"type": "integer"
},
"storage_used_bytes": {
"type": "integer"
}
}
},
"service.AgentNodeOpenrestyObservation": {
"type": "object",
"properties": {
"captured_at_unix": {
"type": "integer"
},
"openresty_connections": {
"type": "integer"
},
"openresty_rx_bytes": {
"type": "integer"
},
"openresty_tx_bytes": {
"type": "integer"
}
}
},
"service.AgentNodePayload": {
"type": "object",
"properties": {
"access_logs": {
"type": "array",
"items": {
"$ref": "#/definitions/service.AgentNodeAccessLog"
}
},
"buffered_observability": {
"type": "array",
"items": {
"$ref": "#/definitions/service.AgentBufferedObservabilityRecord"
}
},
"current_version": {
"type": "string"
},
"ext_version": {
"type": "string"
},
"health_events": {
"type": "array",
"items": {
"$ref": "#/definitions/service.AgentNodeHealthEvent"
}
},
"ip": {
"type": "string"
},
"last_error": {
"type": "string"
},
"name": {
"type": "string"
},
"node_id": {
"type": "string"
},
"openresty_message": {
"type": "string"
},
"openresty_observation": {
"$ref": "#/definitions/service.AgentNodeOpenrestyObservation"
},
"openresty_status": {
"type": "string"
},
"profile": {
"$ref": "#/definitions/service.AgentNodeSystemProfile"
},
"snapshot": {
"$ref": "#/definitions/service.AgentNodeMetricSnapshot"
},
"traffic_report": {
"$ref": "#/definitions/service.AgentNodeTrafficReport"
},
"version": {
"type": "string"
},
"waf_ip_group_checksums": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
},
"service.AgentNodeSystemProfile": {
"type": "object",
"properties": {
"architecture": {
"type": "string"
},
"cpu_cores": {
"type": "integer"
},
"cpu_model": {
"type": "string"
},
"hostname": {
"type": "string"
},
"kernel_version": {
"type": "string"
},
"os_name": {
"type": "string"
},
"os_version": {
"type": "string"
},
"reported_at_unix": {
"type": "integer"
},
"total_disk_bytes": {
"type": "integer"
},
"total_memory_bytes": {
"type": "integer"
},
"uptime_seconds": {
"type": "integer"
}
}
},
"service.AgentNodeTrafficReport": {
"type": "object",
"properties": {
"error_count": {
"type": "integer"
},
"request_count": {
"type": "integer"
},
"source_countries": {
"type": "object",
"additionalProperties": {
"type": "integer"
}
},
"status_codes": {
"type": "object",
"additionalProperties": {
"type": "integer"
}
},
"top_domains": {
"type": "object",
"additionalProperties": {
"type": "integer"
}
},
"unique_visitor_count": {
"type": "integer"
},
"window_ended_at_unix": {
"type": "integer"
},
"window_started_at_unix": {
"type": "integer"
}
}
},
"service.AgentWAFIPGroupSyncInput": {
"type": "object",
"properties": {
"checksums": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"ids": {
"type": "array",
"items": {
"type": "integer"
}
}
}
},
"service.ApplyLogPayload": {
"type": "object",
"properties": {
"checksum": {
"type": "string"
},
"main_config_checksum": {
"type": "string"
},
"message": {
"type": "string"
},
"node_id": {
"type": "string"
},
"result": {
"type": "string"
},
"route_config_checksum": {
"type": "string"
},
"support_file_count": {
"type": "integer"
},
"version": {
"type": "string"
}
}
},
"service.FlaredConnectedRelay": {
"type": "object",
"properties": {
"proxy_count": {
"type": "integer"
},
"relay_node_id": {
"type": "string"
},
"status": {
"type": "string"
}
}
},
"service.FlaredHeartbeatPayload": {
"type": "object",
"properties": {
"client_version": {
"type": "string"
},
"connected_relays": {
"type": "array",
"items": {
"$ref": "#/definitions/service.FlaredConnectedRelay"
}
},
"current_checksum": {
"type": "string"
},
"current_version": {
"type": "string"
},
"frp_version": {
"type": "string"
},
"ip": {
"type": "string"
},
"tunnel_status": {
"type": "string"
}
}
},
"service.ManagedDomainInput": {
"type": "object",
"properties": {
"cert_id": {
"type": "integer"
},
"domain": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"remark": {
"type": "string"
}
}
},
"service.NodeInput": {
"type": "object",
"properties": {
"auto_update_enabled": {
"type": "boolean"
},
"geo_latitude": {
"type": "number"
},
"geo_longitude": {
"type": "number"
},
"geo_manual_override": {
"type": "boolean"
},
"geo_name": {
"type": "string"
},
"ip": {
"type": "string"
},
"ip_manual_override": {
"type": "boolean"
},
"name": {
"type": "string"
},
"node_type": {
"description": "TunnelRelay fields",
"type": "string"
},
"relay_agent_access_addr": {
"type": "string"
},
"relay_bind_port": {
"type": "integer"
},
"relay_client_access_addr": {
"type": "string"
},
"relay_client_proxy_url": {
"type": "string"
},
"relay_vhost_http_port": {
"type": "integer"
},
"relay_web_server_enabled": {
"type": "boolean"
}
}
},
"service.ProxyRouteCustomHeaderInput": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"value": {
"type": "string"
}
}
},
"service.ProxyRouteInput": {
"type": "object",
"properties": {
"basic_auth_enabled": {
"type": "boolean"
},
"basic_auth_password": {
"type": "string"
},
"basic_auth_username": {
"type": "string"
},
"cache_enabled": {
"type": "boolean"
},
"cache_policy": {
"type": "string"
},
"cache_rules": {
"type": "array",
"items": {
"type": "string"
}
},
"cert_id": {
"type": "integer"
},
"cert_ids": {
"type": "array",
"items": {
"type": "integer"
}
},
"custom_headers": {
"type": "array",
"items": {
"$ref": "#/definitions/service.ProxyRouteCustomHeaderInput"
}
},
"domain": {
"type": "string"
},
"domain_cert_ids": {
"type": "array",
"items": {
"type": "integer"
}
},
"domains": {
"type": "array",
"items": {
"type": "string"
}
},
"enable_https": {
"type": "boolean"
},
"enabled": {
"type": "boolean"
},
"limit_conn_per_ip": {
"type": "integer"
},
"limit_conn_per_server": {
"type": "integer"
},
"limit_rate": {
"type": "string"
},
"origin_address": {
"type": "string"
},
"origin_host": {
"type": "string"
},
"origin_id": {
"type": "integer"
},
"origin_port": {
"type": "string"
},
"origin_scheme": {
"type": "string"
},
"origin_uri": {
"type": "string"
},
"origin_url": {
"type": "string"
},
"pow_config": {
"type": "string"
},
"pow_enabled": {
"type": "boolean"
},
"redirect_http": {
"type": "boolean"
},
"remark": {
"type": "string"
},
"site_name": {
"type": "string"
},
"tunnel_id": {
"type": "integer"
},
"tunnel_node_id": {
"type": "integer"
},
"tunnel_target_addr": {
"type": "string"
},
"tunnel_target_protocol": {
"type": "string"
},
"upstream_type": {
"type": "string"
},
"upstreams": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"service.RelayHeartbeatPayload": {
"type": "object",
"properties": {
"frp_version": {
"type": "string"
},
"frps_client_count": {
"type": "integer"
},
"frps_connections": {
"type": "integer"
},
"frps_proxies": {
"type": "array",
"items": {
"$ref": "#/definitions/service.RelayProxyStat"
}
},
"frps_proxy_count": {
"type": "integer"
},
"health_events": {
"type": "array",
"items": {
"$ref": "#/definitions/service.AgentNodeHealthEvent"
}
},
"ip": {
"type": "string"
},
"name": {
"type": "string"
},
"profile": {
"$ref": "#/definitions/service.AgentNodeSystemProfile"
},
"relay_status": {
"type": "string"
},
"snapshot": {
"$ref": "#/definitions/service.AgentNodeMetricSnapshot"
},
"version": {
"type": "string"
}
}
},
"service.RelayProxyStat": {
"type": "object",
"properties": {
"client_addr": {
"type": "string"
},
"client_version": {
"type": "string"
},
"last_close_time": {
"type": "string"
},
"last_start_time": {
"type": "string"
},
"name": {
"type": "string"
},
"status": {
"type": "string"
},
"type": {
"type": "string"
}
}
},
"service.TLSApplyInput": {
"type": "object",
"properties": {
"acme_account_id": {
"type": "integer"
},
"auto_renew": {
"type": "boolean"
},
"disable_cname": {
"type": "boolean"
},
"dns1": {
"type": "string"
},
"dns2": {
"type": "string"
},
"dns_account_id": {
"type": "integer"
},
"key_algorithm": {
"type": "string"
},
"name": {
"type": "string"
},
"other_domains": {
"type": "string"
},
"primary_domain": {
"type": "string"
},
"remark": {
"type": "string"
},
"skip_dns": {
"type": "boolean"
}
}
},
"service.TLSCertificateInput": {
"type": "object",
"properties": {
"cert_pem": {
"type": "string"
},
"key_pem": {
"type": "string"
},
"name": {
"type": "string"
},
"remark": {
"type": "string"
}
}
}
},
"securityDefinitions": {
"AccessTokenAuth": {
"description": "Agent API 使用节点专属 Agent Token 或全局 Discovery Token",
"type": "apiKey",
"name": "X-Agent-Token",
"in": "header"
},
"BearerAuth": {
"description": "管理端可使用 Bearer Token,例如:Bearer \u003ctoken\u003e",
"type": "apiKey",
"name": "Authorization",
"in": "header"
}
}
}`
// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
Version: "3.0",
Host: "",
BasePath: "/",
Schemes: []string{"http", "https"},
Title: "OpenFlare Server API",
Description: "OpenFlare Server 管理端与 Agent API 文档。",
InfoInstanceName: "swagger",
SwaggerTemplate: docTemplate,
LeftDelim: "{{",
RightDelim: "}}",
}
func init() {
swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
}