๐Ÿ“˜ OpenAPI/Swagger-generated API Reference Documentation

Overview
Redoc logo

Generate interactive API documentation from OpenAPI definitions

Build Status Coverage Status npm License

bundle size npm Docker Build Status

This is the README for the 2.x version of Redoc (React-based). The README for the 1.x version is on the v1.x branch

About Redoc

Redoc is an open-source tool for generating documentation from OpenAPI (fka Swagger) definitions.

By default Redoc offers a three-panel, responsive layout:

  • The left panel contains a search bar and navigation menu.
  • The central panel contains the documentation.
  • The right panel contains request and response examples.

Redoc demo

Live demo

If you want to see how Redoc will render your OpenAPI definition, you can try it out online at https://redocly.github.io/redoc/.

A version of the Swagger Petstore API is displayed by default. To test it with your own OpenAPI definition, enter the URL for your definition and select TRY IT.

Redoc vs. Reference vs. Portals

Redoc is Redocly's community-edition product. Looking for something more? Checkout the following feature comparison of Redocly's premium products versus Redoc:

Features Redoc Reference Portals
Specs
Swagger 2.0 โˆš โˆš โˆš
OpenAPI 3.0 โˆš โˆš โˆš
OpenAPI 3.1 โˆš (basic) โˆš โˆš
Theming
Fonts/colors โˆš โˆš โˆš
Extra theme options โˆš โˆš
Performance
Pagination โˆš โˆš
Search (enhanced) โˆš โˆš
Search (server-side) โˆš
Multiple APIs
Multiple versions โˆš โˆš
Multiple APIs โˆš
API catalog โˆš
Additional features
Try-it console โˆš โˆš
Automated code samples โˆš โˆš
Deep links โˆš โˆš
More SEO control โˆš
Contextual docs โˆš
Landing pages โˆš
React hooks for more control โˆš
Personalization โˆš
Analytics integrations โˆš
Feedback Coming Soon

Refer to the Redocly's documentation for more information on these products:

Features

Customization options

Customization services

  • High-level grouping in side-menu with the x-tagGroups specification extension
  • Branding/customizations using the theme option

Support

  • OpenAPI v3.0 support
  • Basic OpenAPI v3.1 support
  • Broad OpenAPI v2.0 feature support (yes, it supports even discriminator)
  • Code samples support (via vendor extension)

Releases

Important: all the 2.x releases are deployed to npm and can be used with jsdeliver:

Additionally, all the 1.x releases are hosted on our GitHub Pages-based CDN (deprecated):

Version Guidance

Redoc Release OpenAPI Specification
2.0.0-alpha.54 3.1, 3.0.x, 2.0
2.0.0-alpha.x 3.0, 2.0
1.19.x 2.0
1.18.x 2.0
1.17.x 2.0

Showcase

Lint OpenAPI definitions

Redocly's OpenAPI CLI is an open source command-line tool that you can use to lint your OpenAPI definition. Linting helps you to catch errors and inconsistencies in your OpenAPI definition before publishing.

Refer to Lint configuration in the OpenAPI documentation for more information.

Deployment

TL;DR final code example

To render your OpenAPI definition using Redoc, use the following HTML code sample and replace the spec-url attribute with the url or local file address to your definition.

<!DOCTYPE html>
<html>
  <head>
    <title>Redoc</title>
    <!-- needed for adaptive design -->
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://fonts.googleapis.com/css?family=Montserrat:300,400,700|Roboto:300,400,700" rel="stylesheet">

    <!--
    Redoc doesn't change outer page styles
    -->
    <style>
      body {
        margin: 0;
        padding: 0;
      }
    </style>
  </head>
  <body>
    <redoc spec-url='http://petstore.swagger.io/v2/swagger.json'></redoc>
    <script src="https://cdn.jsdelivr.net/npm/redoc@latest/bundles/redoc.standalone.js"> </script>
  </body>
</html>

For step-by-step instructions for how to get started using Redoc to render your OpenAPI definition, refer to the Redoc quickstart guide.

See IE11 Support Notes for information on IE support for Redoc.

Redoc CLI

For more information on Redoc's commmand-line interface, refer to Using the Redoc CLI.

Configuration

Security Definition location

You can inject the Security Definitions widget into any place in your definition description. For more information, refer to Security definitions injection.

OpenAPI specification extensions

Redoc uses the following specification extensions:

  • x-logo - is used to specify API logo
  • x-traitTag - useful for handling out common things like Pagination, Rate-Limits, etc
  • x-codeSamples - specify operation code samples
  • x-examples - specify JSON example for requests
  • x-nullable - mark schema param as a nullable
  • x-displayName - specify human-friendly names for the menu categories
  • x-tagGroups - group tags by categories in the side menu
  • x-servers - ability to specify different servers for API (backported from OpenAPI 3.0)
  • x-ignoredHeaderParameters - ability to specify header parameter names to ignore
  • x-additionalPropertiesName - ability to supply a descriptive name for the additional property keys
  • x-summary - For Response object, use as the response button text, with description rendered under the button
  • x-extendedDiscriminator - In Schemas, uses this to solve name-clash issues with the standard discriminator
  • x-explicitMappingOnly - In Schemas, display a more descriptive property name in objects with additionalProperties when viewing the property list with an object

<redoc> options object

You can use all of the following options with the standalone version of the tag by kebab-casing them. For example, scrollYOffset becomes scroll-y-offset, and expandResponses becomes expand-responses.

  • disableSearch - disable search indexing and search box.
  • expandDefaultServerVariables - enable expanding default server variables, default false.
  • expandResponses - specify which responses to expand by default by response codes. Values should be passed as comma-separated list without spaces e.g. expandResponses="200,201". Special value "all" expands all responses by default. Be careful: this option can slow-down documentation rendering time.
  • generatedPayloadSamplesMaxDepth - set the maximum render depth for JSON payload samples (responses and request body). The default value is 10.
  • maxDisplayedEnumValues - display only specified number of enum values. hide rest values under spoiler.
  • hideDownloadButton - do not show "Download" spec button. THIS DOESN'T MAKE YOUR SPEC PRIVATE, it just hides the button.
  • hideHostname - if set, the protocol and hostname is not shown in the operation definition.
  • hideLoading - do not show loading animation. Useful for small docs.
  • hideSchemaPattern - if set, the pattern is not shown in the schema.
  • hideSingleRequestSampleTab - do not show the request sample tab for requests with only one sample.
  • expandSingleSchemaField - automatically expand single field in a schema
  • jsonSampleExpandLevel - set the default expand level for JSON payload samples (responses and request body). Special value "all" expands all levels. The default value is 2.
  • hideSchemaTitles - do not display schema title next to to the type
  • simpleOneOfTypeLabel - show only unique oneOf types in the label without titles
  • lazyRendering - Not implemented yet if set, enables lazy rendering mode in ReDoc. This mode is useful for APIs with big number of operations (e.g. > 50). In this mode ReDoc shows initial screen ASAP and then renders the rest operations asynchronously while showing progress bar on the top. Check out the demo for the example.
  • menuToggle - if true clicking second time on expanded menu item will collapse it, default true.
  • nativeScrollbars - use native scrollbar for sidemenu instead of perfect-scroll (scrolling performance optimization for big specs).
  • noAutoAuth - do not inject Authentication section automatically.
  • onlyRequiredInSamples - shows only required fields in request samples.
  • pathInMiddlePanel - show path link and HTTP verb in the middle panel instead of the right one.
  • requiredPropsFirst - show required properties first ordered in the same order as in required array.
  • scrollYOffset - If set, specifies a vertical scroll-offset. This is often useful when there are fixed positioned elements at the top of the page, such as navbars, headers etc; scrollYOffset can be specified in various ways:
    • number: A fixed number of pixels to be used as offset.
    • selector: selector of the element to be used for specifying the offset. The distance from the top of the page to the element's bottom will be used as offset.
    • function: A getter function. Must return a number representing the offset (in pixels).
  • showExtensions - show vendor extensions ("x-" fields). Extensions used by ReDoc are ignored. Can be boolean or an array of string with names of extensions to display.
  • sortPropsAlphabetically - sort properties alphabetically.
  • payloadSampleIdx - if set, payload sample will be inserted at this index or last. Indexes start from 0.
  • theme - ReDoc theme. For details check theme docs.
  • untrustedSpec - if set, the spec is considered untrusted and all HTML/markdown is sanitized to prevent XSS. Disabled by default for performance reasons. Enable this option if you work with untrusted user data!
  • sideNavStyle - can be specified in various ways:
    • summary-only: displays a summary in the sidebar navigation item. (default)
    • path-only: displays a path in the sidebar navigation item.

<redoc> theme object

  • spacing
    • unit: 5 # main spacing unit used in autocomputed theme values later
    • sectionHorizontal: 40 # Horizontal section padding. COMPUTED: spacing.unit * 8
    • sectionVertical: 40 # Horizontal section padding. COMPUTED: spacing.unit * 8
  • breakpoints # breakpoints for switching three/two and mobile view layouts
    • small: '50rem'
    • medium: '85rem'
    • large: '105rem'
  • colors
    • tonalOffset: 0.3 # default tonal offset used in computations
  • typography
    • fontSize: '14px'
    • lineHeight: '1.5em'
    • fontWeightRegular: '400'
    • fontWeightBold: '600'
    • fontWeightLight: '300'
    • fontFamily: 'Roboto, sans-serif'
    • smoothing: 'antialiased'
    • optimizeSpeed: true
    • headings
      • fontFamily: 'Montserrat, sans-serif'
      • fontWeight: '400'
      • lineHeight: '1.6em'
    • code # inline code styling
      • fontSize: '13px'
      • fontFamily: 'Courier, monospace'
      • lineHeight: # COMPUTED: typography.lineHeight
      • fontWeight: # COMPUTED: typography.fontWeightRegular
      • color: '#e53935'
      • backgroundColor: 'rgba(38, 50, 56, 0.05)'
      • wrap: false # whether to break word for inline blocks (otherwise they can overflow)
    • links
      • color: # COMPUTED: colors.primary.main
      • visited: # COMPUTED: typography.links.color
      • hover: # COMPUTED: lighten(0.2 typography.links.color)
  • menu
    • width: '260px'
    • backgroundColor: '#fafafa'
    • textColor: '#333333'
    • activeTextColor: # COMPUTED: theme.menu.textColor (if set by user) or theme.colors.primary.main
    • groupItems # Group headings
      • textTransform: 'uppercase'
    • level1Items # Level 1 items like tags or section 1st level items
      • textTransform: 'none'
    • arrow # menu arrow
      • size: '1.5em'
      • color: # COMPUTED: theme.menu.textColor
  • logo
    • maxHeight: # COMPUTED: menu.width
    • maxWidth: # COMPUTED: menu.width
    • gutter: '2px' # logo image padding
  • rightPanel
    • backgroundColor: '#263238'
    • width: '40%'
    • textColor: '#ffffff'

Development

see CONTRIBUTING.md

Comments
  • Tags side menu with markdown and object description

    Tags side menu with markdown and object description

    Pretty quick workaround to be able to add additional side menu sections to tags, in the same manner it is done in the info description object.

    Also an component was added which prints a referenced object/schema, and optionally a referenced example.

    Combining both one may achieve similar structure to the one Stripe uses for their own documentation.

    opened by nanov 75
  • Migrate ReDoc to React

    Migrate ReDoc to React

    Hey, ReDoc community!

    To support OpenAPI 3.0 I am working on a major refactor of the codebase. As part of this refactor I am considering rewriting ReDoc view layer completely to React.

    Why? I've been working with React on a few side project for the last 5-6 month and I really loved working with it comparing to Angular:

    • much much simpler, no magic
    • more performant (especially since React 16 release aka Fiber)
    • the community is healthier - much more stable ready-to use modules (there are lots in Angular too, but usually they are part of some huge UI-packs)
    • smaller bundle size
    • simpler to build-in live updates
    • server-side rendering actually working
    • I love styled-components

    Also, I often hear in the issues or PRs that "I don't know Angular but I will try". Probably React can lower the barrier for new contributors.

    I will try to achieve fully backward compatibility with the Angular version.

    Now I want to hear the voice of community! What do you think? Do you find this idea is good or bad! Any concerns! Or just vote ๐Ÿ‘ or ๐Ÿ‘Ž

    Thanks in advance!

    cc contributors (sorry for bothering): @bfirsh @brendo @adamaltman @cesarlevel @IvanGoncharov @amanganiello @kedashoe @alairock @Joe-noh @gierschv @jsmartfo @jaingaurav @agallou @jacobbaskin @MikeRalphson @bennyn @adamd @LeFnord @wilsonge @philsturgeon @khorolets @pgolm @jfeltesse-mdsol @Alfaspider @oblakeerickson @Jean-Daniel @KtorZ @jimmyjames @bioball

    question 
    opened by RomanHotsiy 56
  • Render model definitions? (feature support)

    Render model definitions? (feature support)

    Hello all,

    Thanks for this amazing project! ;) It is now our default view engine of our Swagger spec.

    As you can see in swagger-ui repo, there is a popular issue where people are asking for Models rendering, just like swagger-editor does. This would be great if it could be added to ReDoc! ;)

    Thanks!

    Type: Enhancement feature 
    opened by PedroMD 35
  • redoc-cli: ReferenceError: URL is not defined

    redoc-cli: ReferenceError: URL is not defined

    Hi there!

    There seems to be an issue with redoc-cli ATM.

    Noticed it with one of our docs, but can be reproduced using the demo/swagger.yaml file from this repository:

    $> yarn add redoc-cli
    $> ./node_modules/.bin/redoc-cli bundle -o './redoc-test' demo/swagger.yaml
    [ReDoc Compatibility mode]: Converting OpenAPI 2.0 to OpenAPI 3.0
    Prerendering docs
    ReferenceError: URL is not defined
        at removeQueryString (/tmp/node_modules/redoc/bundles/redoc.lib.js:6940:15)
        at /tmp/node_modules/redoc/bundles/redoc.lib.js:11055:137
        at Array.map (<anonymous>)
        at Object.children (/tmp/node_modules/redoc/bundles/redoc.lib.js:11051:104)
        at ReactDOMServerRenderer.render (/tmp/node_modules/react-dom/cjs/react-dom-server.node.development.js:3412:55)
        at ReactDOMServerRenderer.read (/tmp/node_modules/react-dom/cjs/react-dom-server.node.development.js:3161:29)
        at Object.renderToString (/tmp/node_modules/react-dom/cjs/react-dom-server.node.development.js:3646:27)
        at /tmp/node_modules/redoc-cli/index.js:189:29
        at Generator.next (<anonymous>)
        at fulfilled (/tmp/node_modules/redoc-cli/index.js:5:58)
    
    $> nodejs --version
    v8.10.0
    $> yarn --version
    1.13.0
    
    opened by srats 30
  • Webpack 5 `Cant Resolve` errors in `v2.0.0-rc.58`

    Webpack 5 `Cant Resolve` errors in `v2.0.0-rc.58`

    Describe the bug Running Redoc Standalone in Docusaurus 2.0.0-beta.9 and getting webpack issues stemming from the redoc openapi-core library, which does not seem to be open source

    Module not found: Error: Can't resolve 'path' in '/Users/mySite/site/node_modules/@redocly/openapi-core/lib/config'
    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
    This is no longer the case. Verify if you need this module and configure a polyfill for it.
    
    If you want to include a polyfill, you need to:
    	- add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }'
    	- install 'path-browserify'
    If you don't want to include a polyfill, you can use an empty module like this:
    	resolve.fallback: { "path": false }
    
    Module not found: Error: Can't resolve 'path' in '/Users/mySite/site/node_modules/@redocly/openapi-core/lib/redocly'
    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
    This is no longer the case. Verify if you need this module and configure a polyfill for it.
    
    If you want to include a polyfill, you need to:
    	- add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }'
    	- install 'path-browserify'
    If you don't want to include a polyfill, you can use an empty module like this:
    	resolve.fallback: { "path": false }
    
    Module not found: Error: Can't resolve 'os' in '/Users/mySite/site/node_modules/@redocly/openapi-core/lib/redocly'
    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
    This is no longer the case. Verify if you need this module and configure a polyfill for it.
    
    If you want to include a polyfill, you need to:
    	- add a fallback 'resolve.fallback: { "os": require.resolve("os-browserify/browser") }'
    	- install 'os-browserify'
    If you don't want to include a polyfill, you can use an empty module like this:
    	resolve.fallback: { "os": false }
    
    Module not found: Error: Can't resolve 'path' in '/Users/mySite/site/node_modules/@redocly/openapi-core/lib'
    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
    This is no longer the case. Verify if you need this module and configure a polyfill for it.
    
    If you want to include a polyfill, you need to:
    	- add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }'
    	- install 'path-browserify'
    If you don't want to include a polyfill, you can use an empty module like this:
    	resolve.fallback: { "path": false }
    
    Module not found: Error: Can't resolve 'tty' in '/Users/mySite/site/node_modules/@redocly/openapi-core/node_modules/colorette'
    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
    This is no longer the case. Verify if you need this module and configure a polyfill for it.
    
    If you want to include a polyfill, you need to:
    	- add a fallback 'resolve.fallback: { "tty": require.resolve("tty-browserify") }'
    	- install 'tty-browserify'
    If you don't want to include a polyfill, you can use an empty module like this:
    	resolve.fallback: { "tty": false }
    
    Module not found: Error: Can't resolve 'buffer' in '/Users/mySite/site/node_modules/yaml/browser/dist'
    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
    This is no longer the case. Verify if you need this module and configure a polyfill for it.
    
    If you want to include a polyfill, you need to:
    	- add a fallback 'resolve.fallback: { "buffer": require.resolve("buffer/") }'
    	- install 'buffer'
    If you don't want to include a polyfill, you can use an empty module like this:
    	resolve.fallback: { "buffer": false }
    client (webpack 5.65.0) compiled with 6 errors and 1 warning
    

    Expected behavior Page should render without Webpack/polyfill issues

    Type: Bug p1 
    opened by ajrice6713 27
  • Can't fetch local file

    Can't fetch local file

    My apologies if this is spelled out somewhere -- I looked through the issues.

    I can't seem to direct ReDoc to load my OpenAPI spec from the local filesystem -- only via http. I have tried the following:

    <redoc spec-url='swagger.json'></redoc>
    <redoc spec-url='file:///Full/Path/swagger.json'></redoc>
    

    in addition to other permutations. However, they all result in this error:

    Unable to resolve $ref pointer "file:///<pathname to my spec file>"

    Is there any way to have ReDoc load the spec locally?

    Type: Enhancement add-to-faq 
    opened by yspotts 26
  • False positive recursion

    False positive recursion

    Hello there, wrestling following issue.

    Imagine I want to reuse some schema, let's say ID โ€“ย I have following in ./helpers/id.yaml:

    properties:
      id:
        type: number
    required:
      - id
    

    And here is a simple OpenAPI, which should result in a simple structure of three nested objects, which all wants to reference the id helper.

    openapi: 3.0.0
    info:
      title: False positive recursion
      version: '3.0'
    paths:
      /documents:
        get:
          summary: Example
          responses:
            '200':
              description: OK
              content:
                application/json:
                  schema:
                    allOf:
                      - $ref: ./helpers/id.yaml
                      - properties:
                          second:
                            allOf:
                              - $ref: ./helpers/id.yaml
                              - properties:
                                  third:
                                    allOf:
                                      - $ref: ./helpers/id.yaml
                                      - properties:
                                          something:
                                            type: string
    

    Whereas the first and second object are correctly rendered with required id attribute, the third object is flagged as recursive:

    image

    Any idea? Is it a bug or am I missing something?

    Type: Bug p2 
    opened by krystof-k 22
  • Properties on the same level as anyOf/oneOf/... are missing and anyOf merge is illogical

    Properties on the same level as anyOf/oneOf/... are missing and anyOf merge is illogical

    If I specify a schema for an object, which has properties and in addition some optional schemas it could conform to, the properties are not shown.

    Example:

    openapi: 3.0.2
    info:
      title: Example
      version: 0.4.0
    paths:
      '/example':
        get:
          responses:
            '200':
              description: 'cube:properties is not shown in the schema'
              content:
                application/json:
                  schema:
                    type: object
                    required:
                      - 'cube:dimensions'
                    properties:
                      'cube:dimensions':
                        type: object
                        oneOf:
                          - title: Spatial Dimension
                            type: object
                          - title: Temporal Dimension
                            type: object
                    anyOf:
                      - $ref: '#/components/schemas/collection_eo'
                      - $ref: '#/components/schemas/collection_sar'
                      - $ref: '#/components/schemas/collection_sci'
    components:
      schemas:
        collection_eo:
          type: object
          format: eo
        collection_sar:
          type: object
          format: sar
        collection_sci:
          type: object
          format: sci
    

    I would cube:dimensions expect to show up in ReDoc as it does in Swagger Editor: image

    Tested with ReDoc standalone version 2.0.0-rc.2

    opened by m-mohr 20
  • Regression: Double slashes added to full URL display

    Regression: Double slashes added to full URL display

    Attempted to upgrade to [email protected] this morning and noticed that it is inserting double slashes in the full url for a route:

    image

    Minimal reproduction.

    openapi: 3.0.2
    
    info:
      title: Double Slash
      version: v1
    servers:
      - url: https://api.test.invalid
    
    paths:
      /v1:
        get:
          summary: Double slash bug
          responses:
            200:
              description: OK
    
    opened by mramato 19
  • Error: Incompatible types in allOf at

    Error: Incompatible types in allOf at "undefined"

    Using 2.0.0-rc.4 with an OpenAPI spec 3.0.2 file, parsing fails and I'm getting the following error in the browser console:

    redoc.standalone.js:26397 Error: Incompatible types in allOf at "undefined" at e.mergeAllOf (redoc.standalone.js:38564) at redoc.standalone.js:38614 at Array.map () at r (redoc.standalone.js:38613) at e.hoistOneOfs (redoc.standalone.js:38625) at e.mergeAllOf (redoc.standalone.js:38537) at e.mergeAllOf (redoc.standalone.js:38568) at redoc.standalone.js:38861 at Array.map () at e.initOneOf (redoc.standalone.js:38859)

    I'm not able to understand the point in which fails.

    My OpenAPI spec 3.0.2 json file validates correctly using a tool like oas-validate from https://github.com/Mermade/oas-kit

    Type: Bug 
    opened by pintux 19
  • Is there any option to load multiple swaggers in SpecUrl

    Is there any option to load multiple swaggers in SpecUrl

    Hi, I am loading the Swagger in the below format,

    <RedocStandalone
            specUrl = 'https://....../datafile.json'
            />
    

    can anyone please let me know if there's any option to load multiple Swaggers in this context.

    opened by binobose 18
  • The SLM OAS YAML file cannot be loaded by Redoc (an open source tool), which results in a browser crash and Out Of Memory error.

    The SLM OAS YAML file cannot be loaded by Redoc (an open source tool), which results in a browser crash and Out Of Memory error.

    The SLM OAS YAML file cannot be loaded by Redoc (an open source tool), which results in a browser crash and Out Of Memory error.

    We would like to render the SLM OAS YAML file on the Redoc open-source tool. Redoc cannot render SLM OAS YAML because of the nested or circular schema definition. We have around 200 APIs that use schema definition often, which causes the rendering issues.

    Here is an example of a circular reference in the SLM YAML file. SampleEndpoint ย  --> SchemaA ย  ย  --> SchemaB ย  ย  ย  --> SchemaC ย  ย  ย  ย  --> SchemaA ย  ย  ย  --> SchemaD ย ย ย ย ย ย ย ย --> SchemaB

    NOTE: I ran it locally using the "redocly preview-docs" command. I tried pagination, which works fine in Redocly's premium version. Can it be supported in Redoc?

    opened by sagayakwad26 0
  • Remove path aliases from Documentation

    Remove path aliases from Documentation

    Describe the problem to be solved

    When you have path aliases in openapi.yaml with $ref, for example

    paths:
      /municipios/{municipio}:
        get:
          operationId: getMunicipality
          summary: Detalhes sobre Municรญpio  
          parameters:
            - in: path
              name: municipio
              required: true
              schema:
                type: string
                example: รฉvora
              allowReserved: true
              description: Municรญpio
            - $ref: '#/components/parameters/json'
          responses:
            '200':
              description: Detalhes do Municรญpio
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/municipio'
    
      /municipio/{municipio}:
        $ref: '#/paths/~1municipios~1%7Bmunicipio%7D'
    

    /municipio/{municipio} is de facto merely a path alias of /municipios/{municipio}

    In the documentation both paths rules and response samples are shown in duplicate.

    Describe the solution you'd like

    I would like to remove path aliases from documentation, that is, basically remove these duplicates, since I just use them due to backward compatibility.

    Describe alternatives you've considered

    I realized this might work in client-side, but I still need to understand how

    document.querySelectorAll('div[data-section-id]').forEach(el=> {
        const attr = el.getAttribute('data-section-id'))
        // ...
    })
    
    Type: Enhancement 
    opened by jfoclpf 0
  • Command-line interface to bundle my docs into a zero-dependency HTML file

    Command-line interface to bundle my docs into a zero-dependency HTML file

    Hello, I'm sorry for my bad English. When I use redoc-cli to generate a zero-dependency HTML file๏ผŒI encounter a strange problem. In the zero-dependency HTML file, I found that my request body lost some properties, but if I use command openapi preview-docs it is ok. Then I try to lint, it reports some error like this 'Expected type Schema (object) but got string. But I'm sure there's nothing wrong with what I wrote. So I lint over and over again. It still reports me the same error. Suddenly I had an epiphany, I added the .yaml suffix to the file. It actually worked!!!!! I wonder why this is, I just added the suffix to the file. Thank you very much!

    opened by Zacama 0
  • redocli docker to build html file

    redocli docker to build html file

    Describe the problem to be solved For now, the only choice to use redocli is to install via npm/yarn and build with that.

    npm i -g redoc-cli

    redoc-cli build -o openapi/test.html openapi/test.yml

    Describe the solution you'd like

    docker run -it -v $PWD:/spec redoc-cli build -o output.html swagger.yml

    Describe alternatives you've considered Use npm/yarn install is an alternative. But in the CI/CD spirit, we don't want install/build tools each time CI is triggered..

    Thanks to taking time.

    Additional context Environnement: MacOS Ventura 13.1 CI/CD: GitlabCI. Docker: Docker version 20.10.20, build 9fdeb9c.

    Type: Enhancement 
    opened by Itarix 0
  • Redoc.init callback not working on error

    Redoc.init callback not working on error

    Describe the bug Callback function registered on Redoc.init is not called on error while rendering redoc.

    Redoc.init(
      event.data,
      config,
      document.getElementById('redoc-container'),
      callback ---> doesn't seem to be called.
    );
    

    If something's wrong in my code, please tell me how to apply callback function on error.

    Expected behavior Callback function should be called on error. image

    Minimal reproducible OpenAPI snippet(if possible)

    Screenshots image

    Additional context Add any other context about the problem here.

    Type: Bug help wanted 
    opened by broccolism 4
  • Can't build on windows 10

    Can't build on windows 10

    Describe the bug Cannot build on windows 10 system

    Expected behavior A running local version

    System: OS: Windows 10 10.0.19044 CPU: (12) x64 Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz Memory: 4.51 GB / 15.86 GB Binaries: Node: 16.14.0 - C:\Program Files\nodejs\node.EXE Yarn: 1.22.17 - ~\AppData\Roaming\npm\yarn.CMD npm: 8.5.1 - C:\Program Files\nodejs\npm.CMD Browsers: Edge: Spartan (44.19041.1266.0), Chromium (108.0.1462.42) Internet Explorer: 11.0.19041.1566

    Additional context

    ERROR in ./src/utils/helpers.ts 137:15-35

    Module not found: Error: Can't resolve 'url' in 'D:\Weblabs\nodejs\redoc\src\utils'

    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it.

    If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "url": require.resolve("url/") }' - install 'url' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "url": false }

    ERROR in ./src/utils/helpers.ts 137:15-35

    Module not found: Error: Can't resolve 'url' in 'D:\Weblabs\nodejs\redoc\src\utils'

    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it.

    If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "url": require.resolve("url/") }' - install 'url' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "url": false }

    ERROR in cli/index.ts:4:33

    TS2307: Cannot find module 'update-notifier' or its corresponding type declarations. 2 | /* tslint:disable:no-implicit-dependencies */ 3 | import * as React from 'react';

    4 | import * as updateNotifier from 'update-notifier'; | ^^^^^^^^^^^^^^^^^ 5 | import { renderToString } from 'react-dom/server'; 6 | import { ServerStyleSheet } from 'styled-components'; 7 |

    ERROR in cli/index.ts:8:25

    TS2307: Cannot find module 'handlebars' or its corresponding type declarations. 6 | import { ServerStyleSheet } from 'styled-components'; 7 |

    8 | import { compile } from 'handlebars'; | ^^^^^^^^^^^^ 9 | import { createServer, IncomingMessage, ServerResponse } from 'http'; 10 | import { dirname, join, resolve, extname as getExtName } from 'path'; 11 |

    ERROR in cli/index.ts:17:23

    TS2307: Cannot find module 'chokidar' or its corresponding type declarations. 15 | import { createStore, loadAndBundleSpec, Redoc } from 'redoc'; 16 |

    17 | import { watch } from 'chokidar'; | ^^^^^^^^^^ 18 | import { 19 | createReadStream, 20 | existsSync,

    ERROR in cli/index.ts:26:25

    TS2307: Cannot find module 'mkdirp' or its corresponding type declarations. 24 | writeFileSync, 25 | } from 'fs';

    26 | import * as mkdirp from 'mkdirp'; | ^^^^^^^^ 27 | 28 | import * as YargsParser from 'yargs'; 29 | // eslint-disable-next-line import/no-extraneous-dependencies

    ERROR in cli/index.ts:122:1

    TS2769: No overload matches this call. Overload 1 of 7, '(command: string | readonly string[], showInHelp: false, builder?: ((args: Argv<{}>) => void) | ((args: Argv<{}>) => PromiseLike<Argv<{}>>) | ((args: Argv<{}>) => Argv<...>) | undefined, handler?: ((args: ArgumentsCamelCase<...>) => void | Promise<...>) | undefined, middlewares?: MiddlewareFunction<...>[] | undefined, deprecated?: string | ... 1 more ... | undefined): Argv<...>', gave the following error. Argument of type '"start the server"' is not assignable to parameter of type 'false'. Overload 2 of 7, '(command: string | readonly string[], description: string, builder?: ((args: Argv<{}>) => void) | ((args: Argv<{}>) => PromiseLike<Argv<{}>>) | ((args: Argv<{}>) => Argv<...>) | undefined, handler?: ((args: ArgumentsCamelCase<...>) => void | Promise<...>) | undefined, middlewares?: MiddlewareFunction<...>[] | undefined, deprecated?: string | ... 1 more ... | undefined): Argv<...>', gave the following error. Type '(res: { [argName: string]: unknown; _: (string | number)[]; $0: string; }) => { [argName: string]: unknown; _: (string | number)[]; $0: string; }' is not assignable to type 'MiddlewareFunction<{}>'. Type '{ [argName: string]: unknown; _: (string | number)[]; $0: string; }' is not assignable to type 'void | Promise'. Type '{ [argName: string]: unknown; _: (string | number)[]; $0: string; }' is missing the following properties from type 'Promise': then, catch, [Symbol.toStringTag], finally Overload 3 of 7, '(command: string | readonly string[], description: string, builder?: { [key: string]: Options; } | undefined, handler?: ((args: ArgumentsCamelCase<InferredOptionTypes<{ [key: string]: Options; }>>) => void | Promise<...>) | undefined, middlewares?: MiddlewareFunction<...>[] | undefined, deprecated?: string | ... 1 more ... | undefined): Argv<...>', gave the following error. Argument of type '(yargs: Argv<{}>) => Argv<{}>' is not assignable to parameter of type '{ [key: string]: Options; }'. Index signature is missing in type '(yargs: Argv<{}>) => Argv<{}>'. 120 | }; 121 |

    122 | YargsParser.command( | ^^^^^^^^^^^^^^^^^^^^ 123 | 'serve ', | ^^^^^^^^^^^^^^^^^ 124 | 'start the server', | ^^^^^^^^^^^^^^^^^ 125 | yargs => { | ^^^^^^^^^^^^^^^^^ 126 | yargs.positional('spec', { | ^^^^^^^^^^^^^^^^^ 127 | describe: 'path or URL to your spec', | ^^^^^^^^^^^^^^^^^ 128 | }); | ^^^^^^^^^^^^^^^^^ 129 | | ^^^^^^^^^^^^^^^^^ 130 | yargs.options('title', { | ^^^^^^^^^^^^^^^^^ 131 | describe: 'Page Title', | ^^^^^^^^^^^^^^^^^ 132 | type: 'string', | ^^^^^^^^^^^^^^^^^ 133 | }); | ^^^^^^^^^^^^^^^^^ 134 | | ^^^^^^^^^^^^^^^^^ 135 | yargs.option('s', { | ^^^^^^^^^^^^^^^^^ 136 | alias: 'ssr', | ^^^^^^^^^^^^^^^^^ 137 | describe: 'Enable server-side rendering', | ^^^^^^^^^^^^^^^^^ 138 | type: 'boolean', | ^^^^^^^^^^^^^^^^^ 139 | }); | ^^^^^^^^^^^^^^^^^ 140 | | ^^^^^^^^^^^^^^^^^ 141 | yargs.option('h', { | ^^^^^^^^^^^^^^^^^ 142 | alias: 'host', | ^^^^^^^^^^^^^^^^^ 143 | type: 'string', | ^^^^^^^^^^^^^^^^^ 144 | default: '127.0.0.1', | ^^^^^^^^^^^^^^^^^ 145 | }); | ^^^^^^^^^^^^^^^^^ 146 | | ^^^^^^^^^^^^^^^^^ 147 | yargs.option('p', { | ^^^^^^^^^^^^^^^^^ 148 | alias: 'port', | ^^^^^^^^^^^^^^^^^ 149 | type: 'number', | ^^^^^^^^^^^^^^^^^ 150 | default: 8080, | ^^^^^^^^^^^^^^^^^ 151 | }); | ^^^^^^^^^^^^^^^^^ 152 | | ^^^^^^^^^^^^^^^^^ 153 | yargs.option('w', { | ^^^^^^^^^^^^^^^^^ 154 | alias: 'watch', | ^^^^^^^^^^^^^^^^^ 155 | type: 'boolean', | ^^^^^^^^^^^^^^^^^ 156 | }); | ^^^^^^^^^^^^^^^^^ 157 | | ^^^^^^^^^^^^^^^^^ 158 | yargs.options('disable-google-font', { | ^^^^^^^^^^^^^^^^^ 159 | describe: 'Disable Google Font', | ^^^^^^^^^^^^^^^^^ 160 | type: 'boolean', | ^^^^^^^^^^^^^^^^^ 161 | default: false, | ^^^^^^^^^^^^^^^^^ 162 | }); | ^^^^^^^^^^^^^^^^^ 163 | | ^^^^^^^^^^^^^^^^^ 164 | yargs.demandOption('spec'); | ^^^^^^^^^^^^^^^^^ 165 | return yargs; | ^^^^^^^^^^^^^^^^^ 166 | }, | ^^^^^^^^^^^^^^^^^ 167 | async argv => { | ^^^^^^^^^^^^^^^^^ 168 | const config: Options = { | ^^^^^^^^^^^^^^^^^ 169 | ssr: argv.ssr as boolean, | ^^^^^^^^^^^^^^^^^ 170 | title: argv.title as string, | ^^^^^^^^^^^^^^^^^ 171 | watch: argv.watch as boolean, | ^^^^^^^^^^^^^^^^^ 172 | disableGoogleFont: argv.disableGoogleFont as boolean, | ^^^^^^^^^^^^^^^^^ 173 | templateFileName: argv.template as string, | ^^^^^^^^^^^^^^^^^ 174 | templateOptions: argv.templateOptions || {}, | ^^^^^^^^^^^^^^^^^ 175 | redocOptions: getObjectOrJSON(argv.options), | ^^^^^^^^^^^^^^^^^ 176 | }; | ^^^^^^^^^^^^^^^^^ 177 | | ^^^^^^^^^^^^^^^^^ 178 | try { | ^^^^^^^^^^^^^^^^^ 179 | notifyUpdateCliVersion(); | ^^^^^^^^^^^^^^^^^ 180 | await serve(argv.host as string, argv.port as number, argv.spec as string, config); | ^^^^^^^^^^^^^^^^^ 181 | } catch (e) { | ^^^^^^^^^^^^^^^^^ 182 | handleError(e); | ^^^^^^^^^^^^^^^^^ 183 | } | ^^^^^^^^^^^^^^^^^ 184 | }, | ^^^^^^^^^^^^^^^^^ 185 | [ | ^^^^^^^^^^^^^^^^^ 186 | res => { | ^^^^^^^^^^^^^^^^^ 187 | console.log( | ^^^^^^^^^^^^^^^^^ 188 | \nโš ๏ธ This command is deprecated. Use "npx @redocly/cli preview-docs petstore.yaml"\n, | ^^^^^^^^^^^^^^^^^ 189 | ); | ^^^^^^^^^^^^^^^^^ 190 | return res; | ^^^^^^^^^^^^^^^^^ 191 | }, | ^^^^^^^^^^^^^^^^^ 192 | ], | ^^^^^^^^^^^^^^^^^ 193 | ) | ^^ 194 | .command( 195 | 'build ', 196 | 'build definition into zero-dependency HTML-file',

    ERROR in cli/index.ts:122:1

    TS2769: No overload matches this call. Overload 1 of 7, '(command: string | readonly string[], showInHelp: false, builder?: ((args: Argv<{}>) => void) | ((args: Argv<{}>) => PromiseLike<Argv<{}>>) | ((args: Argv<{}>) => Argv<...>) | undefined, handler?: ((args: ArgumentsCamelCase<...>) => void | Promise<...>) | undefined, middlewares?: MiddlewareFunction<...>[] | undefined, deprecated?: string | ... 1 more ... | undefined): Argv<...>', gave the following error. Argument of type '"bundle spec into zero-dependency HTML-file [deprecated]"' is not assignable to parameter of type 'false'. Overload 2 of 7, '(command: string | readonly string[], description: string, builder?: ((args: Argv<{}>) => void) | ((args: Argv<{}>) => PromiseLike<Argv<{}>>) | ((args: Argv<{}>) => Argv<...>) | undefined, handler?: ((args: ArgumentsCamelCase<...>) => void | Promise<...>) | undefined, middlewares?: MiddlewareFunction<...>[] | undefined, deprecated?: string | ... 1 more ... | undefined): Argv<...>', gave the following error. Type '(res: { [argName: string]: unknown; _: (string | number)[]; $0: string; }) => { [argName: string]: unknown; _: (string | number)[]; $0: string; }' is not assignable to type 'MiddlewareFunction<{}>'. Type '{ [argName: string]: unknown; _: (string | number)[]; $0: string; }' is not assignable to type 'void | Promise'. Type '{ [argName: string]: unknown; _: (string | number)[]; $0: string; }' is not assignable to type 'Promise'. Overload 3 of 7, '(command: string | readonly string[], description: string, builder?: { [key: string]: Options; } | undefined, handler?: ((args: ArgumentsCamelCase<InferredOptionTypes<{ [key: string]: Options; }>>) => void | Promise<...>) | undefined, middlewares?: MiddlewareFunction<...>[] | undefined, deprecated?: string | ... 1 more ... | undefined): Argv<...>', gave the following error. Argument of type '(yargs: any) => any' is not assignable to parameter of type '{ [key: string]: Options; }'. Index signature is missing in type '(yargs: any) => any'. 120 | }; 121 |

    122 | YargsParser.command( | ^^^^^^^^^^^^^^^^^^^^ 123 | 'serve ', | ^^^^^^^^^^^^^^^^^ 124 | 'start the server', | ^^^^^^^^^^^^^^^^^ 125 | yargs => { | ^^^^^^^^^^^^^^^^^ 126 | yargs.positional('spec', { | ^^^^^^^^^^^^^^^^^ 127 | describe: 'path or URL to your spec', | ^^^^^^^^^^^^^^^^^ 128 | }); | ^^^^^^^^^^^^^^^^^ 129 | | ^^^^^^^^^^^^^^^^^ 130 | yargs.options('title', { | ^^^^^^^^^^^^^^^^^ 131 | describe: 'Page Title', | ^^^^^^^^^^^^^^^^^ 132 | type: 'string', | ^^^^^^^^^^^^^^^^^ 133 | }); | ^^^^^^^^^^^^^^^^^ 134 | | ^^^^^^^^^^^^^^^^^ 135 | yargs.option('s', { | ^^^^^^^^^^^^^^^^^ 136 | alias: 'ssr', | ^^^^^^^^^^^^^^^^^ 137 | describe: 'Enable server-side rendering', | ^^^^^^^^^^^^^^^^^ 138 | type: 'boolean', | ^^^^^^^^^^^^^^^^^ 139 | }); | ^^^^^^^^^^^^^^^^^ 140 | | ^^^^^^^^^^^^^^^^^ 141 | yargs.option('h', { | ^^^^^^^^^^^^^^^^^ 142 | alias: 'host', | ^^^^^^^^^^^^^^^^^ 143 | type: 'string', | ^^^^^^^^^^^^^^^^^ 144 | default: '127.0.0.1', | ^^^^^^^^^^^^^^^^^ 145 | }); | ^^^^^^^^^^^^^^^^^ 146 | | ^^^^^^^^^^^^^^^^^ 147 | yargs.option('p', { | ^^^^^^^^^^^^^^^^^ 148 | alias: 'port', | ^^^^^^^^^^^^^^^^^ 149 | type: 'number', | ^^^^^^^^^^^^^^^^^ 150 | default: 8080, | ^^^^^^^^^^^^^^^^^ 151 | }); | ^^^^^^^^^^^^^^^^^ 152 | | ^^^^^^^^^^^^^^^^^ 153 | yargs.option('w', { | ^^^^^^^^^^^^^^^^^ 154 | alias: 'watch', | ^^^^^^^^^^^^^^^^^ 155 | type: 'boolean', | ^^^^^^^^^^^^^^^^^ 156 | }); | ^^^^^^^^^^^^^^^^^ 157 | | ^^^^^^^^^^^^^^^^^ 158 | yargs.options('disable-google-font', { | ^^^^^^^^^^^^^^^^^ 159 | describe: 'Disable Google Font', | ^^^^^^^^^^^^^^^^^ 160 | type: 'boolean', | ^^^^^^^^^^^^^^^^^ 161 | default: false, | ^^^^^^^^^^^^^^^^^ 162 | }); | ^^^^^^^^^^^^^^^^^ 163 | | ^^^^^^^^^^^^^^^^^ 164 | yargs.demandOption('spec'); | ^^^^^^^^^^^^^^^^^ 165 | return yargs; | ^^^^^^^^^^^^^^^^^ 166 | }, | ^^^^^^^^^^^^^^^^^ 167 | async argv => { | ^^^^^^^^^^^^^^^^^ 168 | const config: Options = { | ^^^^^^^^^^^^^^^^^ 169 | ssr: argv.ssr as boolean, | ^^^^^^^^^^^^^^^^^ 170 | title: argv.title as string, | ^^^^^^^^^^^^^^^^^ 171 | watch: argv.watch as boolean, | ^^^^^^^^^^^^^^^^^ 172 | disableGoogleFont: argv.disableGoogleFont as boolean, | ^^^^^^^^^^^^^^^^^ 173 | templateFileName: argv.template as string, | ^^^^^^^^^^^^^^^^^ 174 | templateOptions: argv.templateOptions || {}, | ^^^^^^^^^^^^^^^^^ 175 | redocOptions: getObjectOrJSON(argv.options), | ^^^^^^^^^^^^^^^^^ 176 | }; | ^^^^^^^^^^^^^^^^^ 177 | | ^^^^^^^^^^^^^^^^^ 178 | try { | ^^^^^^^^^^^^^^^^^ 179 | notifyUpdateCliVersion(); | ^^^^^^^^^^^^^^^^^ 180 | await serve(argv.host as string, argv.port as number, argv.spec as string, config); | ^^^^^^^^^^^^^^^^^ 181 | } catch (e) { | ^^^^^^^^^^^^^^^^^ 182 | handleError(e); | ^^^^^^^^^^^^^^^^^ 183 | } | ^^^^^^^^^^^^^^^^^ 184 | }, | ^^^^^^^^^^^^^^^^^ 185 | [ | ^^^^^^^^^^^^^^^^^ 186 | res => { | ^^^^^^^^^^^^^^^^^ 187 | console.log( | ^^^^^^^^^^^^^^^^^ 188 | \nโš ๏ธ This command is deprecated. Use "npx @redocly/cli preview-docs petstore.yaml"\n, | ^^^^^^^^^^^^^^^^^ 189 | ); | ^^^^^^^^^^^^^^^^^ 190 | return res; | ^^^^^^^^^^^^^^^^^ 191 | }, | ^^^^^^^^^^^^^^^^^ 192 | ], | ^^^^^^^^^^^^^^^^^ 193 | ) | ^^^^^^^^^^^^^^^^^ 194 | .command( | ^^^^^^^^^^^^^^^^^ 195 | 'build ', | ^^^^^^^^^^^^^^^^^ 196 | 'build definition into zero-dependency HTML-file', | ^^^^^^^^^^^^^^^^^ 197 | builderForBuildCommand, | ^^^^^^^^^^^^^^^^^ 198 | handlerForBuildCommand, | ^^^^^^^^^^^^^^^^^ 199 | ) | ^^^^^^^^^^^^^^^^^ 200 | .command( | ^^^^^^^^^^^^^^^^^ 201 | 'bundle ', | ^^^^^^^^^^^^^^^^^ 202 | 'bundle spec into zero-dependency HTML-file [deprecated]', | ^^^^^^^^^^^^^^^^^ 203 | builderForBuildCommand, | ^^^^^^^^^^^^^^^^^ 204 | handlerForBuildCommand, | ^^^^^^^^^^^^^^^^^ 205 | [ | ^^^^^^^^^^^^^^^^^ 206 | res => { | ^^^^^^^^^^^^^^^^^ 207 | console.log(\nโš ๏ธ This command is deprecated. Use "build" command instead.\n); | ^^^^^^^^^^^^^^^^^ 208 | return res; | ^^^^^^^^^^^^^^^^^ 209 | }, | ^^^^^^^^^^^^^^^^^ 210 | ], | ^^^^^^^^^^^^^^^^^ 211 | ) | ^^^^ 212 | .demandCommand() 213 | .options('t', { 214 | alias: 'template',

    ERROR in src/components/SideMenu/styled.elements.ts:1:10

    TS2305: Module '"../../../node_modules/classnames"' has no exported member 'default'.

    1 | import { default as classnames } from 'classnames'; | ^^^^^^^ 2 | import { darken } from 'polished'; 3 | 4 | import { deprecatedCss, ShelfIcon } from '../../common-elements';

    Type: Bug 
    opened by clabnet 0
Releases(v2.0.0)
Owner
Redocly
At last, API docs you can be proud of
Redocly
Automated generation of real Swagger/OpenAPI 2.0 schemas from Django REST Framework code.

drf-yasg - Yet another Swagger generator Generate real Swagger/OpenAPI 2.0 specifications from a Django Rest Framework API. Compatible with Django Res

Cristi Vรฎjdea 3k Dec 31, 2022
Swagger Documentation Generator for Django REST Framework: deprecated

Django REST Swagger: deprecated (2019-06-04) This project is no longer being maintained. Please consider drf-yasg as an alternative/successor. I haven

Marc Gibbons 2.6k Jan 3, 2023
Test utility for validating OpenAPI documentation

DRF OpenAPI Tester This is a test utility to validate DRF Test Responses against OpenAPI 2 and 3 schema. It has built-in support for: OpenAPI 2/3 yaml

snok 106 Jan 5, 2023
Automatic links from code examples to reference documentation

sphinx-codeautolink Automatic links from Python code examples to reference documentation at the flick of a switch! sphinx-codeautolink analyses the co

Felix Hildรฉn 41 Dec 17, 2022
A swagger tool for tornado, using python to write api doc!

SwaggerDoc About A swagger tool for tornado, using python to write api doc! Installation pip install swagger-doc Quick Start code import tornado.ioloo

aaashuai 1 Jan 10, 2022
API spec validator and OpenAPI document generator for Python web frameworks.

API spec validator and OpenAPI document generator for Python web frameworks.

1001001 249 Dec 22, 2022
Flask-Rebar combines flask, marshmallow, and swagger for robust REST services.

Flask-Rebar Flask-Rebar combines flask, marshmallow, and swagger for robust REST services. Features Request and Response Validation - Flask-Rebar reli

PlanGrid 223 Dec 19, 2022
Sane and flexible OpenAPI 3 schema generation for Django REST framework.

drf-spectacular Sane and flexible OpenAPI 3.0 schema generation for Django REST framework. This project has 3 goals: Extract as much schema informatio

T. Franzel 1.4k Jan 8, 2023
API Documentation for Python Projects

API Documentation for Python Projects. Example pdoc -o ./html pdoc generates this website: pdoc.dev/docs. Installation pip install pdoc pdoc is compat

mitmproxy 1.4k Jan 7, 2023
๐Ÿ“– Generate markdown API documentation from Google-style Python docstring. The lazy alternative to Sphinx.

lazydocs Generate markdown API documentation for Google-style Python docstring. Getting Started โ€ข Features โ€ข Documentation โ€ข Support โ€ข Contribution โ€ข

Machine Learning Tooling 118 Dec 31, 2022
Automated Integration Testing and Live Documentation for your API

Automated Integration Testing and Live Documentation for your API

ScanAPI 1.3k Dec 30, 2022
An open source utility for creating publication quality LaTex figures generated from OpenFOAM data files.

foamTEX An open source utility for creating publication quality LaTex figures generated from OpenFOAM data files. Explore the docs ยป Report Bug ยท Requ

null 1 Dec 19, 2021
Main repository for the Sphinx documentation builder

Sphinx Sphinx is a tool that makes it easy to create intelligent and beautiful documentation for Python projects (or other documents consisting of mul

null 5.1k Jan 2, 2023
A curated list of awesome tools for Sphinx Python Documentation Generator

Awesome Sphinx (Python Documentation Generator) A curated list of awesome extra libraries, software and resources for Sphinx (Python Documentation Gen

Hyunjun Kim 831 Dec 27, 2022
Literate-style documentation generator.

888888b. 888 Y88b 888 888 888 d88P 888 888 .d8888b .d8888b .d88b. 8888888P" 888 888 d88P" d88P" d88""88b 888 888 888

Pycco 808 Dec 27, 2022
Main repository for the Sphinx documentation builder

Sphinx Sphinx is a tool that makes it easy to create intelligent and beautiful documentation for Python projects (or other documents consisting of mul

null 5.1k Jan 4, 2023
Project documentation with Markdown.

MkDocs Project documentation with Markdown. View the MkDocs documentation. Project release notes. Visit the MkDocs wiki for community resources, inclu

MkDocs 15.6k Jan 2, 2023
Watch a Sphinx directory and rebuild the documentation when a change is detected. Also includes a livereload enabled web server.

sphinx-autobuild Rebuild Sphinx documentation on changes, with live-reload in the browser. Installation sphinx-autobuild is available on PyPI. It can

Executable Books 440 Jan 6, 2023
Your Project with Great Documentation.

Read Latest Documentation - Browse GitHub Code Repository The only thing worse than documentation never written, is documentation written but never di

Timothy Edmund Crosley 809 Dec 28, 2022