Invoking a GraphQL Query
In our workflow definition, we can then use a function definition for the pet
query field as such:
{
"functions": [
{
"name": "get-one-pet",
"operation": "https://example.com/pets/graphql#query#pet",
"type": "graphql"
}
]
}
Note that the operation
property has the following format for the graphql
type:
<url_to_graphql_endpoint>#<literal "mutation" or "query">#<mutation_or_query_field>
In order to invoke this query, we would use the following functionRef
parameters:
{
"refName": "get-one-pet",
"arguments": {
"id": 42
},
"selectionSet": "{ id, name, favoriteTreat { id } }"
}
Which would return the following result:
{
"pet": {
"id": 42,
"name": "Snuffles",
"favoriteTreat": {
"id": 9001
}
}
}
Invoking a GraphQL Mutation
Likewise, we would use the following function definition:
{
"functions": [
{
"name": "create-pet",
"operation": "https://example.com/pets/graphql#mutation#createPet",
"type": "graphql"
}
]
}
With the parameters for the functionRef
:
{
"refName": "create-pet",
"arguments": {
"pet": {
"id": 43,
"name":"Sadaharu",
"favoriteTreatId": 9001
}
},
"selectionSet": "{ id, name, favoriteTreat { id } }"
}
Which would execute the mutation, creating the object and returning the following data:
{
"pet": {
"id": 43,
"name": "Sadaharu",
"favoriteTreat": {
"id": 9001
}
}
}
Note you can include expressions in both arguments
and selectionSet
:
{
"refName": "get-one-pet",
"arguments": {
"id": "${ .petId }"
},
"selectionSet": "{ id, name, age(useDogYears: ${ .isPetADog }) { dateOfBirth, years } }"
}
Expressions must be evaluated before executing the operation.
Note that GraphQL Subscriptions are not supported at this time.
For more information about functions, reference the Functions definitions section.