From 3376f769a56bc782e4008199d0402865e5031514 Mon Sep 17 00:00:00 2001 From: Eshaan Aggarwal <96648934+EshaanAgg@users.noreply.github.com> Date: Tue, 11 Apr 2023 09:06:14 +0530 Subject: [PATCH] Add auto schema markdown generation to Talawa-API [Fixes part of #1240] (#1247) * Add schema documentation * Add branch for testing * Fix docker action * Fix script * Remove docker * Bug fix * Move to correct workflow file * Remove docker files * Add documentation and change directory structure * Add schema export * Fix linting * Make required changes * Linting fix * Change commit message * Add docs directory * Add manual git command * Disable hooks in CI * Generate GraphQL Schema and Markdown Documentation * Better descriptions * Add docs to ESLint ignore * Upload schema.json as artifact * Sync * Fix movement * Bug fix * Syntax fix * Syntax fix * Bug fix * Add ls * Add ls * Change driectories * Add listing * Fix directory structure * Change branchname * Remove spec * Fix workflow * Generate GraphQL Schema and Markdown Documentation * Add secret authentication * Finalise tested workflow * Change token * Move get-graphql-schema to a dev dependency * Move to TALAWA_DOCS_SYNC token --------- Co-authored-by: EshaanAgg --- .eslintignore | 3 +- .github/workflows/push.yml | 69 +- .gitignore | 4 + .husky/pre-commit | 8 + .prettierignore | 3 +- CONTRIBUTING.md | 9 + docs/README.md | 7 + docs/Schema.md | 5467 ++++++++++++++++++++++++++++++++++++ package-lock.json | 208 ++ package.json | 6 +- 10 files changed, 5776 insertions(+), 8 deletions(-) create mode 100644 docs/README.md create mode 100644 docs/Schema.md diff --git a/.eslintignore b/.eslintignore index 4ba8c742cdf..1aa9d8a2d3a 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,4 +3,5 @@ build coverage node_modules -src/types \ No newline at end of file +src/types +docs/Schema.md \ No newline at end of file diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 695a875cda3..cfc57173b25 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -25,8 +25,8 @@ jobs: # code coverage (post PR merge) is reported ############################################################################## - Test-Application: - name: Testing Application + Push-Workflow: + name: Testing Application and Updating Documentation runs-on: ubuntu-latest strategy: matrix: @@ -46,9 +46,13 @@ jobs: ACCESS_TOKEN_SECRET: ${{ secrets.ACCESS_TOKEN_SECRET }} REFRESH_TOKEN_SECRET: ${{ secrets.REFRESH_TOKEN_SECRET }} + # We checkout the content of the Talawa-API repository in a directory called `api` + # This is done as we will use the Talawa-Docs repository later too steps: - name: Checkout repository uses: actions/checkout@v3 + with: + path: api - name: Generate Access Token Secret run: echo "ACCESS_TOKEN_SECRET=$(openssl rand -hex 32)" >> $GITHUB_ENV @@ -59,20 +63,75 @@ jobs: - name: Set up Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 + # Move into the api folder before installing the dependencies - name: Install dependencies - run: npm ci + run: cd api && npm ci + # Move into the api folder before starting the server + - name: Start the development server in detach mode + run: | + cd api && npm run dev & + echo "Development server started..." - name: Sleep for 10s uses: juliangruber/sleep-action@v1 with: time: 10s + # Move into the api folder before generating the Markdown schema documentation + - name: Generate the GraphQL-Markdown documentation + run: cd api && npm run generate:graphql-markdown + + # Move into the api folder before generating the Schema is json form + - name: Genrate the GraphQL Schema in JSON form + run: cd api && npm run generate:graphql-schema + + + # Running the generate::** scripts will create the necessary documentation on the server + # where the GitHub Action is running locally. We add the same to stage with -f flag as they are a + # part of the .gitignore file + - name: Add the generated Markdown Documentation to stage + run: cd api && git add docs/Schema.md -f + + # We use this action to commit the changes above to the repository + - name: Commit generated Markdown Documentation to the Talawa API repository + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: Generate GraphQL Schema and Markdown Documentation + repository: api + + # We will clone the Talawa Docs in the folder called docs so that we can copy the generated + # schema.json into the same later + - name: Checkout the Talawa-Docs repository + uses: actions/checkout@v3 + with: + repository: PalisadoesFoundation/talawa-docs + token: ${{ secrets.TALAWA_DOCS_SYNC }} + path: docs + + # Copy the generated schema.json into the Talawa Docs repository + - name: Sync schema.json from Talawa API to Talawa Docs + run: cp api/docs/schema.json docs/docs/ + + # Add the updated schema.json in Talawa Docs to stage + - name: Add the synced schema.json to stage in Talawa Docs + run: cd docs && git add docs/schema.json + + # Commit the changes made to schema.json into Talawa Docs + - name: Commit the synced schema to the Talawa Docs repository + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: Update schema.json + repository: docs + + # Testing the application after moving into the api folder - name: Run the tests - run: npm run test + run: cd api && npm run test + # Upload Coverage - name: Present and upload coverage to Codecov as ${{env.CODECOV_UNIQUE_NAME}} uses: codecov/codecov-action@v3 with: + directory: api verbose: true fail_ci_if_error: false - name: '${{env.CODECOV_UNIQUE_NAME}}' + name: '${{env.CODECOV_UNIQUE_NAME}}' \ No newline at end of file diff --git a/.gitignore b/.gitignore index fbdeb6ddbd3..6cd01416603 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +# Add the auto-generated docs to .gitignore as the same are created by GitHub actions +docs/Schema.md +docs/schema.json + node_modules .idea .env diff --git a/.husky/pre-commit b/.husky/pre-commit index f188fcc26e7..8cabef56c16 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,9 @@ #!/usr/bin/env sh + +# Disable the hooks in CI +[ -n "$CI" ] && exit 0 + +# Change to the current directory . "$(dirname -- "$0")/_/husky.sh" # Formats code using prettier. @@ -10,3 +15,6 @@ npm run typecheck # Checks and fixes all lint issues in code which don't require manual intervention. # Throws errors if lint issues requiring manual intervention are found in code. npm run lint:fix + +# Add the changes made to the stage +git add . \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index 4ba8c742cdf..1aa9d8a2d3a 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,4 +3,5 @@ build coverage node_modules -src/types \ No newline at end of file +src/types +docs/Schema.md \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2aeb210fad4..7e6885f9b80 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -27,6 +27,7 @@ If you are new to contributing to open source, please read the Open Source Guide - [Pre-Commit hook](#pre-commit-hook) - [Post-Merge hook](#post-merge-hook) - [GraphQL Voyager](#graphql-voyager) + - [GraphQL Markdown](#graphql-markdown) - [Running Queries with talawa-api](#running-queries-with-talawa-api) - [Internships](#internships) - [Community](#community) @@ -273,6 +274,14 @@ Go to `http://localhost:4000/voyager` after running the development server to ex ![Voyager Demo for User Model](./image/GraphQL_Voyager.png) +### GraphQL Markdown + +We use the [GraphQL Markdown](https://github.com/exogen/graphql-markdown) project to generate the documentation to describe the schema. To generate the same manually, you first need to start the development server locally with `npm run dev`, and then run the script `npm run generate:graphql-markdown`. + +You can then view the [generated documentation here](./docs/Schema.md). + +While we use a GitHub workflow to update ths schema documentation every time a PR is merged into the repository, it is highly advisable that if you making changes to the schema, then you should also update the schema documentation by the process described above. + ### Running Queries with talawa-api - Talawa API currently implement `GraphQL Playground` as mediator interface to run and test queries directly from the api. [Learn more](https://www.apollographql.com/docs/apollo-server/v2/testing/graphql-playground/) diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000000..f100b3aa5a3 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,7 @@ +# Documentation + +This directory contain the all the relevant documentation about the API for the developers. + +Currently it has only one: + +- [Schema.md](./Schema.md): Contains the documentation about the GraphQL schema in Markdown format. Auto-generated on push to `develop` branch with the help of `graphql-markdown` plugin. diff --git a/docs/Schema.md b/docs/Schema.md new file mode 100644 index 00000000000..7e81e5e8732 --- /dev/null +++ b/docs/Schema.md @@ -0,0 +1,5467 @@ +# Schema Types + +
+ Table of Contents + + * [Query](#query) + * [Mutation](#mutation) + * [Objects](#objects) + * [AggregatePost](#aggregatepost) + * [AggregateUser](#aggregateuser) + * [AndroidFirebaseOptions](#androidfirebaseoptions) + * [AuthData](#authdata) + * [Comment](#comment) + * [ConnectionPageInfo](#connectionpageinfo) + * [DeletePayload](#deletepayload) + * [DirectChat](#directchat) + * [DirectChatMessage](#directchatmessage) + * [Donation](#donation) + * [Event](#event) + * [EventRegistrants](#eventregistrants) + * [ExtendSession](#extendsession) + * [Group](#group) + * [GroupChat](#groupchat) + * [GroupChatMessage](#groupchatmessage) + * [IOSFirebaseOptions](#iosfirebaseoptions) + * [Language](#language) + * [LanguageModel](#languagemodel) + * [MembershipRequest](#membershiprequest) + * [Message](#message) + * [MessageChat](#messagechat) + * [Organization](#organization) + * [OrganizationInfoNode](#organizationinfonode) + * [OtpData](#otpdata) + * [PageInfo](#pageinfo) + * [Plugin](#plugin) + * [PluginField](#pluginfield) + * [Post](#post) + * [PostConnection](#postconnection) + * [Subscription](#subscription) + * [Task](#task) + * [Translation](#translation) + * [User](#user) + * [UserAttende](#userattende) + * [UserConnection](#userconnection) + * [UserEdge](#useredge) + * [UserTag](#usertag) + * [UserTagEdge](#usertagedge) + * [UserTagsConnection](#usertagsconnection) + * [UsersConnection](#usersconnection) + * [Inputs](#inputs) + * [CommentInput](#commentinput) + * [CreateUserTagInput](#createusertaginput) + * [DonationWhereInput](#donationwhereinput) + * [EventInput](#eventinput) + * [EventWhereInput](#eventwhereinput) + * [ForgotPasswordData](#forgotpassworddata) + * [GroupInput](#groupinput) + * [LanguageInput](#languageinput) + * [LoginInput](#logininput) + * [MessageChatInput](#messagechatinput) + * [OTPInput](#otpinput) + * [OrganizationInput](#organizationinput) + * [OrganizationWhereInput](#organizationwhereinput) + * [PluginFieldInput](#pluginfieldinput) + * [PluginInput](#plugininput) + * [PostInput](#postinput) + * [PostUpdateInput](#postupdateinput) + * [PostWhereInput](#postwhereinput) + * [RecaptchaVerification](#recaptchaverification) + * [TaskInput](#taskinput) + * [ToggleUserTagAssignInput](#toggleusertagassigninput) + * [UpdateEventInput](#updateeventinput) + * [UpdateOrganizationInput](#updateorganizationinput) + * [UpdateTaskInput](#updatetaskinput) + * [UpdateUserInput](#updateuserinput) + * [UpdateUserPasswordInput](#updateuserpasswordinput) + * [UpdateUserTagInput](#updateusertaginput) + * [UpdateUserTypeInput](#updateusertypeinput) + * [UserAndOrganizationInput](#userandorganizationinput) + * [UserInput](#userinput) + * [UserWhereInput](#userwhereinput) + * [createChatInput](#createchatinput) + * [createGroupChatInput](#creategroupchatinput) + * [Enums](#enums) + * [CacheControlScope](#cachecontrolscope) + * [EventOrderByInput](#eventorderbyinput) + * [OrganizationOrderByInput](#organizationorderbyinput) + * [PostOrderByInput](#postorderbyinput) + * [Recurrance](#recurrance) + * [Status](#status) + * [TaskOrderByInput](#taskorderbyinput) + * [Type](#type) + * [UserOrderByInput](#userorderbyinput) + * [UserType](#usertype) + * [Scalars](#scalars) + * [Boolean](#boolean) + * [Date](#date) + * [DateTime](#datetime) + * [EmailAddress](#emailaddress) + * [Float](#float) + * [ID](#id) + * [Int](#int) + * [Latitude](#latitude) + * [Longitude](#longitude) + * [PhoneNumber](#phonenumber) + * [PositiveInt](#positiveint) + * [String](#string) + * [Time](#time) + * [URL](#url) + * [Upload](#upload) + +
+ +## Query + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
adminPlugin[Plugin]
orgIdID!
checkAuthUser!
comments[Comment]
commentsByPost[Comment]
idID!
directChatMessages[DirectChatMessage]
directChats[DirectChat]
directChatsByUserID[DirectChat]
idID!
directChatsMessagesByChatID[DirectChatMessage]
idID!
eventEvent
idID!
events[Event]
idID
orderByEventOrderByInput
eventsByOrganization[Event]
idID
orderByEventOrderByInput
eventsByOrganizationConnection[Event!]!
whereEventWhereInput
firstInt
skipInt
orderByEventOrderByInput
getDonationByIdDonation!
idID!
getDonationByOrgId[Donation]
orgIdID!
getDonationByOrgIdConnection[Donation!]!
orgIdID!
whereDonationWhereInput
firstInt
skipInt
getDonations[Donation]
getlanguage[Translation]
lang_codeString!
getPlugins[Plugin]
groupChatMessages[GroupChatMessage]
groupChats[GroupChat]
groups[Group]
isUserRegisterEventRegistrants
eventIdID!
joinedOrganizations[Organization]
idID
meUser!
myLanguageString
organizations[Organization]
idID
orderByOrganizationOrderByInput
organizationsConnection[Organization]!
whereOrganizationWhereInput
firstInt
skipInt
orderByOrganizationOrderByInput
organizationsMemberConnectionUserConnection!
orgIdID!
whereUserWhereInput
firstInt
skipInt
orderByUserOrderByInput
plugin[Plugin]
orgIdID!
postPost
idID!
posts[Post]
orderByPostOrderByInput
postsByOrganization[Post]
idID!
orderByPostOrderByInput
postsByOrganizationConnectionPostConnection
idID!
wherePostWhereInput
firstInt
skipInt
orderByPostOrderByInput
registeredEventsByUser[Event]
idID
orderByEventOrderByInput
registrantsByEvent[User]
idID!
tasksByEvent[Task]
idID!
orderByTaskOrderByInput
tasksByUser[Task]
idID!
orderByTaskOrderByInput
userUser!
idID!
userLanguageString
userIdID!
users[User]
whereUserWhereInput
orderByUserOrderByInput
usersConnection[User]!
whereUserWhereInput
firstInt
skipInt
orderByUserOrderByInput
+ +## Mutation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
acceptAdminBoolean!
idID!
acceptMembershipRequestMembershipRequest!
membershipRequestIdID!
addLanguageTranslationLanguage!
dataLanguageInput!
addOrganizationImageOrganization!
fileString!
organizationIdString!
addUserImageUser!
fileString!
addUserToGroupChatGroupChat!
userIdID!
chatIdID!
adminRemoveEventEvent!
eventIdID!
adminRemoveGroupMessage!
groupIdID!
assignUserTagUser
inputToggleUserTagAssignInput!
blockPluginCreationBySuperadminUser!
userIdID!
blockUserBoolean!
blockUserUser!
organizationIdID!
userIdID!
cancelMembershipRequestMembershipRequest!
membershipRequestIdID!
createAdminUser!
dataUserAndOrganizationInput!
createCommentComment
postIdID!
dataCommentInput!
createDirectChatDirectChat!
datacreateChatInput
createDonationDonation!
userIdID!
orgIdID!
payPalIdID!
nameOfUserString!
amountFloat!
nameOfOrgString!
createEventEvent!
dataEventInput
createGroupGroup!
dataGroupInput!
createGroupChatGroupChat!
datacreateGroupChatInput
createMessageChatMessageChat!
dataMessageChatInput!
createOrganizationOrganization!
dataOrganizationInput
fileString
createPluginPlugin!
pluginNameString!
pluginCreatedByString!
pluginDescString!
pluginInstallStatusBoolean!
installedOrgs[ID!]
createPostPost
dataPostInput!
fileString
createUserTagUserTag
inputCreateUserTagInput!
createTaskTask!
dataTaskInput
eventIdID!
deleteDonationByIdDeletePayload!
idID!
forgotPasswordBoolean!
dataForgotPasswordData!
joinPublicOrganizationUser!
organizationIdID!
leaveOrganizationUser!
organizationIdID!
likeCommentComment
idID!
likePostPost
idID!
loginAuthData!
dataLoginInput!
logoutBoolean!
otpOtpData!
dataOTPInput!
recaptchaBoolean!
dataRecaptchaVerification!
refreshTokenExtendSession!
refreshTokenString!
registerForEventEvent!
idID!
rejectAdminBoolean!
idID!
rejectMembershipRequestMembershipRequest!
membershipRequestIdID!
removeAdminUser!
dataUserAndOrganizationInput!
removeCommentComment
idID!
removeDirectChatDirectChat!
chatIdID!
organizationIdID!
removeEventEvent!
idID!
removeGroupChatGroupChat!
chatIdID!
removeMemberOrganization!
dataUserAndOrganizationInput!
removeOrganizationUser!
idID!
removeOrganizationImageOrganization!
organizationIdString!
removePostPost
idID!
removeUserTagUserTag
idID!
removeTaskTask
idID!
removeUserFromGroupChatGroupChat!
userIdID!
chatIdID!
removeUserImageUser!
revokeRefreshTokenForUserBoolean!
userIdString!
saveFcmTokenBoolean!
tokenString
sendMembershipRequestMembershipRequest!
organizationIdID!
sendMessageToDirectChatDirectChatMessage!
chatIdID!
messageContentString!
sendMessageToGroupChatGroupChatMessage!
chatIdID!
messageContentString!
signUpAuthData!
dataUserInput!
fileString
togglePostPinPost!
idID!
unassignUserTagUser
inputToggleUserTagAssignInput!
unblockUserUser!
organizationIdID!
userIdID!
unlikeCommentComment
idID!
unlikePostPost
idID!
unregisterForEventByUserEvent!
idID!
updateEventEvent!
idID!
dataUpdateEventInput
updatePostPost!
idID!
dataPostUpdateInput
updateLanguageUser!
languageCodeString!
updateOrganizationOrganization!
idID!
dataUpdateOrganizationInput
fileString
updatePluginInstalledOrgsPlugin!
idID!
orgIdID!
updatePluginStatusPlugin!
idID!
statusBoolean!
updateUserTagUserTag
inputUpdateUserTagInput!
updateTaskTask
idID!
dataUpdateTaskInput
updateUserProfileUser!
dataUpdateUserInput
fileString
updateUserPasswordUser!
dataUpdateUserPasswordInput
updateUserTypeBoolean!
dataUpdateUserTypeInput!
+ +## Objects + +### AggregatePost + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
countInt!
+ +### AggregateUser + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
countInt!
+ +### AndroidFirebaseOptions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
apiKeyString
appIdString
messagingSenderIdString
projectIdString
storageBucketString
+ +### AuthData + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
userUser!
accessTokenString!
refreshTokenString!
androidFirebaseOptionsAndroidFirebaseOptions!
iosFirebaseOptionsIOSFirebaseOptions!
+ +### Comment + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID
textString!
createdAtDateTime
creatorUser!
postPost!
likedBy[User]
likeCountInt
+ +### ConnectionPageInfo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
hasNextPageBoolean!
hasPreviousPageBoolean!
startCursorString
endCursorString
+ +### DeletePayload + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
successBoolean!
+ +### DirectChat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID!
users[User!]!
messages[DirectChatMessage]
creatorUser!
organizationOrganization!
+ +### DirectChatMessage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID!
directChatMessageBelongsToDirectChat!
senderUser!
receiverUser!
createdAtDateTime!
messageContentString!
+ +### Donation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID!
userIdID!
orgIdID!
payPalIdString!
nameOfUserString!
nameOfOrgString!
amountFloat!
+ +### Event + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID!
titleString!
descriptionString!
startDateDate!
endDateDate!
startTimeTime
endTimeTime
allDayBoolean!
recurringBoolean!
recurranceRecurrance
isPublicBoolean!
isRegisterableBoolean!
locationString
latitudeLatitude
longitudeLongitude
organizationOrganization
creatorUser!
registrants[UserAttende]
admins[User]
adminIdID
tasks[Task]
statusStatus!
+ +### EventRegistrants + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
eventEvent!
isRegisteredBoolean!
+ +### ExtendSession + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
accessTokenString!
refreshTokenString!
+ +### Group + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID
titleString
descriptionString
createdAtDateTime
organizationOrganization!
admins[User]
+ +### GroupChat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID!
users[User!]!
messages[GroupChatMessage]
creatorUser!
organizationOrganization!
+ +### GroupChatMessage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID!
groupChatMessageBelongsToGroupChat!
senderUser!
createdAtDateTime!
messageContentString!
+ +### IOSFirebaseOptions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
apiKeyString
appIdString
messagingSenderIdString
projectIdString
storageBucketString
iosClientIdString
iosBundleIdString
+ +### Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID!
enString!
translation[LanguageModel]
createdAtString!
+ +### LanguageModel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID!
lang_codeString!
valueString!
verifiedBoolean!
createdAtDateTime!
+ +### MembershipRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID!
userUser!
organizationOrganization!
+ +### Message + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID!
textString
createdAtDateTime
imageUrlURL
videoUrlURL
creatorUser
+ +### MessageChat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID!
senderUser!
receiverUser!
messageString!
languageBarrierBoolean
createdAtDateTime!
+ +### Organization + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
imageString
_idID!
nameString!
descriptionString!
locationString
isPublicBoolean!
creatorUser!
members[User]
admins[User]
adminIdID
membershipRequests[MembershipRequest]
blockedUsers[User]
visibleInSearchBoolean!
apiUrlURL!
createdAtDateTime
pinnedPosts[Post]
userTagsUserTagsConnection
afterString
beforeString
firstPositiveInt
lastPositiveInt
+ +### OrganizationInfoNode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
imageString
_idID!
nameString!
descriptionString!
isPublicBoolean!
creatorUser!
visibleInSearchBoolean!
apiUrlURL!
+ +### OtpData + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
otpTokenString!
+ +### PageInfo + +Information about pagination in a connection. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
hasNextPageBoolean! + +When paginating forwards, are there more items? + +
hasPreviousPageBoolean! + +When paginating backwards, are there more items? + +
totalPagesInt
nextPageNoInt
prevPageNoInt
currPageNoInt
+ +### Plugin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID!
pluginNameString!
pluginCreatedByString!
pluginDescString!
pluginInstallStatusBoolean!
installedOrgs[ID!]!
+ +### PluginField + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
keyString!
valueString!
statusStatus!
createdAtDateTime
+ +### Post + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID
textString!
titleString
createdAtDateTime
imageUrlURL
videoUrlURL
creatorUser!
organizationOrganization!
likedBy[User]
comments[Comment]
likeCountInt
commentCountInt
+ +### PostConnection + +A connection to a list of items. + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
pageInfoPageInfo! + +Information to aid in pagination. + +
edges[Post]! + +A list of edges. + +
aggregateAggregatePost!
+ +### Subscription + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
directMessageChatMessageChat
messageSentToDirectChatDirectChatMessage
messageSentToGroupChatGroupChatMessage
+ +### Task + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID!
titleString!
descriptionString
eventEvent!
creatorUser!
createdAtDateTime!
deadlineDateTime
+ +### Translation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
lang_codeString
en_valueString
translationString
verifiedBoolean
+ +### User + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
tokenVersionInt!
_idID!
firstNameString!
lastNameString!
emailEmailAddress!
userTypeString
appLanguageCodeString!
createdOrganizations[Organization]
joinedOrganizations[Organization]
createdEvents[Event]
registeredEvents[Event]
eventAdmin[Event]
adminFor[Organization]
membershipRequests[MembershipRequest]
organizationsBlockedBy[Organization]
imageString
organizationUserBelongsToOrganization
pluginCreationAllowedBoolean
adminApprovedBoolean
createdAtDateTime
tagsAssignedWithUserTagsConnection
afterString
beforeString
firstPositiveInt
lastPositiveInt
organizationIdID
+ +### UserAttende + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID!
userIdString!
userUser!
statusStatus!
createdAtDateTime
+ +### UserConnection + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
pageInfoPageInfo!
edges[User]!
aggregateAggregateUser!
+ +### UserEdge + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
nodeUser!
cursorString!
+ +### UserTag + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
_idID!
nameString!
organizationOrganization
parentTagUserTag
childTagsUserTagsConnection
afterString
beforeString
firstPositiveInt
lastPositiveInt
usersAssignedToUsersConnection
afterString
beforeString
firstPositiveInt
lastPositiveInt
+ +### UserTagEdge + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
nodeUserTag!
cursorString!
+ +### UserTagsConnection + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
edges[UserTagEdge]
pageInfoConnectionPageInfo!
+ +### UsersConnection + + + + + + + + + + + + + + + + + + + + + + +
FieldArgumentTypeDescription
edges[UserEdge]
pageInfoConnectionPageInfo!
+ +## Inputs + +### CommentInput + + + + + + + + + + + + + + + + +
FieldTypeDescription
textString!
+ +### CreateUserTagInput + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
nameString!
parentTagIdID
organizationIdID!
+ +### DonationWhereInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
idID
id_notID
id_in[ID!]
id_not_in[ID!]
id_containsID
id_starts_withID
name_of_userString
name_of_user_notString
name_of_user_in[String!]
name_of_user_not_in[String!]
name_of_user_containsString
name_of_user_starts_withString
+ +### EventInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
titleString!
descriptionString!
startDateDate!
endDateDate
startTimeTime
endTimeTime
allDayBoolean!
recurringBoolean!
recurranceRecurrance
isPublicBoolean!
isRegisterableBoolean!
locationString
latitudeLatitude
longitudeLongitude
organizationIdID!
+ +### EventWhereInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
idID
id_notID
id_in[ID!]
id_not_in[ID!]
id_containsID
id_starts_withID
titleString
title_notString
title_in[String!]
title_not_in[String!]
title_containsString
title_starts_withString
descriptionString
description_notString
description_in[String!]
description_not_in[String!]
description_containsString
description_starts_withString
locationString
location_notString
location_in[String!]
location_not_in[String!]
location_containsString
location_starts_withString
organization_idID
+ +### ForgotPasswordData + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
userOtpString!
newPasswordString!
otpTokenString!
+ +### GroupInput + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
titleString
descriptionString
organizationIdID!
+ +### LanguageInput + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
en_valueString!
translation_lang_codeString!
translation_valueString!
+ +### LoginInput + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
emailEmailAddress!
passwordString!
+ +### MessageChatInput + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
messageString!
receiverID!
+ +### OTPInput + + + + + + + + + + + + + + + + +
FieldTypeDescription
emailEmailAddress!
+ +### OrganizationInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
nameString!
descriptionString!
locationString
attendeesString
isPublicBoolean!
visibleInSearchBoolean!
apiUrlURL
imageString
+ +### OrganizationWhereInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
idID
id_notID
id_in[ID!]
id_not_in[ID!]
id_containsID
id_starts_withID
nameString
name_notString
name_in[String!]
name_not_in[String!]
name_containsString
name_starts_withString
descriptionString
description_notString
description_in[String!]
description_not_in[String!]
description_containsString
description_starts_withString
apiUrlURL
apiUrl_notURL
apiUrl_in[URL!]
apiUrl_not_in[URL!]
apiUrl_containsURL
apiUrl_starts_withURL
visibleInSearchBoolean
isPublicBoolean
+ +### PluginFieldInput + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
keyString!
valueString!
+ +### PluginInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
orgIdID!
pluginNameString!
pluginKeyString
pluginTypeType
fields[PluginFieldInput]
+ +### PostInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
_idID
textString!
titleString
imageUrlURL
videoUrlURL
organizationIdID!
pinnedBoolean
+ +### PostUpdateInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
textString
titleString
imageUrlURL
videoUrlURL
+ +### PostWhereInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
idID
id_notID
id_in[ID!]
id_not_in[ID!]
id_containsID
id_starts_withID
textString
text_notString
text_in[String!]
text_not_in[String!]
text_containsString
text_starts_withString
titleString
title_notString
title_in[String!]
title_not_in[String!]
title_containsString
title_starts_withString
+ +### RecaptchaVerification + + + + + + + + + + + + + + + + +
FieldTypeDescription
recaptchaTokenString!
+ +### TaskInput + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
titleString!
descriptionString
deadlineDateTime
+ +### ToggleUserTagAssignInput + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
userIdID!
tagIdID!
+ +### UpdateEventInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
titleString
descriptionString
recurringBoolean
recurranceRecurrance
isPublicBoolean
isRegisterableBoolean
startDateDate
endDateDate
locationString
latitudeLatitude
longitudeLongitude
allDayBoolean
startTimeTime
endTimeTime
+ +### UpdateOrganizationInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
nameString
descriptionString
isPublicBoolean
visibleInSearchBoolean
locationString
+ +### UpdateTaskInput + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
titleString
descriptionString
deadlineDateTime
+ +### UpdateUserInput + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
firstNameString
lastNameString
emailEmailAddress
+ +### UpdateUserPasswordInput + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
previousPasswordString!
newPasswordString!
confirmNewPasswordString!
+ +### UpdateUserTagInput + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
_idID!
nameString!
+ +### UpdateUserTypeInput + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
userTypeString
idID
+ +### UserAndOrganizationInput + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
organizationIdID!
userIdID!
+ +### UserInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
firstNameString!
lastNameString!
emailEmailAddress!
passwordString!
appLanguageCodeString
organizationUserBelongsToIdID
+ +### UserWhereInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
idID
id_notID
id_in[ID!]
id_not_in[ID!]
id_containsID
id_starts_withID
firstNameString
firstName_notString
firstName_in[String!]
firstName_not_in[String!]
firstName_containsString
firstName_starts_withString
lastNameString
lastName_notString
lastName_in[String!]
lastName_not_in[String!]
lastName_containsString
lastName_starts_withString
emailEmailAddress
email_notEmailAddress
email_in[EmailAddress!]
email_not_in[EmailAddress!]
email_containsEmailAddress
email_starts_withEmailAddress
appLanguageCodeString
appLanguageCode_notString
appLanguageCode_in[String!]
appLanguageCode_not_in[String!]
appLanguageCode_containsString
appLanguageCode_starts_withString
admin_forID
event_title_containsString
+ +### createChatInput + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
userIds[ID!]!
organizationIdID!
+ +### createGroupChatInput + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
userIds[ID!]!
organizationIdID!
titleString!
+ +## Enums + +### CacheControlScope + + + + + + + + + + + + + + + + +
ValueDescription
PUBLIC
PRIVATE
+ +### EventOrderByInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ValueDescription
id_ASC
id_DESC
title_ASC
title_DESC
description_ASC
description_DESC
startDate_ASC
startDate_DESC
endDate_ASC
endDate_DESC
allDay_ASC
allDay_DESC
startTime_ASC
startTime_DESC
endTime_ASC
endTime_DESC
recurrance_ASC
recurrance_DESC
location_ASC
location_DESC
+ +### OrganizationOrderByInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ValueDescription
id_ASC
id_DESC
name_ASC
name_DESC
description_ASC
description_DESC
apiUrl_ASC
apiUrl_DESC
+ +### PostOrderByInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ValueDescription
id_ASC
id_DESC
text_ASC
text_DESC
title_ASC
title_DESC
createdAt_ASC
createdAt_DESC
imageUrl_ASC
imageUrl_DESC
videoUrl_ASC
videoUrl_DESC
likeCount_ASC
likeCount_DESC
commentCount_ASC
commentCount_DESC
+ +### Recurrance + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ValueDescription
DAILY
WEEKLY
MONTHLY
YEARLY
ONCE
+ +### Status + + + + + + + + + + + + + + + + + + + + +
ValueDescription
ACTIVE
BLOCKED
DELETED
+ +### TaskOrderByInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ValueDescription
id_ASC
id_DESC
title_ASC
title_DESC
description_ASC
description_DESC
createdAt_ASC
createdAt_DESC
deadline_ASC
deadline_DESC
+ +### Type + + + + + + + + + + + + + + + + +
ValueDescription
UNIVERSAL
PRIVATE
+ +### UserOrderByInput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ValueDescription
id_ASC
id_DESC
firstName_ASC
firstName_DESC
lastName_ASC
lastName_DESC
email_ASC
email_DESC
appLanguageCode_ASC
appLanguageCode_DESC
+ +### UserType + + + + + + + + + + + + + + + + + + + + +
ValueDescription
USER
ADMIN
SUPERADMIN
+ +## Scalars + +### Boolean + +The `Boolean` scalar type represents `true` or `false`. + +### Date + +A date string, such as 2007-12-03, compliant with the `full-date` 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. + +### 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. + +### EmailAddress + +A field whose value conforms to the standard internet email address format as specified in RFC822: https://www.w3.org/Protocols/rfc822/. + +### Float + +The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point). + +### ID + +The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID. + +### Int + +The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1. + +### Latitude + +A field whose value is a valid decimal degrees latitude number (53.471): https://en.wikipedia.org/wiki/Latitude + +### Longitude + +A field whose value is a valid decimal degrees longitude number (53.471): https://en.wikipedia.org/wiki/Longitude + +### PhoneNumber + +A field whose value conforms to the standard E.164 format as specified in: https://en.wikipedia.org/wiki/E.164. Basically this is +17895551234. + +### PositiveInt + +Integers that will have a value greater than 0. + +### String + +The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text. + +### Time + +A time string at UTC, such as 10:15:30Z, compliant with the `full-time` format outlined in section 5.6 of the RFC 3339profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. + +### URL + +A field whose value conforms to the standard URL format as specified in RFC3986: https://www.ietf.org/rfc/rfc3986.txt. + +### Upload + +The `Upload` scalar type represents a file upload. + diff --git a/package-lock.json b/package-lock.json index 0359e5521c3..c75b8a1b4e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "express-mongo-sanitize": "^2.2.0", "express-rate-limit": "^5.5.1", "firebase-admin": "^10.3.0", + "get-graphql-schema": "^2.1.2", "graphql": "^15.8.0", "graphql-depth-limit": "^1.1.0", "graphql-scalars": "^1.20.1", @@ -76,6 +77,7 @@ "eslint": "^8.26.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-tsdoc": "^0.2.17", + "graphql-markdown": "^7.0.0", "husky": "^8.0.3", "prettier": "^2.7.1", "rimraf": "^3.0.2", @@ -6492,6 +6494,12 @@ "node": ">=0.10.0" } }, + "node_modules/deep-diff": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-1.0.2.tgz", + "integrity": "sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg==", + "dev": true + }, "node_modules/deep-eql": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", @@ -8345,6 +8353,95 @@ "node": "*" } }, + "node_modules/get-graphql-schema": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/get-graphql-schema/-/get-graphql-schema-2.1.2.tgz", + "integrity": "sha512-1z5Hw91VrE3GrpCZE6lE8Dy+jz4kXWesLS7rCSjwOxf5BOcIedAZeTUJRIeIzmmR+PA9CKOkPTYFRJbdgUtrxA==", + "dependencies": { + "chalk": "^2.4.1", + "graphql": "^14.0.2", + "minimist": "^1.2.0", + "node-fetch": "^2.2.0" + }, + "bin": { + "get-graphql-schema": "dist/index.js" + } + }, + "node_modules/get-graphql-schema/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-graphql-schema/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-graphql-schema/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/get-graphql-schema/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/get-graphql-schema/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/get-graphql-schema/node_modules/graphql": { + "version": "14.7.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.7.0.tgz", + "integrity": "sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA==", + "dependencies": { + "iterall": "^1.2.2" + }, + "engines": { + "node": ">= 6.x" + } + }, + "node_modules/get-graphql-schema/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/get-graphql-schema/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/get-intrinsic": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", @@ -8696,6 +8793,28 @@ "node": ">=0.10.0" } }, + "node_modules/graphql-markdown": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/graphql-markdown/-/graphql-markdown-7.0.0.tgz", + "integrity": "sha512-gJoc1gKxmZNa8gtUnR6a694Unm3QYGTX8we3DH/xvj0BavJWcGB+MNlg7A6PeP/BwcO9DpMIO+ElcrOOS+8R0g==", + "dev": true, + "dependencies": { + "deep-diff": "^1.0.2", + "lodash.isplainobject": "^4.0.6", + "minimist": "^1.2.6", + "node-fetch": "^2.0.0", + "resolve-from": "^5.0.0" + }, + "bin": { + "graphql-markdown": "src/index.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.2 || ^15.0.0 || ^16.0.0" + } + }, "node_modules/graphql-request": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-5.1.0.tgz", @@ -19145,6 +19264,12 @@ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true }, + "deep-diff": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-1.0.2.tgz", + "integrity": "sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg==", + "dev": true + }, "deep-eql": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", @@ -20486,6 +20611,76 @@ "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", "dev": true }, + "get-graphql-schema": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/get-graphql-schema/-/get-graphql-schema-2.1.2.tgz", + "integrity": "sha512-1z5Hw91VrE3GrpCZE6lE8Dy+jz4kXWesLS7rCSjwOxf5BOcIedAZeTUJRIeIzmmR+PA9CKOkPTYFRJbdgUtrxA==", + "requires": { + "chalk": "^2.4.1", + "graphql": "^14.0.2", + "minimist": "^1.2.0", + "node-fetch": "^2.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "graphql": { + "version": "14.7.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.7.0.tgz", + "integrity": "sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA==", + "requires": { + "iterall": "^1.2.2" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "get-intrinsic": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", @@ -20755,6 +20950,19 @@ } } }, + "graphql-markdown": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/graphql-markdown/-/graphql-markdown-7.0.0.tgz", + "integrity": "sha512-gJoc1gKxmZNa8gtUnR6a694Unm3QYGTX8we3DH/xvj0BavJWcGB+MNlg7A6PeP/BwcO9DpMIO+ElcrOOS+8R0g==", + "dev": true, + "requires": { + "deep-diff": "^1.0.2", + "lodash.isplainobject": "^4.0.6", + "minimist": "^1.2.6", + "node-fetch": "^2.0.0", + "resolve-from": "^5.0.0" + } + }, "graphql-request": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-5.1.0.tgz", diff --git a/package.json b/package.json index f98395fe8b2..4e5b0d870b6 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,9 @@ "lint:fix": "eslint . --fix", "format:fix": "prettier --write \"**/*.{ts,tsx,json,scss,css}\"", "format:check": "prettier --check \"**/*.{ts,tsx,json,scss,css}\"", - "prepare": "husky install" + "prepare": "husky install", + "generate:graphql-markdown": "graphql-markdown http://localhost:4000/graphql > docs/Schema.md", + "generate:graphql-schema": "get-graphql-schema http://localhost:4000/graphql --json > docs/schema.json" }, "repository": { "type": "git", @@ -101,6 +103,8 @@ "eslint": "^8.26.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-tsdoc": "^0.2.17", + "get-graphql-schema": "^2.1.2", + "graphql-markdown": "^7.0.0", "husky": "^8.0.3", "prettier": "^2.7.1", "rimraf": "^3.0.2",