The Salesforce Connect adapter for GraphQL requires that the GraphQL schema adhere to a specific format. This representative schema is designed for you to understand how to construct a schema that works with Salesforce Connect.
//Represents the pattern to follow for each object; ObjName denotes the name of a GraphQL object
type Query {
objName(
limit: Int,
offset: Int,
orderBy: [ObjName_OrderByInput],
where: ObjName_FilterInput,
first: Int,
after: String
): ObjName_Connection
<additional object queries...>
node(id: ID!): Node
}
type Mutation {
create_ObjName(input: ObjName_CreateInput!): ObjName
<additional create mutations>
...
delete_ObjName(id: ID!): ObjName
<additional delete mutations>
...
update_ObjName(input: ObjName_UpdateInput!): ObjName
<additional update mutations>
...
}
type ObjName implements Node {
id: ID!
<fieldName: fieldType>
...
}
type ObjName_Connection {
edges: [ObjName_Edge]
pageInfo: PageInfo!
}
input ObjName_CreateInput {
<fieldName: fieldType>
...
}
input ObjName_UpdateInput {
id: ID!
<fieldName: fieldType>
...
}
type ObjName_Edge {
cursor: String!
node: ObjName
}
input ObjName_FilterInput {
and: [ObjName_FilterInput]
not: ObjName_FilterInput
or: [ObjName_FilterInput]
id: IDOperator
<fieldName: fieldTypeOperator>
...
}
input ObjName_OrderByInput {
id: OrderByClause
<fieldName >: OrderByClause
...
}
//Represents common code, not specific to the objects
interface Node {
id: ID!
}
enum NullsOrder {
NULLS_FIRST
NULLS_LAST
}
input OrderByClause {
direction: Direction
nulls: NullsOrder
}
type PageInfo {
endCursor: String
hasNextPage: Boolean!
hasPreviousPage: Boolean!
startCursor: String
}
input StringOperator {
eq: String
gt: String
ge: String
in: [String]
like: String
lt: String
le: String
ne: String
nin: [String]
}
input AWSDateOperator {
eq: AWSDate
gt: AWSDate
ge: AWSDate
in: [AWSDate]
like: AWSDate
lt: AWSDate
le: AWSDate
ne: AWSDate
nin: [AWSDate]
}
input AWSDateTimeOperator {
eq: AWSDateTime
gt: AWSDateTime
ge: AWSDateTime
in: [AWSDateTime]
like: AWSDateTime
lt: AWSDateTime
le: AWSDateTime
ne: AWSDateTime
nin: [AWSDateTime]
}
input AWSJSONOperator {
eq: AWSJSON
gt: AWSJSON
ge: AWSJSON
in: [AWSJSON]
like: AWSJSON
lt: AWSJSON
le: AWSJSON
ne: AWSJSON
nin: [AWSJSON]
}
input AWSTimeOperator {
eq: AWSTime
gt: AWSTime
ge: AWSTime
in: [AWSTime]
like: AWSTime
lt: AWSTime
le: AWSTime
ne: AWSTime
nin: [AWSTime]
}
input BooleanOperator {
eq: Boolean
gt: Boolean
gebolded: Boolean
in: [Boolean]
like: Boolean
lt: Boolean
le: Boolean
ne: Boolean
nin: [Boolean]
}
enum Direction {
ASC
DESC
}
input FloatOperator {
eq: Float
gt: Float
ge: Float
in: [Float]
like: Float
lt: Float
le: Float
ne: Float
nin: [Float]
}
input IDOperator {
eq: ID
gt: ID
ge: ID
in: [ID]
like: ID
lt: ID
le: ID
ne: ID
nin: [ID]
}
input IntOperator {
eq: Int
gt: Int
ge: Int
in: [Int]
like: Int
lt: Int
le: Int
ne: Int
nin: [Int]
}