schema
@link(url: "https://specs.apollo.dev/link/v1.0")
@link(url: "https://specs.apollo.dev/inaccessible/v0.2", for: SECURITY)
@link(url: "https://specs.apollo.dev/join/v0.2", for: EXECUTION)
{
  query: Query
}

directive @join__field(graph: join__Graph!, requires: join__FieldSet, provides: join__FieldSet, type: String, external: Boolean, override: String, usedOverridden: Boolean) repeatable on FIELD_DEFINITION | INPUT_FIELD_DEFINITION
directive @join__graph(name: String!, url: String!) on ENUM_VALUE
directive @join__type(graph: join__Graph!, key: join__FieldSet, extension: Boolean! = false, resolvable: Boolean! = true) repeatable on OBJECT | INTERFACE | UNION | ENUM | INPUT_OBJECT | SCALAR
directive @join__implements(
  graph: join__Graph!
  interface: String!
) repeatable on OBJECT | INTERFACE

directive @link(url: String, as: String, for: link__Purpose, import: [link__Import]) repeatable on SCHEMA
directive @inaccessible on FIELD_DEFINITION | OBJECT | INTERFACE | UNION | ARGUMENT_DEFINITION | SCALAR | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION

scalar join__FieldSet
scalar link__Import
enum link__Purpose {
  SECURITY
  EXECUTION
}

enum join__Graph {
  TEST @join__graph(name: "test", url: "http://localhost:4001/graphql")
}


input MessageInput @join__type(graph: TEST) {
  content: String
  author: String
  canvas: [CanvasInput]
}
input CanvasInput @join__type(graph: TEST) {
  input: Int!
}
type Receipt @join__type(graph: TEST) {
  id: ID!
}
type Query @join__type(graph: TEST) {
  send(message: MessageInput): Receipt
}


