basePath: /
consumes:
    - application/json
definitions:
    APIConfig:
        properties:
            accesslog:
                type: boolean
                x-go-name: AccessLog
            addr:
                type: string
                x-go-name: Addr
            auth:
                $ref: '#/definitions/AuthConfig'
            auther:
                type: string
                x-go-name: Auther
            pathPrefix:
                type: string
                x-go-name: PathPrefix
        type: object
        x-go-package: github.com/go-gost/x/config
    AdmissionConfig:
        properties:
            file:
                $ref: '#/definitions/FileLoader'
            http:
                $ref: '#/definitions/HTTPLoader'
            matchers:
                items:
                    type: string
                type: array
                x-go-name: Matchers
            name:
                type: string
                x-go-name: Name
            plugin:
                $ref: '#/definitions/PluginConfig'
            redis:
                $ref: '#/definitions/RedisLoader'
            reload:
                $ref: '#/definitions/Duration'
            reverse:
                description: 'Deprecated: use whitelist instead'
                type: boolean
                x-go-name: Reverse
            whitelist:
                type: boolean
                x-go-name: Whitelist
        type: object
        x-go-package: github.com/go-gost/x/config
    AuthConfig:
        properties:
            file:
                type: string
                x-go-name: File
            password:
                type: string
                x-go-name: Password
            username:
                type: string
                x-go-name: Username
        type: object
        x-go-package: github.com/go-gost/x/config
    AutherConfig:
        properties:
            auths:
                items:
                    $ref: '#/definitions/AuthConfig'
                type: array
                x-go-name: Auths
            file:
                $ref: '#/definitions/FileLoader'
            http:
                $ref: '#/definitions/HTTPLoader'
            name:
                type: string
                x-go-name: Name
            plugin:
                $ref: '#/definitions/PluginConfig'
            redis:
                $ref: '#/definitions/RedisLoader'
            reload:
                $ref: '#/definitions/Duration'
        type: object
        x-go-package: github.com/go-gost/x/config
    BypassConfig:
        properties:
            file:
                $ref: '#/definitions/FileLoader'
            http:
                $ref: '#/definitions/HTTPLoader'
            matchers:
                items:
                    type: string
                type: array
                x-go-name: Matchers
            name:
                type: string
                x-go-name: Name
            plugin:
                $ref: '#/definitions/PluginConfig'
            redis:
                $ref: '#/definitions/RedisLoader'
            reload:
                $ref: '#/definitions/Duration'
            reverse:
                description: 'Deprecated: use whitelist instead'
                type: boolean
                x-go-name: Reverse
            whitelist:
                type: boolean
                x-go-name: Whitelist
        type: object
        x-go-package: github.com/go-gost/x/config
    ChainConfig:
        properties:
            hops:
                items:
                    $ref: '#/definitions/HopConfig'
                type: array
                x-go-name: Hops
            metadata:
                additionalProperties: {}
                type: object
                x-go-name: Metadata
            name:
                type: string
                x-go-name: Name
        type: object
        x-go-package: github.com/go-gost/x/config
    ChainGroupConfig:
        properties:
            chains:
                items:
                    type: string
                type: array
                x-go-name: Chains
            selector:
                $ref: '#/definitions/SelectorConfig'
        type: object
        x-go-package: github.com/go-gost/x/config
    Config:
        properties:
            admissions:
                items:
                    $ref: '#/definitions/AdmissionConfig'
                type: array
                x-go-name: Admissions
            api:
                $ref: '#/definitions/APIConfig'
            authers:
                items:
                    $ref: '#/definitions/AutherConfig'
                type: array
                x-go-name: Authers
            bypasses:
                items:
                    $ref: '#/definitions/BypassConfig'
                type: array
                x-go-name: Bypasses
            chains:
                items:
                    $ref: '#/definitions/ChainConfig'
                type: array
                x-go-name: Chains
            climiters:
                items:
                    $ref: '#/definitions/LimiterConfig'
                type: array
                x-go-name: CLimiters
            hops:
                items:
                    $ref: '#/definitions/HopConfig'
                type: array
                x-go-name: Hops
            hosts:
                items:
                    $ref: '#/definitions/HostsConfig'
                type: array
                x-go-name: Hosts
            ingresses:
                items:
                    $ref: '#/definitions/IngressConfig'
                type: array
                x-go-name: Ingresses
            limiters:
                items:
                    $ref: '#/definitions/LimiterConfig'
                type: array
                x-go-name: Limiters
            log:
                $ref: '#/definitions/LogConfig'
            loggers:
                items:
                    $ref: '#/definitions/LoggerConfig'
                type: array
                x-go-name: Loggers
            metrics:
                $ref: '#/definitions/MetricsConfig'
            observers:
                items:
                    $ref: '#/definitions/ObserverConfig'
                type: array
                x-go-name: Observers
            profiling:
                $ref: '#/definitions/ProfilingConfig'
            recorders:
                items:
                    $ref: '#/definitions/RecorderConfig'
                type: array
                x-go-name: Recorders
            resolvers:
                items:
                    $ref: '#/definitions/ResolverConfig'
                type: array
                x-go-name: Resolvers
            rlimiters:
                items:
                    $ref: '#/definitions/LimiterConfig'
                type: array
                x-go-name: RLimiters
            routers:
                items:
                    $ref: '#/definitions/RouterConfig'
                type: array
                x-go-name: Routers
            sds:
                items:
                    $ref: '#/definitions/SDConfig'
                type: array
                x-go-name: SDs
            services:
                items:
                    $ref: '#/definitions/ServiceConfig'
                type: array
                x-go-name: Services
            tls:
                $ref: '#/definitions/TLSConfig'
        type: object
        x-go-package: github.com/go-gost/x/config
    ConnectorConfig:
        properties:
            auth:
                $ref: '#/definitions/AuthConfig'
            metadata:
                additionalProperties: {}
                type: object
                x-go-name: Metadata
            tls:
                $ref: '#/definitions/TLSConfig'
            type:
                type: string
                x-go-name: Type
        type: object
        x-go-package: github.com/go-gost/x/config
    DialerConfig:
        properties:
            auth:
                $ref: '#/definitions/AuthConfig'
            metadata:
                additionalProperties: {}
                type: object
                x-go-name: Metadata
            tls:
                $ref: '#/definitions/TLSConfig'
            type:
                type: string
                x-go-name: Type
        type: object
        x-go-package: github.com/go-gost/x/config
    Duration:
        description: |-
            A Duration represents the elapsed time between two instants
            as an int64 nanosecond count. The representation limits the
            largest representable duration to approximately 290 years.
        format: int64
        type: integer
        x-go-package: time
    FileLoader:
        properties:
            path:
                type: string
                x-go-name: Path
        type: object
        x-go-package: github.com/go-gost/x/config
    FileRecorder:
        properties:
            path:
                type: string
                x-go-name: Path
            rotation:
                $ref: '#/definitions/LogRotationConfig'
            sep:
                type: string
                x-go-name: Sep
        type: object
        x-go-package: github.com/go-gost/x/config
    ForwardNodeConfig:
        properties:
            addr:
                type: string
                x-go-name: Addr
            auth:
                $ref: '#/definitions/AuthConfig'
            bypass:
                type: string
                x-go-name: Bypass
            bypasses:
                items:
                    type: string
                type: array
                x-go-name: Bypasses
            filter:
                $ref: '#/definitions/NodeFilterConfig'
            host:
                description: 'Deprecated: use matcher instead'
                type: string
                x-go-name: Host
            http:
                $ref: '#/definitions/HTTPNodeConfig'
            matcher:
                $ref: '#/definitions/NodeMatcherConfig'
            metadata:
                additionalProperties: {}
                type: object
                x-go-name: Metadata
            name:
                type: string
                x-go-name: Name
            network:
                type: string
                x-go-name: Network
            path:
                description: 'Deprecated: use matcher instead'
                type: string
                x-go-name: Path
            protocol:
                description: 'Deprecated: use matcher instead'
                type: string
                x-go-name: Protocol
            tls:
                $ref: '#/definitions/TLSNodeConfig'
        type: object
        x-go-package: github.com/go-gost/x/config
    ForwarderConfig:
        properties:
            hop:
                description: the referenced hop name
                type: string
                x-go-name: Hop
            name:
                description: 'Deprecated: use hop instead'
                type: string
                x-go-name: Name
            nodes:
                items:
                    $ref: '#/definitions/ForwardNodeConfig'
                type: array
                x-go-name: Nodes
            selector:
                $ref: '#/definitions/SelectorConfig'
        type: object
        x-go-package: github.com/go-gost/x/config
    HTTPBodyRewriteConfig:
        properties:
            Match:
                type: string
            Replacement:
                type: string
            Type:
                description: filter by MIME types
                type: string
        type: object
        x-go-package: github.com/go-gost/x/config
    HTTPLoader:
        properties:
            timeout:
                $ref: '#/definitions/Duration'
            url:
                type: string
                x-go-name: URL
        type: object
        x-go-package: github.com/go-gost/x/config
    HTTPNodeConfig:
        properties:
            auth:
                $ref: '#/definitions/AuthConfig'
            header:
                additionalProperties:
                    type: string
                description: 'Deprecated: use requestHeader instead'
                type: object
                x-go-name: Header
            host:
                description: rewrite host header
                type: string
                x-go-name: Host
            requestHeader:
                additionalProperties:
                    type: string
                description: additional request header
                type: object
                x-go-name: RequestHeader
            responseHeader:
                additionalProperties:
                    type: string
                description: additional response header
                type: object
                x-go-name: ResponseHeader
            rewrite:
                description: 'Deprecated: use rewriteURL instead'
                items:
                    $ref: '#/definitions/HTTPURLRewriteConfig'
                type: array
                x-go-name: Rewrite
            rewriteBody:
                description: rewrite response body
                items:
                    $ref: '#/definitions/HTTPBodyRewriteConfig'
                type: array
                x-go-name: RewriteBody
            rewriteURL:
                description: rewrite URL
                items:
                    $ref: '#/definitions/HTTPURLRewriteConfig'
                type: array
                x-go-name: RewriteURL
        type: object
        x-go-package: github.com/go-gost/x/config
    HTTPRecorder:
        properties:
            header:
                additionalProperties:
                    type: string
                type: object
                x-go-name: Header
            timeout:
                $ref: '#/definitions/Duration'
            url:
                type: string
                x-go-name: URL
        type: object
        x-go-package: github.com/go-gost/x/config
    HTTPURLRewriteConfig:
        properties:
            Match:
                type: string
            Replacement:
                type: string
        type: object
        x-go-package: github.com/go-gost/x/config
    HandlerConfig:
        properties:
            auth:
                $ref: '#/definitions/AuthConfig'
            auther:
                type: string
                x-go-name: Auther
            authers:
                items:
                    type: string
                type: array
                x-go-name: Authers
            chain:
                type: string
                x-go-name: Chain
            chainGroup:
                $ref: '#/definitions/ChainGroupConfig'
            limiter:
                type: string
                x-go-name: Limiter
            metadata:
                additionalProperties: {}
                type: object
                x-go-name: Metadata
            observer:
                type: string
                x-go-name: Observer
            retries:
                format: int64
                type: integer
                x-go-name: Retries
            tls:
                $ref: '#/definitions/TLSConfig'
            type:
                type: string
                x-go-name: Type
        type: object
        x-go-package: github.com/go-gost/x/config
    HopConfig:
        properties:
            bypass:
                type: string
                x-go-name: Bypass
            bypasses:
                items:
                    type: string
                type: array
                x-go-name: Bypasses
            file:
                $ref: '#/definitions/FileLoader'
            hosts:
                type: string
                x-go-name: Hosts
            http:
                $ref: '#/definitions/HTTPLoader'
            interface:
                type: string
                x-go-name: Interface
            metadata:
                additionalProperties: {}
                type: object
                x-go-name: Metadata
            name:
                type: string
                x-go-name: Name
            nodes:
                items:
                    $ref: '#/definitions/NodeConfig'
                type: array
                x-go-name: Nodes
            plugin:
                $ref: '#/definitions/PluginConfig'
            redis:
                $ref: '#/definitions/RedisLoader'
            reload:
                $ref: '#/definitions/Duration'
            resolver:
                type: string
                x-go-name: Resolver
            selector:
                $ref: '#/definitions/SelectorConfig'
            sockopts:
                $ref: '#/definitions/SockOptsConfig'
        type: object
        x-go-package: github.com/go-gost/x/config
    HostMappingConfig:
        properties:
            aliases:
                items:
                    type: string
                type: array
                x-go-name: Aliases
            hostname:
                type: string
                x-go-name: Hostname
            ip:
                type: string
                x-go-name: IP
        type: object
        x-go-package: github.com/go-gost/x/config
    HostsConfig:
        properties:
            file:
                $ref: '#/definitions/FileLoader'
            http:
                $ref: '#/definitions/HTTPLoader'
            mappings:
                items:
                    $ref: '#/definitions/HostMappingConfig'
                type: array
                x-go-name: Mappings
            name:
                type: string
                x-go-name: Name
            plugin:
                $ref: '#/definitions/PluginConfig'
            redis:
                $ref: '#/definitions/RedisLoader'
            reload:
                $ref: '#/definitions/Duration'
        type: object
        x-go-package: github.com/go-gost/x/config
    IngressConfig:
        properties:
            file:
                $ref: '#/definitions/FileLoader'
            http:
                $ref: '#/definitions/HTTPLoader'
            name:
                type: string
                x-go-name: Name
            plugin:
                $ref: '#/definitions/PluginConfig'
            redis:
                $ref: '#/definitions/RedisLoader'
            reload:
                $ref: '#/definitions/Duration'
            rules:
                items:
                    $ref: '#/definitions/IngressRuleConfig'
                type: array
                x-go-name: Rules
        type: object
        x-go-package: github.com/go-gost/x/config
    IngressRuleConfig:
        properties:
            endpoint:
                type: string
                x-go-name: Endpoint
            hostname:
                type: string
                x-go-name: Hostname
        type: object
        x-go-package: github.com/go-gost/x/config
    LimiterConfig:
        properties:
            file:
                $ref: '#/definitions/FileLoader'
            http:
                $ref: '#/definitions/HTTPLoader'
            limits:
                items:
                    type: string
                type: array
                x-go-name: Limits
            name:
                type: string
                x-go-name: Name
            plugin:
                $ref: '#/definitions/PluginConfig'
            redis:
                $ref: '#/definitions/RedisLoader'
            reload:
                $ref: '#/definitions/Duration'
        type: object
        x-go-package: github.com/go-gost/x/config
    ListenerConfig:
        properties:
            auth:
                $ref: '#/definitions/AuthConfig'
            auther:
                type: string
                x-go-name: Auther
            authers:
                items:
                    type: string
                type: array
                x-go-name: Authers
            chain:
                type: string
                x-go-name: Chain
            chainGroup:
                $ref: '#/definitions/ChainGroupConfig'
            metadata:
                additionalProperties: {}
                type: object
                x-go-name: Metadata
            tls:
                $ref: '#/definitions/TLSConfig'
            type:
                type: string
                x-go-name: Type
        type: object
        x-go-package: github.com/go-gost/x/config
    LogConfig:
        properties:
            format:
                type: string
                x-go-name: Format
            level:
                type: string
                x-go-name: Level
            output:
                type: string
                x-go-name: Output
            rotation:
                $ref: '#/definitions/LogRotationConfig'
        type: object
        x-go-package: github.com/go-gost/x/config
    LogRotationConfig:
        properties:
            compress:
                description: |-
                    Compress determines if the rotated log files should be compressed
                    using gzip. The default is not to perform compression.
                type: boolean
                x-go-name: Compress
            localTime:
                description: |-
                    LocalTime determines if the time used for formatting the timestamps in
                    backup files is the computer's local time. The default is to use UTC
                    time.
                type: boolean
                x-go-name: LocalTime
            maxAge:
                description: |-
                    MaxAge is the maximum number of days to retain old log files based on the
                    timestamp encoded in their filename.  Note that a day is defined as 24
                    hours and may not exactly correspond to calendar days due to daylight
                    savings, leap seconds, etc. The default is not to remove old log files
                    based on age.
                format: int64
                type: integer
                x-go-name: MaxAge
            maxBackups:
                description: |-
                    MaxBackups is the maximum number of old log files to retain.  The default
                    is to retain all old log files (though MaxAge may still cause them to get
                    deleted.)
                format: int64
                type: integer
                x-go-name: MaxBackups
            maxSize:
                description: |-
                    MaxSize is the maximum size in megabytes of the log file before it gets
                    rotated. It defaults to 100 megabytes.
                format: int64
                type: integer
                x-go-name: MaxSize
        type: object
        x-go-package: github.com/go-gost/x/config
    LoggerConfig:
        properties:
            log:
                $ref: '#/definitions/LogConfig'
            name:
                type: string
                x-go-name: Name
        type: object
        x-go-package: github.com/go-gost/x/config
    MetricsConfig:
        properties:
            addr:
                type: string
                x-go-name: Addr
            auth:
                $ref: '#/definitions/AuthConfig'
            auther:
                type: string
                x-go-name: Auther
            path:
                type: string
                x-go-name: Path
        type: object
        x-go-package: github.com/go-gost/x/config
    NameserverConfig:
        properties:
            addr:
                type: string
                x-go-name: Addr
            async:
                type: boolean
                x-go-name: Async
            chain:
                type: string
                x-go-name: Chain
            clientIP:
                type: string
                x-go-name: ClientIP
            hostname:
                type: string
                x-go-name: Hostname
            only:
                type: string
                x-go-name: Only
            prefer:
                type: string
                x-go-name: Prefer
            timeout:
                $ref: '#/definitions/Duration'
            ttl:
                $ref: '#/definitions/Duration'
        type: object
        x-go-package: github.com/go-gost/x/config
    NodeConfig:
        properties:
            addr:
                type: string
                x-go-name: Addr
            bypass:
                type: string
                x-go-name: Bypass
            bypasses:
                items:
                    type: string
                type: array
                x-go-name: Bypasses
            connector:
                $ref: '#/definitions/ConnectorConfig'
            dialer:
                $ref: '#/definitions/DialerConfig'
            filter:
                $ref: '#/definitions/NodeFilterConfig'
            hosts:
                type: string
                x-go-name: Hosts
            http:
                $ref: '#/definitions/HTTPNodeConfig'
            interface:
                type: string
                x-go-name: Interface
            matcher:
                $ref: '#/definitions/NodeMatcherConfig'
            metadata:
                additionalProperties: {}
                type: object
                x-go-name: Metadata
            name:
                type: string
                x-go-name: Name
            netns:
                type: string
                x-go-name: Netns
            network:
                type: string
                x-go-name: Network
            resolver:
                type: string
                x-go-name: Resolver
            sockopts:
                $ref: '#/definitions/SockOptsConfig'
            tls:
                $ref: '#/definitions/TLSNodeConfig'
        type: object
        x-go-package: github.com/go-gost/x/config
    NodeFilterConfig:
        properties:
            host:
                type: string
                x-go-name: Host
            path:
                type: string
                x-go-name: Path
            protocol:
                type: string
                x-go-name: Protocol
        type: object
        x-go-package: github.com/go-gost/x/config
    NodeMatcherConfig:
        properties:
            priority:
                format: int64
                type: integer
                x-go-name: Priority
            rule:
                type: string
                x-go-name: Rule
        type: object
        x-go-package: github.com/go-gost/x/config
    ObserverConfig:
        properties:
            name:
                type: string
                x-go-name: Name
            plugin:
                $ref: '#/definitions/PluginConfig'
        type: object
        x-go-package: github.com/go-gost/x/config
    PluginConfig:
        properties:
            addr:
                type: string
                x-go-name: Addr
            timeout:
                $ref: '#/definitions/Duration'
            tls:
                $ref: '#/definitions/TLSConfig'
            token:
                type: string
                x-go-name: Token
            type:
                type: string
                x-go-name: Type
        type: object
        x-go-package: github.com/go-gost/x/config
    ProfilingConfig:
        properties:
            addr:
                type: string
                x-go-name: Addr
        type: object
        x-go-package: github.com/go-gost/x/config
    RecorderConfig:
        properties:
            file:
                $ref: '#/definitions/FileRecorder'
            http:
                $ref: '#/definitions/HTTPRecorder'
            name:
                type: string
                x-go-name: Name
            plugin:
                $ref: '#/definitions/PluginConfig'
            redis:
                $ref: '#/definitions/RedisRecorder'
            tcp:
                $ref: '#/definitions/TCPRecorder'
        type: object
        x-go-package: github.com/go-gost/x/config
    RecorderObject:
        properties:
            metadata:
                additionalProperties: {}
                type: object
                x-go-name: Metadata
            name:
                type: string
                x-go-name: Name
            record:
                type: string
                x-go-name: Record
        type: object
        x-go-package: github.com/go-gost/x/config
    RedisLoader:
        properties:
            addr:
                type: string
                x-go-name: Addr
            db:
                format: int64
                type: integer
                x-go-name: DB
            key:
                type: string
                x-go-name: Key
            password:
                type: string
                x-go-name: Password
            type:
                type: string
                x-go-name: Type
            username:
                type: string
                x-go-name: Username
        type: object
        x-go-package: github.com/go-gost/x/config
    RedisRecorder:
        properties:
            addr:
                type: string
                x-go-name: Addr
            db:
                format: int64
                type: integer
                x-go-name: DB
            key:
                type: string
                x-go-name: Key
            password:
                type: string
                x-go-name: Password
            type:
                type: string
                x-go-name: Type
            username:
                type: string
                x-go-name: Username
        type: object
        x-go-package: github.com/go-gost/x/config
    ResolverConfig:
        properties:
            name:
                type: string
                x-go-name: Name
            nameservers:
                items:
                    $ref: '#/definitions/NameserverConfig'
                type: array
                x-go-name: Nameservers
            plugin:
                $ref: '#/definitions/PluginConfig'
        type: object
        x-go-package: github.com/go-gost/x/config
    Response:
        properties:
            code:
                format: int64
                type: integer
                x-go-name: Code
            data:
                x-go-name: Data
            msg:
                type: string
                x-go-name: Msg
        type: object
        x-go-package: github.com/go-gost/x/api
    RouterConfig:
        properties:
            file:
                $ref: '#/definitions/FileLoader'
            http:
                $ref: '#/definitions/HTTPLoader'
            name:
                type: string
                x-go-name: Name
            plugin:
                $ref: '#/definitions/PluginConfig'
            redis:
                $ref: '#/definitions/RedisLoader'
            reload:
                $ref: '#/definitions/Duration'
            routes:
                items:
                    $ref: '#/definitions/RouterRouteConfig'
                type: array
                x-go-name: Routes
        type: object
        x-go-package: github.com/go-gost/x/config
    RouterRouteConfig:
        properties:
            dst:
                type: string
                x-go-name: Dst
            gateway:
                type: string
                x-go-name: Gateway
            net:
                description: 'Deprecated: use dst instead'
                type: string
                x-go-name: Net
        type: object
        x-go-package: github.com/go-gost/x/config
    SDConfig:
        properties:
            name:
                type: string
                x-go-name: Name
            plugin:
                $ref: '#/definitions/PluginConfig'
        type: object
        x-go-package: github.com/go-gost/x/config
    SelectorConfig:
        properties:
            failTimeout:
                $ref: '#/definitions/Duration'
            maxFails:
                format: int64
                type: integer
                x-go-name: MaxFails
            strategy:
                type: string
                x-go-name: Strategy
        type: object
        x-go-package: github.com/go-gost/x/config
    ServiceConfig:
        properties:
            addr:
                type: string
                x-go-name: Addr
            admission:
                type: string
                x-go-name: Admission
            admissions:
                items:
                    type: string
                type: array
                x-go-name: Admissions
            bypass:
                type: string
                x-go-name: Bypass
            bypasses:
                items:
                    type: string
                type: array
                x-go-name: Bypasses
            climiter:
                type: string
                x-go-name: CLimiter
            forwarder:
                $ref: '#/definitions/ForwarderConfig'
            handler:
                $ref: '#/definitions/HandlerConfig'
            hosts:
                type: string
                x-go-name: Hosts
            interface:
                description: 'Deprecated: use metadata.interface instead'
                type: string
                x-go-name: Interface
            limiter:
                type: string
                x-go-name: Limiter
            listener:
                $ref: '#/definitions/ListenerConfig'
            logger:
                type: string
                x-go-name: Logger
            loggers:
                items:
                    type: string
                type: array
                x-go-name: Loggers
            metadata:
                additionalProperties: {}
                type: object
                x-go-name: Metadata
            name:
                type: string
                x-go-name: Name
            observer:
                type: string
                x-go-name: Observer
            recorders:
                items:
                    $ref: '#/definitions/RecorderObject'
                type: array
                x-go-name: Recorders
            resolver:
                type: string
                x-go-name: Resolver
            rlimiter:
                type: string
                x-go-name: RLimiter
            sockopts:
                $ref: '#/definitions/SockOptsConfig'
            status:
                $ref: '#/definitions/ServiceStatus'
        type: object
        x-go-package: github.com/go-gost/x/config
    ServiceEvent:
        properties:
            msg:
                type: string
                x-go-name: Msg
            time:
                format: int64
                type: integer
                x-go-name: Time
        type: object
        x-go-package: github.com/go-gost/x/config
    ServiceStats:
        properties:
            currentConns:
                format: uint64
                type: integer
                x-go-name: CurrentConns
            inputBytes:
                format: uint64
                type: integer
                x-go-name: InputBytes
            outputBytes:
                format: uint64
                type: integer
                x-go-name: OutputBytes
            totalConns:
                format: uint64
                type: integer
                x-go-name: TotalConns
            totalErrs:
                format: uint64
                type: integer
                x-go-name: TotalErrs
        type: object
        x-go-package: github.com/go-gost/x/config
    ServiceStatus:
        properties:
            createTime:
                format: int64
                type: integer
                x-go-name: CreateTime
            events:
                items:
                    $ref: '#/definitions/ServiceEvent'
                type: array
                x-go-name: Events
            state:
                type: string
                x-go-name: State
            stats:
                $ref: '#/definitions/ServiceStats'
        type: object
        x-go-package: github.com/go-gost/x/config
    SockOptsConfig:
        properties:
            mark:
                format: int64
                type: integer
                x-go-name: Mark
        type: object
        x-go-package: github.com/go-gost/x/config
    TCPRecorder:
        properties:
            addr:
                type: string
                x-go-name: Addr
            timeout:
                $ref: '#/definitions/Duration'
        type: object
        x-go-package: github.com/go-gost/x/config
    TLSConfig:
        properties:
            caFile:
                type: string
                x-go-name: CAFile
            certFile:
                type: string
                x-go-name: CertFile
            commonName:
                type: string
                x-go-name: CommonName
            keyFile:
                type: string
                x-go-name: KeyFile
            options:
                $ref: '#/definitions/TLSOptions'
            organization:
                type: string
                x-go-name: Organization
            secure:
                type: boolean
                x-go-name: Secure
            serverName:
                type: string
                x-go-name: ServerName
            validity:
                $ref: '#/definitions/Duration'
        type: object
        x-go-package: github.com/go-gost/x/config
    TLSNodeConfig:
        properties:
            options:
                $ref: '#/definitions/TLSOptions'
            secure:
                type: boolean
                x-go-name: Secure
            serverName:
                type: string
                x-go-name: ServerName
        type: object
        x-go-package: github.com/go-gost/x/config
    TLSOptions:
        properties:
            alpn:
                items:
                    type: string
                type: array
                x-go-name: ALPN
            cipherSuites:
                items:
                    type: string
                type: array
                x-go-name: CipherSuites
            maxVersion:
                type: string
                x-go-name: MaxVersion
            minVersion:
                type: string
                x-go-name: MinVersion
        type: object
        x-go-package: github.com/go-gost/x/config
    admissionList:
        properties:
            count:
                format: int64
                type: integer
                x-go-name: Count
            list:
                items:
                    $ref: '#/definitions/AdmissionConfig'
                type: array
                x-go-name: List
        type: object
        x-go-package: github.com/go-gost/x/api
    autherList:
        properties:
            count:
                format: int64
                type: integer
                x-go-name: Count
            list:
                items:
                    $ref: '#/definitions/AutherConfig'
                type: array
                x-go-name: List
        type: object
        x-go-package: github.com/go-gost/x/api
    bypassList:
        properties:
            count:
                format: int64
                type: integer
                x-go-name: Count
            list:
                items:
                    $ref: '#/definitions/BypassConfig'
                type: array
                x-go-name: List
        type: object
        x-go-package: github.com/go-gost/x/api
    chainList:
        properties:
            count:
                format: int64
                type: integer
                x-go-name: Count
            list:
                items:
                    $ref: '#/definitions/ChainConfig'
                type: array
                x-go-name: List
        type: object
        x-go-package: github.com/go-gost/x/api
    connLimiterList:
        properties:
            count:
                format: int64
                type: integer
                x-go-name: Count
            list:
                items:
                    $ref: '#/definitions/LimiterConfig'
                type: array
                x-go-name: List
        type: object
        x-go-package: github.com/go-gost/x/api
    hopList:
        properties:
            count:
                format: int64
                type: integer
                x-go-name: Count
            list:
                items:
                    $ref: '#/definitions/HopConfig'
                type: array
                x-go-name: List
        type: object
        x-go-package: github.com/go-gost/x/api
    hostsList:
        properties:
            count:
                format: int64
                type: integer
                x-go-name: Count
            list:
                items:
                    $ref: '#/definitions/HostsConfig'
                type: array
                x-go-name: List
        type: object
        x-go-package: github.com/go-gost/x/api
    ingressList:
        properties:
            count:
                format: int64
                type: integer
                x-go-name: Count
            list:
                items:
                    $ref: '#/definitions/IngressConfig'
                type: array
                x-go-name: List
        type: object
        x-go-package: github.com/go-gost/x/api
    limiterList:
        properties:
            count:
                format: int64
                type: integer
                x-go-name: Count
            list:
                items:
                    $ref: '#/definitions/LimiterConfig'
                type: array
                x-go-name: List
        type: object
        x-go-package: github.com/go-gost/x/api
    observerList:
        properties:
            count:
                format: int64
                type: integer
                x-go-name: Count
            list:
                items:
                    $ref: '#/definitions/ObserverConfig'
                type: array
                x-go-name: List
        type: object
        x-go-package: github.com/go-gost/x/api
    rateLimiterList:
        properties:
            count:
                format: int64
                type: integer
                x-go-name: Count
            list:
                items:
                    $ref: '#/definitions/LimiterConfig'
                type: array
                x-go-name: List
        type: object
        x-go-package: github.com/go-gost/x/api
    recorderList:
        properties:
            count:
                format: int64
                type: integer
                x-go-name: Count
            list:
                items:
                    $ref: '#/definitions/RecorderConfig'
                type: array
                x-go-name: List
        type: object
        x-go-package: github.com/go-gost/x/api
    resolverList:
        properties:
            count:
                format: int64
                type: integer
                x-go-name: Count
            list:
                items:
                    $ref: '#/definitions/ResolverConfig'
                type: array
                x-go-name: List
        type: object
        x-go-package: github.com/go-gost/x/api
    routerList:
        properties:
            count:
                format: int64
                type: integer
                x-go-name: Count
            list:
                items:
                    $ref: '#/definitions/RouterConfig'
                type: array
                x-go-name: List
        type: object
        x-go-package: github.com/go-gost/x/api
    sdList:
        properties:
            count:
                format: int64
                type: integer
                x-go-name: Count
            list:
                items:
                    $ref: '#/definitions/SDConfig'
                type: array
                x-go-name: List
        type: object
        x-go-package: github.com/go-gost/x/api
    serviceList:
        properties:
            count:
                format: int64
                type: integer
                x-go-name: Count
            list:
                items:
                    $ref: '#/definitions/ServiceConfig'
                type: array
                x-go-name: List
        type: object
        x-go-package: github.com/go-gost/x/api
info:
    title: Documentation of Web API.
    version: 1.0.0
paths:
    /config:
        get:
            operationId: getConfigRequest
            parameters:
                - description: output format, one of yaml|json, default is json.
                  in: query
                  name: format
                  type: string
                  x-go-name: Format
            responses:
                "200":
                    $ref: '#/responses/getConfigResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get current config.
            tags:
                - Config
        post:
            operationId: saveConfigRequest
            parameters:
                - description: output format, one of yaml|json, default is yaml.
                  in: query
                  name: format
                  type: string
                  x-go-name: Format
                - description: file path, default is gost.yaml|gost.json in current working directory.
                  in: query
                  name: path
                  type: string
                  x-go-name: Path
            responses:
                "200":
                    $ref: '#/responses/saveConfigResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Save current config to file (gost.yaml or gost.json).
            tags:
                - Config
    /config/admissions:
        get:
            operationId: getAdmissionListRequest
            responses:
                "200":
                    $ref: '#/responses/getAdmissionListResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get admission list.
            tags:
                - Admission
        post:
            operationId: createAdmissionRequest
            parameters:
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/AdmissionConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/createAdmissionResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Create a new admission, the name of admission must be unique in admission list.
            tags:
                - Admission
    /config/admissions/{admission}:
        delete:
            operationId: deleteAdmissionRequest
            parameters:
                - in: path
                  name: admission
                  required: true
                  type: string
                  x-go-name: Admission
            responses:
                "200":
                    $ref: '#/responses/deleteAdmissionResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Delete admission by name.
            tags:
                - Admission
        get:
            operationId: getAdmissionRequest
            parameters:
                - in: path
                  name: admission
                  required: true
                  type: string
                  x-go-name: Admission
            responses:
                "200":
                    $ref: '#/responses/getAdmissionResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get admission.
            tags:
                - Admission
        put:
            operationId: updateAdmissionRequest
            parameters:
                - in: path
                  name: admission
                  required: true
                  type: string
                  x-go-name: Admission
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/AdmissionConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/updateAdmissionResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Update admission by name, the admission must already exist.
            tags:
                - Admission
    /config/authers:
        get:
            operationId: getAutherListRequest
            responses:
                "200":
                    $ref: '#/responses/getAutherListResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get auther list.
            tags:
                - Auther
        post:
            operationId: createAutherRequest
            parameters:
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/AutherConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/createAutherResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Create a new auther, the name of the auther must be unique in auther list.
            tags:
                - Auther
    /config/authers/{auther}:
        delete:
            operationId: deleteAutherRequest
            parameters:
                - in: path
                  name: auther
                  required: true
                  type: string
                  x-go-name: Auther
            responses:
                "200":
                    $ref: '#/responses/deleteAutherResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Delete auther by name.
            tags:
                - Auther
        get:
            operationId: getAutherRequest
            parameters:
                - in: path
                  name: auther
                  required: true
                  type: string
                  x-go-name: Auther
            responses:
                "200":
                    $ref: '#/responses/getAutherResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get auther.
            tags:
                - Auther
        put:
            operationId: updateAutherRequest
            parameters:
                - in: path
                  name: auther
                  required: true
                  type: string
                  x-go-name: Auther
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/AutherConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/updateAutherResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Update auther by name, the auther must already exist.
            tags:
                - Auther
    /config/bypasses:
        get:
            operationId: getBypassListRequest
            responses:
                "200":
                    $ref: '#/responses/getBypassListResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get bypass list.
            tags:
                - Bypass
        post:
            operationId: createBypassRequest
            parameters:
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/BypassConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/createBypassResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Create a new bypass, the name of bypass must be unique in bypass list.
            tags:
                - Bypass
    /config/bypasses/{bypass}:
        delete:
            operationId: deleteBypassRequest
            parameters:
                - in: path
                  name: bypass
                  required: true
                  type: string
                  x-go-name: Bypass
            responses:
                "200":
                    $ref: '#/responses/deleteBypassResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Delete bypass by name.
            tags:
                - Bypass
        get:
            operationId: getBypassRequest
            parameters:
                - in: path
                  name: bypass
                  required: true
                  type: string
                  x-go-name: Bypass
            responses:
                "200":
                    $ref: '#/responses/getBypassResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get bypass.
            tags:
                - Bypass
        put:
            operationId: updateBypassRequest
            parameters:
                - in: path
                  name: bypass
                  required: true
                  type: string
                  x-go-name: Bypass
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/BypassConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/updateBypassResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Update bypass by name, the bypass must already exist.
            tags:
                - Bypass
    /config/chains:
        get:
            operationId: getChainListRequest
            responses:
                "200":
                    $ref: '#/responses/getChainListResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get chain list.
            tags:
                - Chain
        post:
            operationId: createChainRequest
            parameters:
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/ChainConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/createChainResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Create a new chain, the name of chain must be unique in chain list.
            tags:
                - Chain
    /config/chains/{chain}:
        delete:
            operationId: deleteChainRequest
            parameters:
                - in: path
                  name: chain
                  required: true
                  type: string
                  x-go-name: Chain
            responses:
                "200":
                    $ref: '#/responses/deleteChainResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Delete chain by name.
            tags:
                - Chain
        get:
            operationId: getChainRequest
            parameters:
                - in: path
                  name: chain
                  required: true
                  type: string
                  x-go-name: Chain
            responses:
                "200":
                    $ref: '#/responses/getChainResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get chain.
            tags:
                - Chain
        put:
            operationId: updateChainRequest
            parameters:
                - in: path
                  name: chain
                  required: true
                  type: string
                  x-go-name: Chain
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/ChainConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/updateChainResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Update chain by name, the chain must already exist.
            tags:
                - Chain
    /config/climiters:
        get:
            operationId: getConnLimiterListRequest
            responses:
                "200":
                    $ref: '#/responses/getConnLimiterListResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get conn limiter list.
            tags:
                - Limiter
        post:
            operationId: createConnLimiterRequest
            parameters:
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/LimiterConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/createConnLimiterResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Create a new conn limiter, the name of limiter must be unique in limiter list.
            tags:
                - Limiter
    /config/climiters/{limiter}:
        delete:
            operationId: deleteConnLimiterRequest
            parameters:
                - in: path
                  name: limiter
                  required: true
                  type: string
                  x-go-name: Limiter
            responses:
                "200":
                    $ref: '#/responses/deleteConnLimiterResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Delete conn limiter by name.
            tags:
                - Limiter
        get:
            operationId: getConnLimiterRequest
            parameters:
                - in: path
                  name: limiter
                  required: true
                  type: string
                  x-go-name: Limiter
            responses:
                "200":
                    $ref: '#/responses/getConnLimiterResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get conn limiter.
            tags:
                - Limiter
        put:
            operationId: updateConnLimiterRequest
            parameters:
                - in: path
                  name: limiter
                  required: true
                  type: string
                  x-go-name: Limiter
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/LimiterConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/updateConnLimiterResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Update conn limiter by name, the limiter must already exist.
            tags:
                - Limiter
    /config/hops:
        get:
            operationId: getHopListRequest
            responses:
                "200":
                    $ref: '#/responses/getHopListResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get hop list.
            tags:
                - Hop
        post:
            operationId: createHopRequest
            parameters:
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/HopConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/createHopResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Create a new hop, the name of hop must be unique in hop list.
            tags:
                - Hop
    /config/hops/{hop}:
        delete:
            operationId: deleteHopRequest
            parameters:
                - in: path
                  name: hop
                  required: true
                  type: string
                  x-go-name: Hop
            responses:
                "200":
                    $ref: '#/responses/deleteHopResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Delete hop by name.
            tags:
                - Hop
        get:
            operationId: getHopRequest
            parameters:
                - in: path
                  name: hop
                  required: true
                  type: string
                  x-go-name: Hop
            responses:
                "200":
                    $ref: '#/responses/getHopResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get hop.
            tags:
                - Hop
        put:
            operationId: updateHopRequest
            parameters:
                - in: path
                  name: hop
                  required: true
                  type: string
                  x-go-name: Hop
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/HopConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/updateHopResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Update hop by name, the hop must already exist.
            tags:
                - Hop
    /config/hosts:
        get:
            operationId: getHostsListRequest
            responses:
                "200":
                    $ref: '#/responses/getHostsListResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get hosts list.
            tags:
                - Hosts
        post:
            operationId: createHostsRequest
            parameters:
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/HostsConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/createHostsResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Create a new hosts, the name of the hosts must be unique in hosts list.
            tags:
                - Hosts
    /config/hosts/{hosts}:
        delete:
            operationId: deleteHostsRequest
            parameters:
                - in: path
                  name: hosts
                  required: true
                  type: string
                  x-go-name: Hosts
            responses:
                "200":
                    $ref: '#/responses/deleteHostsResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Delete hosts by name.
            tags:
                - Hosts
        get:
            operationId: getHostsRequest
            parameters:
                - in: path
                  name: hosts
                  required: true
                  type: string
                  x-go-name: Hosts
            responses:
                "200":
                    $ref: '#/responses/getHostsResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get hosts.
            tags:
                - Hosts
        put:
            operationId: updateHostsRequest
            parameters:
                - in: path
                  name: hosts
                  required: true
                  type: string
                  x-go-name: Hosts
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/HostsConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/updateHostsResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Update hosts by name, the hosts must already exist.
            tags:
                - Hosts
    /config/ingresses:
        get:
            operationId: getIngressListRequest
            responses:
                "200":
                    $ref: '#/responses/getIngressListResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get ingress list.
            tags:
                - Ingress
        post:
            operationId: createIngressRequest
            parameters:
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/IngressConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/createIngressResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Create a new ingress, the name of the ingress must be unique in ingress list.
            tags:
                - Ingress
    /config/ingresses/{ingress}:
        delete:
            operationId: deleteIngressRequest
            parameters:
                - in: path
                  name: ingress
                  required: true
                  type: string
                  x-go-name: Ingress
            responses:
                "200":
                    $ref: '#/responses/deleteIngressResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Delete ingress by name.
            tags:
                - Ingress
        get:
            operationId: getIngressRequest
            parameters:
                - in: path
                  name: ingress
                  required: true
                  type: string
                  x-go-name: Ingress
            responses:
                "200":
                    $ref: '#/responses/getIngressResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get ingress.
            tags:
                - Ingress
        put:
            operationId: updateIngressRequest
            parameters:
                - in: path
                  name: ingress
                  required: true
                  type: string
                  x-go-name: Ingress
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/IngressConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/updateIngressResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Update ingress by name, the ingress must already exist.
            tags:
                - Ingress
    /config/limiters:
        get:
            operationId: getLimiterListRequest
            responses:
                "200":
                    $ref: '#/responses/getLimiterListResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get limiter list.
            tags:
                - Limiter
        post:
            operationId: createLimiterRequest
            parameters:
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/LimiterConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/createLimiterResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Create a new limiter, the name of limiter must be unique in limiter list.
            tags:
                - Limiter
    /config/limiters/{limiter}:
        delete:
            operationId: deleteLimiterRequest
            parameters:
                - in: path
                  name: limiter
                  required: true
                  type: string
                  x-go-name: Limiter
            responses:
                "200":
                    $ref: '#/responses/deleteLimiterResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Delete limiter by name.
            tags:
                - Limiter
        get:
            operationId: getLimiterRequest
            parameters:
                - in: path
                  name: limiter
                  required: true
                  type: string
                  x-go-name: Limiter
            responses:
                "200":
                    $ref: '#/responses/getLimiterResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get limiter.
            tags:
                - Limiter
        put:
            operationId: updateLimiterRequest
            parameters:
                - in: path
                  name: limiter
                  required: true
                  type: string
                  x-go-name: Limiter
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/LimiterConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/updateLimiterResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Update limiter by name, the limiter must already exist.
            tags:
                - Limiter
    /config/observers:
        get:
            operationId: getObserverListRequest
            responses:
                "200":
                    $ref: '#/responses/getObserverListResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get observer list.
            tags:
                - Observer
        post:
            operationId: createObserverRequest
            parameters:
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/ObserverConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/createObserverResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Create a new observer, the name of the observer must be unique in observer list.
            tags:
                - Observer
    /config/observers/{observer}:
        delete:
            operationId: deleteObserverRequest
            parameters:
                - in: path
                  name: observer
                  required: true
                  type: string
                  x-go-name: Observer
            responses:
                "200":
                    $ref: '#/responses/deleteObserverResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Delete observer by name.
            tags:
                - Observer
        get:
            operationId: getObserverRequest
            parameters:
                - in: path
                  name: observer
                  required: true
                  type: string
                  x-go-name: Observer
            responses:
                "200":
                    $ref: '#/responses/getObserverResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get observer.
            tags:
                - Observer
        put:
            operationId: updateObserverRequest
            parameters:
                - in: path
                  name: observer
                  required: true
                  type: string
                  x-go-name: Observer
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/ObserverConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/updateObserverResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Update observer by name, the observer must already exist.
            tags:
                - Observer
    /config/recorders:
        get:
            operationId: getRecorderListRequest
            responses:
                "200":
                    $ref: '#/responses/getRecorderListResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get recorder list.
            tags:
                - Recorder
        post:
            operationId: createRecorderRequest
            parameters:
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/RecorderConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/createRecorderResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Create a new recorder, the name of the recorder must be unique in recorder list.
            tags:
                - Recorder
    /config/recorders/{recorder}:
        delete:
            operationId: deleteRecorderRequest
            parameters:
                - in: path
                  name: recorder
                  required: true
                  type: string
                  x-go-name: Recorder
            responses:
                "200":
                    $ref: '#/responses/deleteRecorderResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Delete recorder by name.
            tags:
                - Recorder
        get:
            operationId: getRecorderRequest
            parameters:
                - in: path
                  name: recorder
                  required: true
                  type: string
                  x-go-name: Recorder
            responses:
                "200":
                    $ref: '#/responses/getRecorderResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get recorder.
            tags:
                - Recorder
        put:
            operationId: updateRecorderRequest
            parameters:
                - in: path
                  name: recorder
                  required: true
                  type: string
                  x-go-name: Recorder
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/RecorderConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/updateRecorderResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Update recorder by name, the recorder must already exist.
            tags:
                - Recorder
    /config/reload:
        post:
            operationId: reloadConfigRequest
            responses:
                "200":
                    $ref: '#/responses/reloadConfigResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Hot reload config.
            tags:
                - Reload
    /config/resolvers:
        get:
            operationId: getResolverListRequest
            responses:
                "200":
                    $ref: '#/responses/getResolverListResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get resolver list.
            tags:
                - Resolver
        post:
            operationId: createResolverRequest
            parameters:
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/ResolverConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/createResolverResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Create a new resolver, the name of the resolver must be unique in resolver list.
            tags:
                - Resolver
    /config/resolvers/{resolver}:
        delete:
            operationId: deleteResolverRequest
            parameters:
                - in: path
                  name: resolver
                  required: true
                  type: string
                  x-go-name: Resolver
            responses:
                "200":
                    $ref: '#/responses/deleteResolverResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Delete resolver by name.
            tags:
                - Resolver
        get:
            operationId: getResolverRequest
            parameters:
                - in: path
                  name: resolver
                  required: true
                  type: string
                  x-go-name: Resolver
            responses:
                "200":
                    $ref: '#/responses/getResolverResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get resolver.
            tags:
                - Resolver
        put:
            operationId: updateResolverRequest
            parameters:
                - in: path
                  name: resolver
                  required: true
                  type: string
                  x-go-name: Resolver
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/ResolverConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/updateResolverResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Update resolver by name, the resolver must already exist.
            tags:
                - Resolver
    /config/rlimiters:
        get:
            operationId: getRateLimiterListRequest
            responses:
                "200":
                    $ref: '#/responses/getRateLimiterListResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get rate limiter list.
            tags:
                - Limiter
        post:
            operationId: createRateLimiterRequest
            parameters:
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/LimiterConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/createRateLimiterResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Create a new rate limiter, the name of limiter must be unique in limiter list.
            tags:
                - Limiter
    /config/rlimiters/{limiter}:
        delete:
            operationId: deleteRateLimiterRequest
            parameters:
                - in: path
                  name: limiter
                  required: true
                  type: string
                  x-go-name: Limiter
            responses:
                "200":
                    $ref: '#/responses/deleteRateLimiterResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Delete rate limiter by name.
            tags:
                - Limiter
        get:
            operationId: getRateLimiterRequest
            parameters:
                - in: path
                  name: limiter
                  required: true
                  type: string
                  x-go-name: Limiter
            responses:
                "200":
                    $ref: '#/responses/getRateLimiterResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get conn limiter.
            tags:
                - Limiter
        put:
            operationId: updateRateLimiterRequest
            parameters:
                - in: path
                  name: limiter
                  required: true
                  type: string
                  x-go-name: Limiter
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/LimiterConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/updateRateLimiterResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Update rate limiter by name, the limiter must already exist.
            tags:
                - Limiter
    /config/routers:
        get:
            operationId: getRouterListRequest
            responses:
                "200":
                    $ref: '#/responses/getRouterListResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get router list.
            tags:
                - Router
        post:
            operationId: createRouterRequest
            parameters:
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/RouterConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/createRouterResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Create a new router, the name of the router must be unique in router list.
            tags:
                - Router
    /config/routers/{router}:
        delete:
            operationId: deleteRouterRequest
            parameters:
                - in: path
                  name: router
                  required: true
                  type: string
                  x-go-name: Router
            responses:
                "200":
                    $ref: '#/responses/deleteRouterResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Delete router by name.
            tags:
                - Router
        get:
            operationId: getRouterRequest
            parameters:
                - in: path
                  name: router
                  required: true
                  type: string
                  x-go-name: Router
            responses:
                "200":
                    $ref: '#/responses/getRouterResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get router.
            tags:
                - Router
        put:
            operationId: updateRouterRequest
            parameters:
                - in: path
                  name: router
                  required: true
                  type: string
                  x-go-name: Router
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/RouterConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/updateRouterResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Update router by name, the router must already exist.
            tags:
                - Router
    /config/sds:
        get:
            operationId: getSDListRequest
            responses:
                "200":
                    $ref: '#/responses/getSDListResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get sd list.
            tags:
                - SD
        post:
            operationId: createSDRequest
            parameters:
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/SDConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/createSDResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Create a new SD, the name of the SD must be unique in SD list.
            tags:
                - SD
    /config/sds/{sd}:
        delete:
            operationId: deleteSDRequest
            parameters:
                - in: path
                  name: sd
                  required: true
                  type: string
                  x-go-name: SD
            responses:
                "200":
                    $ref: '#/responses/deleteSDResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Delete SD by name.
            tags:
                - SD
        get:
            operationId: getSDRequest
            parameters:
                - in: path
                  name: sd
                  required: true
                  type: string
                  x-go-name: SD
            responses:
                "200":
                    $ref: '#/responses/getSDResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get sd.
            tags:
                - SD
        put:
            operationId: updateSDRequest
            parameters:
                - in: path
                  name: sd
                  required: true
                  type: string
                  x-go-name: SD
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/SDConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/updateSDResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Update SD by name, the SD must already exist.
            tags:
                - SD
    /config/services:
        get:
            operationId: getServiceListRequest
            responses:
                "200":
                    $ref: '#/responses/getServiceListResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get service list.
            tags:
                - Service
        post:
            operationId: createServiceRequest
            parameters:
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/ServiceConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/createServiceResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Create a new service, the name of the service must be unique in service list.
            tags:
                - Service
    /config/services/{service}:
        delete:
            operationId: deleteServiceRequest
            parameters:
                - in: path
                  name: service
                  required: true
                  type: string
                  x-go-name: Service
            responses:
                "200":
                    $ref: '#/responses/deleteServiceResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Delete service by name.
            tags:
                - Service
        get:
            operationId: getServiceRequest
            parameters:
                - in: path
                  name: service
                  required: true
                  type: string
                  x-go-name: Service
            responses:
                "200":
                    $ref: '#/responses/getServiceResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Get service.
            tags:
                - Service
        put:
            operationId: updateServiceRequest
            parameters:
                - in: path
                  name: service
                  required: true
                  type: string
                  x-go-name: Service
                - in: body
                  name: data
                  schema:
                    $ref: '#/definitions/ServiceConfig'
                  x-go-name: Data
            responses:
                "200":
                    $ref: '#/responses/updateServiceResponse'
            security:
                - basicAuth:
                    - '[]'
            summary: Update service by name, the service must already exist.
            tags:
                - Service
produces:
    - application/json
responses:
    createAdmissionResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    createAutherResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    createBypassResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    createChainResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    createConnLimiterResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    createHopResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    createHostsResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    createIngressResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    createLimiterResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    createObserverResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    createRateLimiterResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    createRecorderResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    createResolverResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    createRouterResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    createSDResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    createServiceResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    deleteAdmissionResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    deleteAutherResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    deleteBypassResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    deleteChainResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    deleteConnLimiterResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    deleteHopResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    deleteHostsResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    deleteIngressResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    deleteLimiterResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    deleteObserverResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    deleteRateLimiterResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    deleteRecorderResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    deleteResolverResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    deleteRouterResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    deleteSDResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    deleteServiceResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    getAdmissionListResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/admissionList'
    getAdmissionResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/AdmissionConfig'
    getAutherListResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/autherList'
    getAutherResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/AutherConfig'
    getBypassListResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/bypassList'
    getBypassResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/BypassConfig'
    getChainListResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/chainList'
    getChainResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/ChainConfig'
    getConfigResponse:
        description: successful operation.
        headers:
            Config: {}
        schema:
            $ref: '#/definitions/Config'
    getConnLimiterListResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/connLimiterList'
    getConnLimiterResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/LimiterConfig'
    getHopListResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/hopList'
    getHopResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/HopConfig'
    getHostsListResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/hostsList'
    getHostsResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/HostsConfig'
    getIngressListResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/ingressList'
    getIngressResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/IngressConfig'
    getLimiterListResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/limiterList'
    getLimiterResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/LimiterConfig'
    getObserverListResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/observerList'
    getObserverResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/ObserverConfig'
    getRateLimiterListResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/rateLimiterList'
    getRateLimiterResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/LimiterConfig'
    getRecorderListResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/recorderList'
    getRecorderResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/RecorderConfig'
    getResolverListResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/resolverList'
    getResolverResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/ResolverConfig'
    getRouterListResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/routerList'
    getRouterResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/RouterConfig'
    getSDListResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/sdList'
    getSDResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/SDConfig'
    getServiceListResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/serviceList'
    getServiceResponse:
        description: successful operation.
        schema:
            $ref: '#/definitions/ServiceConfig'
    reloadConfigResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    saveConfigResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    updateAdmissionResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    updateAutherResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    updateBypassResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    updateChainResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    updateConnLimiterResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    updateHopResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    updateHostsResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    updateIngressResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    updateLimiterResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    updateObserverResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    updateRateLimiterResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    updateRecorderResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    updateResolverResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    updateRouterResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    updateSDResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
    updateServiceResponse:
        description: successful operation.
        headers:
            Data: {}
        schema:
            $ref: '#/definitions/Response'
schemes:
    - https
    - http
securityDefinitions:
    basicAuth:
        type: basic
swagger: "2.0"
