blob: 3083225ab9ff714c6d6d389aa3ebaf9b5f31e74e [file] [log] [blame]
.. This work is licensed under a Creative Commons Attribution 4.0
.. International License. http://creativecommons.org/licenses/by/4.0
.. Copyright 2019 Orange. All rights reserved.
.. _api-swagger-guide:
API Documentation
=================
Swagger
-------
The API should be described using OpenAPI specifications and available as a
`JSON file <https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md>`_
A Swagger editor is available here `<http://editor.swagger.io/>`_ to generate
such JSON files.
As a result, you should get one JSON file per API. For example the project
**my** has 2 API: **myAPI1** and **myAPI2**.
- myAPI1.json
- myAPI2.json
Global API Table
----------------
It is recommended to list the following API available with an access to the
Swagger JSON files to help the developers/users to play with JSON.
We propose the following table:
.. csv-table::
:header: "API name", "Swagger JSON"
:widths: 10,5
"myAPI1", ":download:`link <media/myAPI1.json>`"
"myAPI12", ":download:`link <media/myAPI2.json>`"
.. note::
During documentation merge/publish at RTD, any file referenced in an RST file with
':download:' and relative path to a contributing project repository is copied, uniquely
named, and published with the generated HTML pages.
The code is available here:
.. code:: rst
.. csv-table::
:header: "API name", "Swagger JSON"
:widths: 10,5
"myAPI1", ":download:`link <myAPI1.json>`"
"myAPI2", ":download:`link <myAPI2.json>`"
.. note::
The syntax of <myAPI1.json> is to be taken literally. Keep '<' and '>'.
API Swagger
-----------
For each API, the ``swaggerv2doc`` directive must be used as follows:
.. note::
Note the v in swaggerv2doc!
If your JSON file has multiple endpoints, this directive does not preserve the order.
.. note::
swaggerv2doc directive may generate errors when Swagger file contains specific
information. In such case, do not use this directive.
.. code:: rst
myAPI1
......
.. swaggerv2doc:: myAPI1.json
myAPI2
......
.. swaggerv2doc:: myAPI2.json
It will produce the following output:
myAPI1
......
.. swaggerv2doc:: media/myAPI1.json
myAPI2
......
.. swaggerv2doc:: media/myAPI2.json