From 8e5adf746ba809d1f950da2f60516f22cf0fba1e Mon Sep 17 00:00:00 2001 From: Priyanshu Thapliyal Date: Fri, 31 Jan 2025 16:05:48 +0530 Subject: [PATCH 1/7] NoMongo: Restore the GraphQL Introspection GitHub Action Test --- .github/workflows/pull-request.yml | 48 +++++++++++++++--------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 6e30334217..e226cc5c54 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -38,7 +38,7 @@ jobs: - name: Count number of lines run: | chmod +x ./.github/workflows/scripts/countline.py - ./.github/workflows/scripts/countline.py --lines 600 --exclude_files src/screens/LoginPage/LoginPage.tsx src/GraphQl/Queries/Queries.ts src/screens/OrgList/OrgList.tsx src/GraphQl/Mutations/mutations.ts src/components/EventListCard/EventListCardModals.tsx src/components/TagActions/TagActionsMocks.ts src/utils/interfaces.ts src/screens/MemberDetail/MemberDetail.tsx src/components/OrgPostCard/OrgPostCard.tsx src/components/UsersTableItem/UsersTableItem.tsx + ./.github/workflows/scripts/countline.py --lines 1100 --exclude_files src/screens/LoginPage/LoginPage.tsx src/GraphQl/Queries/Queries.ts src/screens/OrgList/OrgList.tsx src/GraphQl/Mutations/mutations.ts src/components/EventListCard/EventListCardModals.tsx src/components/TagActions/TagActionsMocks.ts src/utils/interfaces.ts src/screens/MemberDetail/MemberDetail.tsx src/components/OrgPostCard/OrgPostCard.tsx src/components/UsersTableItem/UsersTableItem.tsx - name: Get changed TypeScript files id: changed-files @@ -273,33 +273,33 @@ jobs: path: "./coverage/vitest/lcov.info" min_coverage: 0 - # Graphql-Inspector: + Graphql-Inspector: # if: ${{ github.actor != 'dependabot[bot]' }} - # name: Runs Introspection on the GitHub talawa-api repo on the schema.graphql file - # runs-on: ubuntu-latest - # steps: - # - name: Checkout the Repository - # uses: actions/checkout@v4 - - # - name: Set up Node.js - # uses: actions/setup-node@v4 - # with: - # node-version: '22.x' - - # - name: resolve dependency - # run: npm install -g @graphql-inspector/cli + name: Runs Introspection on the GitHub talawa-api repo on the schema.graphql file + runs-on: ubuntu-latest + steps: + - name: Checkout the Repository + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '22.x' + + - name: resolve dependency + run: npm install -g @graphql-inspector/cli - # - name: Clone API Repository - # run: | - # # Retrieve the complete branch name directly from the GitHub context - # FULL_BRANCH_NAME=${{ github.base_ref }} - # echo "FULL_Branch_NAME: $FULL_BRANCH_NAME" + - name: Clone API Repository + run: | + # Retrieve the complete branch name directly from the GitHub context + FULL_BRANCH_NAME=${{ github.base_ref }} + echo "FULL_Branch_NAME: $FULL_BRANCH_NAME" - # # Clone the specified repository using the extracted branch name - # git clone --branch $FULL_BRANCH_NAME https://github.com/PalisadoesFoundation/talawa-api && ls -a + # Clone the specified repository using the extracted branch name + git clone --branch $FULL_BRANCH_NAME https://github.com/PalisadoesFoundation/talawa-api && ls -a - # - name: Validate Documents - # run: graphql-inspector validate './src/GraphQl/**/*.ts' './talawa-api/schema.graphql' + - name: Validate Documents + run: graphql-inspector validate './src/GraphQl/**/*.ts' './talawa-api/schema.graphql' Start-App-Without-Docker: name: Check if Talawa Admin app starts (No Docker) From 6051ed669501a129cedac6e8a440521c020e7497 Mon Sep 17 00:00:00 2001 From: Priyanshu Thapliyal Date: Fri, 31 Jan 2025 16:34:06 +0530 Subject: [PATCH 2/7] NoMongo: Restore the GraphQL Introspection GitHub Action Test --- .github/workflows/pull-request.yml | 47 +++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index e226cc5c54..67cc279797 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -272,6 +272,14 @@ jobs: with: path: "./coverage/vitest/lcov.info" min_coverage: 0 + + - name: Validate GraphQL schema + run: | + if [ ! -f "schema.graphql" ]; then + echo "Error: schema.graphql not found" + exit 1 + fi + npx graphql-inspector validate schema.graphql src/**/*.graphql Graphql-Inspector: # if: ${{ github.actor != 'dependabot[bot]' }} @@ -290,17 +298,42 @@ jobs: run: npm install -g @graphql-inspector/cli - name: Clone API Repository - run: | + env: + BASE_REF: ${{ github.base_ref }} + run: > # Retrieve the complete branch name directly from the GitHub context - FULL_BRANCH_NAME=${{ github.base_ref }} - echo "FULL_Branch_NAME: $FULL_BRANCH_NAME" - + FULL_BRANCH_NAME="$BASE_REF" + echo "FULL_BRANCH_NAME: $FULL_BRANCH_NAME" # Clone the specified repository using the extracted branch name - git clone --branch $FULL_BRANCH_NAME https://github.com/PalisadoesFoundation/talawa-api && ls -a + if ! git ls-remote --heads https://github.com/PalisadoesFoundation/talawa-api.git $FULL_BRANCH_NAME | grep -q .; then + echo "Error: Branch '$FULL_BRANCH_NAME' does not exist in talawa-api repository" + echo "Please ensure the branch exists and you have the correct permissions" + exit 1 + fi + if ! git clone --branch $FULL_BRANCH_NAME --depth 1 https://github.com/PalisadoesFoundation/talawa-api; then + echo "Error: Failed to clone talawa-api repository from branch '$FULL_BRANCH_NAME'" + echo "This could be due to network issues or repository permissions" + exit 1 + fi + # Verify clone was successful + if [ ! -d "talawa-api" ]; then + echo "Error: talawa-api directory not found after clone" + exit 1 + fi - name: Validate Documents - run: graphql-inspector validate './src/GraphQl/**/*.ts' './talawa-api/schema.graphql' - + run: > + if [ ! -f './talawa-api/schema.graphql' ]; then + echo "Error: schema.graphql not found in talawa-api" + exit 1 + fi + GRAPHQL_FILES=$(find ./src/GraphQl -name "*.ts" -type f) + if [ -z "$GRAPHQL_FILES" ]; then + echo "Error: No GraphQL TypeScript files found" + exit 1 + fi + graphql-inspector validate './src/GraphQl/**/*.ts' './talawa-api/schema.graphql' + Start-App-Without-Docker: name: Check if Talawa Admin app starts (No Docker) runs-on: ubuntu-latest From 74ff504059f0290a89eba6555158cd0b8b981fb0 Mon Sep 17 00:00:00 2001 From: Priyanshu Thapliyal Date: Fri, 31 Jan 2025 16:39:15 +0530 Subject: [PATCH 3/7] NoMongo: Restore the GraphQL Introspection GitHub Action Test --- .github/workflows/pull-request.yml | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 67cc279797..dcfc4fa8b4 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -38,7 +38,7 @@ jobs: - name: Count number of lines run: | chmod +x ./.github/workflows/scripts/countline.py - ./.github/workflows/scripts/countline.py --lines 1100 --exclude_files src/screens/LoginPage/LoginPage.tsx src/GraphQl/Queries/Queries.ts src/screens/OrgList/OrgList.tsx src/GraphQl/Mutations/mutations.ts src/components/EventListCard/EventListCardModals.tsx src/components/TagActions/TagActionsMocks.ts src/utils/interfaces.ts src/screens/MemberDetail/MemberDetail.tsx src/components/OrgPostCard/OrgPostCard.tsx src/components/UsersTableItem/UsersTableItem.tsx + ./.github/workflows/scripts/countline.py --lines 600 --exclude_files src/screens/LoginPage/LoginPage.tsx src/GraphQl/Queries/Queries.ts src/screens/OrgList/OrgList.tsx src/GraphQl/Mutations/mutations.ts src/components/EventListCard/EventListCardModals.tsx src/components/TagActions/TagActionsMocks.ts src/utils/interfaces.ts src/screens/MemberDetail/MemberDetail.tsx src/components/OrgPostCard/OrgPostCard.tsx src/components/UsersTableItem/UsersTableItem.tsx - name: Get changed TypeScript files id: changed-files @@ -282,7 +282,7 @@ jobs: npx graphql-inspector validate schema.graphql src/**/*.graphql Graphql-Inspector: - # if: ${{ github.actor != 'dependabot[bot]' }} + if: ${{ github.actor != 'dependabot[bot]' }} name: Runs Introspection on the GitHub talawa-api repo on the schema.graphql file runs-on: ubuntu-latest steps: @@ -295,12 +295,12 @@ jobs: node-version: '22.x' - name: resolve dependency - run: npm install -g @graphql-inspector/cli + run: npm install -g @graphql-inspector/cli@latest - name: Clone API Repository env: - BASE_REF: ${{ github.base_ref }} - run: > + BASE_REF: ${{ github.event.pull_request.base.ref }} + run: | # Retrieve the complete branch name directly from the GitHub context FULL_BRANCH_NAME="$BASE_REF" echo "FULL_BRANCH_NAME: $FULL_BRANCH_NAME" @@ -317,22 +317,24 @@ jobs: fi # Verify clone was successful if [ ! -d "talawa-api" ]; then - echo "Error: talawa-api directory not found after clone" - exit 1 + echo "Error: talawa-api directory not found after clone" + exit 1 fi - name: Validate Documents - run: > + run: | if [ ! -f './talawa-api/schema.graphql' ]; then echo "Error: schema.graphql not found in talawa-api" exit 1 fi - GRAPHQL_FILES=$(find ./src/GraphQl -name "*.ts" -type f) + GRAPHQL_FILES=$(find ./src/GraphQl -type f \( -name "*.ts" -o -name "*.tsx" \)) if [ -z "$GRAPHQL_FILES" ]; then echo "Error: No GraphQL TypeScript files found" exit 1 fi - graphql-inspector validate './src/GraphQl/**/*.ts' './talawa-api/schema.graphql' + echo "Found GraphQL files:" + echo "$GRAPHQL_FILES" + graphql-inspector validate './src/GraphQl/**/*.{ts,tsx}' './talawa-api/schema.graphql' Start-App-Without-Docker: name: Check if Talawa Admin app starts (No Docker) From 5f95ed20b0b482d9777620f1d34c5f8d56a6f97d Mon Sep 17 00:00:00 2001 From: Priyanshu Thapliyal Date: Fri, 31 Jan 2025 19:27:46 +0530 Subject: [PATCH 4/7] NoMongo: Restore the GraphQL Introspection GitHub Action Test --- .github/workflows/pull-request.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index dcfc4fa8b4..35d4781b18 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -275,12 +275,13 @@ jobs: - name: Validate GraphQL schema run: | - if [ ! -f "schema.graphql" ]; then - echo "Error: schema.graphql not found" - exit 1 + # Check if any .graphql files exist + if ! find src -name "*.graphql" -type f | grep -q .; then + echo "Warning: No .graphql files found in src directory" + exit 0 fi - npx graphql-inspector validate schema.graphql src/**/*.graphql - + npx graphql-inspector validate schema.graphql "src/**/*.graphql" + Graphql-Inspector: if: ${{ github.actor != 'dependabot[bot]' }} name: Runs Introspection on the GitHub talawa-api repo on the schema.graphql file From b77fdda92368d27859d4734be399e019926f8f83 Mon Sep 17 00:00:00 2001 From: Priyanshu Thapliyal <114170980+Priyanshuthapliyal2005@users.noreply.github.com> Date: Fri, 31 Jan 2025 19:33:02 +0530 Subject: [PATCH 5/7] Update .github/workflows/pull-request.yml Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- .github/workflows/pull-request.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 35d4781b18..652db91521 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -275,13 +275,20 @@ jobs: - name: Validate GraphQL schema run: | + # Install graphql-inspector if not already installed + npm install -g @graphql-inspector/cli@latest + # Check if any .graphql files exist if ! find src -name "*.graphql" -type f | grep -q .; then echo "Warning: No .graphql files found in src directory" exit 0 fi + # Check if schema.graphql exists + if [ ! -f "schema.graphql" ]; then + echo "Error: schema.graphql not found in the root directory" + exit 1 + fi npx graphql-inspector validate schema.graphql "src/**/*.graphql" - Graphql-Inspector: if: ${{ github.actor != 'dependabot[bot]' }} name: Runs Introspection on the GitHub talawa-api repo on the schema.graphql file From b4810e21ab64f52f36fe04fde80538642930521e Mon Sep 17 00:00:00 2001 From: Priyanshu Thapliyal Date: Sat, 1 Feb 2025 14:35:54 +0530 Subject: [PATCH 6/7] fix the requested changes --- .github/workflows/pull-request.yml | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 652db91521..e33de2fc6a 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -273,23 +273,8 @@ jobs: path: "./coverage/vitest/lcov.info" min_coverage: 0 - - name: Validate GraphQL schema - run: | - # Install graphql-inspector if not already installed - npm install -g @graphql-inspector/cli@latest - - # Check if any .graphql files exist - if ! find src -name "*.graphql" -type f | grep -q .; then - echo "Warning: No .graphql files found in src directory" - exit 0 - fi - # Check if schema.graphql exists - if [ ! -f "schema.graphql" ]; then - echo "Error: schema.graphql not found in the root directory" - exit 1 - fi - npx graphql-inspector validate schema.graphql "src/**/*.graphql" Graphql-Inspector: + needs: [Test-Application] if: ${{ github.actor != 'dependabot[bot]' }} name: Runs Introspection on the GitHub talawa-api repo on the schema.graphql file runs-on: ubuntu-latest From 55e66307c148f2947933a627cd73319c1ef9ea49 Mon Sep 17 00:00:00 2001 From: Priyanshu Thapliyal Date: Sun, 2 Feb 2025 12:37:50 +0530 Subject: [PATCH 7/7] add schema.graphql locally --- .github/workflows/pull-request.yml | 51 +- schema.graphql | 5897 +++++++++++++++++++++------- 2 files changed, 4588 insertions(+), 1360 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index e33de2fc6a..66335b0dee 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -290,33 +290,34 @@ jobs: - name: resolve dependency run: npm install -g @graphql-inspector/cli@latest - - name: Clone API Repository - env: - BASE_REF: ${{ github.event.pull_request.base.ref }} - run: | - # Retrieve the complete branch name directly from the GitHub context - FULL_BRANCH_NAME="$BASE_REF" - echo "FULL_BRANCH_NAME: $FULL_BRANCH_NAME" - # Clone the specified repository using the extracted branch name - if ! git ls-remote --heads https://github.com/PalisadoesFoundation/talawa-api.git $FULL_BRANCH_NAME | grep -q .; then - echo "Error: Branch '$FULL_BRANCH_NAME' does not exist in talawa-api repository" - echo "Please ensure the branch exists and you have the correct permissions" - exit 1 - fi - if ! git clone --branch $FULL_BRANCH_NAME --depth 1 https://github.com/PalisadoesFoundation/talawa-api; then - echo "Error: Failed to clone talawa-api repository from branch '$FULL_BRANCH_NAME'" - echo "This could be due to network issues or repository permissions" - exit 1 - fi - # Verify clone was successful - if [ ! -d "talawa-api" ]; then - echo "Error: talawa-api directory not found after clone" - exit 1 - fi + # Using local schema.graphql file instead of cloning from API repository + # - name: Clone API Repository + # env: + # BASE_REF: ${{ github.event.pull_request.base.ref }} + # run: | + # # Retrieve the complete branch name directly from the GitHub context + # FULL_BRANCH_NAME="$BASE_REF" + # echo "FULL_BRANCH_NAME: $FULL_BRANCH_NAME" + # # Clone the specified repository using the extracted branch name + # if ! git ls-remote --heads https://github.com/PalisadoesFoundation/talawa-api.git $FULL_BRANCH_NAME | grep -q .; then + # echo "Error: Branch '$FULL_BRANCH_NAME' does not exist in talawa-api repository" + # echo "Please ensure the branch exists and you have the correct permissions" + # exit 1 + # fi + # if ! git clone --branch $FULL_BRANCH_NAME --depth 1 https://github.com/PalisadoesFoundation/talawa-api; then + # echo "Error: Failed to clone talawa-api repository from branch '$FULL_BRANCH_NAME'" + # echo "This could be due to network issues or repository permissions" + # exit 1 + # fi + # # Verify clone was successful + # if [ ! -d "talawa-api" ]; then + # echo "Error: talawa-api directory not found after clone" + # exit 1 + # fi - name: Validate Documents run: | - if [ ! -f './talawa-api/schema.graphql' ]; then + if [ ! -f './schema.graphql' ]; then echo "Error: schema.graphql not found in talawa-api" exit 1 fi @@ -327,7 +328,7 @@ jobs: fi echo "Found GraphQL files:" echo "$GRAPHQL_FILES" - graphql-inspector validate './src/GraphQl/**/*.{ts,tsx}' './talawa-api/schema.graphql' + graphql-inspector validate './src/GraphQl/**/*.{ts,tsx}' './schema.graphql' Start-App-Without-Docker: name: Check if Talawa Admin app starts (No Docker) diff --git a/schema.graphql b/schema.graphql index 4c60185f5f..afe8d50cab 100644 --- a/schema.graphql +++ b/schema.graphql @@ -1,1530 +1,4757 @@ -directive @auth on FIELD_DEFINITION - -directive @role(requires: UserType) on FIELD_DEFINITION - -type ActionItem { - _id: ID! - actionItemCategory: ActionItemCategory - assignee: User - assigner: User - assignmentDate: Date! - completionDate: Date! - createdAt: Date! +type Advertisement { + """ + Array of attachments. + """ + attachments: [AdvertisementAttachment!] + + """ + Date time at the time the advertisement was created. + """ + createdAt: DateTime + + """ + User who created the advertisement. + """ + creator: User + + """ + Custom information about the advertisement. + """ + description: String + + """ + Date time at the time the advertised event ends at. + """ + endAt: DateTime + + """ + Global identifier of the advertisement. + """ + id: ID! + + """ + Name of the advertisement. + """ + name: String + + """ + Organization which the advertisement belongs to. + """ + organization: Organization + + """ + Date time at the time the advertised event starts at. + """ + startAt: DateTime + + """ + Type of the advertisement. + """ + type: AdvertisementType + + """ + Date time at the time the advertisement was last updated. + """ + updatedAt: DateTime + + """ + User who last updated the advertisement. + """ + updater: User +} + +type AdvertisementAttachment { + """ + Mime type of the attachment. + """ + mimeType: String + + """ + URL to the attachment. + """ + url: String +} + +""" +Possible variants of the type of an advertisement. +""" +enum AdvertisementType { + banner + menu + pop_up +} + +type AgendaFolder { + """ + GraphQL connection to traverse through the agenda folders that have the agenda folder as a parent folder. + """ + childFolders( + after: String + before: String + first: Int + last: Int + ): AgendaFolderChildFoldersConnection + + """ + Date time at the time the agenda folder was created. + """ + createdAt: DateTime + + """ + User who created the agenda folder. + """ creator: User - dueDate: Date! + + """ + Event for which the agenda folder contains agenda items constituting a part of the agenda. + """ event: Event - isCompleted: Boolean! - postCompletionNotes: String - preCompletionNotes: String - updatedAt: Date! + + """ + Global identifier of the agenda folder. + """ + id: ID! + + """ + Boolean to tell if the agenda folder is meant to be a folder for agenda items or a parent for agenda folders. + """ + isAgendaItemFolder: Boolean + + """ + GraphQL connection to traverse through the agenda items contained within the agenda folder. + """ + items( + after: String + before: String + first: Int + last: Int + ): AgendaFolderItemsConnection + + """ + Name of the agenda folder. + """ + name: String + + """ + Agenda folder that is a parent folder to the agenda folder. + """ + parentFolder: AgendaFolder + + """ + Date time at the time the agenda folder was last updated. + """ + updatedAt: DateTime + + """ + User who last updated the agenda folder. + """ + updater: User } -type ActionItemCategory { - _id: ID! - createdAt: Date! +""" +""" +type AgendaFolderChildFoldersConnection { + edges: [AgendaFolderChildFoldersConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type AgendaFolderChildFoldersConnectionEdge { + cursor: String! + node: AgendaFolder +} + +""" +""" +type AgendaFolderItemsConnection { + edges: [AgendaFolderItemsConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type AgendaFolderItemsConnectionEdge { + cursor: String! + node: AgendaItem +} + +type AgendaItem { + """ + Date time at the time the agenda item was last created. + """ + createdAt: DateTime + + """ + User who created the agenda item. + """ creator: User - isDisabled: Boolean! - name: String! + + """ + Custom information about the agenda item. + """ + description: String + + """ + Duration of the agenda item. + """ + duration: String + + """ + Agenda folder within which the agenda item in contained. + """ + event: AgendaFolder + + """ + Global identifier of the agenda item. + """ + id: ID! + + """ + Key of the agenda item if it's of a "song" type. More information at [this](https://en.wikipedia.org/wiki/Key_(music)) link. + """ + key: String + + """ + Name of the agenda item. + """ + name: String + + """ + Type of the agenda item. + """ + type: AgendaItemType + + """ + Date time at the time the agenda item was last updated. + """ + updatedAt: DateTime + + """ + User who last updated the agenda item. + """ + updater: User +} + +""" +Possible variants of the type of an agenda item. +""" +enum AgendaItemType { + general + note + scripture + song +} + +""" +""" +type AuthenticationPayload { + """ + This is the authentication token using which a user can sign in to talawa. + """ + authenticationToken: String + + """ + """ + user: User +} + +""" +The `BigInt` scalar type represents non-fractional signed whole numeric values. +""" +scalar BigInt + +type Chat { + """ + Mime type of the avatar of the chat. + """ + avatarMimeType: String + + """ + URL to the avatar of the chat. + """ + avatarURL: String + + """ + Date time at the time the chat was first created. + """ + createdAt: DateTime + + """ + User who created the chat. + """ + creator: User + + """ + Custom information about the chat. + """ + description: String + + """ + Global identifier of the chat. + """ + id: ID! + + """ + GraphQL connection to traverse through the users that are members of the chat. + """ + members( + after: String + before: String + first: Int + last: Int + ): ChatMembersConnection + + """ + GraphQL connection to traverse through the messages created within the chat. + """ + messages( + after: String + before: String + first: Int + last: Int + ): ChatMessagesConnection + + """ + Name of the chat. + """ + name: String + + """ + Organization which the chat belongs to. + """ organization: Organization - updatedAt: Date! + + """ + Date time at the time the chat was last updated. + """ + updatedAt: DateTime + + """ + User who last updated the chat. + """ + updater: User } -type Address { - city: String - countryCode: String - dependentLocality: String - line1: String - line2: String - postalCode: String - sortingCode: String - state: String +""" +""" +type ChatMembersConnection { + edges: [ChatMembersConnectionEdge] + pageInfo: PageInfo! } -input AddressInput { - city: String - countryCode: String - dependentLocality: String - line1: String - line2: String - postalCode: String - sortingCode: String - state: String +""" +""" +type ChatMembersConnectionEdge { + cursor: String! + node: User } -type Advertisement { - _id: ID! - createdAt: DateTime! +""" +Possible variants of the role assigned to a user within a chat. +""" +enum ChatMembershipRole { + administrator + regular +} + +type ChatMessage { + """ + Body of the chat message. + """ + body: String + + """ + Chat which the chat message belongs to. + """ + chat: Chat + + """ + Date time at the time the chat message was created. + """ + createdAt: DateTime + + """ + User who created the chat message. + """ creator: User - endDate: Date! - mediaUrl: URL! - name: String! - orgId: ID! - startDate: Date! - type: AdvertisementType! - updatedAt: DateTime! + + """ + Global identifier of the chat message. + """ + id: ID! + + """ + Parent message of the chat message. + """ + parentMessage: ChatMessage + + """ + Date time at the time the chat message was last updated. + """ + updatedAt: DateTime +} + +""" +""" +type ChatMessagesConnection { + edges: [ChatMessagesConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type ChatMessagesConnectionEdge { + cursor: String! + node: ChatMessage +} + +type Comment { + """ + Body of the comment. + """ + body: String + + """ + Date time at the time the comment was created. + """ + createdAt: DateTime + + """ + User who created the comment. + """ + creator: User + + """ + GraphQL connection to traverse through the users that down voted the comment. + """ + downVoters( + after: String + before: String + first: Int + last: Int + ): CommentDownVotersConnection + + """ + Total number of down votes on the comment. + """ + downVotesCount: Int + + """ + Global identifier of the comment. + """ + id: ID! + + """ + Post which the comment belongs to. + """ + post: Post + + """ + GraphQL connection to traverse through the users that up voted the comment. + """ + upVoters( + after: String + before: String + first: Int + last: Int + ): CommentUpVotersConnection + + """ + Total number of up votes on the comment. + """ + upVotesCount: Int + + """ + Date time at the time the comment was last updated. + """ + updatedAt: DateTime +} + +""" +""" +type CommentDownVotersConnection { + edges: [CommentDownVotersConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type CommentDownVotersConnectionEdge { + cursor: String! + node: User +} + +""" +""" +type CommentUpVotersConnection { + edges: [CommentUpVotersConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type CommentUpVotersConnectionEdge { + cursor: String! + node: User +} + +""" +Possible variants of the type of of a vote on a comment. +""" +enum CommentVoteType { + down_vote + up_vote +} + +type Community { + """ + Date time at the time the community was created. + """ + createdAt: DateTime + + """ + URL to the facebook account of the community. + """ + facebookURL: String + + """ + URL to the gitGub account of the community. + """ + githubURL: String + + """ + Global identifier of the community. + """ + id: ID! + + """ + Duration in seconds it should take for inactive clients to get timed out of their authenticated session within client-side talawa applications. + """ + inactivityTimeoutDuration: Int + + """ + URL to the instagram account of the community. + """ + instagramURL: String + + """ + URL to the linkedin account of the community. + """ + linkedinURL: String + + """ + Mime type of the avatar of the community. + """ + logoMimeType: String + + """ + URL to the logo of the community. + """ + logoURL: String + + """ + Name of the community. + """ + name: String + + """ + URL to the reddit account of the community. + """ + redditURL: String + + """ + URL to the slack account of the community. + """ + slackURL: String + + """ + Date time at the time the community was last updated. + """ + updatedAt: DateTime + + """ + User who last updated the community. + """ + updater: User + + """ + URL to the website of the community. + """ + websiteURL: String + + """ + URL to the x account of the community. + """ + xURL: String + + """ + URL to the youtube account of the community. + """ + youtubeURL: String +} + +""" +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. +""" +scalar Date + +""" +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 Event { + """ + GraphQL connection to traverse through the agenda folders that contain agenda items constituting a part of the agenda for the event. + """ + agendaFolders( + after: String + before: String + first: Int + last: Int + ): EventAgendaFoldersConnection + + """ + Array of attachments. + """ + attachments: [EventAttachment!] + + """ + Date time at the time the event was created. + """ + createdAt: DateTime + + """ + User who created the event. + """ + creator: User + + """ + Custom information about the event. + """ + description: String + + """ + Date time at the time the event ends at. + """ + endAt: DateTime + + """ + Global identifier of the event. + """ + id: ID! + + """ + Name of the event. + """ + name: String + + """ + Organization the event belongs to. + """ + organization: Organization + + """ + Date time at the time the event starts at. + """ + startAt: DateTime + + """ + Date time at the time the event was last updated. + """ + updatedAt: DateTime + + """ + User who last updated the event. + """ + updater: User + + """ + GraphQL connection to traverse through the venues that are booked for the event. + """ + venues( + after: String + before: String + first: Int + last: Int + ): EventVenuesConnection +} + +""" +""" +type EventAgendaFoldersConnection { + edges: [EventAgendaFoldersConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type EventAgendaFoldersConnectionEdge { + cursor: String! + node: AgendaFolder +} + +type EventAttachment { + """ + Mime type of the attachment. + """ + mimeType: String + + """ + URL to the attachment. + """ + url: String +} + +""" +""" +type EventVenuesConnection { + edges: [EventVenuesConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type EventVenuesConnectionEdge { + cursor: String! + node: Venue +} + +type Fund { + """ + GraphQL connection to traverse through the campaigns for the fund. + """ + campaigns( + after: String + before: String + first: Int + last: Int + ): FundCampaignsConnection + + """ + Date time at the time the fund was created. + """ + createdAt: DateTime + + """ + User who created the fund. + """ + creator: User + + """ + Global identifier of the fund. + """ + id: ID! + + """ + Boolean to tell if the fund is tax deductible. + """ + isTaxDeductible: Boolean + + """ + Name of the fund. + """ + name: String + + """ + Organization which the fund belongs to. + """ + organization: Organization + + """ + Date time at the time the fund was last updated. + """ + updatedAt: DateTime + + """ + User who last updated the fund. + """ + updater: User +} + +type FundCampaign { + """ + Date time at the time the fund campaign was created. + """ + createdAt: DateTime + + """ + User who created the fund campaign. + """ + creator: User + + """ + Currency code of the fund campaign. + """ + currencyCode: Iso4217CurrencyCode + + """ + Date time at the time the fund campaign ends at. + """ + endAt: DateTime + + """ + Fund which the fund campaign belongs to. + """ + fund: Fund + + """ + Minimum amount of money that is set as the goal for the fund campaign. + """ + goalAmount: Int + + """ + Global identifier of the fund campaign. + """ + id: ID! + + """ + Name of the fund campaign. + """ + name: String + + """ + Total amount of money pledged under the fund campaign. + """ + pledgedAmount: BigInt + + """ + GraphQL connection to traverse through the pledges made under the fund campaign. + """ + pledges( + after: String + before: String + first: Int + last: Int + ): FundCampaignPledgesConnection + + """ + Date time at the time the fund campaign starts at. + """ + startAt: DateTime + + """ + Date time at the time the fund campaign was last updated. + """ + updatedAt: DateTime + + """ + User who last updated the fund campaign. + """ + updater: User +} + +type FundCampaignPledge { + """ + The amount of pledged money. + """ + amount: Int + + """ + Fund campaign which the fund campaign pledge is associated to. + """ + campaign: FundCampaign + + """ + Date time at the time the fund campaign pledge was created. + """ + createdAt: DateTime + + """ + User who created the fund campaign pledge. + """ + creator: User + + """ + Global identifier of the fund campaign pledge. + """ + id: ID! + + """ + Custom information about the fund campaign pledge. + """ + note: String + + """ + User on whose behalf the fund campaign pledge is created. + """ + pledger: User + + """ + Date time at the time the fund campaign pledge was last updated. + """ + updatedAt: DateTime + + """ + User who last updated the fund campaign pledge. + """ + updater: User +} + +""" +""" +type FundCampaignPledgesConnection { + edges: [FundCampaignPledgesConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type FundCampaignPledgesConnectionEdge { + cursor: String! + node: FundCampaignPledge +} + +""" +""" +type FundCampaignsConnection { + edges: [FundCampaignsConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type FundCampaignsConnectionEdge { + cursor: String! + node: FundCampaign +} + +""" +Possible variants of the two-letter language code defined in ISO 639-1, part of the ISO 639 standard published by the International Organization for Standardization (ISO), to represent natural languages. +""" +enum Iso639Set1LanguageCode { + aa + ab + ae + af + ak + am + an + ar + as + av + ay + az + ba + be + bg + bi + bm + bn + bo + br + bs + ca + ce + ch + co + cr + cs + cu + cv + cy + da + de + dv + dz + ee + el + en + eo + es + et + eu + fa + ff + fi + fj + fo + fr + fy + ga + gd + gl + gn + gu + gv + ha + he + hi + ho + hr + ht + hu + hy + hz + ia + id + ie + ig + ii + ik + io + is + it + iu + ja + jv + ka + kg + ki + kj + kk + kl + km + kn + ko + kr + ks + ku + kv + kw + ky + la + lb + lg + li + ln + lo + lt + lu + lv + mg + mh + mi + mk + ml + mn + mr + ms + mt + my + na + nb + nd + ne + ng + nl + nn + no + nr + nv + ny + oc + oj + om + or + os + pa + pi + pl + ps + pt + qu + rm + rn + ro + ru + rw + sa + sc + sd + se + sg + si + sk + sl + sm + sn + so + sq + sr + ss + st + su + sv + sw + ta + te + tg + th + ti + tk + tl + tn + to + tr + ts + tt + tw + ty + ug + uk + ur + uz + ve + vi + vo + wa + wo + xh + yi + yo + za + zh + zu +} + +""" +Possible variants of the two-letter country code defined in ISO 3166-1, part of the ISO 3166 standard published by the International Organization for Standardization (ISO), to represent countries, dependent territories, and special areas of geographical interest. +""" +enum Iso3166Alpha2CountryCode { + ad + ae + af + ag + ai + al + am + ao + aq + ar + as + at + au + aw + ax + az + ba + bb + bd + be + bf + bg + bh + bi + bj + bl + bm + bn + bo + bq + br + bs + bt + bv + bw + by + bz + ca + cc + cd + cf + cg + ch + ci + ck + cl + cm + cn + co + cr + cu + cv + cw + cx + cy + cz + de + dj + dk + dm + do + dz + ec + ee + eg + eh + er + es + et + fi + fj + fk + fm + fo + fr + ga + gb + gd + ge + gf + gg + gh + gi + gl + gm + gn + gp + gq + gr + gs + gt + gu + gw + gy + hk + hm + hn + hr + ht + hu + id + ie + il + im + in + io + iq + ir + is + it + je + jm + jo + jp + ke + kg + kh + ki + km + kn + kp + kr + kw + ky + kz + la + lb + lc + li + lk + lr + ls + lt + lu + lv + ly + ma + mc + md + me + mf + mg + mh + mk + ml + mm + mn + mo + mp + mq + mr + ms + mt + mu + mv + mw + mx + my + mz + na + nc + ne + nf + ng + ni + nl + no + np + nr + nu + nz + om + pa + pe + pf + pg + ph + pk + pl + pm + pn + pr + ps + pt + pw + py + qa + re + ro + rs + ru + rw + sa + sb + sc + sd + se + sg + sh + si + sj + sk + sl + sm + sn + so + sr + ss + st + sv + sx + sy + sz + tc + td + tf + tg + th + tj + tk + tl + tm + tn + to + tr + tt + tv + tw + tz + ua + ug + um + us + uy + uz + va + vc + ve + vg + vi + vn + vu + wf + ws + ye + yt + za + zm + zw +} + +""" +Possible variants of the currency code defined in ISO 4217 standard published by the International Organization for Standardization (ISO) which defines alpha codes and numeric codes for the representation of currencies and provides information about the relationships between individual currencies and their minor units. +""" +enum Iso4217CurrencyCode { + AED + AFN + ALL + AMD + ANG + AOA + ARS + AUD + AWG + AZN + BAM + BBD + BDT + BGN + BHD + BIF + BMD + BND + BOB + BOV + BRL + BSD + BTN + BWP + BYN + BZD + CAD + CDF + CHE + CHF + CHW + CLF + CLP + CNY + COP + COU + CRC + CUP + CVE + CZK + DJF + DKK + DOP + DZD + EGP + ERN + ETB + EUR + FJD + FKP + GBP + GEL + GHS + GIP + GMD + GNF + GTQ + GYD + HKD + HNL + HTG + HUF + IDR + ILS + INR + IQD + IRR + ISK + JMD + JOD + JPY + KES + KGS + KHR + KMF + KPW + KRW + KWD + KYD + KZT + LAK + LBP + LKR + LRD + LSL + LYD + MAD + MDL + MGA + MKD + MMK + MNT + MOP + MRU + MUR + MVR + MWK + MXN + MXV + MYR + MZN + NAD + NGN + NIO + NOK + NPR + NZD + OMR + PAB + PEN + PGK + PHP + PKR + PLN + PYG + QAR + RON + RSD + RUB + RWF + SAR + SBD + SCR + SDG + SEK + SGD + SHP + SLE + SOS + SRD + SSP + STN + SVC + SYP + SZL + THB + TJS + TMT + TND + TOP + TRY + TTD + TWD + TZS + UAH + UGX + USD + USN + UYI + UYU + UYW + UZS + VED + VES + VND + VUV + WST + XAF + XAG + XAU + XBA + XBB + XBC + XBD + XCD + XDR + XOF + XPD + XPF + XPT + XSU + XTS + XUA + XXX + YER + ZAR + ZMW + ZWG +} + +type Mutation { + """ + Mutation field to create an advertisement. + """ + createAdvertisement(input: MutationCreateAdvertisementInput!): Advertisement + + """ + Mutation field to create an agenda folder. + """ + createAgendaFolder(input: MutationCreateAgendaFolderInput!): AgendaFolder + + """ + Mutation field to create an agenda item. + """ + createAgendaItem(input: MutationCreateAgendaItemInput!): AgendaItem + + """ + Mutation field to create a chat. + """ + createChat(input: MutationCreateChatInput!): Chat + + """ + Mutation field to create a chat membership. + """ + createChatMembership(input: MutationCreateChatMembershipInput!): Chat + + """ + Mutation field to create a chat message. + """ + createChatMessage(input: MutationCreateChatMessageInput!): ChatMessage + + """ + Mutation field to create a comment. + """ + createComment(input: MutationCreateCommentInput!): Comment + + """ + Mutation field to create a comment vote. + """ + createCommentVote(input: MutationCreateCommentVoteInput!): Comment + + """ + Mutation field to create an event. + """ + createEvent(input: MutationCreateEventInput!): Event + + """ + Mutation field to create a fund. + """ + createFund(input: MutationCreateFundInput!): Fund + + """ + Mutation field to create a fund campaign. + """ + createFundCampaign(input: MutationCreateFundCampaignInput!): FundCampaign + + """ + Mutation field to create a fund campaign pledge. + """ + createFundCampaignPledge( + input: MutationCreateFundCampaignPledgeInput! + ): FundCampaignPledge + + """ + Mutation field to create an organization. + """ + createOrganization(input: MutationCreateOrganizationInput!): Organization + + """ + Mutation field to create an organization membership. + """ + createOrganizationMembership( + input: MutationCreateOrganizationMembershipInput! + ): Organization + + """ + Mutation field to create a post. + """ + createPost(input: MutationCreatePostInput!): Post + + """ + Mutation field to create a post vote. + """ + createPostVote(input: MutationCreatePostVoteInput!): Post + + """ + Mutation field to create a tag. + """ + createTag(input: MutationCreateTagInput!): Tag + + """ + Mutation field to create a tag folder. + """ + createTagFolder(input: MutationCreateTagFolderInput!): TagFolder + + """ + Mutation field to create a user. + """ + createUser(input: MutationCreateUserInput!): AuthenticationPayload + + """ + Mutation field to create a venue. + """ + createVenue(input: MutationCreateVenueInput!): Venue + + """ + Mutation field to create a venue booking. + """ + createVenueBooking(input: MutationCreateVenueBookingInput!): Venue + + """ + Mutation field to delete an advertisement. + """ + deleteAdvertisement(input: MutationDeleteAdvertisementInput!): Advertisement + + """ + Mutation field to delete an agenda folder. + """ + deleteAgendaFolder(input: MutationDeleteAgendaFolderInput!): AgendaFolder + + """ + Mutation field to delete an agenda item. + """ + deleteAgendaItem(input: MutationDeleteAgendaItemInput!): AgendaItem + + """ + Mutation field to delete a chat. + """ + deleteChat(input: MutationDeleteChatInput!): Chat + + """ + Mutation field to delete a chat membership. + """ + deleteChatMembership(input: MutationDeleteChatMembershipInput!): Chat + + """ + Mutation field to delete a chat message. + """ + deleteChatMessage(input: MutationDeleteChatMessageInput!): ChatMessage + + """ + Mutation field to delete a comment. + """ + deleteComment(input: MutationDeleteCommentInput!): Comment + + """ + Mutation field to delete a comment vote. + """ + deleteCommentVote(input: MutationDeleteCommentVoteInput!): Comment + + """ + Mutation field to delete the current user. + """ + deleteCurrentUser: User + + """ + Mutation field to delete an event. + """ + deleteEvent(input: MutationDeleteEventInput!): Event + + """ + Mutation field to delete a fund. + """ + deleteFund(input: MutationDeleteFundInput!): Fund + + """ + Mutation field to delete a fund campaign. + """ + deleteFundCampaign(input: MutationDeleteFundCampaignInput!): FundCampaign + + """ + Mutation field to delete a fund campaign pledge. + """ + deleteFundCampaignPledge( + input: MutationDeleteFundCampaignPledgeInput! + ): FundCampaignPledge + + """ + Mutation field to delete an organization. + """ + deleteOrganization(input: MutationDeleteOrganizationInput!): Organization + + """ + Mutation field to delete an organization membership. + """ + deleteOrganizationMembership( + input: MutationDeleteOrganizationMembershipInput! + ): Organization + + """ + Mutation field to delete a post. + """ + deletePost(input: MutationDeletePostInput!): Post + + """ + Mutation field to delete a post vote. + """ + deletePostVote(input: MutationDeletePostVoteInput!): Post + + """ + Mutation field to delete a tag. + """ + deleteTag(input: MutationDeleteTagInput!): Tag + + """ + Mutation field to delete a tagFolder. + """ + deleteTagFolder(input: MutationDeleteTagFolderInput!): TagFolder + + """ + Mutation field to delete a user. + """ + deleteUser(input: MutationDeleteUserInput!): User + + """ + Mutation field to delete a venue. + """ + deleteVenue(input: MutationDeleteVenueInput!): Venue + + """ + Mutation field to delete a venue booking. + """ + deleteVenueBooking(input: MutationDeleteVenueBookingInput!): Venue + + """ + Mutation field to sign up to talawa. + """ + signUp(input: MutationSignUpInput!): AuthenticationPayload + + """ + Mutation field to update an advertisement. + """ + updateAdvertisement(input: MutationUpdateAdvertisementInput!): Advertisement + + """ + Mutation field to update an agenda folder. + """ + updateAgendaFolder(input: MutationUpdateAgendaFolderInput!): AgendaFolder + + """ + Mutation field to update an agenda item. + """ + updateAgendaItem(input: MutationUpdateAgendaItemInput!): AgendaItem + + """ + Mutation field to update a chat. + """ + updateChat(input: MutationUpdateChatInput!): Chat + + """ + Mutation field to update a chat membership. + """ + updateChatMembership(input: MutationUpdateChatMembershipInput!): Chat + + """ + Mutation field to update a chat message. + """ + updateChatMessage(input: MutationUpdateChatMessageInput!): ChatMessage + + """ + Mutation field to update a comment. + """ + updateComment(input: MutationUpdateCommentInput!): Comment + + """ + Mutation field to update a comment vote. + """ + updateCommentVote(input: MutationUpdateCommentVoteInput!): Comment + + """ + Mutation field to update the community. + """ + updateCommunity(input: MutationUpdateCommunityInput!): Community + + """ + Mutation field to update the current user. + """ + updateCurrentUser(input: MutationUpdateCurrentUserInput!): User + + """ + Mutation field to update an event. + """ + updateEvent(input: MutationUpdateEventInput!): Event + + """ + Mutation field to update a fund. + """ + updateFund(input: MutationUpdateFundInput!): Fund + + """ + Mutation field to update a fund campaign. + """ + updateFundCampaign(input: MutationUpdateFundCampaignInput!): FundCampaign + + """ + Mutation field to update a fund campaign pledge. + """ + updateFundCampaignPledge( + input: MutationUpdateFundCampaignPledgeInput! + ): FundCampaignPledge + + """ + Mutation field to update a organization. + """ + updateOrganization(input: MutationUpdateOrganizationInput!): Organization + + """ + Mutation field to update an organization membership. + """ + updateOrganizationMembership( + input: MutationUpdateOrganizationMembershipInput! + ): Organization + + """ + Mutation field to update a post. + """ + updatePost(input: MutationUpdatePostInput!): Post + + """ + Mutation field to update a post vote. + """ + updatePostVote(input: MutationUpdatePostVoteInput!): Post + + """ + Mutation field to update a tag. + """ + updateTag(input: MutationUpdateTagInput!): Tag + + """ + Mutation field to update a tag folder. + """ + updateTagFolder(input: MutationUpdateTagFolderInput!): TagFolder + + """ + Mutation field to update a user. + """ + updateUser(input: MutationUpdateUserInput!): User + + """ + Mutation field to update a venue. + """ + updateVenue(input: MutationUpdateVenueInput!): Venue +} + +""" +""" +input MutationCreateAdvertisementInput { + """ + Attachments of the advertisement. + """ + attachments: [Upload!] + + """ + Custom information about the advertisement. + """ + description: String + + """ + Date time at which the advertised event ends. + """ + endAt: DateTime! + + """ + Name of the advertisement. + """ + name: String! + + """ + Global identifier of the associated organization. + """ + organizationId: ID! + + """ + Date time at which the advertised event starts. + """ + startAt: DateTime! + + """ + Type of the advertisement. + """ + type: AdvertisementType! +} + +""" +""" +input MutationCreateAgendaFolderInput { + """ + Global identifier of the event the agenda folder is associated to. + """ + eventId: ID! + + """ + Boolean to tell if the agenda folder is meant to be a folder for agenda items or a parent folder for other agenda folders. + """ + isAgendaItemFolder: Boolean! + + """ + Name of the agenda folder. + """ + name: String! + + """ + Global identifier of the agenda folder the agenda folder is contained within. + """ + parentFolderId: ID +} + +""" +""" +input MutationCreateAgendaItemInput { + """ + Custom information about the agenda item. + """ + description: String + + """ + Duration of the agenda item. + """ + duration: String + + """ + Global identifier of the agenda folder the agenda item is associated to. + """ + folderId: ID! + + """ + Key of the agenda item if it's of a "song" type. More information at [this](https://en.wikipedia.org/wiki/Key_(music)) link. + """ + key: String + + """ + Name of the agenda item. + """ + name: String! + + """ + Type of the agenda item. + """ + type: AgendaItemType! +} + +""" +""" +input MutationCreateChatInput { + """ + Avatar of the chat. + """ + avatar: Upload + + """ + Custom information about the chat. + """ + description: String + + """ + Name of the chat. + """ + name: String! + + """ + Global identifier of the associated organization. + """ + organizationId: ID! +} + +""" +""" +input MutationCreateChatMembershipInput { + """ + Global identifier of the associated chat. + """ + chatId: ID! + + """ + Global identifier of the associated user. + """ + memberId: ID! + + """ + Role assigned to the user within the chat. + """ + role: ChatMembershipRole +} + +""" +""" +input MutationCreateChatMessageInput { + """ + Body of the chat message. + """ + body: String! + + """ + Global identifier of the associated chat. + """ + chatId: ID! + + """ + Global identifier of the associated parent message. + """ + parentMessageId: ID! +} + +""" +""" +input MutationCreateCommentInput { + """ + Body of the comment. + """ + body: String! + + """ + Global identifier of the post on which the comment is made. + """ + postId: ID! +} + +""" +""" +input MutationCreateCommentVoteInput { + """ + Global identifier of the comment that is voted. + """ + commentId: ID! + + """ + Type of the vote. + """ + type: CommentVoteType! +} + +""" +""" +input MutationCreateEventInput { + """ + Attachments of the event. + """ + attachments: [Upload!] + + """ + Custom information about the event. + """ + description: String + + """ + Date time at the time the event ends at. + """ + endAt: DateTime! + + """ + Name of the event. + """ + name: String! + + """ + Global identifier of the associated organization. + """ + organizationId: ID! + + """ + Date time at the time the event starts at. + """ + startAt: DateTime! +} + +""" +""" +input MutationCreateFundCampaignInput { + """ + Currency code of the fund campaign. + """ + currencyCode: Iso4217CurrencyCode! + + """ + Date time at the time the fund campaign ends at. + """ + endAt: DateTime! + + """ + Global identifier of the associated fund. + """ + fundId: ID! + + """ + Minimum amount of money that is set as the goal for the fund campaign. + """ + goalAmount: Int! + + """ + Name of the fund campaign. + """ + name: String! + + """ + Date time at the time the fund campaign starts at. + """ + startAt: DateTime! +} + +""" +""" +input MutationCreateFundCampaignPledgeInput { + """ + The amount of pledged money. + """ + amount: Int! + + """ + Global identifier of the fund campaign. + """ + campaignId: ID! + + """ + Custom information about the fund campaign pledge. + """ + note: String + + """ + Global identifier of the user who pledged. + """ + pledgerId: ID! +} + +""" +""" +input MutationCreateFundInput { + """ + Boolean to tell if the fund is tax deductible. + """ + isTaxDeductible: Boolean! + + """ + Name of the fund. + """ + name: String! + + """ + Global identifier of the associated organization. + """ + organizationId: ID! +} + +""" +""" +input MutationCreateOrganizationInput { + """ + Address line 1 of the organization's address. + """ + addressLine1: String + + """ + Address line 2 of the organization's address. + """ + addressLine2: String + + """ + Avatar of the organization. + """ + avatar: Upload + + """ + Name of the city where the organization resides in. + """ + city: String + + """ + Country code of the country the organization is a citizen of. + """ + countryCode: Iso3166Alpha2CountryCode + + """ + Custom information about the organization. + """ + description: String + + """ + Name of the organization. + """ + name: String! + + """ + Postal code of the organization. + """ + postalCode: String + + """ + Name of the state the organization resides in. + """ + state: String +} + +""" +""" +input MutationCreateOrganizationMembershipInput { + """ + Global identifier of the associated user. + """ + memberId: ID! + + """ + Global identifier of the associated organization. + """ + organizationId: ID! + + """ + Role assigned to the user within the organization. + """ + role: OrganizationMembershipRole +} + +""" +""" +input MutationCreatePostInput { + """ + Attachments of the post. + """ + attachments: [Upload!] + + """ + Caption about the post. + """ + caption: String! + + """ + Boolean to tell if the post is pinned + """ + isPinned: Boolean + + """ + Global identifier of the associated organization in which the post is posted. + """ + organizationId: ID! +} + +""" +""" +input MutationCreatePostVoteInput { + """ + Global identifier of the post that is voted. + """ + postId: ID! + + """ + Type of the vote. + """ + type: PostVoteType! +} + +""" +""" +input MutationCreateTagFolderInput { + """ + Name of the tag. + """ + name: String! + + """ + Global identifier of the associated organization. + """ + organizationId: ID! + + """ + Global identifier of the associated parent tag folder. + """ + parentFolderId: ID +} + +""" +""" +input MutationCreateTagInput { + """ + Global identifier of the associated tag folder. + """ + folderId: ID + + """ + Name of the tag. + """ + name: String! + + """ + Global identifier of the associated organization. + """ + organizationId: ID! +} + +""" +""" +input MutationCreateUserInput { + """ + Address line 1 of the user's address. + """ + addressLine1: String + + """ + Address line 2 of the user's address. + """ + addressLine2: String + + """ + Avatar of the user. + """ + avatar: Upload + + """ + Date of birth of the user. + """ + birthDate: Date + + """ + Name of the city where the user resides in. + """ + city: String + + """ + Country code of the country the user is a citizen of. + """ + countryCode: Iso3166Alpha2CountryCode + + """ + Custom information about the user. + """ + description: String + + """ + Primary education grade of the user. + """ + educationGrade: UserEducationGrade + + """ + Email address of the user. + """ + emailAddress: String! + + """ + Employment status of the user. + """ + employmentStatus: UserEmploymentStatus + + """ + The phone number to use to communicate with the user at their home. + """ + homePhoneNumber: PhoneNumber + + """ + Boolean to tell whether the user has verified their email address. + """ + isEmailAddressVerified: Boolean! + + """ + Marital status of the user. + """ + maritalStatus: UserMaritalStatus + + """ + The phone number to use to communicate with the user on their mobile phone. + """ + mobilePhoneNumber: PhoneNumber + + """ + Name of the user. + """ + name: String! + + """ + The sex assigned to the user at their birth. + """ + natalSex: UserNatalSex + + """ + Language code of the user's preferred natural language. + """ + naturalLanguageCode: Iso639Set1LanguageCode + + """ + Password of the user to sign in to the application. + """ + password: String! + + """ + Postal code of the user. + """ + postalCode: String + + """ + Role assigned to the user in the application. + """ + role: UserRole! + + """ + Name of the state the user resides in. + """ + state: String + + """ + The phone number to use to communicate with the user while they're at work. + """ + workPhoneNumber: PhoneNumber +} + +""" +""" +input MutationCreateVenueBookingInput { + """ + Global identifier of the event that the venue is to be booked for. + """ + eventId: ID! + + """ + Global identifier of the venue to be booked. + """ + venueId: ID! +} + +""" +""" +input MutationCreateVenueInput { + """ + Attachments of the venue. + """ + attachments: [Upload!] + + """ + Custom information about the venue. + """ + description: String + + """ + Name of the venue. + """ + name: String! + + """ + Global identifier of the associated organization. + """ + organizationId: ID! +} + +""" +""" +input MutationDeleteAdvertisementInput { + """ + Global identifier of the advertisement. + """ + id: ID! +} + +""" +""" +input MutationDeleteAgendaFolderInput { + """ + Global identifier of the agenda folder. + """ + id: ID! +} + +""" +""" +input MutationDeleteAgendaItemInput { + """ + Global identifier of the agenda item. + """ + id: ID! +} + +""" +""" +input MutationDeleteChatInput { + """ + Global identifier of the chat. + """ + id: ID! +} + +""" +""" +input MutationDeleteChatMembershipInput { + """ + Global identifier of the associated chat. + """ + chatId: ID! + + """ + Global identifier of the associated user. + """ + memberId: ID! +} + +""" +""" +input MutationDeleteChatMessageInput { + """ + Global identifier of the chat message. + """ + id: ID! +} + +""" +""" +input MutationDeleteCommentInput { + """ + Global identifier of the comment. + """ + id: ID! +} + +""" +""" +input MutationDeleteCommentVoteInput { + """ + Global identifier of the comment that is voted. + """ + commentId: ID! + + """ + Global identifier of the user who voted. + """ + creatorId: ID! +} + +""" +""" +input MutationDeleteEventInput { + """ + Global identifier of the event. + """ + id: ID! +} + +""" +""" +input MutationDeleteFundCampaignInput { + """ + Global identifier of the fund campaign. + """ + id: ID! +} + +""" +""" +input MutationDeleteFundCampaignPledgeInput { + """ + Global identifier of the fund campaign pledge. + """ + id: ID! +} + +""" +""" +input MutationDeleteFundInput { + """ + Global identifier of the fund. + """ + id: ID! +} + +""" +""" +input MutationDeleteOrganizationInput { + """ + Global identifier of the organization. + """ + id: ID! +} + +""" +""" +input MutationDeleteOrganizationMembershipInput { + """ + Global identifier of the associated user. + """ + memberId: ID! + + """ + Global identifier of the associated organization. + """ + organizationId: ID! +} + +""" +""" +input MutationDeletePostInput { + """ + Global identifier of the post. + """ + id: ID! +} + +""" +""" +input MutationDeletePostVoteInput { + """ + Global identifier of the user who voted. + """ + creatorId: ID! + + """ + Global identifier of the post that is voted. + """ + postId: ID! +} + +""" +""" +input MutationDeleteTagFolderInput { + """ + Global identifier of the tag folder. + """ + id: ID! +} + +""" +""" +input MutationDeleteTagInput { + """ + Global identifier of the tag. + """ + id: ID! +} + +""" +""" +input MutationDeleteUserInput { + """ + Global identifier of the user. + """ + id: ID! +} + +""" +""" +input MutationDeleteVenueBookingInput { + """ + Global identifier of the event that the venue is booked for. + """ + eventId: ID! + + """ + Global identifier of the venue that is booked. + """ + venueId: ID! +} + +""" +""" +input MutationDeleteVenueInput { + """ + Global identifier of the venue. + """ + id: ID! +} + +""" +""" +input MutationSignUpInput { + """ + Address line 1 of the user's address. + """ + addressLine1: String + + """ + Address line 2 of the user's address. + """ + addressLine2: String + + """ + Date of birth of the user. + """ + birthDate: Date + + """ + Name of the city where the user resides in. + """ + city: String + + """ + Country code of the country the user is a citizen of. + """ + countryCode: Iso3166Alpha2CountryCode + + """ + Custom information about the user. + """ + description: String + + """ + Primary education grade of the user. + """ + educationGrade: UserEducationGrade + + """ + Email address of the user. + """ + emailAddress: String! + + """ + Employment status of the user. + """ + employmentStatus: UserEmploymentStatus + + """ + The phone number to use to communicate with the user at their home. + """ + homePhoneNumber: PhoneNumber + + """ + Marital status of the user. + """ + maritalStatus: UserMaritalStatus + + """ + The phone number to use to communicate with the user on their mobile phone. + """ + mobilePhoneNumber: PhoneNumber + + """ + Name of the user. + """ + name: String! + + """ + The sex assigned to the user at their birth. + """ + natalSex: UserNatalSex + + """ + Language code of the user's preferred natural language. + """ + naturalLanguageCode: Iso639Set1LanguageCode + + """ + Password of the user to sign in to the application. + """ + password: String! + + """ + Postal code of the user. + """ + postalCode: String + + """ + Name of the state the user resides in. + """ + state: String + + """ + The phone number to use to communicate with the user while they're at work. + """ + workPhoneNumber: PhoneNumber +} + +""" +""" +input MutationUpdateAdvertisementInput { + """ + Custom information about the advertisement. + """ + description: String + + """ + Date time at which the advertised event ends. + """ + endAt: DateTime + + """ + Global identifier of the associated organization. + """ + id: ID! + + """ + Name of the advertisement. + """ + name: String + + """ + Date time at which the advertised event starts. + """ + startAt: DateTime + + """ + Type of the advertisement. + """ + type: AdvertisementType +} + +""" +""" +input MutationUpdateAgendaFolderInput { + """ + Global identifier of the agenda folder. + """ + id: ID! + + """ + Name of the agenda folder. + """ + name: String + + """ + Global identifier of the agenda folder the agenda folder is contained within. + """ + parentFolderId: ID +} + +""" +""" +input MutationUpdateAgendaItemInput { + """ + Custom information about the agenda item. + """ + description: String + + """ + Duration of the agenda item. + """ + duration: String + + """ + Global identifier of the associated agenda folder. + """ + folderId: ID + + """ + Global identifier of the agenda item. + """ + id: ID! + + """ + Key of the agenda item if it's of a "song" type. More information at [this](https://en.wikipedia.org/wiki/Key_(music)) link. + """ + key: String + + """ + Name of the agenda item. + """ + name: String +} + +""" +""" +input MutationUpdateChatInput { + """ + Avatar of the chat. + """ + avatar: Upload + + """ + Custom information about the chat. + """ + description: String + + """ + Global identifier of the chat. + """ + id: ID! + + """ + Name of the chat. + """ + name: String +} + +""" +""" +input MutationUpdateChatMembershipInput { + """ + Global identifier of the associated chat. + """ + chatId: ID! + + """ + Global identifier of the associated user. + """ + memberId: ID! + + """ + Role assigned to the user within the chat. + """ + role: ChatMembershipRole! +} + +""" +""" +input MutationUpdateChatMessageInput { + """ + Body of the chat message. + """ + body: String! + + """ + Global identifier of the chat message. + """ + id: ID! +} + +""" +""" +input MutationUpdateCommentInput { + """ + Body of the comment. + """ + body: String + + """ + Global identifier of the comment. + """ + id: ID! +} + +""" +""" +input MutationUpdateCommentVoteInput { + """ + Global identifier of the comment that is voted. + """ + commentId: ID! + + """ + Type of the vote. + """ + type: CommentVoteType! +} + +""" +""" +input MutationUpdateCommunityInput { + """ + URL to the facebook account of the community. + """ + facebookURL: String + + """ + URL to the gitGub account of the community. + """ + githubURL: String + + """ + Duration in seconds it should take for inactive clients to get timed out of their authenticated session within client-side talawa applications. + """ + inactivityTimeoutDuration: Int + + """ + URL to the instagram account of the community. + """ + instagramURL: String + + """ + URL to the linkedin account of the community. + """ + linkedinURL: String + + """ + Mime type of the logo of the community. + """ + logo: Upload + + """ + Name of the community. + """ + name: String + + """ + URL to the reddit account of the community. + """ + redditURL: String + + """ + URL to the slack account of the community. + """ + slackURL: String + + """ + URL to the website of the community. + """ + websiteURL: String + + """ + URL to the x account of the community. + """ + xURL: String + + """ + URL to the youtube account of the community. + """ + youtubeURL: String +} + +""" +""" +input MutationUpdateCurrentUserInput { + """ + Address line 1 of the user's address. + """ + addressLine1: String + + """ + Address line 2 of the user's address. + """ + addressLine2: String + + """ + Avatar of the user. + """ + avatar: Upload + + """ + Date of birth of the user. + """ + birthDate: Date + + """ + Name of the city where the user resides in. + """ + city: String + + """ + Country code of the country the user is a citizen of. + """ + countryCode: Iso3166Alpha2CountryCode + + """ + Custom information about the user. + """ + description: String + + """ + Primary education grade of the user. + """ + educationGrade: UserEducationGrade + + """ + Email address of the user. + """ + emailAddress: String + + """ + Employment status of the user. + """ + employmentStatus: UserEmploymentStatus + + """ + The phone number to use to communicate with the user at their home. + """ + homePhoneNumber: PhoneNumber + + """ + Marital status of the user. + """ + maritalStatus: UserMaritalStatus + + """ + The phone number to use to communicate with the user on their mobile phone. + """ + mobilePhoneNumber: PhoneNumber + + """ + Name of the user. + """ + name: String + + """ + The sex assigned to the user at their birth. + """ + natalSex: UserNatalSex + + """ + Language code of the user's preferred natural language. + """ + naturalLanguageCode: Iso639Set1LanguageCode + + """ + Password of the user to sign in to the application. + """ + password: String + + """ + Postal code of the user. + """ + postalCode: String + + """ + Name of the state the user resides in. + """ + state: String + + """ + The phone number to use to communicate with the user while they're at work. + """ + workPhoneNumber: PhoneNumber +} + +""" +""" +input MutationUpdateEventInput { + """ + Custom information about the event. + """ + description: String + + """ + Date time at the time the event ends at. + """ + endAt: DateTime + + """ + Global identifier of the event. + """ + id: ID! + + """ + Name of the event. + """ + name: String + + """ + Date time at the time the event starts at. + """ + startAt: DateTime +} + +""" +""" +input MutationUpdateFundCampaignInput { + """ + Date time at the time the fund campaign ends at. + """ + endAt: DateTime + + """ + Minimum amount of money that is set as the goal for the fund campaign. + """ + goalAmount: Int + + """ + Global identifier of the associated fund campaign. + """ + id: ID! + + """ + Name of the fundCampaign. + """ + name: String + + """ + Date time at the time the fund campaign starts at. + """ + startAt: DateTime +} + +""" +""" +input MutationUpdateFundCampaignPledgeInput { + """ + The amount of pledged money. + """ + amount: Int + + """ + Global identifier of the associated fund campaign pledge. + """ + id: ID! + + """ + Custom information about the fund campaign pledge. + """ + note: String +} + +""" +""" +input MutationUpdateFundInput { + """ + Global identifier of the associated organization. + """ + id: ID! + + """ + Boolean to tell if the fund is tax deductible. + """ + isTaxDeductible: Boolean + + """ + Name of the fund. + """ + name: String +} + +""" +""" +input MutationUpdateOrganizationInput { + """ + Address line 1 of the organization's address. + """ + addressLine1: String + + """ + Address line 2 of the organization's address. + """ + addressLine2: String + + """ + Avatar of the organization. + """ + avatar: Upload + + """ + Name of the city where the organization resides in. + """ + city: String + + """ + Country code of the country the organization is a citizen of. + """ + countryCode: Iso3166Alpha2CountryCode + + """ + Custom information about the organization. + """ + description: String + + """ + Global identifier of the organization. + """ + id: ID! + + """ + Name of the organization. + """ + name: String + + """ + Postal code of the organization. + """ + postalCode: String + + """ + Name of the state the organization resides in. + """ + state: String +} + +""" +""" +input MutationUpdateOrganizationMembershipInput { + """ + Global identifier of the associated user. + """ + memberId: ID! + + """ + Global identifier of the associated organization. + """ + organizationId: ID! + + """ + Role assigned to the user within the organization. + """ + role: OrganizationMembershipRole +} + +""" +""" +input MutationUpdatePostInput { + """ + Caption about the post. + """ + caption: String + + """ + Global identifier of the post. + """ + id: ID! + + """ + Boolean to tell if the post is pinned + """ + isPinned: Boolean +} + +""" +""" +input MutationUpdatePostVoteInput { + """ + Global identifier of the voted post. + """ + postId: ID! + + """ + Type of the vote. + """ + type: PostVoteType! +} + +""" +""" +input MutationUpdateTagFolderInput { + """ + Global identifier of the tag folder. + """ + id: ID! + + """ + Name of the tag folder. + """ + name: String + + """ + Global identifier of associated parent tag folder. + """ + parentFolderId: ID +} + +""" +""" +input MutationUpdateTagInput { + """ + Global identifier of associated tag folder. + """ + folderId: ID + + """ + Global identifier of the tag. + """ + id: ID! + + """ + Name of the tag. + """ + name: String +} + +""" +""" +input MutationUpdateUserInput { + """ + Address line 1 of the user's address. + """ + addressLine1: String + + """ + Address line 2 of the user's address. + """ + addressLine2: String + + """ + Avatar of the user. + """ + avatar: Upload + + """ + Date of birth of the user. + """ + birthDate: Date + + """ + Name of the city where the user resides in. + """ + city: String + + """ + Country code of the country the user is a citizen of. + """ + countryCode: Iso3166Alpha2CountryCode + + """ + Custom information about the user. + """ + description: String + + """ + Primary education grade of the user. + """ + educationGrade: UserEducationGrade + + """ + Email address of the user. + """ + emailAddress: String + + """ + Employment status of the user. + """ + employmentStatus: UserEmploymentStatus + + """ + The phone number to use to communicate with the user at their home. + """ + homePhoneNumber: PhoneNumber + + """ + Global identifier of the user. + """ + id: ID! + + """ + Boolean to tell whether the user has verified their email address. + """ + isEmailAddressVerified: Boolean + + """ + Marital status of the user. + """ + maritalStatus: UserMaritalStatus + + """ + The phone number to use to communicate with the user on their mobile phone. + """ + mobilePhoneNumber: PhoneNumber + + """ + Name of the user. + """ + name: String + + """ + The sex assigned to the user at their birth. + """ + natalSex: UserNatalSex + + """ + Language code of the user's preferred natural language. + """ + naturalLanguageCode: Iso639Set1LanguageCode + + """ + Password of the user to sign in to the application. + """ + password: String + + """ + Postal code of the user. + """ + postalCode: String + + """ + Role assigned to the user in the application. + """ + role: UserRole + + """ + Name of the state the user resides in. + """ + state: String + + """ + The phone number to use to communicate with the user while they're at work. + """ + workPhoneNumber: PhoneNumber +} + +""" +""" +input MutationUpdateVenueInput { + """ + Custom information about the venue. + """ + description: String + + """ + Global identifier of the venue. + """ + id: ID! + + """ + Name of the venue. + """ + name: String +} + +type Organization { + """ + Address line 1 of the organization's address. + """ + addressLine1: String + + """ + Address line 2 of the organization's address. + """ + addressLine2: String + + """ + GraphQL connection to traverse through the advertisements belonging to the organization. + """ + advertisements( + after: String + before: String + first: Int + last: Int + ): OrganizationAdvertisementsConnection + + """ + Mime type of the avatar of the organization. + """ + avatarMimeType: String + + """ + URL to the avatar of the organization. + """ + avatarURL: String + + """ + GraphQL connection to traverse through the chats belonging to the organization. + """ + chats( + after: String + before: String + first: Int + last: Int + ): OrganizationChatsConnection + + """ + Name of the city where the organization exists in. + """ + city: String + + """ + Country code of the country the organization exists in. + """ + countryCode: Iso3166Alpha2CountryCode + + """ + Date time at the time the organization was created. + """ + createdAt: DateTime + + """ + User who created the organization. + """ + creator: User + + """ + Custom information about the organization. + """ + description: String + + """ + GraphQL connection to traverse through the events belonging to the organization. + """ + events( + after: String + before: String + first: Int + last: Int + ): OrganizationEventsConnection + + """ + GraphQL connection to traverse through the funds belonging to the organization. + """ + funds( + after: String + before: String + first: Int + last: Int + ): OrganizationFundsConnection + + """ + Global identifier of the organization. + """ + id: ID! + + """ + GraphQL connection to traverse through the users that are members of the organization. + """ + members( + after: String + before: String + first: Int + last: Int + ): OrganizationMembersConnection + + """ + Name of the organization. + """ + name: String + + """ + GraphQL connection to traverse through the pinned posts belonging to the organization. + """ + pinnedPosts( + after: String + before: String + first: Int + last: Int + ): OrganizationPinnedPostsConnection + + """ + Total number of pinned posts belonging to the organization. + """ + pinnedPostsCount: Int + + """ + Postal code of the organization. + """ + postalCode: String + + """ + GraphQL connection to traverse through the posts belonging to the organization. + """ + posts( + after: String + before: String + first: Int + last: Int + ): OrganizationPostsConnection + + """ + Total number of posts belonging to the organization. + """ + postsCount: Int + + """ + Name of the state the organization exists in. + """ + state: String + + """ + GraphQL connection to traverse through the tag folders belonging to the organization. + """ + tagFolders( + after: String + before: String + first: Int + last: Int + ): OrganizationTagFoldersConnection + + """ + GraphQL connection to traverse through the tags belonging to the organization. + """ + tags( + after: String + before: String + first: Int + last: Int + ): OrganizationTagsConnection + + """ + Date time at the time the organization was last updated. + """ + updatedAt: DateTime + + """ + User who last updated the organization. + """ + updater: User + + """ + GraphQL connection to traverse through the venues belonging to the organization. + """ + venues( + after: String + before: String + first: Int + last: Int + ): OrganizationVenuesConnection +} + +""" +""" +type OrganizationAdvertisementsConnection { + edges: [OrganizationAdvertisementsConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type OrganizationAdvertisementsConnectionEdge { + cursor: String! + node: Advertisement +} + +""" +""" +type OrganizationChatsConnection { + edges: [OrganizationChatsConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type OrganizationChatsConnectionEdge { + cursor: String! + node: Chat +} + +""" +""" +type OrganizationEventsConnection { + edges: [OrganizationEventsConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type OrganizationEventsConnectionEdge { + cursor: String! + node: Event +} + +""" +""" +type OrganizationFundsConnection { + edges: [OrganizationFundsConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type OrganizationFundsConnectionEdge { + cursor: String! + node: Fund +} + +""" +""" +type OrganizationMembersConnection { + edges: [OrganizationMembersConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type OrganizationMembersConnectionEdge { + cursor: String! + node: User +} + +""" +Possible variants of the role assigned to a user within an organization. +""" +enum OrganizationMembershipRole { + administrator + regular +} + +""" +""" +type OrganizationPinnedPostsConnection { + edges: [OrganizationPinnedPostsConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type OrganizationPinnedPostsConnectionEdge { + cursor: String! + node: Post +} + +""" +""" +type OrganizationPostsConnection { + edges: [OrganizationPostsConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type OrganizationPostsConnectionEdge { + cursor: String! + node: Post +} + +""" +""" +type OrganizationTagFoldersConnection { + edges: [OrganizationTagFoldersConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type OrganizationTagFoldersConnectionEdge { + cursor: String! + node: TagFolder +} + +""" +""" +type OrganizationTagsConnection { + edges: [OrganizationTagsConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type OrganizationTagsConnectionEdge { + cursor: String! + node: Tag +} + +""" +""" +type OrganizationVenuesConnection { + edges: [OrganizationVenuesConnectionEdge] + pageInfo: PageInfo! +} + +""" +""" +type OrganizationVenuesConnectionEdge { + cursor: String! + node: Venue +} + +type PageInfo { + endCursor: String + hasNextPage: Boolean! + hasPreviousPage: Boolean! + startCursor: String +} + +""" +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. +""" +scalar PhoneNumber + +type Post { + """ + Array of attachments. + """ + attachments: [PostAttachment!] + + """ + Caption for the post. + """ + caption: String + + """ + GraphQL connection to traverse through the comments created under the post. + """ + comments( + after: String + before: String + first: Int + last: Int + ): PostCommentsConnection + + """ + Total number of comments created under the post. + """ + commentsCount: Int + + """ + Date time at the time the post was created. + """ + createdAt: DateTime + + """ + User who created the post. + """ + creator: User + + """ + GraphQL connection to traverse through the users that down voted the post. + """ + downVoters( + after: String + before: String + first: Int + last: Int + ): PostDownVotersConnection + + """ + Total number of down votes on the post. + """ + downVotesCount: Int + + """ + Global identifier of the post. + """ + id: ID! + + """ + Organization which the post belongs to. + """ + organization: Organization + + """ + Date time at the time the post was pinned. + """ + pinnedAt: DateTime + + """ + GraphQL connection to traverse through the user that up voted the post. + """ + upVoters( + after: String + before: String + first: Int + last: Int + ): PostUpVotersConnection + + """ + Total number of up votes on the post. + """ + upVotesCount: Int + + """ + Date time at the time the post was last updated. + """ + updatedAt: DateTime + + """ + User who last updated the post. + """ + updater: User +} + +type PostAttachment { + """ + Mime type of the attachment. + """ + mimeType: String + + """ + URL to the attachment. + """ + url: String } -enum AdvertisementType { - BANNER - MENU - POPUP +""" +""" +type PostCommentsConnection { + edges: [PostCommentsConnectionEdge] + pageInfo: PageInfo! } -type AdvertisementEdge { - cursor: String - node: Advertisement +""" +""" +type PostCommentsConnectionEdge { + cursor: String! + node: Comment } -type AdvertisementsConnection { - edges: [AdvertisementEdge] - pageInfo: DefaultConnectionPageInfo - totalCount: Int +""" +""" +type PostDownVotersConnection { + edges: [PostDownVotersConnectionEdge] + pageInfo: PageInfo! } -type AgendaCategory { - _id: ID! - createdAt: Date! - createdBy: User! - description: String - name: String! - organization: Organization! - updatedAt: Date - updatedBy: User +""" +""" +type PostDownVotersConnectionEdge { + cursor: String! + node: User } -type AggregatePost { - count: Int! +""" +""" +type PostUpVotersConnection { + edges: [PostUpVotersConnectionEdge] + pageInfo: PageInfo! } -type AggregateUser { - count: Int! +""" +""" +type PostUpVotersConnectionEdge { + cursor: String! + node: User } -scalar Any - -type AppUserProfile { - _id: ID! - adminFor: [Organization] - appLanguageCode: String! - createdEvents: [Event] - createdOrganizations: [Organization] - eventAdmin: [Event] - isSuperAdmin: Boolean! - pluginCreationAllowed: Boolean! - userId: User! +""" +Possible variants of the type of a vote on a post. +""" +enum PostVoteType { + down_vote + up_vote } -type AuthData { - accessToken: String! - appUserProfile: AppUserProfile! - refreshToken: String! - user: User! -} +type Query { + """ + Query field to read an advertisement. + """ + advertisement(input: QueryAdvertisementInput!): Advertisement -type CheckIn { - _id: ID! - allotedRoom: String - allotedSeat: String - createdAt: DateTime! - event: Event! - feedbackSubmitted: Boolean! - time: DateTime! - updatedAt: DateTime! - user: User! -} + """ + Query field to read an agenda folder. + """ + agendaFolder(input: QueryAgendaFolderInput!): AgendaFolder -input CheckInInput { - allotedRoom: String - allotedSeat: String - eventId: ID! - userId: ID! -} + """ + Query field to read an agenda item. + """ + agendaItem(input: QueryAgendaItemInput!): AgendaItem -type CheckInStatus { - _id: ID! - checkIn: CheckIn - user: User! -} + """ + Query field to read a chat. + """ + chat(input: QueryChatInput!): Chat -type Comment { - _id: ID! - createdAt: DateTime! - creator: User - likeCount: Int - likedBy: [User] - post: Post! - text: String! - updatedAt: DateTime! -} + """ + Query field to read a chat message. + """ + chatMessage(input: QueryChatMessageInput!): ChatMessage -input CommentInput { - text: String! -} + """ + Query field to read a comment. + """ + comment(input: QueryCommentInput!): Comment -type Community { - _id: ID! - logoUrl: String - name: String! - socialMediaUrls: SocialMediaUrls - timeout: Int - websiteLink: String -} + """ + Query field to read the community. + """ + community: Community -union ConnectionError = InvalidCursor | MaximumValueError + """ + Query field to read a user. + """ + currentUser: User -type ConnectionPageInfo { - endCursor: String - hasNextPage: Boolean! - hasPreviousPage: Boolean! - startCursor: String -} + """ + Query field to read an event. + """ + event(input: QueryEventInput!): Event -scalar CountryCode + """ + Query field to read a fund. + """ + fund(input: QueryFundInput!): Fund -input CreateActionItemInput { - assigneeId: ID! - dueDate: Date - eventId: ID - preCompletionNotes: String -} + """ + Query field to read a fund campaign. + """ + fundCampaign(input: QueryFundCampaignInput!): FundCampaign -input CreateAgendaCategoryInput { - description: String - name: String! - organizationId: ID! -} + """ + Query field to read a fund campaign pledge. + """ + fundCampaignPledge(input: QueryFundCampaignPledgeInput!): FundCampaignPledge -input CreateUserTagInput { - name: String! - organizationId: ID! - parentTagId: ID -} + """ + Query field to read an organization. + """ + organization(input: QueryOrganizationInput!): Organization -input CursorPaginationInput { - cursor: String - direction: PaginationDirection! - limit: PositiveInt! -} + """ + Query field to read a post. + """ + post(input: QueryPostInput!): Post -scalar Date + """ + Query field to renew the authentication token of an authenticated client for signing in to talawa. + """ + renewAuthenticationToken: String -scalar DateTime + """ + Query field for a client to sign in to talawa. + """ + signIn(input: QuerySignInInput!): AuthenticationPayload -type DeletePayload { - success: Boolean! -} - -type Donation { - _id: ID! - amount: Float! - createdAt: DateTime! - nameOfOrg: String! - nameOfUser: String! - orgId: ID! - payPalId: String! - updatedAt: DateTime! - userId: ID! -} - -input DonationWhereInput { - id: ID - id_contains: ID - id_in: [ID!] - id_not: ID - id_not_in: [ID!] - id_starts_with: ID - name_of_user: String - name_of_user_contains: String - name_of_user_in: [String!] - name_of_user_not: String - name_of_user_not_in: [String!] - name_of_user_starts_with: String -} - -enum EducationGrade { - GRADE_1 - GRADE_2 - GRADE_3 - GRADE_4 - GRADE_5 - GRADE_6 - GRADE_7 - GRADE_8 - GRADE_9 - GRADE_10 - GRADE_11 - GRADE_12 - GRADUATE - KG - NO_GRADE - PRE_KG -} - -scalar EmailAddress - -enum EmploymentStatus { - FULL_TIME - PART_TIME - UNEMPLOYED -} - -interface Error { - message: String! -} + """ + Query field to read a tag. + """ + tag(input: QueryTagInput!): Tag -type Event { - _id: ID! - actionItems: [ActionItem] - admins(adminId: ID): [User!] - allDay: Boolean! - attendees: [User] - attendeesCheckInStatus: [CheckInStatus!]! - averageFeedbackScore: Float - createdAt: DateTime! - creator: User - description: String! - endDate: Date - endTime: Time - feedback: [Feedback!]! - isPublic: Boolean! - isRegisterable: Boolean! - latitude: Latitude - location: String - longitude: Longitude - organization: Organization - recurrance: Recurrance - recurring: Boolean! - startDate: Date! - startTime: Time - status: Status! - title: String! - updatedAt: DateTime! -} + """ + Query field to read a tag folder. + """ + tagFolder(input: QueryTagFolderInput!): TagFolder -input EventAttendeeInput { - eventId: ID! - userId: ID! -} - -input EventInput { - allDay: Boolean! - description: String! - endDate: Date - endTime: Time - isPublic: Boolean! - isRegisterable: Boolean! - latitude: Latitude - location: String - longitude: Longitude - organizationId: ID! - recurrance: Recurrance - recurring: Boolean! - startDate: Date! - startTime: Time - title: String! -} - -enum EventOrderByInput { - allDay_ASC - allDay_DESC - description_ASC - description_DESC - endDate_ASC - endDate_DESC - endTime_ASC - endTime_DESC - id_ASC - id_DESC - location_ASC - location_DESC - recurrance_ASC - recurrance_DESC - startDate_ASC - startDate_DESC - startTime_ASC - startTime_DESC - title_ASC - title_DESC -} - -type EventVolunteer { - _id: ID! - createdAt: DateTime! - creator: User - event: Event - isAssigned: Boolean - isInvited: Boolean - response: String - updatedAt: DateTime! - user: User! -} + """ + Query field to read a user. + """ + user(input: QueryUserInput!): User -input EventVolunteerInput { - eventId: ID! - userId: ID! + """ + Query field to read a venue. + """ + venue(input: QueryVenueInput!): Venue } -enum EventVolunteerResponse { - NO - YES +""" +""" +input QueryAdvertisementInput { + """ + Global id of the advertisement. + """ + id: String! } -input EventWhereInput { - description: String - description_contains: String - description_in: [String!] - description_not: String - description_not_in: [String!] - description_starts_with: String - id: ID - id_contains: ID - id_in: [ID!] - id_not: ID - id_not_in: [ID!] - id_starts_with: ID - location: String - location_contains: String - location_in: [String!] - location_not: String - location_not_in: [String!] - location_starts_with: String - organization_id: ID - title: String - title_contains: String - title_in: [String!] - title_not: String - title_not_in: [String!] - title_starts_with: String -} - -type ExtendSession { - accessToken: String! - refreshToken: String! -} - -type Feedback { - _id: ID! - createdAt: DateTime! - event: Event! - rating: Int! - review: String - updatedAt: DateTime! -} - -input FeedbackInput { - eventId: ID! - rating: Int! - review: String +""" +""" +input QueryAgendaFolderInput { + """ + Global id of the agenda folder. + """ + id: String! } -interface FieldError { - message: String! - path: [String!]! +""" +""" +input QueryAgendaItemInput { + """ + Global id of the agenda item. + """ + id: String! } -input ForgotPasswordData { - newPassword: String! - otpToken: String! - userOtp: String! +""" +""" +input QueryChatInput { + """ + Global id of the chat. + """ + id: String! } -enum Frequency { - DAILY - MONTHLY - WEEKLY - YEARLY +""" +""" +input QueryChatMessageInput { + """ + Global id of the chat message. + """ + id: String! } -enum Gender { - FEMALE - MALE - OTHER +""" +""" +input QueryCommentInput { + """ + Global id of the comment. + """ + id: String! } -type Group { - _id: ID! - admins: [User!]! - createdAt: DateTime! - description: String - organization: Organization! - title: String! - updatedAt: DateTime! +""" +""" +input QueryEventInput { + """ + Global id of the event. + """ + id: String! } -type InvalidCursor implements FieldError { - message: String! - path: [String!]! +""" +""" +input QueryFundCampaignInput { + """ + Global id of the fund campaign. + """ + id: String! } -scalar JSON - -type Language { - _id: ID! - createdAt: String! - en: String! - translation: [LanguageModel] +""" +""" +input QueryFundCampaignPledgeInput { + """ + Global id of the fund campaign pledge. + """ + id: String! } -input LanguageInput { - en_value: String! - translation_lang_code: String! - translation_value: String! +""" +""" +input QueryFundInput { + """ + Global id of the fund. + """ + id: String! } -type LanguageModel { - _id: ID! - createdAt: DateTime! - lang_code: String! - value: String! - verified: Boolean! +""" +""" +input QueryOrganizationInput { + """ + Global id of the organization. + """ + id: String! } -scalar Latitude - -input LoginInput { - email: String! - password: String! +""" +""" +input QueryPostInput { + """ + Global id of the post. + """ + id: String! } -scalar Longitude +""" +""" +input QuerySignInInput { + """ + Email address of the user. + """ + emailAddress: String! -enum MaritalStatus { - DIVORCED - ENGAGED - MARRIED - SEPERATED - SINGLE - WIDOWED + """ + Password of the user to sign in to talawa. + """ + password: String! } -type Chat { - _id: ID! - isGroup: Boolean! - name: String - createdAt: DateTime! - creator: User - messages: [ChatMessage] - organization: Organization - updatedAt: DateTime! - users: [User!]! - admins: [User] - lastMessageId: String +""" +""" +input QueryTagFolderInput { + """ + Global id of the tag folder. + """ + id: String! } -type ChatMessage { - _id: ID! - createdAt: DateTime! - chatMessageBelongsTo: Chat! - messageContent: String! - type: String! - replyTo: ChatMessage - sender: User! - deletedBy: [User] - updatedAt: DateTime! +""" +""" +input QueryTagInput { + """ + Global id of the tag. + """ + id: String! } -type MaximumLengthError implements FieldError { - message: String! - path: [String!]! +""" +""" +input QueryUserInput { + """ + Global id of the user. + """ + id: String! } -type MaximumValueError implements FieldError { - limit: Int! - message: String! - path: [String!]! +""" +""" +input QueryVenueInput { + """ + Global id of the venue. + """ + id: String! } -type MembershipRequest { - _id: ID! - organization: Organization! - user: User! +type Subscription { + """ + Subscription field to subscribe to the event of creation of a message in a chat. + """ + chatMessageCreate(input: SubscriptionChatMessageCreateInput!): ChatMessage } -type MinimumLengthError implements FieldError { - limit: Int! - message: String! - path: [String!]! +""" +""" +input SubscriptionChatMessageCreateInput { + """ + Global identifier of the chat. + """ + id: String! } -type MinimumValueError implements FieldError { - message: String! - path: [String!]! -} +type Tag { + """ + GraphQL connection to traverse through the users that are assignees of the tag. + """ + assignees( + after: String + before: String + first: Int + last: Int + ): TagAssigneesConnection + """ + Date time at the time the tag was created. + """ + createdAt: DateTime -input CreateAdvertisementInput { - endDate: Date! - name: String! - organizationId: ID! - startDate: Date! - type: AdvertisementType! - mediaFile: String! -} + """ + User who created the tag. + """ + creator: User -type CreateAdvertisementPayload { - advertisement: Advertisement -} + """ + Tag folder the tag is contained within. + """ + folder: TagFolder -input EditVenueInput { - capacity: Int - description: String - file: String + """ + Global identifier of the tag. + """ id: ID! + + """ + Name of the tag. + """ name: String -} -type Mutation { - acceptMembershipRequest(membershipRequestId: ID!): MembershipRequest! - addEventAttendee(data: EventAttendeeInput!): User! - addFeedback(data: FeedbackInput!): Feedback! - addLanguageTranslation(data: LanguageInput!): Language! - addOrganizationCustomField( - name: String! - organizationId: ID! - type: String! - ): OrganizationCustomField! - addOrganizationImage(file: String!, organizationId: String!): Organization! - addUserCustomData( - dataName: String! - dataValue: Any! - organizationId: ID! - ): UserCustomData! - addUserImage(file: String!): User! - addUserToUserFamily(familyId: ID!, userId: ID!): UserFamily! - adminRemoveEvent(eventId: ID!): Event! - assignUserTag(input: ToggleUserTagAssignInput!): User - blockPluginCreationBySuperadmin( - blockUser: Boolean! - userId: ID! - ): AppUserProfile! - blockUser(organizationId: ID!, userId: ID!): User! - cancelMembershipRequest(membershipRequestId: ID!): MembershipRequest! - checkIn(data: CheckInInput!): CheckIn! - createActionItem( - actionItemCategoryId: ID! - data: CreateActionItemInput! - ): ActionItem! - createActionItemCategory( - isDisabled: Boolean! - name: String! - organizationId: ID! - ): ActionItemCategory! - createAdmin(data: UserAndOrganizationInput!): AppUserProfile! - createAdvertisement( - endDate: Date! - link: String! - name: String! - orgId: ID! - startDate: Date! - type: String! - ): Advertisement! - createAgendaCategory(input: CreateAgendaCategoryInput!): AgendaCategory! - createComment(data: CommentInput!, postId: ID!): Comment - createChat(data: chatInput!): Chat! - createDonation( - amount: Float! - nameOfOrg: String! - nameOfUser: String! - orgId: ID! - payPalId: ID! - userId: ID! - ): Donation! - createEvent( - data: EventInput! - recurrenceRuleData: RecurrenceRuleInput - ): Event! - createEventVolunteer(data: EventVolunteerInput!): EventVolunteer! - createMember(input: UserAndOrganizationInput!): Organization! - createOrganization(data: OrganizationInput, file: String): Organization! - createPlugin( - pluginCreatedBy: String! - pluginDesc: String! - pluginName: String! - uninstalledOrgs: [ID!] - ): Plugin! - createPost(data: PostInput!, file: String): Post - createSampleOrganization: Boolean! - createUserFamily(data: createUserFamilyInput!): UserFamily! - createUserTag(input: CreateUserTagInput!): UserTag - createVenue(data: VenueInput!): Venue - deleteAdvertisement(id: ID!): DeletePayload! - deleteAdvertisementById(id: ID!): DeletePayload! - deleteAgendaCategory(id: ID!): ID! - deleteDonationById(id: ID!): DeletePayload! - deleteVenue(id: ID!): Venue - editVenue(data: EditVenueInput!): Venue - forgotPassword(data: ForgotPasswordData!): Boolean! - joinPublicOrganization(organizationId: ID!): User! - leaveOrganization(organizationId: ID!): User! - likeComment(id: ID!): Comment - likePost(id: ID!): Post - logout: Boolean! - otp(data: OTPInput!): OtpData! - recaptcha(data: RecaptchaVerification!): Boolean! - refreshToken(refreshToken: String!): ExtendSession! - registerForEvent(id: ID!): Event! - rejectMembershipRequest(membershipRequestId: ID!): MembershipRequest! - removeActionItem(id: ID!): ActionItem! - removeAdmin(data: UserAndOrganizationInput!): AppUserProfile! - removeAdvertisement(id: ID!): Advertisement - removeComment(id: ID!): Comment - removeEvent(id: ID!): Event! - removeEventAttendee(data: EventAttendeeInput!): User! - removeEventVolunteer(id: ID!): EventVolunteer! - removeMember(data: UserAndOrganizationInput!): Organization! - removeOrganization(id: ID!): UserData! - removeOrganizationCustomField( - customFieldId: ID! - organizationId: ID! - ): OrganizationCustomField! - removeOrganizationImage(organizationId: String!): Organization! - removePost(id: ID!): Post - removeSampleOrganization: Boolean! - removeUserCustomData(organizationId: ID!): UserCustomData! - removeUserFamily(familyId: ID!): UserFamily! - removeUserFromUserFamily(familyId: ID!, userId: ID!): UserFamily! - removeUserImage: User! - removeUserTag(id: ID!): UserTag - revokeRefreshTokenForUser: Boolean! - saveFcmToken(token: String): Boolean! - sendMembershipRequest(organizationId: ID!): MembershipRequest! - sendMessageToChat(chatId: ID!, messageContent: String!, type: String!, replyTo: ID): ChatMessage! - signUp(input: UserInput!, file: String): AuthData! - togglePostPin(id: ID!, title: String): Post! - unassignUserTag(input: ToggleUserTagAssignInput!): User - unblockUser(organizationId: ID!, userId: ID!): User! - unlikeComment(id: ID!): Comment - unlikePost(id: ID!): Post - unregisterForEventByUser(id: ID!): Event! - updateActionItem(data: UpdateActionItemInput!, id: ID!): ActionItem - updateActionItemCategory( - data: UpdateActionItemCategoryInput! - id: ID! - ): ActionItemCategory - updateAdvertisement( - input: UpdateAdvertisementInput! - ): UpdateAdvertisementPayload - updateAgendaCategory( - id: ID! - input: UpdateAgendaCategoryInput! - ): AgendaCategory - updateEvent(data: UpdateEventInput, id: ID!): Event! - updateEventVolunteer( - data: UpdateEventVolunteerInput - id: ID! - ): EventVolunteer! - updateLanguage(languageCode: String!): User! - updateOrganization( - data: UpdateOrganizationInput - file: String - id: ID! - ): Organization! - updatePluginStatus(id: ID!, orgId: ID!): Plugin! - updatePost(data: PostUpdateInput, id: ID!): Post! - updateSessionTimeout(timeout: Int!): Boolean! - updateUserPassword(data: UpdateUserPasswordInput!): UserData! - updateUserProfile(data: UpdateUserInput, file: String): User! - updateUserRoleInOrganization( - organizationId: ID! - role: String! - userId: ID! - ): Organization! - updateUserTag(input: UpdateUserTagInput!): UserTag - updateUserType(data: UpdateUserTypeInput!): Boolean! - venues: [Venue] -} - -input OTPInput { - email: EmailAddress! -} + """ + Organization the tag belong to. + """ + organization: Organization -type Organization { - _id: ID! - actionItemCategories: [ActionItemCategory] - address: Address - admins(adminId: ID): [User!] - agendaCategories: [AgendaCategory] - apiUrl: URL! - blockedUsers: [User] - createdAt: DateTime! - creator: User - customFields: [OrganizationCustomField!]! - description: String! - image: String - members: [User] - membershipRequests: [MembershipRequest] - name: String! - pinnedPosts: [Post] - updatedAt: DateTime! - userRegistrationRequired: Boolean! - userTags( - after: String - before: String - first: PositiveInt - last: PositiveInt - ): UserTagsConnection - visibleInSearch: Boolean! - venues: [Venue] -} + """ + Date time at the time the tag was last updated. + """ + updatedAt: DateTime -type OrganizationCustomField { - _id: ID! - name: String! - organizationId: String! - type: String! + """ + User who last updated the tag. + """ + updater: User } - -type OrganizationInfoNode { - _id: ID! - apiUrl: URL! - creator: User - description: String! - image: String - name: String! - userRegistrationRequired: Boolean! - visibleInSearch: Boolean! +""" +""" +type TagAssigneesConnection { + edges: [TagAssigneesConnectionEdge] + pageInfo: PageInfo! } -type AuthenticationPayload { - authenticationToken: String, - user: User -} -input OrganizationInput { - address: AddressInput! - apiUrl: URL - attendees: String - description: String! - image: String - name: String! - userRegistrationRequired: Boolean - visibleInSearch: Boolean -} - -enum OrganizationOrderByInput { - apiUrl_ASC - apiUrl_DESC - createdAt_ASC - createdAt_DESC - description_ASC - description_DESC - id_ASC - id_DESC - name_ASC - name_DESC -} - -input OrganizationWhereInput { - apiUrl: URL - apiUrl_contains: URL - apiUrl_in: [URL!] - apiUrl_not: URL - apiUrl_not_in: [URL!] - apiUrl_starts_with: URL - description: String - description_contains: String - description_in: [String!] - description_not: String - description_not_in: [String!] - description_starts_with: String - id: ID - id_contains: ID - id_in: [ID!] - id_not: ID - id_not_in: [ID!] - id_starts_with: ID - name: String - name_contains: String - name_in: [String!] - name_not: String - name_not_in: [String!] - name_starts_with: String - userRegistrationRequired: Boolean - visibleInSearch: Boolean +""" +""" +type TagAssigneesConnectionEdge { + cursor: String! + node: User } -type OtpData { - otpToken: String! -} +type TagFolder { + """ + GraphQL connection to traverse through the tag folders contained within the tag folder. + """ + childFolders( + after: String + before: String + first: Int + last: Int + ): TagFolderChildFoldersConnection + + """ + Date time at the time the tag folder was created. + """ + createdAt: DateTime -""" -Information about pagination in a connection. -""" -type PageInfo { - currPageNo: Int + """ + User who created the tag folder. + """ + creator: User """ - When paginating forwards, are there more items? + Global identifier of the tag folder. """ - hasNextPage: Boolean! + id: ID! """ - When paginating backwards, are there more items? + Name of the tag folder. """ - hasPreviousPage: Boolean! - nextPageNo: Int - prevPageNo: Int - totalPages: Int -} + name: String -enum PaginationDirection { - BACKWARD - FORWARD -} + """ + Organization which the tag folder belongs to. + """ + organization: Organization -scalar PhoneNumber + """ + Tag folder the tag folder is contained within. + """ + parentFolder: TagFolder -type Plugin { - _id: ID! - pluginCreatedBy: String! - pluginDesc: String! - pluginName: String! - uninstalledOrgs: [ID!] -} + """ + GraphQL connection to traverse through the tags contained within the tag folder. + """ + tags( + after: String + before: String + first: Int + last: Int + ): TagFolderTagsConnection -type PluginField { - createdAt: DateTime! - key: String! - status: Status! - value: String! + """ + Date time at the time the tag folder was last updated. + """ + updatedAt: DateTime + + """ + User who last updated the tag folder. + """ + updater: User } -input PluginFieldInput { - key: String! - value: String! +""" +""" +type TagFolderChildFoldersConnection { + edges: [TagFolderChildFoldersConnectionEdge] + pageInfo: PageInfo! } -input PluginInput { - fields: [PluginFieldInput] - orgId: ID! - pluginKey: String - pluginName: String! - pluginType: Type +""" +""" +type TagFolderChildFoldersConnectionEdge { + cursor: String! + node: TagFolder } -scalar PositiveInt +""" +""" +type TagFolderTagsConnection { + edges: [TagFolderTagsConnectionEdge] + pageInfo: PageInfo! +} -type Post { - _id: ID - commentCount: Int - comments: [Comment] - createdAt: DateTime! - creator: User - imageUrl: URL - likeCount: Int - likedBy: [User] - organization: Organization! - pinned: Boolean - text: String! - title: String - updatedAt: DateTime! - videoUrl: URL +""" +""" +type TagFolderTagsConnectionEdge { + cursor: String! + node: Tag } """ -A connection to a list of items. +The `Upload` scalar type represents a file upload. """ -type PostConnection { - aggregate: AggregatePost! +scalar Upload +type User { """ - A list of edges. + Address line 1 of the user's address. """ - edges: [Post]! + addressLine1: String """ - Information to aid in pagination. + Address line 2 of the user's address. """ - pageInfo: PageInfo! -} + addressLine2: String -input PostInput { - _id: ID - imageUrl: URL - organizationId: ID! - pinned: Boolean - text: String! - title: String - videoUrl: URL -} - -enum PostOrderByInput { - commentCount_ASC - commentCount_DESC - createdAt_ASC - createdAt_DESC - id_ASC - id_DESC - imageUrl_ASC - imageUrl_DESC - likeCount_ASC - likeCount_DESC - text_ASC - text_DESC - title_ASC - title_DESC - videoUrl_ASC - videoUrl_DESC -} - -input PostUpdateInput { - imageUrl: String - text: String - title: String - videoUrl: String -} - -input PostWhereInput { - id: ID - id_contains: ID - id_in: [ID!] - id_not: ID - id_not_in: [ID!] - id_starts_with: ID - text: String - text_contains: String - text_in: [String!] - text_not: String - text_not_in: [String!] - text_starts_with: String - title: String - title_contains: String - title_in: [String!] - title_not: String - title_not_in: [String!] - title_starts_with: String -} + """ + Mime type of the avatar of the user. + """ + avatarMimeType: String -type Query { - signIn(input: LoginInput!) : AuthenticationPayload - actionItem(id: ID!): ActionItem - actionItemCategoriesByOrganization(organizationId: ID!): [ActionItemCategory] - actionItemCategory(id: ID!): ActionItemCategory - actionItemsByEvent(eventId: ID!): [ActionItem] - actionItemsByOrganization(organizationId: ID!): [ActionItem] - adminPlugin(orgId: ID!): [Plugin] - agendaCategory(id: ID!): AgendaCategory! - currentUser: User! - customDataByOrganization(organizationId: ID!): [UserCustomData!]! - customFieldsByOrganization(id: ID!): [OrganizationCustomField] - chatById(id: ID!): Chat! - chatsByUserId(id: ID!): [Chat] - event(id: ID!): Event - eventsAttendedByUser(id: ID, orderBy: EventOrderByInput): [Event] - eventVolunteersByEvent(id: ID!): [EventVolunteer] - eventsByOrganization(id: ID, orderBy: EventOrderByInput): [Event] - eventsByOrganizationConnection( - first: Int - orderBy: EventOrderByInput - skip: Int - where: EventWhereInput - ): [Event!]! - advertisementsConnection(after: String, before: String, first: PositiveInt, last: PositiveInt): AdvertisementsConnection - getDonationById(id: ID!): Donation! - getDonationByOrgId(orgId: ID!): [Donation] - getDonationByOrgIdConnection( - first: Int - orgId: ID! - skip: Int - where: DonationWhereInput - ): [Donation!]! - getPlugins: [Plugin] - getlanguage(lang_code: String!): [Translation] - hasSubmittedFeedback(eventId: ID!, userId: ID!): Boolean - isSampleOrganization(id: ID!): Boolean! - joinedOrganizations(id: ID): [Organization] - me: UserData! - myLanguage: String - fundsByOrganization(organizationId: ID!, where: FundWhereInput): [Fund] - organizations(id: ID, orderBy: OrganizationOrderByInput): [Organization] - organizationsConnection( - first: Int - orderBy: OrganizationOrderByInput - skip: Int - where: OrganizationWhereInput - ): [Organization]! - organizationsMemberConnection( - first: Int - orderBy: UserOrderByInput - orgId: ID! - skip: Int - where: UserWhereInput - ): UserConnection! - plugin(orgId: ID!): [Plugin] - getRecurringEvents(baseRecurringEventId: ID!): [Event] - post(id: ID!): Post - postsByOrganization(id: ID!, orderBy: PostOrderByInput): [Post] - postsByOrganizationConnection( - first: Int - id: ID! - orderBy: PostOrderByInput - skip: Int - where: PostWhereInput - ): PostConnection - registeredEventsByUser(id: ID, orderBy: EventOrderByInput): [Event] - registrantsByEvent(id: ID!): [User] - user(id: ID!): UserData! - userLanguage(userId: ID!): String - users( - first: Int - orderBy: UserOrderByInput - skip: Int - where: UserWhereInput - ): [UserData] - usersConnection( - first: Int - orderBy: UserOrderByInput - skip: Int - where: UserWhereInput - ): [UserData]! - venue(id:ID!):[Venue] -} + """ + URL to the avatar of the user. + """ + avatarURL: String -input RecaptchaVerification { - recaptchaToken: String! -} + """ + Date of birth of the user. + """ + birthDate: Date -enum Recurrance { - DAILY - MONTHLY - ONCE - WEEKLY - YEARLY -} + """ + Name of the city where the user resides in. + """ + city: String -input RecurrenceRuleInput { - count: Int - frequency: Frequency - weekDays: [WeekDays] -} + """ + Country code of the country the user is a citizen of. + """ + countryCode: Iso3166Alpha2CountryCode -enum Status { - ACTIVE - BLOCKED - DELETED -} + """ + Date time at the time the user was created. + """ + createdAt: DateTime -type Subscription { - messageSentToChat(userId: ID!): ChatMessage - onPluginUpdate: Plugin -} + """ + User who created the user. + """ + creator: User -scalar Time + """ + Custom information about the user. + """ + description: String -input ToggleUserTagAssignInput { - tagId: ID! - userId: ID! -} + """ + Primary education grade of the user. + """ + educationGrade: UserEducationGrade -type Translation { - en_value: String - lang_code: String - translation: String - verified: Boolean -} + """ + Email address of the user. + """ + emailAddress: String -enum Type { - PRIVATE - UNIVERSAL -} + """ + Employment status of the user. + """ + employmentStatus: UserEmploymentStatus -scalar URL + """ + The phone number to use to communicate with the user at their home. + """ + homePhoneNumber: PhoneNumber -type UnauthenticatedError implements Error { - message: String! -} + """ + Global identifier of the user. + """ + id: ID! -type UnauthorizedError implements Error { - message: String! -} + """ + Boolean to tell whether the user has verified their email address. + """ + isEmailAddressVerified: Boolean -input UpdateActionItemCategoryInput { - isDisabled: Boolean - name: String -} + """ + Marital status of the user. + """ + maritalStatus: UserMaritalStatus -input UpdateActionItemInput { - assigneeId: ID - completionDate: Date - dueDate: Date - isCompleted: Boolean - postCompletionNotes: String - preCompletionNotes: String -} + """ + The phone number to use to communicate with the user on their mobile phone. + """ + mobilePhoneNumber: PhoneNumber -input UpdateAdvertisementInput { - _id: ID! - endDate: Date - link: String + """ + Name of the user. + """ name: String - startDate: Date - type: AdvertisementType -} -type UpdateAdvertisementPayload { - advertisement: Advertisement -} + """ + The sex assigned to the user at their birth. + """ + natalSex: UserNatalSex -input UpdateAgendaCategoryInput { - description: String - name: String -} + """ + Language code of the user's preferred natural language. + """ + naturalLanguageCode: Iso639Set1LanguageCode -input UpdateEventInput { - allDay: Boolean - description: String - endDate: Date - endTime: Time - isPublic: Boolean - isRegisterable: Boolean - latitude: Latitude - location: String - longitude: Longitude - recurrance: Recurrance - recurring: Boolean - startDate: Date - startTime: Time - title: String -} - -input UpdateEventVolunteerInput { - eventId: ID - isAssigned: Boolean - isInvited: Boolean - response: EventVolunteerResponse -} - -input UpdateOrganizationInput { - address: AddressInput - description: String - name: String - userRegistrationRequired: Boolean - visibleInSearch: Boolean -} + """ + GraphQL connection to traverse through the organizations the user is a member of. + """ + organizationsWhereMember( + after: String + before: String + first: Int + last: Int + ): UserOrganizationsWhereMemberConnection -input AddressInput { - city: String - countryCode: String - dependentLocality: String - line1: String - line2: String + """ + Postal code of the user. + """ postalCode: String - sortingCode: String - state: String -} -enum EducationGrade { - GRADE_1 - GRADE_2 - GRADE_3 - GRADE_4 - GRADE_5 - GRADE_6 - GRADE_7 - GRADE_8 - GRADE_9 - GRADE_10 - GRADE_11 - GRADE_12 - GRADUATE - KG - NO_GRADE - PRE_KG -} - -enum EmploymentStatus { - FULL_TIME - PART_TIME - UNEMPLOYED -} - -enum Gender { - FEMALE - MALE - OTHER -} - -enum MaritalStatus { - DIVORCED - ENGAGED - MARRIED - SEPERATED - SINGLE - WIDOWED -} - -input UpdateUserInput { - address: AddressInput - birthDate: Date - educationGrade: EducationGrade - email: EmailAddress - employmentStatus: EmploymentStatus - firstName: String - gender: Gender - lastName: String - maritalStatus: MaritalStatus - phone: UserPhoneInput -} - -input UpdateUserPasswordInput { - confirmNewPassword: String! - newPassword: String! - previousPassword: String! -} + """ + Role assigned to the user in the application. + """ + role: UserRole -input UpdateUserTagInput { - _id: ID! - name: String! -} + """ + Name of the state the user resides in. + """ + state: String -input UpdateUserTypeInput { - id: ID - userType: String -} + """ + Date time at the time the user was last updated. + """ + updatedAt: DateTime -scalar Upload + """ + User who last updated the user. + """ + updater: User -type User { - _id: ID! - address: Address - appUserProfileId: AppUserProfile - birthDate: Date - createdAt: DateTime! - educationGrade: EducationGrade - email: EmailAddress! - employmentStatus: EmploymentStatus - firstName: String! - gender: Gender - image: String - joinedOrganizations: [Organization] - lastName: String! - maritalStatus: MaritalStatus - membershipRequests: [MembershipRequest] - organizationsBlockedBy: [Organization] - phone: UserPhone - pluginCreationAllowed: Boolean! - registeredEvents: [Event] - eventsAttended: [Event] - tagsAssignedWith( - after: String - before: String - first: PositiveInt - last: PositiveInt - organizationId: ID - ): UserTagsConnection - updatedAt: DateTime! + """ + The phone number to use to communicate with the user while they're at work. + """ + workPhoneNumber: PhoneNumber } -type Fund { - _id: ID! - campaigns: [FundraisingCampaign!] - createdAt: DateTime! - isArchived: Boolean! - isDefault: Boolean! - name: String! - creator: User - organizationId: ID! - refrenceNumber: String - taxDeductible: Boolean! - updatedAt: DateTime! +""" +Possible variants of the education grade(if applicable) of a user. +""" +enum UserEducationGrade { + grade_1 + grade_2 + grade_3 + grade_4 + grade_5 + grade_6 + grade_7 + grade_8 + grade_9 + grade_10 + grade_11 + grade_12 + graduate + kg + no_grade + pre_kg } -input FundWhereInput { - name_contains: String +""" +Possible variants of the employment status(if applicable) of a user. +""" +enum UserEmploymentStatus { + full_time + part_time + unemployed } -input UserAndOrganizationInput { - organizationId: ID! - userId: ID! +""" +Possible variants of the martial status(if applicable) of a user. +""" +enum UserMaritalStatus { + divorced + engaged + married + seperated + single + widowed } -type UserPhone { - home: PhoneNumber - mobile: PhoneNumber - work: PhoneNumber +""" +Possible variants of the sex assigned to a user at birth. +""" +enum UserNatalSex { + female + intersex + male } -type UserConnection { - aggregate: AggregateUser! - edges: [User]! +""" +""" +type UserOrganizationsWhereMemberConnection { + edges: [UserOrganizationsWhereMemberConnectionEdge] pageInfo: PageInfo! } -type UserCustomData { - _id: ID! - organizationId: ID! - userId: ID! - values: JSON! -} - -type UserData { - appUserProfile: AppUserProfile! - user: User! -} - -type UserEdge { +""" +""" +type UserOrganizationsWhereMemberConnectionEdge { cursor: String! - node: User! -} - -type UserFamily { - _id: ID! - admins: [User!]! - creator: User! - title: String - users: [User!]! -} - -input UserInput { - appLanguageCode: String - email: EmailAddress! - firstName: String! - lastName: String! - password: String! - selectedOrganization : ID! -} - -enum UserOrderByInput { - email_ASC - email_DESC - firstName_ASC - firstName_DESC - id_ASC - id_DESC - lastName_ASC - lastName_DESC - createdAt_ASC - createdAt_DESC + node: Organization } -type UserPhone { - home: PhoneNumber - mobile: PhoneNumber - work: PhoneNumber -} - -input UserPhoneInput { - home: PhoneNumber - mobile: PhoneNumber - work: PhoneNumber +""" +Possible variants of the role assigned to a user. +""" +enum UserRole { + administrator + regular } -type UserTag { - _id: ID! - childTags(input: UserTagsConnectionInput!): UserTagsConnectionResult! - name: String! - organization: Organization - parentTag: UserTag - usersAssignedTo(input: UsersConnectionInput!): UsersConnectionResult! -} +type Venue { + """ + Array of attachments. + """ + attachments: [VenueAttachment!] -type UserTagEdge { - cursor: String! - node: UserTag! -} + """ + Date time at the time the venue was created. + """ + createdAt: DateTime -type UserTagsConnection { - edges: [UserTagEdge!]! - pageInfo: ConnectionPageInfo! -} + """ + User who created the venue. + """ + creator: User -input UserTagsConnectionInput { - cursor: String - direction: PaginationDirection! - limit: PositiveInt! -} + """ + Custom information about the venue. + """ + description: String -type UserTagsConnectionResult { - data: UserTagsConnection - errors: [ConnectionError!]! -} + """ + GraphQL connection to traverse through the events the venue has been booked for. + """ + events( + after: String + before: String + first: Int + last: Int + ): VenueEventsConnection -enum UserType { - ADMIN - NON_USER - SUPERADMIN - USER -} + """ + Global identifier of the venue. + """ + id: ID! -input UserWhereInput { - email: EmailAddress - email_contains: EmailAddress - email_in: [EmailAddress!] - email_not: EmailAddress - email_not_in: [EmailAddress!] - email_starts_with: EmailAddress - event_title_contains: String - firstName: String - firstName_contains: String - firstName_in: [String!] - firstName_not: String - firstName_not_in: [String!] - firstName_starts_with: String - id: ID - id_contains: ID - id_in: [ID!] - id_not: ID - id_not_in: [ID!] - id_starts_with: ID - lastName: String - lastName_contains: String - lastName_in: [String!] - lastName_not: String - lastName_not_in: [String!] - lastName_starts_with: String -} + """ + Name of the venue. + """ + name: String -type UsersConnection { - edges: [UserEdge!]! - pageInfo: ConnectionPageInfo! -} + """ + Organization the venue belongs to. + """ + organization: Organization -input UsersConnectionInput { - cursor: String - direction: PaginationDirection! - limit: PositiveInt! -} + """ + Date time at the time the venue was last updated. + """ + updatedAt: DateTime -type UsersConnectionResult { - data: UsersConnection - errors: [ConnectionError!]! + """ + User who last updated the venue. + """ + updater: User } -enum WeekDays { - FR - MO - SA - SU - TH - TU - WE -} +type VenueAttachment { + """ + Mime type of the attachment. + """ + mimeType: String -type Venue { - _id: ID! - capacity: Int! - description: String - imageUrl: URL - name: String! - organization: Organization! + """ + URL to the attachment. + """ + url: String } -input VenueInput { - capacity: Int! - description: String - file: String - name: String! - organizationId: ID! +""" +""" +type VenueEventsConnection { + edges: [VenueEventsConnectionEdge] + pageInfo: PageInfo! } -input createUserFamilyInput { - title: String! - userIds: [ID!]! +""" +""" +type VenueEventsConnectionEdge { + cursor: String! + node: Event } - -input chatInput { - isGroup: Boolean! - organizationId: ID - userIds: [ID!]! - name: String -} \ No newline at end of file