Fix documentation errors and warnings

Change-Id: I198aeee9c35697fbebf6e3fdc43a779d40e5ab0c
This commit is contained in:
Ekaterina Chernova 2014-11-14 15:49:09 +04:00
parent c8cbcaa37b
commit 8d6de8f471
20 changed files with 258 additions and 206 deletions

View File

@ -13,11 +13,11 @@
License for the specific language governing permissions and limitations
under the License.
.. _active-directory-yaml:
.. _adUI:
=============
*ad.yaml*
=============
=============================================
UI Definition Of Active Directory Application
=============================================
.. code-block:: yaml

View File

@ -16,10 +16,12 @@
====================================
Composing application package manual
====================================
Murano is Application catalog that supports types of applications. This document intends to make composing application packages easily.
Step 1. Prepare Execution Plans
================================
An *Execution Plan* is a set of metadata that describes the installation process of an application in a virtual machine.
It's a minimal unit of execution that can be triggered in Murano Workflows and should be understandable by Murano agent. From *Execution plans* any script can be triggered.
It could be any type of scripts which will execute commands and install application components as the result. Each script may consist of one or more files.
@ -72,6 +74,7 @@ Example *DeployTelnet.template*
Step 2. Prepare MuranoPL class definitions
===========================================
MuranoPL classes control application deployment workflow execution. Full information about MuranoPL classes see here: :ref:`MuranoPL Spec`
.. _Telnet Class:
@ -119,17 +122,20 @@ Note, that
Step 3. Prepare dynamic UI form definition
===========================================
Create a form definition in a yaml format. Before configuring a form, compose a list of parameters that will be required to set by a user.
Some form fields that are responsible for choosing a flavor, image and availability zone are better to use in every application creation wizard.
Syntax of Dynamic UI can be found see here: :ref:`Dynamic UI Spec`
Full example with Telnet application form definition :ref:`telnet-yaml`.
Syntax of Dynamic UI can be found see at the corresponding section: :ref:`Dynamic UI Definition specification <DynamicUISpec>`.
Full example with Telnet application form definition :ref:`Telnet Definition <TelnetUI>`.
Step 4. Prepare application logo
=================================
Find or create a simple image (in a .png format) associated with your application. Is should be small and have a square shape. You can specify any name of your image. In our example, let's name it *telnet.png*.
Step 5. Prepare manifest file
==============================
General application metadata should be described in the application manifest file. It should be in a yaml format and should have the following sections
* **Format** - version of a manifest syntax format
@ -161,6 +167,7 @@ Example *manifest.yaml*
Step 6. Compose a zip archive
==============================
An application archive should have the following structure
* *Classes* folder

View File

@ -55,6 +55,7 @@ Click on the *Show details* button located at the corresponding deployment row o
You can see steps of the deployments and the one that failed would have red color.
* Deployment freeze after ``Begin execution: io.murano.system.Agent.call`` problem with connection between Murano Agent and spawned instance.
* Need to check transport access to the virtual machine (check router has gateway).
* Check for rabbitMq settings: verify that agent has been obtained valid rabbit parameters.
Go to the spawned virtual machine and open */etc/murano/agent.conf* or *C:\Murano\Agent\agent.conf* on Windows-based machine.
@ -64,10 +65,8 @@ You can see steps of the deployments and the one that failed would have red colo
* Check that linux image name is not starts with 'w' letter
* ``[exceptions.EnvironmentError]: Unexpected stack state NOT_FOUND`` - problem with heat stack creation, need to examine Heat log file.
If you are running the deployment on new tenant check that router exists and it has gateway to the external network.
* ``Router could not be created, no external network found`` - Find `external_network` parameter in config file and check
that specified external network is really exist via UI or by executiong `neutron net-external-list` cimmand.
* ``NoPackageForClassFound: Package for class io.murano.Environment is not found`` - Check that murano core package is uploaded.
If no, the content of `meta/io.murano` folder should be zipped and uploaded to Murano.
If you are running the deployment on new tenant check that router exists and it has gateway to the external network.
* ``Router could not be created, no external network found`` - Find `external_network` parameter in config file and check
that specified external network is really exist via UI or by executiong `neutron net-external-list` cimmand.
* ``NoPackageForClassFound: Package for class io.murano.Environment is not found`` - Check that murano core package is uploaded.
If no, the content of `meta/io.murano` folder should be zipped and uploaded to Murano.

View File

@ -13,7 +13,7 @@
License for the specific language governing permissions and limitations
under the License.
.. _Dynamic UI Spec:
.. _DynamicUISpec:
===================================
Dynamic UI Definition specification
@ -219,4 +219,4 @@ fields.
description: Select availability zone where service would be installed.
required: false
Full example with Active Directory application form definitions is available here :ref:`active-directory-yaml`
Full example with Active Directory application form definitions is available here :ref:`UI Definition Of AD App <adUI>`

View File

@ -0,0 +1,127 @@
..
Copyright 2014 2014 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http//www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
..
.. _TelnetUI:
===================================
UI Definition of telnet application
===================================
.. code-block:: yaml
Version: 2
Templates:
instance:
?:
type: io.murano.resources.LinuxMuranoInstance
name: generateHostname($.appConfiguration.unitNamingPattern, 1)
flavor: $.instanceConfiguration.flavor
image: $.instanceConfiguration.osImage
keyname: $.instanceConfiguration.keyPair
assignFloatingIp: $.appConfiguration.assignFloatingIP
Application:
?:
type: io.murano.apps.linux.Telnet
name: $.appConfiguration.name
instance: $instance
Forms:
- appConfiguration:
fields:
- name: title
type: string
required: false
hidden: true
description: Telnet is a service that allows a Telnet client to connect across a network and access a command session
- name: name
type: string
label: Application Name
description: >-
Enter a desired name for the application. Just A-Z, a-z, 0-9, dash and
underline are allowed.
minLength: 2
maxLength: 64
regexpValidator: '^[-\w]+$'
errorMessages:
invalid: Just letters, numbers, underscores and hyphens are allowed.
helpText: Just letters, numbers, underscores and hyphens are allowed.
- name: dcInstances
type: integer
hidden: true
initial: 1
- name: assignFloatingIP
type: boolean
label: Assign Floating IP
description: >-
Select to true to assign floating IP automatically
initial: false
required: false
widgetMedia:
css: {all: ['muranodashboard/css/checkbox.css']}
- name: unitNamingPattern
type: string
label: Hostname
description: >-
For your convenience instance hostname can be specified.
Enter a name or leave blank for random name generation.
required: false
regexpValidator: '^(([a-zA-Z0-9#][a-zA-Z0-9-#]*[a-zA-Z0-9#])\.)*([A-Za-z0-9#]|[A-Za-z0-9#][A-Za-z0-9-#]*[A-Za-z0-9#])$'
helpText: Optional field for a machine hostname
# temporaryHack
widgetMedia:
js: ['muranodashboard/js/support_placeholder.js']
css: {all: ['muranodashboard/css/support_placeholder.css']}
validators:
# if unitNamingPattern is given and dcInstances > 1, then '#' should occur in unitNamingPattern
- expr: $.appConfiguration.dcInstances < 2 or not $.appConfiguration.unitNamingPattern.bool() or '#' in $.appConfiguration.unitNamingPattern
message: Incrementation symbol "#" is required in the Hostname template
- instanceConfiguration:
fields:
- name: title
type: string
required: false
hidden: true
description: Specify some instance parameters on which the application would be created
- name: flavor
type: flavor
label: Instance flavor
description: >-
Select registered in Openstack flavor. Consider that application performance
depends on this parameter.
required: false
- name: osImage
type: image
imageType: linux
label: Instance image
description: >-
Select valid image for the application. Image should have Murano agent installed and
registered in Glance.
- name: keyPair
type: keypair
label: Key Pair
description: >-
Select the Key Pair to control access to instances. You can login to
instances using this KeyPair after application deployment
required: false
- name: availabilityZone
type: azone
label: Availability zone
description: Select availability zone where the application would be installed.
required: false

View File

@ -27,6 +27,7 @@ The API sends a message that instructs murano-engine, the workflow component of
Murano, to deploy an environment. The message consists of a JSON document
containing the class types required to create the environment, as well as any
parameters the user selected prior to deployment. Examples are:
* An :ref:`Environment` object (io.murano.Environment) with a *name*
* An object (or objects) referring to networks that need to be created
or that already exist

View File

@ -19,7 +19,7 @@ on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
sys.path.insert(0, os.path.abspath('../../murano'))
sys.path.insert(0, os.path.abspath('../../'))
sys.path.insert(0, os.path.abspath('../'))
sys.path.insert(0, os.path.abspath('./'))
@ -64,7 +64,12 @@ highlight_language = 'python'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = []
exclude_patterns = ['specification/murano-repository.rst',
'specification/murano-api.rst',
'murano_pl/builtin_functions.rst',
'install/configure_network.rst',
'articles/ad-ui.rst',
'articles/telnet.rst']
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
@ -74,9 +79,8 @@ show_authors = False
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
if on_rtd:
html_theme_path = ['.']
html_theme = '_theme_rtd'
html_theme_path = ['.']
html_theme = '_theme'
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.

View File

@ -61,7 +61,7 @@ contribute to the project.
.. toctree::
:maxdepth: 1
articles/murano_pl_index
murano_pl/murano_pl_index
articles/dynamic_ui
articles/workflow

View File

@ -59,9 +59,8 @@ Manual network configuration
The same action can be done via CLI by running `neutron net-external-list`. To create new external network examine `OpenStack documentation <http://docs.openstack.org/trunk/install-guide/install/apt/content/neutron_initial-external-network.html>`_.
.. image:: 1.png
:align: left
:scale: 70 %
:align: left
:scale: 70 %
* Step 2. Create local network

View File

@ -16,23 +16,21 @@
.. _installing_manually:
================================
Installing and Running Manually
================================
===============================
Installing and Running Manually
===============================
Prepare Environment
-------------------
===================
Install Prerequisites
^^^^^^^^^^^^^^^^^^^^^
---------------------
First you need to install a number of packages with your OS package manager.
The list of packages depends on the OS you use.
Ubuntu
""""""
^^^^^^
.. code-block:: console
@ -43,7 +41,7 @@ Ubuntu
..
Fedora
""""""
^^^^^^
.. note::
@ -58,7 +56,7 @@ Fedora
CentOS
""""""
^^^^^^
.. code-block:: console
@ -68,7 +66,7 @@ CentOS
Install tox
^^^^^^^^^^^
-----------
.. code-block:: console
@ -77,7 +75,7 @@ Install tox
Install And Configure Database
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
------------------------------
Murano can use various database types on backend. For development purposes
SQLite is enough in most cases. For production installations you should use
@ -107,7 +105,7 @@ To use MySQL database you should install it and create an empty database first:
Install the API service and Engine
----------------------------------
==================================
1. Create a folder which will hold all Murano components.
@ -227,7 +225,7 @@ Install the API service and Engine
Install Murano Dashboard
------------------------
========================
Murano API & Engine services provide the core of Murano. However, your need a
control plane to use it. This section decribes how to install and run Murano
@ -294,12 +292,12 @@ Install Murano Dashboard
.. _update_settings:
6. Update settings file
.. _`here`: https://github.com/stackforge/murano-dashboard/blob/master/update_setting.sh
Running Murano dashboard on developer environment implies the use of murano settings file instead of horizon.
However, for the correct setup requires settings file to be synchronized with corresponding horizon release.
But murano-dashboard also have parameters, that should be added to that config. So for your convenience,
@ -340,7 +338,7 @@ Install Murano Dashboard
8. Open dashboard using url http://localhost:8000
Import Murano Applications
--------------------------
==========================
Murano provides excellent catalog services, but it also requires applications
which to provide. This section describes how to import Murano Applications from

View File

@ -1,54 +0,0 @@
==========
murano-api
==========
-----------------------------
Murano API Server
-----------------------------
:Author: openstack@lists.openstack.org
:Date: 2013-04-04
:Copyright: OpenStack Foundation
:Version: 0.5
:Manual section: 1
:Manual group: cloud computing
SYNOPSIS
========
murano-api [options]
DESCRIPTION
===========
murano-api is a server daemon that serves the Murano API
OPTIONS
=======
**General options**
**-v, --verbose**
Print more verbose output
**--config-file**
Config file used for running service
**--bind-host=HOST**
Address of host running ``murano-api``. Defaults to `0.0.0.0`.
**--bind-port=PORT**
Port that ``murano-api`` listens on. Defaults to `8082`.
FILES
=====
* /etc/murano/murano.conf
* /etc/murano/murano-paste.conf
SEE ALSO
========
* `Murano <http://murano.readthedocs.org/>`__

View File

@ -34,7 +34,9 @@ The following classes are included into the Murano core library:
**io.murano.resources:**
- :ref:`Instance`
:ref:`Resources <Instance_resources>`:
- Agent-v1.template
- Agent-v2.template
- linux-init.sh
@ -49,6 +51,7 @@ The following classes are included into the Murano core library:
Class: Object
=============
Parent class for all MuranoPL classes, which implements initialize method, and setAttr and getAttr methods, which are defined in the pythonic part of the Object class.
All MuranoPL classes are implicitly inherited from this class.
@ -56,6 +59,7 @@ All MuranoPL classes are implicitly inherited from this class.
Class: Application
==================
Defines application itself. All custom applications should be derived from this class.
Has two properties:
@ -87,6 +91,7 @@ Has two properties:
Class: SecurityGroupManager
===========================
Manages security groups during application deployment.
.. code-block:: yaml

View File

@ -1,26 +0,0 @@
..
Copyright 2014 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
.. _murano_pl:
=========================
Murano PL Guide
=========================
.. toctree::
:maxdepth: 2
built-in_functions

View File

@ -318,12 +318,12 @@ The following block constructs are available:
| | ``- code`` | |
| | ``- block`` | if not case matched and Default key is present (it is optional) |
| | ``case2:`` | than Default code block get executed. |
| | ``- code`` | case values are constant values (not expressions) |
| | ``- block`` | |
| | ``- code`` | case values are constant values (not expressions) |
| | ``- block`` | |
| | ``Value: $valueExpression()`` | |
| | ``Default:`` | |
| | ``- code`` | |
| | ``- block`` | |
| | ``- code`` | |
| | ``- block`` | |
+---------------------------------+----------------------------------------------------------------------------------------+
| | ``Switch:`` | all code blocks that have their predicate evaluated to true are executed but the order |
| | ``$predicate1() :`` | of predicate evaluation is not fixed |

View File

@ -23,12 +23,7 @@ Content
=======
.. toctree::
:maxdepth: 3
murano_pl
system_classes
core_classes
.. include:: murano_pl.rst
.. include:: system_classes.rst
.. include:: core_classes.rst
core_classes

View File

@ -18,7 +18,7 @@ Murano API v1 specification
===========================
General information
-------------------
===================
* **Introduction**
@ -55,7 +55,6 @@ General information
(X-Auth-Token). Clients must authenticate with Keystone before
interacting with the Murano service.
.. include:: murano-api.rst
.. include:: murano-repository.rst

View File

@ -14,7 +14,7 @@
under the License.
Glossary
--------
========
* **Environment**
@ -78,8 +78,9 @@ Environment API
List Environments
-----------------
Request
"""""""
*Request*
+----------+----------------------------------+----------------------------------+
| Method | URI | Description |
+==========+==================================+==================================+
@ -87,8 +88,8 @@ Request
| | | Environments |
+----------+----------------------------------+----------------------------------+
Response
""""""""
*Response*
This call returns list of environments. Only the basic properties are
returned.
@ -129,8 +130,7 @@ Create Environment
| name | string | Environment name; only alphanumeric characters and '-' |
+----------------------+------------+--------------------------------------------------------+
Request
"""""""
*Request*
+----------+----------------------------------+----------------------------------+
| Method | URI | Description |
@ -144,8 +144,7 @@ Request
* **Example**
{"name": "env_name"}
Response
""""""""
*Response*
::
@ -168,8 +167,7 @@ Update Environment
| name | string | Environment name; only alphanumeric characters and '-' |
+----------------------+------------+--------------------------------------------------------+
Request
"""""""
*Request*
+----------+----------------------------------+----------------------------------+
| Method | URI | Description |
@ -183,8 +181,7 @@ Request
* **Example**
{"name": "env_name_changed"}
Response
""""""""
*Response*
**Content-Type**
application/json
@ -202,8 +199,8 @@ Response
Get Environment Details
-----------------------
Request
"""""""
*Request*
Return information about environment itself and about applications, including to this environment.
@ -215,8 +212,7 @@ Return information about environment itself and about applications, including to
| | | | child entities |
+----------+----------------------------------+-----------------------------------+----------------------------------+
Response
""""""""
*Response*
**Content-Type**
application/json
@ -261,8 +257,9 @@ Response
Delete Environment
------------------
Request
"""""""
*Request*
+----------+----------------------------------+----------------------------------+
| Method | URI | Description |
@ -304,8 +301,8 @@ Configure Environment / Open session
During this call new working session is created, and session ID should be sent in a request header with name ``X-Configuration-Session``.
Request
"""""""
*Request*
+----------+----------------------------------+----------------------------------+
| Method | URI | Description |
@ -314,8 +311,8 @@ Request
| | | session |
+----------+----------------------------------+----------------------------------+
Response
""""""""
*Response*
**Content-Type**
application/json
@ -345,8 +342,7 @@ Deploy Session
With this request all local changes made within environment start to deploy on Openstack.
Request
"""""""
*Request*
+----------+---------------------------------+--------------------------------+
| Method | URI | Description |
@ -355,8 +351,8 @@ Request
| | <session_id>/deploy | with specified session_id |
+----------+---------------------------------+--------------------------------+
Response
""""""""
*Response*
+----------------+-----------------------------------------------------------+
| Code | Description |
@ -370,8 +366,8 @@ Response
Get Session Details
-------------------
Request
"""""""
*Request*
+----------+---------------------------------+---------------------------+
| Method | URI | Description |
@ -380,8 +376,8 @@ Request
| | <session_id> | with specified session_id |
+----------+---------------------------------+---------------------------+
Response
""""""""
*Response*
::
@ -407,8 +403,8 @@ Response
Delete Session
--------------
Request
"""""""
*Request*
+----------+---------------------------------+----------------------------------+
| Method | URI | Description |
@ -417,8 +413,7 @@ Request
| | <session_id> | session_id |
+----------+---------------------------------+----------------------------------+
Response
""""""""
*Response*
+----------------+-----------------------------------------------------------+
| Code | Description |
@ -438,10 +433,10 @@ It also allows to browse deployment history.
List Deployments
----------------
Returns information about all deployments of the specified environment.
Request
"""""""
*Request*
+----------+------------------------------------+--------------------------------------+
| Method | URI | Description |
@ -449,8 +444,8 @@ Request
| GET | /environments/<env_id>/deployments | Get list of environment deployments |
+----------+------------------------------------+--------------------------------------+
Response
""""""""
*Response*
**Content-Type**
application/json
@ -535,8 +530,8 @@ selection of specific attribute on application, simply appending part with
attribute name will work. For example to request application name, user
should use next endpoint: */environments/<env_id>/services/<application_id>/name*
Request
"""""""
*Request*
+----------------+-----------------------------------------------------------+------------------------------------+
| Method | URI | Header |
+================+===========================================================+====================================+
@ -548,8 +543,7 @@ Request
* `env_id` - environment ID, required
* `app_id` - application ID, optional
Response
""""""""
*Response*
**Content-Type**
application/json
@ -583,8 +577,7 @@ POST applications
New application can be added to the Murano environment using session.
Result JSON is calculated in Murano dashboard, which based on `UI definition <Dynamic UI Spec>`_
Request
"""""""
*Request*
**Content-Type**
application/json
@ -618,8 +611,7 @@ Request
}
Response
"""""""""
*Response*
Created application returned
@ -651,10 +643,10 @@ Created application returned
Delete application from environment
-----------------------------------
Delete one or all applications from the environment
Request
"""""""
*Request*
+----------------+-----------------------------------------------------------+-----------------------------------+
| Method | URI | Header |
@ -675,8 +667,8 @@ Statistic API intends to provide billing feature
Instance Environment Statistics
-------------------------------
Request
"""""""
*Request*
Get information about all deployed instances in the specified environment
+----------------+--------------------------------------------------------------+
@ -690,8 +682,8 @@ Get information about all deployed instances in the specified environment
* `env_id` - environment ID, required
* `instance_id` - ID of the instance for which need to provide statistic information, optional
Response
""""""""
*Response*
+----------------------+------------+-----------------------------------------------------------------+
| Attribute | Type | Description |
@ -725,8 +717,7 @@ Response
}
]
Request
"""""""
*Request*
+----------------+--------------------------------------------------------------+
| Method | URI |
@ -734,8 +725,8 @@ Request
| GET | /environments/<env_id>/instance-statistics/aggregated |
+----------------+--------------------------------------------------------------+
Response
""""""""
*Response*
+----------------------+------------+-----------------------------------------------------------------+
| Attribute | Type | Description |
+======================+============+=================================================================+
@ -762,8 +753,7 @@ Response
General Request Statistics
--------------------------
Request
"""""""
*Request*
+----------------+---------------+
| Method | URI |
@ -771,8 +761,7 @@ Request
| GET | /stats |
+----------------+---------------+
Response
""""""""
*Response*
+----------------------+------------+-----------------------------------------------------------------+
| Attribute | Type | Description |

View File

@ -20,7 +20,8 @@ Manage application definitions in the Application Catalog.
You can browse, edit and upload new application packages (.zip.package archive with all data that required for a service deployment).
Packages
--------
========
Methods for application package management
**Package Properties**
@ -39,7 +40,7 @@ Methods for application package management
- ``owner_id``: id of a tenant which user not an owned the package
List packages
"""""""""""""
-------------
`/v1/catalog/packages?{marker}{limit}{order_by}{type}{category}{fqn}{owned}{class_name} [GET]`
@ -114,7 +115,7 @@ For an admin role all packages are available.
Upload a new package[POST]
""""""""""""""""""""""""""
--------------------------
`/v1/catalog/packages`
@ -178,7 +179,8 @@ See the example of multipart/form-data request, It should contain two parts - te
}
Get package details
"""""""""""""""""""
-------------------
`/v1/catalog/packages/{id} [GET]`
Display details for a package.
@ -222,7 +224,8 @@ Display details for a package.
* In case specified package id doesn't exist.
Update a Package
""""""""""""""""
================
`/v1/catalog/packages/{id} [PATCH]`
Allows to edit mutable fields (categories, tags, name, description, is_public, enabled).
@ -294,8 +297,10 @@ Allowed operations:
* An attempt to update package that doesn't exist
Delete application definition from the catalog
""""""""""""""""""""""""""""""""""""""""""""""
----------------------------------------------
`/v1/catalog/packages/{id} [DELETE]`
**Parameters**
@ -306,11 +311,10 @@ Delete application definition from the catalog
* An attempt to delete package that doesn't exist
Download application data
-------------------------
Get application package
"""""""""""""""""""""""
-----------------------
`/v1/catalog/packages/{id}/download [GET]`
Get application definition package
@ -327,8 +331,10 @@ The sequence of bytes representing package content
Specified package id doesn't exist
Get UI definition
"""""""""""""""""
-----------------
`/v1/catalog/packages/{id}/ui [GET]`
Retrieve UI definition for a application which described in a package with provided id
@ -353,8 +359,10 @@ Specified package is not public and not owned by user tenant, performing the req
* Specified package id doesn't exist
Get logo
""""""""
--------
Retrieve application logo which described in a package with provided id
`/v1/catalog/packages/{id}/logo [GET]`
@ -376,10 +384,11 @@ Specified package is not public and not owned by user tenant, performing the req
Specified package is not public and not owned by user tenant, performing the request
Categories
----------
==========
List categories
"""""""""""""""
---------------
`/v1/catalog/packages/categories [GET]`
Retrieve list of all available application categories