Logo
  • System Status
  • Gem API
  • Gem Academy
  • What's New?

(Internal) Gem API overview

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&region=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
Logo

Products

People

Outreach

ATS

Scheduling

Talent Marketing

Talent Compass

Templates

Resources

Compliance

Resource Center

Blog

Events

About Gem

About Us

Careers

Contact Us

X/Twitter

LinkedIn

YouTube