Select a schema and operations
Install@bijection/api-codegen as a development dependency and
@bijection/connectors as an application dependency. Use Node 24.13.0. Keep
reviewed SDL or introspection JSON and named operation documents in your
application, then declare the project:
bijection.json
bijection dev and bijection deploy prepare this project before module
discovery. Import crm from bijection/_generated/projects.js to use
crm.operations.ListCustomers, crm.schemas.ListCustomers.variables and
crm.schemas.ListCustomers.result. Generated artifacts retain exact schema,
operation and compiler identities. Changed or invalid inputs cannot silently
reuse stale declarations. Preparation never contacts your provider.
An operation’s .request({ variables }) constructs declared native HTTP work;
it performs no network call. The document and operation name are fixed. The host
validates resolved variables and response selections, including aliases,
fragments, conditional fields and abstract types.
Compose records and account identity
defineResource, along with the generated record fields, explicit
identity/version selectors and your read policy. Bind the endpoint and private
credential through ordinary deployment bindings. Response paths above are
relative to GraphQL data and checked against the selected result type. Cursor
variables must be nullable strings. Repeated or cyclic cursors stop progress;
traversals are bounded to 4096 retained pages. Finishing a traversal does not
prove a snapshot or deletion of records that were not returned.
A true hasNextPage requires a fresh cursor. False ends observation without
claiming a complete snapshot, deletion or history. A nullable point result alone
does not establish absence.
Declare mutation guarantees
graphql.exchange composes one mutation send with a query that reconciles the
original request. Request, response and interpreter must share the captured
operation; send and reconcile must share the captured revision. The native host
admits mutations only as command sends and requires one unconditional mutation
root field.
Author concurrency conditions, governing policy, attribution, effect evidence,
delivery retention and receipt behavior explicitly. A successful GraphQL reply
or echoed clientMutationId alone does not establish deduplication or business
completion. Replies containing errors, even alongside usable data, cannot
publish rows or confirm commands. Retained evidence supports investigation and
recovery; ambiguous delivery remains unknown.
The
maintained CRM example
shows account verification, typed records, point refresh, version-conditional
rename and original-request receipt reconciliation for a fictional provider.
Capture an installed schema
For an installed, verified connection with a declared GraphQL identity query:schema.json in options.schema. If introspection is disabled, supply reviewed
SDL instead. Schema capture does not qualify provider guarantees.
Supported profile
The initial profile supports JSON POST, named queries and mutations, fragments, aliases,@skip/@include, interfaces/unions, enums, input objects, lists,
defaults and @oneOf. Missing values and explicit null remain distinct. IDs use
strings and GraphQL Int uses signed 32-bit values. Set options.path to
literal endpoint segments when the route differs from ["graphql"], or [] to
post directly to the configured base endpoint.
Custom scalars require explicit directional wire schemas, for example
"scalars": { "DateTime": { "input": { "kind": "string" }, "output": { "kind": "string" } } }.
This describes wire shape; it does not validate an unstated date format or infer
provider business rules.
Subscriptions, incremental/multipart delivery, recursive inputs, unmapped custom
scalars, anonymous operations and custom executable directives are refused.
Lists require explicit arrays. Runtime introspection is confined to the schema
capture command. Resource requests require explicitly allowed JSON media types,
complete selected data and valid native request/response contracts.
Contract identities and updates
Each generated operation exposesidentity.capture, identity.schema,
identity.document and identity.contract. The capture includes exact source
and compiler dependencies; the normalized schema digest is stable across
comment-only changes. Accepted commands retain their original executable,
coerced variables and provider guards across deployment. Schema or credential
changes cannot silently redirect their recovery to another account.
Captured schema defaults are materialized at each argument or input-field use.
An omitted variable can select its captured default; explicit null stays null.
Drift reports distinguish changes to inputs/defaults, selected output shapes and
executables or response guards. Unexpected responses block progress instead of
regenerating the contract.
GitHub repository issues
The canonical provider recipe uses the same primitives:{ baseUrl: "https://api.github.com/graphql", owner: "ORG", repository: "REPO" }
with github.credential("GITHUB_READ_TOKEN"). Install the resource through your
ordinary synced table and read policy. The recipe identifies the viewer and
repository, and reads issue IDs, numbers, titles, state, update timestamps and
URLs. It declares no commands, consistent snapshot, complete change history or
deletion guarantee. Its hosted qualification is unestablished. See the
provider contract.