Audience
Internal
Displayed Description
Page Type
Article
Product | Gem API (not including Gem ATS API) |
Expert(s) | Enterprise EPD team |
Slack channel | |
This article was last verified on | 06/06/2024 |
📖 Customer-facing Resources
- ‣
📖 Customer-facing Resources
- ‣
To see existing Gem API capabilities, refer to https://api.gem.com/v0/reference
API Developer Information
Developer Overview
The Gem API supports a number of customer use cases, including integrations with various third party applications (e.g. HireEZ), data analytics, and candidate uploads/updates. Locally, the base endpoint is https://localhost:3000/external_api/v0/ (requests to the base route will fail — try https://localhost:3000/external_api/v0/reference) . Our production endpoint (https://gem.com/external_api/v0/) is wrapped in AWS API Gateway - Gem API, so we expose this as https://api.gem.com/v0/.
AWS Purposes
We use API Gateway for a couple of things:
- Rate limiting
- Each key is assigned to a usage plan: https://us-east-1.console.aws.amazon.com/apigateway/main/usage-plans?api=unselected®ion=us-east-1
- For details in the API docs, see https://api.gem.com/v0/reference#section/Rate-Limits
- API Key management
- Traffic that hits https://gem.com/external_api/v0/ but isn’t from AWS will be blocked with 403 Forbidden
- Enabled keys will successfully redirect from https://api.gem.com/v0 to https://gem.com/external_api/v0/
- Production Logging
- Can be identified by the Gem API’s AWS API Gateway ID: yxts9st82c, logs are sent to cloudwatch: https://us-east-1.console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:log-groups/log-group/API-Gateway-Execution-Logs_yxts9st82c$252Fproduction
Gem API Developer Onboarding Checklist
- Enable API Access CRM Module in local environment (Support Dash > Modules)
- Create an API Key (Team Settings > Additional Settings > API Keys)
- Make a GET /users request to your local environment in Postman
- Make a GET /users request to production with an existing Gem team API key
- Next, add an email filter to your GET request to only retrieve your own user
- Have a look at the following files
- server/external_api/schemas/user.py
- This shows the User Response and Query schemas
- server/external_api/routes/users/root.py
- This shows the GET /users endpoint
<https://gem.phacility.com/D18433>- This shows the necessary changes for exposing a new entity through the API
- API Developer Information