OpenAPI Compatibility Chart
This OpenAPI Compatibility Chart aims to document every part of the OpenAPI Specification that we do and don't support, as well as any quirks that might be present that you should be aware of.
We currently support OpenAPI through v3.1.0. For Swagger 2.0 support we use a tool called swagger2openapi that upconverts Swagger definitions to OpenAPI 3.0.
Unless mentioned otherwise, all
description
properties that we support are run through our Markdown engine: RDMD
OpenAPI Object
openapi
- We currently support everything up through
3.1.0
.
- We currently support everything up through
info
– Info ObjectjsonSchemaDialect
jsonSchemaDialect
is new to OpenAPI 3.1. See JSON Schema Dialects for a list of dialects that we support. ✅
servers
– Server Objectpaths
– Paths Objectwebhooks
- Map containing Path Item Object and/or Reference Object- OpenAPI definitions can contain a mix of
paths
andwebhooks
— as of January 2024, we support both. ✅
- OpenAPI definitions can contain a mix of
components
– Components Objectsecurity
– Security Requirement Object- We support both global and operation-specific security requirements. ✅
tags
– Tag ObjectexternalDocs
– External Documentation Object
Info Object
title
✅summary
✅summary
is new to OpenAPI 3.1.- This value is surfaced in the API Info table on the Getting Started page.
description
✅- This value is surfaced in the API Info table on the Getting Started page.
termsOfService
✅- This value is surfaced in the API Info table on the Getting Started page.
contact
✅- See Contact Object for more details.
- This object is surfaced in the API Info table on the Getting Started page.
license
✅- See License Object for more details.
- This object is surfaced in the API Info table on the Getting Started page.
version
✅- For certain OpenAPI definition upload methods, we use this value to determine what version of your docs to place your API definition. See Versions for more information on docs versions. Below, we go over the different upload methods:
- When uploading via
rdme
, this value is ignored by default. To use this value, you can pass theuseSpecVersion
flag. - When uploading via the API, this value is used only if the
x-readme-version
request header is omitted. - This value is ignored by default in file uploads.
- When uploading via
- For certain OpenAPI definition upload methods, we use this value to determine what version of your docs to place your API definition. See Versions for more information on docs versions. Below, we go over the different upload methods:
Contact Object
This object is surfaced in the API Info table on the Getting Started page.
name
✅url
✅email
✅
License Object
This object is surfaced in the API Info table on the Getting Started page.
name
✅identifier
✅identifier
is new to OpenAPI 3.1.
url
✅
Server Object
url
✅description
✅variables
✅- See Server Variable Object for more details.
Server Variable Object
enum
✅default
✅description
✅
Components Object
With the exception of
securitySchemes
, all components that can be loaded as a$ref
pointer are dereferenced prior to rendering.
schemas
– Schema Objectresponses
– Response Objectparameters
– Parameter Objectexamples
– Example ObjectrequestBodies
– Request Body Objectheaders
– Header ObjectsecuritySchemes
– Security Scheme Objectlinks
– Link Objectcallbacks
– Callback ObjectpathItems
– Path Item ObjectpathItems
is new with OpenAPI 3.1.
Paths Object
We support the Path Object because we wouldn't offer an API Reference without them. 😀
Path Item Object
$ref
✅- All
$ref
pointers are dereferenced prior to rendering.
- All
summary
✅description
✅get
✅put
✅post
✅delete
✅options
✅head
✅patch
✅trace
✅servers
⛔- We currently do not support
servers
declarations at the Path Item level. See Server Object for more details.
- We currently do not support
parameters
✅
Operation Object
tags
✅summary
✅description
✅externalDocs
⛔- See External Documentation Object for more details.
operationId
✅parameters
✅- See Parameter Object for more details.
requestBody
✅- See Request Body Object for more details.
responses
✅- See Responses Object for more details.
callbacks
✅- See Callback Object for more details.
deprecated
✅security
✅- See Security Requirement Object for more details.
servers
⛔- We currently do not support
servers
declarations at the Operation level. See Server Object for more details.
- We currently do not support
External Documentation Object
We currently only surface the
External Documentation Object
within the Tag Object of your documentation.
description
✅url
✅
Parameter Object
name
✅in
✅description
✅required
✅deprecated
✅allowEmptyValue
✅- To add an empty value into our API Explorer you must first type in something and then delete it.
style
✅explode
✅allowReserved
✅schema
✅- See Schema Object for more details.
example
✅examples
✅content
⛔
Style Values
Support for parameter style
serialization:
style | Data type | explode | Path | Query, multipart/form-data | Cookie | Header |
---|---|---|---|---|---|---|
matrix | primitive | true | ✅ | - | - | - |
matrix | primitive | false | ✅ | - | - | - |
matrix | array | true | ✅ | - | - | - |
matrix | array | false | ✅ | - | - | - |
matrix | object | true | ✅ | - | - | - |
matrix | object | false | ✅ | - | - | - |
label | primitive | true | ✅ | - | - | - |
label | primitive | false | ✅ | - | - | - |
label | array | true | ✅ | - | - | - |
label | array | true | ✅ | - | - | - |
label | object | true | ✅ | - | - | - |
label | object | true | ✅ | - | - | - |
form | primitive | true | - | ✅ | ✅ | |
form | primitive | false | - | ✅ | ✅ | |
form | array | true | - | ✅ | ✅ | |
form | array | false | - | ✅ | ✅ | |
form | object | true | - | ✅ | ✅ | |
form | object | false | - | ✅ | ✅ | |
simple | array | true | ✅ | - | - | ✅ |
simple | array | false | ✅ | - | - | ✅ |
spaceDelimited | array | true | - | ✅ | - | - |
spaceDelimited | array | false | - | ✅ | - | - |
spaceDelimited | object | true | - | ✅ | - | - |
spaceDelimited | object | false | - | ⛔ | - | - |
spaceDelimited | query | true | ⚠️ | ⚠️ | ⚠️ | ⚠️ |
spaceDelimited | query | false | ⚠️ | ⚠️ | ⚠️ | ⚠️ |
pipeDelimited | array | true | - | ✅ | - | - |
pipeDelimited | array | false | - | ✅ | - | - |
pipeDelimited | object | true | - | ✅ | - | - |
pipeDelimited | object | false | - | ⛔ | - | - |
pipeDelimited | query | true | ⚠️ | ⚠️ | ⚠️ | ⚠️ |
pipeDelimited | query | false | ⚠️ | ⚠️ | ⚠️ | ⚠️ |
deepObject | object | true | - | ✅ (including arrays of objects, serialized using the qs module) | - | - |
deepObject | object | false | - | ✅ | - | - |
spaceDelimited
andpipeDelimited
support onquery
andform-data
parameters, while new to OpenAPI 3.1, is currently untested on our platform.
Request Body Object
description
✅content
⚠️- Though we support
content
, the API Reference only supports one Media Type at a time; so if you have acontent
declaration that has two Media Types we'll use either the first out of the list or whichever is JSON-compatible.
- Though we support
required
✅
Media Type Object
schema
✅example
✅examples
✅encoding
⚠️- We only support
encoding
formultipart/form-data
media types.
- We only support
Encoding Object
We only support the
Encoding Object
onmultipart/form-data
media types.
contentType
⛔headers
⛔style
⚠️- We support the
style
parameter formultipart/form-data
media types. See the style support list for more details.
- We support the
explode
⚠️- We support the
explode
parameter formultipart/form-data
media types. See the style support list for more details.
- We support the
allowReserved
⛔
Responses Object
For Responses we support default
, blanket 1XX
, 2XX
, 3XX
, 4XX
, and 5XX
statuses, as well as all HTTP status codes that are listed within with IANA Status Code Registry.
Any HTTP status code that is used but not listed below will be shown but internally treated as a general
<number>XX
variant.
Code | Description |
---|---|
1XX | Informational |
100 | Continue |
101 | Switching Protocols |
102 | Processing |
103 | Early Hints |
2XX | Success |
200 | OK |
201 | Created |
202 | Accepted |
203 | Non-Authoritative Information |
204 | No Content |
205 | Reset Content |
206 | Partial Content |
207 | Multi-Status |
208 | Already Reported |
218 | This is fine |
226 | IM Used |
3XX | Redirection |
300 | Multiple Choices |
301 | Moved Permanently |
302 | Found |
303 | See Other |
304 | Not Modified |
305 | Use Proxy |
306 | Switch Proxy |
307 | Temporary Redirect |
308 | Permanent Redirect |
4XX | Client Error |
400 | Bad Request |
401 | Unauthorized |
402 | Payment Required |
403 | Forbidden |
404 | Not Found |
405 | Method Not Allowed |
406 | Not Acceptable |
407 | Proxy Authentication Required |
408 | Request Timeout |
409 | Conflict |
410 | Gone |
411 | Length Required |
412 | Precondition Failed |
413 | Payload Too Large |
414 | URI Too Long |
415 | Unsupported Media Type |
416 | Range Not Satisfiable |
417 | Expectation Failed |
418 | I'm a teapot |
419 | Page Expired |
420 | Enhance Your Calm |
421 | Misdirected Request |
422 | Unprocessable Entity |
423 | Locked |
424 | Failed Dependency |
425 | Too Early |
426 | Upgrade Required |
428 | Precondition Required |
429 | Too Many Requests |
430 | Request Header Fields Too Large |
431 | Request Header Fields Too Large |
440 | Login Time-out |
444 | No Response |
449 | Retry With |
450 | Blocked by Windows Parental Controls |
451 | Unavailable For Legal Reasons |
494 | Request Header Too Large |
495 | SSL Certificate Error |
496 | SSL Certificate Required |
497 | HTTP Request Sent to HTTPS Port |
498 | Invalid Token |
499 | Client Error |
5XX | Server Error |
500 | Internal Server Error |
501 | Not Implemented |
502 | Bad Gateway |
503 | Service Unavailable |
504 | Gateway Timeout |
505 | HTTP Version Not Supported |
506 | Variant Also Negotiates |
507 | Insufficient Storage |
508 | Loop Detected |
509 | Bandwidth Limit Exceeded |
510 | Not Extended |
511 | Network Authentication Required |
520 | Web Server Returned an Unknown Error |
521 | Web Server Is Down |
522 | Connection Timed Out |
523 | Origin Is Unreachable |
524 | A Timeout Occurred |
525 | SSL Handshake Failed |
526 | Invalid SSL Certificate |
527 | Railgun Error |
529 | Site is Overloaded |
530 | Site is Frozen |
598 | Network Read Timeout Error |
Response Object
description
✅headers
✅- See Header Object for more details.
content
✅- See Media Type Object for more details.
links
⛔- See Link Object for more details.
Callback Object
As a Callback Object
is a container for a Path Item Object, see the Path Item Object for our list of supported components.
Note that we do not currently support making API requests to callback endpoints, they are purely rendered as documentation.
Example Object
summary
✅- If this is not supplied, when rendering Request Body examples we will set this to "Request Example".
description
⛔- We currently do not surface example descriptions anywhere.
value
✅externalValue
⛔- We currently do not surface external example values anywhere.
Link Object
We currently do not support the
Link Object
.
operationRef
operationId
parameters
requestBody
description
server
- See Server Object for more details.
Header Object
Where we support
headers
, and the Header Object, we support everything for headers that we support within the Parameter Object. See Parameter Object for more information.
Tag Object
name
✅description
✅externalDocs
✅- See External Documentation Object for more details.
When handling tags not only do we ingest them when you upload an OpenAPI definition to create Categories, Pages and Subpages, but we also render tags on your API Reference like so:
Reference Object
Prior to rendering your API documentation all $ref
pointers are dereferenced. Additionally, as of OpenAPI 3.1, you can include summary
and description
fields in addition to the $ref
pointer, which will override the summary
and description
fields of the referenced component. Everything else will be fully deferenced.
Relative schemas ($ref: "Pet.json"
) and URL references ($ref: "https://example.com/Pet"
) are not supported on ReadMe and will be rejected on upload. If your schema uses relative schemas or URL references you can instead upload your API definition via rdme
and that will bundle all the necessary schemas together into a single payload acceptable for our API.
Note that we currently struggle to handle recursive and circular reference objects. Under certain circumstances in parameters and request bodies we're able to handle a circular reference it’s within an array (like an array of objects).
Schema Object
Properties
additionalProperties
⚠️- Though JSON Schema Specification Wright Draft 00 specifies that when
additionalProperties
is not present, defaults totrue
, ReadMe defaults tofalse
for a cleaner UI. If you wish to allow users to add additional properties you should explicitly set this totrue
.
- Though JSON Schema Specification Wright Draft 00 specifies that when
allOf
✅anyOf
✅const
✅default
✅description
✅enum
✅exclusiveMaximum
✅exclusiveMinimum
✅format
✅- See Data Types for a list of formats that we support.
items
✅maximum
✅maxItems
✅maxLength
✅maxProperties
✅minimum
✅minItems
✅minLength
✅minProperties
⛔multipleOf
✅not
⛔oneOf
✅pattern
✅patternProperties
⛔properties
✅required
✅title
✅title
in a schema associated with a Parameter or Request Body OAS section is prioritized over that section'sname
property when displaying a label to an end user.
type
⚠️- We support general and mixed
type
declarations however our API Explorer form system does not support settingnull
data for mixed non-primitive and non-boolean nullable schemas. For example,['boolean', 'null']
and['string', 'null']
are supported but['array', 'null']
and['object', 'null']
are not.
- We support general and mixed
uniqueItems
✅
Fixed Fields
deprecated
✅discriminator
✅- See Discriminator Object for more details.
example
✅externalDocs
⛔- See External Documentation Object for more details.
nullable
⚠️- Our API Explorer form system does not support setting null data for
array
,object
, orboolean
types.
- Our API Explorer form system does not support setting null data for
readOnly
✅- Properties marked as
readOnly: true
are only rendered in the Response Schema section.
- Properties marked as
writeOnly
✅- Properties marked as
writeOnly: true
are only rendered in the Request section.
- Properties marked as
xml
⛔- See XML Object for more details.
JSON Schema Dialects
Unicode regular expressions are only supported with OpenAPI v3.1.x documents and JSON Schema v2020-12. If no JSON Schema dialects are specified, we adhere to the OAS and default to v2020-12 for all OpenAPI v3.1.x documents.
We support the following JSON Schema dialects:
Data Types
We support a number of different data types and formats:
Type | Format | Comments |
---|---|---|
boolean | ||
integer | ||
integer | int8 | |
integer | int16 | |
integer | int32 | |
integer | int64 | |
integer | uint8 | |
integer | uint16 | |
integer | uint32 | |
integer | uint64 | |
number | ||
number | float | |
number | double | |
string | ||
string | binary | Will render out a file input. |
string | blob | Will render out a textarea. |
string | byte | ‡ |
string | date | † |
string | dateTime | † |
string | date-time | † |
string | duration | |
string | html | Will render out a textarea. ‡ |
string | json | Will render out a textarea. ‡ |
string | password | Will render out a password field to mask all input. |
string | timestamp | |
string | uri | ‡ |
string | url | ‡ |
string | uuid | ‡ |
† We do not render a date picker for date
and date-time
due to the lack of wide browser support for datetime-local and RFC 3339.
‡ We do not perform any validation on this value to ensure the value remains unchanged.
Discriminator Object
propertyName
✅mapping
✅
XML Object
We currently do not support the
XML Object
.
name
namespace
prefix
attribute
wrapped
Security Scheme Object
type
⚠️- We do not support the
openIdConnect
security type. - We do not support the
mutualTLS
security type that was introduced in OpenAPI 3.1
- We do not support the
description
✅name
✅in
✅scheme
✅bearerFormat
⚠️- The OpenAPI Specification specifies that this describes how the bearer formatted but since we do not support OAuth Flows that would format the bearer, we currently ignore this.
flows
⛔- We currently do not support traditional OAuth flows for generating tokens, instead preferring you use our JWT authentication flow for supplying us with ready-made tokens for your users. See OAuth Flows Object for more details.
openIdConnectUrl
⛔- We do not support the
openIdConnect
security type.
- We do not support the
OAuth Flows Object
We currently do not support OAuth Flows anywhere so we currently ignore the
OAuth Flows Object
. We have plans to support this in the future.
implicit
– OAuth Flow Objectpassword
– OAuth Flow ObjectclientCredentials
– OAuth Flow ObjectauthorizationCode
– OAuth Flow Object
OAuth Flow Object
We do not support OAuth Flows anywhere currently so we ignore the
OAuth Flow Object
. We have plans to support this in the future.
authorizationUrl
tokenUrl
refreshUrl
scopes
Security Requirement Object
While we only support a subset of Security Scheme Objects, we can support all combinations of those objects. For example we can support multiple headers, one header or OAuth, one query parameter and one header and so on.
Specification Extensions
The OpenAPI specification allows for augmenting certain Objects with custom extensions and we support these, but only our extensions. If you have custom extensions in place for things like AWS API Gateways, they will be ignored.
For the full list of our extensions that we offer and support, see OpenAPI Extensions.
Updated 8 months ago