The GraphQL Federation platform
APACHE-2.0 License
Bot releases are visible (Hide)
deploy
, build
, environment
, init
, logs
, start
, link
, unlink
and dev
commands have been removed as a part of sunsetting standalone graphs
branch
list
subcommand for the branch
command has been removedcreate
create
no longer accepts a --mode
flagintrospect
url
positional argument on introspect
is now requireddev
flag on introspect
has been removedpublish
publish
is now requireddev
flag on publish
has been removeddev_api_port
flag on publish
has been removedcheck
subgraph_name
argument on check
is now requiredpublish
now supports a message
flag to provide a message when publishing a graphPublished by github-actions[bot] 12 days ago
Breaking: the Grafbase Gateway does not allow batching by default. To enable batching, set the gateway.batching.enabled
option to true
in the gateway configuration. You can also limit the number of requests that can be batched by setting the gateway.batching.limit
option to a number greater than 0. If the limit is not set, the default is to have no limit which might allow denial of service attacks, so be careful when setting this option.
[gateway.batching]
enabled = true
limit = 5
Published by github-actions[bot] 25 days ago
[gateway.access_logs]
enabled = true
path = "./logs"
rotate.size = "200MiB"
Accept: application/graphql-response+json; charset=utf-8, application/json; charset=utf-8
header instead of Accept: application/json
, following the Graphql-over-HTTP spec recommendation.null
for inaccessible enum values (#2116)@requires
(#2166)@provides
(#2149)Published by github-actions[bot] about 1 month ago
Published by github-actions[bot] about 1 month ago
In version 0.12.0, we introduced a streamlined method for logging and storing access information using the Gateway Hooks. In this version we rewrote the logger into a faster and more minimal version. Now, you can rotate the log based on file size, configurable as follows:
[gateway.access_logs]
enabled = true
path = "./logs"
rotate.size = 10_000_000 # bytes
The rotation mechanism is now standardized. The active log file is named access.log
. When a rotation occurs, we rename this file to access.log.X
, where X is the timestamp of the original log file's creation.
null
for inaccessible enum values.Published by github-actions[bot] about 2 months ago
We are announcing access logs, which are a bit different from the common logs the gateway outputs to the standard output.
Access logs are always stored into a file, and generated through custom WebAssembly hook functions. This allows you to define what gets logged and when, and in which format the logs are written.
The feature consists the following configuration options:
[gateway.access_logs]
enabled = true
path = "/path/to/logs"
rotate = "daily"
mode = "blocking"
Read more on the configuration.
In addition to the configuration, to generate access logs you must implement one or more response hook functions and provide them as WASI hooks (read more about WASI hooks).
The following hooks are now available to implement:
on-subgraph-response
gets called after requesting a subgraph.on-operation-response
gets called after an operation is completed.on-http-response
gets called just before an HTTP response is sent back to the client.The hooks provide necessary information and metrics on the operation, and the user must define what to log based on this information. The log format can be anything that can be serialized as bytes, ranging from just text, JSON, CSV or XML.
Read more on access logs with response hooks.
It can be forced with --log-style pretty
, the previous format is available with --log-style text
. Now when using --log debug
, the executed subgraph query with variables and the response are shown.
Published by github-actions[bot] about 2 months ago
Published by github-actions[bot] about 2 months ago
@join__type
on an interface. See the pull request description for more details: https://github.com/grafbase/grafbase/pull/2064
Published by github-actions[bot] about 2 months ago
The gateway now implements tracing propagation: it can receive tracing context (trace id, parent span id, additional context) from headers in the requests it receives, and pass that context on to subgraphs when it makes requests to them. That enables correlation of requests across network boundaries.
There are different standards for propagation. In this release, we implement Trace Context and Baggage — the standard OpenTelemetry mechanisms for trace parent and trace context propagation respectively —, and AWS X-Ray. Multiple mechanisms can be combined.
This is configurable through the telemetry.tracing.propagation
key in the configuration. For example:
[telemetry.tracing.propagation]
trace_context = true
baggage = true
In addition, a new option named parent_based_sampler
appears in telemetry.tracing
:
[telemetry.tracing]
sampling = 0.2
parent_based_sampler = true
When enabled, the gateway will honor sampling configuration passed in through the sampled
header (W3C spec), then fall back to its own configuration. This option is disabled by default and should not be enabled if the gateway is exposed directly to the internet, since malicious clients could increase load on the gateway by forcing traces to be recorded.
See also the documentation
operationName
.nbf
claim was required in JWT auth. Now it is only validated if present.Accept
header anymore and will default to application/json
if absent.Published by github-actions[bot] about 2 months ago
Published by github-actions[bot] 2 months ago
--log=trace
would panic.request_body_limit
to have a default value of 0
refusing all requests.@join__field
is now optional for non-federated types: no @join__type
directive with a key
argument.Published by github-actions[bot] 2 months ago
Published by github-actions[bot] 2 months ago
Published by github-actions[bot] 2 months ago
grafbase create
command now supports creating self-hosted graphs, either through the interactive flow or through the --mode=self-hosted
flag. (#2018)Published by github-actions[bot] 2 months ago
Published by github-actions[bot] 2 months ago
Accept
header as recommended in the GraphQL-over-HTTP specification (spec. Use application/json
to have the same behavior as previous versions.Accept: text/even-stream,application/json;q=0.9
.request_body_limit
in the configuration, which defaults to 2MiB
. The gateway returns a 413
error if the request exceeds the limit.Published by github-actions[bot] 2 months ago
grafbase branch create
to create branches on self-hosted graphs (#1997)Published by github-actions[bot] 3 months ago
Published by github-actions[bot] 3 months ago
Published by github-actions[bot] 3 months ago