Welcome to RStudio Community @poolio! There is a way to customize the swagger.json file in the development version of Plumber (see https://github.com/rstudio/plumber/pull/365). However, this does not currently work on RStudio Connect. The reason for this is because the swagger function is an argument to the $run() method of a Plumber router and RStudio Connect injects its own arguments to the $run() method for Plumber APIs. This is a known issue that we are working on.
Here is an example of supplying a custom swagger file to Plumber. Again, this will not work with RStudio Connect. Note that the directory for this example has the following structure:
.
├── api-spec.yaml
├── entrypoint.R
└── plumber.R
# api-spec.yaml
openapi: 3.0.0
servers:
- description: Localhost
url: http://127.0.0.1:5762
info:
description: This is a simple Plumber API with the spec defined in an external file
version: "1.0.0"
title: Simple Plumber
paths:
/echo:
get:
summary: Echos back a message
description: |
Pass a message and have it echoed in return in JSON
parameters:
- in: query
name: msg
description: Message to echo in return
required: true
schema:
type: string
responses:
'200':
description: successful message
# plumber.R
library(plumber)
#* @get /echo
function(msg = "") {
list(msg = paste0("The message is: '", msg, "'"))
}
# entrypoint.R
library(plumber)
pr <- plumb("plumber.R")
pr$run(swagger = function(pr, spec, ...) {
spec <- yaml::read_yaml("api-spec.yaml")
spec
})