Translate APIs described by OpenAPI Specifications (OAS) into GraphQL

Overview

GitHub last commit Join the chat at https://gitter.im/IBM/openapi-to-graphql

OpenAPI-to-GraphQL

Translate APIs described by OpenAPI Specifications (OAS) or Swagger into GraphQL.

Overview of translation

Getting started

OpenAPI-to-GraphQL can be used in two ways:

CLI

The Command Line Interface (CLI) provides a convenient way to start a GraphQL server wrapping an API for a given OpenAPI Specification:

  1. Install the OpenAPI-to-GraphQL CLI using:
    npm i -g openapi-to-graphql-cli
  2. Then, run the OpenAPI-to-GraphQL command and point it to an OpenAPI Specification:
    openapi-to-graphql <OAS JSON file path or remote url> [options]

For further details, refer to the openapi-to-graphql-cli documentation.

Library

Use OpenAPI-to-GraphQL as a library in your application to generate GraphQL schemas.

  1. Install OpenAPI-to-GraphQL as a dependency:
    npm i -s openapi-to-graphql
  2. Require OpenAPI-to-GraphQL and use the createGraphQLSchema function:
    const { createGraphQLSchema } = require("openapi-to-graphql");
    // load or construct OAS (const oas = ...)
    const { schema, report } = await createGraphQLSchema(oas);

For further details, refer to the openapi-to-graphql documentation.

Tutorials

Here are some guides to further help you get started:

  • CLI + Loopback tutorial: Learn how to quickly spin up GraphQL wrappers using the OpenAPI-to-GraphQL CLI.
  • Library tutorial: Learn how to use OpenAPI-to-GraphQL as a library, and how to improve the resulting GraphQL wrappers using OAS link definitions.
  • LoopBack tutorial: Learn how to use OpenAPI-to-GraphQL to create GraphQL wrappers for APIs created with LoopBack 4.
  • Subscriptions tutorial: Learn how to create a GraphQL API that supports subscription operations - including how to set up the API server that creates a PubSub instance wrapping a MQTT client.

Characteristics

  • Data-centric The GraphQL interface is created around the data definitions in the given OAS, not around the endpoints, leading to a natural use of GraphQL.

    Example of data-centric design
  • Nested data Links defined in the OAS are used to create nested data structures, allowing for (deeply) nested queries.

    Example of links resolution
  • Automatic query resolution Automatically generated resolvers translate (nested) GraphQL queries to API requests. Request results are translated back to GraphQL responses.

    Example of query resolution
  • Mutations Non-safe, non-idempotent API operations (e.g., POST, PUT, DELETE) are translated to GraphQL mutations. Input payload is type-checked.

    Example of mutation
  • Subscriptions GraphQL subscriptions allow clients to receive a stream of events, such as updates whenever data changes on the GraphQL server. OpenAPI-to-GraphQL can create subscriptions based on callback objects defined in the OAS.

    Example of subscription
  • Authentication OpenAPI-to-GraphQL currently supports authentication via API Key and basic auth. OpenAPI-to-GraphQL wraps secured endpoints into a viewer, which takes the API key / credentials as input.

    Example of authentication
  • API Sanitation Parts of an API that not compatible with GraphQL are automatically sanitized. For example, API parameters and data definition names with unsupported characters (e.g., -, ., ,, :, ;...) are removed. GraphQL queries are desanitized to correctly invoke the REST API and the responses are resanitized to create GraphQL-compliant results.

    Example of sanitation
  • Custom request options Provide headers and query parameters to send with every API request. This allows, for example, to handle authentication or tag requests from GraphQL.

  • Swagger and OpenAPI 3 support OpenAPI-to-GraphQL can handle both Swagger (OpenAPI specification 2.0) as well as OpenAPI specification 3.

Development

OpenAPI-to-GraphQL is written in TypeScript. Within each of OpenAPI-to-GraphQL's packages, all source code is contained in the src folder. Use npm run build or npm test to transpile the source files into the final library in the lib folder. Entry-point for the library is index.js in lib.

Research

Our research paper, "Generating GraphQL-Wrappers for REST(-like) APIs", can be found here. The paper describes the challenges of building OpenAPI-to-GraphQL and an experiment in which we evaluated OpenAPI-to-GraphQL against 959 publicly available OAS, provided by APIs.guru, and successfully created GraphQL interfaces for 89.5% of them.

To run the experiment, in the openapi-to-graphql package, load APIs.guru specifications, found here, into the /tmp folder:

npm run guru-load

Then, run tests:

npm run guru-test <number of APIs to test at most>

Similar projects

  • swagger-to-graphql turns a given Swagger (OpenAPI Specification 2.0) into a GraphQL interface, which resolves against the original API. GraphQL schema is based on endpoints, not on data definitions. No links are considered.

  • json-to-graphql turns given JSON objects / arrays into a GraphQL schema. resolve functions need to be provided by the user.

  • StackOverflow discussion points to the above projects.

License

MIT

Comments
  • Cannot generate grapqhl schema for Stripe API

    Cannot generate grapqhl schema for Stripe API

    Describe the bug Not able to generate Graphql Schema with openapi-to-graphql cli using Stripe's API OAS definition

    To Reproduce Steps to reproduce the behavior:

    1. install the openapi-to-graphql-cli
    2. try generating schema by running: openapi-to-graphql https://api.apis.guru/v2/specs/stripe.com/2019-03-14/swagger.json

    Expected behavior The graphql server starts with generated Stripe API schema

    Actual result Getting the following error:

    openapi-to-graphql https://api.apis.guru/v2/specs/stripe.com/2019-03-14/swagger.json(node:54348) ExperimentalWarning: The http2 module is an experimental API.
    OpenAPI-to-GraphQL creation event error:  Cannot read property 'schema' of null
    

    Additional context Up to date latest OAS Stripe's spec can be grabbed here: https://github.com/stripe/openapi/blob/master/openapi/spec3.json *same generation result as described above

    opened by keblodev 26
  • Parse callbacks from Open API and create subscriptions

    Parse callbacks from Open API and create subscriptions

    After reading #80, here is a proposal on a way to handle callbacks and create corresponding subscription fields.

    There is only one test for now, i would like your feedback to know if you agree with the choices made, before expanding test phases.

    Signed-off-by: Edouard Maleix [email protected]

    opened by getlarge 24
  • POST Queries?

    POST Queries?

    A simple question:

    Openapi-to-Graphql sees some of the endpoints as mutations. However, these are not really mutations, they are queries. All these require a POST request to be sent instead of a GET, since they have several parameters and it's easier to transmit those in the request body.

    Can I make Openapi-to-Graphql to handle these as Queries? Do I have to edit the generated GraphQL schema manually to achieve this?

    opened by gtamas 23
  • Add ability to customize graphql schema with OAS extensions

    Add ability to customize graphql schema with OAS extensions

    Hi there 👋

    First of all, thanks for the awesome library. We've been using it at @apideck-io with great success!

    Recently we forked the repo because we needed granular control over the naming of certain schemas/operations. It's not always possible to use title fields or similar, since we have other tooling using those as well. We needed a way to customise naming specifically for GraphQL.

    We came up with a solution using OpenAPI extensions. We think it could be useful to other users of openapi-to-graphql so we're contributing it back 🎉

    Let me know if you're interested in having something like this, otherwise we'll keep it in our fork :smile:

    Here's an API spec I used for testing: https://gist.github.com/elsmr/ac35f5dc7dbf7a42e60276f688955640. I also included the graphql schema output before & after.

    There's also more features that could be added using this approach, for example a property whitelist for schemas etc.

    Cheers

    image

    opened by elsmr 17
  • Auto parse fields from snake_case to camelCase on schema fields

    Auto parse fields from snake_case to camelCase on schema fields

    Hi! We have a problem about auto parsing snake_case to camelCase of schema fields. How we can disable this? We have fields of model for example "target_id" and don't want to parse to "targetId".

    The same problem occurs when the reponse is JSON graphql type: {"DATA1": "something"}

    parsed to:

    {"dATA1": "something"}

    Thanks

    enhancement 
    opened by josepmorey 17
  • Getting Started

    Getting Started

    For http://v4.loopback.io/getting-started-oasgraph.html some things should be changed.

    As per a user comment (https://github.com/strongloop/loopback-next/issues/1762), for git clone it's more preferable to use the https link instead of the ssh link.

    That would be a short term thing. As per https://github.com/strongloop/v4.loopback.io/issues/43 the Developer Experience of having to link a dependency is very poor. It's much more preferable to have the following:

    npm i -g oasgraph
    oasgraph ./openapi.json
    

    and for production a user can install the dependency via package.json and build out a npm script as follows:

    start: ./node_modules/oasgraph ./openapi.json
    

    And then be able to run npm start


    Lastly the getting started page is very all over the place and not a good guide to "get started" as it currently stands as it assumes a user has an app already.

    A much better Getting Started would be to say that lets build on LoopBack's Getting Started ... or add a step to clone a project from LoopBack 4 as follows:

    npm i -g @loopback/cli
    lb4 example todo
    cd example todo // You can even point to LB Documentation for this but it's better if it's all on 1 page. 
    npm i oasgraph // After this is available via npm
    npm start
    // Visit /openapi.json and save to disk at './openapi.json' --> Maybe we can provide a script to pull it from server and save to disk?
    Ctrl+C
    // Add a command to package.json as follows:
    > start:oasgraph: "./node_modules/oasgraph ./openapi.json"
    npm run start:oasgraph
    // Visit GraphQL Link
    
    opened by virkt25 16
  • FAIL  test/example_api.test.js on master

    FAIL test/example_api.test.js on master

    Hello guys,

    The test/example_api.test.js is currently broken on master. Stack (npm run test):

    `● Link parameters as constants and variables with request payload

    expect(received).toEqual(expected)
    
    Difference:
    
    - Expected
    + Received
    
      Object {
    -   "data": Object {
    -     "postScanner": Object {
    -       "body": "req.body: body, req.query.query: query, req.path.path: path",
    -       "everythingLink2": Object {
    -         "body": "http://localhost:3002/api/scanner/path_post_200_body_query_path_application/json_req.body: body, req.query.query: query, req.path.path: path_query_path_close",
    -       },
    -     },
    -   },
    +   "errors": Array [
    +     [GraphQLError: Cannot query field "everythingLink2" on type "Scanner". Did you mean "everythingLink"?],
    +   ],
      }
    
      286 |   }`
      287 |   return graphql(createdSchema, query).then(result => {
    > 288 |     expect(result).toEqual({
          |                    ^
      289 |       data: {
      290 |         "postScanner": {
      291 |           "body": "req.body: body, req.query.query: query, req.path.path: path",
    
      at toEqual (test/example_api.test.js:288:20)
    

    `

    opened by thejibz 13
  • Missing Query Schemas

    Missing Query Schemas

    I recently reported in issue #92 that I now no longer produce an OAS in Swagger 2.0 format but now produce one in OpenApi 3.0.1 format. :

    swagger.txt

    Even though I seem to get better results with that, the results are still somewhat disappointing when using OASGraph to generate the schema and trying to use the generated OAS in GraphiQL.

    The following problems still occur:

    1. SearchOrders (and possibly others) is missing from the schema and docs even though it's in the Swagger.json file.

    2. Also, as mentioned in issue #107 how can I get the docs to present the schema in alphabetical order?

    opened by simax 13
  • MISSING_RESPONSE_SCHEMA warnings

    MISSING_RESPONSE_SCHEMA warnings

    Hi,

    Im trying to use openapi-to-graphql to convert this OAS to graphql -https://app.swaggerhub.com/apis/OpenChannel/Market-API/2.0.25

    I've download the schema and I'm using this command to process it:

    openapi-to-graphql OpenChannel-Market-API-2.0.25-resolved.yaml

    However, I'm getting multiple warnings as follows:

    "warnings": [
        {
          "type": "MISSING_RESPONSE_SCHEMA",
          "message": "Operation GET /apps has no (valid) response schema. You can use the fillEmptyResponses option to create a placeholder schema",
          "mitigation": "Ignore operation."
        },
        {
          "type": "MISSING_RESPONSE_SCHEMA",
          "message": "Operation POST /apps has no (valid) response schema. You can use the fillEmptyResponses option to create a placeholder schema",
          "mitigation": "Ignore operation."
        },
        {
          "type": "MISSING_RESPONSE_SCHEMA",
          "message": "Operation GET /apps/{appId} has no (valid) response schema. You can use the fillEmptyResponses option to create a placeholder schema",
          "mitigation": "Ignore operation."
        } .......
    
    ,
      "numOps": 86,
      "numOpsQuery": 34,
      "numOpsMutation": 52,
      "numOpsSubscription": 0,
      "numQueriesCreated": 0,
      "numMutationsCreated": 0,
      "numSubscriptionsCreated": 0
    

    I think the problem is related to the sections of the OAS file that look like this:

    "responses": {
              "400": {
                "description": "Bad Request - Required parameters are missing, malformed or invalid"
              },
              "default": {
                "description": "OK",
                "schema": {
                  "$ref": "#/definitions/AppPages"
                }
              }
            }
          },
    

    i.e. the $ref statement and it not linking to the definitions section.

    Is there anything I can do to resolve this ?

    opened by carlskii 11
  • Added selectQueryOrMutationField option

    Added selectQueryOrMutationField option

    selectQueryOrMutationField: override the GQL type (mutation or query) of any operation. PR contains the logic, types etc.

    Tests and docs are yet to be added.

    opened by gtamas 10
  • fillEmptyResponses

    fillEmptyResponses

    Describe the bug We have POST and Delete operations that do not return any JSON responses and hence we do not define any response schema in the v2 OAS file in these particular cases. This causes warning in the console when we try to generate the wrapper using OASGraph.


    "warnings": [ { "type": "MissingResponseSchema", "message": "Operation 'POST /v1/persons/{concern_role_id}/special_cautions' has no (valid) response schema. You can create placeholder schemas using the fillEmptyResponses option.", "mitigation": "Ignore operation" }, { "type": "MissingResponseSchema", "message": "Operation 'DELETE /v1/persons/{concern_role_id}/special_cautions/{special_caution_id}' has no (valid) response schema. You can create placeholder schemas using the fillEmptyResponses option.", "mitigation": "Ignore operation" }, { "type": "MissingResponseSchema", "message": "Operation 'POST /v1/outcome_plans/{outcome_plan_id}/attachments' has no (valid) response schema. You can create placeholder schemas using the fillEmptyResponses option.", "mitigation": "Ignore operation" },

    ............


    I have tried setting the option "fillEmptyResponses: true" and this does substantially reduce the number of warnings especially Delete operations, but some still remain.


    "warnings": [ { "type": "MissingResponseSchema", "message": "Operation 'POST /v1/persons/{concern_role_id}/special_cautions' has no (valid) response schema. You can create placeholder schemas using the fillEmptyResponses option.", "mitigation": "Ignore operation" }, { "type": "MissingResponseSchema", "message": "Operation 'POST /v1/outcome_plans/{outcome_plan_id}/attachments' has no (valid) response schema. You can create placeholder schemas using the fillEmptyResponses option.", "mitigation": "Ignore operation" },

    ........


    Expected behavior Setting the option to fill empty responses should fill all REST resources with empty responses

    Screenshots If applicable, add screenshots to help explain your problem.

    Additional context Add any other context about the problem here.

    bug 
    opened by michaelsearles 10
  • Correctly defined 204 will return Response does not have a Content-Type header

    Correctly defined 204 will return Response does not have a Content-Type header

    Describe the bug Based on https://swagger.io/docs/specification/describing-responses/ (Empty Response Body) the definition for 204 should look like this:

    {
      ...,
      "paths": {
        "/tests": {
          "get": {
            "tags": [
              "test-controller"
            ],
            "operationId": "getTests",
            "parameters": [...],
            "responses": {
              "200": {
                "description": "OK",
                "content": {
                  "application/json": {
                    "schema": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Test"
                      }
                    }
                  }
                }
              },
              "204": {
                "description": "Empty list"
              },
              "502": {
                "description": "Invalid Response",
                "content": {
                  "application/json": {}
                }
              },
              "504": {
                "description": "No Response",
                "content": {
                  "application/json": {}
                }
              }
            }
          }
        }
      },
      ...
    }
    

    But in that case I get the following error:

    {
      "data": null,
      "errors": [
        {
          "extensions": {
            "code": "INTERNAL_SERVER_ERROR"
          },
          "locations": [
            {
              "column": 17,
              "line": 1
            }
          ],
          "message": "Response does not have a Content-Type header",
          "path": [
            "tests"
          ]
        }
      ]
    }
    

    There's indeed no Content-Type header since there's no Content.

    To Reproduce Steps to reproduce the behavior: See above

    Expected behavior No error should occur

    opened by dtrunk90 0
  • Any way to solve the N + 1 problem when I use Nest Object

    Any way to solve the N + 1 problem when I use Nest Object

    https://medium.com/the-marcy-lab-school/what-is-the-n-1-problem-in-graphql-dd4921cb3c1a

    I am trying to use nest object feature and it work well,but if we use it in list query, N +1 problem comes. Is there any way to solve the N + 1 problem when I use Nest Object?

    opened by Acring 0
  • Fix setting null value in query params with style

    Fix setting null value in query params with style "form"

    Because in js typeof null === 'object' we need additional check, otherwise Object.entries(args[saneParamName]) will fail with:

    TypeError: Cannot convert undefined or null to object
    
    opened by adascal 0
  • should have a content-type 'application/json' but has 'application/vnd.api+json'

    should have a content-type 'application/json' but has 'application/vnd.api+json'

    Describe the bug We're trying to expose a UK gov API with the following spec: https://api.publish-teacher-training-courses.service.gov.uk/api-docs/public_v1/api_spec.json

    Unfortunately, they decided to implement it using the content type application/vnd.api+json.

    Currently, the resolver code in this project is only ever treating application/json as a first-class citizen; after changing the spec to have a content type of application/vnd.api+json, the number of entries that appear in the query section reduce signficantly. Please start treating application/vnd.api+json and application/json as synonyms.

    To Reproduce Steps to reproduce the behavior:

    1. Download this file
    2. Globally Replace 'float' with number, and save it as file spec.json
    3. create the following index.js app:
    const express = require('express')
    const {graphqlHTTP} = require('express-graphql')
    const {createGraphQLSchema} = require('openapi-to-graphql')
    const oas = require('./spec.json');
    
    async function main(oas) {
      // generate schema:
      const {schema, report} = await createGraphQLSchema(oas, {
        strict: false
      })
    
      // server schema:
      const app = express()
      app.use(
        '/graphql',
        graphqlHTTP({
          schema,
          graphiql: true,
    
    
        })
      )
      app.listen(3001)
    }
    
    main(oas)
    
    
    
    1. create the following package.json file:
    {
      "name": "gql",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC",
      "dependencies": {
        "express": "^4.18.2",
        "express-graphql": "^0.12.0",
        "graphql": "^15.8.0",
        "openapi-to-graphql": "^2.6.3"
      }
    }
    
    
    1. Run the following:
    npm install 
    node index.js
    
    1. Point a browser to http://localhost:3001/graphql
    2. Run the following Query:
    query{
      courseLocationListResponse (courseCode:"2N22",providerCode:"B20", year:"2020"){
        jsonapi{
          version
        }
      }
    }
    

    The response we get is the following:

    {
      "errors": [
        {
          "message": "Operation GET /recruitment_cycles/{year}/providers/{provider_code}/courses/{course_code}/locations should have a content-type 'application/json' but has 'application/vnd.api+json' instead",
          "locations": [
            {
              "line": 2,
              "column": 3
            }
          ],
          "path": [
            "courseLocationListResponse"
          ]
        }
      ],
      "data": {
        "courseLocationListResponse": null
      }
    }
    

    Expected behavior I'd expect the app to understand that application/json and application/vnd.api+json are compatible, and return the correct results.

    Screenshots N/A.

    Additional context Changing the spec.json file to use ''application/vnd.api+json" instead of "application/json" causes erratic behaviour, as the API does not understand this mime type.

    The issue is likely to be resolved by loosening the if statement here to also treat ''application/vnd.api+json" in the same way: https://github.com/IBM/openapi-to-graphql/blob/master/packages/openapi-to-graphql/src/resolver_builder.ts#L809

    opened by pontusvision 0
  • Queries with array parameters doesn't work

    Queries with array parameters doesn't work

    Describe the bug Queries with query parameters that are array based doesn't work.

    It boils down to this line: https://github.com/IBM/openapi-to-graphql/blob/89515187ed664370a9bbc1cd58f843412d20741c/packages/openapi-to-graphql/src/resolver_builder.ts#L1374

    An array is also considered an object in JavaScript. The if statement needs to be flipped.

    opened by Zn4rK 1
Releases(v2.6.3)
Generate daily updated visualizations of user and repository statistics from the GitHub API using GitHub Actions

Generate daily updated visualizations of user and repository statistics from the GitHub API using GitHub Actions for any combination of private and public repositories - dark mode supported

Adam Ross 15 Dec 31, 2022
This is a graphql api build using ariadne python that serves a graphql-endpoint at port 3002 to perform language translation and identification using deep learning in python pytorch.

Language Translation and Identification this machine/deep learning api that will be served as a graphql-api using ariadne, to perform the following ta

crispengari 2 Dec 30, 2021
A python graphql api, which serves ECB currency rates from last 90 days.

Exchange Rate Api using GraphQL Get Code git pull https://github.com/alaturqua/exchangerate-graphql.git Create .env file with following content and s

Isa 1 Nov 04, 2021
Modular, cohesive, transparent and fast web server template

kingdom-python-server 🐍 Modular, transparent, batteries (half) included, lightning fast web server. Features a functional, isolated business layer wi

T10 20 Feb 08, 2022
Adds GraphQL support to your Flask application.

Flask-GraphQL Adds GraphQL support to your Flask application. Usage Just use the GraphQLView view from flask_graphql from flask import Flask from flas

GraphQL Python 1.3k Dec 31, 2022
Burp Suite extension to log GraphQL operations as a comment

Burp GraphQL Logger A very simple, straightforward extension that logs GraphQL operations as a comment in the Proxy view. To enable the highlight, unc

22 Jul 02, 2022
GraphiQL & the GraphQL LSP Reference Ecosystem for building browser & IDE tools.

Black Lives Matter 🖤 GraphQL IDE Monorepo Security Notice: All versions of graphiql 1.4.7 are vulnerable to an XSS attack in cases where the GraphQ

GraphQL 14.5k Jan 08, 2023
Tyk Open Source API Gateway written in Go, supporting REST, GraphQL, TCP and gRPC protocols

Tyk API Gateway Tyk is an open source Enterprise API Gateway, supporting REST, GraphQL, TCP and gRPC protocols. Tyk Gateway is provided ‘Batteries-inc

Tyk Technologies 8k Jan 09, 2023
A Python dependency resolver

python-resolver A Python dependency resolver. Issues Only supports wheels (no sdists!) Usage Python library import packaging.requirements import resol

Filipe Laíns 19 Jun 29, 2022
Lavrigon - A Python Webservice to check the status of any given local service via a REST call

lavrigon A Python Webservice to check the status of any given local service via

3 Jan 02, 2022
Python script to like all posts from a selected Anilist profile

AniLiker: A python autoliker What's the point of this project? This project was a way to learn GraphQL, and also create a project that I've been inter

Iván Pérez 9 Nov 25, 2022
Django Project with Rest and Graphql API's

Django-Rest-and-Graphql # 1. Django Project Setup With virtual environment: mkdir {project_name}. To install virtual Environment sudo apt-get install

Shubham Agrawal 5 Nov 22, 2022
The Foundation for All Legate Libraries

Legate The Legate project endeavors to democratize computing by making it possible for all programmers to leverage the power of large clusters of CPUs

Legate 144 Dec 26, 2022
ASGI support for the Tartiflette GraphQL engine

tartiflette-asgi is a wrapper that provides ASGI support for the Tartiflette Python GraphQL engine. It is ideal for serving a GraphQL API over HTTP, o

tartiflette 99 Dec 27, 2022
A real time webchat made in graphql

Graphql Chat. This is a real time webchat made in graphql. Description Welcome to my webchat api, here i put my knowledge in graphql to work. Requirem

Nathan André 1 Jan 03, 2022
An unofficial Blender add-on for Autodesk's Arnold render engine.

Arnold for Blender Arnold for Blender (or BtoA) provides a bridge to the Arnold renderer from within Blender's standard interface. BtoA is an unoffici

Luna Digital, Ltd. 89 Dec 28, 2022
Simple GraphQL client for Python 2.7+

python-graphql-client Simple GraphQL client for Python 2.7+ Install pip install graphqlclient Usage from graphqlclient import GraphQLClient client =

Prisma Labs 150 Nov 29, 2022
ReplAPI.it A Simple and Complete Replit API Package

Notice: Currently this project is just a framework. It does not work yet. If you want to get updated when 1.0.0 is released, then click Watch - Custo

The ReplAPI.it Project 10 Jun 05, 2022
GraphQL Engine built with Python 3.6+ / asyncio

Tartiflette is a GraphQL Server implementation built with Python 3.6+. Summary Motivation Status Usage Installation Installation dependencies Tartifle

tartiflette 839 Dec 31, 2022
Generate a FullStack Playground using GraphQL and FastAPI 🚀

FastQL - FastAPI GraphQL Playground Generate a FullStack playground using FastAPI and GraphQL and Ariadne 🚀 . This Repository is based on this Articl

OBytes 109 Dec 23, 2022