Releases · graphql/graphql-spec
October 2021https://spec.graphql.org/October2021/
The first release of the GraphQL spec ratified by the GraphQL Foundation.
Since the previous release, 35 contributors have made nearly 100 changes to the spec text ranging from minor clarifications to major changes.
http://facebook.github.io/graphql/June2018/
The June 2018 edition of the GraphQL specification represents extensive refinement and improvement by the editors and community. It is the first edition to no longer be considered a "Draft RFC" (4cd6824) to reflect its extensive use in production. GraphQL continues to become a "stable base" atop which many companies have built new an interesting things.
This edition also contains definitions of the Type System Definition Language (often referred to as GraphQL's "SDL") and a definition for delivering live data over GraphQL subscriptions. It is also the first edition to contain the new license from last year's relicensing effort.
Huge thanks to everyone who contributed to this release.
All commits since last release
New / Potentially-Breaking:
Type System Definition Language (#90, #428, #454)
Originally used as a short-hand in the spec to describe examples, today the type system definition language is the source of truth for many GraphQL services. The grammatical and semantic rules for defining types in the GraphQL language are now included in the specification.
This also introduces more comprehensive "schema validation" - ensuring that the types and schema defined by a service is coherent and complies with the expected and specified behavior.
Error paths in response (#230)
Errors now have a more strict format they must contain, including a
path
property which explains where in a response an error corresponds.
GraphQL Subscriptions (#267, #283, #304, #305, #392)
Subscriptions provides the top level type, primitives, and execution and error flow algorithms for providing event-based live data within a GraphQL server.
A new multi-line-string literal, particularly useful for writing free-form text and descriptions within the type system definition language.
Relicensed to the OWFa v1.0 (#363, #368)
Previous editions of this spec had an ill-fitting license which is replaced in this edition with Open Web Foundation Agreement (OWFa) v1.0. Additionally, definitions of terms like "conformance" and "non-normative" were added to make it formally clear what would be covered by the new license.
Change order of fields inside Response (#384)
Previous editions suggested that a
data
property be contained in a result beforeerrors
, however this has been reversed for easier human debugging.
Add optional 'extensions' entry to errors (#407)
Previously GraphQL did not make it clear how services should add additional data to errors. After #230, there was a concern that adding new features to errors could accidentally conflict with this additional data. Now, any additional data on an error should be contained within an
extensions
field.
Fix ambiguity with null variable values and default values (#418)
Previously, providing
null
to a variable which was later passed to a Non-Null argument was under-defined which could result in undefined behavior. Now, there are clear rules for how to handlenull
values with respect to the default values of both variables and arguments.This also adds new capabilities for default values for arguments and allows new kinds of queries that couldn't be sent before. For more about this change, see #418.
Clarifications:
__
prefix being reserved for introspection use only (#244)__EnumValue
type (#270)null
values, including examples (#436, #440)http://facebook.github.io/graphql/October2016/
GraphQL is a working draft specification, initially released as a technical
preview. In September 2016 the technical preview verbiage was removed [ba1bbe5]
in recognition of GraphQL being used in production by companies large and small.
The October 2016 edition of the GraphQL specification is the first since this
announcement and represents the latest draft of the specification. It is also
the first in a planned 6-month release cycle.
Many thanks to everyone who contributed to this release.
All commits since last release
New/Breaking:
These are syntactic rules or semantic behavior which are different from the
previous version. GraphQL service libraries should ensure these incorporated.
null
.null
and not-provided when applying default values.Clarifying:
These are clarifications and improvements to the specification which in many
cases make ambiguous sections more explicit. GraphQL service libraries should
check to ensure their behavior matches the specifiction.
U+1234
instead of 0x1234
to refer to unicode code points.|
is included as a possible Punctuator.null
for List types.April 2016Note: Many grammar and consistency commits were provided by the community, but
only changes notable for their clarification of ambiguity were listed.
http://facebook.github.io/graphql/April2016/
GraphQL is still an active working draft specification. As GraphQL is used by more teams in more environments it continues to improve. This milestone represents the most up to date version of the GraphQL specification for those building GraphQL services.
Most of the changes since the October 2015 edition have been clarifying edits and fixing small mistakes, however there have been notable additions, changes, and clarifications.
A huge thanks to all community members who submitted pull requests and reported issues that lead to these improvements!
Breaking:
locations
Enum instead of onField
, onOperation
, onFragment
booleans. (1c38e6a)@skip
and @include
directives are no longer allowed to be used directly on Fragment Definitions. (1c38e6a)Changes:
Clarifications:
@skip
and @include
directives are both used, one does not have precedence over the other. (914c62a)http://facebook.github.io/graphql/October2015/
The GraphQL Specification Working Draft was first published three months ago today and what has happened since has been stunning. GraphQL is now available in many other languages, all built by members of the community.
Part of the reason for publishing a working draft was to get feedback and improve. We've gotten tons of great feedback which has led to many improvements in GraphQL. There are more exciting improvements ahead as research continues in GraphQL query subscription, streaming responses, and more.
As improvements continue, we thought it would be helpful to tag regular "releases" of the GraphQL Spec drafts and publish a changelog to make it easier to follow GraphQL's development. This marks the first in what will become regular releases of the GraphQL Spec.
Copious improvements have been made to clarity. There is still more to be done to make the spec as clear as possible, but a huge thanks to the many awesome contributors who submitted pull requests and issues in an effort to make the GraphQL spec easier to understand.
In addition to clarifying changes, there also have been quite a few grammar and semantic changes as GraphQL continues to evolve.
Grammar and Semantic Changes:
__type
introspection field always has name
argument by speccing it to be Non-Null (43c3114)true
, false
, or null
(a12f6df)@include
and @skip
directives (9e68777)You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4