https://github.com/rlancer/gapi-to-graphql
  
  
    Converts any Google Data  Api to GraphQL 
    https://github.com/rlancer/gapi-to-graphql
  
google-api graphql javascript nodejs
        Last synced: 3 months ago 
        JSON representation
    
Converts any Google Data Api to GraphQL
- Host: GitHub
- URL: https://github.com/rlancer/gapi-to-graphql
- Owner: rlancer
- Created: 2017-10-25T01:57:30.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2024-03-29T19:05:00.000Z (over 1 year ago)
- Last Synced: 2025-06-23T10:52:24.201Z (4 months ago)
- Topics: google-api, graphql, javascript, nodejs
- Language: TypeScript
- Homepage: https://www.collaborizm.com/project/Skkk3bBA-
- Size: 8.49 MB
- Stars: 84
- Watchers: 5
- Forks: 5
- Open Issues: 8
- 
            Metadata Files:
            - Readme: README.md
 
Awesome Lists containing this project
README
          [](https://badge.fury.io/js/gapi-to-graphql)
# Gapi to GraphQL
Converts almost any Google Data API to a GraphQL API via the [Google API Discovery Service](https://developers.google.com/discovery/)
**Limitations**
- Read only
- No downloading (think Drive documents ... )
## Supports 138 Google APIs!
[Full list of APIs and their `require()` path](/docs/GoogleAPIs.md)
## Usage
```bash
npm i gapi-to-graphql --save
```
## Example on the server
> index.mjs
```javascript
import { gql, ApolloServer } from 'apollo-server'
import gapiToGraphQL from 'gapi-to-graphql'
import YouTubeAPI from 'gapi-to-graphql/google_apis/youtube-v3'
const { schema, resolvers } = gapiToGraphQL({ gapiAsJsonSchema: YouTubeAPI })
const server = new ApolloServer({
  typeDefs: gql`
    ${schema}
  `,
  resolvers
})
server.listen({ port: 3031 }).then(({ url }) => {
  console.log(`🚀  Server ready at ${url}`)
})
```
> Run example with `node --experimental-modules index.mjs`
## Query usage
```graphql
{
  YoutubeApi(key: "YOUR_API_KEY") {
    search {
      list(q: "graphql", part: "snippet") {
        items {
          id {
            videoId
          }
          snippet {
            title
            thumbnails {
              default {
                url
              }
            }
          }
        }
      }
    }
  }
}
```
## Live example YouTube Hunt (Client and Server)
temporarily down. Going to redploy to Heroku Soon!
GitHub: https://github.com/rlancer/yt-gql-example
UI: https://youtube-gql-example.appspot.com/
GraphiQL: https://youtube-gql-example.appspot.com/graphql
GraphiQL with a query: [URL too long!]()

## FAQ
**Should this API be exposed to web clients**
Yes, but be sure to add API keys and sanitize other parameters via a middleware solution like https://www.npmjs.com/package/graphql-add-middleware
**Can I use this in production**
Yes, since all its doing is making API calls it's fairly safe to use in production if your use cases have been well tested in development.
## Contributors
Pull requests welcome!
Join the [project on Collaborizm](https://www.collaborizm.com/project/Skkk3bBA-)
## License
gapi-to-graphql is MIT licensed.