OpenAPI Spec validator

Overview

OpenAPI Spec validator

https://travis-ci.org/p1c2u/openapi-spec-validator.svg?branch=master https://img.shields.io/codecov/c/github/p1c2u/openapi-spec-validator/master.svg?style=flat

About

OpenAPI Spec Validator is a Python library that validates OpenAPI Specs against the OpenAPI 2.0 (aka Swagger) and OpenAPI 3.0 specification. The validator aims to check for full compliance with the Specification.

Installation

$ pip install openapi-spec-validator

Alternatively you can download the code and install from the repository:

$ pip install -e git+https://github.com/p1c2u/openapi-spec-validator.git#egg=openapi_spec_validator

Usage

Command Line Interface

Straight forward way:

$ openapi-spec-validator openapi.yaml

pipes way:

$ cat openapi.yaml | openapi-spec-validator -

docker way:

$ docker run -v path/to/openapi.yaml:/openapi.yaml --rm p1c2u/openapi-spec-validator /openapi.yaml

or more pythonic way:

$ python -m openapi_spec_validator openapi.yaml

Examples

By default, OpenAPI v3 syntax is expected. To validate an OpenAPI v3 spec:

from openapi_spec_validator import validate_spec
from openapi_spec_validator.readers import read_from_filename

spec_dict, spec_url = read_from_filename('openapi.yaml')

# If no exception is raised by validate_spec(), the spec is valid.
validate_spec(spec_dict)

validate_spec({})

Traceback (most recent call last):
    ...
OpenAPIValidationError: 'openapi' is a required property

In order to validate a Swagger / OpenAPI 2.0 spec file, import validate_v2_spec instead of validate_spec. You can also explicitly import validate_v3_spec if you want to disambiguate the expected version.

Add spec_url to validate spec with relative files:

validate_spec(spec_dict, spec_url='file:///path/to/spec/openapi.yaml')

You can also validate spec from url:

from openapi_spec_validator import validate_spec_url

# If no exception is raised by validate_spec_url(), the spec is valid.
validate_spec_url('http://example.com/openapi.json')

If you want to iterate through validation errors:

from openapi_spec_validator import openapi_v3_spec_validator

errors_iterator = openapi_v3_spec_validator.iter_errors(spec)

Related projects

  • openapi-core
    Python library that adds client-side and server-side support for the OpenAPI.
  • openapi-schema-validator
    Python library that validates schema against the OpenAPI Schema Specification v3.0.

License

Copyright (c) 2017-2021, Artur Maciag, All rights reserved. Apache v2

Comments
  • p1c2u/openapi-core#296: Implements OpenAPI 3.1 spec validator

    p1c2u/openapi-core#296: Implements OpenAPI 3.1 spec validator

    As mentioned in https://github.com/p1c2u/openapi-schema-validator/pull/18 this is the extension for OpenAPI 3.1.

    It is created as draft as it install jsonschema and openapi-schema-validator via GitHub in order to use the latest changes for Draft 2020-12.

    The test cases provided in https://github.com/OAI/OpenAPI-Specification/tree/main/tests/v3.1 are used for the implementation.

    Python 2.7 and 3.5 have been removed from the test matrix as they are end of life.

    I'm open for sugestions if any changes are required in the PR.

    opened by nezhar 14
  • PyYAML dependency does not allow any non-beta versions

    PyYAML dependency does not allow any non-beta versions

    In version 0.2.5 the PyYAML dependency was changed to PyYAML>=4.2b1. Since the latest non-beta version of PyYAML is 3.13, this means that dependency resolution fails if you do not allow beta packages.

    Was this intentional? Looking at https://github.com/yaml/pyyaml/issues/193, the release story for PyYAML is a bit of a mess, but my understanding is that 3.13 was released to add Python 3.7 compatibility and the "should the load function be safe by default" issue will be resolved in an upcoming version 5.

    kind/bug/confirmed 
    opened by leamingrad 12
  • On validation error: add cause and context.

    On validation error: add cause and context.

    I often miss the context provided by jsonschema library, so I'm trying to add it.

    Given the following erroneous schema (it misses a description):

    ---
    openapi: 3.0.0
    
    info:
      title: test
      description: test
      version: 0.0.1
    
    paths:
      "/":
        get:
          description: Get the API root
          responses:
            200:
              content:
                application/json:
                  schema:
                    type: string
    

    without this PR, openapi-spec-validator displays:

    {'content': {'application/json': {'schema': {'type': 'string'}}}} is not valid under any of the given schemas
    
    Failed validating 'oneOf' in schema['properties']['paths']['patternProperties']['^\\/']['patternProperties']['^(get|put|post|delete|options|head|patch|trace)$'
    ]['properties']['responses']['patternProperties']['^[1-5](?:\\d{2}|XX)$']:
        {'oneOf': [{'$ref': '#/definitions/Response'},
                   {'$ref': '#/definitions/Reference'}]}
    
    On instance['paths']['/']['get']['responses']['200']:
        {'content': {'application/json': {'schema': {'type': 'string'}}}}
    

    Basically telling « The path./.get.responses.200 is invalid: it should be a Response or a Reference. » without telling me about the missing description.

    With this PR it gives:

    {'content': {'application/json': {'schema': {'type': 'string'}}}} is not valid under any of the given schemas
    
    Failed validating 'oneOf' in schema['properties']['paths']['patternProperties']['^\\/']['patternProperties']['^(get|put|post|delete|options|head|patch|trace)$']['properties']['responses']['patternProperties']['^[1-5](?:\\d{2}|XX)$']:
        {'oneOf': [{'$ref': '#/definitions/Response'},
                   {'$ref': '#/definitions/Reference'}]}
    
    On instance['paths']['/']['get']['responses']['200']:
        {'content': {'application/json': {'schema': {'type': 'string'}}}}
    
    
    Due to those subschema errors:
    
    'description' is a required property
    
    Failed validating 'required' in schema[0]:
        {'additionalProperties': False,
         'patternProperties': {'^x-': {}},
         'properties': {'content': {'additionalProperties': {'$ref': '#/definitions/MediaType'},
                                    'type': 'object'},
                        'description': {'type': 'string'},
                        'headers': {'additionalProperties': {'oneOf': [{'$ref': '#/definitions/Header'},
                                                                       {'$ref': '#/definitions/Reference'}]},
                                    'type': 'object'},
                        'links': {'additionalProperties': {'oneOf': [{'$ref': '#/definitions/Link'},
                                                                     {'$ref': '#/definitions/Reference'}]},
                                  'type': 'object'}},
         'required': ['description'],
         'type': 'object'}
    
    On instance:
        {'content': {'application/json': {'schema': {'type': 'string'}}}}
    
    
    '$ref' is a required property
    
    Failed validating 'required' in schema[1]:
        {'patternProperties': {'^\\$ref$': {'format': 'uri-reference',
                                            'type': 'string'}},
         'required': ['$ref'],
         'type': 'object'}
    
    On instance:
        {'content': {'application/json': {'schema': {'type': 'string'}}}}
    

    This is probably a bit verbose, but I like a lot seeing 'description' is a required property.

    opened by JulienPalard 10
  • OpenAPI 3.0 spec not parsing required properly

    OpenAPI 3.0 spec not parsing required properly

    I have a spec with components that look like this:

    
    components:
      schemas:
        Credit:
          type: object
          properties:
            clientId:
              type: string
        CreditCreate:
          allOf:
            - $ref: '#/components/schemas/Credit'
            - required:
              - clientId
    
    

    I'm doing it like this because there are about 30 fields in credit, and 10 in required. All the fields in required are present in the linked object (or objects if I'm linking more than one). This is rejected by the code in validators.py inside SchemaValidator. iter_errors calls itself recursively on each piece of the allOf, but this doesn't let me reuse another object and simply add some fields as required. I worked around it for now by telling iter_errors to check that the properties field contains something before erroring, but I'm not sure that it is the correct fix.

    This behavior is supported in the swagger editor and in redoc, so I'm working off the assumption that it should be valid 3.0 syntax.

    opened by viralanomaly 9
  • jsonschema 3.0+ support

    jsonschema 3.0+ support

    Hi, the jsonschema has been updated to 3.0+, and maybe has some break changes:

    .eggs/openapi_spec_validator-0.2.4-py3.6.egg/openapi_spec_validator/__init__.py:7: in <module>
        from openapi_spec_validator.factories import JSONSpecValidatorFactory
    .eggs/openapi_spec_validator-0.2.4-py3.6.egg/openapi_spec_validator/factories.py:5: in <module>
        from openapi_spec_validator.generators import (
    .eggs/openapi_spec_validator-0.2.4-py3.6.egg/openapi_spec_validator/generators.py:12: in <module>
        class SpecValidatorsGeneratorFactory:
    .eggs/openapi_spec_validator-0.2.4-py3.6.egg/openapi_spec_validator/generators.py:19: in SpecValidatorsGeneratorFactory
        'properties': _validators.properties_draft4,
    E   AttributeError: module 'jsonschema._validators' has no attribute 'properties_draft4'
    
    kind/bug/confirmed 
    opened by strongbugman 8
  • Added CLI interface for ad-hoc validation

    Added CLI interface for ad-hoc validation

    Hi, i've added a CLI interface for validating local files. For that i've created an entry_point in setup.py pointing to a new file openapi_spec_validator/__main__.py. After you installed the package with pip you are able to run

    $ openapi_spec_validator path_to.yaml
    

    to run a validation. This could also be extended to run tests on URLs, not just local files.

    opened by venthur 7
  • Allow $ref to use `../`  for reference to parent directory file

    Allow $ref to use `../` for reference to parent directory file

    Dir structure:

    ├── fileA.yml
    ├── folderB
    │   └── fileB.yml
    

    From fileB.yml the validator does not permit usage of $ref: ../fileA.yml#/items/id . It works fine without the ../ in the beginning though.

    This would allow the openapi spec v3 files to be rendered on the browser using swagger-ui tool.

    opened by riddhi89 7
  • Can't install through pip

    Can't install through pip

    When I try to install the package I get the following output.

    Collecting openapi-spec-validator
      Could not find a version that satisfies the requirement openapi-spec-validator (from versions: )
    No matching distribution found for openapi-spec-validator
    
    opened by jkklapp 6
  • Valid response definition shows validation error

    Valid response definition shows validation error

    When using a valid OpenAPI spec (validated also by the swagger editor) an error is returned on the responses validation.

    $ python -m openapi_spec_validator ~/development/draft/api.yaml
    {'description': 'Changed with success.', 'content': {'application/json': {'schema': {'$ref': '#/components/responses/GenericSuccess', 'x-scope': ['file:///development/draft/api.yaml']}}}} is not valid under any of the given schemas
    
    Failed validating 'oneOf' in schema['properties']['paths']['patternProperties']['^/']['properties']['post']['properties']['responses']['patternProperties']['^([0-9X]{3})$']:
        {'oneOf': [{'$ref': '#/definitions/response'},
                   {'$ref': '#/definitions/reference'}]}
    
    On instance['paths']['/pets/{id}/comments']['post']['responses']['200']:
        {'content': {'application/json': {'schema': {'$ref': '#/components/responses/GenericSuccess',
                                                     'x-scope': ['file:///development/draft/api.yaml']}}},
         'description': 'Changed with success.'}
    

    The spec looks like:

    ...
        put:
          summary: Comments.
          operationId: api.change
          requestBody:
            description: Something.
            required: true
            content:
              applicaton/json:
                schema:
                  $ref: '#/components/schemas/CChange'
          responses:
            "200":
              description: Changed with success.
              content:
                application/json:
                  schema:
                    $ref: '#/components/responses/GenericSuccess'
    ...
    

    This should not throw an exception. Because the API spec is valid as of https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#responseObject Unless I'm missing something here.

    opened by rafaelcaricio 5
  • OpenAPI 3.0.0 schema fix: Parameter Object must contain 'schema' or 'content'

    OpenAPI 3.0.0 schema fix: Parameter Object must contain 'schema' or 'content'

    See the Fixed Fields section of the specs, towards the end:

    A parameter MUST contain either a schema property, or a content property, but not both.

    Adding the oneOf constraint requiring either content or schema fixes this issue.

    The same issue applies to all objects that refer to Parameter Objects as their basis, such as e.g. Header Objects. I will add to this branch until I've adjusted all of those, and notify when this is done.

    opened by jfinkhaeuser 5
  • Drop Python 2.7 and 3.5 support and bump dependency upper bounds

    Drop Python 2.7 and 3.5 support and bump dependency upper bounds

    Fixes #130 Fixes #135

    jsonschema released version 4.0.0 which dropped support for Python 2.7 and 3.5. openapi-spec-validator should do the same to support new versions of jsonschema. Both upstream dependencies and downstream dependents have already upgraded their jsonschema version constraints, which leads to conflicts with openapi-spec-validator.

    opened by RobbeSneyders 4
  • "Object of type datetime is not JSON serializable" error in version 0.5.1 but not in 0.4.0

    When using the command python3.9 -m openapi_spec_validator example.yml where the example.yml file contains the following:

    openapi: 3.0.0  
    info:  
      title: Example OpenAPI  
      version: 0.0.1  
    paths:  
      /mypath:  
        get:  
          parameters:  
            - name: myparam  
              in: query  
              schema:  
                format: date-time  
                type: string  
                example: 1997-07-16T19:20:30.45Z  
          responses:  
            '200':  
              description: Success  
    

    The result is the error: Object of type datetime is not JSON serializable

    If the example timestamp value in the YAML is wrapped in quotes, then the error does not occur and the result is: OK

    This was observed with Python 3.9.16 and openapi-spec-validator 0.5.1. When using openapi-spec-validator 0.4.0, the error does not occur.

    opened by firstStraw 0
  • Bump certifi from 2022.6.15 to 2022.12.7

    Bump certifi from 2022.6.15 to 2022.12.7

    Bumps certifi from 2022.6.15 to 2022.12.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Properties validation weren't implemented

    Properties validation weren't implemented

    The following schema validation succeeded, even though the prop1 reference is broken.

    openapi: 3.0.0
    info:
      version: '1.0.0'
      title: 'Some Schema'
    paths: {}
    components:
      schemas:    
        SomeDataType:
          type: object
          properties:
            id:
              type: integer
            prop1:
              $ref: '<some-broken-uri>'
            prop2:
              type: string
    
    opened by xeronm 0
  • removing default_handlers breaks openapi-core

    removing default_handlers breaks openapi-core

    It seems like this commit https://github.com/p1c2u/openapi-spec-validator/commit/03d4937a85482bed16e0e92bf6795b8778458227 breaks https://github.com/p1c2u/openapi-core (v0.14.2). Our imports are failing now.

    opened by spasiu 2
  • No specific error information available.

    No specific error information available.

    First of all, I'm focussing on validating models (components/schemas) in an OpenAPI 3.0.0. yaml file.
    I'm testing with a slightly changed petstore.yaml (keep an eye on components/schemas/Pet/properties/id which has an extra attribute min instead of minimal):

    openapi: "3.0.0"
    info:
      version: 1.0.0
      title: Swagger Petstore
      license:
        name: MIT
    servers:
      - url: http://petstore.swagger.io/v1
    paths:
      /pets:
        get:
          summary: List all pets
          operationId: listPets
          tags:
            - pets
          parameters:
            - name: limit
              in: query
              description: How many items to return at one time (max 100)
              required: false
              schema:
                type: integer
                format: int32
          responses:
            200:
              description: An paged array of pets
              headers:
                x-next:
                  description: A link to the next page of responses
                  schema:
                    type: string
              content:
                application/json:    
                  schema:
                    $ref: "#/components/schemas/Pets"
            default:
              description: unexpected error
              content:
                application/json:
                  schema:
                    $ref: "#/components/schemas/Error"
        post:
          summary: Create a pet
          operationId: createPets
          tags:
            - pets
          responses:
            '201':
              description: Null response
            default:
              description: unexpected error
              content:
                application/json:
                  schema:
                    $ref: "#/components/schemas/Error"
      /pets/{petId}:
        get:
          summary: Info for a specific pet
          operationId: showPetById
          tags:
            - pets
          parameters:
            - name: petId
              in: path
              required: true
              description: The id of the pet to retrieve
              schema:
                type: string
          responses:
            '200':
              description: Expected response to a valid request
              content:
                application/json:
                  schema:
                    $ref: "#/components/schemas/Pets"
            default:
              description: unexpected error
              content:
                application/json:
                  schema:
                    $ref: "#/components/schemas/Error"
    components:
      schemas:
        Pet:
          required:
            - id
            - name
          properties:
            id:
              min: 1
              type: integer
              format: int64
            name:
              type: string
            tag:
              type: string
            $ref:
              type: string
        Pets:
          type: array
          items:
            $ref: "#/components/schemas/Pet"
        Error:
          required:
            - code
            - message
          properties:
            code:
              type: integer
              format: int32
            message:
              type: string
    

    Swagger Editor reports nicely on that little "typo" in pet's property id:

    grafik

    No matter what I try with openapi-spec-validator, it reqognizes an error like that from above but the error (OpenAPIValidationError or iterator) is totally unspecific.

    Validating the above yaml with:

      try:
          spec_dict, spec_url = read_from_filename('model.yaml')
          validate_v30_spec(spec_dict)
      except IOError as e:
          print(e)
      except OpenAPIValidationError as e:
          print(e)
    

    ...gives an output like:

    {'description': 'An paged array of pets', 'headers': {'x-next': {'description': 'A link to the next page of responses', 'schema': {'type': 'string'}}}, 'content': {'application/json': {'schema': {'$ref': '#/components/schemas/Pets', 'x-scope': ['']}}}} is not valid under any of the given schemas
    
    Failed validating 'oneOf' in schema['properties']['paths']['patternProperties']['^\\/']['patternProperties']['^(get|put|post|delete|options|head|patch|trace)$']['properties']['responses']['patternProperties']['^[1-5](?:\\d{2}|XX)$']:
        {'oneOf': [{'$ref': '#/definitions/Response'},
                   {'$ref': '#/definitions/Reference'}]}
    
    On instance['paths']['/pets']['get']['responses']['200']:
        {'content': {'application/json': {'schema': {'$ref': '#/components/schemas/Pets',
                                                     'x-scope': ['']}}},
         'description': 'An paged array of pets',
         'headers': {'x-next': {'description': 'A link to the next page of '
                                               'responses',
                                'schema': {'type': 'string'}}}}
    

    No hint on that specific error ("additionalProperty in pet.id" or something like that).

    Is openapi-spec-validator not what I'm looking for? Do I use this validator in a wrong way? Do I miss anything?

    opened by WillFreitag 0
Releases(0.5.1)
  • 0.5.1(Sep 5, 2022)

  • 0.5.0(Sep 2, 2022)

    Changelog

    • detect spec schema version #167
    • static types and Mypy static type check #168
    • tests mark network #169
    • schemas and validators lazy loading proxy #170
    • CLI detect spec version #171
    • Shortcuts refactor and validators explicit usage #172

    Backward incompatibilities

    • redundant shortcuts validate_v*_spec and validate_v*_spec_url removed. Use validate_spec and validate_spec_url with validator parameter instead.
    • default_handlers (and whole handlers package) removed. Use handlers from jsonschema_spec.handlers instead.
    Source code(tar.gz)
    Source code(zip)
  • 0.5.0a3(Aug 31, 2022)

  • 0.5.0a2(Jun 21, 2022)

  • 0.5.0a1(Jan 28, 2022)

  • 0.4.0(Jan 28, 2022)

    Changelog

    • Drop Python 2.7, 3.5 and 3.6 support #137
    • Add Python 3.10 support #137
    • Bump dependency upper bounds #137
    • Drop pyrsistent direct dependency #142
    Source code(tar.gz)
    Source code(zip)
  • 0.3.3(Jan 27, 2022)

  • 0.3.2(Jan 17, 2022)

  • 0.3.1(May 12, 2021)

  • 0.3.0(Feb 24, 2021)

  • 0.2.10(Feb 24, 2021)

    Changelog

    • Switched to using requests rather than direct use of urllib3 (#93)
    • Handlers timeout param fix (#107)
    • Detect duplicate operationId fix (#109)
    • Repair default and $ref issue (#91)
    Source code(tar.gz)
    Source code(zip)
  • 0.2.9(Jul 27, 2020)

  • 0.2.8(Jul 27, 2020)

  • 0.2.7(May 20, 2019)

  • 0.2.6(Feb 28, 2019)

Fast syllable estimation library based on pattern matching.

Syllables: A fast syllable estimator for Python Syllables is a fast, simple syllable estimator for Python. It's intended for use in places where speed

ProseGrinder 26 Dec 14, 2022
Cleaner script to normalize knock's output EPUBs

clean-epub The excellent knock application by Benton Edmondson outputs EPUBs that seem to be DRM-free. However, if you run the application twice on th

2 Dec 16, 2022
Count the number of lines of code in a directory, minus the irrelevant stuff

countloc Simple library to count the lines of code in a directory (excluding stuff like node_modules) Simply just run: countloc node_modules args to

Anish 4 Feb 14, 2022
Fun interactive program to sort a list :)

LHD-Build-Sort-a-list Fun interactive program to sort a list :) Inspiration LHD Build Write a script to sort a list. What it does It is a menu driven

Ananya Gupta 1 Jan 15, 2022
A curated list of python programming language blogs

Python Blogs A curated list of python programming language blogs Contribute Companies/Organization # A B C D E F G H I J K L M N O P Q R S T U V W X Y

Rizky D. Onto 48 Nov 15, 2022
Plugins for MkDocs.

Plugins for MkDocs and Python Markdown pip install neoteroi-mkdocs This package includes the following plugins and extensions: Name Description Type m

35 Dec 23, 2022
Python solutions to solve practical business problems.

Python Business Analytics Also instead of "watching" you can join the link-letter, it's already being sent out to about 90 people and you are free to

Derek Snow 357 Dec 26, 2022
Automatically open a pull request for repositories that have no CONTRIBUTING.md file

automatic-contrib-prs Automatically open a pull request for repositories that have no CONTRIBUTING.md file for a targeted set of repositories. What th

GitHub 8 Oct 20, 2022
Xanadu Quantum Codebook is an experimental, exercise-based introduction to quantum computing using PennyLane.

Xanadu Quantum Codebook The Xanadu Quantum Codebook is an experimental, exercise-based introduction to quantum computing using PennyLane. This reposit

Xanadu 43 Dec 09, 2022
DeltaPy - Tabular Data Augmentation (by @firmai)

DeltaPy⁠⁠ — Tabular Data Augmentation & Feature Engineering Finance Quant Machine Learning ML-Quant.com - Automated Research Repository Introduction T

Derek Snow 470 Dec 28, 2022
A Python library that simplifies the extraction of datasets from XML content.

xmldataset: simple xml parsing 🗃️ XML Dataset: simple xml parsing Documentation: https://xmldataset.readthedocs.io A Python library that simplifies t

James Spurin 75 Dec 30, 2022
✨ Real-life Data Analysis and Model Training Workshop by Global AI Hub.

🎓 Data Analysis and Model Training Course by Global AI Hub Syllabus: Day 1 What is Data? Multimedia Structured and Unstructured Data Data Types Data

Global AI Hub 71 Oct 28, 2022
Toolchain for project structure and documents optimisation

ritocco Toolchain for project structure and documents optimisation

Harvey Wu 1 Jan 12, 2022
Portfolio project for Code Institute Full Stack software development course.

Comic Sales tracker This project is the third milestone project for the Code Institute Diploma in Full Stack Software Development. You can see the fin

1 Jan 10, 2022
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
A Json Schema Generator

JSON Schema Generator Author : Eru Michael About A Json Schema Generator. This is a generic program that: Reads a JSON file similar to what's present

1 Nov 10, 2021
Quickly download, clean up, and install public datasets into a database management system

Finding data is one thing. Getting it ready for analysis is another. Acquiring, cleaning, standardizing and importing publicly available data is time

Weecology 274 Jan 04, 2023
A curated list of awesome mathematics resources

A curated list of awesome mathematics resources

Cyrille Rossant 6.7k Jan 05, 2023
The source code that powers readthedocs.org

Welcome to Read the Docs Purpose Read the Docs hosts documentation for the open source community. It supports Sphinx docs written with reStructuredTex

Read the Docs 7.4k Dec 25, 2022
Swagger UI is a collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API.

Introduction Swagger UI allows anyone — be it your development team or your end consumers — to visualize and interact with the API’s resources without

Swagger 23.2k Dec 29, 2022