# variables in header
request_id:
  description: |
    A unique ID for tracking service request. The request ID associated
    with the request by default appears in the service logs.
  in: header
  required: true
  type: UUID

# variables in path
abandon:
  description: |
    Indicates how to delete environment.
    ``True`` is used when just database must be cleaned.
    ``False`` is used if all resources used by environment must be destroyed.
  in: path
  required: false
  default: false
  type: boolean
action_id_url:
  description: |
    The UUID of the action to be executed on the deployed environment.
  in: path
  required: true
  type: string
category_id_url:
  description: |
    The UUID of the category.
  in: path
  required: true
  type: string
env_id_url:
  description: |
    The UUID of the environment.
  in: path
  required: true
  type: string
env_model_path:
  description: |
    Allows to get a specific section of the model, for example
    ``defaultNetworks``, ``region`` or ``?`` or any of the subsections.
  in: path
  required: false
  type: string
env_name_update:
  description: |
    A name for the environment. Name must be at least
    one non-white space symbol.
  in: path
  required: true
  type: string
pkg_id_url:
  description: |
    The UUID of the package.
  in: path
  required: true
  type: string
service_id_url:
  description:
    The UUID of a service belonging to an environment template.
  in: path
  required: true
  type: string
session_id_url:
  description: |
    The UUID of the session.
  in: path
  required: true
  type: string
task_id_url:
  description: |
    The UUID of the task associated with an action executed on a deployed
    environment.
  in: path
  required: true
  type: string
template_id_url:
  description: |
    The UUID of the environment template.
  in: path
  required: true
  type: string
template_is_public_url:
  description: |
    Indicates whether public environment templates are listed or not. The
    following options are possible:

    - ``True``. Public environments templates from all projects are listed.
    - ``False``. Private environments templates from current project are
      listed.
    - ``empty``. All project templates plus public templates from all projects.
      are listed
  in: path
  required: false
  default: false
  type: boolean

# variables in query
all_tenants:
  description: |
    Indicates whether environments from all projects are listed.
    ``True`` environments from all projects are listed. Admin user required.
    ``False`` environments only from current project are listed (default like
    option unspecified).
  in: query
  required: false
  default: false
  type: boolean
catalog:
  description: |
    If ``false`` (default) - search packages, that current user can edit
    (own for non-admin, all for admin). If ``true`` - search packages,
    that current user can deploy (i.e. his own + public).
  in: query
  required: false
  default: false
  type: boolean
category:
  description: |
    Allows to filter by categories.
  in: query
  required: false
  type: string
class_name:
  description: |
    Search only for packages, that use specified class.
  in: query
  required: false
  type: string
fqn:
  description: |
    Allows to filter by fully qualified name.
  in: query
  required: false
  type: string
include_disabled:
  description: |
    Include disabled packages in the result.
  in: query
  required: false
  default: false
  type: boolean
limit:
  description: |
    When present the maximum number of results returned will not exceed
    the specified value. The typical pattern of limit and marker is to
    make an initial limited request and then to use the ID of the last
    package from the response as the marker parameter in a
    subsequent limited request.
  in: query
  required: false
  type: string
marker:
  description: |
    A package identifier marker may be specified. When present only
    packages which occur after the identifier ID will be listed
  in: query
  required: false
  type: string
order_by:
  description: |
    Allows to sort packages by ``fqn``, ``name``, ``created``.
    Created is default value.
  in: query
  required: false
  type: string
owned:
  description: |
    Search only from packages owned by current project.
  in: query
  required: false
  default: false
  type: boolean
pkg_filters:
  description: |
      The filters that you want to use to search for packages in the
      application catalog. If no filters query parameter is specified, the
      application catalog API returns all packages allowed by the policy
      settings. By using filters parameter, the API returns only the requested
      set of packages that meet the filters. The list of filters includes:

      * limit: the maximum number of packages to return
      * type: the package type
      * id: the package id
      * category: the package category
      * tag: the package tag
      * class_name: the package class name
      * fqn: the package fully qualified name
      * name: the package name
  in: query
  required: false
  type: string
pkg_id_query:
  description: |
    Allows to filter by package id.
  in: query
  required: false
  type: string
pkg_name_query:
  description: |
    Allows to filter by package name.
  in: query
  required: false
  type: string
pkg_type_query:
  description: |
    Allows to filter package by type, e.g. ``application``, ``library``.
  in: query
  required: false
  type: string
search:
  description: |
    Gives opportunity to search specified data by all the
    package parameters and order packages.
  in: query
  required: false
  type: string
tenant:
  description: |
    Indicates environments from specified tenant are listed. Admin user required.
  in: query
  required: false
  type: string

# variables in body
acquired_by:
  description: |
    The session that is currently `deploying` the environment. Returns the
    `first` session id that is in ``DEPLOYING`` state for the environment.
  in: body
  required: true
  type: string
all_categories:
  description: |
    All categories available in the application catalog.
  in: body
  required: true
  type: array
author:
  description: |
    The author of the package.
  in: body
  required: true
  type: string
category_id:
  description: |
    The UUID of the category.
  in: body
  required: true
  type: string
category_name:
  description: |
    The name of the category.
  in: body
  required: true
  type: string
category_packages:
  description: |
    The list of packages associated with a package. Each package returned
    includes its ``id``, ``fully_qualified_name``, and ``name``.
  in: body
  required: true
  type: array
class_definitions:
  description: |
    The class_definitions of the package.
  in: body
  required: true
  type: array
created:
  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>`_:

    ::

       CCYY-MM-DDThh:mm:ss±hh:mm

    For example, ``2015-08-27T09:49:58-05:00``.

    The ``±hh:mm`` value, if included, is the time zone as an offset
    from UTC.
  in: body
  required: true
  type: string
deployments:
  description: |
    The list of deployments for either the current environment or all
    environments for the current tenant (project).

    The following APIs control whether deployments by environment or by
    project are returned:

    * ``/deployments``: Returns all deployments for a project.
    * ``/environments/{env_id}/deployments``: Returns all deployments for an
      environment in a project.
  in: body
  required: true
  type: array
description:
  description: |
    The description of the package.
  in: body
  required: true
  type: string
enabled:
  description: |
    Whether the package is browsed in the Application Catalog.
  in: body
  required: true
  type: boolean
env_default_networks:
  description: |
    The default networking information of the environment. The information
    includes the ``name`` of the network, along with the ``type`` and ``id``
    of the network, contained in the ``?`` property.

    An example ``defaultNetworks`` object looks like::

        "defaultNetworks": {
            "environment": {
                "internalNetworkName": "net_two",
                "?": {
                    "type": "io.murano.resources.ExistingNeutronNetwork",
                    "id": "594e94fcfe4c48ef8f9b55edb3b9f177"
                }
            },
            "flat": null
        }
  in: body
  required: true
  type: object
env_description:
  description: |
    The description of the environment.
  in: body
  required: true
  type: string
env_id:
  description: |
    The UUID of the environment.
  in: body
  required: true
  type: string
env_last_status:
  description: |
    Shows the most recent status of the environment for each service in the
    environment. The response object includes detailed information
    by ``service_id``.
  in: body
  required: true
  type: object
env_model:
  description: |
    The ``?`` section of the environment, containing information about the
    environment model, including its ``type``, ``id`` and associated
    ``metadata``.
  in: body
  required: true
  type: object
env_name:
  description: |
    A name for the environment. Name must be at least one non-white space
    symbol and less than 256 characters long.
  in: body
  required: true
  type: string
env_name_request:
  description: |
    A name for the environment. Name must be at least
    one non-white space symbol.
  in: body
  required: true
  type: string
env_region:
  description: |
    Current region of the environment.
  in: body
  required: true
  type: string
env_status:
  description: |
    Current status of the environment. The available statuses are:

    * **Ready to configure**. When the environment is new and contains no
      components.
    * **Ready to deploy**. When the environment contains a component or multiple
      components and is ready for deployment.
    * **Ready**. When the environment has been successfully deployed.
    * **Deploying**. When the deploying is in progress.
    * **Deploy FAILURE**. When the deployment finished with errors.
    * **Deleting**. When deleting of an environment is in progress.
    * **Delete FAILURE**. You can abandon the environment in this case.
  in: body
  required: true
  type: string
env_version:
  description: |
    Current version.
  in: body
  required: true
  type: int
environments:
  description: |
    A list of ``environment`` object.
  in: body
  required: true
  type: array
fully_qualified_name:
  description: |
    The fqn of the package.
  in: body
  required: true
  type: string
is_public:
  description: |
    Whether the package is shared for other projects.
  in: body
  required: true
  type: boolean
networking:
  description: |
    Current network of the environment.
  in: body
  required: true
  type: string
owner_id:
  description: |
    The owner id of the package.
  in: body
  required: true
  type: string
package_categories:
  description: |
    The categories associated with the package.
  in: body
  required: true
  type: array
package_count:
  description: |
    The number of packages associated with the category.
  in: body
  required: true
  type: integer
packages:
  description: |
    A list of ``package`` object.
  in: body
  required: true
  type: array
pkg_file:
  description: |
    The upload package file.
  in: body
  required: true
  type: object
pkg_id:
  description: |
    The UUID of the package.
  in: body
  required: true
  type: string
pkg_name:
  description: |
    The name of the package.
  in: body
  required: true
  type: string
pkg_supplier:
  description: |
    The supplier info of the package.
  in: body
  required: true
  type: object
pkg_type:
  description: |
    The type of the package.
  in: body
  required: true
  type: string
regions:
  description: |
    Detailed region information for the cloud environment.
  in: body
  required: true
  type: object
services:
  description: |
    A list of ``service`` objects.
  in: body
  required: true
  type: array
session_id:
  description: |
    The UUID of the session.
  in: body
  required: true
  type: string
session_state:
  description: |
    The current state of the environment. When a session is first
    opened for the environment the state is ``opened``.
  in: body
  required: true
  type: string
session_user_id:
  description: |
    The UUID of the session owner.
  in: body
  required: true
  type: string
session_version:
  description: |
    The version of the session. It is tied to the version of the environment,
    so that only sessions whose version matches that of the environment can
    be deployed.
  in: body
  required: true
  type: integer
tags:
  description: |
    The tags of the package.
  in: body
  required: true
  type: array
task_id:
  description: |
    The UUID of the task associated with an action executed on a deployed
    environment.
  in: body
  required: true
  type: string
template_description:
  description: |
    The environment template description.
  in: body
  required: true
  type: string
template_id:
  description: |
    The UUID of the environment template.
  in: body
  required: true
  type: string
template_is_public:
  description: |
    Indicates whether an environment template is public or not.

    - ``True``. The environment template is public. Can be cloned.
    - ``False``. The environment template is private.
  in: body
  required: true
  type: boolean
template_name:
  description: |
    The name of the environment template. Only alphanumeric characters are
    allowed.
  in: body
  required: true
  type: string
template_service:
  description: |
    Detailed information about the ``service`` to be added to the environment
    template. The ``service`` includes virtual resources and application
    information. The virtual resources information is specified inside the
    ``instance`` object property. Application information is specified
    inside the body of the ``service`` object.

    The ``instance`` object properties include:

    - ``assignFloatingIp``. Whether to assign a floating IP to the VM.
    - ``keyname``. The key name of a key pair for the VM.
    - ``image``. The image to be used to provision the VM.
    - ``flavor``. The flavor to be used to provision the VM.
    - ``?``. An object which includes the ``type`` of the server.

    An example ``instance`` looks like::

      {
        "assignFloatingIp": "true",
        "keyname": "mykeyname",
        "image": "cloud-fedora-v3",
        "flavor": "m1.medium",
        "?": {
          "type": "io.murano.resources.LinuxMuranoInstance",
          "id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
        }
      }

    In addition, the ``service`` should also include the following:

    - ``name``. The ``name`` of the application.
    - ``?``. An object that includes the ``type`` and ``id`` of the
      application. An example ``type`` is:
      "io.murano.resources.LinuxMuranoInstance".
    - ``port``: The port to be used by the application. The value must be
      greater than 0 and less than 65536 (although formatted as a string).

    The entire ``service`` looks like::

      {
        "instance": {
          "assignFloatingIp": "true",
          "keyname": "mykeyname",
          "image": "cloud-fedora-v3",
          "flavor": "m1.medium",
          "?": {
            "type": "io.murano.resources.LinuxMuranoInstance",
            "id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
          }
        },
        "name": "orion",
        "?": {
          "type": "io.murano.apps.apache.Tomcat",
          "id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
        },
        "port": "8080"
      }
  in: body
  required: true
  type: object
template_services:
  description: |
    The list of environment template ``service`` objects.
  in: body
  required: true
  type: array
template_version:
  description: |
    The current version of the environment template.
  in: body
  required: true
  type: integer
templates:
  description: |
    The list of templates.
  in: body
  required: true
  type: array
tenant_id:
  description: |
    The UUID of the tenant. A tenant is also known as a project.
  in: body
  required: true
  type: string
updated:
  description: |
    The date and time when the object was updated. The date and time stamp
    format is `ISO 8601 <https://en.wikipedia.org/wiki/ISO_8601>`_:

    ::

       CCYY-MM-DDThh:mm:ss±hh:mm

    For example, ``2015-08-27T09:49:58-05:00``.

    The ``±hh:mm`` value, if included, is the time zone as an offset from UTC.
  in: body
  required: true
  type: string
