Files
payload/test/joins/schema.graphql
Dan Ribbens 6ef2bdea15 feat!: join field (#7518)
## Description

- Adds a new "join" field type to Payload and is supported by all database adapters
- The UI uses a table view for the new field
- `db-mongodb` changes relationships to be stored as ObjectIDs instead of strings (for now querying works using both types internally to the DB so no data migration should be necessary unless you're querying directly, see breaking changes for details
- Adds a reusable traverseFields utility to Payload to make it easier to work with nested fields, used internally and for plugin maintainers

```ts
export const Categories: CollectionConfig = {
    slug: 'categories',
    fields: [
        {
            name: 'relatedPosts',
            type: 'join',
            collection: 'posts',
            on: 'category',
        }
    ]
}
```

BREAKING CHANGES:
All mongodb relationship and upload values will be stored as MongoDB ObjectIDs instead of strings going forward. If you have existing data and you are querying data directly, outside of Payload's APIs, you get different results. For example, a `contains` query will no longer works given a partial ID of a relationship since the ObjectID requires the whole identifier to work. 

---------

Co-authored-by: Jacob Fletcher <jacobsfletch@gmail.com>
Co-authored-by: James <james@trbl.design>
2024-09-20 11:10:16 -04:00

1708 lines
36 KiB
GraphQL

type Query {
Post(id: String!, draft: Boolean): Post
Posts(draft: Boolean, where: Post_where, limit: Int, page: Int, sort: String): Posts
countPosts(draft: Boolean, where: Post_where): countPosts
docAccessPost(id: String!): postsDocAccess
Category(id: String!, draft: Boolean): Category
Categories(draft: Boolean, where: Category_where, limit: Int, page: Int, sort: String): Categories
countCategories(draft: Boolean, where: Category_where): countCategories
docAccessCategory(id: String!): categoriesDocAccess
User(id: String!, draft: Boolean): User
Users(draft: Boolean, where: User_where, limit: Int, page: Int, sort: String): Users
countUsers(draft: Boolean, where: User_where): countUsers
docAccessUser(id: String!): usersDocAccess
meUser: usersMe
initializedUser: Boolean
PayloadPreference(id: String!, draft: Boolean): PayloadPreference
PayloadPreferences(draft: Boolean, where: PayloadPreference_where, limit: Int, page: Int, sort: String): PayloadPreferences
countPayloadPreferences(draft: Boolean, where: PayloadPreference_where): countPayloadPreferences
docAccessPayloadPreference(id: String!): payload_preferencesDocAccess
Access: Access
}
type Post {
id: String
title: String
category: Category
updatedAt: DateTime
createdAt: DateTime
}
type Category {
id: String
name: String
updatedAt: DateTime
createdAt: DateTime
}
"""
A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the `date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.
"""
scalar DateTime
type Posts {
docs: [Post]
hasNextPage: Boolean
hasPrevPage: Boolean
limit: Int
nextPage: Int
offset: Int
page: Int
pagingCounter: Int
prevPage: Int
totalDocs: Int
totalPages: Int
}
input Post_where {
title: Post_title_operator
category: Post_category_operator
updatedAt: Post_updatedAt_operator
createdAt: Post_createdAt_operator
id: Post_id_operator
AND: [Post_where_and]
OR: [Post_where_or]
}
input Post_title_operator {
equals: String
not_equals: String
like: String
contains: String
in: [String]
not_in: [String]
all: [String]
exists: Boolean
}
input Post_category_operator {
equals: JSON
not_equals: JSON
in: [JSON]
not_in: [JSON]
all: [JSON]
exists: Boolean
}
"""
The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).
"""
scalar JSON @specifiedBy(url: "http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf")
input Post_updatedAt_operator {
equals: DateTime
not_equals: DateTime
greater_than_equal: DateTime
greater_than: DateTime
less_than_equal: DateTime
less_than: DateTime
like: DateTime
exists: Boolean
}
input Post_createdAt_operator {
equals: DateTime
not_equals: DateTime
greater_than_equal: DateTime
greater_than: DateTime
less_than_equal: DateTime
less_than: DateTime
like: DateTime
exists: Boolean
}
input Post_id_operator {
equals: String
not_equals: String
like: String
contains: String
in: [String]
not_in: [String]
all: [String]
exists: Boolean
}
input Post_where_and {
title: Post_title_operator
category: Post_category_operator
updatedAt: Post_updatedAt_operator
createdAt: Post_createdAt_operator
id: Post_id_operator
AND: [Post_where_and]
OR: [Post_where_or]
}
input Post_where_or {
title: Post_title_operator
category: Post_category_operator
updatedAt: Post_updatedAt_operator
createdAt: Post_createdAt_operator
id: Post_id_operator
AND: [Post_where_and]
OR: [Post_where_or]
}
type countPosts {
totalDocs: Int
}
type postsDocAccess {
fields: PostsDocAccessFields
create: PostsCreateDocAccess
read: PostsReadDocAccess
update: PostsUpdateDocAccess
delete: PostsDeleteDocAccess
}
type PostsDocAccessFields {
title: PostsDocAccessFields_title
category: PostsDocAccessFields_category
updatedAt: PostsDocAccessFields_updatedAt
createdAt: PostsDocAccessFields_createdAt
}
type PostsDocAccessFields_title {
create: PostsDocAccessFields_title_Create
read: PostsDocAccessFields_title_Read
update: PostsDocAccessFields_title_Update
delete: PostsDocAccessFields_title_Delete
}
type PostsDocAccessFields_title_Create {
permission: Boolean!
}
type PostsDocAccessFields_title_Read {
permission: Boolean!
}
type PostsDocAccessFields_title_Update {
permission: Boolean!
}
type PostsDocAccessFields_title_Delete {
permission: Boolean!
}
type PostsDocAccessFields_category {
create: PostsDocAccessFields_category_Create
read: PostsDocAccessFields_category_Read
update: PostsDocAccessFields_category_Update
delete: PostsDocAccessFields_category_Delete
}
type PostsDocAccessFields_category_Create {
permission: Boolean!
}
type PostsDocAccessFields_category_Read {
permission: Boolean!
}
type PostsDocAccessFields_category_Update {
permission: Boolean!
}
type PostsDocAccessFields_category_Delete {
permission: Boolean!
}
type PostsDocAccessFields_updatedAt {
create: PostsDocAccessFields_updatedAt_Create
read: PostsDocAccessFields_updatedAt_Read
update: PostsDocAccessFields_updatedAt_Update
delete: PostsDocAccessFields_updatedAt_Delete
}
type PostsDocAccessFields_updatedAt_Create {
permission: Boolean!
}
type PostsDocAccessFields_updatedAt_Read {
permission: Boolean!
}
type PostsDocAccessFields_updatedAt_Update {
permission: Boolean!
}
type PostsDocAccessFields_updatedAt_Delete {
permission: Boolean!
}
type PostsDocAccessFields_createdAt {
create: PostsDocAccessFields_createdAt_Create
read: PostsDocAccessFields_createdAt_Read
update: PostsDocAccessFields_createdAt_Update
delete: PostsDocAccessFields_createdAt_Delete
}
type PostsDocAccessFields_createdAt_Create {
permission: Boolean!
}
type PostsDocAccessFields_createdAt_Read {
permission: Boolean!
}
type PostsDocAccessFields_createdAt_Update {
permission: Boolean!
}
type PostsDocAccessFields_createdAt_Delete {
permission: Boolean!
}
type PostsCreateDocAccess {
permission: Boolean!
where: JSONObject
}
"""
The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).
"""
scalar JSONObject @specifiedBy(url: "http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf")
type PostsReadDocAccess {
permission: Boolean!
where: JSONObject
}
type PostsUpdateDocAccess {
permission: Boolean!
where: JSONObject
}
type PostsDeleteDocAccess {
permission: Boolean!
where: JSONObject
}
type Categories {
docs: [Category]
hasNextPage: Boolean
hasPrevPage: Boolean
limit: Int
nextPage: Int
offset: Int
page: Int
pagingCounter: Int
prevPage: Int
totalDocs: Int
totalPages: Int
}
input Category_where {
name: Category_name_operator
updatedAt: Category_updatedAt_operator
createdAt: Category_createdAt_operator
id: Category_id_operator
AND: [Category_where_and]
OR: [Category_where_or]
}
input Category_name_operator {
equals: String
not_equals: String
like: String
contains: String
in: [String]
not_in: [String]
all: [String]
exists: Boolean
}
input Category_updatedAt_operator {
equals: DateTime
not_equals: DateTime
greater_than_equal: DateTime
greater_than: DateTime
less_than_equal: DateTime
less_than: DateTime
like: DateTime
exists: Boolean
}
input Category_createdAt_operator {
equals: DateTime
not_equals: DateTime
greater_than_equal: DateTime
greater_than: DateTime
less_than_equal: DateTime
less_than: DateTime
like: DateTime
exists: Boolean
}
input Category_id_operator {
equals: String
not_equals: String
like: String
contains: String
in: [String]
not_in: [String]
all: [String]
exists: Boolean
}
input Category_where_and {
name: Category_name_operator
updatedAt: Category_updatedAt_operator
createdAt: Category_createdAt_operator
id: Category_id_operator
AND: [Category_where_and]
OR: [Category_where_or]
}
input Category_where_or {
name: Category_name_operator
updatedAt: Category_updatedAt_operator
createdAt: Category_createdAt_operator
id: Category_id_operator
AND: [Category_where_and]
OR: [Category_where_or]
}
type countCategories {
totalDocs: Int
}
type categoriesDocAccess {
fields: CategoriesDocAccessFields
create: CategoriesCreateDocAccess
read: CategoriesReadDocAccess
update: CategoriesUpdateDocAccess
delete: CategoriesDeleteDocAccess
}
type CategoriesDocAccessFields {
name: CategoriesDocAccessFields_name
posts: CategoriesDocAccessFields_posts
updatedAt: CategoriesDocAccessFields_updatedAt
createdAt: CategoriesDocAccessFields_createdAt
}
type CategoriesDocAccessFields_name {
create: CategoriesDocAccessFields_name_Create
read: CategoriesDocAccessFields_name_Read
update: CategoriesDocAccessFields_name_Update
delete: CategoriesDocAccessFields_name_Delete
}
type CategoriesDocAccessFields_name_Create {
permission: Boolean!
}
type CategoriesDocAccessFields_name_Read {
permission: Boolean!
}
type CategoriesDocAccessFields_name_Update {
permission: Boolean!
}
type CategoriesDocAccessFields_name_Delete {
permission: Boolean!
}
type CategoriesDocAccessFields_posts {
create: CategoriesDocAccessFields_posts_Create
read: CategoriesDocAccessFields_posts_Read
update: CategoriesDocAccessFields_posts_Update
delete: CategoriesDocAccessFields_posts_Delete
}
type CategoriesDocAccessFields_posts_Create {
permission: Boolean!
}
type CategoriesDocAccessFields_posts_Read {
permission: Boolean!
}
type CategoriesDocAccessFields_posts_Update {
permission: Boolean!
}
type CategoriesDocAccessFields_posts_Delete {
permission: Boolean!
}
type CategoriesDocAccessFields_updatedAt {
create: CategoriesDocAccessFields_updatedAt_Create
read: CategoriesDocAccessFields_updatedAt_Read
update: CategoriesDocAccessFields_updatedAt_Update
delete: CategoriesDocAccessFields_updatedAt_Delete
}
type CategoriesDocAccessFields_updatedAt_Create {
permission: Boolean!
}
type CategoriesDocAccessFields_updatedAt_Read {
permission: Boolean!
}
type CategoriesDocAccessFields_updatedAt_Update {
permission: Boolean!
}
type CategoriesDocAccessFields_updatedAt_Delete {
permission: Boolean!
}
type CategoriesDocAccessFields_createdAt {
create: CategoriesDocAccessFields_createdAt_Create
read: CategoriesDocAccessFields_createdAt_Read
update: CategoriesDocAccessFields_createdAt_Update
delete: CategoriesDocAccessFields_createdAt_Delete
}
type CategoriesDocAccessFields_createdAt_Create {
permission: Boolean!
}
type CategoriesDocAccessFields_createdAt_Read {
permission: Boolean!
}
type CategoriesDocAccessFields_createdAt_Update {
permission: Boolean!
}
type CategoriesDocAccessFields_createdAt_Delete {
permission: Boolean!
}
type CategoriesCreateDocAccess {
permission: Boolean!
where: JSONObject
}
type CategoriesReadDocAccess {
permission: Boolean!
where: JSONObject
}
type CategoriesUpdateDocAccess {
permission: Boolean!
where: JSONObject
}
type CategoriesDeleteDocAccess {
permission: Boolean!
where: JSONObject
}
type User {
id: String
updatedAt: DateTime
createdAt: DateTime
email: EmailAddress!
resetPasswordToken: String
resetPasswordExpiration: DateTime
salt: String
hash: String
loginAttempts: Float
lockUntil: DateTime
password: String!
}
"""
A field whose value conforms to the standard internet email address format as specified in HTML Spec: https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address.
"""
scalar EmailAddress @specifiedBy(url: "https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address")
type Users {
docs: [User]
hasNextPage: Boolean
hasPrevPage: Boolean
limit: Int
nextPage: Int
offset: Int
page: Int
pagingCounter: Int
prevPage: Int
totalDocs: Int
totalPages: Int
}
input User_where {
updatedAt: User_updatedAt_operator
createdAt: User_createdAt_operator
email: User_email_operator
id: User_id_operator
AND: [User_where_and]
OR: [User_where_or]
}
input User_updatedAt_operator {
equals: DateTime
not_equals: DateTime
greater_than_equal: DateTime
greater_than: DateTime
less_than_equal: DateTime
less_than: DateTime
like: DateTime
exists: Boolean
}
input User_createdAt_operator {
equals: DateTime
not_equals: DateTime
greater_than_equal: DateTime
greater_than: DateTime
less_than_equal: DateTime
less_than: DateTime
like: DateTime
exists: Boolean
}
input User_email_operator {
equals: EmailAddress
not_equals: EmailAddress
like: EmailAddress
contains: EmailAddress
in: [EmailAddress]
not_in: [EmailAddress]
all: [EmailAddress]
}
input User_id_operator {
equals: String
not_equals: String
like: String
contains: String
in: [String]
not_in: [String]
all: [String]
exists: Boolean
}
input User_where_and {
updatedAt: User_updatedAt_operator
createdAt: User_createdAt_operator
email: User_email_operator
id: User_id_operator
AND: [User_where_and]
OR: [User_where_or]
}
input User_where_or {
updatedAt: User_updatedAt_operator
createdAt: User_createdAt_operator
email: User_email_operator
id: User_id_operator
AND: [User_where_and]
OR: [User_where_or]
}
type countUsers {
totalDocs: Int
}
type usersDocAccess {
fields: UsersDocAccessFields
create: UsersCreateDocAccess
read: UsersReadDocAccess
update: UsersUpdateDocAccess
delete: UsersDeleteDocAccess
unlock: UsersUnlockDocAccess
}
type UsersDocAccessFields {
updatedAt: UsersDocAccessFields_updatedAt
createdAt: UsersDocAccessFields_createdAt
email: UsersDocAccessFields_email
password: UsersDocAccessFields_password
}
type UsersDocAccessFields_updatedAt {
create: UsersDocAccessFields_updatedAt_Create
read: UsersDocAccessFields_updatedAt_Read
update: UsersDocAccessFields_updatedAt_Update
delete: UsersDocAccessFields_updatedAt_Delete
}
type UsersDocAccessFields_updatedAt_Create {
permission: Boolean!
}
type UsersDocAccessFields_updatedAt_Read {
permission: Boolean!
}
type UsersDocAccessFields_updatedAt_Update {
permission: Boolean!
}
type UsersDocAccessFields_updatedAt_Delete {
permission: Boolean!
}
type UsersDocAccessFields_createdAt {
create: UsersDocAccessFields_createdAt_Create
read: UsersDocAccessFields_createdAt_Read
update: UsersDocAccessFields_createdAt_Update
delete: UsersDocAccessFields_createdAt_Delete
}
type UsersDocAccessFields_createdAt_Create {
permission: Boolean!
}
type UsersDocAccessFields_createdAt_Read {
permission: Boolean!
}
type UsersDocAccessFields_createdAt_Update {
permission: Boolean!
}
type UsersDocAccessFields_createdAt_Delete {
permission: Boolean!
}
type UsersDocAccessFields_email {
create: UsersDocAccessFields_email_Create
read: UsersDocAccessFields_email_Read
update: UsersDocAccessFields_email_Update
delete: UsersDocAccessFields_email_Delete
}
type UsersDocAccessFields_email_Create {
permission: Boolean!
}
type UsersDocAccessFields_email_Read {
permission: Boolean!
}
type UsersDocAccessFields_email_Update {
permission: Boolean!
}
type UsersDocAccessFields_email_Delete {
permission: Boolean!
}
type UsersDocAccessFields_password {
create: UsersDocAccessFields_password_Create
read: UsersDocAccessFields_password_Read
update: UsersDocAccessFields_password_Update
delete: UsersDocAccessFields_password_Delete
}
type UsersDocAccessFields_password_Create {
permission: Boolean!
}
type UsersDocAccessFields_password_Read {
permission: Boolean!
}
type UsersDocAccessFields_password_Update {
permission: Boolean!
}
type UsersDocAccessFields_password_Delete {
permission: Boolean!
}
type UsersCreateDocAccess {
permission: Boolean!
where: JSONObject
}
type UsersReadDocAccess {
permission: Boolean!
where: JSONObject
}
type UsersUpdateDocAccess {
permission: Boolean!
where: JSONObject
}
type UsersDeleteDocAccess {
permission: Boolean!
where: JSONObject
}
type UsersUnlockDocAccess {
permission: Boolean!
where: JSONObject
}
type usersMe {
collection: String
exp: Int
strategy: String
token: String
user: User
}
type PayloadPreference {
id: String
user: PayloadPreference_User_Relationship!
key: String
value: JSON
updatedAt: DateTime
createdAt: DateTime
}
type PayloadPreference_User_Relationship {
relationTo: PayloadPreference_User_RelationTo
value: PayloadPreference_User
}
enum PayloadPreference_User_RelationTo {
users
}
union PayloadPreference_User = User
type PayloadPreferences {
docs: [PayloadPreference]
hasNextPage: Boolean
hasPrevPage: Boolean
limit: Int
nextPage: Int
offset: Int
page: Int
pagingCounter: Int
prevPage: Int
totalDocs: Int
totalPages: Int
}
input PayloadPreference_where {
user: PayloadPreference_user_Relation
key: PayloadPreference_key_operator
value: PayloadPreference_value_operator
updatedAt: PayloadPreference_updatedAt_operator
createdAt: PayloadPreference_createdAt_operator
id: PayloadPreference_id_operator
AND: [PayloadPreference_where_and]
OR: [PayloadPreference_where_or]
}
input PayloadPreference_user_Relation {
relationTo: PayloadPreference_user_Relation_RelationTo
value: JSON
}
enum PayloadPreference_user_Relation_RelationTo {
users
}
input PayloadPreference_key_operator {
equals: String
not_equals: String
like: String
contains: String
in: [String]
not_in: [String]
all: [String]
exists: Boolean
}
input PayloadPreference_value_operator {
equals: JSON
not_equals: JSON
like: JSON
contains: JSON
within: JSON
intersects: JSON
exists: Boolean
}
input PayloadPreference_updatedAt_operator {
equals: DateTime
not_equals: DateTime
greater_than_equal: DateTime
greater_than: DateTime
less_than_equal: DateTime
less_than: DateTime
like: DateTime
exists: Boolean
}
input PayloadPreference_createdAt_operator {
equals: DateTime
not_equals: DateTime
greater_than_equal: DateTime
greater_than: DateTime
less_than_equal: DateTime
less_than: DateTime
like: DateTime
exists: Boolean
}
input PayloadPreference_id_operator {
equals: String
not_equals: String
like: String
contains: String
in: [String]
not_in: [String]
all: [String]
exists: Boolean
}
input PayloadPreference_where_and {
user: PayloadPreference_user_Relation
key: PayloadPreference_key_operator
value: PayloadPreference_value_operator
updatedAt: PayloadPreference_updatedAt_operator
createdAt: PayloadPreference_createdAt_operator
id: PayloadPreference_id_operator
AND: [PayloadPreference_where_and]
OR: [PayloadPreference_where_or]
}
input PayloadPreference_where_or {
user: PayloadPreference_user_Relation
key: PayloadPreference_key_operator
value: PayloadPreference_value_operator
updatedAt: PayloadPreference_updatedAt_operator
createdAt: PayloadPreference_createdAt_operator
id: PayloadPreference_id_operator
AND: [PayloadPreference_where_and]
OR: [PayloadPreference_where_or]
}
type countPayloadPreferences {
totalDocs: Int
}
type payload_preferencesDocAccess {
fields: PayloadPreferencesDocAccessFields
create: PayloadPreferencesCreateDocAccess
read: PayloadPreferencesReadDocAccess
update: PayloadPreferencesUpdateDocAccess
delete: PayloadPreferencesDeleteDocAccess
}
type PayloadPreferencesDocAccessFields {
user: PayloadPreferencesDocAccessFields_user
key: PayloadPreferencesDocAccessFields_key
value: PayloadPreferencesDocAccessFields_value
updatedAt: PayloadPreferencesDocAccessFields_updatedAt
createdAt: PayloadPreferencesDocAccessFields_createdAt
}
type PayloadPreferencesDocAccessFields_user {
create: PayloadPreferencesDocAccessFields_user_Create
read: PayloadPreferencesDocAccessFields_user_Read
update: PayloadPreferencesDocAccessFields_user_Update
delete: PayloadPreferencesDocAccessFields_user_Delete
}
type PayloadPreferencesDocAccessFields_user_Create {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_user_Read {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_user_Update {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_user_Delete {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_key {
create: PayloadPreferencesDocAccessFields_key_Create
read: PayloadPreferencesDocAccessFields_key_Read
update: PayloadPreferencesDocAccessFields_key_Update
delete: PayloadPreferencesDocAccessFields_key_Delete
}
type PayloadPreferencesDocAccessFields_key_Create {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_key_Read {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_key_Update {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_key_Delete {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_value {
create: PayloadPreferencesDocAccessFields_value_Create
read: PayloadPreferencesDocAccessFields_value_Read
update: PayloadPreferencesDocAccessFields_value_Update
delete: PayloadPreferencesDocAccessFields_value_Delete
}
type PayloadPreferencesDocAccessFields_value_Create {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_value_Read {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_value_Update {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_value_Delete {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_updatedAt {
create: PayloadPreferencesDocAccessFields_updatedAt_Create
read: PayloadPreferencesDocAccessFields_updatedAt_Read
update: PayloadPreferencesDocAccessFields_updatedAt_Update
delete: PayloadPreferencesDocAccessFields_updatedAt_Delete
}
type PayloadPreferencesDocAccessFields_updatedAt_Create {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_updatedAt_Read {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_updatedAt_Update {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_updatedAt_Delete {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_createdAt {
create: PayloadPreferencesDocAccessFields_createdAt_Create
read: PayloadPreferencesDocAccessFields_createdAt_Read
update: PayloadPreferencesDocAccessFields_createdAt_Update
delete: PayloadPreferencesDocAccessFields_createdAt_Delete
}
type PayloadPreferencesDocAccessFields_createdAt_Create {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_createdAt_Read {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_createdAt_Update {
permission: Boolean!
}
type PayloadPreferencesDocAccessFields_createdAt_Delete {
permission: Boolean!
}
type PayloadPreferencesCreateDocAccess {
permission: Boolean!
where: JSONObject
}
type PayloadPreferencesReadDocAccess {
permission: Boolean!
where: JSONObject
}
type PayloadPreferencesUpdateDocAccess {
permission: Boolean!
where: JSONObject
}
type PayloadPreferencesDeleteDocAccess {
permission: Boolean!
where: JSONObject
}
type Access {
canAccessAdmin: Boolean!
posts: postsAccess
categories: categoriesAccess
users: usersAccess
payload_preferences: payload_preferencesAccess
}
type postsAccess {
fields: PostsFields
create: PostsCreateAccess
read: PostsReadAccess
update: PostsUpdateAccess
delete: PostsDeleteAccess
}
type PostsFields {
title: PostsFields_title
category: PostsFields_category
updatedAt: PostsFields_updatedAt
createdAt: PostsFields_createdAt
}
type PostsFields_title {
create: PostsFields_title_Create
read: PostsFields_title_Read
update: PostsFields_title_Update
delete: PostsFields_title_Delete
}
type PostsFields_title_Create {
permission: Boolean!
}
type PostsFields_title_Read {
permission: Boolean!
}
type PostsFields_title_Update {
permission: Boolean!
}
type PostsFields_title_Delete {
permission: Boolean!
}
type PostsFields_category {
create: PostsFields_category_Create
read: PostsFields_category_Read
update: PostsFields_category_Update
delete: PostsFields_category_Delete
}
type PostsFields_category_Create {
permission: Boolean!
}
type PostsFields_category_Read {
permission: Boolean!
}
type PostsFields_category_Update {
permission: Boolean!
}
type PostsFields_category_Delete {
permission: Boolean!
}
type PostsFields_updatedAt {
create: PostsFields_updatedAt_Create
read: PostsFields_updatedAt_Read
update: PostsFields_updatedAt_Update
delete: PostsFields_updatedAt_Delete
}
type PostsFields_updatedAt_Create {
permission: Boolean!
}
type PostsFields_updatedAt_Read {
permission: Boolean!
}
type PostsFields_updatedAt_Update {
permission: Boolean!
}
type PostsFields_updatedAt_Delete {
permission: Boolean!
}
type PostsFields_createdAt {
create: PostsFields_createdAt_Create
read: PostsFields_createdAt_Read
update: PostsFields_createdAt_Update
delete: PostsFields_createdAt_Delete
}
type PostsFields_createdAt_Create {
permission: Boolean!
}
type PostsFields_createdAt_Read {
permission: Boolean!
}
type PostsFields_createdAt_Update {
permission: Boolean!
}
type PostsFields_createdAt_Delete {
permission: Boolean!
}
type PostsCreateAccess {
permission: Boolean!
where: JSONObject
}
type PostsReadAccess {
permission: Boolean!
where: JSONObject
}
type PostsUpdateAccess {
permission: Boolean!
where: JSONObject
}
type PostsDeleteAccess {
permission: Boolean!
where: JSONObject
}
type categoriesAccess {
fields: CategoriesFields
create: CategoriesCreateAccess
read: CategoriesReadAccess
update: CategoriesUpdateAccess
delete: CategoriesDeleteAccess
}
type CategoriesFields {
name: CategoriesFields_name
posts: CategoriesFields_posts
updatedAt: CategoriesFields_updatedAt
createdAt: CategoriesFields_createdAt
}
type CategoriesFields_name {
create: CategoriesFields_name_Create
read: CategoriesFields_name_Read
update: CategoriesFields_name_Update
delete: CategoriesFields_name_Delete
}
type CategoriesFields_name_Create {
permission: Boolean!
}
type CategoriesFields_name_Read {
permission: Boolean!
}
type CategoriesFields_name_Update {
permission: Boolean!
}
type CategoriesFields_name_Delete {
permission: Boolean!
}
type CategoriesFields_posts {
create: CategoriesFields_posts_Create
read: CategoriesFields_posts_Read
update: CategoriesFields_posts_Update
delete: CategoriesFields_posts_Delete
}
type CategoriesFields_posts_Create {
permission: Boolean!
}
type CategoriesFields_posts_Read {
permission: Boolean!
}
type CategoriesFields_posts_Update {
permission: Boolean!
}
type CategoriesFields_posts_Delete {
permission: Boolean!
}
type CategoriesFields_updatedAt {
create: CategoriesFields_updatedAt_Create
read: CategoriesFields_updatedAt_Read
update: CategoriesFields_updatedAt_Update
delete: CategoriesFields_updatedAt_Delete
}
type CategoriesFields_updatedAt_Create {
permission: Boolean!
}
type CategoriesFields_updatedAt_Read {
permission: Boolean!
}
type CategoriesFields_updatedAt_Update {
permission: Boolean!
}
type CategoriesFields_updatedAt_Delete {
permission: Boolean!
}
type CategoriesFields_createdAt {
create: CategoriesFields_createdAt_Create
read: CategoriesFields_createdAt_Read
update: CategoriesFields_createdAt_Update
delete: CategoriesFields_createdAt_Delete
}
type CategoriesFields_createdAt_Create {
permission: Boolean!
}
type CategoriesFields_createdAt_Read {
permission: Boolean!
}
type CategoriesFields_createdAt_Update {
permission: Boolean!
}
type CategoriesFields_createdAt_Delete {
permission: Boolean!
}
type CategoriesCreateAccess {
permission: Boolean!
where: JSONObject
}
type CategoriesReadAccess {
permission: Boolean!
where: JSONObject
}
type CategoriesUpdateAccess {
permission: Boolean!
where: JSONObject
}
type CategoriesDeleteAccess {
permission: Boolean!
where: JSONObject
}
type usersAccess {
fields: UsersFields
create: UsersCreateAccess
read: UsersReadAccess
update: UsersUpdateAccess
delete: UsersDeleteAccess
unlock: UsersUnlockAccess
}
type UsersFields {
updatedAt: UsersFields_updatedAt
createdAt: UsersFields_createdAt
email: UsersFields_email
password: UsersFields_password
}
type UsersFields_updatedAt {
create: UsersFields_updatedAt_Create
read: UsersFields_updatedAt_Read
update: UsersFields_updatedAt_Update
delete: UsersFields_updatedAt_Delete
}
type UsersFields_updatedAt_Create {
permission: Boolean!
}
type UsersFields_updatedAt_Read {
permission: Boolean!
}
type UsersFields_updatedAt_Update {
permission: Boolean!
}
type UsersFields_updatedAt_Delete {
permission: Boolean!
}
type UsersFields_createdAt {
create: UsersFields_createdAt_Create
read: UsersFields_createdAt_Read
update: UsersFields_createdAt_Update
delete: UsersFields_createdAt_Delete
}
type UsersFields_createdAt_Create {
permission: Boolean!
}
type UsersFields_createdAt_Read {
permission: Boolean!
}
type UsersFields_createdAt_Update {
permission: Boolean!
}
type UsersFields_createdAt_Delete {
permission: Boolean!
}
type UsersFields_email {
create: UsersFields_email_Create
read: UsersFields_email_Read
update: UsersFields_email_Update
delete: UsersFields_email_Delete
}
type UsersFields_email_Create {
permission: Boolean!
}
type UsersFields_email_Read {
permission: Boolean!
}
type UsersFields_email_Update {
permission: Boolean!
}
type UsersFields_email_Delete {
permission: Boolean!
}
type UsersFields_password {
create: UsersFields_password_Create
read: UsersFields_password_Read
update: UsersFields_password_Update
delete: UsersFields_password_Delete
}
type UsersFields_password_Create {
permission: Boolean!
}
type UsersFields_password_Read {
permission: Boolean!
}
type UsersFields_password_Update {
permission: Boolean!
}
type UsersFields_password_Delete {
permission: Boolean!
}
type UsersCreateAccess {
permission: Boolean!
where: JSONObject
}
type UsersReadAccess {
permission: Boolean!
where: JSONObject
}
type UsersUpdateAccess {
permission: Boolean!
where: JSONObject
}
type UsersDeleteAccess {
permission: Boolean!
where: JSONObject
}
type UsersUnlockAccess {
permission: Boolean!
where: JSONObject
}
type payload_preferencesAccess {
fields: PayloadPreferencesFields
create: PayloadPreferencesCreateAccess
read: PayloadPreferencesReadAccess
update: PayloadPreferencesUpdateAccess
delete: PayloadPreferencesDeleteAccess
}
type PayloadPreferencesFields {
user: PayloadPreferencesFields_user
key: PayloadPreferencesFields_key
value: PayloadPreferencesFields_value
updatedAt: PayloadPreferencesFields_updatedAt
createdAt: PayloadPreferencesFields_createdAt
}
type PayloadPreferencesFields_user {
create: PayloadPreferencesFields_user_Create
read: PayloadPreferencesFields_user_Read
update: PayloadPreferencesFields_user_Update
delete: PayloadPreferencesFields_user_Delete
}
type PayloadPreferencesFields_user_Create {
permission: Boolean!
}
type PayloadPreferencesFields_user_Read {
permission: Boolean!
}
type PayloadPreferencesFields_user_Update {
permission: Boolean!
}
type PayloadPreferencesFields_user_Delete {
permission: Boolean!
}
type PayloadPreferencesFields_key {
create: PayloadPreferencesFields_key_Create
read: PayloadPreferencesFields_key_Read
update: PayloadPreferencesFields_key_Update
delete: PayloadPreferencesFields_key_Delete
}
type PayloadPreferencesFields_key_Create {
permission: Boolean!
}
type PayloadPreferencesFields_key_Read {
permission: Boolean!
}
type PayloadPreferencesFields_key_Update {
permission: Boolean!
}
type PayloadPreferencesFields_key_Delete {
permission: Boolean!
}
type PayloadPreferencesFields_value {
create: PayloadPreferencesFields_value_Create
read: PayloadPreferencesFields_value_Read
update: PayloadPreferencesFields_value_Update
delete: PayloadPreferencesFields_value_Delete
}
type PayloadPreferencesFields_value_Create {
permission: Boolean!
}
type PayloadPreferencesFields_value_Read {
permission: Boolean!
}
type PayloadPreferencesFields_value_Update {
permission: Boolean!
}
type PayloadPreferencesFields_value_Delete {
permission: Boolean!
}
type PayloadPreferencesFields_updatedAt {
create: PayloadPreferencesFields_updatedAt_Create
read: PayloadPreferencesFields_updatedAt_Read
update: PayloadPreferencesFields_updatedAt_Update
delete: PayloadPreferencesFields_updatedAt_Delete
}
type PayloadPreferencesFields_updatedAt_Create {
permission: Boolean!
}
type PayloadPreferencesFields_updatedAt_Read {
permission: Boolean!
}
type PayloadPreferencesFields_updatedAt_Update {
permission: Boolean!
}
type PayloadPreferencesFields_updatedAt_Delete {
permission: Boolean!
}
type PayloadPreferencesFields_createdAt {
create: PayloadPreferencesFields_createdAt_Create
read: PayloadPreferencesFields_createdAt_Read
update: PayloadPreferencesFields_createdAt_Update
delete: PayloadPreferencesFields_createdAt_Delete
}
type PayloadPreferencesFields_createdAt_Create {
permission: Boolean!
}
type PayloadPreferencesFields_createdAt_Read {
permission: Boolean!
}
type PayloadPreferencesFields_createdAt_Update {
permission: Boolean!
}
type PayloadPreferencesFields_createdAt_Delete {
permission: Boolean!
}
type PayloadPreferencesCreateAccess {
permission: Boolean!
where: JSONObject
}
type PayloadPreferencesReadAccess {
permission: Boolean!
where: JSONObject
}
type PayloadPreferencesUpdateAccess {
permission: Boolean!
where: JSONObject
}
type PayloadPreferencesDeleteAccess {
permission: Boolean!
where: JSONObject
}
type Mutation {
createPost(data: mutationPostInput!, draft: Boolean): Post
updatePost(id: String!, autosave: Boolean, data: mutationPostUpdateInput!, draft: Boolean): Post
deletePost(id: String!): Post
duplicatePost(id: String!): Post
createCategory(data: mutationCategoryInput!, draft: Boolean): Category
updateCategory(id: String!, autosave: Boolean, data: mutationCategoryUpdateInput!, draft: Boolean): Category
deleteCategory(id: String!): Category
duplicateCategory(id: String!): Category
createUser(data: mutationUserInput!, draft: Boolean): User
updateUser(id: String!, autosave: Boolean, data: mutationUserUpdateInput!, draft: Boolean): User
deleteUser(id: String!): User
refreshTokenUser: usersRefreshedUser
logoutUser: String
unlockUser(email: String!): Boolean!
loginUser(email: String!, password: String): usersLoginResult
forgotPasswordUser(disableEmail: Boolean, expiration: Int, email: String!): Boolean!
resetPasswordUser(password: String, token: String): usersResetPassword
verifyEmailUser(token: String): Boolean
createPayloadPreference(data: mutationPayloadPreferenceInput!, draft: Boolean): PayloadPreference
updatePayloadPreference(id: String!, autosave: Boolean, data: mutationPayloadPreferenceUpdateInput!, draft: Boolean): PayloadPreference
deletePayloadPreference(id: String!): PayloadPreference
duplicatePayloadPreference(id: String!): PayloadPreference
}
input mutationPostInput {
title: String
category: String
updatedAt: String
createdAt: String
}
input mutationPostUpdateInput {
title: String
category: String
updatedAt: String
createdAt: String
}
input mutationCategoryInput {
name: String
updatedAt: String
createdAt: String
}
input mutationCategoryUpdateInput {
name: String
updatedAt: String
createdAt: String
}
input mutationUserInput {
updatedAt: String
createdAt: String
email: String!
resetPasswordToken: String
resetPasswordExpiration: String
salt: String
hash: String
loginAttempts: Float
lockUntil: String
password: String!
}
input mutationUserUpdateInput {
updatedAt: String
createdAt: String
email: String
resetPasswordToken: String
resetPasswordExpiration: String
salt: String
hash: String
loginAttempts: Float
lockUntil: String
password: String
}
type usersRefreshedUser {
exp: Int
refreshedToken: String
strategy: String
user: usersJWT
}
type usersJWT {
email: EmailAddress!
collection: String!
}
type usersLoginResult {
exp: Int
token: String
user: User
}
type usersResetPassword {
token: String
user: User
}
input mutationPayloadPreferenceInput {
user: PayloadPreference_UserRelationshipInput
key: String
value: JSON
updatedAt: String
createdAt: String
}
input PayloadPreference_UserRelationshipInput {
relationTo: PayloadPreference_UserRelationshipInputRelationTo
value: JSON
}
enum PayloadPreference_UserRelationshipInputRelationTo {
users
}
input mutationPayloadPreferenceUpdateInput {
user: PayloadPreferenceUpdate_UserRelationshipInput
key: String
value: JSON
updatedAt: String
createdAt: String
}
input PayloadPreferenceUpdate_UserRelationshipInput {
relationTo: PayloadPreferenceUpdate_UserRelationshipInputRelationTo
value: JSON
}
enum PayloadPreferenceUpdate_UserRelationshipInputRelationTo {
users
}