tree: 63510135f4c7d7f3f022468240620b41c038e5e5 [path history] [tgz]
  1. README.md
  2. __init__.py
  3. api_proto/
  4. api_routes.py
  5. converters.py
  6. features_servicer.py
  7. issues_servicer.py
  8. monorail_servicer.py
  9. projects_servicer.py
  10. resource_name_converters.py
  11. sitewide_servicer.py
  12. test/
  13. test_call
  14. users_servicer.py
  15. v3/
appengine/monorail/api/README.md

Monorail pRPC API

This directory holds all the source for the Monorail pRPC API. This API is implemented using .proto files to describe a gRPC interface (services, methods, and request/response messages). It then uses a shim which converts the gRPC server (which doesn't work on AppEngine, due to lack of support for HTTP/2) into a pRPC server which supports communication over HTTP/1.1, as well as text and JSON IO.

Getting Started

In order to make API requests, your client needs to either:

  • Present an OAuth token generated by an allowed client ID or email.
  • Provide a XSRF token.
  • [For local dev only] Send a test account header, as used by test_call described below.

Making requests

You can make anonymous requests to a server running locally like this:

$ ./api/test_call monorail.Users GetUser '{"email": "test@example.com"}'

Requests that require a signed-in user can be tested locally like this:

$ ./api/test_call monorail.Issues GetIssue \
  '{"issue_ref": {"project_name": "rutabaga", "local_id": 1}}' \
  --test-account=test@example.com

API Documentation

All methods, request parameters, and responses are documented in ./api_proto.

Development

Regenerating Python from Protocol Buffers

In order to regenerate the python server and client stubs from the .proto files, run this command:

$ make prpc_proto_v0