---
openapi: "3.0.0"
info:
  version: "1.0.1"
  title: "Ceptor Administration API"
paths:
  /configuration:
    get:
      summary: "Get configuration"
      description: "Retrieves the configuration values, including groups, descriptions,\
        \ extends etc."
      tags:
      - "configuration"
      parameters:
      - name: "active"
        in: "query"
        description: "true to get Active configuration, or false to get uncommitted\
          \ configuration values."
        required: true
        schema:
          type: "boolean"
        allowEmptyValue: false
        deprecated: false
      responses:
        "200":
          description: "Server configuration"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Configuration"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      summary: "Deletes a configuration entry"
      description: "Deletes a single configuration entry for a server"
      tags:
      - "configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Server name"
        required: true
        schema:
          type: "string"
      - name: "group"
        in: "query"
        description: "Group name"
        required: true
        schema:
          type: "string"
      - name: "key"
        in: "query"
        description: "Property name"
        required: true
        schema:
          type: "string"
      responses:
        "201":
          description: "Delete confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    put:
      summary: "Update a configuration entry"
      description: "Updates a single configuration entry for a server"
      tags:
      - "configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Server name"
        required: true
        schema:
          type: "string"
      - name: "group"
        in: "query"
        description: "Group name"
        required: true
        schema:
          type: "string"
      - name: "key"
        in: "query"
        description: "Property name"
        required: true
        schema:
          type: "string"
      - name: "value"
        in: "query"
        required: true
        schema:
          type: "string"
        description: "Property value"
      - name: "description"
        in: "query"
        required: false
        schema:
          type: "string"
        description: "Description of property"
      responses:
        "201":
          description: "Update confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      summary: "Create a new configuration entry"
      description: "Creates a single configuration entry for a server"
      tags:
      - "configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Server name"
        required: true
        schema:
          type: "string"
      - name: "group"
        in: "query"
        description: "Group name"
        required: true
        schema:
          type: "string"
      - name: "key"
        in: "query"
        description: "Property name"
        required: true
        schema:
          type: "string"
      - name: "value"
        in: "query"
        required: true
        schema:
          type: "string"
        description: "Property value"
      - name: "description"
        in: "query"
        required: false
        schema:
          type: "string"
        description: "Description of property"
      responses:
        "201":
          description: "Create confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /configuration/validate:
    get:
      summary: "Validates a potential configuration change"
      description: "Validates a single configuration property change for a server"
      tags:
      - "configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Server name"
        required: true
        schema:
          type: "string"
      - name: "group"
        in: "query"
        description: "Group name"
        required: true
        schema:
          type: "string"
      - name: "key"
        in: "query"
        description: "Property name"
        required: true
        schema:
          type: "string"
      - name: "value"
        in: "query"
        required: true
        schema:
          type: "string"
        description: "Property value"
      responses:
        "200":
          description: "Validation result"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Validation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /configuration/validateall:
    get:
      summary: "Validates all configuration changes before committing them"
      description: "Validates all uncommitted configuration changes - should be called\
        \ before committing to check if any modules has any complaints."
      tags:
      - "configuration"
      responses:
        "200":
          description: "Validation result"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Validation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /configuration/viewchanges:
    get:
      summary: "Gets a diff of any changes made to the configuration not yet committed"
      description: "Gets a diff of any changes made to the configuration as well as\
        \ the complete XML of both the active and uncommitted configuration in case\
        \ there were any differences."
      tags:
      - "configuration"
      responses:
        "200":
          description: "Configuration Info"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ConfigInfo"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /configuration/server:
    post:
      summary: "Create a new configuration server entry"
      description: "Creates a single configuration entry for a server"
      tags:
      - "configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Server name"
        required: true
        schema:
          type: "string"
      - name: "type"
        in: "query"
        description: "Server Type"
        required: true
        schema:
          type: "string"
      - name: "extends"
        in: "query"
        description: "Extends - define which entries this server extends"
        required: false
        schema:
          type: "string"
      - name: "description"
        in: "query"
        required: false
        schema:
          type: "string"
        description: "Description of this server"
      responses:
        "201":
          description: "Create confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    put:
      summary: "Updates a configuration server entry"
      description: "Updates a configuration server entry, modifying its description,\
        \ type or extends"
      tags:
      - "configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Server name"
        required: true
        schema:
          type: "string"
      - name: "type"
        in: "query"
        description: "Server Type"
        required: true
        schema:
          type: "string"
      - name: "extends"
        in: "query"
        description: "Extends - define which entries this server extends"
        required: false
        schema:
          type: "string"
      - name: "description"
        in: "query"
        required: false
        schema:
          type: "string"
        description: "Description of this server"
      responses:
        "201":
          description: "Update confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      summary: "Deletes a configuration server entry"
      description: "Deletes a configuration server entry"
      tags:
      - "configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Server name"
        required: true
        schema:
          type: "string"
      responses:
        "201":
          description: "Delete confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /configuration/group:
    post:
      summary: "Create a new configuration server group entry"
      description: "Creates a single configuration group for a server"
      tags:
      - "configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Server name"
        required: true
        schema:
          type: "string"
      - name: "group"
        in: "query"
        description: "Group Name"
        required: true
        schema:
          type: "string"
      - name: "description"
        in: "query"
        required: false
        schema:
          type: "string"
        description: "Description of this group"
      responses:
        "201":
          description: "Create confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    put:
      summary: "Updates a configuration server group entry"
      description: "Updates a configuration server group entry, modifying its description"
      tags:
      - "configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Server name"
        required: true
        schema:
          type: "string"
      - name: "group"
        in: "query"
        description: "Group name"
        required: true
        schema:
          type: "string"
      - name: "description"
        in: "query"
        required: false
        schema:
          type: "string"
        description: "Description of this server"
      responses:
        "201":
          description: "Update confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      summary: "Deletes a configuration server group entry"
      description: "Deletes a configuration server group entry"
      tags:
      - "configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Server name"
        required: true
        schema:
          type: "string"
      - name: "group"
        in: "query"
        description: "Group name"
        required: true
        schema:
          type: "string"
      responses:
        "201":
          description: "Delete confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /configuration/properties:
    get:
      summary: "Get configuration properties for a particular server"
      description: "Retrieves the configuration properties for a server - the properties\
        \ are resolved according to inheritance so the details (descriptions / groups)\
        \ are not returned, but only the name/value pairs."
      tags:
      - "configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Server name"
        required: true
        schema:
          type: "string"
      - name: "active"
        in: "query"
        description: "true to get Active configuration, or false to get uncommitted\
          \ configuration values."
        required: true
        schema:
          type: "boolean"
        allowEmptyValue: false
        deprecated: false
      responses:
        "200":
          description: "Server configuration"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Properties"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /configuration/commit:
    put:
      summary: "Commit configuration"
      description: "Commits any changes made to the configuration - the configuration\
        \ must be committed before it is active."
      tags:
      - "configuration"
      responses:
        "201":
          description: "Commit confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /configuration/rollback:
    put:
      summary: "Rollback configuration"
      description: "Rolls back any uncommited configuration updates, replacing with\
        \ the current active configuration"
      tags:
      - "configuration"
      responses:
        "201":
          description: "Rollback confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /configuration/reload:
    put:
      summary: "Reload configuration"
      description: "Reloads configuration files from disk"
      tags:
      - "configuration"
      responses:
        "201":
          description: "Reload confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /configuration/history:
    get:
      summary: "Retrieve configuration history"
      description: "Read the history of configuration changes"
      tags:
      - "configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Name of configuration server to retrieve history from"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/History"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /configuration/gateway/destination:
    get:
      summary: "Read a destination within a gateway configuration"
      description: "Reads a single destination in a gateway configuration."
      tags:
      - "gateway configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Name of gateway configuration server entry, e.g. gateways or\
          \ gateway1"
        required: true
        schema:
          type: "string"
      - name: "destinationname"
        in: "query"
        description: "Name of destination name to read"
        required: true
        schema:
          type: "string"
      - name: "isActive"
        in: "query"
        description: "if true, read from the active configuration - otherwise reads\
          \ from the uncommitted one"
        required: false
        schema:
          type: "boolean"
      responses:
        "200":
          description: "Operation entry"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GatewayDestination"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      summary: "Add or update a destination within a gateway configuration"
      description: "Adds or updates a single destination in a gateway configuration\
        \ - if the destination already exists, it is updated, and created if not."
      tags:
      - "gateway configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Name of gateway configuration server entry, e.g. gateways or\
          \ gateway1"
        required: true
        schema:
          type: "string"
      - name: "destinationname"
        in: "query"
        description: "Name of destination name to read"
        required: true
        schema:
          type: "string"
      requestBody:
        description: "Operation entry"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/GatewayDestination"
      responses:
        "201":
          description: "Update confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      summary: "Deletes a destination from a gateway configuration"
      description: "Deletes a single destination from a gateway configuration"
      tags:
      - "gateway configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Name of gateway configuration server entry, e.g. gateways or\
          \ gateway1"
        required: true
        schema:
          type: "string"
      - name: "destinationname"
        in: "query"
        description: "Name of destination"
        required: true
        schema:
          type: "string"
      responses:
        "201":
          description: "Delete confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /configuration/gateway/location:
    get:
      summary: "Read a location within a gateway configuration"
      description: "Reads a single location in a gateway configuration"
      tags:
      - "gateway configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Name of gateway configuration server entry, e.g. gateways or\
          \ gateway1"
        required: true
        schema:
          type: "string"
      - name: "locationname"
        in: "query"
        description: "Name of location to read"
        required: true
        schema:
          type: "string"
      - name: "parent"
        in: "query"
        description: "Names of parents, if any - can decide the place in the hierarchy\
          \ / nested locations that this location is placed."
        required: false
        schema:
          type: "array"
          items:
            type: "string"
      - name: "isActive"
        in: "query"
        description: "if true, read from the active configuration - otherwise reads\
          \ from the uncommitted one"
        required: false
        schema:
          type: "boolean"
      responses:
        "201":
          description: "Location entry"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GatewayLocation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      summary: "Add or update a location within a gateway configuration"
      description: "Adds or updates a single location in a gateway configuration -\
        \ if the location already exists, it is updated, and created if not. Note\
        \ that the entire location with all nested location entries need to be supplied\
        \ - or nested locations need to be created one by one after creating the parent."
      tags:
      - "gateway configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Name of gateway configuration server entry, e.g. gateways or\
          \ gateway1"
        required: true
        schema:
          type: "string"
      - name: "locationname"
        in: "query"
        description: "Name of location to update/create"
        required: true
        schema:
          type: "string"
      - name: "index"
        in: "query"
        description: "Index to place the destination at - can be used to specify where\
          \ the location entry should be placed. If not specified, newly created locations\
          \ will be placed at the end, and updated destinations will keep their current\
          \ place"
        required: false
        schema:
          type: "integer"
      - name: "parent"
        in: "query"
        description: "Names of parents, if any - can decide the place in the hierarchy\
          \ / nested locations that this location is placed."
        required: false
        schema:
          type: "array"
          items:
            type: "string"
      requestBody:
        description: "Location entry"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/GatewayLocation"
      responses:
        "201":
          description: "Update confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      summary: "Deletes a location from a gateway configuration"
      description: "Deletes a single location from a gateway configuration"
      tags:
      - "gateway configuration"
      parameters:
      - name: "servername"
        in: "query"
        description: "Name of gateway configuration server entry, e.g. gateways or\
          \ gateway1"
        required: true
        schema:
          type: "string"
      - name: "locationname"
        in: "query"
        description: "Name of location"
        required: true
        schema:
          type: "string"
      - name: "parent"
        in: "query"
        description: "Names of parents, if any - can decide the place in the hierarchy\
          \ / nested locations that this location is placed."
        required: false
        schema:
          type: "array"
          items:
            type: "string"
      responses:
        "201":
          description: "Delete confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /servers:
    get:
      summary: "List servers/services"
      description: "Lists all configured servers/services and their current status"
      tags:
      - "servers"
      responses:
        "200":
          description: "Servers"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Servers"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /server/{servername}/status:
    get:
      summary: "Get status for a server"
      description: "Gets the status for a particular server"
      tags:
      - "servers"
      parameters:
      - name: "servername"
        in: "path"
        description: "Server name"
        required: true
        schema:
          type: "string"
      - name: "action"
        in: "query"
        description: "Action to perform, if any"
        required: false
        schema:
          type: "string"
      responses:
        "200":
          description: "Status"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Status"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /server/{servername}/start:
    put:
      summary: "Start a server/service"
      description: "Starts a server / service"
      tags:
      - "servers"
      parameters:
      - name: "servername"
        in: "path"
        description: "Server name"
        required: true
        schema:
          type: "string"
      responses:
        "201":
          description: "OK"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /server/{servername}/stop:
    put:
      summary: "Stops a server/service"
      description: "Stops a server / service"
      tags:
      - "servers"
      parameters:
      - name: "servername"
        in: "path"
        description: "Server name"
        required: true
        schema:
          type: "string"
      responses:
        "201":
          description: "OK"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /server/{servername}/disconnect:
    put:
      summary: "Disconnect a server/service"
      description: "Disconnect a server / service"
      tags:
      - "servers"
      parameters:
      - name: "servername"
        in: "path"
        description: "Server name"
        required: true
        schema:
          type: "string"
      responses:
        "201":
          description: "OK"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /server/{servername}/jvmdump:
    put:
      summary: "Obtains JVM threaddump for a server"
      description: "Creates a JVM dump (threaddump and GC status)"
      tags:
      - "servers"
      parameters:
      - name: "servername"
        in: "path"
        description: "Server name"
        required: true
        schema:
          type: "string"
      responses:
        "201":
          description: "OK"
        default:
          description: "unexpected error"
          content:
            text/plain:
              schema:
                type: "string"
  /server/{servername}/heapdump:
    put:
      summary: "Performs a heapdump on a server"
      description: "Asks the server to perform a heapdump in the specified target\
        \ directory"
      tags:
      - "servers"
      parameters:
      - name: "servername"
        in: "path"
        description: "Server name"
        required: true
        schema:
          type: "string"
      - name: "directory"
        in: "query"
        description: "Directory name"
        required: false
        schema:
          type: "string"
      responses:
        "201":
          description: "OK"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /ping:
    post:
      summary: "List servers/services"
      description: "Pings all servers, returning a list of servers and their status,\
        \ along with a properties object that the  authentication plugins at all available\
        \ sessioncontrollers have filled in. The input properties is passed to each\
        \ authentication plugin which can use the information to determine what to\
        \ do - e.g. to actively ping backend servers or just return previously cached\
        \ data."
      tags:
      - "servers"
      requestBody:
        description: "Properties passed to authentication plugins"
        content:
          application/json:
            schema:
              type: "object"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PingResult"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /apimgr/apigroups:
    get:
      summary: "List all API Groups"
      description: "List all API Group definitions"
      tags:
      - "api management"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                type: "array"
                items:
                  $ref: "#/components/schemas/APIGroup"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /apimgr/apigroup/{groupid}:
    get:
      summary: "Read the contents of an API Group"
      description: "Reads an API Group definition"
      tags:
      - "api management"
      parameters:
      - name: "groupid"
        in: "path"
        description: "API Group ID"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/APIGroup"
        "404":
          description: "Not Found"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      summary: "Delete an API Group"
      description: "Deletes an API Group"
      tags:
      - "api management"
      parameters:
      - name: "groupid"
        in: "path"
        description: "API Group ID"
        required: true
        schema:
          type: "string"
      responses:
        "201":
          description: "Delete confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /apimgr/apigroup:
    post:
      summary: "Create API Group"
      description: "Creates a new API group"
      tags:
      - "api management"
      requestBody:
        description: "API Group to create"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/APIGroup"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/APIGroup"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    put:
      summary: "Update API Group"
      description: "Updates an existing API Group"
      tags:
      - "api management"
      requestBody:
        description: "API Group to update"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/APIGroup"
      responses:
        "201":
          description: "Update confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /apimgr/apis/{groupid}:
    get:
      summary: "List all APIs within a specific API Group"
      description: "Returns all APIs within a specific API Group"
      tags:
      - "api management"
      parameters:
      - name: "groupid"
        in: "path"
        description: "API Group ID"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                type: "array"
                items:
                  $ref: "#/components/schemas/API"
        "404":
          description: "Not Found"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /apimgr/api/{apiid}:
    get:
      summary: "Read the contents of an API"
      description: "Reads an API definition"
      tags:
      - "api management"
      parameters:
      - name: "apiid"
        in: "path"
        description: "API ID"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API"
        "404":
          description: "Not Found"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      summary: "Delete an API"
      description: "Deletes an API"
      tags:
      - "api management"
      parameters:
      - name: "apiid"
        in: "path"
        description: "API ID"
        required: true
        schema:
          type: "string"
      responses:
        "201":
          description: "Delete confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /apimgr/api:
    post:
      summary: "Create API"
      description: "Creates a new API"
      tags:
      - "api management"
      requestBody:
        description: "API to create"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/API"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    put:
      summary: "Update API"
      description: "Updates an existing API"
      tags:
      - "api management"
      requestBody:
        description: "API to update"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/API"
      responses:
        "201":
          description: "Update confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /apimgr/apiversions/{apiid}:
    get:
      summary: "List all API Versions within an API"
      description: "List all API Version definitions within the specified API"
      tags:
      - "api management"
      parameters:
      - name: "apiid"
        in: "path"
        description: "API ID"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                type: "array"
                items:
                  $ref: "#/components/schemas/APIVersion"
        "404":
          description: "Not Found"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /apimgr/apiversion/{apiversionid}:
    get:
      summary: "Read the contents of an API Version"
      description: "Reads an API Version definition"
      tags:
      - "api management"
      parameters:
      - name: "apiversionid"
        in: "path"
        description: "API Version ID"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/APIVersion"
        "404":
          description: "Not Found"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      summary: "Delete an API Version"
      description: "Deletes an API Version"
      tags:
      - "api management"
      parameters:
      - name: "apiversionid"
        in: "path"
        description: "API Version ID"
        required: true
        schema:
          type: "string"
      responses:
        "201":
          description: "Delete confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /apimgr/apiversion:
    post:
      summary: "Create API Version"
      description: "Creates a new API Version"
      tags:
      - "api management"
      requestBody:
        description: "API Version to create"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/APIVersion"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/APIVersion"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    put:
      summary: "Update API Version"
      description: "Updates an existing API Version"
      tags:
      - "api management"
      requestBody:
        description: "API Version to update"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/APIVersion"
      responses:
        "201":
          description: "Update confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /apimgr/search:
    post:
      summary: "Search for API Groups, APIs or API Versions"
      description: "Search for APIs"
      tags:
      - "api management"
      requestBody:
        description: "API Search parameters"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/APISearchParameters"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/APISearchResults"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /apimgr/import:
    post:
      summary: "Import from a .zip file"
      description: "Imports API definitions, API Groups and versions from a .zip file"
      tags:
      - "api management"
      requestBody:
        description: ".ZIP file"
        content:
          application/x-zip-compressed:
            schema:
              type: "string"
              format: "binary"
      responses:
        "201":
          description: "OK"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /apimgr/export:
    get:
      summary: "Full Export to a .zip file"
      description: "Export API config, API definitions, API Groups and version along\
        \ with Partners, Applications and Developers to a .zip file"
      tags:
      - "api management"
      responses:
        "200":
          description: "OK"
          content:
            application/x-zip-compressed:
              schema:
                type: "string"
                format: "binary"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /apimgr/partialexport:
    post:
      summary: "Export selected data to a .zip file"
      description: "Selectively export API config, API definitions, API Groups and\
        \ versions as well as Partners, Applications and Developers to a .zip file"
      tags:
      - "api management"
      requestBody:
        description: "Export parameters, specify what to export"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ExportParameters"
      responses:
        "200":
          description: "OK"
          content:
            application/x-zip-compressed:
              schema:
                type: "string"
                format: "binary"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /haspermission:
    get:
      summary: "Check permission/ACL"
      description: "Check if permission to a resource/ACL is allowed"
      tags:
      - "other"
      parameters:
      - name: "resource"
        in: "query"
        description: "Resource / ACL to check permission for"
        required: true
        schema:
          type: "string"
        allowEmptyValue: false
        deprecated: false
      - name: "permission"
        in: "query"
        description: "Permission, e.g. read, write or execute"
        required: true
        schema:
          type: "string"
        allowEmptyValue: false
        deprecated: false
      - name: "failIfNotFound"
        in: "query"
        description: "If permission is not found, consider it a failure instead of\
          \ treating it as an unprotected resource."
        required: true
        schema:
          type: "boolean"
        allowEmptyValue: false
        deprecated: false
      responses:
        "200":
          description: "Permission OK"
        "403":
          description: "Permission Denied"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /webserverstatus:
    get:
      summary: "Show status of all defined target servers"
      description: "Get status for all defined destinations/target servers from gateways,\
        \ and alternateservers for dispatchers"
      tags:
      - "other"
      responses:
        "200":
          description: "Status"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ArrayOfWebServerStatus"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    put:
      summary: "Change status of webserver (mark as down/unavailable)"
      description: "Mark one or more servers as down or unavailable"
      tags:
      - "other"
      parameters:
      - name: "gateway"
        in: "query"
        description: "Gateway name pattern to change for - use 'all' as an alias for\
          \ * - defaults to all"
        required: false
        schema:
          type: "string"
        allowEmptyValue: false
        deprecated: false
      - name: "destination"
        in: "query"
        description: "Name of destination - use * or 'all' as an alias for * - defaults\
          \ to all"
        required: false
        schema:
          type: "string"
        allowEmptyValue: false
        deprecated: false
      - name: "webserver"
        in: "query"
        description: "WebServer pattern to change for - use * or 'all' as an alias\
          \ for *"
        required: true
        schema:
          type: "string"
        allowEmptyValue: false
        deprecated: false
      - name: "unavailableForNewSessions"
        in: "query"
        description: "Set to true to mark as unavailable for new sessions"
        required: true
        schema:
          type: "boolean"
        allowEmptyValue: false
        deprecated: false
      - name: "unavailable"
        in: "query"
        description: "Set to true to mark as unavailable for all requests"
        required: true
        schema:
          type: "boolean"
        allowEmptyValue: false
        deprecated: false
      responses:
        "200":
          description: "Status"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ArrayOfWebServerStatus"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /action:
    get:
      summary: "Lists all actions"
      description: "Lists all available actions"
      tags:
      - "actions"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                type: "array"
                items:
                  $ref: "#/components/schemas/Action"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      summary: "Create an Action"
      description: "Creates a new Action"
      tags:
      - "actions"
      requestBody:
        description: "Action to create"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Action"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Action"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    put:
      summary: "Update an Action"
      description: "Updates an existing Action"
      tags:
      - "actions"
      requestBody:
        description: "Action to update"
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Action"
      responses:
        "201":
          description: "Update confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /action/{actionid}:
    get:
      summary: "Read the contents of an Action"
      description: "Reads an API Version definition"
      tags:
      - "actions"
      parameters:
      - name: "actionid"
        in: "path"
        description: "Action ID"
        required: true
        schema:
          type: "string"
      responses:
        "200":
          description: "OK"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Action"
        "404":
          description: "Not Found"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    delete:
      summary: "Delete an Action"
      description: "Deletes an API Version"
      tags:
      - "actions"
      parameters:
      - name: "actionid"
        in: "path"
        description: "Action ID"
        required: true
        schema:
          type: "string"
      responses:
        "201":
          description: "Delete confirmation"
        default:
          description: "unexpected error"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
components:
  schemas:
    Properties:
      description: "Contains name/value pairs"
      type: "object"
    Configuration:
      type: "object"
    ServiceState:
      description: "Current status"
      type: "object"
      properties:
        state:
          description: "Current state"
          type: "string"
        connection_state:
          description: "Connection state"
          type: "string"
    Servers:
      type: "array"
      description: "Array of servers/services"
      items:
        $ref: "#/components/schemas/Server"
    Server:
      description: "A server or service defined within Ceptor - can be a concrete\
        \ implementation such as a gateway1 or configserver1, or it can be an abstract\
        \ definition which contain configuration properties that are inherited by\
        \ concrete implementations."
      type: "object"
      required:
      - "name"
      - "type"
      - "status"
      properties:
        name:
          description: "Name of service"
          type: "string"
        alias:
          description: "Alias of service"
          type: "string"
        type:
          description: "Server/Service type"
          type: "string"
        status:
          $ref: "#/components/schemas/ServiceState"
        route_node_name:
          description: "Unique for this instance - contains the route to the service\
            \ via the configuration servers"
          type: "string"
        instance_uuid:
          description: "Unique ID for this instance"
          type: "string"
        connections:
          description: "Describes the connections from this component to other components"
          type: "object"
          properties:
            agent:
              description: "Connections to session controllers"
              type: "array"
              items:
                description: "Instance UUID of session controller"
                type: "string"
            gateway_destinations:
              type: "array"
              items:
                description: "A list of the gateways destination, and their current\
                  \ status"
                type: "object"
                properties:
                  name:
                    description: "Destination name"
                    type: "string"
                  description:
                    description: "Description of the destination"
                    type: "string"
                  hosts:
                    description: "A list of current hosts / target servers and their\
                      \ status"
                    type: "array"
                    items:
                      type: "object"
                      properties:
                        name:
                          description: "Name of host / target server"
                          type: "string"
                        scheme:
                          description: "Scheme, http or https"
                          type: "string"
                        host:
                          description: "Hostname or IP Addresss of server"
                          type: "string"
                        port:
                          description: "TCP port number of server"
                          type: "integer"
                        marked.unavailable:
                          description: "True, if this host is currently marked as\
                            \ being unavailable"
                          type: "boolean"
                        marked.unavailable.newusers:
                          description: "True, if this host is currently marked as\
                            \ being unavailable for new users/sessions"
                          type: "boolean"
                        available:
                          description: "True, if this host is currently available\
                            \ and considered working"
                          type: "boolean"
                        last.accessed.at:
                          description: "Last accessed at (milliseconds since 1/1 1970)"
                          type: "number"
                          format: "int64"
                        problem.reason:
                          description: "If server is not available or not working,\
                            \ this contains the reason"
                          type: "string"
        memory_free:
          description: "The amount of memory free, in kilobytes"
          type: "integer"
          format: "int64"
        memory_total:
          description: "The total amount of memory available, in kilobytes"
          type: "integer"
          format: "int64"
        memory_used:
          description: "The amount of memory used, in kilobytes"
          type: "integer"
          format: "int64"
        memory_max:
          description: "The maximum amount of memory available, in kilobytes"
          type: "integer"
          format: "int64"
        cpu_system:
          description: "CPU usage in system. Note that this is a snapshot and can\
            \ be highly inaccurate depending on JVM and operating system."
          type: "number"
          format: "double"
        cpu_process:
          description: "CPU usage in process. Note that this is a snapshot and can\
            \ be highly inaccurate depending on JVM and operating system."
          type: "number"
          format: "double"
    Status:
      type: "object"
      properties:
        name:
          description: "Server / Service name"
          type: "string"
        alias:
          description: "Alias, if defined"
          type: "string"
        status:
          description: "Server status text, in HTML"
          type: "string"
        state:
          $ref: "#/components/schemas/ServiceState"
        ping_time:
          description: "Number of milliseconds it took to ping this service from the\
            \ configuration server."
          type: "integer"
        properties:
          description: "Additional properties for the service"
          type: "object"
        events:
          description: "List of 'significant' events, such as connect/disconnects,\
            \ restarts, config updates etc. for this service."
          type: "array"
          items:
            description: "Event that has occurred"
            type: "string"
    History:
      type: "object"
    Validation:
      type: "object"
    ConfigInfo:
      type: "object"
      required:
      - "has_uncommitted_changes"
      properties:
        has_uncommitted_changes:
          type: "boolean"
          description: "True, if any changes exists between the active and uncommitted\
            \ configuration"
        diff:
          description: "Contains a string in diff format if any differences between\
            \ the active and uncommitted configuration exists"
          type: "string"
        active_configuration:
          description: "The complete XML of the active configuration - only present\
            \ if there are differences"
          type: "string"
        uncommitted_configuration:
          description: "The complete XML of the uncommitted configuration - only present\
            \ if there are differences"
          type: "string"
        active_configuration_error:
          description: "If serialization of the active configuration failed, this\
            \ contains the reason for the failure"
          type: "string"
        uncommitted_configuration_error:
          description: "If serialization of the uncommitted configuration failed,\
            \ this contains the reason for the failure"
          type: "string"
    GatewayDestination:
      type: "object"
      description: "See https://docs.ceptor.io for detailed description of gateway\
        \ destinations"
    GatewayLocation:
      type: "object"
      description: "See https://docs.ceptor.io for detailed description of gateway\
        \ locations"
    APIGroup:
      type: "object"
      description: "An API Group contains a number of APIs - an API Group is used\
        \ to divide APIs into logical sections or groups - and read/write access to\
        \ a group can be limited to certain groups of API Administrators/developers."
      properties:
        id:
          type: "string"
          description: "Unique ID for this API Group"
        name:
          type: "string"
          description: "A displayable name for the API Group"
        description:
          type: "string"
          description: "Textual description of the API Group"
        apiids:
          type: "array"
          description: "List of API IDs identifying all APIs that are currently within\
            \ the group"
          items:
            description: "API ID"
            type: "string"
        tags:
          type: "array"
          description: "Tags used for searching, just plain strings which makes it\
            \ easier to tag individual groups with common names."
          items:
            description: "Tag name"
            type: "string"
        restrict.access.read:
          type: "array"
          description: "List of groups names - if any are defined, a users needs to\
            \ have one of these groups in order to be able to read the group itself,\
            \ or any APIs and API versions inside it"
          items:
            description: "Group name"
            type: "string"
        restrict.access.write:
          type: "array"
          description: "List of groups names - if any are defined, a users needs to\
            \ have one of these groups in order to be able to update the group itself,\
            \ or any APIs and API versions inside it"
          items:
            description: "Group name"
            type: "string"
    API:
      type: "object"
      description: "An API is defined within an API Group - an API can have multiple\
        \ APIVersions, where each version is an actual implementation of an API."
      properties:
        id:
          type: "string"
          description: "Unique ID for this API"
        groupid:
          type: "string"
          description: "ID of the API Group that this API is defined within"
        name:
          type: "string"
          description: "A displayable name for the API"
        description:
          type: "string"
          description: "Textual description of the API"
        versionids:
          type: "array"
          description: "List of API Version IDs identifying all API Verions that are\
            \ currently within the API"
          items:
            description: "APIVersion ID"
            type: "string"
        tags:
          type: "array"
          description: "Tags used for searching, just plain strings which makes it\
            \ easier to tag individual APIs with common names."
          items:
            description: "Tag name"
            type: "string"
        subscription.required:
          type: "boolean"
          description: "If true, subscriptions are required in order to access any\
            \ API Versions inside this API."
        subscriptionplans:
          type: "array"
          description: "List of subscription plan IDs that can be selected for this\
            \ API when subscribing to it."
          items:
            type: "string"
            description: "Subscription Plan ID"
    APIVersion:
      type: "object"
      description: "An APIVersion is a specific version of an API - e.g. 1, 1.1 or\
        \ 2 - an API can have many versions concurrently, where some might be published\
        \ and others not."
      properties:
        id:
          type: "string"
          description: "Unique ID for this APIVersion"
        apiid:
          type: "string"
          description: "ID of the API that this APIVersion is defined within"
        name:
          type: "string"
          description: "A displayable name for the API Version"
        description:
          type: "string"
          description: "Textual description of the API Version"
        tags:
          type: "array"
          description: "Tags used for searching, just plain strings which makes it\
            \ easier to tag individual Groups, APIs or API Verions with common names."
          items:
            description: "Tag name"
            type: "string"
        basepath:
          type: "string"
          description: "Define the base path for this API, e.g. /myapi/v1 - when an\
            \ API is published to an environment, the environment definition contains\
            \ the full URL - e.g. if an environment has URL: https://api.ceptor.io/sandbox/\
            \ and the API Version has base path /myapi/v1 then the full path to the\
            \ API becomes https://api.ceptor.io/sandbox/myapi/v1"
        apitype:
          type: "string"
          description: "API Type, openapi, soap or plainhttp"
        cors:
          type: "boolean"
          description: "If true, CORS headers are automatically created and added\
            \ to the responses, making it possible to use this API within a browser."
        private:
          type: "boolean"
          description: "If true, this API is private and will not be visible in the\
            \ developer portal - it can still be called depending on security / authorization\
            \ settings, but it will not be visible in the portal."
        documentation:
          type: "string"
          description: "Can contain any HTML - this documentation can be viewed inside\
            \ the developer portal - it is a good place to put general information\
            \ about the API version, or to provide links to external sites where implementation,\
            \ users guide etc. can be found."
        openapispec:
          type: "object"
          description: "OpenAPI specification for this API, if any"
        implementation:
          type: "object"
          description: "Contains the implementation details for this API and possibly\
            \ for individual operations - this is the actual implementation that decides\
            \ what happens when the API is called - it could be to proxy the API towards\
            \ a destination / backend service, or it might be to implement the API\
            \ in a script or a set of pipelines/tasks."
        security:
          type: "object"
          description: "Contains information on any security restrictions for this\
            \ API."
        deployed:
          type: "array"
          description: "Contains information about in which environments this API\
            \ is deployed/published."
          items:
            type: "string"
            description: "Environment ID"
    APISearchParameters:
      type: "object"
      properties:
        partnerid:
          description: "Search for APIs subsribed to a particular partner ID"
          type: "string"
        searchstring:
          description: "The string to search for"
          type: "string"
        deployed:
          description: "True, if only deployed API Versions should be matched."
          type: "boolean"
        developerportal:
          description: "True, if search is made from developer portal"
          type: "boolean"
        subscription:
          type: "string"
        type:
          description: "API Type, openapi, soap or plainhttp"
          type: "string"
        environment.name:
          description: "Name of environment"
          type: "string"
        basepath:
          description: "Pattern that basepath must match"
          type: "string"
    APISearchResults:
      type: "object"
      properties:
        groups:
          type: "array"
          items:
            $ref: "#/components/schemas/APIGroup"
        apis:
          type: "array"
          items:
            $ref: "#/components/schemas/API"
        apiversions:
          type: "array"
          items:
            $ref: "#/components/schemas/APIVersion"
    ExportParameters:
      type: "object"
      properties:
        configuration:
          type: "boolean"
          description: "Specify if API Manager Configuration, containing rate limits,\
            \ subscription plans and environments should be exported."
        partners:
          type: "boolean"
          description: "Specify if Partners, Partner Applications and Developers should\
            \ be exported too."
        groups:
          description: "List of API Group IDs to export"
          type: "array"
          items:
            type: "string"
        apis:
          description: "List of API IDs to export"
          type: "array"
          items:
            type: "string"
        versions:
          description: "List of API Version IDs to export"
          type: "array"
          items:
            type: "string"
    PingResult:
      type: "object"
      properties:
        systemname:
          description: "Name of system"
          type: "string"
        version:
          description: "System version"
          type: "string"
        timestamp:
          description: "Build timestamp"
          type: "string"
        copyright:
          description: "Copyright"
          type: "string"
        hostname:
          description: "Hostname of the configuration server"
          type: "string"
        ip:
          description: "IP address of the configuration server"
          type: "string"
        services:
          description: "List of services/servers"
          type: "array"
          items:
            $ref: "#/components/schemas/Server"
    ActionComment:
      type: "object"
      description: "A comment to an Action"
      properties:
        created_at:
          type: "number"
          format: "long"
          description: "Timestamp this comment was created at - Milliseconds since\
            \ 1/1 1970 UTC"
        created_by:
          type: "string"
          description: "Userid of user that created the comment"
        text:
          type: "string"
          description: "Comment text"
    Action:
      type: "object"
      description: "An Action is a message/action to an Administrator - it can have\
        \ different forms, e.g. a TODO list item, or a subscription request from a\
        \ client that must be approved or rejected."
      properties:
        id:
          type: "string"
          description: "Action ID"
        type:
          type: "string"
          description: "Type of Action"
          enum:
          - "subscriptionrequest"
          - "todo"
          - "error"
          - "warning"
        created_at:
          type: "number"
          format: "long"
          description: "Timestamp this Action was created at - Milliseconds since\
            \ 1/1 1970 UTC"
        last_updated_at:
          type: "number"
          format: "long"
          description: "Timestamp this Action was last updated at - Milliseconds since\
            \ 1/1 1970 UTC"
        title:
          type: "string"
          description: "Title of this action"
        text:
          type: "string"
          description: "Action text"
        comments:
          type: "array"
          items:
            $ref: "#/components/schemas/ActionComment"
        cancelled_by_developer:
          description: "True if this request has been cancelled by a Partner Developer.\
            \ Only for subscriptionrequest"
          type: "boolean"
        partner_application_id:
          description: "Application ID. Only for subscriptionrequest"
          type: "string"
        apiid:
          description: "API ID. Only for subscriptionrequest"
          type: "string"
        subscription_plan_id:
          description: "Subscription Plan ID. Only for subscriptionrequest"
          type: "string"
        rejected_by_admin:
          description: "True, if request has been rejected by administrator. Only\
            \ for subscriptionrequest"
          type: "boolean"
        approved_by_admin:
          description: "True, if request has been approved by administrator. Only\
            \ for subscriptionrequest"
          type: "boolean"
    ArrayOfWebServerStatus:
      description: "A list of statuses for each gateway/dispatcher"
      type: "array"
      items:
        $ref: "#/components/schemas/WebServerStatus"
    WebServerStatus:
      description: "Contains status for target/servers for either a gateway or a dispatcher"
      properties:
        gatewayName:
          type: "string"
          description: "Name of gateway (or dispatcher)"
        destinations:
          type: "array"
          description: "List of destinations (or alternateservers for dispatcher)"
          items:
            $ref: "#/components/schemas/Destination"
    Destination:
      properties:
        name:
          type: "string"
          description: "Name of destination (or alternateserver for dispatcher)"
        servers:
          description: "List of servers/targets and their status"
          type: "array"
          items:
            $ref: "#/components/schemas/TargetServerStatus"
    TargetServerStatus:
      required:
      - "server"
      - "webserver"
      - "isDown"
      - "isUnavailable"
      - "isUnavailableForNewSessions"
      - "lastCheckedAt"
      - "lastUsedAt"
      properties:
        server:
          description: "Server hostname or IP"
          type: "string"
        webserver:
          description: "Name of server"
          type: "string"
        sessions:
          description: "Number of sessions towards this server"
          type: "integer"
          format: "int32"
        isDown:
          description: "Is this marked as being down?"
          type: "boolean"
        isUnavailableForNewSessions:
          description: "Is this marked as being unavailable for new sessions?"
          type: "boolean"
        isUnavailable:
          description: "Is this marked as being unavailable for all requests?"
          type: "boolean"
        lastDownException:
          description: "Exception that caused the server to be marked as down"
          type: "string"
        lastCheckedAt:
          type: "number"
          format: "long"
          description: "Timestamp last checked at - Milliseconds since 1/1 1970 UTC"
        lastUsedAt:
          type: "number"
          format: "long"
          description: "Timestamp last used at - Milliseconds since 1/1 1970 UTC"
        currentSimultaneousRequests:
          type: "integer"
          format: "int32"
        weblogicJWMID:
          type: "string"
    Error:
      required:
      - "code"
      - "message"
      properties:
        code:
          type: "integer"
          format: "int32"
        message:
          type: "string"
  securitySchemes:
    client_id_secret:
      type: "http"
      scheme: "basic"
      description: "Basic authentication using client_id and client_secret from API\
        \ Partner Application"
security:
- client_id_secret: []
servers:
- url: "https://127.0.0.1:9443/admin/v1"
  description: "Internal APIs are exposed here, such as APIs for Administration"