# variables in header
header_version:
  description: |
    Specific API microversion used to generate this response.
  in: header
  required: true
  type: string
openstack-api-max-version:
  description: |
    Maximum API microversion supported by this endpoint, eg. "1.1"
  in: header
  required: true
  type: string
openstack-api-min-version:
  description: |
    Minimum API microversion supported by this endpoint, eg. "1.0"
  in: header
  required: true
  type: string
openstack-api-version:
  description: >
    A request SHOULD include this header to indicate to the Watcher API service what
    version the client supports. The server will transform the response object into
    compliance with the requested version, if it is supported, or return a
    406 Not Acceptable error.
    If this header is not supplied, the server will response with server minimum
    supported version.
  in: header
  required: true
  type: string
openstack-request-id:
  description: >
    An unique ID for tracking the request. The request ID associated with the request
    appears in the log lines for that request. By default, the middleware configuration
    ensures that the request ID appears in the log files.
  in: header
  required: false
  type: string

# Path
action_ident:
  description: |
    The UUID of the Action.
  in: path
  required: true
  type: string
actionplan_ident:
  description: |
    The UUID of the Action Plan.
  in: path
  required: true
  type: string
audit_ident:
  description: |
    The UUID or name of the Audit.
  in: path
  required: true
  type: string
audittemplate_ident:
  description: |
    The UUID or name of the Audit Template.
  in: path
  required: true
  type: string
goal_ident:
  description: |
    The UUID or name of the Goal.
  in: path
  required: true
  type: string
scoring_engine_ident:
  description: |
    The UUID or name of the Scoring Engine.
  in: path
  required: true
  type: string
service_ident:
  description: |
    The ID or name of the Service.
  in: path
  required: true
  type: string
strategy_ident:
  description: |
    The UUID or name of the Strategy.
  in: path
  required: true
  type: string

# Query body
limit:
  description: |
    Requests a page size of items. Returns a number of items up to a ``limit``
    value. Use the limit parameter to make an initial limited request and use
    the ID of the last-seen item from the response as the ``marker`` parameter
    value in a subsequent limited request.
  in: query
  required: false
  type: integer
marker:
  description: |
    The ID of the last-seen item. Use the ``limit`` parameter to make an
    initial limited request and use the ID of the last-seen item from the
    response as the ``marker`` parameter value in a subsequent limited request.
  in: query
  required: false
  type: string
r_action_plan:
  description: |
    UUID of the action plan used for filtering.
  in: query
  required: false
  type: string
r_audit:
  description: |
    Optional UUID of an audit, to get only actions for that audit.
  in: query
  required: false
  type: string
r_goal:
  description: |
    The UUID or name of the Goal.
  in: query
  required: false
  type: string
r_strategy:
  description: |
    The UUID or name of the Strategy.
  in: query
  required: false
  type: string
r_type:
  description: |
    Type of data model user want to list. Default type is compute.
    Supported values: compute.
    Future support values: storage, baremetal.
  in: query
  required: false
  type: string
sort_dir:
  description: |
    Sorts the response by the requested sort direction.
    A valid value is ``asc`` (ascending) or ``desc`` (descending).
    Default is ``asc``.
  in: query
  required: false
  type: string
sort_key:
  description: |
    Sorts the response by the this attribute value. Default is ``id``.
  in: query
  required: false
  type: string

# variables in the API response body

# Action
action_action_plan_uuid:
  description: |
    The action plan this action belongs to.
  in: body
  required: true
  type: string
action_description:
  description: |
    Action description.
  in: body
  required: true
  type: string
action_input_parameters:
  description: |
    Input parameters which are used by appropriate action type. For example,
    ``migration`` action takes into account such parameters as
    ``migration_type``, ``destination_node``, ``resource_id`` and
    ``source_node``. To see a list of supported action types and their input
    parameters visit `Action plugins page <https://docs.openstack.org/watcher/latest/contributor/plugin/plugins.html#actions>`_.
  in: body
  required: true
  type: JSON
action_parents:
  description: |
    UUIDs of parent actions.
  in: body
  required: true
  type: array
action_state:
  description: |
    State of Action.
  in: body
  required: true
  type: string
action_type:
  description: |
    Action type based on specific API action. Actions in Watcher are
    pluggable, to see a list of supported action types visit
    `Action plugins page <https://docs.openstack.org/watcher/latest/contributor/plugin/plugins.html#actions>`_.
  in: body
  required: true
  type: string

# Action Plan
actionplan_audit_uuid:
  description: |
    The UUID of the audit this acton plan belongs to.
  in: body
  required: false
  type: string
actionplan_efficacy_indicators:
  description: |
    The list of efficacy indicators associated to this action plan.
  in: body
  required: false
  type: array
actionplan_global_efficacy:
  description: |
    The global efficacy of this action plan.
  in: body
  required: false
  type: array
actionplan_hostname:
  description: |
    Hostname the actionplan is running on
  in: body
  required: false
  type: string
actionplan_state:
  description: |
    State of this action plan. To get more information about states and
    action plan's lifecycle, visit `Action Plan State Machine page <https://docs.openstack.org/watcher/latest/architecture.html#action-plan-state-machine>`_.
  in: body
  required: false
  type: string

# Audit
audit_autotrigger:
  description: |
    Auto execute action plan once audit is succeeded.
  in: body
  required: false
  type: boolean
audit_endtime_req:
  description: |
    The local time after which audit can't be executed.
    It will be converted to UTC time by Watcher.
  in: body
  required: false
  type: string
  min_version: 1.1
audit_endtime_resp:
  description: |
    The UTC time after which audit can't be executed.
  in: body
  required: false
  type: string
  min_version: 1.1
audit_force:
  description: |
    Launch audit even if action plan is ongoing.
  in: body
  required: false
  type: boolean
  min_version: 1.2
audit_goal:
  description: |
    The UUID or name of the Goal.
  in: body
  required: false
  type: string
audit_hostname:
  description: |
    Hostname the audit is running on
  in: body
  required: false
  type: string
audit_interval:
  description: |
    Time interval between audit's execution.
    Can be set either in seconds or cron syntax.
    Should be defined only for CONTINUOUS audits.
  in: body
  required: false
  type: string
audit_name:
  description: |
    Name of this audit.
  in: body
  required: false
  type: string
audit_next_run_time:
  description: |
    The next time audit launch. Defined only for CONTINUOUS audits.
  in: body
  required: false
  type: string
audit_parameters:
  description: |
    The strategy parameters for this audit.
  in: body
  required: false
  type: JSON
audit_starttime_req:
  description: |
    The local time after which audit can be executed in accordance
    with interval. It will be converted to UTC time by Watcher.
  in: body
  required: false
  type: string
  min_version: 1.1
audit_starttime_resp:
  description: |
    The UTC time after which audit can be executed in accordance with interval.
  in: body
  required: false
  type: string
  min_version: 1.1
audit_state:
  description: |
    State of this audit. To get more information about states and
    audit's lifecycle, visit `Audit State Machine page <https://docs.openstack.org/watcher/latest/architecture.html#audit-state-machine>`_.
  in: body
  required: true
  type: string
audit_strategy:
  description: |
    The UUID or name of the Strategy.
  in: body
  required: false
  type: string
audit_type:
  description: |
    Type of this audit. Can only be either ONESHOT or CONTINUOUS.
  in: body
  required: true
  type: string

# Audit Template
audittemplate_description:
  description: |
    Short description of the Audit Template.
  in: body
  required: false
  type: string
audittemplate_goal:
  description: |
    The UUID or name of the Goal.
  in: body
  required: true
  type: string
audittemplate_name:
  description: |
    The name of the Audit template.
  in: body
  required: true
  type: string
audittemplate_scope:
  description: |
    Audit Scope.
  in: body
  required: false
  type: JSON
audittemplate_strategy:
  description: |
    The UUID or name of the Strategy.
  in: body
  required: false
  type: string
audittemplate_uuid:
  description: |
    The UUID of the Audit template.
  in: body
  required: true
  type: string

created_at:
  description: |
    The date and time when the resource was created. The date and time
    stamp format is `ISO 8601 <https://en.wikipedia.org/wiki/ISO_8601>`_
  in: body
  required: true
  type: string
deleted_at:
  description: |
    The date and time when the resource was deleted. The date and time
    stamp format is `ISO 8601 <https://en.wikipedia.org/wiki/ISO_8601>`_
  in: body
  required: true
  type: string

# Goal
goal_display_name:
  description: |
    Localized name of the goal.
  in: body
  required: true
  type: string
goal_efficacy_specification:
  description: |
    Efficacy specifications as result of stategy's execution.
  in: body
  required: true
  type: array
goal_name:
  description: |
    Name of the goal.
  in: body
  required: true
  type: string
goal_uuid:
  description: |
    Unique UUID for this goal.
  in: body
  required: true
  type: string

links:
  description: |
    A list of relative links. Includes the self and bookmark links.
  in: body
  required: true
  type: array

# Data Model Node
node_disk:
  description: |
    The Disk of the node(in GiB).
  in: body
  required: true
  type: integer
node_disk_ratio:
  description: |
    The Disk Ratio of the node.
  in: body
  required: true
  type: float
node_hostname:
  description: |
    The Host Name of the node.
  in: body
  required: true
  type: string
node_memory:
  description: |
    The Memory of the node(in MiB).
  in: body
  required: true
  type: integer
node_memory_ratio:
  description: |
    The Memory Ratio of the node.
  in: body
  required: true
  type: float
node_state:
  description: |
    The State of the node. The value is up or down.
  in: body
  required: true
  type: string
node_uuid:
  description: |
    The Unique UUID of the node.
  in: body
  required: true
  type: string
node_vcpu_ratio:
  description: |
    The Vcpu ratio of the node.
  in: body
  required: true
  type: float
node_vcpus:
  description: |
    The Vcpu of the node.
  in: body
  required: true
  type: integer

# Scoring Engine
scoring_engine_description:
  description: |
    A human readable description of the Scoring Engine.
  in: body
  required: true
  type: string
scoring_engine_metainfo:
  description: |
    A metadata associated with the scoring engine
  in: body
  required: true
  type: string
scoring_engine_name:
  description: |
    The name of the scoring engine.
  in: body
  required: true
  type: string

# Data Model Server
server_disk:
  description: |
    The Disk of the server.
  in: body
  required: true
  type: integer
server_memory:
  description: |
    The Memory of server.
  in: body
  required: true
  type: integer
server_name:
  description: |
    The Name of the server.
  in: body
  required: true
  type: string
server_state:
  description: |
    The State of the server.
  in: body
  required: true
  type: string
server_uuid:
  description: |
    The Unique UUID of the server.
  in: body
  required: true
  type: string
server_vcpus:
  description: |
    The Vcpu of the server.
  in: body
  required: true
  type: integer
# Service
service_host:
  description: |
    The Name of host where service is placed on.
  in: body
  required: true
  type: string
service_id:
  description: |
    The ID of service.
  in: body
  required: true
  type: integer
service_last_seen_up:
  description: |
    The Time when Watcher service sent latest heartbeat.
  in: body
  required: true
  type: string
service_name:
  description: |
    The Name of service like ``watcher-applier``.
  in: body
  required: true
  type: string
service_status:
  description: |
    The State of service. It can be either in ACTIVE or FAILED state.
  in: body
  required: true
  type: string

# Strategy
strategy_check_comment:
  description: |
    Requirement comment.
  in: body
  required: true
  type: string
strategy_check_mandatory:
  description: |
    Whether this requirement mandatory or not.
  in: body
  required: true
  type: boolean
strategy_check_state:
  description: |
    State of requirement for Strategy.
  in: body
  required: true
  type: string or JSON
strategy_check_type:
  description: |
    Type of requirement for Strategy.
  in: body
  required: true
  type: string
strategy_display_name:
  description: |
    Localized name of the strategy.
  in: body
  required: true
  type: string
strategy_name:
  description: |
    Name of the strategy.
  in: body
  required: true
  type: string
strategy_parameters_spec:
  description: |
    Parameters specifications for this strategy.
  in: body
  required: true
  type: JSON
strategy_uuid:
  description: |
    Unique UUID for this strategy.
  in: body
  required: true
  type: string

updated_at:
  description: |
    The date and time when the resource was updated. The date and time
    stamp format is `ISO 8601 <https://en.wikipedia.org/wiki/ISO_8601>`_
  in: body
  required: true
  type: string
uuid:
  description: |
    The UUID for the resource.
  in: body
  required: true
  type: string

# Version
version:
  description: |
    Versioning of this API response, eg. "1.1".
  in: body
  required: true
  type: string
version_description:
  description: |
    Descriptive text about the Watcher service.
  in: body
  required: true
  type: string
version_id:
  description: |
    Major API version, eg, "v1"
  in: body
  required: true
  type: string
versions:
  description: |
    Array of information about currently supported versions.
  in: body
  required: true
  type: array
