A simple OCaml client for Google Services.
OCaml Standard ML
Latest commit dd1b03f Dec 27, 2017 @astrada astrada Merge pull request #21 from TheCBaH/strip_whitespace
Added option to control whitespace stripping when parsing XML/XHTML
Failed to load latest commit information.
config Update documentation and authorization examples Jan 14, 2012
doc Add calendar v3 API documentation (draft) Dec 7, 2011
generated Move auxiliary directories to root Jan 12, 2012
src Added option to control whitespace stripping when parsing XML/XHTML Dec 27, 2017
tools Port service generator to jbuilder Nov 18, 2017
.gitignore Port to jbuilder Nov 18, 2017
LICENSE Update year in LICENSE Aug 12, 2017
Makefile Add Makefile Nov 18, 2017
README.md Update README Nov 18, 2017
gapi-ocaml.descr Port to jbuilder Nov 18, 2017


Google APIs Client library for OCaml

gapi-ocaml is a simple, unofficial, OCaml client for Google Services. The library supports ClientLogin, OAuth 1.0a, and OAuth 2.0 authentication. Supported RESTful APIs:

  • Calendar APIs v3
  • Google+ API v1
  • Tasks API v1
  • APIs Discovery Service v1
  • URL Shortener API v1
  • OAuth2 API v2
  • Custom Search API v1
  • Google Analytics API v3
  • Page Speed Online API v1
  • Blogger API v2
  • Site Verification API v1
  • AdSense Management API v1.1
  • BigQuery API v2
  • Drive API v2
  • Drive API v3
  • Gmail API v1

Google Data Protocol APIs (GData):

  • Google Documents List API v3 (supports Google Drive)


  • Monadic interface
  • Functional lenses to access data structures
  • Service generator (experimental): a tool for generating client libraries for APIs based on the Google API Discovery format

Building gapi-ocaml


You will need the following libraries:

This library was developed and tested on Ubuntu LTS (64-bit).

Configuration and installation

This project provides 2 libraries:

  • gapi-ocaml: Google APIs client library
  • gapi-ocaml.gdata: Google Data Protocol client library

To build the libraries, run

$ jbuilder build @install

To install the libraries, run (as root, if your user doesn't have enough privileges)

$ jbuilder install

To build and run the tests (you will need ppx_monadic), execute

$ jbuilder runtest

See src/test/README.md for further details regarding the tests.

To build the examples:

$ jbuilder build @examples

See examples/README.md for further details regarding the examples.

To generate the documentation, run

$ jbuilder build @doc

Then you can browse the HTML documentation starting from gapi-ocaml.docdir/index.html, but is not installed by default.

To uninstall anything that was previously installed, execute

$ jbuilder uninstall


See auth examples in examples/auth for some examples of how to use Google's authorization endpoints.

See examples directory to find code samples that show usage of some services.

See tools/serviceGenerator.ml for a complex example of how to use functional lenses within the state monad.

See tools/README.md for the instructions of how to build and run the service generator utility.