# Semantic conventions for GraphQL server spans **Status**: [Development][DocumentStatus] **Status:** ![Development](https://img.shields.io/badge/-development-blue) This span represents an incoming operation on a GraphQL server implementation. **Span name** SHOULD be of the format `{graphql.operation.type}` provided `graphql.operation.type` is available. If `graphql.operation.type` is not available, the span SHOULD be named `GraphQL Operation`. > **Warning** > The `graphql.operation.name` value is provided by the client and can have high > cardinality. Using it in the GraphQL server span name (by default) is > NOT RECOMMENDED. > > Instrumentation MAY provide a configuration option to enable a more descriptive > span name following `{graphql.operation.type} {graphql.operation.name}` format > when `graphql.operation.name` is available. **Span kind** SHOULD be `SERVER`. **Span status** SHOULD follow the [Recording Errors](/docs/general/recording-errors.md) document. | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`graphql.document`](/docs/registry/attributes/graphql.md) | string | The GraphQL document being executed. [1] | `query findBookById { bookById(id: ?) { name } }` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`graphql.operation.name`](/docs/registry/attributes/graphql.md) | string | The name of the operation being executed. | `findBookById` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`graphql.operation.type`](/docs/registry/attributes/graphql.md) | string | The type of the operation being executed. | `query`; `mutation`; `subscription` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | **[1] `graphql.document`:** The value may be sanitized to exclude sensitive information. --- `graphql.operation.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `mutation` | GraphQL mutation | ![Development](https://img.shields.io/badge/-development-blue) | | `query` | GraphQL query | ![Development](https://img.shields.io/badge/-development-blue) | | `subscription` | GraphQL subscription | ![Development](https://img.shields.io/badge/-development-blue) | [DocumentStatus]: https://opentelemetry.io/docs/specs/otel/document-status