Skip to main content
Contact us
  • 9 min read

GraphQL implementation for Australian businesses

GraphQL cuts endpoint sprawl for multi-client integrations, but adds schema governance work REST doesn't need. Here's when it pays off.

National Digital designs, builds, hosts and supports the platforms it delivers, with no reseller or integrator between the client and its engineers.

  • API development and management
  • Platform engineering
  • Legacy system modernisation

Quick answer:GraphQL consolidates multiple REST endpoints into one typed schema, useful when several front-ends query the same backend, but it adds schema governance work REST avoids.

Quick answer

What does GraphQL implementation actually solve for a business running several connected systems?

High confidenceVerified

GraphQL consolidates multiple REST endpoints into one typed schema, letting a website, app and partner system each query exactly the fields they need from shared backend data.

Additional Context

It's most valuable when several independent client applications need overlapping but non-identical data from the same systems, not as a general replacement for REST.

Sources

API Integration Patterns

What GraphQL actually changes for integration work

GraphQL is a query language and runtime for APIs, built so a client can ask for exactly the fields it needs in a single request. A mobile app, a web dashboard and a partner portal can each query the same backend schema and get back different shapes of data, without three separate sets of REST endpoints maintained in parallel. For a business running Shopify on the front end, a custom order system behind it and a logistics partner needing status updates, that single schema becomes the contract everyone builds against.

The practical effect shows up in custom API development work: teams stop writing a bespoke REST endpoint every time a new screen needs a slightly different combination of fields. Instead of separate order, summary and detail endpoints, there's one orders type and each client asks for what it needs. That matters more as the number of consuming applications grows past two or three, which is usually the point a business first notices REST endpoint sprawl.

When GraphQL earns its complexity

GraphQL is not free. It needs a resolver layer, a schema someone owns and keeps coherent, and query depth limits to stop a client requesting a response that fans out across a dozen downstream calls. A business integrating two systems with a stable, well-understood data shape rarely needs it; a well-documented API built to the sort of REST API versioning and security standards most integration work already follows does the job with less operational overhead. GraphQL earns its place when several independent front ends query overlapping but not identical data from the same backend, or when a legacy system needs a single modern interface in front of several older services with inconsistent field names and formats.

Questions buyers ask

Should a partner-facing API use GraphQL or REST?

The choice turns on who controls the shape of a response. With GraphQL the partner picks the fields in each query, so the schema becomes a public contract that you must version carefully. With REST you decide the shape of each response and the partner takes what you return. A business can run both, with GraphQL layered over the services that REST already exposes.

API & Integration Strategy

Untangling REST Endpoint Sprawl with GraphQL

Problem

Businesses running several client applications, such as a website, a mobile app and a partner API, against the same backend often end up maintaining a growing set of REST endpoints, each shaped for one consumer, that duplicate logic and drift out of sync as requirements change.

Common Pain Points

  • Endpoint duplication Each new client application spawns its own REST endpoint shaped to its exact needs.
  • Caching assumptions break Standard HTTP caching stops working cleanly once queries become flexible and field-specific.
  • Repeated resolver calls Poorly designed resolvers can trigger dozens of downstream calls per query under real load.

Business Impact

  • Time Wasted Developer time spent building near-duplicate endpoints for each new client view
  • Cost Implication Cost grows with every additional client integration rather than with actual business volume
  • Opportunity Cost New integration requests queue behind endpoint maintenance instead of new feature work

Solution

A GraphQL layer placed in front of existing systems gives every client one schema to query, replacing growing REST endpoint sprawl with a single, governed contract each team builds against.

Our Approach

  1. Map the real query patterns (Early discovery phase)Identify which client applications query which data and where field requirements overlap, rather than guessing at schema shape upfront.
  2. Build the schema against core data first (Initial build phase)Stand up GraphQL resolvers for the two or three systems causing the most endpoint duplication, leaving stable REST integrations untouched.
  3. Add governance before scaling consumers (Pre-scale phase)Set schema ownership, deprecation rules and query complexity limits before adding more client applications to the schema.

Expected Outcome

Fewer duplicate endpoints to maintain and one governed schema that new client applications can query without a bespoke REST build.

Key Takeaways

What to weigh before building a GraphQL layer

  • GraphQL mainly fixes consumer-side data shaping across multiple client appsImportant

    It is most valuable when several independent front ends query overlapping data from the same systems, not as a general API upgrade applied everywhere.

  • REST still wins for simple, stable system-to-system linksImportant

    A single integration syncing one system to another, like an accounting feed, rarely benefits enough to justify GraphQL's extra resolver and governance layer.

  • Repeated resolver queries catch most first-time GraphQL buildsCritical

    Resolvers that call downstream services per field can multiply into dozens of calls per request unless batching is designed in from the start.

  • A GraphQL layer works best placed in front of existing systemsImportant

    Building the schema against legacy or disparate systems without replacing them keeps the project staged and avoids a disruptive rebuild.

GraphQL earns its complexity when multiple client applications need overlapping data from shared backends. A staged schema layered over existing systems, with governance built in early, avoids the sprawl it's meant to fix.

Where GraphQL Changes the Integration Picture

These points describe structural differences between GraphQL and REST integration patterns relevant to businesses running several client applications against shared backend systems.

  • Single schema

    Endpoint consolidation

    Significance: high

    A GraphQL implementation typically replaces multiple purpose-built REST endpoints with one schema that every client queries differently, reducing duplicate server-side logic.

    Source: Australian Government API Design Standard, api.gov.au

  • Native subscriptions

    Real-time update handling

    Significance: medium

    GraphQL subscriptions provide a standard, documented mechanism for push-based updates, where REST integrations usually require a bolted-on websocket or polling layer instead.

    Source: GraphQL specification, GraphQL Foundation

  • Single contract

    Schema governance need

    Significance: high

    A GraphQL schema functions as a shared contract between every consuming team, which raises the governance bar compared with independently versioned REST endpoints.

    Source: Australian Government API Design Standard, api.gov.au

Methodology

Drawn from published API design guidance and GraphQL specification documentation rather than a single benchmark study, reflecting structural patterns rather than measured outcomes.

GraphQL in Practice

GraphQL versus REST: the practical trade-off

The comparison that matters is not which technology is newer. It is which one matches the shape of the integration problem. REST maps cleanly to HTTP caching, is simple to secure with standard OAuth 2.0 client credentials flows, and is the right default for a straightforward system-to-system integration like syncing Xero invoices into a reporting tool. GraphQL trades that caching simplicity for flexibility: because every request can ask for a different combination of fields, a CDN can't cache a GraphQL response the way it caches a REST GET. Teams moving from REST to GraphQL for the first time are usually surprised by the repeated-query problem, where a single GraphQL query that looks simple on the client side triggers dozens of resolver calls to underlying services if the schema wasn't designed with batching in mind. It is one of the more common reasons a GraphQL pilot performs well in testing and then slows noticeably once real production traffic hits it.

A staged path into GraphQL without a rewrite

The lower-risk pattern for an established business is to put a GraphQL layer in front of existing systems rather than replacing them. A schema is built first against the two or three data sources that genuinely need a unified view, such as order status from an ERP and customer data from a CRM, while everything else stays on its existing integration path. This mirrors the approach used on real-time systems work using GraphQL subscriptions, where push-based updates were layered over existing hardware interfaces without rebuilding them from scratch. Good API governance from day one, including schema ownership, deprecation rules for breaking changes, and query complexity limits, avoids the schema sprawl that makes a GraphQL layer as hard to maintain as the REST sprawl it replaced.

Considering GraphQL for your integration layer?

Send us the query patterns across your client applications and get a recommendation between GraphQL, REST or a mix of both, so you build the right contract instead of the trendiest one.

GraphQL implementation questions answered

What is GraphQL and how is it different from a REST API?

GraphQL is a query language for APIs where a client specifies exactly which fields it needs in a single request. REST exposes fixed endpoints that return a set response shape, so adding a new client view often means adding a new endpoint. GraphQL lets each client ask for a different combination of fields from one schema.

When does GraphQL implementation make sense for an existing business system?

It earns its complexity when several independent applications, such as a website, mobile app and partner portal, need overlapping but not identical data from the same backend. A single integration between two stable systems rarely needs GraphQL; a well-built REST API usually does that job with less overhead.

Can GraphQL be layered over legacy systems without rewriting them?

Yes. A common staged approach builds a GraphQL schema in front of two or three systems causing the most endpoint duplication, leaving other integrations running on their existing path untouched. This avoids a disruptive rebuild and lets the schema grow only as more consuming applications genuinely need it.

What is the repeated-query problem in GraphQL and why does it matter?

It happens when a single GraphQL query triggers many separate calls to underlying services, one per field or record, instead of one batched call. A query that performs well in testing can slow sharply under real traffic if resolvers weren't designed with batching or data-loading patterns from the start.

Does GraphQL work with Xero, MYOB, Shopify or HubSpot integrations?

Yes, though most of these platforms only expose REST or app-specific APIs natively. A GraphQL layer is typically built as middleware that queries Xero, MYOB, Shopify or HubSpot behind the scenes and presents one unified schema to internal applications or partners, rather than forcing every client to learn each platform's quirks separately.

What does a GraphQL implementation project typically involve?

It usually starts with mapping which applications query which data and where requirements overlap, followed by building resolvers against the highest-duplication systems first. Schema governance, including ownership and deprecation rules for breaking changes, is set up before more consuming applications are added to the schema.