The Common Metadata Repository (CMR), NASA's datastore for Earth science metadata offers multiple API's that allow users to access the underlying data in many ways. With the launch of recent missions, CMR's usage has increased exponentially; this usage and the features added to support new capabilities have made it increasingly difficult to keep it's response formats and capabilities consistent and performant. Unfortunately agency requirements and existing CMR client implementations limit our ability to change our APIs. In our research for a solution that would allow us to work within these limitations, the use of GraphQL as an abstraction layer would mean that our existing APIs could remain unchanged. Additionally, this would allow us to offer new functionality via a self-documenting, specification based approach. Our introduction of GraphQL has allowed us to normalize the ways that users communicate with our APIs and enabled us to make changes to our core APIs with no impact to clients. In this talk, I'll discuss the challenges, wins, losses, and lessons learned in wrapping CMR's API with GraphQL and how it's being utilized today.