API Integrations
GGNomad's API integration surface lets you connect external systems — property and channel managers, ticketing platforms, payment providers, and CRMs — to the platform's inventory, bookings, and trip data. Integrations talk to the GGNomad GraphQL API and react to domain events, so external systems stay in sync without polling.
Integration capabilities
GraphQL access The primary integration surface is GraphQL:
- Read inventory (properties, tours, activities, events, transport trips)
- Read providers, bookings, and analytics
- Write bookings (
createGgnomadBooking,cancelGgnomadBooking) - Manage favorites and provider/listing creation
- Select exactly the fields each integration needs
Event-driven sync React to changes as they happen instead of polling:
- Subscribe to domain events such as
booking.created - Mirror confirmed bookings into a PMS or channel manager
- Trigger downstream notifications and reconciliation
- Redelivery-safe, idempotent handlers
Authentication
Credentials Every request is authenticated before any data is returned:
- OAuth 2.0 / OIDC bearer tokens for service and interactive callers
- Workspace-scoped API keys for automation and integrations
- Issued and rotated from the developer portal
Authorization Every operation is permission-checked and scoped to a workspace:
- Request the minimum
ggnomad:*permissions an integration needs - An id from one workspace never resolves in another
- Audit fields are stamped on every write
Reliability
Pagination & efficiency Keep integrations efficient and within quota:
- Paginate every list query (
pagination: { skip, take }) - Request only the fields a job consumes
- Cache rarely changing reference data where appropriate
Error handling Handle typed GraphQL error codes rather than parsing messages:
UNAUTHENTICATED/FORBIDDENWORKSPACE_REQUIREDNOT_FOUNDVALIDATION_ERROR
Add backoff and retry around transient failures, and surface validation details to the source system.
Implementation guide
Integration setup Follow these steps to build an API integration:
- Issue a workspace-scoped credential from the developer portal
- Confirm connectivity with a read query (
ggnomadProperties) - Map your external entities to GGNomad inventory and bookings
- Wire booking create/cancel and (optionally) listing sync
- Subscribe to
booking.createdand make the handler idempotent
Best practices Ensure a robust, maintainable integration:
- Keep writes and event handlers idempotent
- Treat the published GraphQL schema as the contract
- Monitor health, usage, and errors
- Verify cross-workspace isolation and RBAC behavior
Getting started
Begin implementing an integration:
- Review the API Reference
- Confirm a read query works with your credential
- Wire booking flows, then add event-driven sync
For integration support, see the developer documentation or contact the GGNomad team at [email protected].