basePath: /api/v1
definitions:
  Agent:
    properties:
      addr:
        type: string
      name:
        type: string
      runtime:
        $ref: '#/definitions/agent.ContainerRuntime'
      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/Agent'
      aliases:
        items:
          type: string
        type: array
      container_id:
        type: string
      container_name:
        type: string
      docker_host:
        type: string
      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_host:
        type: string
    required:
    - container_id
    - container_name
    - docker_host
    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
  HealthInfo:
    properties:
      detail:
        type: string
      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
  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:
        type: integer
      lastSeenStr:
        type: string
      latency:
        type: number
      latencyStr:
        type: string
      name:
        type: string
      started:
        type: integer
      startedStr:
        type: string
      status:
        type: string
      uptime:
        type: number
      uptimeStr:
        type: string
      url:
        type: string
    type: object
  HealthMap:
    additionalProperties:
      $ref: '#/definitions/HealthInfo'
    type: object
  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
  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.\nPositive: idle watcher with idle timeout.\nNegative:
          idle watcher as a dependency.\tIdleTimeout time.Duration `json:\"idle_timeout\"
          json_ext:\"duration\"`"
      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
      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
      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
      scheme:
        enum:
        - http
        - https
        - tcp
        - udp
        - fileserver
        type: string
      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
      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
  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
  homepage.FetchResult:
    properties:
      icon:
        items:
          format: int32
          type: integer
        type: array
      statusCode:
        type: integer
    type: object
  homepage.IconMetaSearch:
    properties:
      Dark:
        type: boolean
      Light:
        type: boolean
      PNG:
        type: boolean
      Ref:
        type: string
      SVG:
        type: boolean
      Source:
        $ref: '#/definitions/homepage.IconSource'
      WebP:
        type: boolean
    type: object
  homepage.IconSource:
    enum:
    - https://
    - '@target'
    - '@walkxcode'
    - '@selfhst'
    type: string
    x-enum-varnames:
    - IconSourceAbsolute
    - IconSourceRelative
    - IconSourceWalkXCode
    - IconSourceSelfhSt
  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
      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
      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
      scheme:
        enum:
        - http
        - https
        - tcp
        - udp
        - fileserver
        type: string
      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:
            $ref: '#/definitions/CertInfo'
        "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 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/homepage.FetchResult'
            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/homepage.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"
