OpenAPI Compatibility Chart
This OpenAPI Compatibility Chart aims to document every part of the OpenAPI Specification that we do and don't support in the API Explorer (i.e., "View" mode), 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
descriptionproperties 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 ObjectjsonSchemaDialectjsonSchemaDialectis 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
pathsandwebhooks— 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✅summaryis 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 theuseSpecVersionflag. - When uploading via the API, this value is used only if the
x-readme-versionrequest 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✅identifieris 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$refpointer 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 ObjectpathItemsis 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
$refpointers are dereferenced prior to rendering.
- All
summary✅description✅get✅put✅post✅delete✅options✅head✅patch✅trace✅servers⛔- We currently do not support
serversdeclarations 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
serversdeclarations 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 Objectwithin 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:
| Data type |
| Path | Query, | Cookie | Header |
|---|---|---|---|---|---|---|
matrix | primitive |
| ✅ | |||
matrix | primitive |
| ✅ | |||
matrix | array |
| ✅ | |||
matrix | array |
| ✅ | |||
matrix | object |
| ✅ | |||
matrix | object |
| ✅ | |||
label | primitive |
| ✅ | |||
label | primitive |
| ✅ | |||
label | array |
| ✅ | |||
label | array |
| ✅ | |||
label | object |
| ✅ | |||
label | object |
| ✅ | |||
form | primitive |
| ✅ | ✅ | ||
form | primitive |
| ✅ | ✅ | ||
form | array |
| ✅ | ✅ | ||
form | array |
| ✅ | ✅ | ||
form | object |
| ✅ | ✅ | ||
form | object |
| ✅ | ✅ | ||
simple | array |
| ✅ | ✅ | ||
simple | array |
| ✅ | ✅ | ||
spaceDelimited | array |
| ✅ | |||
spaceDelimited | array |
| ✅ | |||
spaceDelimited | object |
| ✅ | |||
spaceDelimited | object |
| ⛔ | |||
spaceDelimited | query |
| ⚠️ | ⚠️ | ⚠️ | ⚠️ |
spaceDelimited | query |
| ⚠️ | ⚠️ | ⚠️ | ⚠️ |
pipeDelimited | array |
| ✅ | |||
pipeDelimited | array |
| ✅ | |||
pipeDelimited | object |
| ✅ | |||
pipeDelimited | object |
| ⛔ | |||
pipeDelimited | query |
| ⚠️ | ⚠️ | ⚠️ | ⚠️ |
pipeDelimited | query |
| ⚠️ | ⚠️ | ⚠️ | ⚠️ |
deepObject | object |
| ✅ (including arrays of objects, serialized using the module) | |||
deepObject | object |
| ✅ |
spaceDelimitedandpipeDelimitedsupport onqueryandform-dataparameters, 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 acontentdeclaration 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
encodingformultipart/form-datamedia types.
- We only support
Encoding Object
We only support the
Encoding Objectonmultipart/form-datamedia types.
contentType⛔headers⛔style⚠️- We support the
styleparameter formultipart/form-datamedia types. See the style support list for more details.
- We support the
explode⚠️- We support the
explodeparameter formultipart/form-datamedia 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>XXvariant.
| 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.
operationRefoperationIdparametersrequestBodydescriptionserver- 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
additionalPropertiesis not present, defaults totrue, ReadMe defaults tofalsefor 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✅titlein a schema associated with a Parameter or Request Body OAS section is prioritized over that section'snameproperty when displaying a label to an end user.
type⚠️- We support general and mixed
typedeclarations however our API Explorer form system does not support settingnulldata 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, orbooleantypes.
- Our API Explorer form system does not support setting null data for
readOnly✅- Properties marked as
readOnly: trueare only rendered in the Response Schema section.
- Properties marked as
writeOnly✅- Properties marked as
writeOnly: trueare 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.
namenamespaceprefixattributewrapped
Security Scheme Object
type⚠️- We do not support the
openIdConnectsecurity type. - We do not support the
mutualTLSsecurity 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 support the Authorization Code and Client Credentials grant types. See OAuth Flows Object for more details.
- For more information on how to configure OAuth Flows, check out our OAuth Flows docs .
openIdConnectUrl⛔- We do not support the
openIdConnectsecurity type.
- We do not support the
OAuth Flows Object
authorizationCode✅clientCredentials✅implicit⛔password⛔
OAuth Flow Object
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 5 days ago