type MyCustomObjInaccessible @inaccessible {
	a: Int!
	customObjectInaccessible: Int! @inaccessible
}

enum MyEnumInaccessible @inaccessible {
	OPTION_A
	OPTION_B
	OPTION_C
}

enum MyEnumVariantInaccessible {
	OPTION_A_INACCESSIBLE @inaccessible
	OPTION_B
	OPTION_C
}

input MyInputObjFieldInaccessible {
	inputFieldInaccessibleA: Int! @inaccessible
}

input MyInputObjInaccessible @inaccessible {
	a: Int!
}

interface MyInterfaceInaccessible @inaccessible {
	inaccessibleInterfaceValue: String! @inaccessible
}

type MyInterfaceObjA implements MyInterfaceInaccessible {
	inaccessibleInterfaceValue: String!
}

type MyInterfaceObjB implements MyInterfaceInaccessible @inaccessible {
	inaccessibleInterfaceValue: String!
}

scalar MyNumberInaccessible @inaccessible

type MyObjFieldInaccessible @key(fields: "id") {
	objFieldInaccessibleA: Int! @inaccessible
}

type MyObjInaccessible @key(fields: "id") @inaccessible {
	a: Int!
}

union MyUnionInaccessible @inaccessible = MyInterfaceObjA | MyInterfaceObjB

extend type Query {
	enumVariantInaccessible(id: Int!): MyEnumVariantInaccessible!
	enumInaccessible(id: Int!): MyEnumInaccessible!
	inaccessibleField(id: Int!): Int! @inaccessible
	inaccessibleArgument(id: Int! @inaccessible): Int!
	inaccessibleInterface: MyInterfaceInaccessible!
	inaccessibleUnion: MyUnionInaccessible!
	inaccessibleScalar: MyNumberInaccessible!
	inaccessibleInputField(value: MyInputObjFieldInaccessible!): Int!
	inaccessibleInput(value: MyInputObjInaccessible!): Int!
	inaccessibleCustomObject: MyCustomObjInaccessible!
}

"""
Directs the executor to include this field or fragment only when the `if` argument is true.
"""
directive @include(if: Boolean!) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT
"""
Directs the executor to skip this field or fragment when the `if` argument is true.
"""
directive @skip(if: Boolean!) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT
extend schema @link(
	url: "https://specs.apollo.dev/federation/v2.5",
	import: ["@key", "@tag", "@shareable", "@inaccessible", "@override", "@external", "@provides", "@requires", "@composeDirective", "@interfaceObject", "@requiresScopes"]
)
