basePath: /api/v1 definitions: Agent: properties: addr: type: string name: type: string runtime: $ref: '#/definitions/agent.ContainerRuntime' supports_tcp_stream: type: boolean supports_udp_stream: type: boolean version: type: string type: object CIDR: properties: ip: description: network number items: format: int32 type: integer type: array mask: description: network mask items: format: int32 type: integer type: array type: object CertInfo: properties: dns_names: items: type: string type: array email_addresses: items: type: string type: array issuer: type: string not_after: type: integer not_before: type: integer subject: type: string type: object Container: properties: agent: $ref: '#/definitions/agentpool.Agent' aliases: items: type: string type: array container_id: type: string container_name: type: string docker_cfg: $ref: '#/definitions/DockerProviderConfig' errors: type: string idlewatcher_config: $ref: '#/definitions/IdlewatcherConfig' image: $ref: '#/definitions/ContainerImage' is_excluded: type: boolean is_explicit: type: boolean is_host_network_mode: type: boolean labels: additionalProperties: type: string description: for displaying in UI type: object mounts: additionalProperties: type: string description: source:destination type: object network: type: string private_hostname: type: string private_ports: allOf: - $ref: '#/definitions/types.PortMapping' description: privatePort:types.Port public_hostname: type: string public_ports: allOf: - $ref: '#/definitions/types.PortMapping' description: non-zero publicPort:types.Port running: type: boolean state: $ref: '#/definitions/container.ContainerState' type: object ContainerImage: properties: author: type: string name: type: string sha256: type: string tag: type: string version: type: string type: object ContainerResponse: properties: id: type: string image: type: string name: type: string server: type: string state: allOf: - $ref: '#/definitions/ContainerState' x-nullable: true type: object ContainerState: enum: - created - running - paused - restarting - removing - exited - dead type: string x-enum-comments: StateCreated: StateCreated indicates the container is created, but not (yet) started. StateDead: StateDead indicates that the container failed to be deleted. Containers in this state are attempted to be cleaned up when the daemon restarts. StateExited: StateExited indicates that the container exited. StatePaused: StatePaused indicates that the container's current state is paused. StateRemoving: StateRemoving indicates that the container is being removed. StateRestarting: StateRestarting indicates that the container is currently restarting. StateRunning: StateRunning indicates that the container is running. x-enum-descriptions: - StateCreated indicates the container is created, but not (yet) started. - StateRunning indicates that the container is running. - StatePaused indicates that the container's current state is paused. - StateRestarting indicates that the container is currently restarting. - StateRemoving indicates that the container is being removed. - StateExited indicates that the container exited. - StateDead indicates that the container failed to be deleted. Containers in this state are attempted to be cleaned up when the daemon restarts. x-enum-varnames: - StateCreated - StateRunning - StatePaused - StateRestarting - StateRemoving - StateExited - StateDead ContainerStats: properties: paused: type: integer running: type: integer stopped: type: integer total: type: integer type: object ContainerStopMethod: enum: - pause - stop - kill type: string x-enum-varnames: - ContainerStopMethodPause - ContainerStopMethodStop - ContainerStopMethodKill DockerConfig: properties: container_id: type: string container_name: type: string docker_cfg: $ref: '#/definitions/DockerProviderConfig' required: - container_id - container_name - docker_cfg type: object DockerProviderConfig: properties: tls: $ref: '#/definitions/DockerTLSConfig' url: type: string type: object DockerTLSConfig: properties: ca_file: type: string cert_file: type: string key_file: type: string required: - ca_file type: object ErrorResponse: properties: error: type: string x-nullable: true message: type: string type: object FileType: enum: - config - provider - middleware type: string x-enum-varnames: - FileTypeConfig - FileTypeProvider - FileTypeMiddleware FinalRequest: properties: body: type: string headers: additionalProperties: items: type: string type: array type: object host: type: string method: type: string path: type: string query: additionalProperties: items: type: string type: array type: object type: object FinalResponse: properties: body: type: string headers: additionalProperties: items: type: string type: array type: object statusCode: type: integer type: object HTTPHeader: properties: key: type: string value: type: string type: object HealthCheckConfig: properties: disable: type: boolean interval: type: integer path: type: string retries: description: '<0: immediate, 0: default, >0: threshold' type: integer timeout: type: integer use_get: type: boolean type: object HealthExtra: properties: config: $ref: '#/definitions/LoadBalancerConfig' pool: additionalProperties: {} type: object type: object HealthInfoWithoutDetail: properties: latency: description: latency in microseconds type: number status: enum: - healthy - unhealthy - napping - starting - error - unknown type: string uptime: description: uptime in milliseconds type: number type: object HealthJSON: properties: config: $ref: '#/definitions/HealthCheckConfig' detail: type: string extra: allOf: - $ref: '#/definitions/HealthExtra' x-nullable: true lastSeen: description: unix timestamp in seconds type: integer latency: description: latency in milliseconds type: integer name: type: string started: description: unix timestamp in seconds type: integer status: $ref: '#/definitions/HealthStatusString' uptime: description: uptime in seconds type: number url: type: string type: object HealthMap: additionalProperties: $ref: '#/definitions/HealthStatusString' type: object HealthStatusString: enum: - unknown - healthy - napping - starting - unhealthy - error type: string x-enum-varnames: - StatusUnknownStr - StatusHealthyStr - StatusNappingStr - StatusStartingStr - StatusUnhealthyStr - StatusErrorStr HomepageCategory: properties: items: items: $ref: '#/definitions/HomepageItem' type: array name: type: string type: object HomepageItem: properties: alias: type: string all_sort_order: description: sort order in all type: integer category: type: string clicks: type: integer container_id: type: string x-nullable: true description: type: string fav_sort_order: description: sort order in favorite type: integer favorite: type: boolean icon: type: string name: description: display name type: string origin_url: type: string provider: type: string show: type: boolean sort_order: description: sort order in category type: integer url: type: string widget_config: allOf: - $ref: '#/definitions/widgets.Config' x-nullable: true widgets: items: $ref: '#/definitions/HomepageItemWidget' type: array type: object HomepageItemConfig: properties: category: type: string description: type: string favorite: type: boolean icon: type: string name: description: display name type: string show: type: boolean url: type: string widget_config: allOf: - $ref: '#/definitions/widgets.Config' x-nullable: true type: object HomepageItemWidget: properties: label: type: string value: type: string type: object HomepageOverrideCategoryOrderParams: properties: value: type: integer which: type: string type: object HomepageOverrideItemAllSortOrderParams: properties: value: type: integer which: type: string type: object HomepageOverrideItemFavSortOrderParams: properties: value: type: integer which: type: string type: object HomepageOverrideItemFavoriteParams: properties: value: type: boolean which: items: type: string type: array type: object HomepageOverrideItemParams: properties: value: $ref: '#/definitions/HomepageItemConfig' which: type: string type: object HomepageOverrideItemSortOrderParams: properties: value: type: integer which: type: string type: object HomepageOverrideItemVisibleParams: properties: value: type: boolean which: items: type: string type: array type: object HomepageOverrideItemsBatchParams: properties: value: additionalProperties: $ref: '#/definitions/HomepageItemConfig' type: object type: object IconFetchResult: properties: icon: items: format: int32 type: integer type: array statusCode: type: integer type: object IconMetaSearch: properties: Dark: type: boolean Light: type: boolean PNG: type: boolean Ref: type: string SVG: type: boolean Source: $ref: '#/definitions/icons.Source' WebP: type: boolean type: object IdlewatcherConfig: properties: depends_on: items: type: string type: array docker: $ref: '#/definitions/DockerConfig' idle_timeout: allOf: - $ref: '#/definitions/time.Duration' description: |- 0: no idle watcher. Positive: idle watcher with idle timeout. Negative: idle watcher as a dependency. no_loading_page: type: boolean proxmox: $ref: '#/definitions/ProxmoxConfig' start_endpoint: description: Optional path that must be hit to start container type: string stop_method: $ref: '#/definitions/ContainerStopMethod' stop_signal: type: string stop_timeout: $ref: '#/definitions/time.Duration' wake_timeout: $ref: '#/definitions/time.Duration' type: object ListFilesResponse: properties: config: items: type: string type: array middleware: items: type: string type: array provider: items: type: string type: array type: object LoadBalancerConfig: properties: link: type: string mode: $ref: '#/definitions/LoadBalancerMode' options: additionalProperties: {} type: object sticky: type: boolean sticky_max_age: $ref: '#/definitions/time.Duration' weight: type: integer type: object LoadBalancerMode: enum: - "" - roundrobin - leastconn - iphash type: string x-enum-varnames: - LoadbalanceModeUnset - LoadbalanceModeRoundRobin - LoadbalanceModeLeastConn - LoadbalanceModeIPHash LogFilter-CIDR: properties: negative: type: boolean values: items: $ref: '#/definitions/CIDR' type: array type: object LogFilter-HTTPHeader: properties: negative: type: boolean values: items: $ref: '#/definitions/HTTPHeader' type: array type: object LogFilter-HTTPMethod: properties: negative: type: boolean values: items: type: string type: array type: object LogFilter-Host: properties: negative: type: boolean values: items: type: string type: array type: object LogFilter-StatusCodeRange: properties: negative: type: boolean values: items: $ref: '#/definitions/StatusCodeRange' type: array type: object LogRetention: properties: days: type: integer keep_size: type: integer last: type: integer type: object MetricsPeriod: enum: - 5m - 15m - 1h - 1d - 1mo type: string x-enum-varnames: - MetricsPeriod5m - MetricsPeriod15m - MetricsPeriod1h - MetricsPeriod1d - MetricsPeriod1mo MockCookie: properties: name: type: string value: type: string type: object MockRequest: properties: body: type: string cookies: items: $ref: '#/definitions/MockCookie' type: array headers: additionalProperties: items: type: string type: array type: object host: type: string method: type: string path: type: string query: additionalProperties: items: type: string type: array type: object remoteIP: type: string type: object MockResponse: properties: body: type: string headers: additionalProperties: items: type: string type: array type: object statusCode: type: integer type: object NewAgentRequest: properties: container_runtime: allOf: - $ref: '#/definitions/agent.ContainerRuntime' default: docker enum: - docker - podman host: type: string name: type: string nightly: type: boolean port: maximum: 65535 minimum: 1 type: integer type: enum: - docker - system type: string required: - host - name - port - type type: object NewAgentResponse: properties: ca: $ref: '#/definitions/PEMPairResponse' client: $ref: '#/definitions/PEMPairResponse' compose: type: string type: object PEMPairResponse: properties: cert: format: base64 type: string key: format: base64 type: string type: object ParsedRule: properties: do: type: string isResponseRule: type: boolean name: type: string "on": type: string validationError: {} type: object PlaygroundRequest: properties: mockRequest: $ref: '#/definitions/MockRequest' mockResponse: $ref: '#/definitions/MockResponse' rules: items: $ref: '#/definitions/routeApi.RawRule' type: array required: - rules type: object PlaygroundResponse: properties: executionError: {} finalRequest: $ref: '#/definitions/FinalRequest' finalResponse: $ref: '#/definitions/FinalResponse' matchedRules: items: type: string type: array parsedRules: items: $ref: '#/definitions/ParsedRule' type: array upstreamCalled: type: boolean type: object Port: properties: listening: type: integer proxy: type: integer type: object ProviderStats: properties: reverse_proxies: $ref: '#/definitions/RouteStats' streams: $ref: '#/definitions/RouteStats' total: type: integer type: $ref: '#/definitions/ProviderType' type: object ProviderType: enum: - docker - file - agent type: string x-enum-varnames: - ProviderTypeDocker - ProviderTypeFile - ProviderTypeAgent ProxmoxConfig: properties: node: type: string vmid: type: integer required: - node - vmid type: object ProxyStats: properties: providers: additionalProperties: $ref: '#/definitions/ProviderStats' type: object reverse_proxies: $ref: '#/definitions/RouteStats' streams: $ref: '#/definitions/RouteStats' total: type: integer type: object RequestLoggerConfig: properties: buffer_size: description: 'Deprecated: buffer size is adjusted dynamically' type: integer fields: $ref: '#/definitions/accesslog.Fields' filters: $ref: '#/definitions/accesslog.Filters' format: enum: - common - combined - json type: string path: type: string retention: $ref: '#/definitions/LogRetention' rotate_interval: type: integer stdout: type: boolean type: object Route: properties: access_log: allOf: - $ref: '#/definitions/RequestLoggerConfig' x-nullable: true agent: type: string alias: type: string bind: description: for TCP and UDP routes, bind address to listen on type: string x-nullable: true container: allOf: - $ref: '#/definitions/Container' description: Docker only x-nullable: true disable_compression: type: boolean excluded: type: boolean x-nullable: true excluded_reason: type: string x-nullable: true health: allOf: - $ref: '#/definitions/HealthJSON' description: for swagger healthcheck: allOf: - $ref: '#/definitions/HealthCheckConfig' description: null on load-balancer routes x-nullable: true homepage: $ref: '#/definitions/HomepageItemConfig' host: type: string idlewatcher: allOf: - $ref: '#/definitions/IdlewatcherConfig' x-nullable: true index: description: Index file to serve for single-page app mode type: string load_balance: allOf: - $ref: '#/definitions/LoadBalancerConfig' x-nullable: true lurl: description: private fields type: string x-nullable: true middlewares: additionalProperties: $ref: '#/definitions/types.LabelMap' type: object x-nullable: true no_tls_verify: type: boolean path_patterns: items: type: string type: array x-nullable: true port: $ref: '#/definitions/Port' provider: description: for backward compatibility type: string x-nullable: true purl: type: string response_header_timeout: type: integer root: type: string rule_file: type: string x-nullable: true rules: items: $ref: '#/definitions/rules.Rule' type: array x-nullable: true scheme: enum: - http - https - h2c - tcp - udp - fileserver type: string spa: description: 'Single-page app mode: serves index for non-existent paths' type: boolean ssl_certificate: description: Path to client certificate type: string ssl_certificate_key: description: Path to client certificate key type: string ssl_protocols: description: Allowed TLS protocols items: type: string type: array ssl_server_name: description: SSL/TLS proxy options (nginx-like) type: string ssl_trusted_certificate: description: Path to trusted CA certificates type: string type: object RouteProvider: properties: full_name: type: string short_name: type: string type: object RouteStats: properties: error: type: integer healthy: type: integer napping: type: integer total: type: integer unhealthy: type: integer unknown: type: integer type: object RouteStatus: properties: latency: type: integer status: enum: - healthy - unhealthy - unknown - napping - starting type: string timestamp: type: integer type: object RouteStatusesByAlias: properties: statuses: additionalProperties: $ref: '#/definitions/HealthInfoWithoutDetail' type: object timestamp: type: integer type: object RouteUptimeAggregate: properties: alias: type: string avg_latency: type: number current_status: enum: - healthy - unhealthy - unknown - napping - starting type: string display_name: type: string downtime: type: number idle: type: number is_docker: type: boolean is_excluded: type: boolean statuses: items: $ref: '#/definitions/RouteStatus' type: array uptime: type: number type: object ServerInfo: properties: containers: $ref: '#/definitions/ContainerStats' images: type: integer memory: type: string n_cpu: type: integer name: type: string version: type: string type: object StatsResponse: properties: proxies: $ref: '#/definitions/ProxyStats' uptime: type: integer type: object StatusCodeRange: properties: end: type: integer start: type: integer type: object SuccessResponse: properties: details: additionalProperties: {} type: object x-nullable: true message: type: string type: object SystemInfo: properties: cpu_average: type: number disks: additionalProperties: $ref: '#/definitions/disk.UsageStat' description: disk usage by partition type: object disks_io: additionalProperties: $ref: '#/definitions/disk.IOCountersStat' description: disk IO by device type: object memory: $ref: '#/definitions/mem.VirtualMemoryStat' network: $ref: '#/definitions/net.IOCountersStat' sensors: description: sensor temperature by key items: $ref: '#/definitions/sensors.TemperatureStat' type: array timestamp: type: integer type: object SystemInfoAggregate: properties: data: items: additionalProperties: {} type: object type: array total: type: integer type: object SystemInfoAggregateMode: enum: - cpu_average - memory_usage - memory_usage_percent - disks_read_speed - disks_write_speed - disks_iops - disk_usage - network_speed - network_transfer - sensor_temperature type: string x-enum-varnames: - SystemInfoAggregateModeCPUAverage - SystemInfoAggregateModeMemoryUsage - SystemInfoAggregateModeMemoryUsagePercent - SystemInfoAggregateModeDisksReadSpeed - SystemInfoAggregateModeDisksWriteSpeed - SystemInfoAggregateModeDisksIOPS - SystemInfoAggregateModeDiskUsage - SystemInfoAggregateModeNetworkSpeed - SystemInfoAggregateModeNetworkTransfer - SystemInfoAggregateModeSensorTemperature UptimeAggregate: properties: data: items: $ref: '#/definitions/RouteUptimeAggregate' type: array total: type: integer type: object VerifyNewAgentRequest: properties: ca: $ref: '#/definitions/PEMPairResponse' client: $ref: '#/definitions/PEMPairResponse' container_runtime: $ref: '#/definitions/agent.ContainerRuntime' host: type: string type: object accesslog.FieldConfig: properties: config: additionalProperties: $ref: '#/definitions/accesslog.FieldMode' type: object default: allOf: - $ref: '#/definitions/accesslog.FieldMode' enum: - keep - drop - redact type: object accesslog.FieldMode: enum: - keep - drop - redact type: string x-enum-varnames: - FieldModeKeep - FieldModeDrop - FieldModeRedact accesslog.Fields: properties: cookies: $ref: '#/definitions/accesslog.FieldConfig' headers: $ref: '#/definitions/accesslog.FieldConfig' query: $ref: '#/definitions/accesslog.FieldConfig' type: object accesslog.Filters: properties: cidr: $ref: '#/definitions/LogFilter-CIDR' headers: allOf: - $ref: '#/definitions/LogFilter-HTTPHeader' description: header exists or header == value host: $ref: '#/definitions/LogFilter-Host' method: $ref: '#/definitions/LogFilter-HTTPMethod' status_codes: $ref: '#/definitions/LogFilter-StatusCodeRange' type: object agent.ContainerRuntime: enum: - docker - podman type: string x-enum-varnames: - ContainerRuntimeDocker - ContainerRuntimePodman agentpool.Agent: properties: addr: type: string name: type: string runtime: $ref: '#/definitions/agent.ContainerRuntime' supports_tcp_stream: type: boolean supports_udp_stream: type: boolean version: type: string type: object auth.UserPassAuthCallbackRequest: properties: password: type: string username: type: string type: object container.ContainerState: enum: - created - running - paused - restarting - removing - exited - dead type: string x-enum-comments: StateCreated: StateCreated indicates the container is created, but not (yet) started. StateDead: StateDead indicates that the container failed to be deleted. Containers in this state are attempted to be cleaned up when the daemon restarts. StateExited: StateExited indicates that the container exited. StatePaused: StatePaused indicates that the container's current state is paused. StateRemoving: StateRemoving indicates that the container is being removed. StateRestarting: StateRestarting indicates that the container is currently restarting. StateRunning: StateRunning indicates that the container is running. x-enum-descriptions: - StateCreated indicates the container is created, but not (yet) started. - StateRunning indicates that the container is running. - StatePaused indicates that the container's current state is paused. - StateRestarting indicates that the container is currently restarting. - StateRemoving indicates that the container is being removed. - StateExited indicates that the container exited. - StateDead indicates that the container failed to be deleted. Containers in this state are attempted to be cleaned up when the daemon restarts. x-enum-varnames: - StateCreated - StateRunning - StatePaused - StateRestarting - StateRemoving - StateExited - StateDead container.PortSummary: properties: IP: allOf: - $ref: '#/definitions/netip.Addr' description: Host IP address that the container's port is mapped to PrivatePort: description: |- Port on the container Required: true type: integer PublicPort: description: Port exposed on the host type: integer Type: description: |- type Required: true Enum: ["tcp","udp","sctp"] type: string type: object disk.IOCountersStat: properties: iops: type: integer name: description: |- ReadCount uint64 `json:"readCount"` MergedReadCount uint64 `json:"mergedReadCount"` WriteCount uint64 `json:"writeCount"` MergedWriteCount uint64 `json:"mergedWriteCount"` ReadBytes uint64 `json:"readBytes"` WriteBytes uint64 `json:"writeBytes"` ReadTime uint64 `json:"readTime"` WriteTime uint64 `json:"writeTime"` IopsInProgress uint64 `json:"iopsInProgress"` IoTime uint64 `json:"ioTime"` WeightedIO uint64 `json:"weightedIO"` type: string read_bytes: description: |- SerialNumber string `json:"serialNumber"` Label string `json:"label"` type: integer read_count: type: integer read_speed: type: number write_bytes: type: integer write_count: type: integer write_speed: type: number type: object disk.UsageStat: properties: free: type: integer fstype: type: string path: type: string total: type: number used: type: integer used_percent: type: number type: object dockerapi.RestartRequest: properties: id: type: string signal: description: |- Signal (optional) is the signal to send to the container to (gracefully) stop it before forcibly terminating the container with SIGKILL after the timeout expires. If no value is set, the default (SIGTERM) is used. type: string timeout: description: |- Timeout (optional) is the timeout (in seconds) to wait for the container to stop gracefully before forcibly terminating it with SIGKILL. - Use nil to use the default timeout (10 seconds). - Use '-1' to wait indefinitely. - Use '0' to not wait for the container to exit gracefully, and immediately proceeds to forcibly terminating the container. - Other positive values are used as timeout (in seconds). type: integer required: - id type: object dockerapi.StartRequest: properties: checkpointDir: type: string checkpointID: type: string id: type: string required: - id type: object dockerapi.StopRequest: properties: id: type: string signal: description: |- Signal (optional) is the signal to send to the container to (gracefully) stop it before forcibly terminating the container with SIGKILL after the timeout expires. If no value is set, the default (SIGTERM) is used. type: string timeout: description: |- Timeout (optional) is the timeout (in seconds) to wait for the container to stop gracefully before forcibly terminating it with SIGKILL. - Use nil to use the default timeout (10 seconds). - Use '-1' to wait indefinitely. - Use '0' to not wait for the container to exit gracefully, and immediately proceeds to forcibly terminating the container. - Other positive values are used as timeout (in seconds). type: integer required: - id type: object icons.Source: enum: - https:// - '@target' - '@walkxcode' - '@selfhst' type: string x-enum-varnames: - SourceAbsolute - SourceRelative - SourceWalkXCode - SourceSelfhSt mem.VirtualMemoryStat: properties: available: description: |- RAM available for programs to allocate This value is computed from the kernel specific values. type: integer total: description: Total amount of RAM on this system type: number used: description: |- RAM used by programs This value is computed from the kernel specific values. type: integer used_percent: description: |- Percentage of RAM used by programs This value is computed from the kernel specific values. type: number type: object net.IOCountersStat: properties: bytes_recv: description: number of bytes received type: integer bytes_sent: description: Name string `json:"name"` // interface name type: integer download_speed: description: godoxy type: number upload_speed: description: godoxy type: number type: object netip.Addr: type: object route.Route: properties: access_log: allOf: - $ref: '#/definitions/RequestLoggerConfig' x-nullable: true agent: type: string alias: type: string bind: description: for TCP and UDP routes, bind address to listen on type: string x-nullable: true container: allOf: - $ref: '#/definitions/Container' description: Docker only x-nullable: true disable_compression: type: boolean excluded: type: boolean x-nullable: true excluded_reason: type: string x-nullable: true health: allOf: - $ref: '#/definitions/HealthJSON' description: for swagger healthcheck: allOf: - $ref: '#/definitions/HealthCheckConfig' description: null on load-balancer routes x-nullable: true homepage: $ref: '#/definitions/HomepageItemConfig' host: type: string idlewatcher: allOf: - $ref: '#/definitions/IdlewatcherConfig' x-nullable: true index: description: Index file to serve for single-page app mode type: string load_balance: allOf: - $ref: '#/definitions/LoadBalancerConfig' x-nullable: true lurl: description: private fields type: string x-nullable: true middlewares: additionalProperties: $ref: '#/definitions/types.LabelMap' type: object x-nullable: true no_tls_verify: type: boolean path_patterns: items: type: string type: array x-nullable: true port: $ref: '#/definitions/Port' provider: description: for backward compatibility type: string x-nullable: true purl: type: string response_header_timeout: type: integer root: type: string rule_file: type: string x-nullable: true rules: items: $ref: '#/definitions/rules.Rule' type: array x-nullable: true scheme: enum: - http - https - h2c - tcp - udp - fileserver type: string spa: description: 'Single-page app mode: serves index for non-existent paths' type: boolean ssl_certificate: description: Path to client certificate type: string ssl_certificate_key: description: Path to client certificate key type: string ssl_protocols: description: Allowed TLS protocols items: type: string type: array ssl_server_name: description: SSL/TLS proxy options (nginx-like) type: string ssl_trusted_certificate: description: Path to trusted CA certificates type: string type: object routeApi.RawRule: properties: do: type: string name: type: string "on": type: string type: object routeApi.RoutesByProvider: additionalProperties: items: $ref: '#/definitions/route.Route' type: array type: object rules.Rule: properties: do: type: string name: type: string "on": type: string type: object sensors.TemperatureStat: properties: critical: type: number high: type: number name: type: string temperature: type: number type: object time.Duration: enum: - -9223372036854775808 - 9223372036854775807 - 1 - 1000 - 1000000 - 1000000000 - 60000000000 - 3600000000000 format: int64 type: integer x-enum-varnames: - minDuration - maxDuration - Nanosecond - Microsecond - Millisecond - Second - Minute - Hour types.LabelMap: additionalProperties: {} type: object types.PortMapping: additionalProperties: $ref: '#/definitions/container.PortSummary' type: object widgets.Config: properties: config: {} provider: type: string type: object externalDocs: description: GoDoxy Docs url: https://docs.godoxy.dev info: contact: name: Yusing url: https://github.com/yusing/godoxy/issues description: GoDoxy API license: name: MIT url: https://github.com/yusing/godoxy/blob/main/LICENSE termsOfService: https://github.com/yusing/godoxy/blob/main/LICENSE title: GoDoxy API version: "1.0" paths: /agent/create: post: consumes: - application/json description: |- Create a new agent and return the docker compose file, encrypted CA and client PEMs The returned PEMs are encrypted with a random key and will be used for verification when adding a new agent parameters: - description: Request in: body name: request required: true schema: $ref: '#/definitions/NewAgentRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/NewAgentResponse' "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Create a new agent tags: - agent x-id: create /agent/list: get: consumes: - application/json description: List agents produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/Agent' type: array "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' summary: List agents tags: - agent - websocket x-id: list /agent/verify: post: consumes: - application/json description: Verify a new agent and return the number of routes added parameters: - description: Request in: body name: request required: true schema: $ref: '#/definitions/VerifyNewAgentRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Verify a new agent tags: - agent x-id: verify /auth/callback: post: description: Handles the callback from the provider after successful authentication parameters: - description: Userpass only in: body name: body required: true schema: $ref: '#/definitions/auth.UserPassAuthCallbackRequest' produces: - text/plain responses: "200": description: 'Userpass: OK' schema: type: string "302": description: 'OIDC: Redirects to home page' schema: type: string "400": description: 'Userpass: invalid request / credentials' schema: type: string "500": description: Internal server error schema: type: string summary: Auth Callback tags: - auth x-id: callback /auth/check: head: description: Checks if the user is authenticated by validating their token produces: - text/plain responses: "200": description: OK schema: type: string "302": description: Redirects to login page or IdP schema: type: string summary: Check authentication status tags: - auth x-id: check /auth/login: post: description: Initiates the login process by redirecting the user to the provider's login page produces: - text/plain responses: "302": description: Redirects to login page or IdP schema: type: string "429": description: Too Many Requests schema: type: string summary: Login tags: - auth x-id: login /auth/logout: get: description: Logs out the user by invalidating the token produces: - text/plain responses: "302": description: Redirects to home page schema: type: string summary: Logout tags: - auth x-id: logout post: description: Logs out the user by invalidating the token produces: - text/plain responses: "302": description: Redirects to home page schema: type: string summary: Logout tags: - auth x-id: logout /cert/info: get: description: Get cert info produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/CertInfo' type: array "403": description: Unauthorized schema: $ref: '#/definitions/ErrorResponse' "404": description: No certificates found or autocert is not enabled schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/ErrorResponse' summary: Get cert info tags: - cert x-id: info /cert/renew: get: description: Renew cert produces: - text/plain responses: "200": description: OK schema: $ref: '#/definitions/SuccessResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Renew cert tags: - cert - websocket x-id: renew /docker/container/{id}: get: description: Get container by container id parameters: - description: Container ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/ContainerResponse' "400": description: ID is required schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "404": description: Container not found schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Get container tags: - docker x-id: container /docker/containers: get: description: Get containers produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/ContainerResponse' type: array "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Get containers tags: - docker x-id: containers /docker/info: get: description: Get docker info produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/ServerInfo' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Get docker info tags: - docker x-id: info /docker/logs/{id}: get: consumes: - application/json description: Get docker container logs by container id parameters: - description: container id in: path name: id required: true type: string - description: show stdout in: query name: stdout type: boolean - description: show stderr in: query name: stderr type: boolean - description: from timestamp in: query name: from type: string - description: to timestamp in: query name: to type: string - description: levels in: query name: levels type: string produces: - application/json responses: "200": description: OK "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "404": description: server not found or container not found schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Get docker container logs tags: - docker - websocket x-id: logs /docker/restart: post: description: Restart container by container id parameters: - description: Request in: body name: request required: true schema: $ref: '#/definitions/dockerapi.RestartRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/SuccessResponse' "400": description: Invalid request schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "404": description: Container not found schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Restart container tags: - docker x-id: restart /docker/start: post: description: Start container by container id parameters: - description: Request in: body name: request required: true schema: $ref: '#/definitions/dockerapi.StartRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/SuccessResponse' "400": description: Invalid request schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "404": description: Container not found schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Start container tags: - docker x-id: start /docker/stop: post: description: Stop container by container id parameters: - description: Request in: body name: request required: true schema: $ref: '#/definitions/dockerapi.StopRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/SuccessResponse' "400": description: Invalid request schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "404": description: Container not found schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Stop container tags: - docker x-id: stop /favicon: get: consumes: - application/json description: Get favicon parameters: - description: URL of the route in: query name: url type: string - description: Alias of the route in: query name: alias type: string produces: - image/svg+xml - image/x-icon - image/png - image/webp responses: "200": description: OK schema: items: $ref: '#/definitions/IconFetchResult' type: array "400": description: 'Bad Request: alias is empty or route is not HTTPRoute' schema: $ref: '#/definitions/ErrorResponse' "403": description: 'Forbidden: unauthorized' schema: $ref: '#/definitions/ErrorResponse' "404": description: 'Not Found: route or icon not found' schema: $ref: '#/definitions/ErrorResponse' "500": description: 'Internal Server Error: internal error' schema: $ref: '#/definitions/ErrorResponse' summary: Get favicon tags: - v1 x-id: favicon /file/content: get: consumes: - application/json description: Get file content parameters: - format: filename in: query name: filename required: true type: string - enum: - config - provider - middleware in: query name: type required: true type: string x-enum-varnames: - FileTypeConfig - FileTypeProvider - FileTypeMiddleware produces: - application/json - application/godoxy+yaml responses: "200": description: OK schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Get file content tags: - file x-id: get put: consumes: - text/plain description: Set file content parameters: - description: Type enum: - config - provider - middleware in: query name: type required: true type: string - description: Filename in: query name: filename required: true type: string - description: File in: body name: file required: true schema: type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Set file content tags: - file x-id: set /file/list: get: consumes: - application/json description: List files produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/ListFilesResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: List files tags: - file x-id: list /file/validate: post: consumes: - text/plain description: Validate file parameters: - description: Type enum: - config - provider - middleware in: query name: type required: true type: string - description: File content in: body name: file required: true schema: type: string produces: - application/json responses: "200": description: File validated schema: $ref: '#/definitions/SuccessResponse' "400": description: Bad request schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "417": description: Validation failed schema: {} "500": description: Internal server error schema: $ref: '#/definitions/ErrorResponse' summary: Validate file tags: - file x-id: validate /health: get: consumes: - application/json description: Get health info by route name produces: - application/json responses: "200": description: Health info by route name schema: $ref: '#/definitions/HealthMap' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Get routes health info tags: - v1 - websocket x-id: health /homepage/categories: get: consumes: - application/json description: List homepage categories produces: - application/json responses: "200": description: OK schema: items: type: string type: array "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' summary: List homepage categories tags: - homepage x-id: categories /homepage/item_click: post: consumes: - application/json description: Increment item click. parameters: - in: query name: which required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Increment item click tags: - homepage x-id: item-click /homepage/items: get: consumes: - application/json description: Homepage items parameters: - description: Category filter in: query name: category type: string - description: Provider filter in: query name: provider type: string - description: Search query in: query name: search type: string - default: alphabetical description: Sort method enum: - clicks - alphabetical - custom in: query name: sort_method type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/HomepageCategory' type: array "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' summary: Homepage items tags: - homepage - websocket x-id: items /homepage/set/category_order: post: consumes: - application/json description: Set homepage category order. parameters: - description: Override category order in: body name: request required: true schema: $ref: '#/definitions/HomepageOverrideCategoryOrderParams' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Set homepage category order tags: - homepage x-id: set-category-order /homepage/set/item: post: consumes: - application/json description: Override single homepage item. parameters: - description: Override single item in: body name: request required: true schema: $ref: '#/definitions/HomepageOverrideItemParams' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Override single homepage item tags: - homepage x-id: set-item /homepage/set/item_all_sort_order: post: consumes: - application/json description: Set homepage item all sort order. parameters: - description: Set item all sort order in: body name: request required: true schema: $ref: '#/definitions/HomepageOverrideItemAllSortOrderParams' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Set homepage item all sort order tags: - homepage x-id: set-item-all-sort-order /homepage/set/item_fav_sort_order: post: consumes: - application/json description: Set homepage item fav sort order. parameters: - description: Set item fav sort order in: body name: request required: true schema: $ref: '#/definitions/HomepageOverrideItemFavSortOrderParams' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Set homepage item fav sort order tags: - homepage x-id: set-item-fav-sort-order /homepage/set/item_favorite: post: consumes: - application/json description: Set homepage item favorite. parameters: - description: Set item favorite in: body name: request required: true schema: $ref: '#/definitions/HomepageOverrideItemFavoriteParams' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Set homepage item favorite tags: - homepage x-id: set-item-favorite /homepage/set/item_sort_order: post: consumes: - application/json description: Set homepage item sort order. parameters: - description: Set item sort order in: body name: request required: true schema: $ref: '#/definitions/HomepageOverrideItemSortOrderParams' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Set homepage item sort order tags: - homepage x-id: set-item-sort-order /homepage/set/item_visible: post: consumes: - application/json description: POST list of item ids and visibility value. parameters: - description: Set item visibility in: body name: request required: true schema: $ref: '#/definitions/HomepageOverrideItemVisibleParams' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Set homepage item visibility tags: - homepage x-id: set-item-visible /homepage/set/items_batch: post: consumes: - application/json description: Override multiple homepage items. parameters: - description: Override multiple items in: body name: request required: true schema: $ref: '#/definitions/HomepageOverrideItemsBatchParams' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/SuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Override multiple homepage items tags: - homepage x-id: set-items-batch /icons: get: consumes: - application/json description: List icons parameters: - description: Limit in: query name: limit type: integer - description: Keyword in: query name: keyword type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/IconMetaSearch' type: array "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' summary: List icons tags: - v1 x-id: icons /metrics/all_system_info: get: description: Get system info parameters: - enum: - cpu_average - memory_usage - memory_usage_percent - disks_read_speed - disks_write_speed - disks_iops - disk_usage - network_speed - network_transfer - sensor_temperature in: query name: aggregate type: string x-enum-varnames: - SystemInfoAggregateModeCPUAverage - SystemInfoAggregateModeMemoryUsage - SystemInfoAggregateModeMemoryUsagePercent - SystemInfoAggregateModeDisksReadSpeed - SystemInfoAggregateModeDisksWriteSpeed - SystemInfoAggregateModeDisksIOPS - SystemInfoAggregateModeDiskUsage - SystemInfoAggregateModeNetworkSpeed - SystemInfoAggregateModeNetworkTransfer - SystemInfoAggregateModeSensorTemperature - format: duration in: query name: interval type: string - enum: - 5m - 15m - 1h - 1d - 1mo in: query name: period type: string x-enum-varnames: - MetricsPeriod5m - MetricsPeriod15m - MetricsPeriod1h - MetricsPeriod1d - MetricsPeriod1mo produces: - application/json responses: "200": description: period specified, aggregated system info by agent name schema: additionalProperties: $ref: '#/definitions/SystemInfoAggregate' type: object "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Get system info tags: - metrics - websocket x-id: all_system_info /metrics/system_info: get: description: Get system info parameters: - in: query name: agentAddr type: string - in: query name: agentName type: string - enum: - cpu_average - memory_usage - memory_usage_percent - disks_read_speed - disks_write_speed - disks_iops - disk_usage - network_speed - network_transfer - sensor_temperature in: query name: aggregate type: string x-enum-varnames: - SystemInfoAggregateModeCPUAverage - SystemInfoAggregateModeMemoryUsage - SystemInfoAggregateModeMemoryUsagePercent - SystemInfoAggregateModeDisksReadSpeed - SystemInfoAggregateModeDisksWriteSpeed - SystemInfoAggregateModeDisksIOPS - SystemInfoAggregateModeDiskUsage - SystemInfoAggregateModeNetworkSpeed - SystemInfoAggregateModeNetworkTransfer - SystemInfoAggregateModeSensorTemperature - enum: - 5m - 15m - 1h - 1d - 1mo in: query name: period type: string x-enum-varnames: - MetricsPeriod5m - MetricsPeriod15m - MetricsPeriod1h - MetricsPeriod1d - MetricsPeriod1mo produces: - application/json responses: "200": description: period specified schema: $ref: '#/definitions/SystemInfoAggregate' "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Get system info tags: - metrics - websocket x-id: system_info /metrics/uptime: get: description: Get uptime parameters: - enum: - 5m - 15m - 1h - 1d - 1mo example: 1m in: query name: interval type: string x-enum-varnames: - MetricsPeriod5m - MetricsPeriod15m - MetricsPeriod1h - MetricsPeriod1d - MetricsPeriod1mo - example: "" in: query name: keyword type: string - default: 0 example: 10 in: query name: limit type: integer - default: 0 example: 10 in: query name: offset type: integer produces: - application/json responses: "200": description: period specified schema: $ref: '#/definitions/UptimeAggregate' "204": description: No Content schema: $ref: '#/definitions/ErrorResponse' "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Get uptime tags: - metrics - websocket x-id: uptime /reload: post: consumes: - application/json description: Reload config produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/SuccessResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Reload config tags: - v1 x-id: reload /route/{which}: get: consumes: - application/json description: List route parameters: - description: Route name in: path name: which required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/Route' "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/ErrorResponse' summary: List route tags: - route x-id: route /route/by_provider: get: consumes: - application/json description: List routes by provider produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/routeApi.RoutesByProvider' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: List routes by provider tags: - route x-id: byProvider /route/list: get: consumes: - application/json description: List routes parameters: - description: Provider in: query name: provider type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/Route' type: array "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' summary: List routes tags: - route - websocket x-id: routes /route/playground: post: consumes: - application/json description: Test rules against mock request/response parameters: - description: Playground request in: body name: request required: true schema: $ref: '#/definitions/PlaygroundRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/PlaygroundResponse' "400": description: Bad Request schema: $ref: '#/definitions/ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' summary: Rule Playground tags: - route x-id: playground /route/providers: get: consumes: - application/json description: List route providers produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/RouteProvider' type: array "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: List route providers tags: - route - websocket x-id: providers /stats: get: consumes: - application/json description: Get stats produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/StatsResponse' "403": description: Forbidden schema: $ref: '#/definitions/ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/ErrorResponse' summary: Get GoDoxy stats tags: - v1 - websocket x-id: stats /version: get: consumes: - application/json description: Get the version of the GoDoxy produces: - text/plain responses: "200": description: version schema: type: string summary: Get version tags: - v1 x-id: version swagger: "2.0"