summaryrefslogtreecommitdiffstats
path: root/docs/guides/onap-developer/how-to-use-docs/api-swagger-guide.rst
blob: bb4706c2e0146fe189ee21576b7e4f7bf9012a62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
.. 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 <myAPI1.json>`"
   "myAPI12", ":download:`link <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 direcive.

.. code:: rst

   myAPI1
   ......
   .. swaggerv2doc:: myAPI1.json

   myAPI2
   ......
   .. swaggerv2doc:: myAPI2.json

It will produce the following output:

myAPI1
......
.. swaggerv2doc:: myAPI1.json

myAPI2
......
.. swaggerv2doc:: myAPI2.json