input AUTH_PROVIDER_EMAIL { email: String! password: String! } input AddToUsersLinksLinkInput { postedByUserId: ID! linksLinkId: ID! clientMutationId: String! } type AddToUsersLinksPayload { viewer: Viewer! clientMutationId: String! linksLink: Link postedByUser: User linksLinkEdge: LinkEdge postedByUserEdge: UserEdge } type AddToUsersVotesPayload { viewer: Viewer! clientMutationId: String! userUser: User votesVote: Vote userUserEdge: UserEdge votesVoteEdge: VoteEdge } input AddToUsersVotesUserInput { votesVoteId: ID! userUserId: ID! clientMutationId: String! } input AddToVotesOnLinkLinkInput { votesVoteId: ID! linkLinkId: ID! clientMutationId: String! } type AddToVotesOnLinkPayload { viewer: Viewer! clientMutationId: String! linkLink: Link votesVote: Vote linkLinkEdge: LinkEdge votesVoteEdge: VoteEdge } input AuthProviderSignupData { email: AUTH_PROVIDER_EMAIL } # The `BigDecimal` scalar type represents signed fractional values with arbitrary precision. scalar BigDecimal # The `BigInt` scalar type represents non-fractional signed whole numeric values. BigInt can represent arbitrary big values. scalar BigInt input CreateFile { name: String! } input CreateFileInput { name: String! clientMutationId: String! } type CreateFilePayload { viewer: Viewer! clientMutationId: String! file: File edge: FileEdge } input CreateLink { description: String! url: String! postedById: ID votesIds: [ID!] votes: [LinkvotesVote!] } input CreateLinkInput { description: String! url: String! postedById: ID votesIds: [ID!] votes: [LinkvotesVote!] clientMutationId: String! } type CreateLinkPayload { viewer: Viewer! clientMutationId: String! link: Link edge: LinkEdge postedBy: User } input CreateUser { name: String! linksIds: [ID!] links: [UserlinksLink!] votesIds: [ID!] votes: [UservotesVote!] } # If authentication was successful the payload contains the user and a token. If unsuccessful this payload is null. type CreateUserPayload { user: User clientMutationId: String viewer: Viewer! } input CreateVote { linkId: ID link: VotelinkLink userId: ID } input CreateVoteInput { linkId: ID link: VotelinkLink userId: ID clientMutationId: String! } type CreateVotePayload { viewer: Viewer! clientMutationId: String! vote: Vote edge: VoteEdge link: Link user: User } scalar DateTime input DeleteFileInput { id: ID! clientMutationId: String! } type DeleteFilePayload { viewer: Viewer! clientMutationId: String! file: File edge: FileEdge deletedId: ID } input DeleteLinkInput { id: ID! clientMutationId: String! } type DeleteLinkPayload { viewer: Viewer! clientMutationId: String! link: Link edge: LinkEdge postedBy: User deletedId: ID } input DeleteUserInput { id: ID! clientMutationId: String! } type DeleteUserPayload { viewer: Viewer! clientMutationId: String! user: User edge: UserEdge deletedId: ID } input DeleteVoteInput { id: ID! clientMutationId: String! } type DeleteVotePayload { viewer: Viewer! clientMutationId: String! vote: Vote edge: VoteEdge link: Link user: User deletedId: ID } type File implements Node { contentType: String! createdAt: DateTime! id: ID! name: String! secret: String! size: Int! updatedAt: DateTime! url: String! } # A connection to a list of items. type FileConnection { # Information to aid in pagination. pageInfo: PageInfo! # A list of edges. edges: [FileEdge] # Count of filtered result set without considering pagination arguments count: Int! } # An edge in a connection. type FileEdge { # The item at the end of the edge. node: File! # A cursor for use in pagination. cursor: String! } input FileFilter { AND: [FileFilter!] OR: [FileFilter!] contentType: String contentType_not: String contentType_in: [String!] contentType_not_in: [String!] contentType_lt: String contentType_lte: String contentType_gt: String contentType_gte: String contentType_contains: String contentType_not_contains: String contentType_starts_with: String contentType_not_starts_with: String contentType_ends_with: String contentType_not_ends_with: String createdAt: DateTime createdAt_not: DateTime createdAt_in: [DateTime!] createdAt_not_in: [DateTime!] createdAt_lt: DateTime createdAt_lte: DateTime createdAt_gt: DateTime createdAt_gte: DateTime id: ID id_not: ID id_in: [ID!] id_not_in: [ID!] id_lt: ID id_lte: ID id_gt: ID id_gte: ID id_contains: ID id_not_contains: ID id_starts_with: ID id_not_starts_with: ID id_ends_with: ID id_not_ends_with: ID name: String name_not: String name_in: [String!] name_not_in: [String!] name_lt: String name_lte: String name_gt: String name_gte: String name_contains: String name_not_contains: String name_starts_with: String name_not_starts_with: String name_ends_with: String name_not_ends_with: String secret: String secret_not: String secret_in: [String!] secret_not_in: [String!] secret_lt: String secret_lte: String secret_gt: String secret_gte: String secret_contains: String secret_not_contains: String secret_starts_with: String secret_not_starts_with: String secret_ends_with: String secret_not_ends_with: String size: Int size_not: Int size_in: [Int!] size_not_in: [Int!] size_lt: Int size_lte: Int size_gt: Int size_gte: Int updatedAt: DateTime updatedAt_not: DateTime updatedAt_in: [DateTime!] updatedAt_not_in: [DateTime!] updatedAt_lt: DateTime updatedAt_lte: DateTime updatedAt_gt: DateTime updatedAt_gte: DateTime url: String url_not: String url_in: [String!] url_not_in: [String!] url_lt: String url_lte: String url_gt: String url_gte: String url_contains: String url_not_contains: String url_starts_with: String url_not_starts_with: String url_ends_with: String url_not_ends_with: String } enum FileOrderBy { contentType_ASC contentType_DESC createdAt_ASC createdAt_DESC id_ASC id_DESC name_ASC name_DESC secret_ASC secret_DESC size_ASC size_DESC updatedAt_ASC updatedAt_DESC url_ASC url_DESC } type Link implements Node { createdAt: DateTime! description: String! id: ID! postedBy(filter: UserFilter): User updatedAt: DateTime! url: String! votes(filter: VoteFilter, orderBy: VoteOrderBy, skip: Int, after: String, before: String, first: Int, last: Int): VoteConnection _votesMeta: _QueryMeta! } # Meta information about the query. type _QueryMeta { count: Int! } # A connection to a list of items. type LinkConnection { # Information to aid in pagination. pageInfo: PageInfo # A list of edges. edges: [LinkEdge] # Count of filtered result set without considering pagination arguments count: Int! } # An edge in a connection. type LinkEdge { # The item at the end of the edge. node: Link # A cursor for use in pagination. cursor: String } input LinkFilter { AND: [LinkFilter!] OR: [LinkFilter!] createdAt: DateTime createdAt_not: DateTime createdAt_in: [DateTime!] createdAt_not_in: [DateTime!] createdAt_lt: DateTime createdAt_lte: DateTime createdAt_gt: DateTime createdAt_gte: DateTime description: String description_not: String description_in: [String!] description_not_in: [String!] description_lt: String description_lte: String description_gt: String description_gte: String description_contains: String description_not_contains: String description_starts_with: String description_not_starts_with: String description_ends_with: String description_not_ends_with: String id: ID id_not: ID id_in: [ID!] id_not_in: [ID!] id_lt: ID id_lte: ID id_gt: ID id_gte: ID id_contains: ID id_not_contains: ID id_starts_with: ID id_not_starts_with: ID id_ends_with: ID id_not_ends_with: ID updatedAt: DateTime updatedAt_not: DateTime updatedAt_in: [DateTime!] updatedAt_not_in: [DateTime!] updatedAt_lt: DateTime updatedAt_lte: DateTime updatedAt_gt: DateTime updatedAt_gte: DateTime url: String url_not: String url_in: [String!] url_not_in: [String!] url_lt: String url_lte: String url_gt: String url_gte: String url_contains: String url_not_contains: String url_starts_with: String url_not_starts_with: String url_ends_with: String url_not_ends_with: String postedBy: UserFilter votes_every: VoteFilter votes_some: VoteFilter votes_none: VoteFilter } enum LinkOrderBy { createdAt_ASC createdAt_DESC description_ASC description_DESC id_ASC id_DESC updatedAt_ASC updatedAt_DESC url_ASC url_DESC } input LinkvotesVote { userId: ID } # The `Long` scalar type represents non-fractional signed whole numeric values. # Long can represent values between -(2^63) and 2^63 - 1. scalar Long type Mutation { createFile(input: CreateFileInput!): CreateFilePayload createLink(input: CreateLinkInput!): CreateLinkPayload createVote(input: CreateVoteInput!): CreateVotePayload updateFile(input: UpdateFileInput!): UpdateFilePayload updateLink(input: UpdateLinkInput!): UpdateLinkPayload updateUser(input: UpdateUserInput!): UpdateUserPayload updateVote(input: UpdateVoteInput!): UpdateVotePayload updateOrCreateFile(input: UpdateOrCreateFileInput!): UpdateOrCreateFilePayload updateOrCreateLink(input: UpdateOrCreateLinkInput!): UpdateOrCreateLinkPayload updateOrCreateUser(input: UpdateOrCreateUserInput!): UpdateOrCreateUserPayload updateOrCreateVote(input: UpdateOrCreateVoteInput!): UpdateOrCreateVotePayload deleteFile(input: DeleteFileInput!): DeleteFilePayload deleteLink(input: DeleteLinkInput!): DeleteLinkPayload deleteUser(input: DeleteUserInput!): DeleteUserPayload deleteVote(input: DeleteVoteInput!): DeleteVotePayload addToUsersLinks(input: AddToUsersLinksLinkInput!): AddToUsersLinksPayload addToUsersVotes(input: AddToUsersVotesUserInput!): AddToUsersVotesPayload addToVotesOnLink(input: AddToVotesOnLinkLinkInput!): AddToVotesOnLinkPayload removeFromUsersLinks(input: RemoveFromUsersLinksLinkInput!): RemoveFromUsersLinksPayload createUser(input: SignupUserInput!): CreateUserPayload! signinUser(input: SigninUserInput!): SigninPayload! createUser(input: SignupUserInput!): CreateUserPayload! } # If authentication was successful the payload contains the user and a token. If unsuccessful this payload is null. type SigninPayload { token: String user: User clientMutationId: String viewer: Viewer! } input SigninUserInput { email: AUTH_PROVIDER_EMAIL clientMutationId: String! } input SignupUserInput { name: String! linksIds: [ID!] links: [UserlinksLink!] votesIds: [ID!] votes: [UservotesVote!] clientMutationId: String! authProvider: AuthProviderSignupData! } # An object with an ID interface Node { # The id of the object. id: ID! } # Information about pagination in a connection. type PageInfo { # When paginating forwards, are there more items? hasNextPage: Boolean # When paginating backwards, are there more items? hasPreviousPage: Boolean # When paginating backwards, the cursor to continue. startCursor: String # When paginating forwards, the cursor to continue. endCursor: String } type Query { viewer: Viewer! # Fetches an object given its ID node( # The ID of an object id: ID! ): Node } input RemoveFromUsersLinksLinkInput { postedByUserId: ID! linksLinkId: ID! clientMutationId: String! } type RemoveFromUsersLinksPayload { viewer: Viewer! clientMutationId: String! linksLink: Link postedByUser: User linksLinkEdge: LinkEdge postedByUserEdge: UserEdge } input UpdateFile { id: ID! name: String } input UpdateFileInput { id: ID! name: String clientMutationId: String! } type UpdateFilePayload { viewer: Viewer! clientMutationId: String! file: File edge: FileEdge } input UpdateLink { description: String id: ID! url: String postedById: ID votesIds: [ID!] votes: [LinkvotesVote!] } input UpdateLinkInput { description: String id: ID! url: String postedById: ID votesIds: [ID!] votes: [LinkvotesVote!] clientMutationId: String! } type UpdateLinkPayload { viewer: Viewer! clientMutationId: String! link: Link edge: LinkEdge postedBy: User } input UpdateOrCreateFileInput { update: UpdateFile! create: CreateFile! clientMutationId: String! } type UpdateOrCreateFilePayload { viewer: Viewer! clientMutationId: String! file: File edge: FileEdge } input UpdateOrCreateLinkInput { update: UpdateLink! create: CreateLink! clientMutationId: String! } type UpdateOrCreateLinkPayload { viewer: Viewer! clientMutationId: String! link: Link edge: LinkEdge postedBy: User } input UpdateOrCreateUserInput { update: UpdateUser! create: CreateUser! clientMutationId: String! } type UpdateOrCreateUserPayload { viewer: Viewer! clientMutationId: String! user: User edge: UserEdge } input UpdateOrCreateVoteInput { update: UpdateVote! create: CreateVote! clientMutationId: String! } type UpdateOrCreateVotePayload { viewer: Viewer! clientMutationId: String! vote: Vote edge: VoteEdge link: Link user: User } input UpdateUser { id: ID! name: String linksIds: [ID!] links: [UserlinksLink!] votesIds: [ID!] votes: [UservotesVote!] } input UpdateUserInput { id: ID! name: String linksIds: [ID!] links: [UserlinksLink!] votesIds: [ID!] votes: [UservotesVote!] clientMutationId: String! } type UpdateUserPayload { viewer: Viewer! clientMutationId: String! user: User edge: UserEdge } input UpdateVote { id: ID! linkId: ID link: VotelinkLink userId: ID } input UpdateVoteInput { id: ID! linkId: ID link: VotelinkLink userId: ID clientMutationId: String! } type UpdateVotePayload { viewer: Viewer! clientMutationId: String! vote: Vote edge: VoteEdge link: Link user: User } type User implements Node { createdAt: DateTime! id: ID! links(filter: LinkFilter, orderBy: LinkOrderBy, skip: Int, after: String, before: String, first: Int, last: Int): LinkConnection name: String! updatedAt: DateTime! votes(filter: VoteFilter, orderBy: VoteOrderBy, skip: Int, after: String, before: String, first: Int, last: Int): VoteConnection } # A connection to a list of items. type UserConnection { # Information to aid in pagination. pageInfo: PageInfo! # A list of edges. edges: [UserEdge] # Count of filtered result set without considering pagination arguments count: Int! } # An edge in a connection. type UserEdge { # The item at the end of the edge. node: User! # A cursor for use in pagination. cursor: String! } input UserFilter { AND: [UserFilter!] OR: [UserFilter!] createdAt: DateTime createdAt_not: DateTime createdAt_in: [DateTime!] createdAt_not_in: [DateTime!] createdAt_lt: DateTime createdAt_lte: DateTime createdAt_gt: DateTime createdAt_gte: DateTime id: ID id_not: ID id_in: [ID!] id_not_in: [ID!] id_lt: ID id_lte: ID id_gt: ID id_gte: ID id_contains: ID id_not_contains: ID id_starts_with: ID id_not_starts_with: ID id_ends_with: ID id_not_ends_with: ID name: String name_not: String name_in: [String!] name_not_in: [String!] name_lt: String name_lte: String name_gt: String name_gte: String name_contains: String name_not_contains: String name_starts_with: String name_not_starts_with: String name_ends_with: String name_not_ends_with: String updatedAt: DateTime updatedAt_not: DateTime updatedAt_in: [DateTime!] updatedAt_not_in: [DateTime!] updatedAt_lt: DateTime updatedAt_lte: DateTime updatedAt_gt: DateTime updatedAt_gte: DateTime links_every: LinkFilter links_some: LinkFilter links_none: LinkFilter votes_every: VoteFilter votes_some: VoteFilter votes_none: VoteFilter } enum UserOrderBy { createdAt_ASC createdAt_DESC id_ASC id_DESC name_ASC name_DESC updatedAt_ASC updatedAt_DESC } input UserlinksLink { description: String! url: String! votesIds: [ID!] votes: [UserlinksLinkvotesVote!] } input UserlinksLinkvotesVote { userId: ID } input UservotesVote { linkId: ID link: UservotesVotelinkLink } input UservotesVotelinkLink { description: String! url: String! postedById: ID votesIds: [ID!] votes: [UservotesVotelinkLinkvotesVote!] } input UservotesVotelinkLinkvotesVote { linkId: ID userId: ID } # This is the famous Relay viewer object type Viewer { allFiles(filter: FileFilter, orderBy: FileOrderBy, skip: Int, after: String, before: String, first: Int, last: Int): FileConnection! allLinks(filter: LinkFilter, orderBy: LinkOrderBy, skip: Int, after: String, before: String, first: Int, last: Int): LinkConnection allUsers(filter: UserFilter, orderBy: UserOrderBy, skip: Int, after: String, before: String, first: Int, last: Int): UserConnection! allVotes(filter: VoteFilter, orderBy: VoteOrderBy, skip: Int, after: String, before: String, first: Int, last: Int): VoteConnection! user: User File(id: ID, secret: String, url: String): File Link(id: ID): Link User(id: ID): User Vote(id: ID): Vote id: ID! } type Vote implements Node { createdAt: DateTime! id: ID! link(filter: LinkFilter): Link! updatedAt: DateTime! user(filter: UserFilter): User! } # A connection to a list of items. type VoteConnection { # Information to aid in pagination. pageInfo: PageInfo # A list of edges. edges: [VoteEdge] # Count of filtered result set without considering pagination arguments count: Int! } # An edge in a connection. type VoteEdge { # The item at the end of the edge. node: Vote # A cursor for use in pagination. cursor: String } input VoteFilter { AND: [VoteFilter!] OR: [VoteFilter!] createdAt: DateTime createdAt_not: DateTime createdAt_in: [DateTime!] createdAt_not_in: [DateTime!] createdAt_lt: DateTime createdAt_lte: DateTime createdAt_gt: DateTime createdAt_gte: DateTime id: ID id_not: ID id_in: [ID!] id_not_in: [ID!] id_lt: ID id_lte: ID id_gt: ID id_gte: ID id_contains: ID id_not_contains: ID id_starts_with: ID id_not_starts_with: ID id_ends_with: ID id_not_ends_with: ID updatedAt: DateTime updatedAt_not: DateTime updatedAt_in: [DateTime!] updatedAt_not_in: [DateTime!] updatedAt_lt: DateTime updatedAt_lte: DateTime updatedAt_gt: DateTime updatedAt_gte: DateTime link: LinkFilter user: UserFilter } enum VoteOrderBy { createdAt_ASC createdAt_DESC id_ASC id_DESC updatedAt_ASC updatedAt_DESC } input VotelinkLink { description: String! url: String! postedById: ID votesIds: [ID!] votes: [VotelinkLinkvotesVote!] } input VotelinkLinkvotesVote { userId: ID } type Subscription { Link: LinkSubscriptionPayload Vote: VoteSubscriptionPayload } type LinkSubscriptionPayload { mutation: _ModelMutationType! node: Link updatedFields: [String!] previousValues: LinkPreviousValues } enum _ModelMutationType { CREATED UPDATED DELETED } type LinkPreviousValues { createdAt: DateTime! description: String! id: ID! updatedAt: DateTime! url: String! } type VoteSubscriptionPayload { mutation: _ModelMutationType! node: Vote updatedFields: [String!] previousValues: VotePreviousValues } type VotePreviousValues { createdAt: DateTime! id: ID! updatedAt: DateTime! }