Two public documents — one for the ordering platforms, one for the point-of-sale vendors. Both were handed to me, and I carried them for years. Writing a specification for stakeholders to build against is the same job in any industry.
For an integration to work, two companies that have never met have to agree on what an order is. Sometimes that agreement is theirs, and sometimes it is yours.
The large ordering platforms and the large POS vendors already had APIs — some built for their own internal use, some already published for other partners. Integrating with them meant building to what they had, which is what the normalization layer in the previous section is for. Not all of it arrived as JSON posted to an endpoint, either: some came through a publish-subscribe queue, and some through parsing email.
The two documents were for the other direction. Open API told ordering platforms how to send us orders and keep their menus current — the shape of the JSON, authentication, and automatic menu updates delivered by webhook that you were expected to act on in minutes rather than hours. POS Preparation told point-of-sale vendors how they might shape their own endpoints for menu import, dining options, payment options, discounts, service charges, order calculation and order submission, “to whatever extent is reasonable and expedient.” Plenty of companies built to them.
Open API began with an API key and secret in the headers. When it grew into a developer marketplace, that became OAuth 2.0 with Checkmate as the provider — scopes, app registration, token refresh. The section headings from the original are still in the current version: default modifiers, nested modifiers, special hours, alcohol items. The awkward cases outlive everything.
The current marketplace documentation is many hands. My edits are mixed in with other people’s, and I would not claim the whole of it. One page is mine alone: Order Receivers, written for the companies that fit neither mold — last-mile delivery outfits, mostly, that carry orders for several ordering platforms at once. It tells them what an order packet from Checkmate looks like, how their endpoint should answer, and how to send order status back. That is the page linked below.
For a while the policy was simply this: build to our specification and we will work with you, even if you are just starting out and have hardly any customers. A separate application worked something like a school for new partners — test cases, configuration, and a sandbox that mirrored production. I didn't build that app. I joined the team that supported it, and I was on the other end of the questions when a partner's OAuth implementation didn't work. It was a genuinely generous policy, and small startups did take it up and get a route into restaurants they could not have reached alone. Good for them.