Skip to main content

GraphQL Resolver

When writing queries and mutations that use a GraphQL service, you'll have access to two resolvers that execute queries and mutations on the connected service.


name

Type

string!

Values

  • graphql:query
  • graphql:mutation

fieldName

Type

string!

Description

A field name or path to anchor the GraphQL query to.

Example

If you query the original API with the following query:

{
characters {
results {
name
status
}
}
}

The fieldName would be set to characters, which is the field the query will be forwarded to on the origin.

{
site {
product(id: "UHJvZHVjdDo3Nw==") {
id
name
prices {
basePrice {
value
}
}
}
}
}

Set fieldName to site.product to use the namespaced product query. The args mapping will set arguments on product.


options

The options object contains configuration specific to the type of resolver you select.


selectionSet

Type

string?

Description

Defines a GraphQL selectionSet, which is guaranteed to be included in the query to the origin API.

Example

When making this query:

{
RickAndMorty_myCharacters {
results {
name
}
}
}

A resolver with the following options would include status and type on every query to the origin, in addition to whatever fields were requested originally.

{
"options": {
"fieldName": "characters",
"selectionSet": "{ status type }"
}
}

That data will still be excluded from your response data. This is useful if you need the data for other reasons—to transform it for a custom results field, or to use in a later resolver step.


ttl

Type

number?

Description

The number of seconds to cache query results for. This setting only applies to graphl:query resolvers.


timeout

Type

number?

Description

The number of milliseconds to allowed before timing out. The default is no timeout.


unboxParentSelectionSet

Type

boolean?

Description

Default true. Applicable when used with a selectionSet including _parentFragment. When true, results are transformed so that the results from the parent fragment are at the top level. You can override this behavior by setting unboxParentSelectionSet to false, which could be useful if you want to inspect data that would otherwise be discarded.

Example

"getFirstCharacterEpisode": {
"resolver": {
"name": "graphql:query",
"service": "rick",
"fieldName": "character",
"options": {
"selectionSet": "{episode {..._parentFragment}}",
"unboxParentSelectionSet": false
},
"results": {
"ops": [{"path": "$", "mapping": "$finalResolver.episode[0]"}]
}
},
"args": {
"type": "object",
"properties": {"id": {"type": "string", "@tag": "id"}},
"required": ["id"]
},
"shape": "Rick_Episode"
}

args

Type

ParameterConfig?

Description

Allows mapping from the QueryContext to the args values (input arguments) for the resolver. Results are not serialized. For more information read about the ParameterConfig.

Example

{
"RickAndMorty_characters": {
"resolver": {
"name": "graphql:query",
"service": "rick-and-morty",
"options": { "fieldName": "characters" },
"args": {
"ops": [
{
"path": "page",
"mapping": "$args.page"
},
{
"path": "filter",
"mapping": "$args.filter"
}
]
}
},
"args": {
"type": "object",
"properties": {
"page": { "type": "integer" },
"filter": { "@ref": "rick-and-morty:FilterCharacter" }
}
},
"shape": "RickAndMorty_Characters"
}
}

results

Type

ParameterConfig?

Description

Allows mapping from the QueryContext to the results for the resolver step in a ComposeResolver or whole query. Results are not serialized. For more information read about the ParameterConfig.

Example

{
"RickAndMorty_characters": {
"resolver": {
"name": "graphql:query",
"service": "rick-and-morty",
"options": { "fieldName": "characters" },
"args": {
"ops": [
{
"path": "page",
"mapping": "$args.page"
},
{
"path": "filter",
"mapping": "$args.filter"
}
]
},
"results": {
"ops": [
{
"path": "$",
"mapping": "$finalStep.results"
}
]
}
},
"args": {
"type": "object",
"properties": {
"page": { "type": "integer" },
"filter": { "@ref": "rick-and-morty:FilterCharacter" }
}
},
"shape": {
"type": "array",
"items": {
"@ref": "RickAndMorty_Character"
}
}
}
}

headers

Type

ParameterConfig?

Description

Allows mapping from the QueryContext to the headers for the resolver request. For more information read about the Headers.


searchParams

Type

ParameterConfig?

Description

Allows mapping from the QueryContext to the searchParams for the resolver request. For more information read about the SearchParams.