Listing and Documenting REST APIs
This topic discusses how to discover the REST services that are available on an instance and how to generate documentation for REST services.
Using the /api/mgmnt Service to Discover REST Services
The /api/mgmnt service includes calls you can use to discover REST service classes and REST-enabled web applications.
Discovering REST Services
To use the /api/mgmnt service to discover the REST services that are available on an instance, use the following REST call:
- 
For the HTTP action, select or specify GET. 
- 
For the URL, specify a URL of the following form, using the <baseURL> for your instance: http://<baseURL>/api/mgmnt/v2/ Or, if you want to examine only one namespace: http://<baseURL>/api/mgmnt/v2/:namespace Where namespace is the namespace you want to examine. 
(Note that these calls ignore manually-coded REST services. To discover manually-coded REST applications, use the calls GET /api/mgmnt/ and GET /api/mgmnt/:v1/:namespace/restapps.)
If the call is successful, InterSystems IRIS returns an array that lists the REST services, in JSON format. For example:
[
  {
    "name": "%Api.Mgmnt.v2",
    "webApplications": "/api/mgmnt",
    "dispatchClass": "%Api.Mgmnt.v2.disp",
    "namespace": "%SYS",
    "swaggerSpec": "/api/mgmnt/v2/%25SYS/%Api.Mgmnt.v2"
  },
  {
    "name": "myapp",
    "webApplications": "/api/myapp",
    "dispatchClass": "myapp.disp",
    "namespace": "USER",
    "swaggerSpec": "/api/mgmnt/v2/USER/myapp"
  }
]
Discovering REST-Enabled Web Applications
To use the /api/mgmnt service to discover the REST-enabled web applications that are available on an instance, use the following REST call:
- 
For the HTTP action, select or specify GET. 
- 
For the URL, specify a URL of the following form, using the <baseURL> for your instance: http://<baseURL>/api/mgmnt Or, if you want to examine only one namespace: http://<baseURL>/api/mgmnt/v1/:namespace/restapps Where namespace is the namespace you want to examine. 
See the reference sections for GET /api/mgmnt/ and GET /api/mgmnt/:v1/:namespace/restapps.
Using the %REST.API Class to Discover REST Services
The %REST.APIOpens in a new tab class provides methods you can use to discover REST service classes and REST-enabled web applications.
Discovering REST Service Classes
To use the %REST.APIOpens in a new tab class to discover the REST services that are available on an instance, use the following methods of that class:
GetAllRESTApps(Output appList As %ListOfObjects) as %Status
Returns, as output, a list of the REST services on this server. The output argument applist is an instance of %ListOfObjectsOpens in a new tab, and each item in the list is an instance of %REST.ApplicationOpens in a new tab that contains information about the REST service. This includes any REST services that do not have an associated web application. This method ignores any manually-coded REST services.
GetRESTApps(namespace as %String,
            Output appList As %ListOfObjects) as %Status
Returns, as output, a list of the REST services in the namespace indicated by namepace. See GetAllWebRESTApps(). See GetAllRESTApps().
Discovering REST-Enabled Web Applications
To use the %REST.APIOpens in a new tab class to discover the REST-enabled web applications that are available on an instance, use the following methods of that class:
GetAllWebRESTApps(Output appList As %ListOfObjects) as %Status
Returns, as output, a list of the REST-enabled web applications on this server. The output argument applist is an instance of %ListOfObjectsOpens in a new tab, and each item in the list is an instance of %REST.ApplicationOpens in a new tab that contains information about web application.
GetWebRESTApps(namespace as %String,
               Output appList As %ListOfObjects) as %Status
Returns, as output, a list of the REST-enabled web applications in the namespace indicated by namepace. See GetAllWebRESTApps().
Providing Documentation for a REST Service
It is useful to document any API so that developers can easily use the API. In the case of a REST API that follows the OpenAPI 2.0 specificationOpens in a new tab, you can use the SwaggerOpens in a new tab open-source framework to provide interactive documentation for your API, based upon the contents of the specification.
One option is to use Swagger UIOpens in a new tab and provide a hosted copy of the documentation. For a demo:
- 
Go to https://swagger.io/tools/swagger-ui/Opens in a new tab 
- 
Click Live Demo. 
- 
In the box at the top of the page, enter the URL of the OpenAPI 2.0 specificationOpens in a new tab for the REST service, in JSON format. For example, use the GET /api/mgmnt/v2/:namespace/:application call on the InterSystems IRIS server. 
- 
Click Explore. 
The lower part of the page then displays the documentation as shown in the following example:

Here you can view details about each call, try test calls and see the responses. For more details, see the SwaggerOpens in a new tab web site.
Other third-party tools enable you to generate static HTML. InterSystems has no specific recommendations for this.